diff options
author | pbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-04-09 00:34:42 +0000 |
---|---|---|
committer | pbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-04-09 00:34:42 +0000 |
commit | 208a648d4f269c1cbaa65e16b842b2b4694b9b59 (patch) | |
tree | d6a0698472974f145754080e7fa32eab9e5971e0 | |
parent | fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0d (diff) | |
download | webrtc-208a648d4f269c1cbaa65e16b842b2b4694b9b59.tar.gz |
Always set render delay in ViEChannel::RegisterExternalDecoder.
BUG=1523
Review URL: https://webrtc-codereview.appspot.com/1219007
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@3790 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | video_engine/vie_channel.cc | 17 | ||||
-rw-r--r-- | video_engine/vie_channel.h | 9 |
2 files changed, 14 insertions, 12 deletions
diff --git a/video_engine/vie_channel.cc b/video_engine/vie_channel.cc index b3e44523..b2d80d44 100644 --- a/video_engine/vie_channel.cc +++ b/video_engine/vie_channel.cc @@ -483,19 +483,20 @@ WebRtc_Word32 ViEChannel::RegisterCodecObserver(ViEDecoderObserver* observer) { WebRtc_Word32 ViEChannel::RegisterExternalDecoder(const WebRtc_UWord8 pl_type, VideoDecoder* decoder, - bool decoder_render, + bool buffered_rendering, WebRtc_Word32 render_delay) { WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_), "%s", __FUNCTION__); - WebRtc_Word32 result = 0; - result = vcm_.RegisterExternalDecoder(decoder, pl_type, decoder_render); - if (decoder_render && result == 0) { - // Let VCM know how long before the actual render time the decoder needs - // to get a frame for decoding. - result = vcm_.SetRenderDelay(render_delay); + WebRtc_Word32 result; + result = vcm_.RegisterExternalDecoder(decoder, pl_type, buffered_rendering); + if (result != VCM_OK) { + WEBRTC_TRACE(kTraceError, kTraceVideo, ViEId(engine_id_, channel_id_), + "%s: Could not register external decoder with VCM.", + __FUNCTION__); + return result; } - return result; + return vcm_.SetRenderDelay(render_delay); } WebRtc_Word32 ViEChannel::DeRegisterExternalDecoder( diff --git a/video_engine/vie_channel.h b/video_engine/vie_channel.h index 222a2ff0..6e04a0ed 100644 --- a/video_engine/vie_channel.h +++ b/video_engine/vie_channel.h @@ -83,12 +83,13 @@ class ViEChannel WebRtc_Word32 SetReceiveCodec(const VideoCodec& video_codec); WebRtc_Word32 GetReceiveCodec(VideoCodec* video_codec); WebRtc_Word32 RegisterCodecObserver(ViEDecoderObserver* observer); - // Registers an external decoder. |decoder_render| is set to true if the - // decoder will do the rendering. If |decoder_render| is set,|render_delay| - // indicates the time needed to decode and render a frame. + // Registers an external decoder. |buffered_rendering| means that the decoder + // will render frames after decoding according to the render timestamp + // provided by the video coding module. |render_delay| indicates the time + // needed to decode and render a frame. WebRtc_Word32 RegisterExternalDecoder(const WebRtc_UWord8 pl_type, VideoDecoder* decoder, - bool decoder_render, + bool buffered_rendering, WebRtc_Word32 render_delay); WebRtc_Word32 DeRegisterExternalDecoder(const WebRtc_UWord8 pl_type); WebRtc_Word32 ReceiveCodecStatistics(WebRtc_UWord32* num_key_frames, |