From 0fa8f2fb83398d48f54c3462b0d1626037e0ee73 Mon Sep 17 00:00:00 2001 From: Hou Qi Date: Sun, 4 Sep 2022 20:30:31 +0800 Subject: [PATCH 09/17] V4L2VDA: Use correct plane size and bytesused Upstream-Status: Inappropriate [NXP specific] --- media/gpu/v4l2/v4l2_device.cc | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/media/gpu/v4l2/v4l2_device.cc b/media/gpu/v4l2/v4l2_device.cc index 200b0fccb1232..726ad1ab0f144 100644 --- a/media/gpu/v4l2/v4l2_device.cc +++ b/media/gpu/v4l2/v4l2_device.cc @@ -785,7 +785,10 @@ size_t V4L2WritableBufferRef::GetPlaneSize(const size_t plane) const { return 0; } - return buffer_data_->v4l2_buffer_.m.planes[plane].length; + if (V4L2_TYPE_IS_MULTIPLANAR(buffer_data_->v4l2_buffer_.type)) + return buffer_data_->v4l2_buffer_.m.planes[plane].length; + else + return buffer_data_->v4l2_buffer_.length; } void V4L2WritableBufferRef::SetPlaneSize(const size_t plane, @@ -845,7 +848,10 @@ void V4L2WritableBufferRef::SetPlaneBytesUsed(const size_t plane, return; } - buffer_data_->v4l2_buffer_.m.planes[plane].bytesused = bytes_used; + if (V4L2_TYPE_IS_MULTIPLANAR(buffer_data_->v4l2_buffer_.type)) + buffer_data_->v4l2_buffer_.m.planes[plane].bytesused = bytes_used; + else + buffer_data_->v4l2_buffer_.bytesused = bytes_used; } size_t V4L2WritableBufferRef::GetPlaneBytesUsed(const size_t plane) const { @@ -857,7 +863,10 @@ size_t V4L2WritableBufferRef::GetPlaneBytesUsed(const size_t plane) const { return 0; } - return buffer_data_->v4l2_buffer_.m.planes[plane].bytesused; + if (V4L2_TYPE_IS_MULTIPLANAR(buffer_data_->v4l2_buffer_.type)) + return buffer_data_->v4l2_buffer_.m.planes[plane].bytesused; + else + return buffer_data_->v4l2_buffer_.bytesused; } void V4L2WritableBufferRef::SetPlaneDataOffset(const size_t plane, @@ -959,7 +968,10 @@ size_t V4L2ReadableBuffer::GetPlaneBytesUsed(const size_t plane) const { return 0; } - return buffer_data_->v4l2_planes_[plane].bytesused; + if (V4L2_TYPE_IS_MULTIPLANAR(buffer_data_->v4l2_buffer_.type)) + return buffer_data_->v4l2_planes_[plane].bytesused; + else + return buffer_data_->v4l2_buffer_.bytesused; } size_t V4L2ReadableBuffer::GetPlaneDataOffset(const size_t plane) const { -- 2.17.1