[FFmpeg-cvslog] bethsoftvideo: fix palette reading.

Justin Ruggles git at videolan.org
Fri Feb 3 04:15:58 CET 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Wed Jan 18 13:09:43 2012 -0500| [c3a06615bdf00fcf64747f12a0ba1a2c7fb2e576] | committer: Justin Ruggles

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c3a06615bdf00fcf64747f12a0ba1a2c7fb2e576
---

 libavcodec/bethsoftvideo.c  |   10 +++-
 tests/ref/fate/bethsoft-vid |  141 +++++++++++++++++++++----------------------
 2 files changed, 78 insertions(+), 73 deletions(-)

diff --git a/libavcodec/bethsoftvideo.c b/libavcodec/bethsoftvideo.c
index fa0457c..743e387 100644
--- a/libavcodec/bethsoftvideo.c
+++ b/libavcodec/bethsoftvideo.c
@@ -59,7 +59,7 @@ static int set_palette(BethsoftvidContext *ctx)
         palette[a] = bytestream2_get_be24u(&ctx->g) * 4;
     }
     ctx->frame.palette_has_changed = 1;
-    return 256*3;
+    return 0;
 }
 
 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)){
         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:
             yoffset = bytestream2_get_le16(&vid->g);
diff --git a/tests/ref/fate/bethsoft-vid b/tests/ref/fate/bethsoft-vid
index 0886bfc..92c694b 100644
--- a/tests/ref/fate/bethsoft-vid
+++ b/tests/ref/fate/bethsoft-vid
@@ -1,91 +1,90 @@
-0, 0, 192000, 0xdecc683b
+0, 0, 192000, 0x00000000
 1, 0, 1480, 0x00000000
-0, 1500, 192000, 0x00000000
-0, 3000, 192000, 0x01a6cf45
-0, 4500, 192000, 0xd07d57e9
+0, 1500, 192000, 0x01a6cf45
+0, 3000, 192000, 0xd07d57e9
+0, 4500, 192000, 0x3cb1dff5
 1, 5994, 1480, 0x20a92bd4
-0, 6000, 192000, 0x3cb1dff5
-0, 7500, 192000, 0xd1aaa8fb
-0, 9000, 192000, 0x75f526cd
-0, 10500, 192000, 0x0f673577
+0, 6000, 192000, 0xd1aaa8fb
+0, 7500, 192000, 0x75f526cd
+0, 9000, 192000, 0x0f673577
+0, 10500, 192000, 0x897b6781
 1, 11988, 1850, 0xa9e48a74
-0, 12000, 192000, 0x897b6781
-0, 13500, 192000, 0x81e6b7f7
-0, 15000, 192000, 0x1f45ce61
-0, 16500, 192000, 0x5a0772a6
-0, 18000, 192000, 0xf78732b3
+0, 12000, 192000, 0x81e6b7f7
+0, 13500, 192000, 0x1f45ce61
+0, 15000, 192000, 0x5a0772a6
+0, 16500, 192000, 0xf78732b3
+0, 18000, 192000, 0x8427f9e5
 1, 19481, 1480, 0x23ecd018
-0, 19500, 192000, 0x8427f9e5
-0, 21000, 192000, 0x40473f11
-0, 22500, 192000, 0x173ceebe
-0, 24000, 192000, 0x136b9516
+0, 19500, 192000, 0x40473f11
+0, 21000, 192000, 0x173ceebe
+0, 22500, 192000, 0x136b9516
+0, 24000, 192000, 0x138d11ae
 1, 25475, 1480, 0x206bb915
-0, 25500, 192000, 0x138d11ae
-0, 27000, 192000, 0x063dbff3
-0, 28500, 192000, 0x5280852f
-0, 30000, 192000, 0x99943a8f
+0, 25500, 192000, 0x063dbff3
+0, 27000, 192000, 0x5280852f
+0, 28500, 192000, 0x99943a8f
+0, 30000, 192000, 0x0330a728
 1, 31469, 1850, 0xb0e10e75
-0, 31500, 192000, 0x0330a728
-0, 33000, 192000, 0x5d35467d
-0, 34500, 192000, 0xfd436343
-0, 36000, 192000, 0xc323fcfe
-0, 37500, 192000, 0x2a1530a0
+0, 31500, 192000, 0x5d35467d
+0, 33000, 192000, 0xfd436343
+0, 34500, 192000, 0xc323fcfe
+0, 36000, 192000, 0x2a1530a0
+0, 37500, 192000, 0xbd43bb60
 1, 38961, 1480, 0x8d9baedd
-0, 39000, 192000, 0xbd43bb60
-0, 40500, 192000, 0xa47f5eab
-0, 42000, 192000, 0xff17f5f7
-0, 43500, 192000, 0xb4140b55
+0, 39000, 192000, 0xa47f5eab
+0, 40500, 192000, 0xff17f5f7
+0, 42000, 192000, 0xb4140b55
+0, 43500, 192000, 0xb8782cc4
 1, 44955, 1480, 0xb802aae1
-0, 45000, 192000, 0xb8782cc4
-0, 46500, 192000, 0x92975b8b
-0, 48000, 192000, 0xf42a64d6
-0, 49500, 192000, 0x2cc7077d
+0, 45000, 192000, 0x92975b8b
+0, 46500, 192000, 0xf42a64d6
+0, 48000, 192000, 0x2cc7077d
+0, 49500, 192000, 0x00080cc8
 1, 50950, 1480, 0xecd7b5cc
-0, 51000, 192000, 0x00080cc8
-0, 52500, 192000, 0x584b48f3
-0, 54000, 192000, 0xd68f57da
-0, 55500, 192000, 0x60158422
+0, 51000, 192000, 0x584b48f3
+0, 52500, 192000, 0xd68f57da
+0, 54000, 192000, 0x60158422
+0, 55500, 192000, 0xd7fb89e6
 1, 56944, 1850, 0x16861355
-0, 57000, 192000, 0xd7fb89e6
-0, 58500, 192000, 0x97f1c76a
-0, 60000, 192000, 0x46c4bb9e
-0, 61500, 192000, 0xd32f9b66
-0, 63000, 192000, 0x74f43886
+0, 57000, 192000, 0x97f1c76a
+0, 58500, 192000, 0x46c4bb9e
+0, 60000, 192000, 0xd32f9b66
+0, 61500, 192000, 0x74f43886
+0, 63000, 192000, 0x3c4e47df
 1, 64436, 1480, 0xa51690bd
-0, 64500, 192000, 0x3c4e47df
-0, 66000, 192000, 0xb5ac0a58
-0, 67500, 192000, 0xcc572b31
-0, 69000, 192000, 0xb1739d26
+0, 64500, 192000, 0xb5ac0a58
+0, 66000, 192000, 0xcc572b31
+0, 67500, 192000, 0xb1739d26
+0, 69000, 192000, 0x73da5473
 1, 70430, 1480, 0xdd0b90d1
-0, 70500, 192000, 0x73da5473
-0, 72000, 192000, 0x5f79f5bc
-0, 73500, 192000, 0x0affc0a0
-0, 75000, 192000, 0x2b4d5c1c
+0, 70500, 192000, 0x5f79f5bc
+0, 72000, 192000, 0x0affc0a0
+0, 73500, 192000, 0x2b4d5c1c
+0, 75000, 192000, 0x309b41bc
 1, 76424, 1850, 0x3ce6e333
-0, 76500, 192000, 0x309b41bc
-0, 78000, 192000, 0xd42b6424
-0, 79500, 192000, 0x4795c948
-0, 81000, 192000, 0xbc1a3a8b
-0, 82500, 192000, 0x16529c5b
+0, 76500, 192000, 0xd42b6424
+0, 78000, 192000, 0x4795c948
+0, 79500, 192000, 0xbc1a3a8b
+0, 81000, 192000, 0x16529c5b
+0, 82500, 192000, 0x6b1b31ba
 1, 83917, 1480, 0xf8ce8ea3
-0, 84000, 192000, 0x6b1b31ba
-0, 85500, 192000, 0x569182ce
-0, 87000, 192000, 0xe6ea9866
-0, 88500, 192000, 0x102c6076
+0, 84000, 192000, 0x569182ce
+0, 85500, 192000, 0xe6ea9866
+0, 87000, 192000, 0x102c6076
+0, 88500, 192000, 0xb29f527a
 1, 89911, 1480, 0xda4597af
-0, 90000, 192000, 0xb29f527a
-0, 91500, 192000, 0x040b4eee
-0, 93000, 192000, 0x92574f4a
-0, 94500, 192000, 0x1e8acdce
+0, 90000, 192000, 0x040b4eee
+0, 91500, 192000, 0x92574f4a
+0, 93000, 192000, 0x1e8acdce
+0, 94500, 192000, 0x1becf516
 1, 95905, 1480, 0x918f7cb3
-0, 96000, 192000, 0x1becf516
-0, 97500, 192000, 0xb62e9776
-0, 99000, 192000, 0xed37a08e
-0, 100500, 192000, 0xc0719912
+0, 96000, 192000, 0xb62e9776
+0, 97500, 192000, 0xed37a08e
+0, 99000, 192000, 0xc0719912
+0, 100500, 192000, 0x24cf7a7e
 1, 101899, 1850, 0xca6edb15
-0, 102000, 192000, 0x24cf7a7e
-0, 103500, 192000, 0x0307f62f
-0, 105000, 192000, 0x79b7417b
+0, 102000, 192000, 0x0307f62f
+0, 103500, 192000, 0x79b7417b
 1, 109392, 1480, 0xba279597
 1, 115386, 1480, 0xc5a38a9e
 1, 121380, 1850, 0x8147eef5



More information about the ffmpeg-cvslog mailing list