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

Unified Diff: media/video/gpu_memory_buffer_video_frame_pool.cc

Issue 1412223009: Reland: GpuMemoryBuffer interface change: Map(**) to Map() and memory(plane); stride(plane) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Win X64 compile fix 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
« no previous file with comments | « media/renderers/mock_gpu_video_accelerator_factories.cc ('k') | ui/gfx/buffer_format_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/video/gpu_memory_buffer_video_frame_pool.cc
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
index b1c99b817c6ec03558a898808e5af9c56aa40a41..cfe8d69b00a9c38031156dee6bf067e3057e6c2a 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -436,24 +436,22 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CopyVideoFrameToGpuMemoryBuffers(
if (rows % rows_per_copy)
++copies;
}
- base::Closure copies_done =
+ const base::Closure copies_done =
base::Bind(&PoolImpl::OnCopiesDone, this, video_frame, frame_resources,
frame_ready_cb);
- base::Closure barrier = base::BarrierClosure(copies, copies_done);
+ const base::Closure barrier = base::BarrierClosure(copies, copies_done);
// Post all the async tasks.
for (size_t i = 0; i < num_planes; i += planes_per_copy) {
gfx::GpuMemoryBuffer* buffer =
frame_resources->plane_resources[i].gpu_memory_buffer.get();
- uint8* dest_buffers[VideoFrame::kMaxPlanes] = {0};
- int dest_strides[VideoFrame::kMaxPlanes] = {0};
- if (buffer) {
- DCHECK_EQ(planes_per_copy,
- gfx::NumberOfPlanesForBufferFormat(buffer->GetFormat()));
- bool rv = buffer->Map(reinterpret_cast<void**>(dest_buffers));
- DCHECK(rv);
- buffer->GetStride(dest_strides);
+
+ if (!buffer || !buffer->Map()) {
+ DLOG(ERROR) << "Could not get or Map() buffer";
+ return;
}
+ DCHECK_EQ(planes_per_copy,
+ gfx::NumberOfPlanesForBufferFormat(buffer->GetFormat()));
const int rows = VideoFrame::Rows(i, output_format_, size.height());
const int rows_per_copy = RowsPerCopy(i, output_format_, size.width());
@@ -467,24 +465,26 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CopyVideoFrameToGpuMemoryBuffers(
worker_task_runner_->PostTask(
FROM_HERE, base::Bind(&CopyRowsToI420Buffer, row, rows_to_copy,
bytes_per_row, video_frame->visible_data(i),
- video_frame->stride(i), dest_buffers[0],
- dest_strides[0], barrier));
+ video_frame->stride(i),
+ static_cast<uint8_t*>(buffer->memory(0)),
+ buffer->stride(0), barrier));
break;
}
case PIXEL_FORMAT_NV12:
worker_task_runner_->PostTask(
FROM_HERE,
- base::Bind(&CopyRowsToNV12Buffer, row, rows_to_copy,
- size.width(), video_frame, dest_buffers[0],
- dest_strides[0], dest_buffers[1], dest_strides[1],
- barrier));
+ base::Bind(&CopyRowsToNV12Buffer, row, rows_to_copy, size.width(),
+ video_frame, static_cast<uint8_t*>(buffer->memory(0)),
+ buffer->stride(0),
+ static_cast<uint8_t*>(buffer->memory(1)),
+ buffer->stride(1), barrier));
break;
case PIXEL_FORMAT_UYVY:
worker_task_runner_->PostTask(
FROM_HERE,
base::Bind(&CopyRowsToUYVYBuffer, row, rows_to_copy, size.width(),
- video_frame, dest_buffers[0], dest_strides[0],
- barrier));
+ video_frame, static_cast<uint8_t*>(buffer->memory(0)),
+ buffer->stride(0), barrier));
break;
default:
NOTREACHED();
« no previous file with comments | « media/renderers/mock_gpu_video_accelerator_factories.cc ('k') | ui/gfx/buffer_format_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698