From d59d3bb117544f2d4efe9f27d199f440a1da6cb8 Mon Sep 17 00:00:00 2001 From: kwiberg Date: Tue, 13 Sep 2016 07:49:33 -0700 Subject: [PATCH] Replace a DCHECK with static_assert This requires marking a bunch of compile-time constants "constexpr" instead of just "const". Review-Url: https://codereview.webrtc.org/2335483003 Cr-Commit-Position: refs/heads/master@{#14199} --- .../audio_processing/audio_processing_impl.cc | 21 +++++++------------ .../include/audio_processing.h | 12 ++++++++--- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc index 72f154a66d..5478456cdb 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.cc +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc @@ -70,15 +70,7 @@ namespace webrtc { -const int AudioProcessing::kNativeSampleRatesHz[] = { - AudioProcessing::kSampleRate8kHz, - AudioProcessing::kSampleRate16kHz, - AudioProcessing::kSampleRate32kHz, - AudioProcessing::kSampleRate48kHz}; -const size_t AudioProcessing::kNumNativeSampleRates = - arraysize(AudioProcessing::kNativeSampleRatesHz); -const int AudioProcessing::kMaxNativeSampleRateHz = AudioProcessing:: - kNativeSampleRatesHz[AudioProcessing::kNumNativeSampleRates - 1]; +constexpr int AudioProcessing::kNativeSampleRatesHz[]; namespace { @@ -103,12 +95,15 @@ bool SampleRateSupportsMultiBand(int sample_rate_hz) { int FindNativeProcessRateToUse(int minimum_rate, bool band_splitting_required) { #ifdef WEBRTC_ARCH_ARM_FAMILY - const int kMaxSplittingNativeProcessRate = AudioProcessing::kSampleRate32kHz; + constexpr int kMaxSplittingNativeProcessRate = + AudioProcessing::kSampleRate32kHz; #else - const int kMaxSplittingNativeProcessRate = AudioProcessing::kSampleRate48kHz; + constexpr int kMaxSplittingNativeProcessRate = + AudioProcessing::kSampleRate48kHz; #endif - RTC_DCHECK_LE(kMaxSplittingNativeProcessRate, - AudioProcessing::kMaxNativeSampleRateHz); + static_assert( + kMaxSplittingNativeProcessRate <= AudioProcessing::kMaxNativeSampleRateHz, + ""); const int uppermost_native_rate = band_splitting_required ? kMaxSplittingNativeProcessRate : AudioProcessing::kSampleRate48kHz; diff --git a/webrtc/modules/audio_processing/include/audio_processing.h b/webrtc/modules/audio_processing/include/audio_processing.h index 035fa32c7a..172da0891f 100644 --- a/webrtc/modules/audio_processing/include/audio_processing.h +++ b/webrtc/modules/audio_processing/include/audio_processing.h @@ -513,9 +513,15 @@ class AudioProcessing { kSampleRate48kHz = 48000 }; - static const int kNativeSampleRatesHz[]; - static const size_t kNumNativeSampleRates; - static const int kMaxNativeSampleRateHz; + // TODO(kwiberg): We currently need to support a compiler (Visual C++) that + // complains if we don't explicitly state the size of the array here. Remove + // the size when that's no longer the case. + static constexpr int kNativeSampleRatesHz[4] = { + kSampleRate8kHz, kSampleRate16kHz, kSampleRate32kHz, kSampleRate48kHz}; + static constexpr size_t kNumNativeSampleRates = + arraysize(kNativeSampleRatesHz); + static constexpr int kMaxNativeSampleRateHz = + kNativeSampleRatesHz[kNumNativeSampleRates - 1]; static const int kChunkSizeMs = 10; };