summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavutil/hwcontext_vaapi.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c
index 1bdc4cbc1a..ee5ce5d075 100644
--- a/libavutil/hwcontext_vaapi.c
+++ b/libavutil/hwcontext_vaapi.c
@@ -770,6 +770,9 @@ static int vaapi_transfer_data_from(AVHWFramesContext *hwfc,
AVFrame *map;
int err;
+ if (dst->width > hwfc->width || dst->height > hwfc->height)
+ return AVERROR(EINVAL);
+
map = av_frame_alloc();
if (!map)
return AVERROR(ENOMEM);
@@ -779,6 +782,9 @@ static int vaapi_transfer_data_from(AVHWFramesContext *hwfc,
if (err)
goto fail;
+ map->width = dst->width;
+ map->height = dst->height;
+
err = av_frame_copy(dst, map);
if (err)
goto fail;
@@ -795,6 +801,9 @@ static int vaapi_transfer_data_to(AVHWFramesContext *hwfc,
AVFrame *map;
int err;
+ if (src->width > hwfc->width || src->height > hwfc->height)
+ return AVERROR(EINVAL);
+
map = av_frame_alloc();
if (!map)
return AVERROR(ENOMEM);
@@ -804,6 +813,9 @@ static int vaapi_transfer_data_to(AVHWFramesContext *hwfc,
if (err)
goto fail;
+ map->width = src->width;
+ map->height = src->height;
+
err = av_frame_copy(map, src);
if (err)
goto fail;