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}
This commit is contained in:
kwiberg
2016-09-13 07:49:33 -07:00
committed by Commit bot
parent ba56b6c7d2
commit d59d3bb117
2 changed files with 17 additions and 16 deletions

View File

@ -70,15 +70,7 @@
namespace webrtc { namespace webrtc {
const int AudioProcessing::kNativeSampleRatesHz[] = { constexpr 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];
namespace { namespace {
@ -103,12 +95,15 @@ bool SampleRateSupportsMultiBand(int sample_rate_hz) {
int FindNativeProcessRateToUse(int minimum_rate, bool band_splitting_required) { int FindNativeProcessRateToUse(int minimum_rate, bool band_splitting_required) {
#ifdef WEBRTC_ARCH_ARM_FAMILY #ifdef WEBRTC_ARCH_ARM_FAMILY
const int kMaxSplittingNativeProcessRate = AudioProcessing::kSampleRate32kHz; constexpr int kMaxSplittingNativeProcessRate =
AudioProcessing::kSampleRate32kHz;
#else #else
const int kMaxSplittingNativeProcessRate = AudioProcessing::kSampleRate48kHz; constexpr int kMaxSplittingNativeProcessRate =
AudioProcessing::kSampleRate48kHz;
#endif #endif
RTC_DCHECK_LE(kMaxSplittingNativeProcessRate, static_assert(
AudioProcessing::kMaxNativeSampleRateHz); kMaxSplittingNativeProcessRate <= AudioProcessing::kMaxNativeSampleRateHz,
"");
const int uppermost_native_rate = band_splitting_required const int uppermost_native_rate = band_splitting_required
? kMaxSplittingNativeProcessRate ? kMaxSplittingNativeProcessRate
: AudioProcessing::kSampleRate48kHz; : AudioProcessing::kSampleRate48kHz;

View File

@ -513,9 +513,15 @@ class AudioProcessing {
kSampleRate48kHz = 48000 kSampleRate48kHz = 48000
}; };
static const int kNativeSampleRatesHz[]; // TODO(kwiberg): We currently need to support a compiler (Visual C++) that
static const size_t kNumNativeSampleRates; // complains if we don't explicitly state the size of the array here. Remove
static const int kMaxNativeSampleRateHz; // 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; static const int kChunkSizeMs = 10;
}; };