Index: chrome/gpu/arc_gpu_video_decode_accelerator.cc |
diff --git a/chrome/gpu/arc_gpu_video_decode_accelerator.cc b/chrome/gpu/arc_gpu_video_decode_accelerator.cc |
index b4b46b0da454249a619c6f9a6357041eeead1c85..efbff5532fa96c858ca91320c2575f86d2876a9d 100644 |
--- a/chrome/gpu/arc_gpu_video_decode_accelerator.cc |
+++ b/chrome/gpu/arc_gpu_video_decode_accelerator.cc |
@@ -21,16 +21,19 @@ ArcGpuVideoDecodeAccelerator::InputRecord::InputRecord( |
buffer_index(buffer_index), |
timestamp(timestamp) {} |
-ArcGpuVideoDecodeAccelerator::InputBufferInfo::InputBufferInfo() |
- : offset(0), length(0) {} |
+ArcGpuVideoDecodeAccelerator::InputBufferInfo::InputBufferInfo() = default; |
ArcGpuVideoDecodeAccelerator::InputBufferInfo::InputBufferInfo( |
- InputBufferInfo&& other) |
- : handle(std::move(other.handle)), |
- offset(other.offset), |
- length(other.length) {} |
+ InputBufferInfo&& other) = default; |
-ArcGpuVideoDecodeAccelerator::InputBufferInfo::~InputBufferInfo() {} |
+ArcGpuVideoDecodeAccelerator::InputBufferInfo::~InputBufferInfo() = default; |
+ |
+ArcGpuVideoDecodeAccelerator::OutputBufferInfo::OutputBufferInfo() = default; |
+ |
+ArcGpuVideoDecodeAccelerator::OutputBufferInfo::OutputBufferInfo( |
+ OutputBufferInfo&& other) = default; |
+ |
+ArcGpuVideoDecodeAccelerator::OutputBufferInfo::~OutputBufferInfo() = default; |
ArcGpuVideoDecodeAccelerator::ArcGpuVideoDecodeAccelerator() |
: pending_eos_output_buffer_(false), |
@@ -156,7 +159,8 @@ void ArcGpuVideoDecodeAccelerator::BindSharedMemory(PortType port, |
void ArcGpuVideoDecodeAccelerator::BindDmabuf(PortType port, |
uint32_t index, |
- base::ScopedFD dmabuf_fd) { |
+ base::ScopedFD dmabuf_fd, |
+ int32_t stride) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
if (!vda_) { |
@@ -173,7 +177,9 @@ void ArcGpuVideoDecodeAccelerator::BindDmabuf(PortType port, |
arc_client_->OnError(INVALID_ARGUMENT); |
return; |
} |
- buffers_pending_import_[index] = std::move(dmabuf_fd); |
+ OutputBufferInfo& info = buffers_pending_import_[index]; |
+ info.handle = std::move(dmabuf_fd); |
+ info.stride = stride; |
} |
void ArcGpuVideoDecodeAccelerator::UseBuffer(PortType port, |
@@ -361,14 +367,16 @@ void ArcGpuVideoDecodeAccelerator::SendEosIfNeededOrReusePicture( |
arc_client_->OnBufferDone(PORT_OUTPUT, index, metadata); |
pending_eos_output_buffer_ = false; |
} else { |
- if (buffers_pending_import_[index].is_valid()) { |
- std::vector<gfx::GpuMemoryBufferHandle> buffers; |
- buffers.push_back(gfx::GpuMemoryBufferHandle()); |
+ OutputBufferInfo& info = buffers_pending_import_[index]; |
+ if (info.handle.is_valid()) { |
+ gfx::GpuMemoryBufferHandle handle; |
#if defined(USE_OZONE) |
- buffers.back().native_pixmap_handle.fd = |
- base::FileDescriptor(buffers_pending_import_[index].release(), true); |
+ handle.native_pixmap_handle.fd = |
+ base::FileDescriptor(info.handle.release(), true); |
+ handle.native_pixmap_handle.stride = info.stride; |
#endif |
- vda_->ImportBufferForPicture(index, buffers); |
+ vda_->ImportBufferForPicture( |
+ index, std::vector<gfx::GpuMemoryBufferHandle>{handle}); |
} else { |
vda_->ReusePictureBuffer(index); |
} |