bethsoftvideo: fix palette reading.

Return the correct number of consumed bytes and set *data_size = 0.
Returned size is 1 too small, leading to that 1 byte being read as the next
frame, which results in an extra blank frame at the beginning of the stream.
This commit is contained in:
Justin Ruggles 2012-01-18 13:09:43 -05:00
parent 83ce51cc7d
commit c3a06615bd
2 changed files with 78 additions and 73 deletions

View File

@ -59,7 +59,7 @@ static int set_palette(BethsoftvidContext *ctx)
palette[a] = bytestream2_get_be24u(&ctx->g) * 4; palette[a] = bytestream2_get_be24u(&ctx->g) * 4;
} }
ctx->frame.palette_has_changed = 1; ctx->frame.palette_has_changed = 1;
return 256*3; return 0;
} }
static int bethsoftvid_decode_frame(AVCodecContext *avctx, static int bethsoftvid_decode_frame(AVCodecContext *avctx,
@ -86,7 +86,13 @@ static int bethsoftvid_decode_frame(AVCodecContext *avctx,
switch(block_type = bytestream2_get_byte(&vid->g)){ switch(block_type = bytestream2_get_byte(&vid->g)){
case PALETTE_BLOCK: { case PALETTE_BLOCK: {
return set_palette(vid); int ret;
*data_size = 0;
if ((ret = set_palette(vid)) < 0) {
av_log(avctx, AV_LOG_ERROR, "error reading palette\n");
return ret;
}
return bytestream2_tell(&vid->g);
} }
case VIDEO_YOFF_P_FRAME: case VIDEO_YOFF_P_FRAME:
yoffset = bytestream2_get_le16(&vid->g); yoffset = bytestream2_get_le16(&vid->g);

View File

@ -1,91 +1,90 @@
0, 0, 192000, 0xdecc683b 0, 0, 192000, 0x00000000
1, 0, 1480, 0x00000000 1, 0, 1480, 0x00000000
0, 1500, 192000, 0x00000000 0, 1500, 192000, 0x01a6cf45
0, 3000, 192000, 0x01a6cf45 0, 3000, 192000, 0xd07d57e9
0, 4500, 192000, 0xd07d57e9 0, 4500, 192000, 0x3cb1dff5
1, 5994, 1480, 0x20a92bd4 1, 5994, 1480, 0x20a92bd4
0, 6000, 192000, 0x3cb1dff5 0, 6000, 192000, 0xd1aaa8fb
0, 7500, 192000, 0xd1aaa8fb 0, 7500, 192000, 0x75f526cd
0, 9000, 192000, 0x75f526cd 0, 9000, 192000, 0x0f673577
0, 10500, 192000, 0x0f673577 0, 10500, 192000, 0x897b6781
1, 11988, 1850, 0xa9e48a74 1, 11988, 1850, 0xa9e48a74
0, 12000, 192000, 0x897b6781 0, 12000, 192000, 0x81e6b7f7
0, 13500, 192000, 0x81e6b7f7 0, 13500, 192000, 0x1f45ce61
0, 15000, 192000, 0x1f45ce61 0, 15000, 192000, 0x5a0772a6
0, 16500, 192000, 0x5a0772a6 0, 16500, 192000, 0xf78732b3
0, 18000, 192000, 0xf78732b3 0, 18000, 192000, 0x8427f9e5
1, 19481, 1480, 0x23ecd018 1, 19481, 1480, 0x23ecd018
0, 19500, 192000, 0x8427f9e5 0, 19500, 192000, 0x40473f11
0, 21000, 192000, 0x40473f11 0, 21000, 192000, 0x173ceebe
0, 22500, 192000, 0x173ceebe 0, 22500, 192000, 0x136b9516
0, 24000, 192000, 0x136b9516 0, 24000, 192000, 0x138d11ae
1, 25475, 1480, 0x206bb915 1, 25475, 1480, 0x206bb915
0, 25500, 192000, 0x138d11ae 0, 25500, 192000, 0x063dbff3
0, 27000, 192000, 0x063dbff3 0, 27000, 192000, 0x5280852f
0, 28500, 192000, 0x5280852f 0, 28500, 192000, 0x99943a8f
0, 30000, 192000, 0x99943a8f 0, 30000, 192000, 0x0330a728
1, 31469, 1850, 0xb0e10e75 1, 31469, 1850, 0xb0e10e75
0, 31500, 192000, 0x0330a728 0, 31500, 192000, 0x5d35467d
0, 33000, 192000, 0x5d35467d 0, 33000, 192000, 0xfd436343
0, 34500, 192000, 0xfd436343 0, 34500, 192000, 0xc323fcfe
0, 36000, 192000, 0xc323fcfe 0, 36000, 192000, 0x2a1530a0
0, 37500, 192000, 0x2a1530a0 0, 37500, 192000, 0xbd43bb60
1, 38961, 1480, 0x8d9baedd 1, 38961, 1480, 0x8d9baedd
0, 39000, 192000, 0xbd43bb60 0, 39000, 192000, 0xa47f5eab
0, 40500, 192000, 0xa47f5eab 0, 40500, 192000, 0xff17f5f7
0, 42000, 192000, 0xff17f5f7 0, 42000, 192000, 0xb4140b55
0, 43500, 192000, 0xb4140b55 0, 43500, 192000, 0xb8782cc4
1, 44955, 1480, 0xb802aae1 1, 44955, 1480, 0xb802aae1
0, 45000, 192000, 0xb8782cc4 0, 45000, 192000, 0x92975b8b
0, 46500, 192000, 0x92975b8b 0, 46500, 192000, 0xf42a64d6
0, 48000, 192000, 0xf42a64d6 0, 48000, 192000, 0x2cc7077d
0, 49500, 192000, 0x2cc7077d 0, 49500, 192000, 0x00080cc8
1, 50950, 1480, 0xecd7b5cc 1, 50950, 1480, 0xecd7b5cc
0, 51000, 192000, 0x00080cc8 0, 51000, 192000, 0x584b48f3
0, 52500, 192000, 0x584b48f3 0, 52500, 192000, 0xd68f57da
0, 54000, 192000, 0xd68f57da 0, 54000, 192000, 0x60158422
0, 55500, 192000, 0x60158422 0, 55500, 192000, 0xd7fb89e6
1, 56944, 1850, 0x16861355 1, 56944, 1850, 0x16861355
0, 57000, 192000, 0xd7fb89e6 0, 57000, 192000, 0x97f1c76a
0, 58500, 192000, 0x97f1c76a 0, 58500, 192000, 0x46c4bb9e
0, 60000, 192000, 0x46c4bb9e 0, 60000, 192000, 0xd32f9b66
0, 61500, 192000, 0xd32f9b66 0, 61500, 192000, 0x74f43886
0, 63000, 192000, 0x74f43886 0, 63000, 192000, 0x3c4e47df
1, 64436, 1480, 0xa51690bd 1, 64436, 1480, 0xa51690bd
0, 64500, 192000, 0x3c4e47df 0, 64500, 192000, 0xb5ac0a58
0, 66000, 192000, 0xb5ac0a58 0, 66000, 192000, 0xcc572b31
0, 67500, 192000, 0xcc572b31 0, 67500, 192000, 0xb1739d26
0, 69000, 192000, 0xb1739d26 0, 69000, 192000, 0x73da5473
1, 70430, 1480, 0xdd0b90d1 1, 70430, 1480, 0xdd0b90d1
0, 70500, 192000, 0x73da5473 0, 70500, 192000, 0x5f79f5bc
0, 72000, 192000, 0x5f79f5bc 0, 72000, 192000, 0x0affc0a0
0, 73500, 192000, 0x0affc0a0 0, 73500, 192000, 0x2b4d5c1c
0, 75000, 192000, 0x2b4d5c1c 0, 75000, 192000, 0x309b41bc
1, 76424, 1850, 0x3ce6e333 1, 76424, 1850, 0x3ce6e333
0, 76500, 192000, 0x309b41bc 0, 76500, 192000, 0xd42b6424
0, 78000, 192000, 0xd42b6424 0, 78000, 192000, 0x4795c948
0, 79500, 192000, 0x4795c948 0, 79500, 192000, 0xbc1a3a8b
0, 81000, 192000, 0xbc1a3a8b 0, 81000, 192000, 0x16529c5b
0, 82500, 192000, 0x16529c5b 0, 82500, 192000, 0x6b1b31ba
1, 83917, 1480, 0xf8ce8ea3 1, 83917, 1480, 0xf8ce8ea3
0, 84000, 192000, 0x6b1b31ba 0, 84000, 192000, 0x569182ce
0, 85500, 192000, 0x569182ce 0, 85500, 192000, 0xe6ea9866
0, 87000, 192000, 0xe6ea9866 0, 87000, 192000, 0x102c6076
0, 88500, 192000, 0x102c6076 0, 88500, 192000, 0xb29f527a
1, 89911, 1480, 0xda4597af 1, 89911, 1480, 0xda4597af
0, 90000, 192000, 0xb29f527a 0, 90000, 192000, 0x040b4eee
0, 91500, 192000, 0x040b4eee 0, 91500, 192000, 0x92574f4a
0, 93000, 192000, 0x92574f4a 0, 93000, 192000, 0x1e8acdce
0, 94500, 192000, 0x1e8acdce 0, 94500, 192000, 0x1becf516
1, 95905, 1480, 0x918f7cb3 1, 95905, 1480, 0x918f7cb3
0, 96000, 192000, 0x1becf516 0, 96000, 192000, 0xb62e9776
0, 97500, 192000, 0xb62e9776 0, 97500, 192000, 0xed37a08e
0, 99000, 192000, 0xed37a08e 0, 99000, 192000, 0xc0719912
0, 100500, 192000, 0xc0719912 0, 100500, 192000, 0x24cf7a7e
1, 101899, 1850, 0xca6edb15 1, 101899, 1850, 0xca6edb15
0, 102000, 192000, 0x24cf7a7e 0, 102000, 192000, 0x0307f62f
0, 103500, 192000, 0x0307f62f 0, 103500, 192000, 0x79b7417b
0, 105000, 192000, 0x79b7417b
1, 109392, 1480, 0xba279597 1, 109392, 1480, 0xba279597
1, 115386, 1480, 0xc5a38a9e 1, 115386, 1480, 0xc5a38a9e
1, 121380, 1850, 0x8147eef5 1, 121380, 1850, 0x8147eef5