Chromium Code Reviews| Index: media/gpu/ipc/client/gpu_video_decode_accelerator_host.cc |
| diff --git a/media/gpu/ipc/client/gpu_video_decode_accelerator_host.cc b/media/gpu/ipc/client/gpu_video_decode_accelerator_host.cc |
| index 6820ea1db7964ad7094d665da4313859733e3d7a..de43cf92938ec6aa83a9bb882ece615520e67b61 100644 |
| --- a/media/gpu/ipc/client/gpu_video_decode_accelerator_host.cc |
| +++ b/media/gpu/ipc/client/gpu_video_decode_accelerator_host.cc |
| @@ -51,7 +51,7 @@ bool GpuVideoDecodeAcceleratorHost::OnMessageReceived(const IPC::Message& msg) { |
| IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_BitstreamBufferProcessed, |
| OnBitstreamBufferProcessed) |
| IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_ProvidePictureBuffers, |
| - OnProvidePictureBuffer) |
| + OnProvidePictureBuffers) |
| IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_PictureReady, |
| OnPictureReady) |
| IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_FlushDone, OnFlushDone) |
| @@ -130,7 +130,18 @@ void GpuVideoDecodeAcceleratorHost::AssignPictureBuffers( |
| // Rearrange data for IPC command. |
| std::vector<int32_t> buffer_ids; |
| std::vector<PictureBuffer::TextureIds> texture_ids; |
| - for (uint32_t i = 0; i < buffers.size(); i++) { |
| + uint32_t texture_target = 0; |
| + VideoPixelFormat format = PIXEL_FORMAT_UNKNOWN; |
| + gfx::Size size; |
| + |
| + uint32_t buffers_size = buffers.size(); |
| + if (buffers_size) { |
| + texture_target = buffers[0].texture_target(); |
|
dcheng
2017/05/18 14:15:41
Is it possible (via something malicious) that the
Chandan
2017/05/18 19:38:53
Can you pls elaborate a bit on 'matching attribute
liberato (no reviews please)
2017/05/18 20:07:01
hrm, it's a good point that i hadn't considerd.
i
Chandan
2017/05/18 20:36:36
Ok. I will remove these 3 extra params from IPC th
|
| + format = buffers[0].pixel_format(); |
| + size = buffers[0].size(); |
| + } |
| + |
| + for (uint32_t i = 0; i < buffers_size; i++) { |
| const PictureBuffer& buffer = buffers[i]; |
| if (buffer.size() != picture_buffer_dimensions_) { |
| DLOG(ERROR) << "buffer.size() invalid: expected " |
| @@ -142,8 +153,10 @@ void GpuVideoDecodeAcceleratorHost::AssignPictureBuffers( |
| texture_ids.push_back(buffer.client_texture_ids()); |
| buffer_ids.push_back(buffer.id()); |
| } |
| + |
| Send(new AcceleratedVideoDecoderMsg_AssignPictureBuffers( |
| - decoder_route_id_, buffer_ids, texture_ids)); |
| + decoder_route_id_, buffer_ids, texture_ids, texture_target, format, |
| + size)); |
| } |
| void GpuVideoDecodeAcceleratorHost::ReusePictureBuffer( |
| @@ -225,7 +238,7 @@ void GpuVideoDecodeAcceleratorHost::OnBitstreamBufferProcessed( |
| client_->NotifyEndOfBitstreamBuffer(bitstream_buffer_id); |
| } |
| -void GpuVideoDecodeAcceleratorHost::OnProvidePictureBuffer( |
| +void GpuVideoDecodeAcceleratorHost::OnProvidePictureBuffers( |
| uint32_t num_requested_buffers, |
| VideoPixelFormat format, |
| uint32_t textures_per_buffer, |