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 |
deleted file mode 100644 |
index 05d1ee28bb0fa007c9b26a54e7b94ead6e3c26eb..0000000000000000000000000000000000000000 |
--- a/media/filters/ffmpeg_audio_decoder_unittest.cc |
+++ /dev/null |
@@ -1,197 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <deque> |
- |
-#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" |
-#include "media/base/mock_filters.h" |
-#include "media/base/test_data_util.h" |
-#include "media/base/test_helpers.h" |
-#include "media/ffmpeg/ffmpeg_common.h" |
-#include "media/filters/ffmpeg_audio_decoder.h" |
-#include "media/filters/ffmpeg_glue.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using ::testing::_; |
-using ::testing::StrictMock; |
- |
-namespace media { |
- |
-class FFmpegAudioDecoderTest : public testing::Test { |
- public: |
- FFmpegAudioDecoderTest() |
- : decoder_(new FFmpegAudioDecoder(message_loop_.message_loop_proxy(), |
- LogCB())), |
- pending_decode_(false), |
- pending_reset_(false), |
- last_decode_status_(AudioDecoder::kOk) { |
- FFmpegGlue::InitializeFFmpeg(); |
- |
- vorbis_extradata_ = ReadTestDataFile("vorbis-extradata"); |
- |
- // Refer to media/test/data/README for details on vorbis test data. |
- for (int i = 0; i < 4; ++i) { |
- scoped_refptr<DecoderBuffer> buffer = |
- ReadTestDataFile(base::StringPrintf("vorbis-packet-%d", i)); |
- |
- if (i < 3) { |
- buffer->set_timestamp(base::TimeDelta()); |
- } else { |
- buffer->set_timestamp(base::TimeDelta::FromMicroseconds(2902)); |
- } |
- |
- buffer->set_duration(base::TimeDelta()); |
- encoded_audio_.push_back(buffer); |
- } |
- |
- // Push in an EOS buffer. |
- encoded_audio_.push_back(DecoderBuffer::CreateEOSBuffer()); |
- |
- Initialize(); |
- } |
- |
- virtual ~FFmpegAudioDecoderTest() { |
- EXPECT_FALSE(pending_decode_); |
- EXPECT_FALSE(pending_reset_); |
- } |
- |
- void Initialize() { |
- AudioDecoderConfig config(kCodecVorbis, |
- kSampleFormatPlanarF32, |
- CHANNEL_LAYOUT_STEREO, |
- 44100, |
- vorbis_extradata_->data(), |
- vorbis_extradata_->data_size(), |
- false); // Not encrypted. |
- decoder_->Initialize(config, |
- NewExpectedStatusCB(PIPELINE_OK), |
- base::Bind(&FFmpegAudioDecoderTest::OnDecoderOutput, |
- base::Unretained(this))); |
- base::RunLoop().RunUntilIdle(); |
- } |
- |
- void SatisfyPendingDecode() { |
- base::RunLoop().RunUntilIdle(); |
- } |
- |
- void Decode() { |
- pending_decode_ = true; |
- scoped_refptr<DecoderBuffer> buffer(encoded_audio_.front()); |
- encoded_audio_.pop_front(); |
- decoder_->Decode(buffer, |
- base::Bind(&FFmpegAudioDecoderTest::DecodeFinished, |
- base::Unretained(this))); |
- base::RunLoop().RunUntilIdle(); |
- EXPECT_FALSE(pending_decode_); |
- EXPECT_EQ(AudioDecoder::kOk, last_decode_status_); |
- } |
- |
- void Reset() { |
- pending_reset_ = true; |
- decoder_->Reset(base::Bind( |
- &FFmpegAudioDecoderTest::ResetFinished, base::Unretained(this))); |
- base::RunLoop().RunUntilIdle(); |
- } |
- |
- void Stop() { |
- decoder_->Stop(); |
- base::RunLoop().RunUntilIdle(); |
- } |
- |
- void OnDecoderOutput(const scoped_refptr<AudioBuffer>& buffer) { |
- EXPECT_FALSE(buffer->end_of_stream()); |
- decoded_audio_.push_back(buffer); |
- } |
- |
- void DecodeFinished(AudioDecoder::Status status) { |
- EXPECT_TRUE(pending_decode_); |
- pending_decode_ = false; |
- |
- last_decode_status_ = status; |
- } |
- |
- void ResetFinished() { |
- EXPECT_TRUE(pending_reset_); |
- // Reset should always finish after Decode. |
- EXPECT_FALSE(pending_decode_); |
- |
- pending_reset_ = false; |
- } |
- |
- void ExpectDecodedAudio(size_t i, int64 timestamp, int64 duration) { |
- EXPECT_LT(i, decoded_audio_.size()); |
- EXPECT_EQ(timestamp, decoded_audio_[i]->timestamp().InMicroseconds()); |
- EXPECT_EQ(duration, decoded_audio_[i]->duration().InMicroseconds()); |
- } |
- |
- base::MessageLoop message_loop_; |
- scoped_ptr<FFmpegAudioDecoder> decoder_; |
- bool pending_decode_; |
- bool pending_reset_; |
- |
- scoped_refptr<DecoderBuffer> vorbis_extradata_; |
- |
- std::deque<scoped_refptr<DecoderBuffer> > encoded_audio_; |
- std::deque<scoped_refptr<AudioBuffer> > decoded_audio_; |
- AudioDecoder::Status last_decode_status_; |
-}; |
- |
-TEST_F(FFmpegAudioDecoderTest, Initialize) { |
- AudioDecoderConfig config(kCodecVorbis, |
- kSampleFormatPlanarF32, |
- CHANNEL_LAYOUT_STEREO, |
- 44100, |
- vorbis_extradata_->data(), |
- vorbis_extradata_->data_size(), |
- false); // Not encrypted. |
- Stop(); |
-} |
- |
-TEST_F(FFmpegAudioDecoderTest, ProduceAudioSamples) { |
- // Vorbis requires N+1 packets to produce audio data for N packets. |
- // |
- // This will should result in the demuxer receiving three reads for two |
- // requests to produce audio samples. |
- Decode(); |
- Decode(); |
- Decode(); |
- Decode(); |
- |
- ASSERT_EQ(3u, decoded_audio_.size()); |
- ExpectDecodedAudio(0, 0, 2902); |
- ExpectDecodedAudio(1, 2902, 13061); |
- ExpectDecodedAudio(2, 15963, 23219); |
- |
- // Call one more time with EOS. |
- Decode(); |
- ASSERT_EQ(3u, decoded_audio_.size()); |
- Stop(); |
-} |
- |
-TEST_F(FFmpegAudioDecoderTest, PendingDecode_Stop) { |
- Decode(); |
- Stop(); |
- SatisfyPendingDecode(); |
-} |
- |
-TEST_F(FFmpegAudioDecoderTest, PendingDecode_Reset) { |
- Decode(); |
- Reset(); |
- SatisfyPendingDecode(); |
- Stop(); |
-} |
- |
-TEST_F(FFmpegAudioDecoderTest, PendingDecode_ResetStop) { |
- Decode(); |
- Reset(); |
- Stop(); |
- SatisfyPendingDecode(); |
-} |
- |
-} // namespace media |