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 */