| Index: media/cast/test/fake_video_encode_accelerator.cc
|
| diff --git a/media/cast/test/fake_video_encode_accelerator.cc b/media/cast/test/fake_video_encode_accelerator.cc
|
| index 298ad1e20fffb194bfb662e359e5fae5fc7137e9..d27cd9f6be6ca49b78fe64d06c6129aa2552c2e9 100644
|
| --- a/media/cast/test/fake_video_encode_accelerator.cc
|
| +++ b/media/cast/test/fake_video_encode_accelerator.cc
|
| @@ -4,7 +4,10 @@
|
|
|
| #include "media/cast/test/fake_video_encode_accelerator.h"
|
|
|
| +#include "base/bind.h"
|
| +#include "base/location.h"
|
| #include "base/logging.h"
|
| +#include "base/single_thread_task_runner.h"
|
|
|
| namespace media {
|
| namespace cast {
|
| @@ -13,12 +16,18 @@ namespace test {
|
| static const unsigned int kMinimumInputCount = 1;
|
| static const size_t kMinimumOutputBufferSize = 123456;
|
|
|
| -FakeVideoEncodeAccelerator::FakeVideoEncodeAccelerator()
|
| - : client_(NULL), first_(true) {}
|
| +FakeVideoEncodeAccelerator::FakeVideoEncodeAccelerator(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
|
| + : task_runner_(task_runner),
|
| + client_(NULL),
|
| + first_(true),
|
| + weak_this_factory_(this) {}
|
|
|
| -FakeVideoEncodeAccelerator::~FakeVideoEncodeAccelerator() {}
|
| +FakeVideoEncodeAccelerator::~FakeVideoEncodeAccelerator() {
|
| + weak_this_factory_.InvalidateWeakPtrs();
|
| +}
|
|
|
| -void FakeVideoEncodeAccelerator::Initialize(
|
| +bool FakeVideoEncodeAccelerator::Initialize(
|
| media::VideoFrame::Format input_format,
|
| const gfx::Size& input_visible_size,
|
| VideoCodecProfile output_profile,
|
| @@ -27,12 +36,16 @@ void FakeVideoEncodeAccelerator::Initialize(
|
| client_ = client;
|
| if (output_profile != media::VP8PROFILE_MAIN &&
|
| output_profile != media::H264PROFILE_MAIN) {
|
| - client_->NotifyError(kInvalidArgumentError);
|
| - return;
|
| + return false;
|
| }
|
| - client_->NotifyInitializeDone();
|
| - client_->RequireBitstreamBuffers(
|
| - kMinimumInputCount, input_visible_size, kMinimumOutputBufferSize);
|
| + task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&FakeVideoEncodeAccelerator::DoRequireBitstreamBuffers,
|
| + weak_this_factory_.GetWeakPtr(),
|
| + kMinimumInputCount,
|
| + input_visible_size,
|
| + kMinimumOutputBufferSize));
|
| + return true;
|
| }
|
|
|
| void FakeVideoEncodeAccelerator::Encode(const scoped_refptr<VideoFrame>& frame,
|
| @@ -50,7 +63,13 @@ void FakeVideoEncodeAccelerator::Encode(const scoped_refptr<VideoFrame>& frame,
|
| is_key_fame = true;
|
| first_ = false;
|
| }
|
| - client_->BitstreamBufferReady(id, kMinimumOutputBufferSize, is_key_fame);
|
| + task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&FakeVideoEncodeAccelerator::DoBitstreamBufferReady,
|
| + weak_this_factory_.GetWeakPtr(),
|
| + id,
|
| + kMinimumOutputBufferSize,
|
| + is_key_fame));
|
| }
|
|
|
| void FakeVideoEncodeAccelerator::UseOutputBitstreamBuffer(
|
| @@ -66,6 +85,21 @@ void FakeVideoEncodeAccelerator::RequestEncodingParametersChange(
|
|
|
| void FakeVideoEncodeAccelerator::Destroy() { delete this; }
|
|
|
| +void FakeVideoEncodeAccelerator::DoRequireBitstreamBuffers(
|
| + unsigned int input_count,
|
| + const gfx::Size& input_coded_size,
|
| + size_t output_buffer_size) const {
|
| + client_->RequireBitstreamBuffers(
|
| + input_count, input_coded_size, output_buffer_size);
|
| +}
|
| +
|
| +void FakeVideoEncodeAccelerator::DoBitstreamBufferReady(
|
| + int32 bitstream_buffer_id,
|
| + size_t payload_size,
|
| + bool key_frame) const {
|
| + client_->BitstreamBufferReady(bitstream_buffer_id, payload_size, key_frame);
|
| +}
|
| +
|
| } // namespace test
|
| } // namespace cast
|
| } // namespace media
|
|
|