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 {
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;

View File

@ -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;
};