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

Unified Diff: media/gpu/v4l2_image_processor.h

Issue 2191263002: V4L2VideoDecodeAccelerator: support external buffer import (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: small improvement Created 4 years, 3 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 | « no previous file | media/gpu/v4l2_image_processor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/gpu/v4l2_image_processor.h
diff --git a/media/gpu/v4l2_image_processor.h b/media/gpu/v4l2_image_processor.h
index 337face0127547a47fd00281817a0a30b76a26d5..bbebe8d01670bc4d8dd791e1e89ab9f29c8364d1 100644
--- a/media/gpu/v4l2_image_processor.h
+++ b/media/gpu/v4l2_image_processor.h
@@ -41,6 +41,7 @@ class MEDIA_GPU_EXPORT V4L2ImageProcessor {
bool Initialize(VideoPixelFormat input_format,
VideoPixelFormat output_format,
v4l2_memory input_memory_type,
+ v4l2_memory output_memory_type,
gfx::Size input_visible_size,
gfx::Size input_allocated_size,
gfx::Size output_visible_size,
@@ -84,9 +85,13 @@ class MEDIA_GPU_EXPORT V4L2ImageProcessor {
// Called by client to process |frame|. The resulting processed frame will be
// stored in |output_buffer_index| output buffer and notified via |cb|. The
// processor will drop all its references to |frame| after it finishes
- // accessing it.
- void Process(const scoped_refptr<VideoFrame>& frame,
+ // accessing it. If |output_memory_type_| is V4L2_MEMORY_DMABUF, the caller
+ // should pass non-empty |output_dmabuf_fds| and the processed frame will be
+ // stored in those buffers. If the number of |output_dmabuf_fds| is not
+ // expected, this function will return false.
+ bool Process(const scoped_refptr<VideoFrame>& frame,
int output_buffer_index,
+ std::vector<base::ScopedFD> output_dmabuf_fds,
const FrameReadyCB& cb);
// Reset all processing frames. After this method returns, no more callbacks
@@ -110,19 +115,26 @@ class MEDIA_GPU_EXPORT V4L2ImageProcessor {
// Record for output buffers.
struct OutputRecord {
OutputRecord();
+ OutputRecord(OutputRecord&&) = default;
~OutputRecord();
bool at_device;
+ // The processed frame will be stored in these buffers if
+ // |output_memory_type_| is V4L2_MEMORY_DMABUF
+ std::vector<base::ScopedFD> dmabuf_fds;
};
// Job record. Jobs are processed in a FIFO order. This is separate from
// InputRecord, because an InputRecord may be returned before we dequeue
// the corresponding output buffer. The processed frame will be stored in
- // |output_buffer_index| output buffer.
+ // |output_buffer_index| output buffer. If |output_memory_type_| is
+ // V4L2_MEMORY_DMABUF, the processed frame will be stored in
+ // |output_dmabuf_fds|.
struct JobRecord {
JobRecord();
~JobRecord();
scoped_refptr<VideoFrame> frame;
int output_buffer_index;
+ std::vector<base::ScopedFD> output_dmabuf_fds;
FrameReadyCB ready_cb;
};
@@ -164,6 +176,7 @@ class MEDIA_GPU_EXPORT V4L2ImageProcessor {
VideoPixelFormat input_format_;
VideoPixelFormat output_format_;
v4l2_memory input_memory_type_;
+ v4l2_memory output_memory_type_;
uint32_t input_format_fourcc_;
uint32_t output_format_fourcc_;
« no previous file with comments | « no previous file | media/gpu/v4l2_image_processor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698