History

smacker: convert palette and header reading to bytestream2.

Ronald S. Bultje committed 14 years ago

Commit b2af0571 parent c3bbd0b1 file · +10 −10Browse files

Unified · Split

libavcodec/smacker.c+10−10
@@ -357,17 +357,17 @@ static av_always_inline int smk_get_code(GetBitContext *gb, int *recode, int *la · 356 unmodified lines
357357
358358 static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
359359 {
360− const uint8_t *buf = avpkt->data;
361− int buf_size = avpkt->size;
362360 SmackVContext * const smk = avctx->priv_data;
363361 uint8_t *out;
364362 uint32_t *pal;
363+ GetByteContext gb2;
365364 GetBitContext gb;
366365 int blocks, blk, bw, bh;
367366 int i;
368367 int stride;
368+ int flags;
369369
370− if(buf_size <= 769)
370+ if (avpkt->size <= 769)
371371 return 0;
372372
373373 smk->pic.reference = 1;
@@ -379,23 +379,23 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac · 5 unmodified lines
379379
380380 /* make the palette available on the way out */
381381 pal = (uint32_t*)smk->pic.data[1];
382− smk->pic.palette_has_changed = buf[0] & 1;
383− smk->pic.key_frame = !!(buf[0] & 2);
382+ bytestream2_init(&gb2, avpkt->data, avpkt->size);
383+ flags = bytestream2_get_byteu(&gb2);
384+ smk->pic.palette_has_changed = flags & 1;
385+ smk->pic.key_frame = !!(flags & 2);
384386 if(smk->pic.key_frame)
385387 smk->pic.pict_type = AV_PICTURE_TYPE_I;
386388 else
387389 smk->pic.pict_type = AV_PICTURE_TYPE_P;
388390
389− buf++;
390391 for(i = 0; i < 256; i++)
391− *pal++ = bytestream_get_be24(&buf);
392− buf_size -= 769;
392+ *pal++ = bytestream2_get_be24u(&gb2);
393393
394394 last_reset(smk->mmap_tbl, smk->mmap_last);
395395 last_reset(smk->mclr_tbl, smk->mclr_last);
396396 last_reset(smk->full_tbl, smk->full_last);
397397 last_reset(smk->type_tbl, smk->type_last);
398− init_get_bits(&gb, buf, buf_size * 8);
398+ init_get_bits(&gb, avpkt->data + 769, (avpkt->size - 769) * 8);
399399
400400 blk = 0;
401401 bw = avctx->width >> 2;
@@ -506,7 +506,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac · 104 unmodified lines
506506 *(AVFrame*)data = smk->pic;
507507
508508 /* always report that the buffer was completely consumed */
509− return buf_size;
509+ return avpkt->size;
510510 }
511511
512512

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t