diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2008-02-02 22:31:11 +0000 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2008-02-02 22:31:11 +0000 |
commit | 3e368d726a0a7e9febe934f5b8215ea8073154be (patch) | |
tree | 53d0a6b4fec3d32109503d4a0787142a5710a9f6 /libavcodec | |
parent | 04deea9ad25299579dbbe0e4103e8141b165a666 (diff) | |
download | ffmpeg-3e368d726a0a7e9febe934f5b8215ea8073154be.tar.gz |
Use bytestream_get_be24 to simplify palette parsing.
Originally committed as revision 11821 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/smacker.c | 15 |
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; |