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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/logging.h" | 6 #include "base/logging.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
9 #include "media/base/audio_buffer.h" | 9 #include "media/base/audio_buffer.h" |
10 #include "media/base/audio_buffer_queue.h" | 10 #include "media/base/audio_buffer_queue.h" |
11 #include "media/base/audio_bus.h" | 11 #include "media/base/audio_bus.h" |
12 #include "media/base/buffers.h" | 12 #include "media/base/buffers.h" |
13 #include "media/base/test_helpers.h" | 13 #include "media/base/test_helpers.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 namespace media { | 16 namespace media { |
17 | 17 |
18 const int kSampleRate = 44100; | 18 const int kSampleRate = 44100; |
19 | 19 |
20 static void VerifyBus(AudioBus* bus, | 20 static void VerifyBus(AudioBus* bus, |
21 int offset, | 21 int offset, |
22 int frames, | 22 int frames, |
23 int buffer_size, | 23 int buffer_size, |
24 float start, | 24 float start, |
25 float increment) { | 25 float increment) { |
26 for (int ch = 0; ch < bus->channels(); ++ch) { | 26 for (int ch = 0; ch < bus->channels(); ++ch) { |
27 const float v = start + ch * buffer_size * increment; | 27 const float v = start + ch * buffer_size * increment; |
28 for (int i = offset; i < frames; ++i) { | 28 for (int i = offset; i < offset + frames; ++i) { |
29 ASSERT_FLOAT_EQ(v + (i - offset) * increment, bus->channel(ch)[i]) | 29 ASSERT_FLOAT_EQ(v + (i - offset) * increment, bus->channel(ch)[i]) |
30 << "i=" << i << ", ch=" << ch; | 30 << "i=" << i << ", ch=" << ch; |
31 } | 31 } |
32 } | 32 } |
33 } | 33 } |
34 | 34 |
35 template <typename T> | 35 template <typename T> |
36 static scoped_refptr<AudioBuffer> MakeTestBuffer(SampleFormat format, | 36 static scoped_refptr<AudioBuffer> MakeTestBuffer(SampleFormat format, |
37 ChannelLayout channel_layout, | 37 ChannelLayout channel_layout, |
38 T start, | 38 T start, |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 } | 267 } |
268 | 268 |
269 TEST(AudioBufferQueueTest, ReadS16Planar) { | 269 TEST(AudioBufferQueueTest, ReadS16Planar) { |
270 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 270 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
271 const int channels = ChannelLayoutToChannelCount(channel_layout); | 271 const int channels = ChannelLayoutToChannelCount(channel_layout); |
272 AudioBufferQueue buffer; | 272 AudioBufferQueue buffer; |
273 | 273 |
274 // Add 24 frames of data. | 274 // Add 24 frames of data. |
275 buffer.Append( | 275 buffer.Append( |
276 MakeTestBuffer<int16>(kSampleFormatPlanarS16, channel_layout, 1, 1, 4)); | 276 MakeTestBuffer<int16>(kSampleFormatPlanarS16, channel_layout, 1, 1, 4)); |
277 buffer.Append(MakeTestBuffer<int16>( | 277 buffer.Append( |
278 kSampleFormatPlanarS16, channel_layout, 100, 5, 20)); | 278 MakeTestBuffer<int16>(kSampleFormatPlanarS16, channel_layout, 5, 1, 20)); |
279 EXPECT_EQ(24, buffer.frames()); | 279 EXPECT_EQ(24, buffer.frames()); |
280 | 280 |
281 // Read 6 frames from the buffer. | 281 // Read 6 frames from the buffer. |
282 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 282 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
283 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 283 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
284 EXPECT_EQ(18, buffer.frames()); | 284 EXPECT_EQ(18, buffer.frames()); |
285 VerifyBus(bus.get(), 0, 4, 4, 1.0f / kint16max, 1.0f / kint16max); | 285 VerifyBus(bus.get(), 0, 4, 4, 1.0f / kint16max, 1.0f / kint16max); |
286 VerifyBus(bus.get(), 4, 2, 20, 5.0f / kint16max, 1.0f / kint16max); | 286 VerifyBus(bus.get(), 4, 2, 20, 5.0f / kint16max, 1.0f / kint16max); |
287 } | 287 } |
288 | 288 |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 // Read all 10 frames in buffer2. | 459 // Read all 10 frames in buffer2. |
460 EXPECT_EQ(10, buffer.ReadFrames(10, 0, bus.get())); | 460 EXPECT_EQ(10, buffer.ReadFrames(10, 0, bus.get())); |
461 EXPECT_EQ(kNoTime, buffer.current_time()); | 461 EXPECT_EQ(kNoTime, buffer.current_time()); |
462 | 462 |
463 // Try to read more frames (which don't exist), timestamp should remain. | 463 // Try to read more frames (which don't exist), timestamp should remain. |
464 EXPECT_EQ(0, buffer.ReadFrames(5, 0, bus.get())); | 464 EXPECT_EQ(0, buffer.ReadFrames(5, 0, bus.get())); |
465 EXPECT_EQ(kNoTime, buffer.current_time()); | 465 EXPECT_EQ(kNoTime, buffer.current_time()); |
466 } | 466 } |
467 | 467 |
468 } // namespace media | 468 } // namespace media |
OLD | NEW |