Index: webrtc/media/engine/webrtcvideoengine2.cc |
diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc |
index 5da8e33e1e0d784ab4e5b879a1b19cb5cc2fbeb8..8d7178060a0e6dc4fdb0ed2c372a078ae7efa81f 100644 |
--- a/webrtc/media/engine/webrtcvideoengine2.cc |
+++ b/webrtc/media/engine/webrtcvideoengine2.cc |
@@ -2331,6 +2331,21 @@ WebRtcVideoChannel2::WebRtcVideoReceiveStream::CreateOrReuseVideoDecoder( |
webrtc::kVideoCodecUnknown, false); |
} |
+void configureDecoderSpecifics(webrtc::VideoReceiveStream::Decoder* decoder, |
+ const cricket::VideoCodec& recvVideoCodec) { |
+ if (recvVideoCodec.name.compare("H264")) { |
+ rtc::scoped_refptr<webrtc::DecoderSpecificSettings> decoder_specifics = |
+ new rtc::RefCountedObject<webrtc::DecoderSpecificSettings>(); |
sprang_webrtc
2016/07/27 08:37:25
No need to create this instance if props not found
|
+ cricket::CodecParameterMap::const_iterator found = |
+ recvVideoCodec.params.find("sprop-parameter-sets"); |
+ if (found != recvVideoCodec.params.end()) { |
+ decoder_specifics->h264_extra_settings->spropParameterSets = |
+ found->second; |
+ } |
+ decoder->decoder_specific = decoder_specifics; |
+ } |
+} |
+ |
void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs( |
const std::vector<VideoCodecSettings>& recv_codecs, |
std::vector<AllocatedDecoder>* old_decoders) { |
@@ -2346,6 +2361,7 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs( |
decoder.decoder = allocated_decoder.decoder; |
decoder.payload_type = recv_codecs[i].codec.id; |
decoder.payload_name = recv_codecs[i].codec.name; |
+ configureDecoderSpecifics(&decoder, recv_codecs[i].codec); |
config_.decoders.push_back(decoder); |
} |