Bug Fix: Multiplex Codec Crash
This CL adds a lock to stashed_images_ in MultiplexEncoderAdapter. Without lock, it is possible that different threads acts on stashed_images_ simultaneously and leads to crash. Bug: webrtc:8965 Change-Id: I887861092d185c3bd6047eb529d8c1cf57fa4648 Reviewed-on: https://webrtc-review.googlesource.com/59260 Reviewed-by: Emircan Uysaler <emircan@webrtc.org> Commit-Queue: Qiang Chen <qiangchen@chromium.org> Cr-Commit-Position: refs/heads/master@{#22261}
This commit is contained in:
@ -20,6 +20,7 @@
|
||||
#include "api/video_codecs/video_encoder_factory.h"
|
||||
#include "modules/video_coding/codecs/multiplex/include/multiplex_encoded_image_packer.h"
|
||||
#include "modules/video_coding/include/video_codec_interface.h"
|
||||
#include "rtc_base/criticalsection.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -66,13 +67,16 @@ class MultiplexEncoderAdapter : public VideoEncoder {
|
||||
std::vector<std::unique_ptr<AdapterEncodedImageCallback>> adapter_callbacks_;
|
||||
EncodedImageCallback* encoded_complete_callback_;
|
||||
|
||||
std::map<uint32_t /* timestamp */, MultiplexImage> stashed_images_;
|
||||
std::map<uint32_t /* timestamp */, MultiplexImage> stashed_images_
|
||||
RTC_GUARDED_BY(crit_);
|
||||
|
||||
uint16_t picture_index_ = 0;
|
||||
std::vector<uint8_t> multiplex_dummy_planes_;
|
||||
|
||||
int key_frame_interval_;
|
||||
EncodedImage combined_image_;
|
||||
|
||||
rtc::CriticalSection crit_;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user