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(); |