You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avutil/hwcontext_vulkan: don't over-map buffers with prior padding
If the image data is not at the start of the buffer allocation, such as when the buffer has padding before the image data, this function maps too much memory, since src_data + src_buf->size exceeds the buffer size. Fix this by subtracting the difference between the buffer start and the provided image data pointer from the size of the memory range to map. An easy way to reproduce this issue is using the vf_pad filter, which allocates image data buffers with a nonzero offset whenever padding is requested before the start of the image data.
This commit is contained in:
@ -1408,7 +1408,8 @@ int ff_vk_host_map_buffer(FFVulkanContext *s, AVBufferRef **dst,
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
/* Add the offset at the start, which gets ignored */
|
||||
buffer_size = offs + src_buf->size;
|
||||
const ptrdiff_t src_offset = src_data - src_buf->data;
|
||||
buffer_size = offs + (src_buf->size - src_offset);
|
||||
buffer_size = FFALIGN(buffer_size, s->props.properties.limits.minMemoryMapAlignment);
|
||||
buffer_size = FFALIGN(buffer_size, s->hprops.minImportedHostPointerAlignment);
|
||||
|
||||
|
Reference in New Issue
Block a user