[FFmpeg-cvslog] mpeg4videodec: fix GEOV/GEOX fliping

Michael Niedermayer git at videolan.org
Sat Aug 24 01:11:08 CEST 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Aug 24 00:56:26 2013 +0200| [5cc8b816875d3ae110ba7bde6b16bd0246f2e225] | committer: Michael Niedermayer

mpeg4videodec: fix GEOV/GEOX fliping

Fixes Ticket317
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5cc8b816875d3ae110ba7bde6b16bd0246f2e225
---

 libavcodec/h263dec.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index bf9e072..3fe37e9 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -757,6 +757,21 @@ intrax8_decoded:
     }
 
     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 = -((-pict-> width)>>!!p);
+                int h = -((-pict->height)>>!!p);
+                int linesize = pict->linesize[p];
+                for (y=0; y<(h>>1); y++)
+                    for (x=0; x<w; x++)
+                        FFSWAP(int,
+                               pict->data[p][x + y*linesize],
+                               pict->data[p][x + (h-1-y)*linesize]);
+            }
+        }
         *got_frame = 1;
     }
 



More information about the ffmpeg-cvslog mailing list