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
This commit is contained in:
@@ -84,7 +84,8 @@ VideoCodingModuleImpl::VideoCodingModuleImpl(const WebRtc_Word32 id,
|
|||||||
_retransmissionTimer(10, clock_),
|
_retransmissionTimer(10, clock_),
|
||||||
_keyRequestTimer(500, clock_),
|
_keyRequestTimer(500, clock_),
|
||||||
event_factory_(event_factory),
|
event_factory_(event_factory),
|
||||||
owns_event_factory_(owns_event_factory) {
|
owns_event_factory_(owns_event_factory),
|
||||||
|
frame_dropper_enabled_(true) {
|
||||||
assert(clock_);
|
assert(clock_);
|
||||||
#ifdef DEBUG_DECODER_BIT_STREAM
|
#ifdef DEBUG_DECODER_BIT_STREAM
|
||||||
_bitStreamBeforeDecoder = fopen("decoderBitStream.bit", "wb");
|
_bitStreamBeforeDecoder = fopen("decoderBitStream.bit", "wb");
|
||||||
@@ -335,10 +336,14 @@ VideoCodingModuleImpl::RegisterSendCodec(const VideoCodec* sendCodec,
|
|||||||
_sendCodecType = sendCodec->codecType;
|
_sendCodecType = sendCodec->codecType;
|
||||||
int numLayers = (_sendCodecType != kVideoCodecVP8) ? 1 :
|
int numLayers = (_sendCodecType != kVideoCodecVP8) ? 1 :
|
||||||
sendCodec->codecSpecific.VP8.numberOfTemporalLayers;
|
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 =
|
bool disable_frame_dropper =
|
||||||
numLayers > 1 && sendCodec->mode == kScreensharing;
|
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.clear();
|
||||||
_nextFrameTypes.resize(VCM_MAX(sendCodec->numberOfSimulcastStreams, 1),
|
_nextFrameTypes.resize(VCM_MAX(sendCodec->numberOfSimulcastStreams, 1),
|
||||||
kVideoFrameDelta);
|
kVideoFrameDelta);
|
||||||
@@ -742,6 +747,7 @@ WebRtc_Word32
|
|||||||
VideoCodingModuleImpl::EnableFrameDropper(bool enable)
|
VideoCodingModuleImpl::EnableFrameDropper(bool enable)
|
||||||
{
|
{
|
||||||
CriticalSectionScoped cs(_sendCritSect);
|
CriticalSectionScoped cs(_sendCritSect);
|
||||||
|
frame_dropper_enabled_ = enable;
|
||||||
_mediaOpt.EnableFrameDropper(enable);
|
_mediaOpt.EnableFrameDropper(enable);
|
||||||
return VCM_OK;
|
return VCM_OK;
|
||||||
}
|
}
|
||||||
|
@@ -319,6 +319,7 @@ private:
|
|||||||
VCMProcessTimer _keyRequestTimer;
|
VCMProcessTimer _keyRequestTimer;
|
||||||
EventFactory* event_factory_;
|
EventFactory* event_factory_;
|
||||||
bool owns_event_factory_;
|
bool owns_event_factory_;
|
||||||
|
bool frame_dropper_enabled_;
|
||||||
};
|
};
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
#endif // WEBRTC_MODULES_VIDEO_CODING_VIDEO_CODING_IMPL_H_
|
#endif // WEBRTC_MODULES_VIDEO_CODING_VIDEO_CODING_IMPL_H_
|
||||||
|
Reference in New Issue
Block a user