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

Unified Diff: content/common/gpu/media/vaapi_video_decode_accelerator.cc

Issue 858653002: vaapi plumbing to allow hardware video overlays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix unittests build Created 5 years, 11 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/common/gpu/media/vaapi_video_decode_accelerator.cc
diff --git a/content/common/gpu/media/vaapi_video_decode_accelerator.cc b/content/common/gpu/media/vaapi_video_decode_accelerator.cc
index 90c0cdda7124dca69be4e032e21bf41af8b79fd3..d24744d715fb386baa4787e4cfe65e22cf8b808e 100644
--- a/content/common/gpu/media/vaapi_video_decode_accelerator.cc
+++ b/content/common/gpu/media/vaapi_video_decode_accelerator.cc
@@ -15,6 +15,7 @@
#include "media/base/bind_to_current_loop.h"
#include "media/video/picture.h"
#include "ui/gl/gl_bindings.h"
+#include "ui/gl/gl_image.h"
static void ReportToUMA(
content::VaapiH264Decoder::VAVDAH264DecoderFailure failure) {
@@ -72,7 +73,9 @@ VaapiPicture* VaapiVideoDecodeAccelerator::PictureById(
}
VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
- const base::Callback<bool(void)>& make_context_current)
+ const base::Callback<bool(void)>& make_context_current,
+ const base::Callback<void(uint32, uint32, scoped_refptr<gfx::GLImage>)>&
+ bind_image)
: make_context_current_(make_context_current),
state_(kUninitialized),
input_ready_(&lock_),
@@ -84,6 +87,7 @@ VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
finish_flush_pending_(false),
awaiting_va_surfaces_recycle_(false),
requested_num_pics_(0),
+ bind_image_(bind_image),
weak_this_factory_(this) {
weak_this_ = weak_this_factory_.GetWeakPtr();
va_surface_release_cb_ = media::BindToCurrentLoop(
@@ -186,8 +190,9 @@ void VaapiVideoDecodeAccelerator::OutputPicture(
// TODO(posciak): Use visible size from decoder here instead
// (crbug.com/402760).
if (client_)
- client_->PictureReady(
- media::Picture(output_id, input_id, gfx::Rect(picture->size()), false));
+ client_->PictureReady(media::Picture(output_id, input_id,
+ gfx::Rect(picture->size()),
+ picture->AllowOverlay()));
}
void VaapiVideoDecodeAccelerator::TryOutputSurface() {
@@ -525,6 +530,12 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
vaapi_wrapper_.get(), make_context_current_, buffers[i].id(),
buffers[i].texture_id(), requested_pic_size_));
+ scoped_refptr<gfx::GLImage> image = picture->GetImageToBind();
+ if (image) {
+ bind_image_.Run(buffers[i].internal_texture_id(),
+ VaapiPicture::GetGLTextureTarget(), image);
+ }
+
RETURN_AND_NOTIFY_ON_FAILURE(
picture.get(), "Failed assigning picture buffer to a texture.",
PLATFORM_FAILURE, );

Powered by Google App Engine
This is Rietveld 408576698