vie_auto_test - moved custom call specific functions to be static, added video protect method to custom call
- moved all of the custom call specific functions out of vie_autotest.h and into vie_autotest_custom_call.cc - added option to modify a running call's video protection method Review URL: http://webrtc-codereview.appspot.com/234001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@759 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
76aea651ff
commit
929789b528
@ -55,45 +55,6 @@ public:
|
||||
// custom call and helper functions
|
||||
int ViECustomCall();
|
||||
|
||||
// general settings functions
|
||||
bool GetVideoDevice(webrtc::ViEBase* ptrViEBase,
|
||||
webrtc::ViECapture* ptrViECapture,
|
||||
char* captureDeviceName, char* captureDeviceUniqueId);
|
||||
bool GetIPAddress(char* IP);
|
||||
#ifndef WEBRTC_ANDROID
|
||||
bool ValidateIP(std::string iStr);
|
||||
#endif
|
||||
void PrintCallInformation(char* IP, char* videoCaptureDeviceName,
|
||||
char* videoCaptureUniqueId,
|
||||
webrtc::VideoCodec videoCodec, int videoTxPort,
|
||||
int videoRxPort, char* audioCaptureDeviceName,
|
||||
char* audioPlaybackDeviceName,
|
||||
webrtc::CodecInst audioCodec, int audioTxPort,
|
||||
int audioRxPort);
|
||||
|
||||
// video settings functions
|
||||
bool GetVideoPorts(int* txPort, int* rxPort);
|
||||
bool GetVideoCodecType(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoCodecResolution(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoCodecSize(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoCodecBitrate(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
|
||||
// audio settings functions
|
||||
bool GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
webrtc::VoEHardware* ptrVEHardware,
|
||||
char* recordingDeviceName, int& recordingDeviceIndex,
|
||||
char* playbackDeviceName, int& playbackDeviceIndex);
|
||||
bool GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
webrtc::VoEHardware* ptrVEHardware,
|
||||
int& recordingDeviceIndex, int& playbackDeviceIndex);
|
||||
bool GetAudioPorts(int* txPort, int* rxPort);
|
||||
bool GetAudioCodec(webrtc::VoECodec* ptrVeCodec,
|
||||
webrtc::CodecInst& audioCodec);
|
||||
|
||||
// vie_autotest_base.cc
|
||||
int ViEBaseStandardTest();
|
||||
int ViEBaseExtendedTest();
|
||||
|
||||
@ -47,18 +47,6 @@
|
||||
#undef RGB
|
||||
#define RGB(r,g,b) r|g<<8|b<<16
|
||||
|
||||
// Default values for custom call
|
||||
#define DEFAULT_SEND_IP "127.0.0.1"
|
||||
#define DEFAULT_VIDEO_PORT 11111
|
||||
#define DEFAULT_VIDEO_CODEC "vp8"
|
||||
#define DEFAULT_VIDEO_CODEC_WIDTH 352
|
||||
#define DEFAULT_VIDEO_CODEC_HEIGHT 288
|
||||
#define DEFAULT_VIDEO_CODEC_BITRATE 100
|
||||
#define DEFAULT_AUDIO_PORT 11113
|
||||
#define DEFAULT_AUDIO_CODEC "isac"
|
||||
#define DEFAULT_INCOMING_FILE_NAME "IncomingFile.avi"
|
||||
#define DEFAULT_OUTGOING_FILE_NAME "OutgoingFile.avi"
|
||||
|
||||
enum {
|
||||
KAutoTestSleepTimeMs = 5000
|
||||
};
|
||||
|
||||
@ -20,6 +20,16 @@
|
||||
|
||||
#define VCM_RED_PAYLOAD_TYPE 96
|
||||
#define VCM_ULPFEC_PAYLOAD_TYPE 97
|
||||
#define DEFAULT_SEND_IP "127.0.0.1"
|
||||
#define DEFAULT_VIDEO_PORT 11111
|
||||
#define DEFAULT_VIDEO_CODEC "vp8"
|
||||
#define DEFAULT_VIDEO_CODEC_WIDTH 352
|
||||
#define DEFAULT_VIDEO_CODEC_HEIGHT 288
|
||||
#define DEFAULT_VIDEO_CODEC_BITRATE 100
|
||||
#define DEFAULT_AUDIO_PORT 11113
|
||||
#define DEFAULT_AUDIO_CODEC "ISAC"
|
||||
#define DEFAULT_INCOMING_FILE_NAME "IncomingFile.avi"
|
||||
#define DEFAULT_OUTGOING_FILE_NAME "OutgoingFile.avi"
|
||||
|
||||
class ViEAutotestFileObserver: public webrtc::ViEFileObserver
|
||||
{
|
||||
@ -33,6 +43,50 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// general settings functions
|
||||
bool GetVideoDevice(webrtc::ViEBase* ptrViEBase,
|
||||
webrtc::ViECapture* ptrViECapture,
|
||||
char* captureDeviceName, char* captureDeviceUniqueId);
|
||||
bool GetIPAddress(char* IP);
|
||||
#ifndef WEBRTC_ANDROID
|
||||
bool ValidateIP(std::string iStr);
|
||||
#endif
|
||||
void PrintCallInformation(char* IP, char* videoCaptureDeviceName,
|
||||
char* videoCaptureUniqueId,
|
||||
webrtc::VideoCodec videoCodec, int videoTxPort,
|
||||
int videoRxPort, char* audioCaptureDeviceName,
|
||||
char* audioPlaybackDeviceName,
|
||||
webrtc::CodecInst audioCodec, int audioTxPort,
|
||||
int audioRxPort);
|
||||
|
||||
// video settings functions
|
||||
bool GetVideoPorts(int* txPort, int* rxPort);
|
||||
bool GetVideoCodecType(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoCodecResolution(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoCodecSize(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoCodecBitrate(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec);
|
||||
bool GetVideoProtection(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec,
|
||||
webrtc::ViERTP_RTCP* ptrViERtpRtcp,
|
||||
int videoChannel);
|
||||
|
||||
// audio settings functions
|
||||
bool GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
webrtc::VoEHardware* ptrVEHardware,
|
||||
char* recordingDeviceName, int& recordingDeviceIndex,
|
||||
char* playbackDeviceName, int& playbackDeviceIndex);
|
||||
bool GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
webrtc::VoEHardware* ptrVEHardware,
|
||||
int& recordingDeviceIndex, int& playbackDeviceIndex);
|
||||
bool GetAudioPorts(int* txPort, int* rxPort);
|
||||
bool GetAudioCodec(webrtc::VoECodec* ptrVeCodec,
|
||||
webrtc::CodecInst& audioCodec);
|
||||
|
||||
|
||||
int ViEAutoTest::ViECustomCall()
|
||||
{
|
||||
ViETest::Log(" ");
|
||||
@ -517,7 +571,8 @@ int ViEAutoTest::ViECustomCall()
|
||||
std::cout << " 7. Play File on Video Channel"
|
||||
<< "(Assumes you recorded incoming & outgoing call)"
|
||||
<< std::endl;
|
||||
std::cout << " 8. Print Call information" << std::endl;
|
||||
std::cout << " 8. Change Video Protection Method" << std::endl;
|
||||
std::cout << " 9. Print Call information" << std::endl;
|
||||
std::cout << "What do you want to do? ";
|
||||
std::cout << "Press enter for default "
|
||||
<< "(Finished modifying custom call): ";
|
||||
@ -560,7 +615,7 @@ int ViEAutoTest::ViECustomCall()
|
||||
videoTxPort, videoRxPort,
|
||||
audioCaptureDeviceName,
|
||||
audioPlaybackDeviceName, audioCodec,
|
||||
audioTxPort, audioRxPort);
|
||||
audioTxPort, audioRxPort);
|
||||
error = ptrViECodec->SetSendCodec(videoChannel, videoCodec);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
@ -580,7 +635,7 @@ int ViEAutoTest::ViECustomCall()
|
||||
videoTxPort, videoRxPort,
|
||||
audioCaptureDeviceName,
|
||||
audioPlaybackDeviceName, audioCodec,
|
||||
audioTxPort, audioRxPort);
|
||||
audioTxPort, audioRxPort);
|
||||
error = ptrViECodec->SetSendCodec(videoChannel, videoCodec);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
@ -706,10 +761,6 @@ int ViEAutoTest::ViECustomCall()
|
||||
"ERROR:%d %s at line %d",
|
||||
ptrViEBase->LastError(),
|
||||
__FUNCTION__, __LINE__);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR:%d %s at line %d",
|
||||
ptrViEBase->LastError(),
|
||||
__FUNCTION__, __LINE__);
|
||||
std::cout << std::endl;
|
||||
std::cout << "Start sending the file that is played in a loop "
|
||||
<< std::endl;
|
||||
@ -740,6 +791,20 @@ int ViEAutoTest::ViECustomCall()
|
||||
modify_call = true;
|
||||
break;
|
||||
case 8:
|
||||
// Change the Video Protection
|
||||
GetVideoProtection(ptrViECodec, videoCodec, ptrViERtpRtcp,
|
||||
videoChannel);
|
||||
PrintCallInformation(ipAddress, deviceName,
|
||||
uniqueId, videoCodec,
|
||||
videoTxPort, videoRxPort,
|
||||
audioCaptureDeviceName,
|
||||
audioPlaybackDeviceName,
|
||||
audioCodec, audioTxPort,
|
||||
audioRxPort);
|
||||
|
||||
modify_call = true;
|
||||
break;
|
||||
case 9:
|
||||
// Print Call information
|
||||
PrintCallInformation(ipAddress, deviceName,
|
||||
uniqueId, videoCodec,
|
||||
@ -883,10 +948,10 @@ int ViEAutoTest::ViECustomCall()
|
||||
return numberOfErrors;
|
||||
}
|
||||
|
||||
bool ViEAutoTest::GetVideoDevice(webrtc::ViEBase* ptrViEBase,
|
||||
webrtc::ViECapture* ptrViECapture,
|
||||
char* captureDeviceName,
|
||||
char* captureDeviceUniqueId)
|
||||
bool GetVideoDevice(webrtc::ViEBase* ptrViEBase,
|
||||
webrtc::ViECapture* ptrViECapture,
|
||||
char* captureDeviceName,
|
||||
char* captureDeviceUniqueId)
|
||||
{
|
||||
int error = 0;
|
||||
int numberOfErrors = 0;
|
||||
@ -975,12 +1040,12 @@ bool ViEAutoTest::GetVideoDevice(webrtc::ViEBase* ptrViEBase,
|
||||
}
|
||||
}
|
||||
|
||||
bool ViEAutoTest::GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
webrtc::VoEHardware* ptrVEHardware,
|
||||
char* recordingDeviceName,
|
||||
int& recordingDeviceIndex,
|
||||
char* playbackDeviceName,
|
||||
int& playbackDeviceIndex)
|
||||
bool GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
webrtc::VoEHardware* ptrVEHardware,
|
||||
char* recordingDeviceName,
|
||||
int& recordingDeviceIndex,
|
||||
char* playbackDeviceName,
|
||||
int& playbackDeviceIndex)
|
||||
{
|
||||
int error = 0;
|
||||
int numberOfErrors = 0;
|
||||
@ -1118,7 +1183,7 @@ bool ViEAutoTest::GetAudioDevices(webrtc::VoEBase* ptrVEBase,
|
||||
}
|
||||
|
||||
// general settings functions
|
||||
bool ViEAutoTest::GetIPAddress(char* iIP)
|
||||
bool GetIPAddress(char* iIP)
|
||||
{
|
||||
char oIP[16] = DEFAULT_SEND_IP;
|
||||
std::string str;
|
||||
@ -1151,7 +1216,7 @@ bool ViEAutoTest::GetIPAddress(char* iIP)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ViEAutoTest::ValidateIP(std::string iStr)
|
||||
bool ValidateIP(std::string iStr)
|
||||
{
|
||||
if(0 == iStr.compare(""))
|
||||
{
|
||||
@ -1161,7 +1226,7 @@ bool ViEAutoTest::ValidateIP(std::string iStr)
|
||||
}
|
||||
|
||||
// video settings functions
|
||||
bool ViEAutoTest::GetVideoPorts(int* txPort, int* rxPort)
|
||||
bool GetVideoPorts(int* txPort, int* rxPort)
|
||||
{
|
||||
std::string str;
|
||||
int port = 0;
|
||||
@ -1230,7 +1295,7 @@ bool ViEAutoTest::GetVideoPorts(int* txPort, int* rxPort)
|
||||
}
|
||||
|
||||
// audio settings functions
|
||||
bool ViEAutoTest::GetAudioPorts(int* txPort, int* rxPort)
|
||||
bool GetAudioPorts(int* txPort, int* rxPort)
|
||||
{
|
||||
int port = 0;
|
||||
std::string str;
|
||||
@ -1298,7 +1363,7 @@ bool ViEAutoTest::GetAudioPorts(int* txPort, int* rxPort)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ViEAutoTest::GetAudioCodec(webrtc::VoECodec* ptrVeCodec, webrtc::CodecInst& audioCodec)
|
||||
bool GetAudioCodec(webrtc::VoECodec* ptrVeCodec, webrtc::CodecInst& audioCodec)
|
||||
{
|
||||
int error = 0;
|
||||
int numberOfErrors = 0;
|
||||
@ -1363,14 +1428,14 @@ bool ViEAutoTest::GetAudioCodec(webrtc::VoECodec* ptrVeCodec, webrtc::CodecInst&
|
||||
return false;
|
||||
}
|
||||
|
||||
void ViEAutoTest::PrintCallInformation(char* IP, char* videoCaptureDeviceName,
|
||||
char* videoCaptureUniqueId,
|
||||
webrtc::VideoCodec videoCodec,
|
||||
int videoTxPort, int videoRxPort,
|
||||
char* audioCaptureDeviceName,
|
||||
char* audioPlaybackDeviceName,
|
||||
webrtc::CodecInst audioCodec,
|
||||
int audioTxPort, int audioRxPort)
|
||||
void PrintCallInformation(char* IP, char* videoCaptureDeviceName,
|
||||
char* videoCaptureUniqueId,
|
||||
webrtc::VideoCodec videoCodec,
|
||||
int videoTxPort, int videoRxPort,
|
||||
char* audioCaptureDeviceName,
|
||||
char* audioPlaybackDeviceName,
|
||||
webrtc::CodecInst audioCodec,
|
||||
int audioTxPort, int audioRxPort)
|
||||
{
|
||||
std::string str;
|
||||
|
||||
@ -1403,8 +1468,8 @@ void ViEAutoTest::PrintCallInformation(char* IP, char* videoCaptureDeviceName,
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
bool ViEAutoTest::GetVideoCodecType(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
bool GetVideoCodecType(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
{
|
||||
int error = 0;
|
||||
int numberOfErrors = 0;
|
||||
@ -1466,17 +1531,13 @@ bool ViEAutoTest::GetVideoCodecType(webrtc::ViECodec* ptrViECodec,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ViEAutoTest::GetVideoCodecResolution(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
bool GetVideoCodecResolution(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
{
|
||||
std::string str;
|
||||
int sizeOption = 2;
|
||||
|
||||
if (videoCodec.codecType == webrtc::kVideoCodecI420) {
|
||||
std::cout << "Codec is I420, size is 176 x 144" << std::endl;
|
||||
sizeOption = 1;
|
||||
}
|
||||
else {
|
||||
if (videoCodec.codecType == webrtc::kVideoCodecVP8) {
|
||||
std::cout << std::endl;
|
||||
std::cout << "Available Common Resolutions : " << std::endl;
|
||||
std::cout << " 1. SQCIF (128X96) " << std::endl;
|
||||
@ -1493,58 +1554,60 @@ bool ViEAutoTest::GetVideoCodecResolution(webrtc::ViECodec* ptrViECodec,
|
||||
<< "(default keeps current size): ";
|
||||
std::getline(std::cin, str);
|
||||
sizeOption = atoi(str.c_str());
|
||||
}
|
||||
|
||||
switch (sizeOption) {
|
||||
case 1:
|
||||
videoCodec.width = 128;
|
||||
videoCodec.height = 96;
|
||||
break;
|
||||
case 2:
|
||||
videoCodec.width = 160;
|
||||
videoCodec.height = 120;
|
||||
break;
|
||||
case 3:
|
||||
videoCodec.width = 176;
|
||||
videoCodec.height = 144;
|
||||
break;
|
||||
case 4:
|
||||
videoCodec.width = 352;
|
||||
videoCodec.height = 288;
|
||||
break;
|
||||
case 5:
|
||||
videoCodec.width = 640;
|
||||
videoCodec.height = 480;
|
||||
break;
|
||||
case 6:
|
||||
videoCodec.width = 800;
|
||||
videoCodec.height = 480;
|
||||
break;
|
||||
case 7:
|
||||
videoCodec.width = 704;
|
||||
videoCodec.height = 576;
|
||||
break;
|
||||
case 8:
|
||||
videoCodec.width = 800;
|
||||
videoCodec.height = 600;
|
||||
break;
|
||||
case 9:
|
||||
videoCodec.width = 1280;
|
||||
videoCodec.height = 720;
|
||||
break;
|
||||
case 10:
|
||||
videoCodec.width = 1024;
|
||||
videoCodec.height = 768;
|
||||
break;
|
||||
switch (sizeOption) {
|
||||
case 1:
|
||||
videoCodec.width = 128;
|
||||
videoCodec.height = 96;
|
||||
break;
|
||||
case 2:
|
||||
videoCodec.width = 160;
|
||||
videoCodec.height = 120;
|
||||
break;
|
||||
case 3:
|
||||
videoCodec.width = 176;
|
||||
videoCodec.height = 144;
|
||||
break;
|
||||
case 4:
|
||||
videoCodec.width = 352;
|
||||
videoCodec.height = 288;
|
||||
break;
|
||||
case 5:
|
||||
videoCodec.width = 640;
|
||||
videoCodec.height = 480;
|
||||
break;
|
||||
case 6:
|
||||
videoCodec.width = 800;
|
||||
videoCodec.height = 480;
|
||||
break;
|
||||
case 7:
|
||||
videoCodec.width = 704;
|
||||
videoCodec.height = 576;
|
||||
break;
|
||||
case 8:
|
||||
videoCodec.width = 800;
|
||||
videoCodec.height = 600;
|
||||
break;
|
||||
case 9:
|
||||
videoCodec.width = 1280;
|
||||
videoCodec.height = 720;
|
||||
break;
|
||||
case 10:
|
||||
videoCodec.width = 1024;
|
||||
videoCodec.height = 768;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
std::cout << "Can Only change codec size if it's VP8" << std::endl;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool ViEAutoTest::GetVideoCodecSize(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
bool GetVideoCodecSize(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
{
|
||||
if (videoCodec.codecType != webrtc::kVideoCodecI420) {
|
||||
if (videoCodec.codecType == webrtc::kVideoCodecVP8) {
|
||||
std::string str;
|
||||
videoCodec.width = DEFAULT_VIDEO_CODEC_WIDTH;
|
||||
videoCodec.height = DEFAULT_VIDEO_CODEC_HEIGHT;
|
||||
@ -1563,13 +1626,13 @@ bool ViEAutoTest::GetVideoCodecSize(webrtc::ViECodec* ptrViECodec,
|
||||
videoCodec.height=sizeSelection;
|
||||
}
|
||||
}
|
||||
else if (videoCodec.codecType == webrtc::kVideoCodecI420) {
|
||||
std::cout << "Codec is I420, size is 176 x 144" << std::endl;
|
||||
else {
|
||||
std::cout << "Can Only change codec size if it's VP8" << std::endl;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ViEAutoTest::GetVideoCodecBitrate(webrtc::ViECodec* ptrViECodec,
|
||||
bool GetVideoCodecBitrate(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec)
|
||||
{
|
||||
std::string str;
|
||||
@ -1584,3 +1647,89 @@ bool ViEAutoTest::GetVideoCodecBitrate(webrtc::ViECodec* ptrViECodec,
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GetVideoProtection(webrtc::ViECodec* ptrViECodec,
|
||||
webrtc::VideoCodec& videoCodec,
|
||||
webrtc::ViERTP_RTCP* ptrViERtpRtcp,
|
||||
int videoChannel)
|
||||
{
|
||||
int error = 0;
|
||||
int numberOfErrors = 0;
|
||||
int protectionMethod = 0;
|
||||
|
||||
std::cout << "Available Video Protection Method" << std::endl;
|
||||
std::cout << " 0. None" << std::endl;
|
||||
std::cout << " 1. FEC" << std::endl;
|
||||
std::cout << " 2. NACK" << std::endl;
|
||||
std::cout << " 3. NACK+FEC" << std::endl;
|
||||
std::cout << "Enter Video Protection Method: ";
|
||||
|
||||
std::string method;
|
||||
std::getline(std::cin, method);
|
||||
protectionMethod = atoi(method.c_str());
|
||||
// Set video protection for FEC and/or NACK
|
||||
switch (protectionMethod) {
|
||||
case 0: // None
|
||||
error = ptrViERtpRtcp->SetFECStatus(videoChannel, false,
|
||||
VCM_RED_PAYLOAD_TYPE,
|
||||
VCM_ULPFEC_PAYLOAD_TYPE);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
error = ptrViERtpRtcp->SetNACKStatus(videoChannel, false);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
break;
|
||||
case 1: // FEC only
|
||||
error = ptrViERtpRtcp->SetFECStatus(videoChannel, true,
|
||||
VCM_RED_PAYLOAD_TYPE,
|
||||
VCM_ULPFEC_PAYLOAD_TYPE);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
error = ptrViERtpRtcp->SetNACKStatus(videoChannel, false);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
break;
|
||||
case 2: // NACK only
|
||||
error = ptrViERtpRtcp->SetNACKStatus(videoChannel, true);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
break;
|
||||
case 3: // Hybrid NACK and FEC
|
||||
error = ptrViERtpRtcp->SetHybridNACKFECStatus(videoChannel, true,
|
||||
VCM_RED_PAYLOAD_TYPE,
|
||||
VCM_ULPFEC_PAYLOAD_TYPE);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
break;
|
||||
}
|
||||
// Set receive codecs for FEC and hybrid NACK/FEC
|
||||
if (protectionMethod == 1 || protectionMethod == 3) {
|
||||
// RED
|
||||
error = ptrViECodec->GetCodec(ptrViECodec->NumberOfCodecs() - 2,
|
||||
videoCodec);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
error = ptrViECodec->SetReceiveCodec(videoChannel, videoCodec);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
// ULPFEC
|
||||
error = ptrViECodec->GetCodec(ptrViECodec->NumberOfCodecs() - 1,
|
||||
videoCodec);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
error = ptrViECodec->SetReceiveCodec(videoChannel, videoCodec);
|
||||
numberOfErrors += ViETest::TestError(error == 0,
|
||||
"ERROR: %s at line %d",
|
||||
__FUNCTION__, __LINE__);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user