From: Niklas Haas <g...@haasn.dev> 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. --- libswscale/graph.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libswscale/graph.c b/libswscale/graph.c index 6cfcf4f2c6..c5a46eb257 100644 --- a/libswscale/graph.c +++ b/libswscale/graph.c @@ -115,8 +115,10 @@ static void run_copy(const SwsImg *out_base, const SwsImg *in_base, SwsImg in = shift_img(in_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); + av_assert1(in.data[i]); + if (in.linesize[i] == out.linesize[i]) { memcpy(out.data[i], in.data[i], lines * out.linesize[i]); } else { -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".