summaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 641e286..6677187 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -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)