Mercurial > libavcodec.hg
changeset 5229:604a09d6cf2e libavcodec
move ff_copy_bits to bitstream.c
author | aurel |
---|---|
date | Fri, 06 Jul 2007 14:13:25 +0000 |
parents | 3d124a8b7a76 |
children | 2a340aea762d |
files | bitstream.c bitstream.h mpegvideo.h mpegvideo_enc.c |
diffstat | 4 files changed, 25 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/bitstream.c Fri Jul 06 14:11:29 2007 +0000 +++ b/bitstream.c Fri Jul 06 14:13:25 2007 +0000 @@ -60,6 +60,30 @@ put_bits(pbc, 8, 0); } +void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length) +{ + const uint16_t *srcw= (uint16_t*)src; + int words= length>>4; + int bits= length&15; + int i; + + if(length==0) return; + + if(words < 16){ + for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i])); + }else if(put_bits_count(pb)&7){ + for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i])); + }else{ + for(i=0; put_bits_count(pb)&31; i++) + put_bits(pb, 8, src[i]); + flush_put_bits(pb); + memcpy(pbBufPtr(pb), src+i, 2*words-i); + skip_put_bytes(pb, 2*words-i); + } + + put_bits(pb, bits, be2me_16(srcw[words])>>(16-bits)); +} + /* VLC decoding */ //#define DEBUG_VLC
--- a/bitstream.h Fri Jul 06 14:11:29 2007 +0000 +++ b/bitstream.h Fri Jul 06 14:13:25 2007 +0000 @@ -137,6 +137,7 @@ void align_put_bits(PutBitContext *s); void ff_put_string(PutBitContext * pbc, char *s, int put_zero); +void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length); /* bit input */ /* buffer, buffer_end and size_in_bits must be present and used by every reader */
--- a/mpegvideo.h Fri Jul 06 14:11:29 2007 +0000 +++ b/mpegvideo.h Fri Jul 06 14:13:25 2007 +0000 @@ -717,7 +717,6 @@ void MPV_common_init_ppc(MpegEncContext *s); #endif extern void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w); -void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length); void ff_clean_intra_table_entries(MpegEncContext *s); void ff_init_scantable(uint8_t *, ScanTable *st, const uint8_t *src_scantable); void ff_draw_horiz_band(MpegEncContext *s, int y, int h);
--- a/mpegvideo_enc.c Fri Jul 06 14:11:29 2007 +0000 +++ b/mpegvideo_enc.c Fri Jul 06 14:13:25 2007 +0000 @@ -1734,30 +1734,6 @@ else encode_mb_internal(s, motion_x, motion_y, 16, 8); } -void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length) -{ - const uint16_t *srcw= (uint16_t*)src; - int words= length>>4; - int bits= length&15; - int i; - - if(length==0) return; - - if(words < 16){ - for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i])); - }else if(put_bits_count(pb)&7){ - for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i])); - }else{ - for(i=0; put_bits_count(pb)&31; i++) - put_bits(pb, 8, src[i]); - flush_put_bits(pb); - memcpy(pbBufPtr(pb), src+i, 2*words-i); - skip_put_bytes(pb, 2*words-i); - } - - put_bits(pb, bits, be2me_16(srcw[words])>>(16-bits)); -} - static inline void copy_context_before_encode(MpegEncContext *d, MpegEncContext *s, int type){ int i;