Index: media/filters/opus_audio_decoder_unittest.cc |
diff --git a/media/filters/ffmpeg_audio_decoder_unittest.cc b/media/filters/opus_audio_decoder_unittest.cc |
similarity index 68% |
copy from media/filters/ffmpeg_audio_decoder_unittest.cc |
copy to media/filters/opus_audio_decoder_unittest.cc |
index 9614c169a796ca8b22fcf2dee2f2865694e72acd..f3fc522b153f8f41688427fc0bea3b5d496b6c9e 100644 |
--- a/media/filters/ffmpeg_audio_decoder_unittest.cc |
+++ b/media/filters/opus_audio_decoder_unittest.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Copyright 2013 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. |
@@ -9,14 +9,11 @@ |
#include "base/run_loop.h" |
#include "base/strings/stringprintf.h" |
#include "media/base/audio_buffer.h" |
-#include "media/base/bind_to_loop.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 "media/filters/opus_audio_decoder.h" |
#include "testing/gtest/include/gtest/gtest.h" |
using ::testing::_; |
@@ -32,53 +29,43 @@ ACTION_P(EnterPendingDemuxerReadState, test) { |
test->EnterPendingDemuxerRead(arg0); |
} |
-class FFmpegAudioDecoderTest : public testing::Test { |
+// Lifted from media/test/data/bear-opus.ogg |
+static const unsigned char kOpusExtraData[] = { |
xhwang
2014/01/15 20:10:31
Add a comment why we need it for this test.
globa
|
+ 0x4f, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64, 0x01, 0x02, |
+ 0x38, 0x01, 0x80, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00}; |
+ |
+class OpusAudioDecoderTest : public testing::Test { |
public: |
- FFmpegAudioDecoderTest() |
- : decoder_(new FFmpegAudioDecoder(message_loop_.message_loop_proxy())), |
+ OpusAudioDecoderTest() |
+ : decoder_(new OpusAudioDecoder(message_loop_.message_loop_proxy())), |
demuxer_(new StrictMock<MockDemuxerStream>(DemuxerStream::AUDIO)), |
pending_read_(false), |
pending_reset_(false), |
pending_stop_(false) { |
- 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. |
+ // Just push in an EOS buffer. |
DaleCurtis
2014/01/15 20:55:40
Seems like the only test which uses this is Initia
|
encoded_audio_.push_back(DecoderBuffer::CreateEOSBuffer()); |
- |
Initialize(); |
} |
- virtual ~FFmpegAudioDecoderTest() { |
+ virtual ~OpusAudioDecoderTest() { |
EXPECT_FALSE(pending_read_); |
EXPECT_FALSE(pending_reset_); |
EXPECT_FALSE(pending_stop_); |
} |
void Initialize() { |
DaleCurtis
2014/01/15 20:55:40
Collapse this into the constructor, no need for a
|
- AudioDecoderConfig config(kCodecVorbis, |
- kSampleFormatPlanarF32, |
- CHANNEL_LAYOUT_STEREO, |
- 44100, |
- vorbis_extradata_->data(), |
- vorbis_extradata_->data_size(), |
- false); // Not encrypted. |
+ AudioDecoderConfig config; |
+ |
+ config.Initialize(kCodecOpus, |
+ kSampleFormatPlanarF32, |
+ CHANNEL_LAYOUT_STEREO, |
+ 48000, |
+ kOpusExtraData, |
+ sizeof(kOpusExtraData), |
+ false, |
+ false, |
+ base::TimeDelta(), |
+ base::TimeDelta::FromMicroseconds(6500)); |
rileya (GONE FROM CHROMIUM)
2014/01/15 19:12:41
This is ugly, but a DCHECK fails unless this match
xhwang
2014/01/15 20:10:31
Put 6500 in a constant which is defined together w
|
demuxer_->set_audio_decoder_config(config); |
decoder_->Initialize(demuxer_.get(), |
NewExpectedStatusCB(PIPELINE_OK), |
@@ -120,21 +107,21 @@ class FFmpegAudioDecoderTest : public testing::Test { |
void Read() { |
pending_read_ = true; |
decoder_->Read(base::Bind( |
- &FFmpegAudioDecoderTest::ReadFinished, base::Unretained(this))); |
+ &OpusAudioDecoderTest::ReadFinished, base::Unretained(this))); |
base::RunLoop().RunUntilIdle(); |
} |
void Reset() { |
pending_reset_ = true; |
decoder_->Reset(base::Bind( |
- &FFmpegAudioDecoderTest::ResetFinished, base::Unretained(this))); |
+ &OpusAudioDecoderTest::ResetFinished, base::Unretained(this))); |
base::RunLoop().RunUntilIdle(); |
} |
void Stop() { |
pending_stop_ = true; |
decoder_->Stop(base::Bind( |
- &FFmpegAudioDecoderTest::StopFinished, base::Unretained(this))); |
+ &OpusAudioDecoderTest::StopFinished, base::Unretained(this))); |
base::RunLoop().RunUntilIdle(); |
} |
@@ -192,7 +179,7 @@ class FFmpegAudioDecoderTest : public testing::Test { |
} |
base::MessageLoop message_loop_; |
- scoped_ptr<FFmpegAudioDecoder> decoder_; |
+ scoped_ptr<OpusAudioDecoder> decoder_; |
scoped_ptr<StrictMock<MockDemuxerStream> > demuxer_; |
MockStatisticsCB statistics_cb_; |
DemuxerStream::ReadCB pending_demuxer_read_cb_; |
@@ -206,40 +193,14 @@ class FFmpegAudioDecoderTest : public testing::Test { |
std::deque<scoped_refptr<AudioBuffer> > decoded_audio_; |
}; |
-TEST_F(FFmpegAudioDecoderTest, Initialize) { |
+TEST_F(OpusAudioDecoderTest, 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()); |
EXPECT_EQ(config.samples_per_second(), decoder_->samples_per_second()); |
} |
-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. |
- EXPECT_CALL(*demuxer_, Read(_)) |
- .Times(5) |
- .WillRepeatedly(InvokeReadPacket(this)); |
- EXPECT_CALL(statistics_cb_, OnStatistics(_)) |
- .Times(4); |
- |
- Read(); |
- Read(); |
- Read(); |
- |
- ASSERT_EQ(3u, decoded_audio_.size()); |
- ExpectDecodedAudio(0, 0, 2902); |
- ExpectDecodedAudio(1, 2902, 13061); |
- ExpectDecodedAudio(2, 15963, 23220); |
- |
- // Call one more time to trigger EOS. |
- Read(); |
- ASSERT_EQ(4u, decoded_audio_.size()); |
- ExpectEndOfStream(3); |
-} |
- |
-TEST_F(FFmpegAudioDecoderTest, ReadAbort) { |
+TEST_F(OpusAudioDecoderTest, ReadAbort) { |
encoded_audio_.clear(); |
encoded_audio_.push_back(NULL); |
EXPECT_CALL(*demuxer_, Read(_)) |
@@ -250,7 +211,7 @@ TEST_F(FFmpegAudioDecoderTest, ReadAbort) { |
EXPECT_TRUE(decoded_audio_[0].get() == NULL); |
} |
-TEST_F(FFmpegAudioDecoderTest, PendingRead_Stop) { |
+TEST_F(OpusAudioDecoderTest, PendingRead_Stop) { |
SetupPendingReadTest(); |
Read(); |
Stop(); |
@@ -258,7 +219,7 @@ TEST_F(FFmpegAudioDecoderTest, PendingRead_Stop) { |
SatisfyPendingRead(); |
} |
-TEST_F(FFmpegAudioDecoderTest, PendingRead_Reset) { |
+TEST_F(OpusAudioDecoderTest, PendingRead_Reset) { |
SetupPendingReadTest(); |
Read(); |
Reset(); |
@@ -266,7 +227,7 @@ TEST_F(FFmpegAudioDecoderTest, PendingRead_Reset) { |
SatisfyPendingRead(); |
} |
-TEST_F(FFmpegAudioDecoderTest, PendingRead_ResetStop) { |
+TEST_F(OpusAudioDecoderTest, PendingRead_ResetStop) { |
SetupPendingReadTest(); |
Read(); |
Reset(); |