From 7af12be7816249da6eb0ac06cae4df1be65c96cb Mon Sep 17 00:00:00 2001 From: "stefan@webrtc.org" Date: Wed, 9 Jul 2014 14:46:31 +0000 Subject: [PATCH] Thread annotations for vie_encoder.cc/.h Review URL: https://webrtc-codereview.appspot.com/8739005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6638 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/video_engine/vie_encoder.cc | 25 +++++++++++++--------- webrtc/video_engine/vie_encoder.h | 33 +++++++++++++++--------------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/webrtc/video_engine/vie_encoder.cc b/webrtc/video_engine/vie_encoder.cc index fd3f0d789..a628188a1 100644 --- a/webrtc/video_engine/vie_encoder.cc +++ b/webrtc/video_engine/vie_encoder.cc @@ -553,16 +553,19 @@ void ViEEncoder::DeliverFrame(int id, if (vcm_.SendCodec() == webrtc::kVideoCodecVP8) { webrtc::CodecSpecificInfo codec_specific_info; codec_specific_info.codecType = webrtc::kVideoCodecVP8; - codec_specific_info.codecSpecific.VP8.hasReceivedRPSI = - has_received_rpsi_; - codec_specific_info.codecSpecific.VP8.hasReceivedSLI = - has_received_sli_; - codec_specific_info.codecSpecific.VP8.pictureIdRPSI = - picture_id_rpsi_; - codec_specific_info.codecSpecific.VP8.pictureIdSLI = - picture_id_sli_; - has_received_sli_ = false; - has_received_rpsi_ = false; + { + CriticalSectionScoped cs(data_cs_.get()); + codec_specific_info.codecSpecific.VP8.hasReceivedRPSI = + has_received_rpsi_; + codec_specific_info.codecSpecific.VP8.hasReceivedSLI = + has_received_sli_; + codec_specific_info.codecSpecific.VP8.pictureIdRPSI = + picture_id_rpsi_; + codec_specific_info.codecSpecific.VP8.pictureIdSLI = + picture_id_sli_; + has_received_sli_ = false; + has_received_rpsi_ = false; + } vcm_.AddVideoFrame(*decimated_frame, vpm_.ContentMetrics(), &codec_specific_info); @@ -744,12 +747,14 @@ int32_t ViEEncoder::RegisterCodecObserver(ViEEncoderObserver* observer) { void ViEEncoder::OnReceivedSLI(uint32_t /*ssrc*/, uint8_t picture_id) { + CriticalSectionScoped cs(data_cs_.get()); picture_id_sli_ = picture_id; has_received_sli_ = true; } void ViEEncoder::OnReceivedRPSI(uint32_t /*ssrc*/, uint64_t picture_id) { + CriticalSectionScoped cs(data_cs_.get()); picture_id_rpsi_ = picture_id; has_received_rpsi_ = true; } diff --git a/webrtc/video_engine/vie_encoder.h b/webrtc/video_engine/vie_encoder.h index 3eb5f55a7..781e27029 100644 --- a/webrtc/video_engine/vie_encoder.h +++ b/webrtc/video_engine/vie_encoder.h @@ -189,7 +189,7 @@ class ViEEncoder int64_t capture_time_ms, bool retransmission); int TimeToSendPadding(int bytes); private: - bool EncoderPaused() const; + bool EncoderPaused() const EXCLUSIVE_LOCKS_REQUIRED(data_cs_); int32_t engine_id_; const int channel_id_; @@ -206,32 +206,33 @@ class ViEEncoder BitrateController* bitrate_controller_; - int64_t time_of_last_incoming_frame_ms_; - bool send_padding_; + int64_t time_of_last_incoming_frame_ms_ GUARDED_BY(data_cs_); + bool send_padding_ GUARDED_BY(data_cs_); int min_transmit_bitrate_kbps_ GUARDED_BY(data_cs_); - int target_delay_ms_; - bool network_is_transmitting_; - bool encoder_paused_; - bool encoder_paused_and_dropped_frame_; - std::map time_last_intra_request_ms_; + int target_delay_ms_ GUARDED_BY(data_cs_); + bool network_is_transmitting_ GUARDED_BY(data_cs_); + bool encoder_paused_ GUARDED_BY(data_cs_); + bool encoder_paused_and_dropped_frame_ GUARDED_BY(data_cs_); + std::map time_last_intra_request_ms_ + GUARDED_BY(data_cs_); bool fec_enabled_; bool nack_enabled_; ViEEncoderObserver* codec_observer_ GUARDED_BY(callback_cs_); - ViEEffectFilter* effect_filter_; + ViEEffectFilter* effect_filter_ GUARDED_BY(callback_cs_); ProcessThread& module_process_thread_; - bool has_received_sli_; - uint8_t picture_id_sli_; - bool has_received_rpsi_; - uint64_t picture_id_rpsi_; - std::map ssrc_streams_; + bool has_received_sli_ GUARDED_BY(data_cs_); + uint8_t picture_id_sli_ GUARDED_BY(data_cs_); + bool has_received_rpsi_ GUARDED_BY(data_cs_); + uint64_t picture_id_rpsi_ GUARDED_BY(data_cs_); + std::map ssrc_streams_ GUARDED_BY(data_cs_); // Quality modes callback QMVideoSettingsCallback* qm_callback_; - bool video_suspended_; - I420FrameCallback* pre_encode_callback_; + bool video_suspended_ GUARDED_BY(data_cs_); + I420FrameCallback* pre_encode_callback_ GUARDED_BY(callback_cs_); }; } // namespace webrtc