comparison bitstream.c @ 5229:604a09d6cf2e libavcodec

move ff_copy_bits to bitstream.c
author aurel
date Fri, 06 Jul 2007 14:13:25 +0000
parents 470601203f44
children 2a340aea762d
comparison
equal deleted inserted replaced
5228:3d124a8b7a76 5229:604a09d6cf2e
56 put_bits(pbc, 8, *s); 56 put_bits(pbc, 8, *s);
57 s++; 57 s++;
58 } 58 }
59 if(put_zero) 59 if(put_zero)
60 put_bits(pbc, 8, 0); 60 put_bits(pbc, 8, 0);
61 }
62
63 void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length)
64 {
65 const uint16_t *srcw= (uint16_t*)src;
66 int words= length>>4;
67 int bits= length&15;
68 int i;
69
70 if(length==0) return;
71
72 if(words < 16){
73 for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i]));
74 }else if(put_bits_count(pb)&7){
75 for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i]));
76 }else{
77 for(i=0; put_bits_count(pb)&31; i++)
78 put_bits(pb, 8, src[i]);
79 flush_put_bits(pb);
80 memcpy(pbBufPtr(pb), src+i, 2*words-i);
81 skip_put_bytes(pb, 2*words-i);
82 }
83
84 put_bits(pb, bits, be2me_16(srcw[words])>>(16-bits));
61 } 85 }
62 86
63 /* VLC decoding */ 87 /* VLC decoding */
64 88
65 //#define DEBUG_VLC 89 //#define DEBUG_VLC