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

Unified Diff: media/video/video_decode_accelerator.h

Issue 1822983002: Support external buffer import in VDA interface and add a V4L2SVDA impl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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/filters/gpu_video_decoder.cc ('k') | media/video/video_decode_accelerator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/video/video_decode_accelerator.h
diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h
index 6722e2b97193157308fc43e68da692a01cc293bf..950f3c5e32715227fa9f4c491c6d375790d2a4ca 100644
--- a/media/video/video_decode_accelerator.h
+++ b/media/video/video_decode_accelerator.h
@@ -17,6 +17,7 @@
#include "media/base/video_decoder_config.h"
#include "media/video/picture.h"
#include "ui/gfx/geometry/size.h"
+#include "ui/gfx/gpu_memory_buffer.h"
typedef unsigned int GLenum;
@@ -102,6 +103,17 @@ class MEDIA_EXPORT VideoDecodeAccelerator {
struct MEDIA_EXPORT Config {
enum { kNoSurfaceID = SurfaceManager::kNoSurfaceID };
+ // Specifies the allocation and handling mode for output PictureBuffers.
+ // When set to ALLOCATE, the VDA is expected to allocate backing memory
+ // for PictureBuffers at the time of AssignPictureBuffers() call.
+ // When set to IMPORT, the VDA will not allocate, but after receiving
+ // AssignPictureBuffers() call, it will expect a call to
+ // ImportBufferForPicture() for each PictureBuffer before use.
+ enum class OutputMode {
+ ALLOCATE,
+ IMPORT,
+ };
+
Config() = default;
Config(VideoCodecProfile profile);
Config(const VideoDecoderConfig& video_decoder_config);
@@ -125,6 +137,8 @@ class MEDIA_EXPORT VideoDecodeAccelerator {
// Coded size of the video frame hint, subject to change.
gfx::Size initial_expected_coded_size;
+
+ OutputMode output_mode = OutputMode::ALLOCATE;
};
// Interface for collaborating with picture interface to provide memory for
@@ -230,6 +244,19 @@ class MEDIA_EXPORT VideoDecodeAccelerator {
virtual void AssignPictureBuffers(
const std::vector<PictureBuffer>& buffers) = 0;
+ // Imports |gpu_memory_buffer_handles| as backing memory for picture buffer
+ // associated with |picture_buffer_id|. The n-th element in
+ // |gpu_memory_buffer_handles| should be a handle to a GpuMemoryBuffer backing
+ // the n-th plane of the PictureBuffer. This can only be be used if the VDA
+ // has been Initialize()d with config.output_mode = IMPORT, and should be
+ // preceded by a call to AssignPictureBuffers() to set up the number of
+ // PictureBuffers and their details.
+ // After this call, the VDA becomes the owner of the GpuMemoryBufferHandles,
+ // and is responsible for closing them after use, also on import failure.
+ virtual void ImportBufferForPicture(
+ int32_t picture_buffer_id,
+ const std::vector<gfx::GpuMemoryBufferHandle>& gpu_memory_buffer_handles);
+
// Sends picture buffers to be reused by the decoder. This needs to be called
// for each buffer that has been processed so that decoder may know onto which
// picture buffers it can write the output to.
@@ -294,6 +321,10 @@ class MEDIA_EXPORT VideoDecodeAccelerator {
// TODO(dshwang): after moving to D3D11, remove this. crbug.com/438691
virtual GLenum GetSurfaceInternalFormat() const;
+ // In IMPORT OutputMode, if supported by the VDA, return the format that it
+ // requires for imported picture buffers.
+ virtual VideoPixelFormat GetOutputFormat() const;
+
protected:
// Do not delete directly; use Destroy() or own it with a scoped_ptr, which
// will Destroy() it properly by default.
« no previous file with comments | « media/filters/gpu_video_decoder.cc ('k') | media/video/video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698