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

Unified Diff: media/filters/audio_renderer_impl_unittest.cc

Issue 11148011: Move audio decoder initialization to AudioRendererImpl. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update player_x11 and player_wtl Created 8 years, 2 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
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 89c870b2be144a022c9f0b626ba750ef536e1a91..00f0ed4d71f67aca579e5d3a9f142512d8ae43ab 100644
--- a/media/filters/audio_renderer_impl_unittest.cc
+++ b/media/filters/audio_renderer_impl_unittest.cc
@@ -20,6 +20,10 @@ using ::testing::Return;
using ::testing::NiceMock;
using ::testing::StrictMock;
+ACTION_P(RunPipelineStatusCB1, status) {
+ arg1.Run(status);
+}
+
namespace media {
// Constants for distinguishing between muted audio and playing audio when using
@@ -32,8 +36,12 @@ class AudioRendererImplTest : public ::testing::Test {
// Give the decoder some non-garbage media properties.
AudioRendererImplTest()
: renderer_(new AudioRendererImpl(new NiceMock<MockAudioRendererSink>())),
+ demuxer_stream_(new MockDemuxerStream()),
decoder_(new MockAudioDecoder()) {
+ EXPECT_CALL(*demuxer_stream_, type())
+ .WillRepeatedly(Return(DemuxerStream::AUDIO));
+
// Queue all reads from the decoder by default.
ON_CALL(*decoder_, Read(_))
.WillByDefault(Invoke(this, &AudioRendererImplTest::SaveReadCallback));
@@ -46,6 +54,8 @@ class AudioRendererImplTest : public ::testing::Test {
.Times(AnyNumber());
EXPECT_CALL(*decoder_, samples_per_second())
.Times(AnyNumber());
+
+ decoders_.push_back(decoder_);
}
virtual ~AudioRendererImplTest() {
@@ -76,6 +86,7 @@ class AudioRendererImplTest : public ::testing::Test {
base::Unretained(this));
}
+ MOCK_METHOD1(OnStatistics, void(const PipelineStatistics&));
MOCK_METHOD0(OnUnderflow, void());
MOCK_METHOD0(OnEnded, void());
MOCK_METHOD0(OnDisabled, void());
@@ -87,12 +98,19 @@ class AudioRendererImplTest : public ::testing::Test {
}
void Initialize() {
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
+
InitializeWithStatus(PIPELINE_OK);
}
void InitializeWithStatus(PipelineStatus expected) {
renderer_->Initialize(
- decoder_, NewExpectedStatusCB(expected),
+ demuxer_stream_,
+ decoders_,
+ NewExpectedStatusCB(expected),
+ base::Bind(&AudioRendererImplTest::OnStatistics,
+ base::Unretained(this)),
base::Bind(&AudioRendererImplTest::OnUnderflow,
base::Unretained(this)),
base::Bind(&AudioRendererImplTest::OnAudioTimeCallback,
@@ -207,7 +225,9 @@ class AudioRendererImplTest : public ::testing::Test {
// Fixture members.
scoped_refptr<AudioRendererImpl> renderer_;
+ scoped_refptr<MockDemuxerStream> demuxer_stream_;
scoped_refptr<MockAudioDecoder> decoder_;
+ AudioRendererImpl::AudioDecoderList decoders_;
AudioDecoder::ReadCB read_cb_;
base::TimeDelta next_timestamp_;
@@ -221,7 +241,10 @@ class AudioRendererImplTest : public ::testing::Test {
};
TEST_F(AudioRendererImplTest, Initialize_Failed) {
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
SetUnsupportedAudioDecoderProperties();
+
InitializeWithStatus(PIPELINE_ERROR_INITIALIZATION_FAILED);
// We should have no reads.
@@ -235,6 +258,29 @@ TEST_F(AudioRendererImplTest, Initialize_Successful) {
EXPECT_TRUE(read_cb_.is_null());
}
+TEST_F(AudioRendererImplTest, Initialize_DecoderInitFailure) {
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_ERROR_DECODE));
+ InitializeWithStatus(PIPELINE_ERROR_DECODE);
+
+ // We should have no reads.
+ EXPECT_TRUE(read_cb_.is_null());
+}
+
+TEST_F(AudioRendererImplTest, Initialize_MultipleDecoders) {
+ scoped_refptr<MockAudioDecoder> decoder1 = new MockAudioDecoder();
+ // Insert |decoder1| as the first decoder in the list.
+ decoders_.push_front(decoder1);
+ EXPECT_CALL(*decoder1, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(DECODER_ERROR_NOT_SUPPORTED));
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
+ InitializeWithStatus(PIPELINE_OK);
+
+ // We should have no reads.
+ EXPECT_TRUE(read_cb_.is_null());
+}
+
TEST_F(AudioRendererImplTest, Preroll) {
Initialize();
Preroll();

Powered by Google App Engine
This is Rietveld 408576698