Add optional stereo codec to SDP negotiation

- Defines stereo codec case, similar to RTX, that adds stereo codec to the SDP
negotiation. The underlying codec's payload type is similarly defined by "apt".
- If this negotiation is successful, codec name is included in sdp line via
"acn".
- Adds codec setting initializers for these specific stereo cases.
- Introduces new Stereo*Factory classes as optional convenience wrappers that
inserts stereo codec to the existing set of supported codecs on demand.

This CL is the step 5 for adding alpha channel support over the wire in webrtc.
Design Doc: https://goo.gl/sFeSUT

Bug: webrtc:7671
Change-Id: Ie12c56c8fcf7934e216135d73af33adec5248f76
Reviewed-on: https://webrtc-review.googlesource.com/22901
Commit-Queue: Niklas Enbom <niklas.enbom@webrtc.org>
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21210}
This commit is contained in:
Emircan Uysaler
2017-12-11 12:21:02 +05:30
committed by Commit Bot
parent 654320666d
commit 0a37547033
15 changed files with 298 additions and 26 deletions

View File

@ -79,6 +79,7 @@ class VideoCodecInitializerTest : public ::testing::Test {
webrtc::VideoEncoderConfig::Vp8EncoderSpecificSettings>(vp8_settings);
settings_.payload_name = kVp8PayloadName;
settings_.payload_type = kVp8PayloadType;
} else if (type == VideoCodecType::kVideoCodecStereo) {
} else {
ADD_FAILURE() << "Unexpected codec type: " << type;
}
@ -93,7 +94,8 @@ class VideoCodecInitializerTest : public ::testing::Test {
&bitrate_allocator_out_)) {
return false;
}
if (codec_out_.codecType == VideoCodecType::kVideoCodecStereo)
return true;
// Make sure temporal layers instances have been created.
if (codec_out_.codecType == VideoCodecType::kVideoCodecVP8) {
if (!codec_out_.VP8()->tl_factory)
@ -215,4 +217,10 @@ TEST_F(VideoCodecInitializerTest, HighFpsSimlucastVp8Screenshare) {
bitrate_allocation.GetBitrate(1, 1));
}
TEST_F(VideoCodecInitializerTest, SingleStreamStereoCodec) {
SetUpFor(VideoCodecType::kVideoCodecStereo, 1, 1, true);
streams_.push_back(DefaultStream());
EXPECT_TRUE(InitializeCodec());
}
} // namespace webrtc