summaryrefslogtreecommitdiff
path: root/libavutil
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2020-05-26 12:01:54 +0100
committerLynne <dev@lynne.ee>2020-05-26 12:03:42 +0100
commit64b12624e2d36beda90a4725e3ee43d7d0723213 (patch)
tree91ef3c49a42f02583745b705e3f450857b86e45d /libavutil
parent2502e13b073370edd62451808ed286f2d7d7a196 (diff)
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.
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/hwcontext_vulkan.c6
1 files 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);