Mercurial > libavcodec.hg
comparison mjpeg.c @ 1025:1f9afd8b9131 libavcodec
GetBitContext.size is allways multiplied by 8 -> use size_in_bits to avoid useless *8 in a few inner loops
author | michaelni |
---|---|
date | Tue, 21 Jan 2003 17:34:12 +0000 |
parents | 693a0797398f |
children | bb5de8a59da8 |
comparison
equal
deleted
inserted
replaced
1024:9cc1031e1864 | 1025:1f9afd8b9131 |
---|---|
733 build_vlc(&s->vlcs[1][1], bits_ac_chrominance, val_ac_chrominance, 251); | 733 build_vlc(&s->vlcs[1][1], bits_ac_chrominance, val_ac_chrominance, 251); |
734 | 734 |
735 if (avctx->flags & CODEC_FLAG_EXTERN_HUFF) | 735 if (avctx->flags & CODEC_FLAG_EXTERN_HUFF) |
736 { | 736 { |
737 printf("mjpeg: using external huffman table\n"); | 737 printf("mjpeg: using external huffman table\n"); |
738 init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size); | 738 init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size*8); |
739 mjpeg_decode_dht(s); | 739 mjpeg_decode_dht(s); |
740 /* should check for error - but dunno */ | 740 /* should check for error - but dunno */ |
741 } | 741 } |
742 | 742 |
743 return 0; | 743 return 0; |
1402 *(dst++) = x; | 1402 *(dst++) = x; |
1403 else if (x) | 1403 else if (x) |
1404 break; | 1404 break; |
1405 } | 1405 } |
1406 } | 1406 } |
1407 init_get_bits(&s->gb, s->buffer, dst - s->buffer); | 1407 init_get_bits(&s->gb, s->buffer, (dst - s->buffer)*8); |
1408 | 1408 |
1409 dprintf("escaping removed %d bytes\n", | 1409 dprintf("escaping removed %d bytes\n", |
1410 (buf_end - buf_ptr) - (dst - s->buffer)); | 1410 (buf_end - buf_ptr) - (dst - s->buffer)); |
1411 } | 1411 } |
1412 else | 1412 else |
1413 init_get_bits(&s->gb, buf_ptr, buf_end - buf_ptr); | 1413 init_get_bits(&s->gb, buf_ptr, (buf_end - buf_ptr)*8); |
1414 | 1414 |
1415 s->start_code = start_code; | 1415 s->start_code = start_code; |
1416 | 1416 |
1417 /* process markers */ | 1417 /* process markers */ |
1418 if (start_code >= 0xd0 && start_code <= 0xd7) { | 1418 if (start_code >= 0xd0 && start_code <= 0xd7) { |
1546 | 1546 |
1547 read_header: | 1547 read_header: |
1548 /* reset on every SOI */ | 1548 /* reset on every SOI */ |
1549 s->restart_interval = 0; | 1549 s->restart_interval = 0; |
1550 | 1550 |
1551 init_get_bits(&hgb, buf_ptr, /*buf_size*/buf_end - buf_ptr); | 1551 init_get_bits(&hgb, buf_ptr, /*buf_size*/(buf_end - buf_ptr)*8); |
1552 | 1552 |
1553 skip_bits(&hgb, 32); /* reserved zeros */ | 1553 skip_bits(&hgb, 32); /* reserved zeros */ |
1554 | 1554 |
1555 if (get_bits(&hgb, 32) != be2me_32(ff_get_fourcc("mjpg"))) | 1555 if (get_bits(&hgb, 32) != be2me_32(ff_get_fourcc("mjpg"))) |
1556 { | 1556 { |
1568 | 1568 |
1569 dqt_offs = get_bits(&hgb, 32); | 1569 dqt_offs = get_bits(&hgb, 32); |
1570 dprintf("dqt offs: 0x%x\n", dqt_offs); | 1570 dprintf("dqt offs: 0x%x\n", dqt_offs); |
1571 if (dqt_offs) | 1571 if (dqt_offs) |
1572 { | 1572 { |
1573 init_get_bits(&s->gb, buf+dqt_offs, buf_end - (buf+dqt_offs)); | 1573 init_get_bits(&s->gb, buf+dqt_offs, (buf_end - (buf+dqt_offs))*8); |
1574 s->start_code = DQT; | 1574 s->start_code = DQT; |
1575 mjpeg_decode_dqt(s); | 1575 mjpeg_decode_dqt(s); |
1576 } | 1576 } |
1577 | 1577 |
1578 dht_offs = get_bits(&hgb, 32); | 1578 dht_offs = get_bits(&hgb, 32); |
1579 dprintf("dht offs: 0x%x\n", dht_offs); | 1579 dprintf("dht offs: 0x%x\n", dht_offs); |
1580 if (dht_offs) | 1580 if (dht_offs) |
1581 { | 1581 { |
1582 init_get_bits(&s->gb, buf+dht_offs, buf_end - (buf+dht_offs)); | 1582 init_get_bits(&s->gb, buf+dht_offs, (buf_end - (buf+dht_offs))*8); |
1583 s->start_code = DHT; | 1583 s->start_code = DHT; |
1584 mjpeg_decode_dht(s); | 1584 mjpeg_decode_dht(s); |
1585 } | 1585 } |
1586 | 1586 |
1587 sof_offs = get_bits(&hgb, 32); | 1587 sof_offs = get_bits(&hgb, 32); |
1588 dprintf("sof offs: 0x%x\n", sof_offs); | 1588 dprintf("sof offs: 0x%x\n", sof_offs); |
1589 if (sof_offs) | 1589 if (sof_offs) |
1590 { | 1590 { |
1591 init_get_bits(&s->gb, buf+sof_offs, buf_end - (buf+sof_offs)); | 1591 init_get_bits(&s->gb, buf+sof_offs, (buf_end - (buf+sof_offs))*8); |
1592 s->start_code = SOF0; | 1592 s->start_code = SOF0; |
1593 if (mjpeg_decode_sof0(s) < 0) | 1593 if (mjpeg_decode_sof0(s) < 0) |
1594 return -1; | 1594 return -1; |
1595 } | 1595 } |
1596 | 1596 |
1597 sos_offs = get_bits(&hgb, 32); | 1597 sos_offs = get_bits(&hgb, 32); |
1598 dprintf("sos offs: 0x%x\n", sos_offs); | 1598 dprintf("sos offs: 0x%x\n", sos_offs); |
1599 if (sos_offs) | 1599 if (sos_offs) |
1600 { | 1600 { |
1601 // init_get_bits(&s->gb, buf+sos_offs, buf_end - (buf+sos_offs)); | 1601 // init_get_bits(&s->gb, buf+sos_offs, (buf_end - (buf+sos_offs))*8); |
1602 init_get_bits(&s->gb, buf+sos_offs, field_size); | 1602 init_get_bits(&s->gb, buf+sos_offs, field_size*8); |
1603 s->start_code = SOS; | 1603 s->start_code = SOS; |
1604 mjpeg_decode_sos(s); | 1604 mjpeg_decode_sos(s); |
1605 } | 1605 } |
1606 | 1606 |
1607 skip_bits(&hgb, 32); /* start of data offset */ | 1607 skip_bits(&hgb, 32); /* start of data offset */ |