1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

libavutil/hwcontext_amf: add format validation in transfer_data functions

This commit is contained in:
Dmitrii Ovchinnikov
2025-03-12 16:15:53 +01:00
parent e5d62e20c8
commit 5b460bde8b

View File

@ -277,6 +277,9 @@ static int amf_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst,
int w = FFMIN(dst->width, src->width); int w = FFMIN(dst->width, src->width);
int h = FFMIN(dst->height, src->height); int h = FFMIN(dst->height, src->height);
if (dst->hw_frames_ctx->data != (uint8_t *)ctx || src->format != ctx->sw_format)
return AVERROR(EINVAL);
if (!surface) { if (!surface) {
AVHWDeviceContext *hwdev_ctx = ctx->device_ctx; AVHWDeviceContext *hwdev_ctx = ctx->device_ctx;
AVAMFDeviceContext *amf_device_ctx = (AVAMFDeviceContext *)hwdev_ctx->hwctx; AVAMFDeviceContext *amf_device_ctx = (AVAMFDeviceContext *)hwdev_ctx->hwctx;
@ -319,6 +322,9 @@ static int amf_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst,
int h = FFMIN(dst->height, src->height); int h = FFMIN(dst->height, src->height);
int ret; int ret;
if (src->hw_frames_ctx->data != (uint8_t *)ctx || dst->format != ctx->sw_format)
return AVERROR(EINVAL);
ret = surface->pVtbl->Convert(surface, AMF_MEMORY_HOST); ret = surface->pVtbl->Convert(surface, AMF_MEMORY_HOST);
AMF_RETURN_IF_FALSE(ctx, ret == AMF_OK, AVERROR_UNKNOWN, "Convert(amf::AMF_MEMORY_HOST) failed with error %d\n", AVERROR_UNKNOWN); AMF_RETURN_IF_FALSE(ctx, ret == AMF_OK, AVERROR_UNKNOWN, "Convert(amf::AMF_MEMORY_HOST) failed with error %d\n", AVERROR_UNKNOWN);