Add support for the single-planar V4L2 API

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
This commit is contained in:
Paul Kocialkowski
2018-09-07 16:43:13 +02:00
parent 25a8ac4d7e
commit 7ff2543e64
12 changed files with 267 additions and 92 deletions
+9 -2
View File
@@ -197,9 +197,17 @@ VAStatus RequestAcquireBufferHandle(VADriverContextP context,
struct request_data *driver_data = context->pDriverData;
struct object_buffer *buffer_object;
struct object_surface *surface_object;
struct video_format *video_format;
unsigned int capture_type;
int export_fd;
int rc;
video_format = driver_data->video_format;
if (video_format == NULL)
return VA_STATUS_ERROR_OPERATION_FAILED;
capture_type = v4l2_type_video_capture(video_format->v4l2_mplane);
if (buffer_info->mem_type != VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME ||
!video_format_is_linear(driver_data->video_format))
return VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE;
@@ -218,8 +226,7 @@ VAStatus RequestAcquireBufferHandle(VADriverContextP context,
if (surface_object->destination_buffers_count > 1)
return VA_STATUS_ERROR_OPERATION_FAILED;
rc = v4l2_export_buffer(driver_data->video_fd,
V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
rc = v4l2_export_buffer(driver_data->video_fd, capture_type,
surface_object->destination_index, O_RDONLY,
&export_fd, 1);
if (rc < 0)