[FFmpeg-cvslog] r22897 - trunk/libavcodec/vp3.c

conrad subversion
Sat Apr 17 04:04:35 CEST 2010


Author: conrad
Date: Sat Apr 17 04:04:35 2010
New Revision: 22897

Log:
vp3: Don't crop if there's a left/top offset, it's wrong

Fixes issue1834

Modified:
   trunk/libavcodec/vp3.c

Modified: trunk/libavcodec/vp3.c
==============================================================================
--- trunk/libavcodec/vp3.c	Sat Apr 17 04:04:30 2010	(r22896)
+++ trunk/libavcodec/vp3.c	Sat Apr 17 04:04:35 2010	(r22897)
@@ -1952,6 +1952,7 @@ static int theora_decode_header(AVCodecC
 {
     Vp3DecodeContext *s = avctx->priv_data;
     int visible_width, visible_height, colorspace;
+    int offset_x = 0, offset_y = 0;
 
     s->theora = get_bits_long(gb, 24);
     av_log(avctx, AV_LOG_DEBUG, "Theora bitstream version %X\n", s->theora);
@@ -1977,8 +1978,8 @@ static int theora_decode_header(AVCodecC
         visible_width  = get_bits_long(gb, 24);
         visible_height = get_bits_long(gb, 24);
 
-        skip_bits(gb, 8); /* offset x */
-        skip_bits(gb, 8); /* offset y */
+        offset_x = get_bits(gb, 8); /* offset x */
+        offset_y = get_bits(gb, 8); /* offset y, from bottom */
     }
 
     skip_bits(gb, 32); /* fps numerator */
@@ -2003,7 +2004,8 @@ static int theora_decode_header(AVCodecC
 //    align_get_bits(gb);
 
     if (   visible_width  <= s->width  && visible_width  > s->width-16
-        && visible_height <= s->height && visible_height > s->height-16)
+        && visible_height <= s->height && visible_height > s->height-16
+        && !offset_x && (offset_y == s->height - visible_height))
         avcodec_set_dimensions(avctx, visible_width, visible_height);
     else
         avcodec_set_dimensions(avctx, s->width, s->height);



More information about the ffmpeg-cvslog mailing list