Permit arbitrary payload names for kVideoCodecGeneric.

BUG=1575

Review URL: https://webrtc-codereview.appspot.com/1282005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3768 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
pbos@webrtc.org
2013-04-05 13:27:38 +00:00
parent b9e402d99f
commit b5bf54c4e7
6 changed files with 60 additions and 12 deletions

View File

@ -10,6 +10,7 @@
#include "webrtc/common_types.h"
#include "webrtc/engine_configurations.h"
#include "webrtc/modules/video_coding/codecs/i420/main/interface/i420.h"
#include "webrtc/system_wrappers/interface/scoped_ptr.h"
#include "webrtc/test/channel_transport/include/channel_transport.h"
#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
@ -497,12 +498,43 @@ void ViEAutoTest::ViECodecAPITest() {
break;
}
}
memset(&video_codec, 0, sizeof(video_codec));
EXPECT_EQ(0, codec->GetSendCodec(video_channel, video_codec));
EXPECT_EQ(webrtc::kVideoCodecI420, video_codec.codecType);
// Register a generic codec
memset(&video_codec, 0, sizeof(video_codec));
video_codec.codecType = webrtc::kVideoCodecGeneric;
strcpy(video_codec.plName, "generic-codec");
uint8_t payload_type = 127;
video_codec.plType = payload_type;
video_codec.minBitrate = 100;
video_codec.startBitrate = 500;
video_codec.maxBitrate = 10000;
video_codec.width = 1920;
video_codec.height = 1080;
video_codec.maxFramerate = 30;
video_codec.qpMax = 50;
webrtc::ViEExternalCodec* external_codec =
webrtc::ViEExternalCodec::GetInterface(video_engine);
EXPECT_TRUE(external_codec != NULL);
// Any encoder will do.
webrtc::I420Encoder encoder;
EXPECT_EQ(0, external_codec->RegisterExternalSendCodec(video_channel,
payload_type, &encoder,
false));
EXPECT_EQ(0, codec->SetSendCodec(video_channel, video_codec));
memset(&video_codec, 0, sizeof(video_codec));
EXPECT_EQ(0, codec->GetSendCodec(video_channel, video_codec));
EXPECT_EQ(webrtc::kVideoCodecGeneric, video_codec.codecType);
EXPECT_EQ(0, base->DeleteChannel(video_channel));
EXPECT_EQ(0, external_codec->Release());
EXPECT_EQ(0, codec->Release());
EXPECT_EQ(0, base->Release());
EXPECT_TRUE(webrtc::VideoEngine::Delete(video_engine));

View File

@ -342,6 +342,7 @@ int VideoEngineSampleCode(void* window1, void* window2)
getchar();
codecIdx = codecIdx - 1; // Compensate for idx start at 1.
#endif
// VP8 over generic transport gets this special one.
if (codecIdx == ptrViECodec->NumberOfCodecs()) {
for (codecIdx = 0; codecIdx < ptrViECodec->NumberOfCodecs(); ++codecIdx) {
error = ptrViECodec->GetCodec(codecIdx, videoCodec);
@ -351,7 +352,9 @@ int VideoEngineSampleCode(void* window1, void* window2)
}
assert(videoCodec.codecType == webrtc::kVideoCodecVP8);
videoCodec.codecType = webrtc::kVideoCodecGeneric;
strcpy(videoCodec.plName, "GENERIC");
// Any plName should work with generic
strcpy(videoCodec.plName, "VP8-GENERIC");
uint8_t pl_type = 127;
videoCodec.plType = pl_type;
webrtc::ViEExternalCodec* external_codec = webrtc::ViEExternalCodec