av_samples_copy: support overlapping copies
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@ -208,8 +208,13 @@ int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
|
|||||||
dst_offset *= block_align;
|
dst_offset *= block_align;
|
||||||
src_offset *= block_align;
|
src_offset *= block_align;
|
||||||
|
|
||||||
for (i = 0; i < planes; i++)
|
if((dst[0] < src[0] ? src[0] - dst[0] : dst[0] - src[0]) >= data_size) {
|
||||||
memcpy(dst[i] + dst_offset, src[i] + src_offset, data_size);
|
for (i = 0; i < planes; i++)
|
||||||
|
memcpy(dst[i] + dst_offset, src[i] + src_offset, data_size);
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < planes; i++)
|
||||||
|
memmove(dst[i] + dst_offset, src[i] + src_offset, data_size);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user