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

Unified Diff: content/renderer/media/video_capture_impl.cc

Issue 1427543002: Modified old wait sync point functions to also accept new sync tokens. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mock gpu video accelerator factory Created 5 years, 2 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
Index: content/renderer/media/video_capture_impl.cc
diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc
index 46ab7c1cdf0953fb4fe1f777e93eb1559fae7c9f..cf863d248fb7f0c7c3de82fbdea4b8d1b345e828 100644
--- a/content/renderer/media/video_capture_impl.cc
+++ b/content/renderer/media/video_capture_impl.cc
@@ -31,8 +31,12 @@ namespace {
// VideoCaptureImpl::DidFinishConsumingFrame() will read the value saved here,
// and pass it back to the IO thread to pass back to the host via the
// BufferReady IPC.
-void SaveReleaseSyncPoint(uint32* storage, uint32 release_sync_point) {
- *storage = release_sync_point;
+void SaveReleaseSyncPoint(uint32* sync_point_storage,
+ gpu::SyncToken* sync_token_storage,
+ uint32 release_sync_point,
+ const gpu::SyncToken& release_sync_token) {
+ *sync_point_storage = release_sync_point;
+ *sync_token_storage = release_sync_token;
}
} // namespace
@@ -314,7 +318,8 @@ void VideoCaptureImpl::OnBufferReceived(
const std::vector<gpu::MailboxHolder>& mailbox_holders) {
DCHECK(io_task_runner_->BelongsToCurrentThread());
if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_) {
- Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id, 0, -1.0));
+ Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id, 0,
+ gpu::SyncToken(), -1.0));
return;
}
if (first_frame_timestamp_.is_null())
@@ -327,8 +332,9 @@ void VideoCaptureImpl::OnBufferReceived(
(timestamp - first_frame_timestamp_).ToInternalValue());
scoped_refptr<media::VideoFrame> frame;
- base::Callback<void(uint32, double)> buffer_finished_callback;
+ BufferFinishedCB buffer_finished_callback;
uint32* release_sync_point_storage = new uint32(0);
+ gpu::SyncToken* release_sync_token_storage = new gpu::SyncToken;
dcheng 2015/10/27 19:09:28 It doesn't have to be this CL, but can we make own
David Yen 2015/10/28 22:03:43 I will create a follow up CL for this.
if (mailbox_holders.empty()) {
DCHECK_EQ(media::PIXEL_FORMAT_I420, pixel_format);
const auto& iter = client_buffers_.find(buffer_id);
@@ -359,12 +365,10 @@ void VideoCaptureImpl::OnBufferReceived(
media::VideoFrame::NumPlanes(media::PIXEL_FORMAT_ARGB)) {
DCHECK_EQ(media::PIXEL_FORMAT_ARGB, pixel_format);
frame = media::VideoFrame::WrapNativeTexture(
- pixel_format,
- mailbox_holders[0],
- base::Bind(&SaveReleaseSyncPoint, release_sync_point_storage),
- coded_size,
- gfx::Rect(coded_size),
- coded_size,
+ pixel_format, mailbox_holders[0],
+ base::Bind(&SaveReleaseSyncPoint, release_sync_point_storage,
+ release_sync_token_storage),
+ coded_size, gfx::Rect(coded_size), coded_size,
timestamp - first_frame_timestamp_);
} else if (mailbox_holders.size() ==
media::VideoFrame::NumPlanes(media::PIXEL_FORMAT_I420)) {
@@ -376,10 +380,9 @@ void VideoCaptureImpl::OnBufferReceived(
mailbox_holders[media::VideoFrame::kYPlane],
mailbox_holders[media::VideoFrame::kUPlane],
mailbox_holders[media::VideoFrame::kVPlane],
- base::Bind(&SaveReleaseSyncPoint, release_sync_point_storage),
- coded_size,
- gfx::Rect(coded_size),
- coded_size,
+ base::Bind(&SaveReleaseSyncPoint, release_sync_point_storage,
+ release_sync_token_storage),
+ coded_size, gfx::Rect(coded_size), coded_size,
timestamp - first_frame_timestamp_);
}
buffer_finished_callback = media::BindToCurrentLoop(
@@ -390,7 +393,8 @@ void VideoCaptureImpl::OnBufferReceived(
timestamp);
frame->AddDestructionObserver(
base::Bind(&VideoCaptureImpl::DidFinishConsumingFrame, frame->metadata(),
- release_sync_point_storage, buffer_finished_callback));
+ release_sync_point_storage, release_sync_token_storage,
+ buffer_finished_callback));
frame->metadata()->MergeInternalValuesFrom(metadata);
@@ -402,19 +406,22 @@ void VideoCaptureImpl::OnClientBufferFinished(
int buffer_id,
const scoped_refptr<ClientBuffer>& /* ignored_buffer */,
uint32 release_sync_point,
+ const gpu::SyncToken& release_sync_token,
double consumer_resource_utilization) {
DCHECK(io_task_runner_->BelongsToCurrentThread());
- Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id,
- release_sync_point,
- consumer_resource_utilization));
+ Send(new VideoCaptureHostMsg_BufferReady(
+ device_id_, buffer_id, release_sync_point, release_sync_token,
+ consumer_resource_utilization));
}
void VideoCaptureImpl::OnClientBufferFinished2(
int buffer_id,
const scoped_refptr<ClientBuffer2>& gpu_memory_buffer /* ignored_buffer */,
uint32 release_sync_point,
+ const gpu::SyncToken& release_sync_token,
double consumer_resource_utilization) {
OnClientBufferFinished(buffer_id, scoped_refptr<ClientBuffer>(),
- release_sync_point, consumer_resource_utilization);
+ release_sync_point, release_sync_token,
+ consumer_resource_utilization);
}
void VideoCaptureImpl::OnStateChanged(VideoCaptureState state) {
@@ -551,7 +558,8 @@ bool VideoCaptureImpl::RemoveClient(int client_id, ClientInfoMap* clients) {
void VideoCaptureImpl::DidFinishConsumingFrame(
const media::VideoFrameMetadata* metadata,
uint32* release_sync_point_storage,
- const base::Callback<void(uint32, double)>& callback_to_io_thread) {
+ gpu::SyncToken* release_sync_token_storage,
+ const BufferFinishedCB& callback_to_io_thread) {
// Note: This function may be called on any thread by the VideoFrame
// destructor. |metadata| is still valid for read-access at this point.
@@ -561,13 +569,20 @@ void VideoCaptureImpl::DidFinishConsumingFrame(
delete release_sync_point_storage;
}
+ gpu::SyncToken release_sync_token;
+ if (release_sync_token_storage) {
+ release_sync_token = *release_sync_token_storage;
+ delete release_sync_token_storage;
+ }
+
double consumer_resource_utilization = -1.0;
if (!metadata->GetDouble(media::VideoFrameMetadata::RESOURCE_UTILIZATION,
&consumer_resource_utilization)) {
consumer_resource_utilization = -1.0;
}
- callback_to_io_thread.Run(release_sync_point, consumer_resource_utilization);
+ callback_to_io_thread.Run(release_sync_point, release_sync_token,
+ consumer_resource_utilization);
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698