diff options
Diffstat (limited to 'src/buffer.c')
-rw-r--r-- | src/buffer.c | 11 |
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) |