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

Unified Diff: chrome/gpu/arc_gpu_video_decode_accelerator.h

Issue 1953683002: Add stride for imported Dmabuf in ArcVideoAccelerator. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: verify the stride. Created 4 years, 7 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: chrome/gpu/arc_gpu_video_decode_accelerator.h
diff --git a/chrome/gpu/arc_gpu_video_decode_accelerator.h b/chrome/gpu/arc_gpu_video_decode_accelerator.h
index e29f9aaa69344014aa6a94692a838ac119e410b8..b3a66b173bd876a4dffacb70a9fdaa3a64991ad4 100644
--- a/chrome/gpu/arc_gpu_video_decode_accelerator.h
+++ b/chrome/gpu/arc_gpu_video_decode_accelerator.h
@@ -42,7 +42,8 @@ class ArcGpuVideoDecodeAccelerator
size_t length) override;
void BindDmabuf(PortType port,
uint32_t index,
- base::ScopedFD dmabuf_fd) override;
+ base::ScopedFD dmabuf_fd,
+ int32_t stride) override;
void UseBuffer(PortType port,
uint32_t index,
const BufferMetadata& metadata) override;
@@ -78,14 +79,28 @@ class ArcGpuVideoDecodeAccelerator
// The file handle to access the buffer. It is owned by this class and
// should be closed after use.
base::ScopedFD handle;
- off_t offset;
- size_t length;
+
+ // The offset of the payload to the beginning of the shared memory.
+ off_t offset = 0;
+
+ // The size of the payload in bytes.
+ size_t length = 0;
InputBufferInfo();
InputBufferInfo(InputBufferInfo&& other);
~InputBufferInfo();
};
+ // The information about the dmabuf used as an output buffer.
+ struct OutputBufferInfo {
+ base::ScopedFD handle;
+ int32_t stride = 0; // In bytes.
+
+ OutputBufferInfo();
+ OutputBufferInfo(OutputBufferInfo&& other);
+ ~OutputBufferInfo();
+ };
+
// Helper function to Send the end-of-stream output buffer if
// |pending_eos_output_buffer_| is true, or reuse the picture in ArcVDA.
void SendEosIfNeededOrReusePicture(uint32_t index);
@@ -93,6 +108,9 @@ class ArcGpuVideoDecodeAccelerator
// Helper function to validate |port| and |index|.
bool ValidatePortAndIndex(PortType port, uint32_t index);
+ // Helper function to verify the length of stride is legal.
+ bool VerifyStride(const base::ScopedFD& fd, int32_t stride);
+
// Creates an InputRecord for the given |bitstream_buffer_id|. The
// |buffer_index| is the index of the associated input buffer. The |timestamp|
// is the time the video frame should be displayed.
@@ -118,6 +136,7 @@ class ArcGpuVideoDecodeAccelerator
int32_t next_bitstream_buffer_id_;
gfx::Size coded_size_;
+ media::VideoPixelFormat output_pixel_format_;
// The |picture_buffer_id|s for Pictures that were returned to us from VDA
// via PictureReady() while flushing. We keep them until NotifyFlushDone();
@@ -133,10 +152,10 @@ class ArcGpuVideoDecodeAccelerator
// The details of the shared memory of each input buffers.
std::vector<InputBufferInfo> input_buffer_info_;
- // To keep those output buffers which have been bound by bindDmabuf() but not
- // be used yet. Will call VDA::ImportBufferForPicture() when those buffers are
- // used for the first time.
- std::vector<base::ScopedFD> buffers_pending_import_;
+ // To keep those output buffers which have been bound by bindDmabuf() but
+ // haven't been passed to VDA yet. Will call VDA::ImportBufferForPicture()
+ // when those buffers are used for the first time.
+ std::vector<OutputBufferInfo> buffers_pending_import_;
base::ThreadChecker thread_checker_;
size_t output_buffer_size_;
« no previous file with comments | « no previous file | chrome/gpu/arc_gpu_video_decode_accelerator.cc » ('j') | chrome/gpu/arc_gpu_video_decode_accelerator.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698