| 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_;
|
|
|