Index: webrtc/modules/audio_processing/aec3/aec3_common.h |
diff --git a/webrtc/modules/audio_processing/aec3/aec3_constants.h b/webrtc/modules/audio_processing/aec3/aec3_common.h |
similarity index 80% |
rename from webrtc/modules/audio_processing/aec3/aec3_constants.h |
rename to webrtc/modules/audio_processing/aec3/aec3_common.h |
index 054b0d8afd8fcf0086bac867c67f2aa1cef8dc42..3a5e835e21d3b782fe2eb971ea7a7b8f1bda93f2 100644 |
--- a/webrtc/modules/audio_processing/aec3/aec3_constants.h |
+++ b/webrtc/modules/audio_processing/aec3/aec3_common.h |
@@ -8,15 +8,27 @@ |
* be found in the AUTHORS file in the root of the source tree. |
*/ |
-#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_CONSTANTS_H_ |
-#define WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_CONSTANTS_H_ |
+#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_COMMON_H_ |
+#define WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_COMMON_H_ |
#include <stddef.h> |
+#include "webrtc/typedefs.h" |
namespace webrtc { |
+#ifdef _MSC_VER /* visual c++ */ |
+#define ALIGN16_BEG __declspec(align(16)) |
+#define ALIGN16_END |
+#else /* gcc or icc */ |
+#define ALIGN16_BEG |
+#define ALIGN16_END __attribute__((aligned(16))) |
+#endif |
+ |
+enum class Aec3Optimization { kNone, kSse2 }; |
+ |
constexpr size_t kFftLengthBy2 = 64; |
constexpr size_t kFftLengthBy2Plus1 = kFftLengthBy2 + 1; |
+constexpr size_t kFftLengthBy2Minus1 = kFftLengthBy2 - 1; |
constexpr size_t kFftLength = 2 * kFftLengthBy2; |
constexpr size_t kMaxNumBands = 3; |
@@ -39,6 +51,9 @@ constexpr bool ValidFullBandRate(int sample_rate_hz) { |
sample_rate_hz == 32000 || sample_rate_hz == 48000; |
} |
+// Detects what kind of optimizations to use for the code. |
+Aec3Optimization DetectOptimization(); |
+ |
static_assert(1 == NumBandsForRate(8000), "Number of bands for 8 kHz"); |
static_assert(1 == NumBandsForRate(16000), "Number of bands for 16 kHz"); |
static_assert(2 == NumBandsForRate(32000), "Number of bands for 32 kHz"); |
@@ -65,4 +80,4 @@ static_assert(!ValidFullBandRate(8001), |
} // namespace webrtc |
-#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_CONSTANTS_H_ |
+#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC3_AEC3_COMMON_H_ |