|  |  | @@ -53,10 +53,6 @@ static void dct_unquantize_h263_intra_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | DCTELEM *block, int n, int qscale); | 
		
	
		
			
			|  |  |  | static void dct_unquantize_h263_inter_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | DCTELEM *block, int n, int qscale); | 
		
	
		
			
			|  |  |  | static void dct_unquantize_h261_intra_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | DCTELEM *block, int n, int qscale); | 
		
	
		
			
			|  |  |  | static void dct_unquantize_h261_inter_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | DCTELEM *block, int n, int qscale); | 
		
	
		
			
			|  |  |  | static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w); | 
		
	
		
			
			|  |  |  | #ifdef CONFIG_ENCODERS | 
		
	
		
			
			|  |  |  | static int dct_quantize_c(MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow); | 
		
	
	
		
			
				|  |  | @@ -219,8 +215,6 @@ int DCT_common_init(MpegEncContext *s) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | s->dct_unquantize_h263_intra = dct_unquantize_h263_intra_c; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_h263_inter = dct_unquantize_h263_inter_c; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_h261_intra = dct_unquantize_h261_intra_c; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_h261_inter = dct_unquantize_h261_inter_c; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_mpeg1_intra = dct_unquantize_mpeg1_intra_c; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_mpeg1_inter = dct_unquantize_mpeg1_inter_c; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_mpeg2_intra = dct_unquantize_mpeg2_intra_c; | 
		
	
	
		
			
				|  |  | @@ -1482,12 +1476,9 @@ alloc: | 
		
	
		
			
			|  |  |  | if(s->mpeg_quant || s->codec_id == CODEC_ID_MPEG2VIDEO){ | 
		
	
		
			
			|  |  |  | s->dct_unquantize_intra = s->dct_unquantize_mpeg2_intra; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_inter = s->dct_unquantize_mpeg2_inter; | 
		
	
		
			
			|  |  |  | }else if(s->out_format == FMT_H263){ | 
		
	
		
			
			|  |  |  | }else if(s->out_format == FMT_H263 || s->out_format == FMT_H261){ | 
		
	
		
			
			|  |  |  | s->dct_unquantize_intra = s->dct_unquantize_h263_intra; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_inter = s->dct_unquantize_h263_inter; | 
		
	
		
			
			|  |  |  | }else if(s->out_format == FMT_H261){ | 
		
	
		
			
			|  |  |  | s->dct_unquantize_intra = s->dct_unquantize_h261_intra; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_inter = s->dct_unquantize_h261_inter; | 
		
	
		
			
			|  |  |  | }else{ | 
		
	
		
			
			|  |  |  | s->dct_unquantize_intra = s->dct_unquantize_mpeg1_intra; | 
		
	
		
			
			|  |  |  | s->dct_unquantize_inter = s->dct_unquantize_mpeg1_inter; | 
		
	
	
		
			
				|  |  | @@ -4517,6 +4508,7 @@ static int encode_thread(AVCodecContext *c, void *arg){ | 
		
	
		
			
			|  |  |  | if(s->codec_id == CODEC_ID_H261){ | 
		
	
		
			
			|  |  |  | ff_h261_reorder_mb_index(s); | 
		
	
		
			
			|  |  |  | xy= s->mb_y*s->mb_stride + s->mb_x; | 
		
	
		
			
			|  |  |  | mb_type= s->mb_type[xy]; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | /* write gob / video packet header  */ | 
		
	
	
		
			
				|  |  | @@ -4990,8 +4982,10 @@ static int encode_thread(AVCodecContext *c, void *arg){ | 
		
	
		
			
			|  |  |  | s, s->new_picture    .data[2] + s->mb_x*8  + s->mb_y*s->uvlinesize*8, | 
		
	
		
			
			|  |  |  | s->dest[2], w>>1, h>>1, s->uvlinesize); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if(s->loop_filter) | 
		
	
		
			
			|  |  |  | ff_h263_loop_filter(s); | 
		
	
		
			
			|  |  |  | if(s->loop_filter){ | 
		
	
		
			
			|  |  |  | if(s->out_format == FMT_H263) | 
		
	
		
			
			|  |  |  | ff_h263_loop_filter(s); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | //printf("MB %d %d bits\n", s->mb_x+s->mb_y*s->mb_stride, put_bits_count(&s->pb)); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -6250,59 +6244,6 @@ static void dct_unquantize_h263_inter_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static void dct_unquantize_h261_intra_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | DCTELEM *block, int n, int qscale) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int i, level, even; | 
		
	
		
			
			|  |  |  | int nCoeffs; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert(s->block_last_index[n]>=0); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if (n < 4) | 
		
	
		
			
			|  |  |  | block[0] = block[0] * s->y_dc_scale; | 
		
	
		
			
			|  |  |  | else | 
		
	
		
			
			|  |  |  | block[0] = block[0] * s->c_dc_scale; | 
		
	
		
			
			|  |  |  | even = (qscale & 1)^1; | 
		
	
		
			
			|  |  |  | nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ]; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for(i=1; i<=nCoeffs; i++){ | 
		
	
		
			
			|  |  |  | level = block[i]; | 
		
	
		
			
			|  |  |  | if (level){ | 
		
	
		
			
			|  |  |  | if (level < 0){ | 
		
	
		
			
			|  |  |  | level = qscale * ((level << 1) - 1) + even; | 
		
	
		
			
			|  |  |  | }else{ | 
		
	
		
			
			|  |  |  | level = qscale * ((level << 1) + 1) - even; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | block[i] = level; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static void dct_unquantize_h261_inter_c(MpegEncContext *s, | 
		
	
		
			
			|  |  |  | DCTELEM *block, int n, int qscale) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int i, level, even; | 
		
	
		
			
			|  |  |  | int nCoeffs; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert(s->block_last_index[n]>=0); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | even = (qscale & 1)^1; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ]; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for(i=0; i<=nCoeffs; i++){ | 
		
	
		
			
			|  |  |  | level = block[i]; | 
		
	
		
			
			|  |  |  | if (level){ | 
		
	
		
			
			|  |  |  | if (level < 0){ | 
		
	
		
			
			|  |  |  | level = qscale * ((level << 1) - 1) + even; | 
		
	
		
			
			|  |  |  | }else{ | 
		
	
		
			
			|  |  |  | level = qscale * ((level << 1) + 1) - even; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | block[i] = level; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static const AVOption mpeg4_options[] = | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | AVOPTION_CODEC_INT("bitrate", "desired video bitrate", bit_rate, 4, 240000000, 800000), | 
		
	
	
		
			
				|  |  | 
 |