You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	move ff_copy_bits to bitstream.c
Originally committed as revision 9503 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -60,6 +60,30 @@ void ff_put_string(PutBitContext * pbc, char *s, int put_zero) | ||||
|         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 | ||||
|   | ||||
| @@ -137,6 +137,7 @@ static inline void flush_put_bits(PutBitContext *s) | ||||
|  | ||||
| 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 */ | ||||
|   | ||||
| @@ -717,7 +717,6 @@ void MPV_common_init_armv4l(MpegEncContext *s); | ||||
| 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); | ||||
|   | ||||
| @@ -1734,30 +1734,6 @@ static av_always_inline void encode_mb(MpegEncContext *s, int motion_x, int moti | ||||
|     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; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user