Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(780)

Side by Side Diff: webrtc/modules/audio_coding/test/PCMFile.cc

Issue 1513223002: Reduce the runtime of some ACM tests in modules_tests (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "PCMFile.h" 11 #include "webrtc/modules/audio_coding/test/PCMFile.h"
12 12
13 #include <ctype.h> 13 #include <ctype.h>
14 #include <stdio.h> 14 #include <stdio.h>
15 #include <string.h> 15 #include <string.h>
16 16
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "webrtc/modules/include/module_common_types.h" 18 #include "webrtc/modules/include/module_common_types.h"
19 19
20 namespace webrtc { 20 namespace webrtc {
21 21
22 #define MAX_FILE_NAME_LENGTH_BYTE 500 22 #define MAX_FILE_NAME_LENGTH_BYTE 500
23 23
24 PCMFile::PCMFile() 24 PCMFile::PCMFile()
25 : pcm_file_(NULL), 25 : pcm_file_(NULL),
26 samples_10ms_(160), 26 samples_10ms_(160),
27 frequency_(16000), 27 frequency_(16000),
28 end_of_file_(false), 28 end_of_file_(false),
29 auto_rewind_(false), 29 auto_rewind_(false),
30 rewinded_(false), 30 rewinded_(false),
31 read_stereo_(false), 31 read_stereo_(false),
32 save_stereo_(false) { 32 save_stereo_(false),
33 num_10ms_blocks_to_read_(rtc::Optional<int>()) {
ivoc 2015/12/10 12:23:57 Can this be initialized in the .h file as well? Or
hlundin-webrtc 2015/12/10 12:49:59 In fact, it's not needed at all. The default ctor
33 timestamp_ = (((uint32_t) rand() & 0x0000FFFF) << 16) | 34 timestamp_ = (((uint32_t) rand() & 0x0000FFFF) << 16) |
34 ((uint32_t) rand() & 0x0000FFFF); 35 ((uint32_t) rand() & 0x0000FFFF);
35 } 36 }
36 37
37 PCMFile::PCMFile(uint32_t timestamp) 38 PCMFile::PCMFile(uint32_t timestamp)
38 : pcm_file_(NULL), 39 : pcm_file_(NULL),
39 samples_10ms_(160), 40 samples_10ms_(160),
40 frequency_(16000), 41 frequency_(16000),
41 end_of_file_(false), 42 end_of_file_(false),
42 auto_rewind_(false), 43 auto_rewind_(false),
43 rewinded_(false), 44 rewinded_(false),
44 read_stereo_(false), 45 read_stereo_(false),
45 save_stereo_(false) { 46 save_stereo_(false),
47 num_10ms_blocks_to_read_(rtc::Optional<int>()) {
46 timestamp_ = timestamp; 48 timestamp_ = timestamp;
47 } 49 }
48 50
49 int16_t PCMFile::ChooseFile(std::string* file_name, int16_t max_len, 51 int16_t PCMFile::ChooseFile(std::string* file_name, int16_t max_len,
50 uint16_t* frequency_hz) { 52 uint16_t* frequency_hz) {
51 char tmp_name[MAX_FILE_NAME_LENGTH_BYTE]; 53 char tmp_name[MAX_FILE_NAME_LENGTH_BYTE];
52 54
53 EXPECT_TRUE(fgets(tmp_name, MAX_FILE_NAME_LENGTH_BYTE, stdin) != NULL); 55 EXPECT_TRUE(fgets(tmp_name, MAX_FILE_NAME_LENGTH_BYTE, stdin) != NULL);
54 tmp_name[MAX_FILE_NAME_LENGTH_BYTE - 1] = '\0'; 56 tmp_name[MAX_FILE_NAME_LENGTH_BYTE - 1] = '\0';
55 int16_t n = 0; 57 int16_t n = 0;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 rewinded_ = true; 132 rewinded_ = true;
131 } else { 133 } else {
132 end_of_file_ = true; 134 end_of_file_ = true;
133 } 135 }
134 } 136 }
135 audio_frame.samples_per_channel_ = samples_10ms_; 137 audio_frame.samples_per_channel_ = samples_10ms_;
136 audio_frame.sample_rate_hz_ = frequency_; 138 audio_frame.sample_rate_hz_ = frequency_;
137 audio_frame.num_channels_ = channels; 139 audio_frame.num_channels_ = channels;
138 audio_frame.timestamp_ = timestamp_; 140 audio_frame.timestamp_ = timestamp_;
139 timestamp_ += samples_10ms_; 141 timestamp_ += samples_10ms_;
142 ++blocks_read_;
143 if (num_10ms_blocks_to_read_ && blocks_read_ >= *num_10ms_blocks_to_read_)
144 end_of_file_ = true;
140 return samples_10ms_; 145 return samples_10ms_;
141 } 146 }
142 147
143 void PCMFile::Write10MsData(AudioFrame& audio_frame) { 148 void PCMFile::Write10MsData(AudioFrame& audio_frame) {
144 if (audio_frame.num_channels_ == 1) { 149 if (audio_frame.num_channels_ == 1) {
145 if (!save_stereo_) { 150 if (!save_stereo_) {
146 if (fwrite(audio_frame.data_, sizeof(uint16_t), 151 if (fwrite(audio_frame.data_, sizeof(uint16_t),
147 audio_frame.samples_per_channel_, pcm_file_) != 152 audio_frame.samples_per_channel_, pcm_file_) !=
148 static_cast<size_t>(audio_frame.samples_per_channel_)) { 153 static_cast<size_t>(audio_frame.samples_per_channel_)) {
149 return; 154 return;
(...skipping 25 matching lines...) Expand all
175 void PCMFile::Write10MsData(int16_t* playout_buffer, size_t length_smpls) { 180 void PCMFile::Write10MsData(int16_t* playout_buffer, size_t length_smpls) {
176 if (fwrite(playout_buffer, sizeof(uint16_t), length_smpls, pcm_file_) != 181 if (fwrite(playout_buffer, sizeof(uint16_t), length_smpls, pcm_file_) !=
177 length_smpls) { 182 length_smpls) {
178 return; 183 return;
179 } 184 }
180 } 185 }
181 186
182 void PCMFile::Close() { 187 void PCMFile::Close() {
183 fclose(pcm_file_); 188 fclose(pcm_file_);
184 pcm_file_ = NULL; 189 pcm_file_ = NULL;
190 blocks_read_ = 0;
191 }
192
193 void PCMFile::FastForward(int num_10ms_blocks) {
194 const int channels = read_stereo_ ? 2 : 1;
195 size_t num_bytes_to_move =
196 num_10ms_blocks * sizeof(int16_t) * samples_10ms_ * channels;
197 int error = fseek(pcm_file_, num_bytes_to_move, SEEK_CUR);
198 RTC_DCHECK_EQ(error, 0);
185 } 199 }
186 200
187 void PCMFile::Rewind() { 201 void PCMFile::Rewind() {
188 rewind(pcm_file_); 202 rewind(pcm_file_);
189 end_of_file_ = false; 203 end_of_file_ = false;
204 blocks_read_ = 0;
190 } 205 }
191 206
192 bool PCMFile::Rewinded() { 207 bool PCMFile::Rewinded() {
193 return rewinded_; 208 return rewinded_;
194 } 209 }
195 210
196 void PCMFile::SaveStereo(bool is_stereo) { 211 void PCMFile::SaveStereo(bool is_stereo) {
197 save_stereo_ = is_stereo; 212 save_stereo_ = is_stereo;
198 } 213 }
199 214
200 void PCMFile::ReadStereo(bool is_stereo) { 215 void PCMFile::ReadStereo(bool is_stereo) {
201 read_stereo_ = is_stereo; 216 read_stereo_ = is_stereo;
202 } 217 }
203 218
219 void PCMFile::SetNum10MsBlocksToRead(int value) {
220 num_10ms_blocks_to_read_ = rtc::Optional<int>(value);
221 }
222
204 } // namespace webrtc 223 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698