OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include "media/base/audio_buffer_queue.h" |
| 6 |
5 #include <stdint.h> | 7 #include <stdint.h> |
6 | 8 |
7 #include <limits> | 9 #include <limits> |
| 10 #include <memory> |
8 | 11 |
9 #include "base/logging.h" | 12 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "base/time/time.h" | 13 #include "base/time/time.h" |
12 #include "media/base/audio_buffer.h" | 14 #include "media/base/audio_buffer.h" |
13 #include "media/base/audio_buffer_queue.h" | |
14 #include "media/base/audio_bus.h" | 15 #include "media/base/audio_bus.h" |
15 #include "media/base/test_helpers.h" | 16 #include "media/base/test_helpers.h" |
16 #include "media/base/timestamp_constants.h" | 17 #include "media/base/timestamp_constants.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
18 | 19 |
19 namespace media { | 20 namespace media { |
20 | 21 |
21 const int kSampleRate = 44100; | 22 const int kSampleRate = 44100; |
22 | 23 |
23 static void VerifyBus(AudioBus* bus, | 24 static void VerifyBus(AudioBus* bus, |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 EXPECT_EQ(32, buffer.frames()); | 83 EXPECT_EQ(32, buffer.frames()); |
83 buffer.Append( | 84 buffer.Append( |
84 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 85 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
85 EXPECT_EQ(40, buffer.frames()); | 86 EXPECT_EQ(40, buffer.frames()); |
86 } | 87 } |
87 | 88 |
88 TEST(AudioBufferQueueTest, IteratorCheck) { | 89 TEST(AudioBufferQueueTest, IteratorCheck) { |
89 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; | 90 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; |
90 const int channels = ChannelLayoutToChannelCount(channel_layout); | 91 const int channels = ChannelLayoutToChannelCount(channel_layout); |
91 AudioBufferQueue buffer; | 92 AudioBufferQueue buffer; |
92 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 93 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
93 | 94 |
94 // Append 40 frames in 5 buffers. Intersperse ReadFrames() to make the | 95 // Append 40 frames in 5 buffers. Intersperse ReadFrames() to make the |
95 // iterator is pointing to the correct position. | 96 // iterator is pointing to the correct position. |
96 buffer.Append(MakeTestBuffer<float>( | 97 buffer.Append(MakeTestBuffer<float>( |
97 kSampleFormatF32, channel_layout, 10.0f, 1.0f, 8)); | 98 kSampleFormatF32, channel_layout, 10.0f, 1.0f, 8)); |
98 EXPECT_EQ(8, buffer.frames()); | 99 EXPECT_EQ(8, buffer.frames()); |
99 | 100 |
100 EXPECT_EQ(4, buffer.ReadFrames(4, 0, bus.get())); | 101 EXPECT_EQ(4, buffer.ReadFrames(4, 0, bus.get())); |
101 EXPECT_EQ(4, buffer.frames()); | 102 EXPECT_EQ(4, buffer.frames()); |
102 VerifyBus(bus.get(), 0, 4, bus->frames(), 10, 1); | 103 VerifyBus(bus.get(), 0, 4, bus->frames(), 10, 1); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 // Add 76 frames of data. | 160 // Add 76 frames of data. |
160 buffer.Append( | 161 buffer.Append( |
161 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 1.0f, 1.0f, 6)); | 162 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 1.0f, 1.0f, 6)); |
162 buffer.Append( | 163 buffer.Append( |
163 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 13.0f, 1.0f, 10)); | 164 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 13.0f, 1.0f, 10)); |
164 buffer.Append( | 165 buffer.Append( |
165 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 33.0f, 1.0f, 60)); | 166 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 33.0f, 1.0f, 60)); |
166 EXPECT_EQ(76, buffer.frames()); | 167 EXPECT_EQ(76, buffer.frames()); |
167 | 168 |
168 // Read 3 frames from the buffer. | 169 // Read 3 frames from the buffer. |
169 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 170 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
170 EXPECT_EQ(3, buffer.ReadFrames(3, 0, bus.get())); | 171 EXPECT_EQ(3, buffer.ReadFrames(3, 0, bus.get())); |
171 EXPECT_EQ(73, buffer.frames()); | 172 EXPECT_EQ(73, buffer.frames()); |
172 VerifyBus(bus.get(), 0, 3, 6, 1, 1); | 173 VerifyBus(bus.get(), 0, 3, 6, 1, 1); |
173 | 174 |
174 // Now read 5 frames, which will span buffers. Append the data into AudioBus. | 175 // Now read 5 frames, which will span buffers. Append the data into AudioBus. |
175 EXPECT_EQ(5, buffer.ReadFrames(5, 3, bus.get())); | 176 EXPECT_EQ(5, buffer.ReadFrames(5, 3, bus.get())); |
176 EXPECT_EQ(68, buffer.frames()); | 177 EXPECT_EQ(68, buffer.frames()); |
177 VerifyBus(bus.get(), 0, 6, 6, 1, 1); | 178 VerifyBus(bus.get(), 0, 6, 6, 1, 1); |
178 VerifyBus(bus.get(), 6, 2, 10, 13, 1); | 179 VerifyBus(bus.get(), 6, 2, 10, 13, 1); |
179 | 180 |
(...skipping 10 matching lines...) Expand all Loading... |
190 const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0; | 191 const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0; |
191 const int channels = ChannelLayoutToChannelCount(channel_layout); | 192 const int channels = ChannelLayoutToChannelCount(channel_layout); |
192 const int frames = 4; | 193 const int frames = 4; |
193 AudioBufferQueue buffer; | 194 AudioBufferQueue buffer; |
194 | 195 |
195 // Add 4 frames of data. | 196 // Add 4 frames of data. |
196 buffer.Append( | 197 buffer.Append( |
197 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 128, 1, frames)); | 198 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 128, 1, frames)); |
198 | 199 |
199 // Read all 4 frames from the buffer. | 200 // Read all 4 frames from the buffer. |
200 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, frames); | 201 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, frames); |
201 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); | 202 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); |
202 EXPECT_EQ(0, buffer.frames()); | 203 EXPECT_EQ(0, buffer.frames()); |
203 VerifyBus(bus.get(), 0, frames, bus->frames(), 0, 1.0f / 127.0f); | 204 VerifyBus(bus.get(), 0, frames, bus->frames(), 0, 1.0f / 127.0f); |
204 } | 205 } |
205 | 206 |
206 TEST(AudioBufferQueueTest, ReadS16) { | 207 TEST(AudioBufferQueueTest, ReadS16) { |
207 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 208 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
208 const int channels = ChannelLayoutToChannelCount(channel_layout); | 209 const int channels = ChannelLayoutToChannelCount(channel_layout); |
209 AudioBufferQueue buffer; | 210 AudioBufferQueue buffer; |
210 | 211 |
211 // Add 24 frames of data. | 212 // Add 24 frames of data. |
212 buffer.Append( | 213 buffer.Append( |
213 MakeTestBuffer<int16_t>(kSampleFormatS16, channel_layout, 1, 1, 4)); | 214 MakeTestBuffer<int16_t>(kSampleFormatS16, channel_layout, 1, 1, 4)); |
214 buffer.Append( | 215 buffer.Append( |
215 MakeTestBuffer<int16_t>(kSampleFormatS16, channel_layout, 9, 1, 20)); | 216 MakeTestBuffer<int16_t>(kSampleFormatS16, channel_layout, 9, 1, 20)); |
216 EXPECT_EQ(24, buffer.frames()); | 217 EXPECT_EQ(24, buffer.frames()); |
217 | 218 |
218 // Read 6 frames from the buffer. | 219 // Read 6 frames from the buffer. |
219 const int frames = 6; | 220 const int frames = 6; |
220 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, buffer.frames()); | 221 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, buffer.frames()); |
221 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); | 222 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); |
222 EXPECT_EQ(18, buffer.frames()); | 223 EXPECT_EQ(18, buffer.frames()); |
223 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int16_t>::max(), | 224 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int16_t>::max(), |
224 1.0f / std::numeric_limits<int16_t>::max()); | 225 1.0f / std::numeric_limits<int16_t>::max()); |
225 VerifyBus(bus.get(), 4, 2, 20, 9.0f / std::numeric_limits<int16_t>::max(), | 226 VerifyBus(bus.get(), 4, 2, 20, 9.0f / std::numeric_limits<int16_t>::max(), |
226 1.0f / std::numeric_limits<int16_t>::max()); | 227 1.0f / std::numeric_limits<int16_t>::max()); |
227 } | 228 } |
228 | 229 |
229 TEST(AudioBufferQueueTest, ReadS32) { | 230 TEST(AudioBufferQueueTest, ReadS32) { |
230 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 231 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
231 const int channels = ChannelLayoutToChannelCount(channel_layout); | 232 const int channels = ChannelLayoutToChannelCount(channel_layout); |
232 AudioBufferQueue buffer; | 233 AudioBufferQueue buffer; |
233 | 234 |
234 // Add 24 frames of data. | 235 // Add 24 frames of data. |
235 buffer.Append( | 236 buffer.Append( |
236 MakeTestBuffer<int32_t>(kSampleFormatS32, channel_layout, 1, 1, 4)); | 237 MakeTestBuffer<int32_t>(kSampleFormatS32, channel_layout, 1, 1, 4)); |
237 buffer.Append( | 238 buffer.Append( |
238 MakeTestBuffer<int32_t>(kSampleFormatS32, channel_layout, 9, 1, 20)); | 239 MakeTestBuffer<int32_t>(kSampleFormatS32, channel_layout, 9, 1, 20)); |
239 EXPECT_EQ(24, buffer.frames()); | 240 EXPECT_EQ(24, buffer.frames()); |
240 | 241 |
241 // Read 6 frames from the buffer. | 242 // Read 6 frames from the buffer. |
242 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 243 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
243 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 244 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
244 EXPECT_EQ(18, buffer.frames()); | 245 EXPECT_EQ(18, buffer.frames()); |
245 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int32_t>::max(), | 246 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int32_t>::max(), |
246 1.0f / std::numeric_limits<int32_t>::max()); | 247 1.0f / std::numeric_limits<int32_t>::max()); |
247 VerifyBus(bus.get(), 4, 2, 20, 9.0f / std::numeric_limits<int32_t>::max(), | 248 VerifyBus(bus.get(), 4, 2, 20, 9.0f / std::numeric_limits<int32_t>::max(), |
248 1.0f / std::numeric_limits<int32_t>::max()); | 249 1.0f / std::numeric_limits<int32_t>::max()); |
249 | 250 |
250 // Read the next 2 frames. | 251 // Read the next 2 frames. |
251 EXPECT_EQ(2, buffer.ReadFrames(2, 0, bus.get())); | 252 EXPECT_EQ(2, buffer.ReadFrames(2, 0, bus.get())); |
252 EXPECT_EQ(16, buffer.frames()); | 253 EXPECT_EQ(16, buffer.frames()); |
253 VerifyBus(bus.get(), 0, 2, 20, 11.0f / std::numeric_limits<int32_t>::max(), | 254 VerifyBus(bus.get(), 0, 2, 20, 11.0f / std::numeric_limits<int32_t>::max(), |
254 1.0f / std::numeric_limits<int32_t>::max()); | 255 1.0f / std::numeric_limits<int32_t>::max()); |
255 } | 256 } |
256 | 257 |
257 TEST(AudioBufferQueueTest, ReadF32Planar) { | 258 TEST(AudioBufferQueueTest, ReadF32Planar) { |
258 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 259 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
259 const int channels = ChannelLayoutToChannelCount(channel_layout); | 260 const int channels = ChannelLayoutToChannelCount(channel_layout); |
260 AudioBufferQueue buffer; | 261 AudioBufferQueue buffer; |
261 | 262 |
262 // Add 14 frames of data. | 263 // Add 14 frames of data. |
263 buffer.Append(MakeTestBuffer<float>( | 264 buffer.Append(MakeTestBuffer<float>( |
264 kSampleFormatPlanarF32, channel_layout, 1.0f, 1.0f, 4)); | 265 kSampleFormatPlanarF32, channel_layout, 1.0f, 1.0f, 4)); |
265 buffer.Append(MakeTestBuffer<float>( | 266 buffer.Append(MakeTestBuffer<float>( |
266 kSampleFormatPlanarF32, channel_layout, 50.0f, 1.0f, 10)); | 267 kSampleFormatPlanarF32, channel_layout, 50.0f, 1.0f, 10)); |
267 EXPECT_EQ(14, buffer.frames()); | 268 EXPECT_EQ(14, buffer.frames()); |
268 | 269 |
269 // Read 6 frames from the buffer. | 270 // Read 6 frames from the buffer. |
270 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 271 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
271 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 272 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
272 EXPECT_EQ(8, buffer.frames()); | 273 EXPECT_EQ(8, buffer.frames()); |
273 VerifyBus(bus.get(), 0, 4, 4, 1, 1); | 274 VerifyBus(bus.get(), 0, 4, 4, 1, 1); |
274 VerifyBus(bus.get(), 4, 2, 10, 50, 1); | 275 VerifyBus(bus.get(), 4, 2, 10, 50, 1); |
275 } | 276 } |
276 | 277 |
277 TEST(AudioBufferQueueTest, ReadS16Planar) { | 278 TEST(AudioBufferQueueTest, ReadS16Planar) { |
278 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 279 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
279 const int channels = ChannelLayoutToChannelCount(channel_layout); | 280 const int channels = ChannelLayoutToChannelCount(channel_layout); |
280 AudioBufferQueue buffer; | 281 AudioBufferQueue buffer; |
281 | 282 |
282 // Add 24 frames of data. | 283 // Add 24 frames of data. |
283 buffer.Append( | 284 buffer.Append( |
284 MakeTestBuffer<int16_t>(kSampleFormatPlanarS16, channel_layout, 1, 1, 4)); | 285 MakeTestBuffer<int16_t>(kSampleFormatPlanarS16, channel_layout, 1, 1, 4)); |
285 buffer.Append(MakeTestBuffer<int16_t>(kSampleFormatPlanarS16, channel_layout, | 286 buffer.Append(MakeTestBuffer<int16_t>(kSampleFormatPlanarS16, channel_layout, |
286 5, 1, 20)); | 287 5, 1, 20)); |
287 EXPECT_EQ(24, buffer.frames()); | 288 EXPECT_EQ(24, buffer.frames()); |
288 | 289 |
289 // Read 6 frames from the buffer. | 290 // Read 6 frames from the buffer. |
290 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 291 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
291 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 292 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
292 EXPECT_EQ(18, buffer.frames()); | 293 EXPECT_EQ(18, buffer.frames()); |
293 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int16_t>::max(), | 294 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int16_t>::max(), |
294 1.0f / std::numeric_limits<int16_t>::max()); | 295 1.0f / std::numeric_limits<int16_t>::max()); |
295 VerifyBus(bus.get(), 4, 2, 20, 5.0f / std::numeric_limits<int16_t>::max(), | 296 VerifyBus(bus.get(), 4, 2, 20, 5.0f / std::numeric_limits<int16_t>::max(), |
296 1.0f / std::numeric_limits<int16_t>::max()); | 297 1.0f / std::numeric_limits<int16_t>::max()); |
297 } | 298 } |
298 | 299 |
299 TEST(AudioBufferQueueTest, ReadManyChannels) { | 300 TEST(AudioBufferQueueTest, ReadManyChannels) { |
300 const ChannelLayout channel_layout = CHANNEL_LAYOUT_OCTAGONAL; | 301 const ChannelLayout channel_layout = CHANNEL_LAYOUT_OCTAGONAL; |
301 const int channels = ChannelLayoutToChannelCount(channel_layout); | 302 const int channels = ChannelLayoutToChannelCount(channel_layout); |
302 AudioBufferQueue buffer; | 303 AudioBufferQueue buffer; |
303 | 304 |
304 // Add 76 frames of data. | 305 // Add 76 frames of data. |
305 buffer.Append( | 306 buffer.Append( |
306 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 0.0f, 1.0f, 6)); | 307 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 0.0f, 1.0f, 6)); |
307 buffer.Append(MakeTestBuffer<float>( | 308 buffer.Append(MakeTestBuffer<float>( |
308 kSampleFormatF32, channel_layout, 6.0f * channels, 1.0f, 10)); | 309 kSampleFormatF32, channel_layout, 6.0f * channels, 1.0f, 10)); |
309 buffer.Append(MakeTestBuffer<float>( | 310 buffer.Append(MakeTestBuffer<float>( |
310 kSampleFormatF32, channel_layout, 16.0f * channels, 1.0f, 60)); | 311 kSampleFormatF32, channel_layout, 16.0f * channels, 1.0f, 60)); |
311 EXPECT_EQ(76, buffer.frames()); | 312 EXPECT_EQ(76, buffer.frames()); |
312 | 313 |
313 // Read 3 frames from the buffer. | 314 // Read 3 frames from the buffer. |
314 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 315 std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
315 EXPECT_EQ(30, buffer.ReadFrames(30, 0, bus.get())); | 316 EXPECT_EQ(30, buffer.ReadFrames(30, 0, bus.get())); |
316 EXPECT_EQ(46, buffer.frames()); | 317 EXPECT_EQ(46, buffer.frames()); |
317 VerifyBus(bus.get(), 0, 6, 6, 0, 1); | 318 VerifyBus(bus.get(), 0, 6, 6, 0, 1); |
318 VerifyBus(bus.get(), 6, 10, 10, 6 * channels, 1); | 319 VerifyBus(bus.get(), 6, 10, 10, 6 * channels, 1); |
319 VerifyBus(bus.get(), 16, 14, 60, 16 * channels, 1); | 320 VerifyBus(bus.get(), 16, 14, 60, 16 * channels, 1); |
320 } | 321 } |
321 | 322 |
322 TEST(AudioBufferQueueTest, Peek) { | 323 TEST(AudioBufferQueueTest, Peek) { |
323 const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0; | 324 const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0; |
324 const int channels = ChannelLayoutToChannelCount(channel_layout); | 325 const int channels = ChannelLayoutToChannelCount(channel_layout); |
325 AudioBufferQueue buffer; | 326 AudioBufferQueue buffer; |
326 | 327 |
327 // Add 60 frames of data. | 328 // Add 60 frames of data. |
328 const int frames = 60; | 329 const int frames = 60; |
329 buffer.Append(MakeTestBuffer<float>( | 330 buffer.Append(MakeTestBuffer<float>( |
330 kSampleFormatF32, channel_layout, 0.0f, 1.0f, frames)); | 331 kSampleFormatF32, channel_layout, 0.0f, 1.0f, frames)); |
331 EXPECT_EQ(frames, buffer.frames()); | 332 EXPECT_EQ(frames, buffer.frames()); |
332 | 333 |
333 // Peek at the first 30 frames. | 334 // Peek at the first 30 frames. |
334 scoped_ptr<AudioBus> bus1 = AudioBus::Create(channels, frames); | 335 std::unique_ptr<AudioBus> bus1 = AudioBus::Create(channels, frames); |
335 EXPECT_EQ(frames, buffer.frames()); | 336 EXPECT_EQ(frames, buffer.frames()); |
336 EXPECT_EQ(frames, buffer.PeekFrames(60, 0, 0, bus1.get())); | 337 EXPECT_EQ(frames, buffer.PeekFrames(60, 0, 0, bus1.get())); |
337 EXPECT_EQ(30, buffer.PeekFrames(30, 0, 0, bus1.get())); | 338 EXPECT_EQ(30, buffer.PeekFrames(30, 0, 0, bus1.get())); |
338 EXPECT_EQ(frames, buffer.frames()); | 339 EXPECT_EQ(frames, buffer.frames()); |
339 VerifyBus(bus1.get(), 0, 30, bus1->frames(), 0, 1); | 340 VerifyBus(bus1.get(), 0, 30, bus1->frames(), 0, 1); |
340 | 341 |
341 // Now read the next 30 frames (which should be the same as those peeked at). | 342 // Now read the next 30 frames (which should be the same as those peeked at). |
342 scoped_ptr<AudioBus> bus2 = AudioBus::Create(channels, frames); | 343 std::unique_ptr<AudioBus> bus2 = AudioBus::Create(channels, frames); |
343 EXPECT_EQ(30, buffer.ReadFrames(30, 0, bus2.get())); | 344 EXPECT_EQ(30, buffer.ReadFrames(30, 0, bus2.get())); |
344 VerifyBus(bus2.get(), 0, 30, bus2->frames(), 0, 1); | 345 VerifyBus(bus2.get(), 0, 30, bus2->frames(), 0, 1); |
345 | 346 |
346 // Peek 10 frames forward | 347 // Peek 10 frames forward |
347 bus1->Zero(); | 348 bus1->Zero(); |
348 EXPECT_EQ(5, buffer.PeekFrames(5, 10, 0, bus1.get())); | 349 EXPECT_EQ(5, buffer.PeekFrames(5, 10, 0, bus1.get())); |
349 VerifyBus(bus1.get(), 0, 5, bus1->frames(), 40, 1); | 350 VerifyBus(bus1.get(), 0, 5, bus1->frames(), 40, 1); |
350 | 351 |
351 // Peek to the end of the buffer. | 352 // Peek to the end of the buffer. |
352 EXPECT_EQ(30, buffer.frames()); | 353 EXPECT_EQ(30, buffer.frames()); |
353 EXPECT_EQ(30, buffer.PeekFrames(60, 0, 0, bus1.get())); | 354 EXPECT_EQ(30, buffer.PeekFrames(60, 0, 0, bus1.get())); |
354 EXPECT_EQ(30, buffer.PeekFrames(30, 0, 0, bus1.get())); | 355 EXPECT_EQ(30, buffer.PeekFrames(30, 0, 0, bus1.get())); |
355 } | 356 } |
356 | 357 |
357 } // namespace media | 358 } // namespace media |
OLD | NEW |