From e008248c7d74a63c825bd6cfde785d444e7bbec1 Mon Sep 17 00:00:00 2001 From: Elad Alon Date: Mon, 28 Jan 2019 15:02:04 +0100 Subject: [PATCH] Only instantiate TemporalLayersChecker in debug builds Bug: None Change-Id: I0f700451df4c9adfc07c77e62a5964c85079fefa Reviewed-on: https://webrtc-review.googlesource.com/c/120051 Reviewed-by: Stefan Holmer Commit-Queue: Elad Alon Cr-Commit-Position: refs/heads/master@{#26439} --- .../codecs/vp8/default_temporal_layers.cc | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/modules/video_coding/codecs/vp8/default_temporal_layers.cc b/modules/video_coding/codecs/vp8/default_temporal_layers.cc index a3726036d9..1114234793 100644 --- a/modules/video_coding/codecs/vp8/default_temporal_layers.cc +++ b/modules/video_coding/codecs/vp8/default_temporal_layers.cc @@ -264,10 +264,7 @@ DefaultTemporalLayers::DefaultTemporalLayers(int number_of_temporal_layers) temporal_ids_(GetTemporalIds(num_layers_)), temporal_pattern_(GetTemporalPattern(num_layers_)), kf_buffers_(FindKfBuffers(temporal_pattern_)), - pattern_idx_(kUninitializedPatternIndex), - checker_(TemporalLayersChecker::CreateTemporalLayersChecker( - Vp8TemporalLayersType::kFixedPattern, - number_of_temporal_layers)) { + pattern_idx_(kUninitializedPatternIndex) { RTC_CHECK_GE(kMaxTemporalStreams, number_of_temporal_layers); RTC_CHECK_GE(number_of_temporal_layers, 0); RTC_CHECK_LE(number_of_temporal_layers, 4); @@ -276,6 +273,11 @@ DefaultTemporalLayers::DefaultTemporalLayers(int number_of_temporal_layers) // wrap at max(temporal_ids_.size(), temporal_pattern_.size()). RTC_DCHECK_LE(temporal_ids_.size(), temporal_pattern_.size()); +#if RTC_DCHECK_IS_ON + checker_ = TemporalLayersChecker::CreateTemporalLayersChecker( + Vp8TemporalLayersType::kFixedPattern, number_of_temporal_layers); +#endif + // Always need to start with a keyframe, so pre-populate all frame counters. for (Vp8BufferReference buffer : kAllBuffers) { frames_since_buffer_refresh_[buffer] = 0; @@ -399,12 +401,12 @@ Vp8TemporalLayers::FrameConfig DefaultTemporalLayers::UpdateLayerConfig( pending_frames_[timestamp] = PendingFrame{false, GetUpdatedBuffers(tl_config), tl_config}; - if (checker_) { - // Checker does not yet support encoder frame dropping, so validate flags - // here before they can be dropped. - // TODO(sprang): Update checker to support dropping. - RTC_DCHECK(checker_->CheckTemporalConfig(false, tl_config)); - } +#if RTC_DCHECK_IS_ON + // Checker does not yet support encoder frame dropping, so validate flags + // here before they can be dropped. + // TODO(sprang): Update checker to support dropping. + RTC_DCHECK(checker_->CheckTemporalConfig(false, tl_config)); +#endif return tl_config; } @@ -481,10 +483,12 @@ void DefaultTemporalLayers::OnEncodeDone(uint32_t rtp_timestamp, } PendingFrame& frame = pending_frame->second; - if (is_keyframe && checker_) { +#if RTC_DCHECK_IS_ON + if (is_keyframe) { // Signal key-frame so checker resets state. RTC_DCHECK(checker_->CheckTemporalConfig(true, frame.frame_config)); } +#endif if (num_layers_ == 1) { vp8_info->temporalIdx = kNoTemporalIdx;