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@3790 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -483,19 +483,20 @@ WebRtc_Word32 ViEChannel::RegisterCodecObserver(ViEDecoderObserver* observer) {
|
|||||||
|
|
||||||
WebRtc_Word32 ViEChannel::RegisterExternalDecoder(const WebRtc_UWord8 pl_type,
|
WebRtc_Word32 ViEChannel::RegisterExternalDecoder(const WebRtc_UWord8 pl_type,
|
||||||
VideoDecoder* decoder,
|
VideoDecoder* decoder,
|
||||||
bool decoder_render,
|
bool buffered_rendering,
|
||||||
WebRtc_Word32 render_delay) {
|
WebRtc_Word32 render_delay) {
|
||||||
WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_),
|
WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_),
|
||||||
"%s", __FUNCTION__);
|
"%s", __FUNCTION__);
|
||||||
|
|
||||||
WebRtc_Word32 result = 0;
|
WebRtc_Word32 result;
|
||||||
result = vcm_.RegisterExternalDecoder(decoder, pl_type, decoder_render);
|
result = vcm_.RegisterExternalDecoder(decoder, pl_type, buffered_rendering);
|
||||||
if (decoder_render && result == 0) {
|
if (result != VCM_OK) {
|
||||||
// Let VCM know how long before the actual render time the decoder needs
|
WEBRTC_TRACE(kTraceError, kTraceVideo, ViEId(engine_id_, channel_id_),
|
||||||
// to get a frame for decoding.
|
"%s: Could not register external decoder with VCM.",
|
||||||
result = vcm_.SetRenderDelay(render_delay);
|
__FUNCTION__);
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
return vcm_.SetRenderDelay(render_delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRtc_Word32 ViEChannel::DeRegisterExternalDecoder(
|
WebRtc_Word32 ViEChannel::DeRegisterExternalDecoder(
|
||||||
|
@ -83,12 +83,13 @@ class ViEChannel
|
|||||||
WebRtc_Word32 SetReceiveCodec(const VideoCodec& video_codec);
|
WebRtc_Word32 SetReceiveCodec(const VideoCodec& video_codec);
|
||||||
WebRtc_Word32 GetReceiveCodec(VideoCodec* video_codec);
|
WebRtc_Word32 GetReceiveCodec(VideoCodec* video_codec);
|
||||||
WebRtc_Word32 RegisterCodecObserver(ViEDecoderObserver* observer);
|
WebRtc_Word32 RegisterCodecObserver(ViEDecoderObserver* observer);
|
||||||
// Registers an external decoder. |decoder_render| is set to true if the
|
// Registers an external decoder. |buffered_rendering| means that the decoder
|
||||||
// decoder will do the rendering. If |decoder_render| is set,|render_delay|
|
// will render frames after decoding according to the render timestamp
|
||||||
// indicates the time needed to decode and render a frame.
|
// 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,
|
WebRtc_Word32 RegisterExternalDecoder(const WebRtc_UWord8 pl_type,
|
||||||
VideoDecoder* decoder,
|
VideoDecoder* decoder,
|
||||||
bool decoder_render,
|
bool buffered_rendering,
|
||||||
WebRtc_Word32 render_delay);
|
WebRtc_Word32 render_delay);
|
||||||
WebRtc_Word32 DeRegisterExternalDecoder(const WebRtc_UWord8 pl_type);
|
WebRtc_Word32 DeRegisterExternalDecoder(const WebRtc_UWord8 pl_type);
|
||||||
WebRtc_Word32 ReceiveCodecStatistics(WebRtc_UWord32* num_key_frames,
|
WebRtc_Word32 ReceiveCodecStatistics(WebRtc_UWord32* num_key_frames,
|
||||||
|
Reference in New Issue
Block a user