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

Unified Diff: media/filters/opus_audio_decoder_unittest.cc

Issue 134453009: Add unit tests for OpusAudioDecoder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@audio_decoder_stop
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | media/media.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « no previous file | media/media.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698