| Index: media/gpu/dxva_video_decode_accelerator_win.cc
|
| diff --git a/media/gpu/dxva_video_decode_accelerator_win.cc b/media/gpu/dxva_video_decode_accelerator_win.cc
|
| index e368dd35728060fa7d46dd57dc67eb3a6809b59f..5d55ae1af79f3fa3f7c7d7da6da341128ef58978 100644
|
| --- a/media/gpu/dxva_video_decode_accelerator_win.cc
|
| +++ b/media/gpu/dxva_video_decode_accelerator_win.cc
|
| @@ -486,6 +486,7 @@ DXVAVideoDecodeAccelerator::PendingSampleInfo::~PendingSampleInfo() {}
|
| DXVAVideoDecodeAccelerator::DXVAVideoDecodeAccelerator(
|
| const GetGLContextCallback& get_gl_context_cb,
|
| const MakeGLContextCurrentCallback& make_context_current_cb,
|
| + const BindGLImageCallback& bind_image_cb,
|
| const gpu::GpuDriverBugWorkarounds& workarounds,
|
| const gpu::GpuPreferences& gpu_preferences)
|
| : client_(NULL),
|
| @@ -498,6 +499,7 @@ DXVAVideoDecodeAccelerator::DXVAVideoDecodeAccelerator(
|
| sent_drain_message_(false),
|
| get_gl_context_cb_(get_gl_context_cb),
|
| make_context_current_cb_(make_context_current_cb),
|
| + bind_image_cb_(bind_image_cb),
|
| codec_(kUnknownVideoCodec),
|
| decoder_thread_("DXVAVideoDecoderThread"),
|
| pending_flush_(false),
|
| @@ -880,11 +882,23 @@ void DXVAVideoDecodeAccelerator::AssignPictureBuffers(
|
| // Copy the picture buffers provided by the client to the available list,
|
| // and mark these buffers as available for use.
|
| for (size_t buffer_index = 0; buffer_index < buffers.size(); ++buffer_index) {
|
| + RETURN_AND_NOTIFY_ON_FAILURE(
|
| + buffers[buffer_index].service_texture_ids().size() ==
|
| + buffers[buffer_index].client_texture_ids().size(),
|
| + "Number of service and client ids do not match", PLATFORM_FAILURE, );
|
| linked_ptr<DXVAPictureBuffer> picture_buffer =
|
| DXVAPictureBuffer::Create(*this, buffers[buffer_index], egl_config_);
|
| RETURN_AND_NOTIFY_ON_FAILURE(picture_buffer.get(),
|
| "Failed to allocate picture buffer",
|
| PLATFORM_FAILURE, );
|
| + if (bind_image_cb_) {
|
| + for (size_t i = 0; i < buffers[buffer_index].client_texture_ids().size();
|
| + i++) {
|
| + bind_image_cb_.Run(buffers[buffer_index].client_texture_ids()[i],
|
| + buffers[buffer_index].service_texture_ids()[i],
|
| + picture_buffer->gl_image(), true);
|
| + }
|
| + }
|
|
|
| bool inserted =
|
| output_picture_buffers_
|
|
|