[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