| 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 <stdint.h> |
| 6 |
| 7 #include <limits> |
| 8 |
| 6 #include "base/logging.h" | 9 #include "base/logging.h" |
| 7 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/time/time.h" | 11 #include "base/time/time.h" |
| 9 #include "media/base/audio_buffer.h" | 12 #include "media/base/audio_buffer.h" |
| 10 #include "media/base/audio_buffer_queue.h" | 13 #include "media/base/audio_buffer_queue.h" |
| 11 #include "media/base/audio_bus.h" | 14 #include "media/base/audio_bus.h" |
| 12 #include "media/base/test_helpers.h" | 15 #include "media/base/test_helpers.h" |
| 13 #include "media/base/timestamp_constants.h" | 16 #include "media/base/timestamp_constants.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 18 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 46 step, | 49 step, |
| 47 frames, | 50 frames, |
| 48 kNoTimestamp()); | 51 kNoTimestamp()); |
| 49 } | 52 } |
| 50 | 53 |
| 51 TEST(AudioBufferQueueTest, AppendAndClear) { | 54 TEST(AudioBufferQueueTest, AppendAndClear) { |
| 52 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; | 55 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; |
| 53 AudioBufferQueue buffer; | 56 AudioBufferQueue buffer; |
| 54 EXPECT_EQ(0, buffer.frames()); | 57 EXPECT_EQ(0, buffer.frames()); |
| 55 buffer.Append( | 58 buffer.Append( |
| 56 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 59 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
| 57 EXPECT_EQ(8, buffer.frames()); | 60 EXPECT_EQ(8, buffer.frames()); |
| 58 buffer.Clear(); | 61 buffer.Clear(); |
| 59 EXPECT_EQ(0, buffer.frames()); | 62 EXPECT_EQ(0, buffer.frames()); |
| 60 buffer.Append( | 63 buffer.Append( |
| 61 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 20, 1, 8)); | 64 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 20, 1, 8)); |
| 62 EXPECT_EQ(8, buffer.frames()); | 65 EXPECT_EQ(8, buffer.frames()); |
| 63 } | 66 } |
| 64 | 67 |
| 65 TEST(AudioBufferQueueTest, MultipleAppend) { | 68 TEST(AudioBufferQueueTest, MultipleAppend) { |
| 66 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; | 69 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; |
| 67 AudioBufferQueue buffer; | 70 AudioBufferQueue buffer; |
| 68 buffer.Append( | 71 buffer.Append( |
| 69 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 72 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
| 70 EXPECT_EQ(8, buffer.frames()); | 73 EXPECT_EQ(8, buffer.frames()); |
| 71 buffer.Append( | 74 buffer.Append( |
| 72 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 75 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
| 73 EXPECT_EQ(16, buffer.frames()); | 76 EXPECT_EQ(16, buffer.frames()); |
| 74 buffer.Append( | 77 buffer.Append( |
| 75 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 78 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
| 76 EXPECT_EQ(24, buffer.frames()); | 79 EXPECT_EQ(24, buffer.frames()); |
| 77 buffer.Append( | 80 buffer.Append( |
| 78 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 81 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
| 79 EXPECT_EQ(32, buffer.frames()); | 82 EXPECT_EQ(32, buffer.frames()); |
| 80 buffer.Append( | 83 buffer.Append( |
| 81 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 10, 1, 8)); | 84 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 10, 1, 8)); |
| 82 EXPECT_EQ(40, buffer.frames()); | 85 EXPECT_EQ(40, buffer.frames()); |
| 83 } | 86 } |
| 84 | 87 |
| 85 TEST(AudioBufferQueueTest, IteratorCheck) { | 88 TEST(AudioBufferQueueTest, IteratorCheck) { |
| 86 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; | 89 const ChannelLayout channel_layout = CHANNEL_LAYOUT_MONO; |
| 87 const int channels = ChannelLayoutToChannelCount(channel_layout); | 90 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 88 AudioBufferQueue buffer; | 91 AudioBufferQueue buffer; |
| 89 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 92 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
| 90 | 93 |
| 91 // Append 40 frames in 5 buffers. Intersperse ReadFrames() to make the | 94 // Append 40 frames in 5 buffers. Intersperse ReadFrames() to make the |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 } | 187 } |
| 185 | 188 |
| 186 TEST(AudioBufferQueueTest, ReadU8) { | 189 TEST(AudioBufferQueueTest, ReadU8) { |
| 187 const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0; | 190 const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0; |
| 188 const int channels = ChannelLayoutToChannelCount(channel_layout); | 191 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 189 const int frames = 4; | 192 const int frames = 4; |
| 190 AudioBufferQueue buffer; | 193 AudioBufferQueue buffer; |
| 191 | 194 |
| 192 // Add 4 frames of data. | 195 // Add 4 frames of data. |
| 193 buffer.Append( | 196 buffer.Append( |
| 194 MakeTestBuffer<uint8>(kSampleFormatU8, channel_layout, 128, 1, frames)); | 197 MakeTestBuffer<uint8_t>(kSampleFormatU8, channel_layout, 128, 1, frames)); |
| 195 | 198 |
| 196 // Read all 4 frames from the buffer. | 199 // Read all 4 frames from the buffer. |
| 197 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, frames); | 200 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, frames); |
| 198 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); | 201 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); |
| 199 EXPECT_EQ(0, buffer.frames()); | 202 EXPECT_EQ(0, buffer.frames()); |
| 200 VerifyBus(bus.get(), 0, frames, bus->frames(), 0, 1.0f / 127.0f); | 203 VerifyBus(bus.get(), 0, frames, bus->frames(), 0, 1.0f / 127.0f); |
| 201 } | 204 } |
| 202 | 205 |
| 203 TEST(AudioBufferQueueTest, ReadS16) { | 206 TEST(AudioBufferQueueTest, ReadS16) { |
| 204 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 207 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
| 205 const int channels = ChannelLayoutToChannelCount(channel_layout); | 208 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 206 AudioBufferQueue buffer; | 209 AudioBufferQueue buffer; |
| 207 | 210 |
| 208 // Add 24 frames of data. | 211 // Add 24 frames of data. |
| 209 buffer.Append( | 212 buffer.Append( |
| 210 MakeTestBuffer<int16>(kSampleFormatS16, channel_layout, 1, 1, 4)); | 213 MakeTestBuffer<int16_t>(kSampleFormatS16, channel_layout, 1, 1, 4)); |
| 211 buffer.Append( | 214 buffer.Append( |
| 212 MakeTestBuffer<int16>(kSampleFormatS16, channel_layout, 9, 1, 20)); | 215 MakeTestBuffer<int16_t>(kSampleFormatS16, channel_layout, 9, 1, 20)); |
| 213 EXPECT_EQ(24, buffer.frames()); | 216 EXPECT_EQ(24, buffer.frames()); |
| 214 | 217 |
| 215 // Read 6 frames from the buffer. | 218 // Read 6 frames from the buffer. |
| 216 const int frames = 6; | 219 const int frames = 6; |
| 217 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, buffer.frames()); | 220 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, buffer.frames()); |
| 218 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); | 221 EXPECT_EQ(frames, buffer.ReadFrames(frames, 0, bus.get())); |
| 219 EXPECT_EQ(18, buffer.frames()); | 222 EXPECT_EQ(18, buffer.frames()); |
| 220 VerifyBus(bus.get(), 0, 4, 4, 1.0f / kint16max, 1.0f / kint16max); | 223 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int16_t>::max(), |
| 221 VerifyBus(bus.get(), 4, 2, 20, 9.0f / kint16max, 1.0f / kint16max); | 224 1.0f / std::numeric_limits<int16_t>::max()); |
| 225 VerifyBus(bus.get(), 4, 2, 20, 9.0f / std::numeric_limits<int16_t>::max(), |
| 226 1.0f / std::numeric_limits<int16_t>::max()); |
| 222 } | 227 } |
| 223 | 228 |
| 224 TEST(AudioBufferQueueTest, ReadS32) { | 229 TEST(AudioBufferQueueTest, ReadS32) { |
| 225 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 230 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
| 226 const int channels = ChannelLayoutToChannelCount(channel_layout); | 231 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 227 AudioBufferQueue buffer; | 232 AudioBufferQueue buffer; |
| 228 | 233 |
| 229 // Add 24 frames of data. | 234 // Add 24 frames of data. |
| 230 buffer.Append( | 235 buffer.Append( |
| 231 MakeTestBuffer<int32>(kSampleFormatS32, channel_layout, 1, 1, 4)); | 236 MakeTestBuffer<int32_t>(kSampleFormatS32, channel_layout, 1, 1, 4)); |
| 232 buffer.Append( | 237 buffer.Append( |
| 233 MakeTestBuffer<int32>(kSampleFormatS32, channel_layout, 9, 1, 20)); | 238 MakeTestBuffer<int32_t>(kSampleFormatS32, channel_layout, 9, 1, 20)); |
| 234 EXPECT_EQ(24, buffer.frames()); | 239 EXPECT_EQ(24, buffer.frames()); |
| 235 | 240 |
| 236 // Read 6 frames from the buffer. | 241 // Read 6 frames from the buffer. |
| 237 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 242 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
| 238 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 243 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
| 239 EXPECT_EQ(18, buffer.frames()); | 244 EXPECT_EQ(18, buffer.frames()); |
| 240 VerifyBus(bus.get(), 0, 4, 4, 1.0f / kint32max, 1.0f / kint32max); | 245 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int32_t>::max(), |
| 241 VerifyBus(bus.get(), 4, 2, 20, 9.0f / kint32max, 1.0f / kint32max); | 246 1.0f / std::numeric_limits<int32_t>::max()); |
| 247 VerifyBus(bus.get(), 4, 2, 20, 9.0f / std::numeric_limits<int32_t>::max(), |
| 248 1.0f / std::numeric_limits<int32_t>::max()); |
| 242 | 249 |
| 243 // Read the next 2 frames. | 250 // Read the next 2 frames. |
| 244 EXPECT_EQ(2, buffer.ReadFrames(2, 0, bus.get())); | 251 EXPECT_EQ(2, buffer.ReadFrames(2, 0, bus.get())); |
| 245 EXPECT_EQ(16, buffer.frames()); | 252 EXPECT_EQ(16, buffer.frames()); |
| 246 VerifyBus(bus.get(), 0, 2, 20, 11.0f / kint32max, 1.0f / kint32max); | 253 VerifyBus(bus.get(), 0, 2, 20, 11.0f / std::numeric_limits<int32_t>::max(), |
| 254 1.0f / std::numeric_limits<int32_t>::max()); |
| 247 } | 255 } |
| 248 | 256 |
| 249 TEST(AudioBufferQueueTest, ReadF32Planar) { | 257 TEST(AudioBufferQueueTest, ReadF32Planar) { |
| 250 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 258 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
| 251 const int channels = ChannelLayoutToChannelCount(channel_layout); | 259 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 252 AudioBufferQueue buffer; | 260 AudioBufferQueue buffer; |
| 253 | 261 |
| 254 // Add 14 frames of data. | 262 // Add 14 frames of data. |
| 255 buffer.Append(MakeTestBuffer<float>( | 263 buffer.Append(MakeTestBuffer<float>( |
| 256 kSampleFormatPlanarF32, channel_layout, 1.0f, 1.0f, 4)); | 264 kSampleFormatPlanarF32, channel_layout, 1.0f, 1.0f, 4)); |
| 257 buffer.Append(MakeTestBuffer<float>( | 265 buffer.Append(MakeTestBuffer<float>( |
| 258 kSampleFormatPlanarF32, channel_layout, 50.0f, 1.0f, 10)); | 266 kSampleFormatPlanarF32, channel_layout, 50.0f, 1.0f, 10)); |
| 259 EXPECT_EQ(14, buffer.frames()); | 267 EXPECT_EQ(14, buffer.frames()); |
| 260 | 268 |
| 261 // Read 6 frames from the buffer. | 269 // Read 6 frames from the buffer. |
| 262 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 270 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
| 263 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 271 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
| 264 EXPECT_EQ(8, buffer.frames()); | 272 EXPECT_EQ(8, buffer.frames()); |
| 265 VerifyBus(bus.get(), 0, 4, 4, 1, 1); | 273 VerifyBus(bus.get(), 0, 4, 4, 1, 1); |
| 266 VerifyBus(bus.get(), 4, 2, 10, 50, 1); | 274 VerifyBus(bus.get(), 4, 2, 10, 50, 1); |
| 267 } | 275 } |
| 268 | 276 |
| 269 TEST(AudioBufferQueueTest, ReadS16Planar) { | 277 TEST(AudioBufferQueueTest, ReadS16Planar) { |
| 270 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 278 const ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
| 271 const int channels = ChannelLayoutToChannelCount(channel_layout); | 279 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 272 AudioBufferQueue buffer; | 280 AudioBufferQueue buffer; |
| 273 | 281 |
| 274 // Add 24 frames of data. | 282 // Add 24 frames of data. |
| 275 buffer.Append( | 283 buffer.Append( |
| 276 MakeTestBuffer<int16>(kSampleFormatPlanarS16, channel_layout, 1, 1, 4)); | 284 MakeTestBuffer<int16_t>(kSampleFormatPlanarS16, channel_layout, 1, 1, 4)); |
| 277 buffer.Append( | 285 buffer.Append(MakeTestBuffer<int16_t>(kSampleFormatPlanarS16, channel_layout, |
| 278 MakeTestBuffer<int16>(kSampleFormatPlanarS16, channel_layout, 5, 1, 20)); | 286 5, 1, 20)); |
| 279 EXPECT_EQ(24, buffer.frames()); | 287 EXPECT_EQ(24, buffer.frames()); |
| 280 | 288 |
| 281 // Read 6 frames from the buffer. | 289 // Read 6 frames from the buffer. |
| 282 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); | 290 scoped_ptr<AudioBus> bus = AudioBus::Create(channels, 100); |
| 283 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); | 291 EXPECT_EQ(6, buffer.ReadFrames(6, 0, bus.get())); |
| 284 EXPECT_EQ(18, buffer.frames()); | 292 EXPECT_EQ(18, buffer.frames()); |
| 285 VerifyBus(bus.get(), 0, 4, 4, 1.0f / kint16max, 1.0f / kint16max); | 293 VerifyBus(bus.get(), 0, 4, 4, 1.0f / std::numeric_limits<int16_t>::max(), |
| 286 VerifyBus(bus.get(), 4, 2, 20, 5.0f / kint16max, 1.0f / kint16max); | 294 1.0f / std::numeric_limits<int16_t>::max()); |
| 295 VerifyBus(bus.get(), 4, 2, 20, 5.0f / std::numeric_limits<int16_t>::max(), |
| 296 1.0f / std::numeric_limits<int16_t>::max()); |
| 287 } | 297 } |
| 288 | 298 |
| 289 TEST(AudioBufferQueueTest, ReadManyChannels) { | 299 TEST(AudioBufferQueueTest, ReadManyChannels) { |
| 290 const ChannelLayout channel_layout = CHANNEL_LAYOUT_OCTAGONAL; | 300 const ChannelLayout channel_layout = CHANNEL_LAYOUT_OCTAGONAL; |
| 291 const int channels = ChannelLayoutToChannelCount(channel_layout); | 301 const int channels = ChannelLayoutToChannelCount(channel_layout); |
| 292 AudioBufferQueue buffer; | 302 AudioBufferQueue buffer; |
| 293 | 303 |
| 294 // Add 76 frames of data. | 304 // Add 76 frames of data. |
| 295 buffer.Append( | 305 buffer.Append( |
| 296 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 0.0f, 1.0f, 6)); | 306 MakeTestBuffer<float>(kSampleFormatF32, channel_layout, 0.0f, 1.0f, 6)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 EXPECT_EQ(5, buffer.PeekFrames(5, 10, 0, bus1.get())); | 348 EXPECT_EQ(5, buffer.PeekFrames(5, 10, 0, bus1.get())); |
| 339 VerifyBus(bus1.get(), 0, 5, bus1->frames(), 40, 1); | 349 VerifyBus(bus1.get(), 0, 5, bus1->frames(), 40, 1); |
| 340 | 350 |
| 341 // Peek to the end of the buffer. | 351 // Peek to the end of the buffer. |
| 342 EXPECT_EQ(30, buffer.frames()); | 352 EXPECT_EQ(30, buffer.frames()); |
| 343 EXPECT_EQ(30, buffer.PeekFrames(60, 0, 0, bus1.get())); | 353 EXPECT_EQ(30, buffer.PeekFrames(60, 0, 0, bus1.get())); |
| 344 EXPECT_EQ(30, buffer.PeekFrames(30, 0, 0, bus1.get())); | 354 EXPECT_EQ(30, buffer.PeekFrames(30, 0, 0, bus1.get())); |
| 345 } | 355 } |
| 346 | 356 |
| 347 } // namespace media | 357 } // namespace media |
| OLD | NEW |