[FFmpeg-cvslog] r10552 - trunk/libavcodec/vmdav.c

kostya subversion
Sun Sep 23 18:11:08 CEST 2007


Author: kostya
Date: Sun Sep 23 18:11:07 2007
New Revision: 10552

Log:
Fix decoding of VMDs representing sprites (Last Dynasty, Woodruff).

Fixes issue 101


Modified:
   trunk/libavcodec/vmdav.c

Modified: trunk/libavcodec/vmdav.c
==============================================================================
--- trunk/libavcodec/vmdav.c	(original)
+++ trunk/libavcodec/vmdav.c	Sun Sep 23 18:11:07 2007
@@ -68,6 +68,7 @@ typedef struct VmdVideoContext {
     unsigned char *unpack_buffer;
     int unpack_buffer_size;
 
+    int x_off, y_off;
 } VmdVideoContext;
 
 #define QUEUE_SIZE 0x1000
@@ -207,6 +208,15 @@ static void vmd_decode(VmdVideoContext *
     frame_width = AV_RL16(&s->buf[10]) - frame_x + 1;
     frame_height = AV_RL16(&s->buf[12]) - frame_y + 1;
 
+    if ((frame_width == s->avctx->width && frame_height == s->avctx->height) &&
+        (frame_x || frame_y)) {
+
+        s->x_off = frame_x;
+        s->y_off = frame_y;
+    }
+    frame_x -= s->x_off;
+    frame_y -= s->y_off;
+
     /* if only a certain region will be updated, copy the entire previous
      * frame before the decode */
     if (frame_x || frame_y || (frame_width != s->avctx->width) ||




More information about the ffmpeg-cvslog mailing list