summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-04-09 00:34:42 +0000
committerpbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-04-09 00:34:42 +0000
commit208a648d4f269c1cbaa65e16b842b2b4694b9b59 (patch)
treed6a0698472974f145754080e7fa32eab9e5971e0
parentfbda0fcf2f9e82c82bcaac138f44d4e5144f6e0d (diff)
downloadwebrtc-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.cc17
-rw-r--r--video_engine/vie_channel.h9
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,