Mercurial > libavcodec.hg
comparison svq3.c @ 1878:838c18d1e7fc libavcodec
be smarter about the variable size of the extra SVQ3 data
author | melanson |
---|---|
date | Sat, 13 Mar 2004 21:26:54 +0000 |
parents | 869256817a91 |
children | 39ad6cd5d4a6 |
comparison
equal
deleted
inserted
replaced
1877:869256817a91 | 1878:838c18d1e7fc |
---|---|
765 uint8_t *buf, int buf_size) { | 765 uint8_t *buf, int buf_size) { |
766 MpegEncContext *const s = avctx->priv_data; | 766 MpegEncContext *const s = avctx->priv_data; |
767 H264Context *const h = avctx->priv_data; | 767 H264Context *const h = avctx->priv_data; |
768 int m, mb_type; | 768 int m, mb_type; |
769 unsigned char *extradata; | 769 unsigned char *extradata; |
770 unsigned int size; | |
770 | 771 |
771 *data_size = 0; | 772 *data_size = 0; |
772 | 773 |
773 s->flags = avctx->flags; | 774 s->flags = avctx->flags; |
774 s->flags2 = avctx->flags2; | 775 s->flags2 = avctx->flags2; |
797 if (!memcmp (extradata, "SEQH", 4)) | 798 if (!memcmp (extradata, "SEQH", 4)) |
798 break; | 799 break; |
799 extradata++; | 800 extradata++; |
800 } | 801 } |
801 | 802 |
803 size = (extradata[4] << 24) | (extradata[5] << 16) | | |
804 (extradata[6] << 8) | extradata[7]; | |
805 | |
802 /* if a match was found, parse the extra data */ | 806 /* if a match was found, parse the extra data */ |
803 if (!memcmp (extradata, "SEQH", 4)) { | 807 if (!memcmp (extradata, "SEQH", 4)) { |
804 | 808 |
805 GetBitContext gb; | 809 GetBitContext gb; |
806 | 810 |
807 init_get_bits (&gb, extradata + 0x8, 8*8); | 811 init_get_bits (&gb, extradata + 8, size); |
808 | 812 |
809 /* 'frame size code' and optional 'width, height' */ | 813 /* 'frame size code' and optional 'width, height' */ |
810 if (get_bits (&gb, 3) == 7) { | 814 if (get_bits (&gb, 3) == 7) { |
811 get_bits (&gb, 12); | 815 get_bits (&gb, 12); |
812 get_bits (&gb, 12); | 816 get_bits (&gb, 12); |