Chromium Code Reviews| Index: chromecast/media/audio/cast_audio_output_stream_unittest.cc |
| diff --git a/chromecast/media/audio/cast_audio_output_stream_unittest.cc b/chromecast/media/audio/cast_audio_output_stream_unittest.cc |
| index 4869d1f93428876905fe68e02b022a1a7b44eaf9..bbeb447ff2b2713504d60e3a947f9b73a212db1b 100644 |
| --- a/chromecast/media/audio/cast_audio_output_stream_unittest.cc |
| +++ b/chromecast/media/audio/cast_audio_output_stream_unittest.cc |
| @@ -8,11 +8,10 @@ |
| #include "chromecast/media/audio/cast_audio_manager.h" |
| #include "chromecast/media/audio/cast_audio_output_stream.h" |
| #include "chromecast/media/base/media_message_loop.h" |
| -#include "chromecast/public/media/audio_pipeline_device.h" |
| +#include "chromecast/media/cma/backend/media_pipeline_backend_default.h" |
| #include "chromecast/public/media/cast_decoder_buffer.h" |
| #include "chromecast/public/media/decoder_config.h" |
| #include "chromecast/public/media/decrypt_context.h" |
| -#include "chromecast/public/media/media_clock_device.h" |
| #include "chromecast/public/media/media_pipeline_backend.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -29,31 +28,7 @@ void RunUntilIdle(base::TaskRunner* task_runner) { |
| completion_event.Wait(); |
| } |
| -class FakeClockDevice : public MediaClockDevice { |
| - public: |
| - FakeClockDevice() : state_(kStateUninitialized), rate_(0.f) {} |
| - ~FakeClockDevice() override {} |
| - |
| - State GetState() const override { return state_; } |
| - bool SetState(State new_state) override { |
| - state_ = new_state; |
| - return true; |
| - } |
| - bool ResetTimeline(int64_t time_microseconds) override { return true; } |
| - bool SetRate(float rate) override { |
| - rate_ = rate; |
| - return true; |
| - } |
| - int64_t GetTimeMicroseconds() override { return 0; } |
| - |
| - float rate() const { return rate_; } |
| - |
| - private: |
| - State state_; |
| - float rate_; |
| -}; |
| - |
| -class FakeAudioPipelineDevice : public AudioPipelineDevice { |
| +class FakeAudioDecoder : public MediaPipelineBackend::AudioDecoder { |
| public: |
| enum PipelineStatus { |
| PIPELINE_STATUS_OK, |
| @@ -61,99 +36,120 @@ class FakeAudioPipelineDevice : public AudioPipelineDevice { |
| PIPELINE_STATUS_ERROR |
| }; |
| - FakeAudioPipelineDevice() |
| - : state_(kStateUninitialized), |
| - volume_multiplier_(1.0f), |
| + FakeAudioDecoder() |
| + : volume_(1.0f), |
| pipeline_status_(PIPELINE_STATUS_OK), |
| - pushed_frame_count_(0) {} |
| - ~FakeAudioPipelineDevice() override {} |
| - |
| - // AudioPipelineDevice overrides. |
| - void SetClient(Client* client) override {} |
| - bool SetState(State new_state) override { |
| - state_ = new_state; |
| - return true; |
| - } |
| - State GetState() const override { return state_; } |
| - bool SetStartPts(int64_t microseconds) override { return false; } |
| - FrameStatus PushFrame(DecryptContext* decrypt_context, |
| - CastDecoderBuffer* buffer, |
| - FrameStatusCB* completion_cb) override { |
| - last_frame_decrypt_context_.reset(decrypt_context); |
| - last_frame_buffer_.reset(buffer); |
| - last_frame_completion_cb_.reset(completion_cb); |
| - ++pushed_frame_count_; |
| + pushed_buffer_count_(0), |
| + last_decrypt_context_(nullptr), |
| + last_buffer_(nullptr), |
| + delegate_(nullptr) {} |
| + ~FakeAudioDecoder() override {} |
| + |
| + // MediaPipelineBackend::AudioDecoder overrides. |
| + BufferStatus PushBuffer(DecryptContext* decrypt_context, |
| + CastDecoderBuffer* buffer) override { |
| + last_decrypt_context_ = decrypt_context; |
| + last_buffer_ = buffer; |
| + ++pushed_buffer_count_; |
| switch (pipeline_status_) { |
| case PIPELINE_STATUS_OK: |
| - return kFrameSuccess; |
| + return MediaPipelineBackend::kBufferSuccess; |
| case PIPELINE_STATUS_BUSY: |
| - return kFramePending; |
| + return MediaPipelineBackend::kBufferPending; |
| case PIPELINE_STATUS_ERROR: |
| - return kFrameFailed; |
| + return MediaPipelineBackend::kBufferFailed; |
| default: |
| NOTREACHED(); |
| + return MediaPipelineBackend::kBufferFailed; |
| } |
| - |
| - // This will never be reached but is necessary for compiler warnings. |
| - return kFrameFailed; |
| } |
| - RenderingDelay GetRenderingDelay() const override { return RenderingDelay(); } |
| - bool GetStatistics(Statistics* stats) const override { return false; } |
| + void GetStatistics(Statistics* statistics) override {} |
| bool SetConfig(const AudioConfig& config) override { |
| config_ = config; |
| return true; |
| } |
| - void SetStreamVolumeMultiplier(float multiplier) override { |
| - volume_multiplier_ = multiplier; |
| + bool SetVolume(float volume) override { |
| + volume_ = volume; |
| + return true; |
| } |
| + RenderingDelay GetRenderingDelay() override { return RenderingDelay(); } |
| const AudioConfig& config() const { return config_; } |
| - float volume_multiplier() const { return volume_multiplier_; } |
| - void set_pipeline_status(PipelineStatus status) { pipeline_status_ = status; } |
| - unsigned pushed_frame_count() const { return pushed_frame_count_; } |
| - DecryptContext* last_frame_decrypt_context() { |
| - return last_frame_decrypt_context_.get(); |
| + float volume() const { return volume_; } |
| + void set_pipeline_status(PipelineStatus status) { |
| + if (pipeline_status_ == PIPELINE_STATUS_BUSY && |
| + status == PIPELINE_STATUS_OK) { |
| + delegate_->OnPushBufferComplete(this, |
|
alokp
2015/10/14 23:16:52
this is not the right place to call the delegate.
kmackay
2015/10/15 00:35:54
It seems reasonable to me. Setting the pipeline st
|
| + MediaPipelineBackend::kBufferSuccess); |
| + } |
| + pipeline_status_ = status; |
| } |
| - CastDecoderBuffer* last_frame_buffer() { return last_frame_buffer_.get(); } |
| - FrameStatusCB* last_frame_completion_cb() { |
| - return last_frame_completion_cb_.get(); |
| + unsigned pushed_buffer_count() const { return pushed_buffer_count_; } |
| + DecryptContext* last_decrypt_context() { return last_decrypt_context_; } |
| + CastDecoderBuffer* last_buffer() { return last_buffer_; } |
| + void set_delegate(MediaPipelineBackend::Delegate* delegate) { |
| + delegate_ = delegate; |
| } |
| private: |
| - State state_; |
| AudioConfig config_; |
| - float volume_multiplier_; |
| + float volume_; |
| PipelineStatus pipeline_status_; |
| - unsigned pushed_frame_count_; |
| - scoped_ptr<DecryptContext> last_frame_decrypt_context_; |
| - scoped_ptr<CastDecoderBuffer> last_frame_buffer_; |
| - scoped_ptr<FrameStatusCB> last_frame_completion_cb_; |
| + unsigned pushed_buffer_count_; |
|
halliwell
2015/10/14 15:02:37
nit: just use int (see https://google-styleguide.g
kmackay
2015/10/14 21:27:26
Done.
|
| + DecryptContext* last_decrypt_context_; |
| + CastDecoderBuffer* last_buffer_; |
| + MediaPipelineBackend::Delegate* delegate_; |
| }; |
| class FakeMediaPipelineBackend : public MediaPipelineBackend { |
| public: |
| + enum State { kStateStopped, kStateRunning, kStatePaused }; |
| + |
| + FakeMediaPipelineBackend() : state_(kStateStopped), audio_decoder_(nullptr) {} |
| ~FakeMediaPipelineBackend() override {} |
| - MediaClockDevice* GetClock() override { |
| - if (!clock_device_) |
| - clock_device_.reset(new FakeClockDevice); |
| - return clock_device_.get(); |
| + // MediaPipelineBackend implementation: |
| + AudioDecoder* CreateAudioDecoder() override { |
| + DCHECK(!audio_decoder_); |
| + audio_decoder_ = new FakeAudioDecoder(); |
| + return audio_decoder_; |
| } |
| - AudioPipelineDevice* GetAudio() override { |
| - if (!audio_device_) |
| - audio_device_.reset(new FakeAudioPipelineDevice); |
| - return audio_device_.get(); |
| + VideoDecoder* CreateVideoDecoder() override { return nullptr; } |
|
alokp
2015/10/14 23:16:52
add NOTREACHED
kmackay
2015/10/15 00:35:53
Done.
|
| + |
| + bool Initialize(Delegate* delegate) override { |
| + audio_decoder_->set_delegate(delegate); |
| + return true; |
| } |
| - VideoPipelineDevice* GetVideo() override { |
| - NOTREACHED(); |
| - return nullptr; |
| + bool Start(int64_t start_pts) override { |
| + DCHECK(state_ == kStateStopped); |
| + state_ = kStateRunning; |
| + return true; |
| + } |
| + bool Stop() override { |
| + state_ = kStateStopped; |
| + return true; |
| } |
| + bool Pause() override { |
| + DCHECK(state_ == kStateRunning); |
| + state_ = kStatePaused; |
| + return true; |
| + } |
| + bool Resume() override { |
| + DCHECK(state_ == kStatePaused); |
| + state_ = kStateRunning; |
| + return true; |
| + } |
| + int64_t GetCurrentPts() override { return 0; } |
| + bool SetPlaybackRate(float rate) override { return true; } |
| + |
| + State state() const { return state_; } |
| + FakeAudioDecoder* decoder() const { return audio_decoder_; } |
| private: |
| - scoped_ptr<FakeClockDevice> clock_device_; |
| - scoped_ptr<FakeAudioPipelineDevice> audio_device_; |
| + State state_; |
| + FakeAudioDecoder* audio_decoder_; |
| }; |
| class FakeAudioSourceCallback |
| @@ -187,7 +183,8 @@ class FakeAudioManager : public CastAudioManager { |
| DCHECK(media::MediaMessageLoop::GetTaskRunner()->BelongsToCurrentThread()); |
| DCHECK(!media_pipeline_backend_); |
| - scoped_ptr<FakeMediaPipelineBackend> backend(new FakeMediaPipelineBackend); |
| + scoped_ptr<FakeMediaPipelineBackend> backend( |
| + new FakeMediaPipelineBackend()); |
| // Cache the backend locally to be used by tests. |
| media_pipeline_backend_ = backend.get(); |
| return backend.Pass(); |
| @@ -236,15 +233,15 @@ class CastAudioOutputStreamTest : public ::testing::Test { |
| return ::media::AudioParameters(format_, channel_layout_, sample_rate_, |
| bits_per_sample_, frames_per_buffer_); |
| } |
| - FakeClockDevice* GetClock() { |
| - MediaPipelineBackend* backend = audio_manager_->media_pipeline_backend(); |
| - return backend ? static_cast<FakeClockDevice*>(backend->GetClock()) |
| - : nullptr; |
| + |
| + FakeMediaPipelineBackend* GetBackend() { |
| + return audio_manager_->media_pipeline_backend(); |
| } |
| - FakeAudioPipelineDevice* GetAudio() { |
| - MediaPipelineBackend* backend = audio_manager_->media_pipeline_backend(); |
| - return backend ? static_cast<FakeAudioPipelineDevice*>(backend->GetAudio()) |
| - : nullptr; |
| + FakeAudioDecoder* GetAudio() { |
| + FakeMediaPipelineBackend* backend = GetBackend(); |
| + if (!backend) |
|
alokp
2015/10/14 23:16:52
nit: return backend ? backend->decoder() : nullptr
kmackay
2015/10/15 00:35:54
Done.
|
| + return nullptr; |
| + return backend->decoder(); |
| } |
| // Synchronous utility functions. |
| @@ -373,9 +370,9 @@ TEST_F(CastAudioOutputStreamTest, Format) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - const AudioConfig& audio_config = audio_device->config(); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + const AudioConfig& audio_config = audio_decoder->config(); |
| EXPECT_EQ(kCodecPCM, audio_config.codec); |
| EXPECT_EQ(kSampleFormatS16, audio_config.sample_format); |
| EXPECT_FALSE(audio_config.is_encrypted); |
| @@ -393,9 +390,9 @@ TEST_F(CastAudioOutputStreamTest, ChannelLayout) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - const AudioConfig& audio_config = audio_device->config(); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + const AudioConfig& audio_config = audio_decoder->config(); |
| EXPECT_EQ(::media::ChannelLayoutToChannelCount(channel_layout_), |
| audio_config.channel_number); |
| @@ -409,9 +406,9 @@ TEST_F(CastAudioOutputStreamTest, SampleRate) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - const AudioConfig& audio_config = audio_device->config(); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + const AudioConfig& audio_config = audio_decoder->config(); |
| EXPECT_EQ(sample_rate_, audio_config.samples_per_second); |
| CloseStream(stream); |
| @@ -423,9 +420,9 @@ TEST_F(CastAudioOutputStreamTest, BitsPerSample) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - const AudioConfig& audio_config = audio_device->config(); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + const AudioConfig& audio_config = audio_decoder->config(); |
| EXPECT_EQ(bits_per_sample_ / 8, audio_config.bytes_per_channel); |
| CloseStream(stream); |
| @@ -437,25 +434,19 @@ TEST_F(CastAudioOutputStreamTest, DeviceState) { |
| EXPECT_FALSE(GetAudio()); |
| EXPECT_TRUE(OpenStream(stream)); |
| - AudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - FakeClockDevice* clock_device = GetClock(); |
| - ASSERT_TRUE(clock_device); |
| - EXPECT_EQ(AudioPipelineDevice::kStateIdle, audio_device->GetState()); |
| - EXPECT_EQ(MediaClockDevice::kStateIdle, clock_device->GetState()); |
| - EXPECT_EQ(1.f, clock_device->rate()); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + FakeMediaPipelineBackend* backend = GetBackend(); |
| + ASSERT_TRUE(backend); |
| + EXPECT_EQ(backend->state(), FakeMediaPipelineBackend::kStateStopped); |
|
alokp
2015/10/14 23:16:52
This should be EXPECT_EQ(expectation, actual_value
kmackay
2015/10/15 00:35:54
Done.
|
| scoped_ptr<FakeAudioSourceCallback> source_callback( |
| new FakeAudioSourceCallback); |
| StartStream(stream, source_callback.get()); |
| - EXPECT_EQ(AudioPipelineDevice::kStateRunning, audio_device->GetState()); |
| - EXPECT_EQ(MediaClockDevice::kStateRunning, clock_device->GetState()); |
| - EXPECT_EQ(1.f, clock_device->rate()); |
| + EXPECT_EQ(backend->state(), FakeMediaPipelineBackend::kStateRunning); |
| StopStream(stream); |
| - EXPECT_EQ(AudioPipelineDevice::kStateRunning, audio_device->GetState()); |
| - EXPECT_EQ(MediaClockDevice::kStateRunning, clock_device->GetState()); |
| - EXPECT_EQ(0.f, clock_device->rate()); |
| + EXPECT_EQ(backend->state(), FakeMediaPipelineBackend::kStatePaused); |
| CloseStream(stream); |
| EXPECT_FALSE(GetAudio()); |
| @@ -466,13 +457,12 @@ TEST_F(CastAudioOutputStreamTest, PushFrame) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| // Verify initial state. |
| - EXPECT_EQ(0u, audio_device->pushed_frame_count()); |
| - EXPECT_FALSE(audio_device->last_frame_decrypt_context()); |
| - EXPECT_FALSE(audio_device->last_frame_buffer()); |
| - EXPECT_FALSE(audio_device->last_frame_completion_cb()); |
| + EXPECT_EQ(0u, audio_decoder->pushed_buffer_count()); |
| + EXPECT_FALSE(audio_decoder->last_decrypt_context()); |
| + EXPECT_FALSE(audio_decoder->last_buffer()); |
| scoped_ptr<FakeAudioSourceCallback> source_callback( |
| new FakeAudioSourceCallback); |
| @@ -480,17 +470,16 @@ TEST_F(CastAudioOutputStreamTest, PushFrame) { |
| StopStream(stream); |
| // Verify that the stream pushed frames to the backend. |
| - EXPECT_LT(0u, audio_device->pushed_frame_count()); |
| + EXPECT_LT(0u, audio_decoder->pushed_buffer_count()); |
| // DecryptContext is always NULL becuase of "raw" audio. |
| - EXPECT_FALSE(audio_device->last_frame_decrypt_context()); |
| - EXPECT_TRUE(audio_device->last_frame_buffer()); |
| - EXPECT_TRUE(audio_device->last_frame_completion_cb()); |
| + EXPECT_FALSE(audio_decoder->last_decrypt_context()); |
| + EXPECT_TRUE(audio_decoder->last_buffer()); |
| // Verify decoder buffer. |
| ::media::AudioParameters audio_params = GetAudioParams(); |
| const size_t expected_frame_size = |
| static_cast<size_t>(audio_params.GetBytesPerBuffer()); |
| - const CastDecoderBuffer* buffer = audio_device->last_frame_buffer(); |
| + const CastDecoderBuffer* buffer = audio_decoder->last_buffer(); |
| EXPECT_TRUE(buffer->data()); |
| EXPECT_EQ(expected_frame_size, buffer->data_size()); |
| EXPECT_FALSE(buffer->decrypt_config()); // Null because of raw audio. |
| @@ -507,17 +496,16 @@ TEST_F(CastAudioOutputStreamTest, DeviceBusy) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - audio_device->set_pipeline_status( |
| - FakeAudioPipelineDevice::PIPELINE_STATUS_BUSY); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + audio_decoder->set_pipeline_status(FakeAudioDecoder::PIPELINE_STATUS_BUSY); |
| scoped_ptr<FakeAudioSourceCallback> source_callback( |
| new FakeAudioSourceCallback); |
| StartStream(stream, source_callback.get()); |
| // Make sure that one frame was pushed. |
| - EXPECT_EQ(1u, audio_device->pushed_frame_count()); |
| + EXPECT_EQ(1u, audio_decoder->pushed_buffer_count()); |
| // No error must be reported to source callback. |
| EXPECT_FALSE(source_callback->error()); |
| @@ -528,17 +516,20 @@ TEST_F(CastAudioOutputStreamTest, DeviceBusy) { |
| base::PlatformThread::Sleep(pause); |
| RunUntilIdle(audio_task_runner_.get()); |
| RunUntilIdle(backend_task_runner_.get()); |
| - EXPECT_EQ(1u, audio_device->pushed_frame_count()); |
| + EXPECT_EQ(1u, audio_decoder->pushed_buffer_count()); |
| // Unblock the pipeline and verify that PushFrame resumes. |
| - audio_device->set_pipeline_status( |
| - FakeAudioPipelineDevice::PIPELINE_STATUS_OK); |
| - audio_device->last_frame_completion_cb()->Run( |
| - MediaComponentDevice::kFrameSuccess); |
| + // (have to post because this directly calls buffer complete) |
|
alokp
2015/10/14 23:16:52
yeah you probably should not call buffer complete.
kmackay
2015/10/15 00:35:54
see comment above.
|
| + backend_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&FakeAudioDecoder::set_pipeline_status, |
| + base::Unretained(audio_decoder), |
| + FakeAudioDecoder::PIPELINE_STATUS_OK)); |
| + |
| base::PlatformThread::Sleep(pause); |
| RunUntilIdle(audio_task_runner_.get()); |
| RunUntilIdle(backend_task_runner_.get()); |
| - EXPECT_LT(1u, audio_device->pushed_frame_count()); |
| + EXPECT_LT(1u, audio_decoder->pushed_buffer_count()); |
| EXPECT_FALSE(source_callback->error()); |
| StopStream(stream); |
| @@ -550,17 +541,16 @@ TEST_F(CastAudioOutputStreamTest, DeviceError) { |
| ASSERT_TRUE(stream); |
| EXPECT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| - audio_device->set_pipeline_status( |
| - FakeAudioPipelineDevice::PIPELINE_STATUS_ERROR); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| + audio_decoder->set_pipeline_status(FakeAudioDecoder::PIPELINE_STATUS_ERROR); |
| scoped_ptr<FakeAudioSourceCallback> source_callback( |
| new FakeAudioSourceCallback); |
| StartStream(stream, source_callback.get()); |
| // Make sure that AudioOutputStream attempted to push the initial frame. |
| - EXPECT_LT(0u, audio_device->pushed_frame_count()); |
| + EXPECT_LT(0u, audio_decoder->pushed_buffer_count()); |
| // AudioOutputStream must report error to source callback. |
| EXPECT_TRUE(source_callback->error()); |
| @@ -572,17 +562,17 @@ TEST_F(CastAudioOutputStreamTest, Volume) { |
| ::media::AudioOutputStream* stream = CreateStream(); |
| ASSERT_TRUE(stream); |
| ASSERT_TRUE(OpenStream(stream)); |
| - FakeAudioPipelineDevice* audio_device = GetAudio(); |
| - ASSERT_TRUE(audio_device); |
| + FakeAudioDecoder* audio_decoder = GetAudio(); |
| + ASSERT_TRUE(audio_decoder); |
| double volume = GetStreamVolume(stream); |
| EXPECT_EQ(1.0, volume); |
| - EXPECT_EQ(1.0f, audio_device->volume_multiplier()); |
| + EXPECT_EQ(1.0f, audio_decoder->volume()); |
| SetStreamVolume(stream, 0.5); |
| volume = GetStreamVolume(stream); |
| EXPECT_EQ(0.5, volume); |
| - EXPECT_EQ(0.5f, audio_device->volume_multiplier()); |
| + EXPECT_EQ(0.5f, audio_decoder->volume()); |
| CloseStream(stream); |
| } |
| @@ -606,12 +596,8 @@ TEST_F(CastAudioOutputStreamTest, StartStopStart) { |
| RunUntilIdle(audio_task_runner_.get()); |
| RunUntilIdle(backend_task_runner_.get()); |
| - AudioPipelineDevice* audio_device = GetAudio(); |
| - FakeClockDevice* clock_device = GetClock(); |
| - ASSERT_TRUE(audio_device && clock_device); |
| - EXPECT_EQ(AudioPipelineDevice::kStateRunning, audio_device->GetState()); |
| - EXPECT_EQ(MediaClockDevice::kStateRunning, clock_device->GetState()); |
| - EXPECT_EQ(1.f, clock_device->rate()); |
| + FakeAudioDecoder* audio_device = GetAudio(); |
| + EXPECT_TRUE(audio_device); |
|
alokp
2015/10/14 23:16:52
can we also check the state?
kmackay
2015/10/15 00:35:54
Done.
|
| CloseStream(stream); |
| } |