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

Unified Diff: media/cast/test/fake_video_encode_accelerator.cc

Issue 185403020: Make VEA client of command buffer; move sync. IPC to VDA/VEA::Initialize() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 7da5b6ec Rebase. Created 6 years, 9 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
« no previous file with comments | « media/cast/test/fake_video_encode_accelerator.h ('k') | media/cast/video_sender/external_video_encoder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « media/cast/test/fake_video_encode_accelerator.h ('k') | media/cast/video_sender/external_video_encoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698