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);