From 64b12624e2d36beda90a4725e3ee43d7d0723213 Mon Sep 17 00:00:00 2001 From: Lynne Date: Tue, 26 May 2020 12:01:54 +0100 Subject: [PATCH] hwcontext_vulkan: fix uploading and downloading from/to flipped images We want to copy the lowest amount of bytes per line, but while the buffer stride is sanitized, the src/dst stride can be negative, and negative numbers of bytes do not make a lot of sense. --- libavutil/hwcontext_vulkan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 8066b8536a..5e51d0390f 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -3063,7 +3063,8 @@ static int vulkan_transfer_data_from_mem(AVHWFramesContext *hwfc, AVFrame *dst, av_image_copy_plane(tmp.data[i], tmp.linesize[i], (const uint8_t *)src->data[i], src->linesize[i], - FFMIN(tmp.linesize[i], src->linesize[i]), p_height); + FFMIN(tmp.linesize[i], FFABS(src->linesize[i])), + p_height); } if ((err = unmap_buffers(dev_ctx, bufs, planes, 1))) @@ -3251,7 +3252,8 @@ static int vulkan_transfer_data_to_mem(AVHWFramesContext *hwfc, AVFrame *dst, av_image_copy_plane(dst->data[i], dst->linesize[i], (const uint8_t *)tmp.data[i], tmp.linesize[i], - FFMIN(tmp.linesize[i], dst->linesize[i]), p_height); + FFMIN(tmp.linesize[i], FFABS(dst->linesize[i])), + p_height); } err = unmap_buffers(dev_ctx, bufs, planes, 0);