comparison dv.c @ 1875:45a1592dadca libavcodec

* moving some of the commonly used bit reading/writing functions from common.c -> common.h so that they can be inlined. + performace gain ~1% (measured with DV decoding) + code bloat 0.05% Looks like a win-win solution.
author romansh
date Fri, 12 Mar 2004 23:39:38 +0000
parents 88056e077c7f
children fbcf02596520
comparison
equal deleted inserted replaced
1874:fab737b59790 1875:45a1592dadca
640 DCTELEM *mb; 640 DCTELEM *mb;
641 uint8_t partial_bit_count; 641 uint8_t partial_bit_count;
642 uint32_t partial_bit_buffer; /* we can't use uint16_t here */ 642 uint32_t partial_bit_buffer; /* we can't use uint16_t here */
643 } EncBlockInfo; 643 } EncBlockInfo;
644 644
645 static always_inline int dv_bits_left(PutBitContext* s)
646 {
647 return (s->buf_end - s->buf) * 8 -
648 ((s->buf_ptr - s->buf) * 8 + 32 - (int64_t)s->bit_left);
649 }
650
651 static always_inline void dv_encode_ac(EncBlockInfo* bi, PutBitContext* pb_pool, 645 static always_inline void dv_encode_ac(EncBlockInfo* bi, PutBitContext* pb_pool,
652 int pb_size) 646 int pb_size)
653 { 647 {
654 int run; 648 int run;
655 int bits_left; 649 int bits_left;
658 uint32_t vlc = bi->partial_bit_buffer; 652 uint32_t vlc = bi->partial_bit_buffer;
659 653
660 bi->partial_bit_count = bi->partial_bit_buffer = 0; 654 bi->partial_bit_count = bi->partial_bit_buffer = 0;
661 vlc_loop: 655 vlc_loop:
662 /* Find suitable storage space */ 656 /* Find suitable storage space */
663 for (; size > (bits_left = dv_bits_left(pb)); pb++) { 657 for (; size > (bits_left = put_bits_left(pb)); pb++) {
664 if (bits_left) { 658 if (bits_left) {
665 size -= bits_left; 659 size -= bits_left;
666 put_bits(pb, bits_left, vlc >> size); 660 put_bits(pb, bits_left, vlc >> size);
667 vlc = vlc & ((1<<size)-1); 661 vlc = vlc & ((1<<size)-1);
668 } 662 }