From 29f34b872749fbc348648767c7a3524c8273922e Mon Sep 17 00:00:00 2001 From: "marpan@webrtc.org" Date: Thu, 28 Mar 2013 18:57:46 +0000 Subject: [PATCH] Fix for issue: https://code.google.com/p/webrtc/issues/detail?id=1549 Review URL: https://webrtc-codereview.appspot.com/1270004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3741 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../video_coding/main/source/video_coding_impl.cc | 12 +++++++++--- .../video_coding/main/source/video_coding_impl.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/webrtc/modules/video_coding/main/source/video_coding_impl.cc b/webrtc/modules/video_coding/main/source/video_coding_impl.cc index b1e46a8d77..b86780494f 100644 --- a/webrtc/modules/video_coding/main/source/video_coding_impl.cc +++ b/webrtc/modules/video_coding/main/source/video_coding_impl.cc @@ -84,7 +84,8 @@ VideoCodingModuleImpl::VideoCodingModuleImpl(const WebRtc_Word32 id, _retransmissionTimer(10, clock_), _keyRequestTimer(500, clock_), event_factory_(event_factory), - owns_event_factory_(owns_event_factory) { + owns_event_factory_(owns_event_factory), + frame_dropper_enabled_(true) { assert(clock_); #ifdef DEBUG_DECODER_BIT_STREAM _bitStreamBeforeDecoder = fopen("decoderBitStream.bit", "wb"); @@ -335,10 +336,14 @@ VideoCodingModuleImpl::RegisterSendCodec(const VideoCodec* sendCodec, _sendCodecType = sendCodec->codecType; int numLayers = (_sendCodecType != kVideoCodecVP8) ? 1 : sendCodec->codecSpecific.VP8.numberOfTemporalLayers; - // Disable frame dropper if screensharing if we have layers. + // If we have screensharing and we have layers, we disable frame dropper. bool disable_frame_dropper = numLayers > 1 && sendCodec->mode == kScreensharing; - _mediaOpt.EnableFrameDropper(!disable_frame_dropper); + if (disable_frame_dropper) { + _mediaOpt.EnableFrameDropper(false); + } else if (frame_dropper_enabled_) { + _mediaOpt.EnableFrameDropper(true); + } _nextFrameTypes.clear(); _nextFrameTypes.resize(VCM_MAX(sendCodec->numberOfSimulcastStreams, 1), kVideoFrameDelta); @@ -742,6 +747,7 @@ WebRtc_Word32 VideoCodingModuleImpl::EnableFrameDropper(bool enable) { CriticalSectionScoped cs(_sendCritSect); + frame_dropper_enabled_ = enable; _mediaOpt.EnableFrameDropper(enable); return VCM_OK; } diff --git a/webrtc/modules/video_coding/main/source/video_coding_impl.h b/webrtc/modules/video_coding/main/source/video_coding_impl.h index 48cc452935..421d3db12c 100644 --- a/webrtc/modules/video_coding/main/source/video_coding_impl.h +++ b/webrtc/modules/video_coding/main/source/video_coding_impl.h @@ -319,6 +319,7 @@ private: VCMProcessTimer _keyRequestTimer; EventFactory* event_factory_; bool owns_event_factory_; + bool frame_dropper_enabled_; }; } // namespace webrtc #endif // WEBRTC_MODULES_VIDEO_CODING_VIDEO_CODING_IMPL_H_