| Index: media/filters/ffmpeg_audio_decoder_unittest.cc
|
| diff --git a/media/filters/ffmpeg_audio_decoder_unittest.cc b/media/filters/ffmpeg_audio_decoder_unittest.cc
|
| index 63a2e4a1cb4a2ee4bc026d5dec6cb6a2c4be67fc..c19bbabf580e4e7cc99cf7b7cd20c02d73e1b279 100644
|
| --- a/media/filters/ffmpeg_audio_decoder_unittest.cc
|
| +++ b/media/filters/ffmpeg_audio_decoder_unittest.cc
|
| @@ -6,7 +6,6 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/message_loop/message_loop.h"
|
| -#include "base/run_loop.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "media/base/audio_buffer.h"
|
| #include "media/base/decoder_buffer.h"
|
| @@ -27,18 +26,11 @@
|
| test->ReadPacket(arg0);
|
| }
|
|
|
| -ACTION_P(EnterPendingDemuxerReadState, test) {
|
| - test->EnterPendingDemuxerRead(arg0);
|
| -}
|
| -
|
| class FFmpegAudioDecoderTest : public testing::Test {
|
| public:
|
| FFmpegAudioDecoderTest()
|
| : decoder_(new FFmpegAudioDecoder(message_loop_.message_loop_proxy())),
|
| - demuxer_(new StrictMock<MockDemuxerStream>(DemuxerStream::AUDIO)),
|
| - pending_read_(false),
|
| - pending_reset_(false),
|
| - pending_stop_(false) {
|
| + demuxer_(new StrictMock<MockDemuxerStream>(DemuxerStream::AUDIO)) {
|
| FFmpegGlue::InitializeFFmpeg();
|
|
|
| vorbis_extradata_ = ReadTestDataFile("vorbis-extradata");
|
| @@ -60,15 +52,9 @@
|
|
|
| // Push in an EOS buffer.
|
| encoded_audio_.push_back(DecoderBuffer::CreateEOSBuffer());
|
| -
|
| - Initialize();
|
| }
|
|
|
| - virtual ~FFmpegAudioDecoderTest() {
|
| - EXPECT_FALSE(pending_read_);
|
| - EXPECT_FALSE(pending_reset_);
|
| - EXPECT_FALSE(pending_stop_);
|
| - }
|
| + virtual ~FFmpegAudioDecoderTest() {}
|
|
|
| void Initialize() {
|
| AudioDecoderConfig config(kCodecVorbis,
|
| @@ -83,14 +69,8 @@
|
| NewExpectedStatusCB(PIPELINE_OK),
|
| base::Bind(&MockStatisticsCB::OnStatistics,
|
| base::Unretained(&statistics_cb_)));
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
|
|
| - void SetupPendingReadTest() {
|
| - encoded_audio_.clear();
|
| - encoded_audio_.push_back(NULL);
|
| - EXPECT_CALL(*demuxer_, Read(_))
|
| - .WillOnce(EnterPendingDemuxerReadState(this));
|
| + message_loop_.RunUntilIdle();
|
| }
|
|
|
| void ReadPacket(const DemuxerStream::ReadCB& read_cb) {
|
| @@ -103,79 +83,15 @@
|
| read_cb.Run(status, buffer);
|
| }
|
|
|
| - void EnterPendingDemuxerRead(const DemuxerStream::ReadCB& read_cb) {
|
| - // We just take note of it and ignore the callback, we'll expect it to be
|
| - // fired as a result of a Stop/Reset/etc.
|
| - DCHECK(pending_read_);
|
| - pending_demuxer_read_cb_ = read_cb;
|
| + void Read() {
|
| + decoder_->Read(base::Bind(
|
| + &FFmpegAudioDecoderTest::DecodeFinished, base::Unretained(this)));
|
| + message_loop_.RunUntilIdle();
|
| }
|
|
|
| - void SatisfyPendingRead() {
|
| - DCHECK(pending_read_ && !pending_demuxer_read_cb_.is_null());
|
| - ReadPacket(pending_demuxer_read_cb_);
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
| -
|
| - void Read() {
|
| - pending_read_ = true;
|
| - decoder_->Read(base::Bind(
|
| - &FFmpegAudioDecoderTest::ReadFinished, base::Unretained(this)));
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
| -
|
| - void Reset() {
|
| - pending_reset_ = true;
|
| - decoder_->Reset(base::Bind(
|
| - &FFmpegAudioDecoderTest::ResetFinished, base::Unretained(this)));
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
| -
|
| - void Stop() {
|
| - pending_stop_ = true;
|
| - decoder_->Stop(base::Bind(
|
| - &FFmpegAudioDecoderTest::StopFinished, base::Unretained(this)));
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
| -
|
| - void ReadFinished(AudioDecoder::Status status,
|
| + void DecodeFinished(AudioDecoder::Status status,
|
| const scoped_refptr<AudioBuffer>& buffer) {
|
| - EXPECT_TRUE(pending_read_);
|
| - pending_read_ = false;
|
| -
|
| decoded_audio_.push_back(buffer);
|
| -
|
| - // If we hit a NULL buffer or have a pending reset, we expect an abort.
|
| - if (buffer.get() == NULL || pending_stop_ || pending_reset_) {
|
| - EXPECT_TRUE(buffer.get() == NULL);
|
| - EXPECT_EQ(status, AudioDecoder::kAborted);
|
| - return;
|
| - }
|
| -
|
| - EXPECT_EQ(status, AudioDecoder::kOk);
|
| - }
|
| -
|
| - void PendingReadAborted(AudioDecoder::Status status,
|
| - const scoped_refptr<AudioBuffer>& buffer) {
|
| - EXPECT_EQ(status, AudioDecoder::kAborted);
|
| - EXPECT_TRUE(pending_read_);
|
| - pending_read_ = false;
|
| - }
|
| -
|
| - void StopFinished() {
|
| - EXPECT_TRUE(pending_stop_);
|
| - // Stop should always finish after Read and Reset.
|
| - EXPECT_FALSE(pending_read_);
|
| - EXPECT_FALSE(pending_reset_);
|
| -
|
| - pending_stop_ = false;
|
| - }
|
| -
|
| - void ResetFinished() {
|
| - EXPECT_TRUE(pending_reset_);
|
| - // Reset should always finish after Read.
|
| - EXPECT_FALSE(pending_read_);
|
| -
|
| - pending_reset_ = false;
|
| }
|
|
|
| void ExpectDecodedAudio(size_t i, int64 timestamp, int64 duration) {
|
| @@ -194,10 +110,6 @@
|
| scoped_ptr<FFmpegAudioDecoder> decoder_;
|
| scoped_ptr<StrictMock<MockDemuxerStream> > demuxer_;
|
| MockStatisticsCB statistics_cb_;
|
| - DemuxerStream::ReadCB pending_demuxer_read_cb_;
|
| - bool pending_read_;
|
| - bool pending_reset_;
|
| - bool pending_stop_;
|
|
|
| scoped_refptr<DecoderBuffer> vorbis_extradata_;
|
|
|
| @@ -206,6 +118,8 @@
|
| };
|
|
|
| TEST_F(FFmpegAudioDecoderTest, Initialize) {
|
| + Initialize();
|
| +
|
| const AudioDecoderConfig& config = demuxer_->audio_decoder_config();
|
| EXPECT_EQ(config.bits_per_channel(), decoder_->bits_per_channel());
|
| EXPECT_EQ(config.channel_layout(), decoder_->channel_layout());
|
| @@ -213,6 +127,8 @@
|
| }
|
|
|
| TEST_F(FFmpegAudioDecoderTest, ProduceAudioSamples) {
|
| + Initialize();
|
| +
|
| // Vorbis requires N+1 packets to produce audio data for N packets.
|
| //
|
| // This will should result in the demuxer receiving three reads for two
|
| @@ -239,8 +155,11 @@
|
| }
|
|
|
| TEST_F(FFmpegAudioDecoderTest, ReadAbort) {
|
| + Initialize();
|
| +
|
| encoded_audio_.clear();
|
| encoded_audio_.push_back(NULL);
|
| +
|
| EXPECT_CALL(*demuxer_, Read(_))
|
| .WillOnce(InvokeReadPacket(this));
|
| Read();
|
| @@ -249,29 +168,4 @@
|
| EXPECT_TRUE(decoded_audio_[0].get() == NULL);
|
| }
|
|
|
| -TEST_F(FFmpegAudioDecoderTest, PendingRead_Stop) {
|
| - SetupPendingReadTest();
|
| - Read();
|
| - Stop();
|
| - DCHECK(pending_read_ && pending_stop_);
|
| - SatisfyPendingRead();
|
| -}
|
| -
|
| -TEST_F(FFmpegAudioDecoderTest, PendingRead_Reset) {
|
| - SetupPendingReadTest();
|
| - Read();
|
| - Reset();
|
| - DCHECK(pending_read_ && pending_reset_);
|
| - SatisfyPendingRead();
|
| -}
|
| -
|
| -TEST_F(FFmpegAudioDecoderTest, PendingRead_ResetStop) {
|
| - SetupPendingReadTest();
|
| - Read();
|
| - Reset();
|
| - Stop();
|
| - DCHECK(pending_read_ && pending_reset_ && pending_stop_);
|
| - SatisfyPendingRead();
|
| -}
|
| -
|
| } // namespace media
|
|
|