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

Side by Side Diff: media/audio/alsa/alsa_output_unittest.cc

Issue 2101303004: Pass delay and timestamp to AudioSourceCallback::OnMoreData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Fix Mac CQ errors. Created 4 years, 2 months 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 // 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h"
8 #include "base/run_loop.h" 9 #include "base/run_loop.h"
9 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
11 #include "base/test/simple_test_tick_clock.h"
10 #include "base/test/test_message_loop.h" 12 #include "base/test/test_message_loop.h"
11 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
14 #include "base/time/time.h"
12 #include "media/audio/alsa/alsa_output.h" 15 #include "media/audio/alsa/alsa_output.h"
13 #include "media/audio/alsa/alsa_wrapper.h" 16 #include "media/audio/alsa/alsa_wrapper.h"
14 #include "media/audio/alsa/audio_manager_alsa.h" 17 #include "media/audio/alsa/audio_manager_alsa.h"
15 #include "media/audio/fake_audio_log_factory.h" 18 #include "media/audio/fake_audio_log_factory.h"
16 #include "media/audio/mock_audio_source_callback.h" 19 #include "media/audio/mock_audio_source_callback.h"
20 #include "media/base/audio_timestamp_helper.h"
17 #include "media/base/data_buffer.h" 21 #include "media/base/data_buffer.h"
18 #include "media/base/seekable_buffer.h" 22 #include "media/base/seekable_buffer.h"
19 #include "testing/gmock/include/gmock/gmock.h" 23 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
21 25
22 using testing::_; 26 using testing::_;
23 using testing::AllOf; 27 using testing::AllOf;
24 using testing::AtLeast; 28 using testing::AtLeast;
25 using testing::DoAll; 29 using testing::DoAll;
26 using testing::Field; 30 using testing::Field;
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 char AlsaPcmOutputStreamTest::kSurround51[] = "surround51:CARD=foo,DEV=0"; 212 char AlsaPcmOutputStreamTest::kSurround51[] = "surround51:CARD=foo,DEV=0";
209 char AlsaPcmOutputStreamTest::kSurround70[] = "surround70:CARD=foo,DEV=0"; 213 char AlsaPcmOutputStreamTest::kSurround70[] = "surround70:CARD=foo,DEV=0";
210 char AlsaPcmOutputStreamTest::kSurround71[] = "surround71:CARD=foo,DEV=0"; 214 char AlsaPcmOutputStreamTest::kSurround71[] = "surround71:CARD=foo,DEV=0";
211 void* AlsaPcmOutputStreamTest::kFakeHints[] = { 215 void* AlsaPcmOutputStreamTest::kFakeHints[] = {
212 kSurround40, kSurround41, kSurround50, kSurround51, 216 kSurround40, kSurround41, kSurround50, kSurround51,
213 kSurround70, kSurround71, NULL }; 217 kSurround70, kSurround71, NULL };
214 char AlsaPcmOutputStreamTest::kGenericSurround50[] = "surround50"; 218 char AlsaPcmOutputStreamTest::kGenericSurround50[] = "surround50";
215 219
216 // Custom action to clear a memory buffer. 220 // Custom action to clear a memory buffer.
217 ACTION(ClearBuffer) { 221 ACTION(ClearBuffer) {
218 arg0->Zero(); 222 arg3->Zero();
219 } 223 }
220 224
221 TEST_F(AlsaPcmOutputStreamTest, ConstructedState) { 225 TEST_F(AlsaPcmOutputStreamTest, ConstructedState) {
222 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout); 226 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
223 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state()); 227 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state());
224 test_stream->Close(); 228 test_stream->Close();
225 229
226 // Should support mono. 230 // Should support mono.
227 test_stream = CreateStream(CHANNEL_LAYOUT_MONO); 231 test_stream = CreateStream(CHANNEL_LAYOUT_MONO);
228 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state()); 232 EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream->state());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)).WillOnce(Return(0)); 278 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)).WillOnce(Return(0));
275 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) 279 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
276 .WillOnce(Return(kTestDeviceName)); 280 .WillOnce(Return(kTestDeviceName));
277 test_stream->Close(); 281 test_stream->Close();
278 282
279 Mock::VerifyAndClear(&mock_alsa_wrapper_); 283 Mock::VerifyAndClear(&mock_alsa_wrapper_);
280 Mock::VerifyAndClear(mock_manager_.get()); 284 Mock::VerifyAndClear(mock_manager_.get());
281 285
282 // Test that having more packets ends up with a latency based on packet size. 286 // Test that having more packets ends up with a latency based on packet size.
283 const int kOverMinLatencyPacketSize = kPacketFramesInMinLatency + 1; 287 const int kOverMinLatencyPacketSize = kPacketFramesInMinLatency + 1;
284 int64_t expected_micros = AlsaPcmOutputStream::FramesToTimeDelta( 288 int64_t expected_micros = AudioTimestampHelper::FramesToTime(
285 kOverMinLatencyPacketSize * 2, kTestSampleRate) 289 kOverMinLatencyPacketSize * 2, kTestSampleRate)
286 .InMicroseconds(); 290 .InMicroseconds();
287 291
288 EXPECT_CALL(mock_alsa_wrapper_, PcmOpen(_, _, _, _)) 292 EXPECT_CALL(mock_alsa_wrapper_, PcmOpen(_, _, _, _))
289 .WillOnce(DoAll(SetArgumentPointee<0>(kFakeHandle), Return(0))); 293 .WillOnce(DoAll(SetArgumentPointee<0>(kFakeHandle), Return(0)));
290 EXPECT_CALL(mock_alsa_wrapper_, 294 EXPECT_CALL(mock_alsa_wrapper_,
291 PcmSetParams(_, _, _, _, _, _, expected_micros)) 295 PcmSetParams(_, _, _, _, _, _, expected_micros))
292 .WillOnce(Return(0)); 296 .WillOnce(Return(0));
293 EXPECT_CALL(mock_alsa_wrapper_, PcmGetParams(_, _, _)) 297 EXPECT_CALL(mock_alsa_wrapper_, PcmGetParams(_, _, _))
294 .WillOnce(DoAll(SetArgumentPointee<1>(kTestFramesPerPacket), 298 .WillOnce(DoAll(SetArgumentPointee<1>(kTestFramesPerPacket),
295 SetArgumentPointee<2>(kTestFramesPerPacket / 2), 299 SetArgumentPointee<2>(kTestFramesPerPacket / 2),
296 Return(0))); 300 Return(0)));
297 301
298 test_stream = CreateStream(kTestChannelLayout, 302 test_stream = CreateStream(kTestChannelLayout,
299 kOverMinLatencyPacketSize); 303 kOverMinLatencyPacketSize);
300 ASSERT_TRUE(test_stream->Open()); 304 ASSERT_TRUE(test_stream->Open());
301 305
302 // Now close it and test that everything was released. 306 // Now close it and test that everything was released.
303 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) 307 EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle))
304 .WillOnce(Return(0)); 308 .WillOnce(Return(0));
305 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) 309 EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle))
306 .WillOnce(Return(kTestDeviceName)); 310 .WillOnce(Return(kTestDeviceName));
307 test_stream->Close(); 311 test_stream->Close();
308 312
309 Mock::VerifyAndClear(&mock_alsa_wrapper_); 313 Mock::VerifyAndClear(&mock_alsa_wrapper_);
310 Mock::VerifyAndClear(mock_manager_.get()); 314 Mock::VerifyAndClear(mock_manager_.get());
311 } 315 }
312 316
313 TEST_F(AlsaPcmOutputStreamTest, OpenClose) { 317 TEST_F(AlsaPcmOutputStreamTest, OpenClose) {
314 int64_t expected_micros = AlsaPcmOutputStream::FramesToTimeDelta( 318 int64_t expected_micros = AudioTimestampHelper::FramesToTime(
315 2 * kTestFramesPerPacket, kTestSampleRate) 319 2 * kTestFramesPerPacket, kTestSampleRate)
316 .InMicroseconds(); 320 .InMicroseconds();
317 321
318 // Open() call opens the playback device, sets the parameters, posts a task 322 // Open() call opens the playback device, sets the parameters, posts a task
319 // with the resulting configuration data, and transitions the object state to 323 // with the resulting configuration data, and transitions the object state to
320 // kIsOpened. 324 // kIsOpened.
321 EXPECT_CALL(mock_alsa_wrapper_, 325 EXPECT_CALL(mock_alsa_wrapper_,
322 PcmOpen(_, StrEq(kTestDeviceName), 326 PcmOpen(_, StrEq(kTestDeviceName),
323 SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK)) 327 SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK))
324 .WillOnce(DoAll(SetArgumentPointee<0>(kFakeHandle), 328 .WillOnce(DoAll(SetArgumentPointee<0>(kFakeHandle),
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 EXPECT_CALL(mock_alsa_wrapper_, PcmSetParams(_, _, _, _, _, _, _)) 416 EXPECT_CALL(mock_alsa_wrapper_, PcmSetParams(_, _, _, _, _, _, _))
413 .WillOnce(Return(0)); 417 .WillOnce(Return(0));
414 EXPECT_CALL(mock_alsa_wrapper_, PcmGetParams(_, _, _)) 418 EXPECT_CALL(mock_alsa_wrapper_, PcmGetParams(_, _, _))
415 .WillOnce(DoAll(SetArgumentPointee<1>(kTestFramesPerPacket), 419 .WillOnce(DoAll(SetArgumentPointee<1>(kTestFramesPerPacket),
416 SetArgumentPointee<2>(kTestFramesPerPacket / 2), 420 SetArgumentPointee<2>(kTestFramesPerPacket / 2),
417 Return(0))); 421 Return(0)));
418 422
419 // Open the stream. 423 // Open the stream.
420 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout); 424 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
421 ASSERT_TRUE(test_stream->Open()); 425 ASSERT_TRUE(test_stream->Open());
426 base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
427 tick_clock->SetNowTicks(base::TimeTicks::Now());
428 test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
422 429
423 // Expect Device setup. 430 // Expect Device setup.
424 EXPECT_CALL(mock_alsa_wrapper_, PcmDrop(kFakeHandle)) 431 EXPECT_CALL(mock_alsa_wrapper_, PcmDrop(kFakeHandle))
425 .WillOnce(Return(0)); 432 .WillOnce(Return(0));
426 EXPECT_CALL(mock_alsa_wrapper_, PcmPrepare(kFakeHandle)) 433 EXPECT_CALL(mock_alsa_wrapper_, PcmPrepare(kFakeHandle))
427 .WillOnce(Return(0)); 434 .WillOnce(Return(0));
428 435
429 // Expect the pre-roll. 436 // Expect the pre-roll.
430 MockAudioSourceCallback mock_callback; 437 MockAudioSourceCallback mock_callback;
431 EXPECT_CALL(mock_alsa_wrapper_, PcmState(kFakeHandle)) 438 EXPECT_CALL(mock_alsa_wrapper_, PcmState(kFakeHandle))
432 .WillRepeatedly(Return(SND_PCM_STATE_RUNNING)); 439 .WillRepeatedly(Return(SND_PCM_STATE_RUNNING));
433 EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(kFakeHandle, _)) 440 EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(kFakeHandle, _))
434 .WillRepeatedly(DoAll(SetArgumentPointee<1>(0), Return(0))); 441 .WillRepeatedly(DoAll(SetArgumentPointee<1>(0), Return(0)));
435 EXPECT_CALL(mock_callback, OnMoreData(_, _, 0)) 442 EXPECT_CALL(mock_callback,
443 OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
436 .WillRepeatedly(DoAll(ClearBuffer(), Return(kTestFramesPerPacket))); 444 .WillRepeatedly(DoAll(ClearBuffer(), Return(kTestFramesPerPacket)));
437 EXPECT_CALL(mock_alsa_wrapper_, PcmWritei(kFakeHandle, _, _)) 445 EXPECT_CALL(mock_alsa_wrapper_, PcmWritei(kFakeHandle, _, _))
438 .WillRepeatedly(Return(kTestFramesPerPacket)); 446 .WillRepeatedly(Return(kTestFramesPerPacket));
439 447
440 // Expect scheduling. 448 // Expect scheduling.
441 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(kFakeHandle)) 449 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(kFakeHandle))
442 .Times(AtLeast(2)) 450 .Times(AtLeast(2))
443 .WillRepeatedly(Return(kTestFramesPerPacket)); 451 .WillRepeatedly(Return(kTestFramesPerPacket));
444 452
445 test_stream->Start(&mock_callback); 453 test_stream->Start(&mock_callback);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 584
577 // No expectations set on the strict mock because nothing should be called. 585 // No expectations set on the strict mock because nothing should be called.
578 test_stream->stop_stream_ = true; 586 test_stream->stop_stream_ = true;
579 test_stream->WritePacket(); 587 test_stream->WritePacket();
580 EXPECT_EQ(0, test_stream->buffer_->forward_bytes()); 588 EXPECT_EQ(0, test_stream->buffer_->forward_bytes());
581 test_stream->Close(); 589 test_stream->Close();
582 } 590 }
583 591
584 TEST_F(AlsaPcmOutputStreamTest, BufferPacket) { 592 TEST_F(AlsaPcmOutputStreamTest, BufferPacket) {
585 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout); 593 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
594 base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
595 tick_clock->SetNowTicks(base::TimeTicks::Now());
596 test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
586 InitBuffer(test_stream); 597 InitBuffer(test_stream);
587 test_stream->buffer_->Clear(); 598 test_stream->buffer_->Clear();
588 599
589 MockAudioSourceCallback mock_callback; 600 MockAudioSourceCallback mock_callback;
590 EXPECT_CALL(mock_alsa_wrapper_, PcmState(_)) 601 EXPECT_CALL(mock_alsa_wrapper_, PcmState(_))
591 .WillOnce(Return(SND_PCM_STATE_RUNNING)); 602 .WillOnce(Return(SND_PCM_STATE_RUNNING));
592 EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(_, _)) 603 EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(_, _))
593 .WillOnce(DoAll(SetArgumentPointee<1>(1), Return(0))); 604 .WillOnce(DoAll(SetArgumentPointee<1>(1), Return(0)));
594 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_)) 605 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_))
595 .WillRepeatedly(Return(0)); // Buffer is full. 606 .WillRepeatedly(Return(0)); // Buffer is full.
596 607
597 // Return a partially filled packet. 608 // Return a partially filled packet.
598 EXPECT_CALL(mock_callback, OnMoreData(_, _, 0)) 609 EXPECT_CALL(mock_callback,
610 OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
599 .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2))); 611 .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2)));
600 612
601 bool source_exhausted; 613 bool source_exhausted;
602 test_stream->set_source_callback(&mock_callback); 614 test_stream->set_source_callback(&mock_callback);
603 test_stream->packet_size_ = kTestPacketSize; 615 test_stream->packet_size_ = kTestPacketSize;
604 test_stream->BufferPacket(&source_exhausted); 616 test_stream->BufferPacket(&source_exhausted);
605 617
606 EXPECT_EQ(kTestPacketSize / 2, test_stream->buffer_->forward_bytes()); 618 EXPECT_EQ(kTestPacketSize / 2, test_stream->buffer_->forward_bytes());
607 EXPECT_FALSE(source_exhausted); 619 EXPECT_FALSE(source_exhausted);
608 test_stream->Close(); 620 test_stream->Close();
609 } 621 }
610 622
611 TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Negative) { 623 TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Negative) {
612 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout); 624 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
625 base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
626 tick_clock->SetNowTicks(base::TimeTicks::Now());
627 test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
613 InitBuffer(test_stream); 628 InitBuffer(test_stream);
614 test_stream->buffer_->Clear(); 629 test_stream->buffer_->Clear();
615 630
616 // Simulate where the underrun has occurred right after checking the delay. 631 // Simulate where the underrun has occurred right after checking the delay.
617 MockAudioSourceCallback mock_callback; 632 MockAudioSourceCallback mock_callback;
618 EXPECT_CALL(mock_alsa_wrapper_, PcmState(_)) 633 EXPECT_CALL(mock_alsa_wrapper_, PcmState(_))
619 .WillOnce(Return(SND_PCM_STATE_RUNNING)); 634 .WillOnce(Return(SND_PCM_STATE_RUNNING));
620 EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(_, _)) 635 EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(_, _))
621 .WillOnce(DoAll(SetArgumentPointee<1>(-1), Return(0))); 636 .WillOnce(DoAll(SetArgumentPointee<1>(-1), Return(0)));
622 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_)) 637 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_))
623 .WillRepeatedly(Return(0)); // Buffer is full. 638 .WillRepeatedly(Return(0)); // Buffer is full.
624 EXPECT_CALL(mock_callback, OnMoreData(_, _, 0)) 639 EXPECT_CALL(mock_callback,
640 OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
625 .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2))); 641 .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2)));
626 642
627 bool source_exhausted; 643 bool source_exhausted;
628 test_stream->set_source_callback(&mock_callback); 644 test_stream->set_source_callback(&mock_callback);
629 test_stream->packet_size_ = kTestPacketSize; 645 test_stream->packet_size_ = kTestPacketSize;
630 test_stream->BufferPacket(&source_exhausted); 646 test_stream->BufferPacket(&source_exhausted);
631 647
632 EXPECT_EQ(kTestPacketSize / 2, test_stream->buffer_->forward_bytes()); 648 EXPECT_EQ(kTestPacketSize / 2, test_stream->buffer_->forward_bytes());
633 EXPECT_FALSE(source_exhausted); 649 EXPECT_FALSE(source_exhausted);
634 test_stream->Close(); 650 test_stream->Close();
635 } 651 }
636 652
637 TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Underrun) { 653 TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Underrun) {
638 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout); 654 AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
655 base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
656 tick_clock->SetNowTicks(base::TimeTicks::Now());
657 test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
639 InitBuffer(test_stream); 658 InitBuffer(test_stream);
640 test_stream->buffer_->Clear(); 659 test_stream->buffer_->Clear();
641 660
642 // If ALSA has underrun then we should assume a delay of zero. 661 // If ALSA has underrun then we should assume a delay of zero.
643 MockAudioSourceCallback mock_callback; 662 MockAudioSourceCallback mock_callback;
644 EXPECT_CALL(mock_alsa_wrapper_, PcmState(_)) 663 EXPECT_CALL(mock_alsa_wrapper_, PcmState(_))
645 .WillOnce(Return(SND_PCM_STATE_XRUN)); 664 .WillOnce(Return(SND_PCM_STATE_XRUN));
646 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_)) 665 EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_))
647 .WillRepeatedly(Return(0)); // Buffer is full. 666 .WillRepeatedly(Return(0)); // Buffer is full.
648 EXPECT_CALL(mock_callback, OnMoreData(_, 0, 0)) 667 EXPECT_CALL(mock_callback,
668 OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
649 .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2))); 669 .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2)));
650 670
651 bool source_exhausted; 671 bool source_exhausted;
652 test_stream->set_source_callback(&mock_callback); 672 test_stream->set_source_callback(&mock_callback);
653 test_stream->packet_size_ = kTestPacketSize; 673 test_stream->packet_size_ = kTestPacketSize;
654 test_stream->BufferPacket(&source_exhausted); 674 test_stream->BufferPacket(&source_exhausted);
655 675
656 EXPECT_EQ(kTestPacketSize / 2, test_stream->buffer_->forward_bytes()); 676 EXPECT_EQ(kTestPacketSize / 2, test_stream->buffer_->forward_bytes());
657 EXPECT_FALSE(source_exhausted); 677 EXPECT_FALSE(source_exhausted);
658 test_stream->Close(); 678 test_stream->Close();
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 878
859 // TODO(ajwong): Find a way to test whether or not another task has been 879 // TODO(ajwong): Find a way to test whether or not another task has been
860 // posted so we can verify that the Alsa code will indeed break the task 880 // posted so we can verify that the Alsa code will indeed break the task
861 // posting loop. 881 // posting loop.
862 882
863 test_stream->TransitionTo(AlsaPcmOutputStream::kIsClosed); 883 test_stream->TransitionTo(AlsaPcmOutputStream::kIsClosed);
864 test_stream->Close(); 884 test_stream->Close();
865 } 885 }
866 886
867 } // namespace media 887 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698