You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
swscale/graph: make noop loop more robust
The current loop only works if the input and output have the same number of planes. However, with the new scaling logic, we can also optimize into a noop the case where the input has extra unneeded planes. For the memcpy fallback to work in these cases we have to instead check if the *output* pointer is set, rather than the input pointer.
This commit is contained in:
@ -115,8 +115,10 @@ static void run_copy(const SwsImg *out_base, const SwsImg *in_base,
|
|||||||
SwsImg in = shift_img(in_base, y);
|
SwsImg in = shift_img(in_base, y);
|
||||||
SwsImg out = shift_img(out_base, y);
|
SwsImg out = shift_img(out_base, y);
|
||||||
|
|
||||||
for (int i = 0; i < FF_ARRAY_ELEMS(in.data) && in.data[i]; i++) {
|
for (int i = 0; i < FF_ARRAY_ELEMS(out.data) && out.data[i]; i++) {
|
||||||
const int lines = h >> vshift(in.fmt, i);
|
const int lines = h >> vshift(in.fmt, i);
|
||||||
|
av_assert1(in.data[i]);
|
||||||
|
|
||||||
if (in.linesize[i] == out.linesize[i]) {
|
if (in.linesize[i] == out.linesize[i]) {
|
||||||
memcpy(out.data[i], in.data[i], lines * out.linesize[i]);
|
memcpy(out.data[i], in.data[i], lines * out.linesize[i]);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user