You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
hwcontext_vaapi: Pass correct read/write flags when exporting surfaces
This commit is contained in:
@@ -1095,15 +1095,20 @@ static int vaapi_map_to_drm_esh(AVHWFramesContext *hwfc, AVFrame *dst,
|
|||||||
VAStatus vas;
|
VAStatus vas;
|
||||||
VADRMPRIMESurfaceDescriptor va_desc;
|
VADRMPRIMESurfaceDescriptor va_desc;
|
||||||
AVDRMFrameDescriptor *drm_desc = NULL;
|
AVDRMFrameDescriptor *drm_desc = NULL;
|
||||||
|
uint32_t export_flags;
|
||||||
int err, i, j;
|
int err, i, j;
|
||||||
|
|
||||||
surface_id = (VASurfaceID)(uintptr_t)src->data[3];
|
surface_id = (VASurfaceID)(uintptr_t)src->data[3];
|
||||||
|
|
||||||
|
export_flags = VA_EXPORT_SURFACE_SEPARATE_LAYERS;
|
||||||
|
if (flags & AV_HWFRAME_MAP_READ)
|
||||||
|
export_flags |= VA_EXPORT_SURFACE_READ_ONLY;
|
||||||
|
if (flags & AV_HWFRAME_MAP_WRITE)
|
||||||
|
export_flags |= VA_EXPORT_SURFACE_WRITE_ONLY;
|
||||||
|
|
||||||
vas = vaExportSurfaceHandle(hwctx->display, surface_id,
|
vas = vaExportSurfaceHandle(hwctx->display, surface_id,
|
||||||
VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2,
|
VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2,
|
||||||
VA_EXPORT_SURFACE_READ_ONLY |
|
export_flags, &va_desc);
|
||||||
VA_EXPORT_SURFACE_SEPARATE_LAYERS,
|
|
||||||
&va_desc);
|
|
||||||
if (vas != VA_STATUS_SUCCESS) {
|
if (vas != VA_STATUS_SUCCESS) {
|
||||||
if (vas == VA_STATUS_ERROR_UNIMPLEMENTED)
|
if (vas == VA_STATUS_ERROR_UNIMPLEMENTED)
|
||||||
return AVERROR(ENOSYS);
|
return AVERROR(ENOSYS);
|
||||||
|
Reference in New Issue
Block a user