From 3ca347900e336dd750f00a7f1e988d4fc2c4321e Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Tue, 22 Feb 2022 19:09:16 +0100 Subject: [PATCH] avcodec/h263dec: Avoid copying data when flipping image Also remove an unchecked av_frame_make_writable(). Reviewed-by: Michael Niedermayer Signed-off-by: Andreas Rheinhardt --- libavcodec/h263dec.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index e940b7f7c7..423036e97b 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -703,17 +703,11 @@ frame_end: if (s->last_picture_ptr || s->low_delay) { if ( pict->format == AV_PIX_FMT_YUV420P && (s->codec_tag == AV_RL32("GEOV") || s->codec_tag == AV_RL32("GEOX"))) { - int x, y, p; - av_frame_make_writable(pict); - for (p=0; p<3; p++) { - int w = AV_CEIL_RSHIFT(pict-> width, !!p); + for (int p = 0; p < 3; p++) { int h = AV_CEIL_RSHIFT(pict->height, !!p); - int linesize = pict->linesize[p]; - for (y=0; y<(h>>1); y++) - for (x=0; xdata[p][x + y*linesize], - pict->data[p][x + (h-1-y)*linesize]); + + pict->data[p] += (h - 1) * pict->linesize[p]; + pict->linesize[p] *= -1; } } *got_frame = 1;