summaryrefslogtreecommitdiff
path: root/libavcodec/smacker.c
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2008-02-02 22:31:11 +0000
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2008-02-02 22:31:11 +0000
commit3e368d726a0a7e9febe934f5b8215ea8073154be (patch)
tree53d0a6b4fec3d32109503d4a0787142a5710a9f6 /libavcodec/smacker.c
parent04deea9ad25299579dbbe0e4103e8141b165a666 (diff)
Use bytestream_get_be24 to simplify palette parsing.
Originally committed as revision 11821 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/smacker.c')
-rw-r--r--libavcodec/smacker.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c
index b80e28596b..1121f9b90b 100644
--- a/libavcodec/smacker.c
+++ b/libavcodec/smacker.c
@@ -35,6 +35,7 @@
#define ALT_BITSTREAM_READER_LE
#include "bitstream.h"
+#include "bytestream.h"
#define SMKTREE_BITS 9
#define SMK_NODE 0x80000000
@@ -367,7 +368,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const
}
/* make the palette available on the way out */
- out = buf + 1;
pal = (uint32_t*)smk->pic.data[1];
smk->pic.palette_has_changed = buf[0] & 1;
smk->pic.key_frame = !!(buf[0] & 2);
@@ -376,19 +376,16 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const
else
smk->pic.pict_type = FF_P_TYPE;
- for(i = 0; i < 256; i++) {
- int r, g, b;
- r = *out++;
- g = *out++;
- b = *out++;
- *pal++ = (r << 16) | (g << 8) | b;
- }
+ buf++;
+ for(i = 0; i < 256; i++)
+ *pal++ = bytestream_get_be24(&buf);
+ buf_size -= 769;
last_reset(smk->mmap_tbl, smk->mmap_last);
last_reset(smk->mclr_tbl, smk->mclr_last);
last_reset(smk->full_tbl, smk->full_last);
last_reset(smk->type_tbl, smk->type_last);
- init_get_bits(&gb, buf + 769, (buf_size - 769) * 8);
+ init_get_bits(&gb, buf, buf_size * 8);
blk = 0;
bw = avctx->width >> 2;