| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include <math.h> | 11 #include <math.h> |
| 12 #include <stdio.h> | 12 #include <stdio.h> |
| 13 | 13 |
| 14 #include <algorithm> | 14 #include <algorithm> |
| 15 #include <limits> | 15 #include <limits> |
| 16 #include <memory> | 16 #include <memory> |
| 17 #include <queue> | 17 #include <queue> |
| 18 | 18 |
| 19 #include "webrtc/base/arraysize.h" | 19 #include "webrtc/base/arraysize.h" |
| 20 #include "webrtc/base/checks.h" |
| 20 #include "webrtc/common_audio/include/audio_util.h" | 21 #include "webrtc/common_audio/include/audio_util.h" |
| 21 #include "webrtc/common_audio/resampler/include/push_resampler.h" | 22 #include "webrtc/common_audio/resampler/include/push_resampler.h" |
| 22 #include "webrtc/common_audio/resampler/push_sinc_resampler.h" | 23 #include "webrtc/common_audio/resampler/push_sinc_resampler.h" |
| 23 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar
y.h" | 24 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar
y.h" |
| 24 #include "webrtc/modules/audio_processing/beamformer/mock_nonlinear_beamformer.h
" | 25 #include "webrtc/modules/audio_processing/beamformer/mock_nonlinear_beamformer.h
" |
| 25 #include "webrtc/modules/audio_processing/common.h" | 26 #include "webrtc/modules/audio_processing/common.h" |
| 26 #include "webrtc/modules/audio_processing/include/audio_processing.h" | 27 #include "webrtc/modules/audio_processing/include/audio_processing.h" |
| 27 #include "webrtc/modules/audio_processing/test/protobuf_utils.h" | 28 #include "webrtc/modules/audio_processing/test/protobuf_utils.h" |
| 28 #include "webrtc/modules/audio_processing/test/test_utils.h" | 29 #include "webrtc/modules/audio_processing/test/test_utils.h" |
| 29 #include "webrtc/modules/include/module_common_types.h" | 30 #include "webrtc/modules/include/module_common_types.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 size_t TotalChannelsFromLayout(AudioProcessing::ChannelLayout layout) { | 86 size_t TotalChannelsFromLayout(AudioProcessing::ChannelLayout layout) { |
| 86 switch (layout) { | 87 switch (layout) { |
| 87 case AudioProcessing::kMono: | 88 case AudioProcessing::kMono: |
| 88 return 1; | 89 return 1; |
| 89 case AudioProcessing::kMonoAndKeyboard: | 90 case AudioProcessing::kMonoAndKeyboard: |
| 90 case AudioProcessing::kStereo: | 91 case AudioProcessing::kStereo: |
| 91 return 2; | 92 return 2; |
| 92 case AudioProcessing::kStereoAndKeyboard: | 93 case AudioProcessing::kStereoAndKeyboard: |
| 93 return 3; | 94 return 3; |
| 94 } | 95 } |
| 95 assert(false); | 96 RTC_NOTREACHED(); |
| 96 return 0; | 97 return 0; |
| 97 } | 98 } |
| 98 | 99 |
| 99 int TruncateToMultipleOf10(int value) { | 100 int TruncateToMultipleOf10(int value) { |
| 100 return (value / 10) * 10; | 101 return (value / 10) * 10; |
| 101 } | 102 } |
| 102 | 103 |
| 103 void MixStereoToMono(const float* stereo, float* mono, | 104 void MixStereoToMono(const float* stereo, float* mono, |
| 104 size_t samples_per_channel) { | 105 size_t samples_per_channel) { |
| 105 for (size_t i = 0; i < samples_per_channel; ++i) | 106 for (size_t i = 0; i < samples_per_channel; ++i) |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 size_t num_reverse_output_channels, | 259 size_t num_reverse_output_channels, |
| 259 StreamDirection file_direction) { | 260 StreamDirection file_direction) { |
| 260 std::ostringstream ss; | 261 std::ostringstream ss; |
| 261 ss << name << "_i" << num_input_channels << "_" << input_rate / 1000 << "_ir" | 262 ss << name << "_i" << num_input_channels << "_" << input_rate / 1000 << "_ir" |
| 262 << num_reverse_input_channels << "_" << reverse_input_rate / 1000 << "_"; | 263 << num_reverse_input_channels << "_" << reverse_input_rate / 1000 << "_"; |
| 263 if (num_output_channels == 1) { | 264 if (num_output_channels == 1) { |
| 264 ss << "mono"; | 265 ss << "mono"; |
| 265 } else if (num_output_channels == 2) { | 266 } else if (num_output_channels == 2) { |
| 266 ss << "stereo"; | 267 ss << "stereo"; |
| 267 } else { | 268 } else { |
| 268 assert(false); | 269 RTC_NOTREACHED(); |
| 269 } | 270 } |
| 270 ss << output_rate / 1000; | 271 ss << output_rate / 1000; |
| 271 if (num_reverse_output_channels == 1) { | 272 if (num_reverse_output_channels == 1) { |
| 272 ss << "_rmono"; | 273 ss << "_rmono"; |
| 273 } else if (num_reverse_output_channels == 2) { | 274 } else if (num_reverse_output_channels == 2) { |
| 274 ss << "_rstereo"; | 275 ss << "_rstereo"; |
| 275 } else { | 276 } else { |
| 276 assert(false); | 277 RTC_NOTREACHED(); |
| 277 } | 278 } |
| 278 ss << reverse_output_rate / 1000; | 279 ss << reverse_output_rate / 1000; |
| 279 ss << "_d" << file_direction << "_pcm"; | 280 ss << "_d" << file_direction << "_pcm"; |
| 280 | 281 |
| 281 std::string filename = ss.str(); | 282 std::string filename = ss.str(); |
| 282 if (temp_filenames[filename].empty()) | 283 if (temp_filenames[filename].empty()) |
| 283 temp_filenames[filename] = test::TempFilename(test::OutputPath(), filename); | 284 temp_filenames[filename] = test::TempFilename(test::OutputPath(), filename); |
| 284 return temp_filenames[filename]; | 285 return temp_filenames[filename]; |
| 285 } | 286 } |
| 286 | 287 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 304 // | 305 // |
| 305 // |int_data| and |float_data| are just temporary space that must be | 306 // |int_data| and |float_data| are just temporary space that must be |
| 306 // sufficiently large to hold the 10 ms chunk. | 307 // sufficiently large to hold the 10 ms chunk. |
| 307 bool ReadChunk(FILE* file, int16_t* int_data, float* float_data, | 308 bool ReadChunk(FILE* file, int16_t* int_data, float* float_data, |
| 308 ChannelBuffer<float>* cb) { | 309 ChannelBuffer<float>* cb) { |
| 309 // The files always contain stereo audio. | 310 // The files always contain stereo audio. |
| 310 size_t frame_size = cb->num_frames() * 2; | 311 size_t frame_size = cb->num_frames() * 2; |
| 311 size_t read_count = fread(int_data, sizeof(int16_t), frame_size, file); | 312 size_t read_count = fread(int_data, sizeof(int16_t), frame_size, file); |
| 312 if (read_count != frame_size) { | 313 if (read_count != frame_size) { |
| 313 // Check that the file really ended. | 314 // Check that the file really ended. |
| 314 assert(feof(file)); | 315 RTC_DCHECK(feof(file)); |
| 315 return false; // This is expected. | 316 return false; // This is expected. |
| 316 } | 317 } |
| 317 | 318 |
| 318 S16ToFloat(int_data, frame_size, float_data); | 319 S16ToFloat(int_data, frame_size, float_data); |
| 319 if (cb->num_channels() == 1) { | 320 if (cb->num_channels() == 1) { |
| 320 MixStereoToMono(float_data, cb->channels()[0], cb->num_frames()); | 321 MixStereoToMono(float_data, cb->channels()[0], cb->num_frames()); |
| 321 } else { | 322 } else { |
| 322 Deinterleave(float_data, cb->num_frames(), 2, | 323 Deinterleave(float_data, cb->num_frames(), 2, |
| 323 cb->channels()); | 324 cb->channels()); |
| 324 } | 325 } |
| (...skipping 2442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2767 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), | 2768 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), |
| 2768 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), | 2769 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), |
| 2769 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), | 2770 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), |
| 2770 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), | 2771 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), |
| 2771 std::tr1::make_tuple(16000, 16000, 32000, 16000, 35, 20), | 2772 std::tr1::make_tuple(16000, 16000, 32000, 16000, 35, 20), |
| 2772 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); | 2773 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); |
| 2773 #endif | 2774 #endif |
| 2774 | 2775 |
| 2775 } // namespace | 2776 } // namespace |
| 2776 } // namespace webrtc | 2777 } // namespace webrtc |
| OLD | NEW |