Commit 77faf633 authored by James West's avatar James West Committed by Commit Bot

[Chromecast] Use DecoderBufferBase in CmaBackend

Avoids downcasting CastDecoderBuffer to DecoderBufferBase in multizone
code.

Bug: internal b/62147653
Test: cast_media_unittests
Change-Id: I4b0fe09bd6aee26c5372405a9052252c39be36e5
Reviewed-on: https://chromium-review.googlesource.com/972429
Commit-Queue: James West <jameswest@chromium.org>
Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544890}
parent c0e4c38c
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <memory> #include <memory>
#include <utility> #include <utility>
#include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/time/time.h" #include "base/time/time.h"
...@@ -16,8 +17,8 @@ ...@@ -16,8 +17,8 @@
#include "chromecast/media/audio/cast_audio_manager.h" #include "chromecast/media/audio/cast_audio_manager.h"
#include "chromecast/media/audio/cast_audio_mixer.h" #include "chromecast/media/audio/cast_audio_mixer.h"
#include "chromecast/media/cma/backend/cma_backend.h" #include "chromecast/media/cma/backend/cma_backend.h"
#include "chromecast/media/cma/base/decoder_buffer_base.h"
#include "chromecast/media/cma/test/mock_cma_backend_factory.h" #include "chromecast/media/cma/test/mock_cma_backend_factory.h"
#include "chromecast/public/media/cast_decoder_buffer.h"
#include "chromecast/public/task_runner.h" #include "chromecast/public/task_runner.h"
#include "media/audio/mock_audio_source_callback.h" #include "media/audio/mock_audio_source_callback.h"
#include "media/audio/test_audio_thread.h" #include "media/audio/test_audio_thread.h"
...@@ -71,7 +72,6 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder { ...@@ -71,7 +72,6 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder {
pipeline_status_(PIPELINE_STATUS_OK), pipeline_status_(PIPELINE_STATUS_OK),
pending_push_(false), pending_push_(false),
pushed_buffer_count_(0), pushed_buffer_count_(0),
last_buffer_(nullptr),
delegate_(nullptr) {} delegate_(nullptr) {}
~FakeAudioDecoder() override {} ~FakeAudioDecoder() override {}
...@@ -80,8 +80,8 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder { ...@@ -80,8 +80,8 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder {
DCHECK(delegate); DCHECK(delegate);
delegate_ = delegate; delegate_ = delegate;
} }
BufferStatus PushBuffer(CastDecoderBuffer* buffer) override { BufferStatus PushBuffer(scoped_refptr<DecoderBufferBase> buffer) override {
last_buffer_ = buffer; last_buffer_ = std::move(buffer);
++pushed_buffer_count_; ++pushed_buffer_count_;
switch (pipeline_status_) { switch (pipeline_status_) {
...@@ -126,7 +126,7 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder { ...@@ -126,7 +126,7 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder {
rendering_delay_ = rendering_delay; rendering_delay_ = rendering_delay;
} }
unsigned pushed_buffer_count() const { return pushed_buffer_count_; } unsigned pushed_buffer_count() const { return pushed_buffer_count_; }
CastDecoderBuffer* last_buffer() { return last_buffer_; } const DecoderBufferBase* last_buffer() { return last_buffer_.get(); }
private: private:
const MediaPipelineDeviceParams params_; const MediaPipelineDeviceParams params_;
...@@ -136,7 +136,7 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder { ...@@ -136,7 +136,7 @@ class FakeAudioDecoder : public CmaBackend::AudioDecoder {
PipelineStatus pipeline_status_; PipelineStatus pipeline_status_;
bool pending_push_; bool pending_push_;
int pushed_buffer_count_; int pushed_buffer_count_;
CastDecoderBuffer* last_buffer_; scoped_refptr<DecoderBufferBase> last_buffer_;
Delegate* delegate_; Delegate* delegate_;
RenderingDelay rendering_delay_; RenderingDelay rendering_delay_;
}; };
...@@ -387,7 +387,7 @@ TEST_F(CastAudioOutputStreamTest, PushFrame) { ...@@ -387,7 +387,7 @@ TEST_F(CastAudioOutputStreamTest, PushFrame) {
::media::AudioParameters audio_params = GetAudioParams(); ::media::AudioParameters audio_params = GetAudioParams();
const size_t expected_frame_size = const size_t expected_frame_size =
static_cast<size_t>(audio_params.GetBytesPerBuffer()); static_cast<size_t>(audio_params.GetBytesPerBuffer());
const CastDecoderBuffer* buffer = audio_decoder->last_buffer(); const DecoderBufferBase* buffer = audio_decoder->last_buffer();
EXPECT_TRUE(buffer->data()); EXPECT_TRUE(buffer->data());
EXPECT_EQ(expected_frame_size, buffer->data_size()); EXPECT_EQ(expected_frame_size, buffer->data_size());
EXPECT_FALSE(buffer->decrypt_config()); // Null because of raw audio. EXPECT_FALSE(buffer->decrypt_config()); // Null because of raw audio.
......
...@@ -30,6 +30,8 @@ cast_source_set("backend") { ...@@ -30,6 +30,8 @@ cast_source_set("backend") {
"media_pipeline_backend_manager.h", "media_pipeline_backend_manager.h",
"media_pipeline_backend_wrapper.cc", "media_pipeline_backend_wrapper.cc",
"media_pipeline_backend_wrapper.h", "media_pipeline_backend_wrapper.h",
"video_decoder_wrapper.cc",
"video_decoder_wrapper.h",
] ]
public_deps = [ public_deps = [
......
...@@ -5,8 +5,9 @@ ...@@ -5,8 +5,9 @@
#include "chromecast/media/cma/backend/audio_decoder_software_wrapper.h" #include "chromecast/media/cma/backend/audio_decoder_software_wrapper.h"
#include "base/test/scoped_task_environment.h" #include "base/test/scoped_task_environment.h"
#include "chromecast/media/cma/test/mock_cma_backend.h" #include "chromecast/public/media/cast_decoder_buffer.h"
#include "chromecast/public/media/decoder_config.h" #include "chromecast/public/media/decoder_config.h"
#include "chromecast/public/media/media_pipeline_backend.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -17,13 +18,27 @@ using ::testing::_; ...@@ -17,13 +18,27 @@ using ::testing::_;
namespace chromecast { namespace chromecast {
namespace media { namespace media {
namespace {
class MockAudioDecoder : public MediaPipelineBackend::AudioDecoder {
public:
MOCK_METHOD1(SetDelegate, void(Delegate*));
MOCK_METHOD1(PushBuffer, BufferStatus(CastDecoderBuffer*));
MOCK_METHOD1(SetConfig, bool(const AudioConfig&));
MOCK_METHOD1(SetVolume, bool(float));
MOCK_METHOD0(GetRenderingDelay, RenderingDelay());
MOCK_METHOD1(GetStatistics, void(Statistics*));
};
} // namespace
class AudioDecoderSoftwareWrapperTest : public ::testing::Test { class AudioDecoderSoftwareWrapperTest : public ::testing::Test {
public: public:
AudioDecoderSoftwareWrapperTest() AudioDecoderSoftwareWrapperTest()
: audio_decoder_software_wrapper_(&audio_decoder_) {} : audio_decoder_software_wrapper_(&audio_decoder_) {}
base::test::ScopedTaskEnvironment scoped_task_environment_; base::test::ScopedTaskEnvironment scoped_task_environment_;
MockCmaBackend::AudioDecoder audio_decoder_; MockAudioDecoder audio_decoder_;
AudioDecoderSoftwareWrapper audio_decoder_software_wrapper_; AudioDecoderSoftwareWrapper audio_decoder_software_wrapper_;
}; };
......
...@@ -57,14 +57,14 @@ void AudioDecoderWrapper::SetDelegate(Delegate* delegate) { ...@@ -57,14 +57,14 @@ void AudioDecoderWrapper::SetDelegate(Delegate* delegate) {
} }
CmaBackend::BufferStatus AudioDecoderWrapper::PushBuffer( CmaBackend::BufferStatus AudioDecoderWrapper::PushBuffer(
CastDecoderBuffer* buffer) { scoped_refptr<DecoderBufferBase> buffer) {
if (buffer_delegate_ && buffer_delegate_->IsActive()) { if (buffer_delegate_ && buffer_delegate_->IsActive()) {
// Mute the decoder, we are sending audio to delegate. // Mute the decoder, we are sending audio to delegate.
if (!delegate_active_) { if (!delegate_active_) {
delegate_active_ = true; delegate_active_ = true;
decoder_.SetVolume(0.0); decoder_.SetVolume(0.0);
} }
buffer_delegate_->OnPushBuffer(buffer); buffer_delegate_->OnPushBuffer(buffer.get());
} else { } else {
// Restore original volume. // Restore original volume.
if (delegate_active_) { if (delegate_active_) {
...@@ -75,7 +75,7 @@ CmaBackend::BufferStatus AudioDecoderWrapper::PushBuffer( ...@@ -75,7 +75,7 @@ CmaBackend::BufferStatus AudioDecoderWrapper::PushBuffer(
} }
} }
} }
return decoder_.PushBuffer(buffer); return decoder_.PushBuffer(buffer.get());
} }
bool AudioDecoderWrapper::SetConfig(const AudioConfig& config) { bool AudioDecoderWrapper::SetConfig(const AudioConfig& config) {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define CHROMECAST_MEDIA_CMA_BACKEND_AUDIO_DECODER_WRAPPER_H_ #define CHROMECAST_MEDIA_CMA_BACKEND_AUDIO_DECODER_WRAPPER_H_
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "chromecast/media/cma/backend/audio_decoder_software_wrapper.h" #include "chromecast/media/cma/backend/audio_decoder_software_wrapper.h"
#include "chromecast/media/cma/backend/cma_backend.h" #include "chromecast/media/cma/backend/cma_backend.h"
#include "chromecast/media/cma/backend/media_pipeline_backend_manager.h" #include "chromecast/media/cma/backend/media_pipeline_backend_manager.h"
...@@ -32,7 +33,7 @@ class AudioDecoderWrapper : public CmaBackend::AudioDecoder { ...@@ -32,7 +33,7 @@ class AudioDecoderWrapper : public CmaBackend::AudioDecoder {
private: private:
// CmaBackend::AudioDecoder implementation: // CmaBackend::AudioDecoder implementation:
void SetDelegate(Delegate* delegate) override; void SetDelegate(Delegate* delegate) override;
BufferStatus PushBuffer(CastDecoderBuffer* buffer) override; BufferStatus PushBuffer(scoped_refptr<DecoderBufferBase> buffer) override;
bool SetConfig(const AudioConfig& config) override; bool SetConfig(const AudioConfig& config) override;
bool SetVolume(float multiplier) override; bool SetVolume(float multiplier) override;
RenderingDelay GetRenderingDelay() override; RenderingDelay GetRenderingDelay() override;
......
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
#include <stdint.h> #include <stdint.h>
#include "base/memory/ref_counted.h"
#include "chromecast/media/cma/base/decoder_buffer_base.h"
#include "chromecast/public/media/decoder_config.h"
#include "chromecast/public/media/media_pipeline_backend.h" #include "chromecast/public/media/media_pipeline_backend.h"
namespace chromecast { namespace chromecast {
...@@ -20,11 +23,36 @@ namespace media { ...@@ -20,11 +23,36 @@ namespace media {
class CmaBackend { class CmaBackend {
public: public:
using BufferStatus = MediaPipelineBackend::BufferStatus; using BufferStatus = MediaPipelineBackend::BufferStatus;
using Decoder = MediaPipelineBackend::Decoder;
using VideoDecoder = MediaPipelineBackend::VideoDecoder;
class AudioDecoder : public MediaPipelineBackend::AudioDecoder { class Decoder {
public: public:
using BufferStatus = MediaPipelineBackend::BufferStatus;
using Delegate = MediaPipelineBackend::Decoder::Delegate;
// These methods have the same behavior as the corresponding methods on
// MediaPipelineBackend::Decoder.
// See chromecast/public/media/media_pipeline_backend.h for documentation.
virtual void SetDelegate(Delegate* delegate) = 0;
virtual BufferStatus PushBuffer(
scoped_refptr<DecoderBufferBase> buffer) = 0;
protected:
virtual ~Decoder() = default;
};
class AudioDecoder : public Decoder {
public:
using RenderingDelay = MediaPipelineBackend::AudioDecoder::RenderingDelay;
using Statistics = MediaPipelineBackend::AudioDecoder::Statistics;
// These methods have the same behavior as the corresponding methods on
// MediaPipelineBackend::AudioDecoder.
// See chromecast/public/media/media_pipeline_backend.h for documentation.
virtual bool SetConfig(const AudioConfig& config) = 0;
virtual bool SetVolume(float multiplier) = 0;
virtual RenderingDelay GetRenderingDelay() = 0;
virtual void GetStatistics(Statistics* statistics) = 0;
// Returns true if the audio decoder requires that encrypted buffers be // Returns true if the audio decoder requires that encrypted buffers be
// decrypted before being passed to PushBuffer(). The return value may // decrypted before being passed to PushBuffer(). The return value may
// change whenever SetConfig() is called or the backend is initialized. // change whenever SetConfig() is called or the backend is initialized.
...@@ -34,6 +62,20 @@ class CmaBackend { ...@@ -34,6 +62,20 @@ class CmaBackend {
~AudioDecoder() override = default; ~AudioDecoder() override = default;
}; };
class VideoDecoder : public Decoder {
public:
using Statistics = MediaPipelineBackend::VideoDecoder::Statistics;
// These methods have the same behavior as the corresponding methods on
// MediaPipelineBackend::VideoDecoder.
// See chromecast/public/media/media_pipeline_backend.h for documentation.
virtual bool SetConfig(const VideoConfig& config) = 0;
virtual void GetStatistics(Statistics* statistics) = 0;
protected:
~VideoDecoder() override = default;
};
virtual ~CmaBackend() = default; virtual ~CmaBackend() = default;
// These methods have the same behavior as the corresponding methods on // These methods have the same behavior as the corresponding methods on
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "chromecast/media/cma/backend/audio_decoder_wrapper.h" #include "chromecast/media/cma/backend/audio_decoder_wrapper.h"
#include "chromecast/media/cma/backend/media_pipeline_backend_manager.h" #include "chromecast/media/cma/backend/media_pipeline_backend_manager.h"
#include "chromecast/media/cma/backend/video_decoder_wrapper.h"
#include "chromecast/public/cast_media_shlib.h" #include "chromecast/public/cast_media_shlib.h"
#include "chromecast/public/media/media_pipeline_backend.h" #include "chromecast/public/media/media_pipeline_backend.h"
#include "chromecast/public/volume_control.h" #include "chromecast/public/volume_control.h"
...@@ -25,7 +26,6 @@ MediaPipelineBackendWrapper::MediaPipelineBackendWrapper( ...@@ -25,7 +26,6 @@ MediaPipelineBackendWrapper::MediaPipelineBackendWrapper(
backend_manager_(backend_manager), backend_manager_(backend_manager),
audio_stream_type_(params.audio_type), audio_stream_type_(params.audio_type),
content_type_(params.content_type), content_type_(params.content_type),
have_video_decoder_(false),
playing_(false) { playing_(false) {
DCHECK(backend_); DCHECK(backend_);
DCHECK(backend_manager_); DCHECK(backend_manager_);
...@@ -39,7 +39,7 @@ MediaPipelineBackendWrapper::~MediaPipelineBackendWrapper() { ...@@ -39,7 +39,7 @@ MediaPipelineBackendWrapper::~MediaPipelineBackendWrapper() {
backend_manager_->UpdatePlayingAudioCount(IsSfx(), -1); backend_manager_->UpdatePlayingAudioCount(IsSfx(), -1);
} }
} }
if (have_video_decoder_) { if (video_decoder_) {
backend_manager_->DecrementDecoderCount(DecoderType::VIDEO_DECODER); backend_manager_->DecrementDecoderCount(DecoderType::VIDEO_DECODER);
} }
} }
...@@ -78,13 +78,18 @@ CmaBackend::AudioDecoder* MediaPipelineBackendWrapper::CreateAudioDecoder() { ...@@ -78,13 +78,18 @@ CmaBackend::AudioDecoder* MediaPipelineBackendWrapper::CreateAudioDecoder() {
} }
CmaBackend::VideoDecoder* MediaPipelineBackendWrapper::CreateVideoDecoder() { CmaBackend::VideoDecoder* MediaPipelineBackendWrapper::CreateVideoDecoder() {
DCHECK(!have_video_decoder_); DCHECK(!video_decoder_);
if (!backend_manager_->IncrementDecoderCount(DecoderType::VIDEO_DECODER)) if (!backend_manager_->IncrementDecoderCount(DecoderType::VIDEO_DECODER))
return nullptr; return nullptr;
have_video_decoder_ = true; MediaPipelineBackend::VideoDecoder* real_decoder =
backend_->CreateVideoDecoder();
if (!real_decoder) {
return nullptr;
}
return backend_->CreateVideoDecoder(); video_decoder_ = std::make_unique<VideoDecoderWrapper>(real_decoder);
return video_decoder_.get();
} }
bool MediaPipelineBackendWrapper::Initialize() { bool MediaPipelineBackendWrapper::Initialize() {
......
...@@ -20,6 +20,7 @@ namespace media { ...@@ -20,6 +20,7 @@ namespace media {
enum class AudioContentType; enum class AudioContentType;
class AudioDecoderWrapper; class AudioDecoderWrapper;
class VideoDecoderWrapper;
class MediaPipelineBackend; class MediaPipelineBackend;
class MediaPipelineBackendManager; class MediaPipelineBackendManager;
...@@ -57,8 +58,8 @@ class MediaPipelineBackendWrapper : public CmaBackend { ...@@ -57,8 +58,8 @@ class MediaPipelineBackendWrapper : public CmaBackend {
const AudioContentType content_type_; const AudioContentType content_type_;
std::unique_ptr<AudioDecoderWrapper> audio_decoder_; std::unique_ptr<AudioDecoderWrapper> audio_decoder_;
std::unique_ptr<VideoDecoderWrapper> video_decoder_;
bool have_video_decoder_;
bool playing_; bool playing_;
DISALLOW_COPY_AND_ASSIGN(MediaPipelineBackendWrapper); DISALLOW_COPY_AND_ASSIGN(MediaPipelineBackendWrapper);
......
// Copyright 2018 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.
#include "chromecast/media/cma/backend/video_decoder_wrapper.h"
#include "chromecast/media/cma/base/decoder_buffer_base.h"
namespace chromecast {
namespace media {
VideoDecoderWrapper::VideoDecoderWrapper(
MediaPipelineBackend::VideoDecoder* decoder)
: decoder_(decoder) {
DCHECK(decoder_);
}
VideoDecoderWrapper::~VideoDecoderWrapper() = default;
void VideoDecoderWrapper::SetDelegate(
media::CmaBackend::VideoDecoder::Delegate* delegate) {
decoder_->SetDelegate(delegate);
}
media::CmaBackend::BufferStatus VideoDecoderWrapper::PushBuffer(
scoped_refptr<media::DecoderBufferBase> buffer) {
return decoder_->PushBuffer(buffer.get());
}
bool VideoDecoderWrapper::SetConfig(const media::VideoConfig& config) {
return decoder_->SetConfig(config);
}
void VideoDecoderWrapper::GetStatistics(Statistics* statistics) {
decoder_->GetStatistics(statistics);
}
} // namespace media
} // namespace chromecast
// Copyright 2018 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.
#ifndef CHROMECAST_MEDIA_CMA_BACKEND_VIDEO_DECODER_WRAPPER_H_
#define CHROMECAST_MEDIA_CMA_BACKEND_VIDEO_DECODER_WRAPPER_H_
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "chromecast/media/cma/backend/cma_backend.h"
#include "chromecast/public/media/decoder_config.h"
#include "chromecast/public/media/media_pipeline_backend.h"
namespace chromecast {
namespace media {
class DecoderBufferBase;
class VideoDecoderWrapper : public CmaBackend::VideoDecoder {
public:
explicit VideoDecoderWrapper(MediaPipelineBackend::VideoDecoder* decoder);
~VideoDecoderWrapper() override;
private:
// CmaBackend::VideoDecoder implementation:
void SetDelegate(Delegate* delegate) override;
BufferStatus PushBuffer(scoped_refptr<DecoderBufferBase> buffer) override;
bool SetConfig(const VideoConfig& config) override;
void GetStatistics(Statistics* statistics) override;
MediaPipelineBackend::VideoDecoder* const decoder_;
DISALLOW_COPY_AND_ASSIGN(VideoDecoderWrapper);
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_MEDIA_CMA_BACKEND_VIDEO_DECODER_WRAPPER_H_
...@@ -277,7 +277,7 @@ void AvPipelineImpl::PushReadyBuffer(scoped_refptr<DecoderBufferBase> buffer) { ...@@ -277,7 +277,7 @@ void AvPipelineImpl::PushReadyBuffer(scoped_refptr<DecoderBufferBase> buffer) {
pushed_buffer_ = std::move(buffer); pushed_buffer_ = std::move(buffer);
CmaBackend::BufferStatus status = decoder_->PushBuffer(pushed_buffer_.get()); CmaBackend::BufferStatus status = decoder_->PushBuffer(pushed_buffer_);
if (status != CmaBackend::BufferStatus::kBufferPending) if (status != CmaBackend::BufferStatus::kBufferPending)
OnPushBufferComplete(status); OnPushBufferComplete(status);
......
...@@ -7,7 +7,9 @@ ...@@ -7,7 +7,9 @@
#include <string> #include <string>
#include "base/memory/ref_counted.h"
#include "chromecast/media/cma/backend/cma_backend.h" #include "chromecast/media/cma/backend/cma_backend.h"
#include "chromecast/media/cma/base/decoder_buffer_base.h"
#include "chromecast/public/graphics_types.h" #include "chromecast/public/graphics_types.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
...@@ -33,7 +35,7 @@ class MockCmaBackend : public CmaBackend { ...@@ -33,7 +35,7 @@ class MockCmaBackend : public CmaBackend {
AudioDecoder(); AudioDecoder();
~AudioDecoder() override; ~AudioDecoder() override;
MOCK_METHOD1(SetDelegate, void(Delegate*)); MOCK_METHOD1(SetDelegate, void(Delegate*));
MOCK_METHOD1(PushBuffer, BufferStatus(CastDecoderBuffer*)); MOCK_METHOD1(PushBuffer, BufferStatus(scoped_refptr<DecoderBufferBase>));
MOCK_METHOD1(SetConfig, bool(const AudioConfig&)); MOCK_METHOD1(SetConfig, bool(const AudioConfig&));
MOCK_METHOD1(SetVolume, bool(float)); MOCK_METHOD1(SetVolume, bool(float));
MOCK_METHOD0(GetRenderingDelay, RenderingDelay()); MOCK_METHOD0(GetRenderingDelay, RenderingDelay());
...@@ -46,7 +48,7 @@ class MockCmaBackend : public CmaBackend { ...@@ -46,7 +48,7 @@ class MockCmaBackend : public CmaBackend {
VideoDecoder(); VideoDecoder();
~VideoDecoder() override; ~VideoDecoder() override;
MOCK_METHOD1(SetDelegate, void(Delegate*)); MOCK_METHOD1(SetDelegate, void(Delegate*));
MOCK_METHOD1(PushBuffer, BufferStatus(CastDecoderBuffer*)); MOCK_METHOD1(PushBuffer, BufferStatus(scoped_refptr<DecoderBufferBase>));
MOCK_METHOD1(SetConfig, bool(const VideoConfig&)); MOCK_METHOD1(SetConfig, bool(const VideoConfig&));
MOCK_METHOD1(GetStatistics, void(Statistics*)); MOCK_METHOD1(GetStatistics, void(Statistics*));
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment