mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	make convert_matrix() independant of MpegEncContext
Originally committed as revision 2441 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -94,20 +94,20 @@ static uint8_t default_fcode_tab[MAX_MV*2+1]; | |||||||
|  |  | ||||||
| enum PixelFormat ff_yuv420p_list[2]= {PIX_FMT_YUV420P, -1}; | enum PixelFormat ff_yuv420p_list[2]= {PIX_FMT_YUV420P, -1}; | ||||||
|  |  | ||||||
| static void convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16)[2][64], | static void convert_matrix(DSPContext *dsp, int (*qmat)[64], uint16_t (*qmat16)[2][64], | ||||||
|                            const uint16_t *quant_matrix, int bias, int qmin, int qmax) |                            const uint16_t *quant_matrix, int bias, int qmin, int qmax) | ||||||
| { | { | ||||||
|     int qscale; |     int qscale; | ||||||
|  |  | ||||||
|     for(qscale=qmin; qscale<=qmax; qscale++){ |     for(qscale=qmin; qscale<=qmax; qscale++){ | ||||||
|         int i; |         int i; | ||||||
|         if (s->dsp.fdct == ff_jpeg_fdct_islow  |         if (dsp->fdct == ff_jpeg_fdct_islow  | ||||||
| #ifdef FAAN_POSTSCALE | #ifdef FAAN_POSTSCALE | ||||||
|             || s->dsp.fdct == ff_faandct |             || dsp->fdct == ff_faandct | ||||||
| #endif | #endif | ||||||
|             ) { |             ) { | ||||||
|             for(i=0;i<64;i++) { |             for(i=0;i<64;i++) { | ||||||
|                 const int j= s->dsp.idct_permutation[i]; |                 const int j= dsp->idct_permutation[i]; | ||||||
|                 /* 16 <= qscale * quant_matrix[i] <= 7905 */ |                 /* 16 <= qscale * quant_matrix[i] <= 7905 */ | ||||||
|                 /* 19952         <= aanscales[i] * qscale * quant_matrix[i]           <= 249205026 */ |                 /* 19952         <= aanscales[i] * qscale * quant_matrix[i]           <= 249205026 */ | ||||||
|                 /* (1<<36)/19952 >= (1<<36)/(aanscales[i] * qscale * quant_matrix[i]) >= (1<<36)/249205026 */ |                 /* (1<<36)/19952 >= (1<<36)/(aanscales[i] * qscale * quant_matrix[i]) >= (1<<36)/249205026 */ | ||||||
| @@ -116,13 +116,13 @@ static void convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16 | |||||||
|                 qmat[qscale][i] = (int)((uint64_t_C(1) << QMAT_SHIFT) /  |                 qmat[qscale][i] = (int)((uint64_t_C(1) << QMAT_SHIFT) /  | ||||||
|                                 (qscale * quant_matrix[j])); |                                 (qscale * quant_matrix[j])); | ||||||
|             } |             } | ||||||
|         } else if (s->dsp.fdct == fdct_ifast |         } else if (dsp->fdct == fdct_ifast | ||||||
| #ifndef FAAN_POSTSCALE | #ifndef FAAN_POSTSCALE | ||||||
|                    || s->dsp.fdct == ff_faandct |                    || dsp->fdct == ff_faandct | ||||||
| #endif | #endif | ||||||
|                    ) { |                    ) { | ||||||
|             for(i=0;i<64;i++) { |             for(i=0;i<64;i++) { | ||||||
|                 const int j= s->dsp.idct_permutation[i]; |                 const int j= dsp->idct_permutation[i]; | ||||||
|                 /* 16 <= qscale * quant_matrix[i] <= 7905 */ |                 /* 16 <= qscale * quant_matrix[i] <= 7905 */ | ||||||
|                 /* 19952         <= aanscales[i] * qscale * quant_matrix[i]           <= 249205026 */ |                 /* 19952         <= aanscales[i] * qscale * quant_matrix[i]           <= 249205026 */ | ||||||
|                 /* (1<<36)/19952 >= (1<<36)/(aanscales[i] * qscale * quant_matrix[i]) >= (1<<36)/249205026 */ |                 /* (1<<36)/19952 >= (1<<36)/(aanscales[i] * qscale * quant_matrix[i]) >= (1<<36)/249205026 */ | ||||||
| @@ -133,7 +133,7 @@ static void convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16 | |||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|             for(i=0;i<64;i++) { |             for(i=0;i<64;i++) { | ||||||
|                 const int j= s->dsp.idct_permutation[i]; |                 const int j= dsp->idct_permutation[i]; | ||||||
|                 /* We can safely suppose that 16 <= quant_matrix[i] <= 255 |                 /* We can safely suppose that 16 <= quant_matrix[i] <= 255 | ||||||
|                    So 16           <= qscale * quant_matrix[i]             <= 7905 |                    So 16           <= qscale * quant_matrix[i]             <= 7905 | ||||||
|                    so (1<<19) / 16 >= (1<<19) / (qscale * quant_matrix[i]) >= (1<<19) / 7905 |                    so (1<<19) / 16 >= (1<<19) / (qscale * quant_matrix[i]) >= (1<<19) / 7905 | ||||||
| @@ -903,9 +903,9 @@ int MPV_encode_init(AVCodecContext *avctx) | |||||||
|     /* precompute matrix */ |     /* precompute matrix */ | ||||||
|     /* for mjpeg, we do include qscale in the matrix */ |     /* for mjpeg, we do include qscale in the matrix */ | ||||||
|     if (s->out_format != FMT_MJPEG) { |     if (s->out_format != FMT_MJPEG) { | ||||||
|         convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16,  |         convert_matrix(&s->dsp, s->q_intra_matrix, s->q_intra_matrix16,  | ||||||
|                        s->intra_matrix, s->intra_quant_bias, 1, 31); |                        s->intra_matrix, s->intra_quant_bias, 1, 31); | ||||||
|         convert_matrix(s, s->q_inter_matrix, s->q_inter_matrix16,  |         convert_matrix(&s->dsp, s->q_inter_matrix, s->q_inter_matrix16,  | ||||||
|                        s->inter_matrix, s->inter_quant_bias, 1, 31); |                        s->inter_matrix, s->inter_quant_bias, 1, 31); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -3522,7 +3522,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) | |||||||
|  |  | ||||||
|             s->intra_matrix[j] = CLAMP_TO_8BIT((ff_mpeg1_default_intra_matrix[i] * s->qscale) >> 3); |             s->intra_matrix[j] = CLAMP_TO_8BIT((ff_mpeg1_default_intra_matrix[i] * s->qscale) >> 3); | ||||||
|         } |         } | ||||||
|         convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16,  |         convert_matrix(&s->dsp, s->q_intra_matrix, s->q_intra_matrix16,  | ||||||
|                        s->intra_matrix, s->intra_quant_bias, 8, 8); |                        s->intra_matrix, s->intra_quant_bias, 8, 8); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Niedermayer
					Michael Niedermayer