mirror of https://git.ffmpeg.org/ffmpeg.git
avutil/hwcontext_vaapi: return ENOSYS for unsupported operation
av_hwframe_transfer_data try with src_ctx first. If the operation failed with AVERROR(ENOSYS), it will try again with dst_ctx. Return AVERROR(EINVAL) makes the second step being skipped. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
parent
2233b51283
commit
1e84d9c5da
|
@ -217,7 +217,7 @@ static int vaapi_get_image_format(AVHWDeviceContext *hwdev,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(ENOSYS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vaapi_frames_get_constraints(AVHWDeviceContext *hwdev,
|
static int vaapi_frames_get_constraints(AVHWDeviceContext *hwdev,
|
||||||
|
@ -817,7 +817,7 @@ static int vaapi_map_frame(AVHWFramesContext *hwfc,
|
||||||
err = vaapi_get_image_format(hwfc->device_ctx, dst->format, &image_format);
|
err = vaapi_get_image_format(hwfc->device_ctx, dst->format, &image_format);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
// Requested format is not a valid output format.
|
// Requested format is not a valid output format.
|
||||||
return AVERROR(EINVAL);
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
map = av_malloc(sizeof(*map));
|
map = av_malloc(sizeof(*map));
|
||||||
|
@ -992,7 +992,7 @@ static int vaapi_map_to_memory(AVHWFramesContext *hwfc, AVFrame *dst,
|
||||||
if (dst->format != AV_PIX_FMT_NONE) {
|
if (dst->format != AV_PIX_FMT_NONE) {
|
||||||
err = vaapi_get_image_format(hwfc->device_ctx, dst->format, NULL);
|
err = vaapi_get_image_format(hwfc->device_ctx, dst->format, NULL);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return AVERROR(ENOSYS);
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = vaapi_map_frame(hwfc, dst, src, flags);
|
err = vaapi_map_frame(hwfc, dst, src, flags);
|
||||||
|
|
Loading…
Reference in New Issue