Browse Source

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

Fixes issue 101

Originally committed as revision 10552 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Kostya Shishkov 17 years ago
parent
commit
ac14047927
1 changed files with 10 additions and 0 deletions
  1. +10
    -0
      libavcodec/vmdav.c

+ 10
- 0
libavcodec/vmdav.c View File

@@ -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 *s)
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) ||


Loading…
Cancel
Save