| Index: media/filters/audio_renderer_impl_unittest.cc
|
| diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc
|
| index ef215a0ab94acf7cfe7a8b96a2638e42a8f4b22f..f76da20edac829d19f0647e18d19fd8dc29d9c0e 100644
|
| --- a/media/filters/audio_renderer_impl_unittest.cc
|
| +++ b/media/filters/audio_renderer_impl_unittest.cc
|
| @@ -64,8 +64,8 @@ class AudioRendererImplTest : public ::testing::Test {
|
| demuxer_stream_.set_audio_decoder_config(audio_config);
|
|
|
| // Used to save callbacks and run them at a later time.
|
| - EXPECT_CALL(*decoder_, Read(_))
|
| - .WillRepeatedly(Invoke(this, &AudioRendererImplTest::ReadDecoder));
|
| + EXPECT_CALL(*decoder_, Decode(_, _))
|
| + .WillRepeatedly(Invoke(this, &AudioRendererImplTest::DecodeDecoder));
|
|
|
| EXPECT_CALL(*decoder_, Reset(_))
|
| .WillRepeatedly(Invoke(this, &AudioRendererImplTest::ResetDecoder));
|
| @@ -81,6 +81,10 @@ class AudioRendererImplTest : public ::testing::Test {
|
| EXPECT_CALL(*decoder_, samples_per_second())
|
| .WillRepeatedly(Return(audio_config.samples_per_second()));
|
|
|
| + // Mock out demuxer reads
|
| + EXPECT_CALL(demuxer_stream_, Read(_)).WillRepeatedly(
|
| + RunCallback<0>(DemuxerStream::kOk, DecoderBuffer::CreateEOSBuffer()));
|
| +
|
| ScopedVector<AudioDecoder> decoders;
|
| decoders.push_back(decoder_);
|
| sink_ = new FakeAudioRendererSink();
|
| @@ -105,7 +109,7 @@ class AudioRendererImplTest : public ::testing::Test {
|
| }
|
|
|
| void ExpectUnsupportedAudioDecoder() {
|
| - EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + EXPECT_CALL(*decoder_, Initialize(_, _))
|
| .WillOnce(RunCallback<1>(DECODER_ERROR_NOT_SUPPORTED));
|
| }
|
|
|
| @@ -116,7 +120,7 @@ class AudioRendererImplTest : public ::testing::Test {
|
| .WillRepeatedly(Return(CHANNEL_LAYOUT_UNSUPPORTED));
|
| EXPECT_CALL(*decoder_, samples_per_second())
|
| .WillRepeatedly(Return(0));
|
| - EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + EXPECT_CALL(*decoder_, Initialize(_, _))
|
| .WillOnce(RunCallback<1>(PIPELINE_OK));
|
| }
|
|
|
| @@ -130,7 +134,7 @@ class AudioRendererImplTest : public ::testing::Test {
|
| }
|
|
|
| void Initialize() {
|
| - EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + EXPECT_CALL(*decoder_, Initialize(_, _))
|
| .WillOnce(RunCallback<1>(PIPELINE_OK));
|
| InitializeWithStatus(PIPELINE_OK);
|
|
|
| @@ -159,11 +163,11 @@ class AudioRendererImplTest : public ::testing::Test {
|
| event.RunAndWaitForStatus(expected);
|
|
|
| // We should have no reads.
|
| - EXPECT_TRUE(read_cb_.is_null());
|
| + EXPECT_TRUE(decode_cb_.is_null());
|
| }
|
|
|
| void InitializeAndStop() {
|
| - EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + EXPECT_CALL(*decoder_, Initialize(_, _))
|
| .WillOnce(RunCallback<1>(PIPELINE_OK));
|
| WaitableMessageLoopEvent event;
|
| renderer_->Initialize(
|
| @@ -189,7 +193,7 @@ class AudioRendererImplTest : public ::testing::Test {
|
| }
|
|
|
| void InitializeAndStopDuringDecoderInit() {
|
| - EXPECT_CALL(*decoder_, Initialize(_, _, _))
|
| + EXPECT_CALL(*decoder_, Initialize(_, _))
|
| .WillOnce(EnterPendingDecoderInitStateAction(this));
|
| WaitableMessageLoopEvent event;
|
| renderer_->Initialize(
|
| @@ -247,7 +251,7 @@ class AudioRendererImplTest : public ::testing::Test {
|
| event.RunAndWaitForStatus(PIPELINE_OK);
|
|
|
| // We should have no reads.
|
| - EXPECT_TRUE(read_cb_.is_null());
|
| + EXPECT_TRUE(decode_cb_.is_null());
|
| }
|
|
|
| void Play() {
|
| @@ -278,28 +282,28 @@ class AudioRendererImplTest : public ::testing::Test {
|
| }
|
|
|
| bool IsReadPending() const {
|
| - return !read_cb_.is_null();
|
| + return !decode_cb_.is_null();
|
| }
|
|
|
| void WaitForPendingRead() {
|
| SCOPED_TRACE("WaitForPendingRead()");
|
| - if (!read_cb_.is_null())
|
| + if (!decode_cb_.is_null())
|
| return;
|
|
|
| - DCHECK(wait_for_pending_read_cb_.is_null());
|
| + DCHECK(wait_for_pending_decode_cb_.is_null());
|
|
|
| WaitableMessageLoopEvent event;
|
| - wait_for_pending_read_cb_ = event.GetClosure();
|
| + wait_for_pending_decode_cb_ = event.GetClosure();
|
| event.RunAndWait();
|
|
|
| - DCHECK(!read_cb_.is_null());
|
| - DCHECK(wait_for_pending_read_cb_.is_null());
|
| + DCHECK(!decode_cb_.is_null());
|
| + DCHECK(wait_for_pending_decode_cb_.is_null());
|
| }
|
|
|
| // Delivers |size| frames with value kPlayingAudio to |renderer_|.
|
| void SatisfyPendingRead(int size) {
|
| CHECK_GT(size, 0);
|
| - CHECK(!read_cb_.is_null());
|
| + CHECK(!decode_cb_.is_null());
|
|
|
| scoped_refptr<AudioBuffer> buffer =
|
| MakeAudioBuffer<float>(kSampleFormat,
|
| @@ -466,28 +470,29 @@ class AudioRendererImplTest : public ::testing::Test {
|
| return time_;
|
| }
|
|
|
| - void ReadDecoder(const AudioDecoder::ReadCB& read_cb) {
|
| + void DecodeDecoder(const scoped_refptr<DecoderBuffer>& buffer,
|
| + const AudioDecoder::DecodeCB& decode_cb) {
|
| // We shouldn't ever call Read() after Stop():
|
| EXPECT_TRUE(stop_decoder_cb_.is_null());
|
|
|
| // TODO(scherkus): Make this a DCHECK after threading semantics are fixed.
|
| if (base::MessageLoop::current() != &message_loop_) {
|
| message_loop_.PostTask(FROM_HERE, base::Bind(
|
| - &AudioRendererImplTest::ReadDecoder,
|
| - base::Unretained(this), read_cb));
|
| + &AudioRendererImplTest::DecodeDecoder,
|
| + base::Unretained(this), buffer, decode_cb));
|
| return;
|
| }
|
|
|
| - CHECK(read_cb_.is_null()) << "Overlapping reads are not permitted";
|
| - read_cb_ = read_cb;
|
| + CHECK(decode_cb_.is_null()) << "Overlapping decodes are not permitted";
|
| + decode_cb_ = decode_cb;
|
|
|
| // Wake up WaitForPendingRead() if needed.
|
| - if (!wait_for_pending_read_cb_.is_null())
|
| - base::ResetAndReturn(&wait_for_pending_read_cb_).Run();
|
| + if (!wait_for_pending_decode_cb_.is_null())
|
| + base::ResetAndReturn(&wait_for_pending_decode_cb_).Run();
|
| }
|
|
|
| void ResetDecoder(const base::Closure& reset_cb) {
|
| - CHECK(read_cb_.is_null())
|
| + CHECK(decode_cb_.is_null())
|
| << "Reset overlapping with reads is not permitted";
|
|
|
| message_loop_.PostTask(FROM_HERE, reset_cb);
|
| @@ -503,8 +508,8 @@ class AudioRendererImplTest : public ::testing::Test {
|
|
|
| void DeliverBuffer(AudioDecoder::Status status,
|
| const scoped_refptr<AudioBuffer>& buffer) {
|
| - CHECK(!read_cb_.is_null());
|
| - base::ResetAndReturn(&read_cb_).Run(status, buffer);
|
| + CHECK(!decode_cb_.is_null());
|
| + base::ResetAndReturn(&decode_cb_).Run(status, buffer);
|
| }
|
|
|
| MockDemuxerStream demuxer_stream_;
|
| @@ -515,13 +520,13 @@ class AudioRendererImplTest : public ::testing::Test {
|
| TimeTicks time_;
|
|
|
| // Used for satisfying reads.
|
| - AudioDecoder::ReadCB read_cb_;
|
| + AudioDecoder::DecodeCB decode_cb_;
|
| scoped_ptr<AudioTimestampHelper> next_timestamp_;
|
|
|
| WaitableMessageLoopEvent ended_event_;
|
|
|
| - // Run during ReadDecoder() to unblock WaitForPendingRead().
|
| - base::Closure wait_for_pending_read_cb_;
|
| + // Run during DecodeDecoder() to unblock WaitForPendingRead().
|
| + base::Closure wait_for_pending_decode_cb_;
|
| base::Closure stop_decoder_cb_;
|
|
|
| PipelineStatusCB init_decoder_cb_;
|
|
|