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

Side by Side Diff: media/renderers/audio_renderer_impl_unittest.cc

Issue 1955843002: Move Renderer permanent callbacks into RendererClient interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates media::Renderer subclasses Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/renderers/audio_renderer_impl.h" 5 #include "media/renderers/audio_renderer_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 static int kInputSamplesPerSecond = 5000; 58 static int kInputSamplesPerSecond = 5000;
59 static int kOutputSamplesPerSecond = 10000; 59 static int kOutputSamplesPerSecond = 10000;
60 static double kOutputMicrosPerFrame = 60 static double kOutputMicrosPerFrame =
61 static_cast<double>(base::Time::kMicrosecondsPerSecond) / 61 static_cast<double>(base::Time::kMicrosecondsPerSecond) /
62 kOutputSamplesPerSecond; 62 kOutputSamplesPerSecond;
63 63
64 ACTION_P(EnterPendingDecoderInitStateAction, test) { 64 ACTION_P(EnterPendingDecoderInitStateAction, test) {
65 test->EnterPendingDecoderInitState(arg2); 65 test->EnterPendingDecoderInitState(arg2);
66 } 66 }
67 67
68 class AudioRendererImplTest : public ::testing::Test { 68 class AudioRendererImplTest : public ::testing::Test, public RendererClient {
xhwang 2016/05/12 20:51:19 Can you also use MockRendererClient here?
alokp 2016/05/12 21:46:51 Using it here would require many changes in the te
69 public: 69 public:
70 // Give the decoder some non-garbage media properties. 70 // Give the decoder some non-garbage media properties.
71 AudioRendererImplTest() 71 AudioRendererImplTest()
72 : hardware_config_(AudioParameters(), AudioParameters()), 72 : hardware_config_(AudioParameters(), AudioParameters()),
73 tick_clock_(new base::SimpleTestTickClock()), 73 tick_clock_(new base::SimpleTestTickClock()),
74 demuxer_stream_(DemuxerStream::AUDIO), 74 demuxer_stream_(DemuxerStream::AUDIO),
75 decoder_(new MockAudioDecoder()), 75 decoder_(new MockAudioDecoder()),
76 ended_(false) { 76 ended_(false) {
77 AudioDecoderConfig audio_config(kCodec, kSampleFormat, kChannelLayout, 77 AudioDecoderConfig audio_config(kCodec, kSampleFormat, kChannelLayout,
78 kInputSamplesPerSecond, EmptyExtraData(), 78 kInputSamplesPerSecond, EmptyExtraData(),
(...skipping 30 matching lines...) Expand all
109 109
110 virtual ~AudioRendererImplTest() { 110 virtual ~AudioRendererImplTest() {
111 SCOPED_TRACE("~AudioRendererImplTest()"); 111 SCOPED_TRACE("~AudioRendererImplTest()");
112 } 112 }
113 113
114 void ExpectUnsupportedAudioDecoder() { 114 void ExpectUnsupportedAudioDecoder() {
115 EXPECT_CALL(*decoder_, Initialize(_, _, _, _)) 115 EXPECT_CALL(*decoder_, Initialize(_, _, _, _))
116 .WillOnce(DoAll(SaveArg<3>(&output_cb_), RunCallback<2>(false))); 116 .WillOnce(DoAll(SaveArg<3>(&output_cb_), RunCallback<2>(false)));
117 } 117 }
118 118
119 void OnStatistics(const PipelineStatistics& stats) { 119 // RendererClient implementation.
120 MOCK_METHOD1(OnError, void(PipelineStatus));
121 void OnEnded() override {
122 CHECK(!ended_);
123 ended_ = true;
124 }
125 void OnStatisticsUpdate(const PipelineStatistics& stats) override {
120 last_statistics_.audio_memory_usage += stats.audio_memory_usage; 126 last_statistics_.audio_memory_usage += stats.audio_memory_usage;
121 } 127 }
122
123 MOCK_METHOD1(OnBufferingStateChange, void(BufferingState)); 128 MOCK_METHOD1(OnBufferingStateChange, void(BufferingState));
124 MOCK_METHOD1(OnError, void(PipelineStatus));
125 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void)); 129 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void));
126 130
127 void InitializeRenderer(const PipelineStatusCB& pipeline_status_cb) { 131 void InitializeRenderer(const PipelineStatusCB& pipeline_status_cb) {
128 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); 132 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0);
129 renderer_->Initialize( 133 renderer_->Initialize(&demuxer_stream_, nullptr, this, pipeline_status_cb);
130 &demuxer_stream_, pipeline_status_cb, nullptr,
131 base::Bind(&AudioRendererImplTest::OnStatistics,
132 base::Unretained(this)),
133 base::Bind(&AudioRendererImplTest::OnBufferingStateChange,
134 base::Unretained(this)),
135 base::Bind(&AudioRendererImplTest::OnEnded, base::Unretained(this)),
136 base::Bind(&AudioRendererImplTest::OnError, base::Unretained(this)),
137 base::Bind(&AudioRendererImplTest::OnWaitingForDecryptionKey,
138 base::Unretained(this)));
139 } 134 }
140 135
141 void Initialize() { 136 void Initialize() {
142 EXPECT_CALL(*decoder_, Initialize(_, _, _, _)) 137 EXPECT_CALL(*decoder_, Initialize(_, _, _, _))
143 .WillOnce(DoAll(SaveArg<3>(&output_cb_), RunCallback<2>(true))); 138 .WillOnce(DoAll(SaveArg<3>(&output_cb_), RunCallback<2>(true)));
144 InitializeWithStatus(PIPELINE_OK); 139 InitializeWithStatus(PIPELINE_OK);
145 140
146 next_timestamp_.reset(new AudioTimestampHelper(kInputSamplesPerSecond)); 141 next_timestamp_.reset(new AudioTimestampHelper(kInputSamplesPerSecond));
147 } 142 }
148 143
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 if (buffer.get() && !buffer->end_of_stream()) 402 if (buffer.get() && !buffer->end_of_stream())
408 output_cb_.Run(buffer); 403 output_cb_.Run(buffer);
409 base::ResetAndReturn(&decode_cb_).Run(status); 404 base::ResetAndReturn(&decode_cb_).Run(status);
410 405
411 if (!reset_cb_.is_null()) 406 if (!reset_cb_.is_null())
412 base::ResetAndReturn(&reset_cb_).Run(); 407 base::ResetAndReturn(&reset_cb_).Run();
413 408
414 base::RunLoop().RunUntilIdle(); 409 base::RunLoop().RunUntilIdle();
415 } 410 }
416 411
417 void OnEnded() {
418 CHECK(!ended_);
419 ended_ = true;
420 }
421
422 MockDemuxerStream demuxer_stream_; 412 MockDemuxerStream demuxer_stream_;
423 MockAudioDecoder* decoder_; 413 MockAudioDecoder* decoder_;
424 414
425 // Used for satisfying reads. 415 // Used for satisfying reads.
426 AudioDecoder::OutputCB output_cb_; 416 AudioDecoder::OutputCB output_cb_;
427 AudioDecoder::DecodeCB decode_cb_; 417 AudioDecoder::DecodeCB decode_cb_;
428 base::Closure reset_cb_; 418 base::Closure reset_cb_;
429 std::unique_ptr<AudioTimestampHelper> next_timestamp_; 419 std::unique_ptr<AudioTimestampHelper> next_timestamp_;
430 420
431 // Run during DecodeDecoder() to unblock WaitForPendingRead(). 421 // Run during DecodeDecoder() to unblock WaitForPendingRead().
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 // Advance far enough that we shouldn't be clamped to current time (tested 937 // Advance far enough that we shouldn't be clamped to current time (tested
948 // already above). 938 // already above).
949 tick_clock_->Advance(kOneSecond); 939 tick_clock_->Advance(kOneSecond);
950 EXPECT_EQ( 940 EXPECT_EQ(
951 current_time + timestamp_helper.GetFrameDuration(frames_to_consume.value), 941 current_time + timestamp_helper.GetFrameDuration(frames_to_consume.value),
952 CurrentMediaWallClockTime(&is_time_moving)); 942 CurrentMediaWallClockTime(&is_time_moving));
953 EXPECT_TRUE(is_time_moving); 943 EXPECT_TRUE(is_time_moving);
954 } 944 }
955 945
956 } // namespace media 946 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698