diff options
Diffstat (limited to 'modules/video_coding')
-rw-r--r-- | modules/video_coding/main/source/timing.cc | 1 | ||||
-rw-r--r-- | modules/video_coding/main/source/timing.h | 29 | ||||
-rw-r--r-- | modules/video_coding/main/source/video_sender_unittest.cc | 12 |
3 files changed, 23 insertions, 19 deletions
diff --git a/modules/video_coding/main/source/timing.cc b/modules/video_coding/main/source/timing.cc index af0e35c4..2ec149ce 100644 --- a/modules/video_coding/main/source/timing.cc +++ b/modules/video_coding/main/source/timing.cc @@ -58,6 +58,7 @@ void VCMTiming::Reset() { } void VCMTiming::ResetDecodeTime() { + CriticalSectionScoped lock(crit_sect_); codec_timer_.Reset(); } diff --git a/modules/video_coding/main/source/timing.h b/modules/video_coding/main/source/timing.h index 1dca5e60..116639eb 100644 --- a/modules/video_coding/main/source/timing.h +++ b/modules/video_coding/main/source/timing.h @@ -13,6 +13,7 @@ #include "webrtc/modules/video_coding/main/source/codec_timer.h" #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" +#include "webrtc/system_wrappers/interface/thread_annotations.h" #include "webrtc/typedefs.h" namespace webrtc { @@ -93,22 +94,24 @@ class VCMTiming { enum { kDelayMaxChangeMsPerS = 100 }; protected: - int32_t MaxDecodeTimeMs(FrameType frame_type = kVideoFrameDelta) const; - int64_t RenderTimeMsInternal(uint32_t frame_timestamp, int64_t now_ms) const; - uint32_t TargetDelayInternal() const; + int32_t MaxDecodeTimeMs(FrameType frame_type = kVideoFrameDelta) const + EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); + int64_t RenderTimeMsInternal(uint32_t frame_timestamp, int64_t now_ms) const + EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); + uint32_t TargetDelayInternal() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); private: CriticalSectionWrapper* crit_sect_; - Clock* clock_; - bool master_; - TimestampExtrapolator* ts_extrapolator_; - VCMCodecTimer codec_timer_; - uint32_t render_delay_ms_; - uint32_t min_playout_delay_ms_; - uint32_t jitter_delay_ms_; - uint32_t current_delay_ms_; - int last_decode_ms_; - uint32_t prev_frame_timestamp_; + Clock* const clock_; + bool master_ GUARDED_BY(crit_sect_); + TimestampExtrapolator* ts_extrapolator_ GUARDED_BY(crit_sect_); + VCMCodecTimer codec_timer_ GUARDED_BY(crit_sect_); + uint32_t render_delay_ms_ GUARDED_BY(crit_sect_); + uint32_t min_playout_delay_ms_ GUARDED_BY(crit_sect_); + uint32_t jitter_delay_ms_ GUARDED_BY(crit_sect_); + uint32_t current_delay_ms_ GUARDED_BY(crit_sect_); + int last_decode_ms_ GUARDED_BY(crit_sect_); + uint32_t prev_frame_timestamp_ GUARDED_BY(crit_sect_); }; } // namespace webrtc diff --git a/modules/video_coding/main/source/video_sender_unittest.cc b/modules/video_coding/main/source/video_sender_unittest.cc index 67b3e7ae..0b8193b2 100644 --- a/modules/video_coding/main/source/video_sender_unittest.cc +++ b/modules/video_coding/main/source/video_sender_unittest.cc @@ -141,10 +141,10 @@ class PacketizationCallback : public VCMPacketizationCallback { int frames = 0; for (size_t i = 0; i < frame_data_.size(); ++i) { EXPECT_EQ(kRtpVideoVp8, frame_data_[i].rtp_video_header.codec); - if (frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx <= - temporal_layer) { + const uint8_t temporal_idx = + frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx; + if (temporal_idx <= temporal_layer || temporal_idx == kNoTemporalIdx) frames++; - } } return frames; } @@ -153,10 +153,10 @@ class PacketizationCallback : public VCMPacketizationCallback { int payload_size = 0; for (size_t i = 0; i < frame_data_.size(); ++i) { EXPECT_EQ(kRtpVideoVp8, frame_data_[i].rtp_video_header.codec); - if (frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx <= - temporal_layer) { + const uint8_t temporal_idx = + frame_data_[i].rtp_video_header.codecHeader.VP8.temporalIdx; + if (temporal_idx <= temporal_layer || temporal_idx == kNoTemporalIdx) payload_size += frame_data_[i].payload_size; - } } return payload_size; } |