summaryrefslogtreecommitdiff
path: root/modules/video_coding
diff options
context:
space:
mode:
Diffstat (limited to 'modules/video_coding')
-rw-r--r--modules/video_coding/main/source/timing.cc1
-rw-r--r--modules/video_coding/main/source/timing.h29
-rw-r--r--modules/video_coding/main/source/video_sender_unittest.cc12
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;
}