зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1047442: reacquire _sendCritSect within webrtc Encoded() callback (upstream patch) r=pkerr
This commit is contained in:
Родитель
2ae10d87c4
Коммит
acbb3b1f28
|
@ -176,6 +176,7 @@ VCMGenericEncoder::InternalSource() const
|
|||
VCMEncodedFrameCallback::VCMEncodedFrameCallback(
|
||||
EncodedImageCallback* post_encode_callback):
|
||||
_sendCallback(),
|
||||
_critSect(NULL),
|
||||
_mediaOpt(NULL),
|
||||
_payloadType(0),
|
||||
_internalSource(false),
|
||||
|
@ -196,6 +197,12 @@ VCMEncodedFrameCallback::~VCMEncodedFrameCallback()
|
|||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
VCMEncodedFrameCallback::SetCritSect(CriticalSectionWrapper* critSect)
|
||||
{
|
||||
_critSect = critSect;
|
||||
}
|
||||
|
||||
int32_t
|
||||
VCMEncodedFrameCallback::SetTransportCallback(VCMPacketizationCallback* transport)
|
||||
{
|
||||
|
@ -209,6 +216,9 @@ VCMEncodedFrameCallback::Encoded(
|
|||
const CodecSpecificInfo* codecSpecificInfo,
|
||||
const RTPFragmentationHeader* fragmentationHeader)
|
||||
{
|
||||
assert(_critSect);
|
||||
CriticalSectionScoped cs(_critSect);
|
||||
|
||||
post_encode_callback_->Encoded(encodedImage);
|
||||
|
||||
FrameType frameType = VCMEncodedFrame::ConvertFrameType(encodedImage._frameType);
|
||||
|
|
|
@ -33,6 +33,8 @@ public:
|
|||
VCMEncodedFrameCallback(EncodedImageCallback* post_encode_callback);
|
||||
virtual ~VCMEncodedFrameCallback();
|
||||
|
||||
void SetCritSect(CriticalSectionWrapper* critSect);
|
||||
|
||||
/*
|
||||
* Callback implementation - codec encode complete
|
||||
*/
|
||||
|
@ -54,6 +56,7 @@ public:
|
|||
|
||||
private:
|
||||
VCMPacketizationCallback* _sendCallback;
|
||||
CriticalSectionWrapper* _critSect;
|
||||
media_optimization::MediaOptimization* _mediaOpt;
|
||||
uint8_t _payloadType;
|
||||
bool _internalSource;
|
||||
|
|
|
@ -107,6 +107,7 @@ int32_t VideoSender::InitializeSender() {
|
|||
_codecDataBase.ResetSender();
|
||||
_encoder = NULL;
|
||||
_encodedFrameCallback.SetTransportCallback(NULL);
|
||||
_encodedFrameCallback.SetCritSect(_sendCritSect);
|
||||
_mediaOpt.Reset(); // Resetting frame dropper
|
||||
return VCM_OK;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче