comparison mpegvideo.c @ 709:afeff6ccb7f5 libavcodec

convert only needed matrixes in convert_matrix() (mjpeg calls it for every frame)
author michaelni
date Mon, 30 Sep 2002 09:19:54 +0000
parents e65798d228ea
children dcbcf9676c9f
comparison
equal deleted inserted replaced
708:1aa1cbb8c3c1 709:afeff6ccb7f5
78 78
79 /* default motion estimation */ 79 /* default motion estimation */
80 int motion_estimation_method = ME_EPZS; 80 int motion_estimation_method = ME_EPZS;
81 81
82 static void convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16)[64], uint16_t (*qmat16_bias)[64], 82 static void convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16)[64], uint16_t (*qmat16_bias)[64],
83 const UINT16 *quant_matrix, int bias) 83 const UINT16 *quant_matrix, int bias, int qmin, int qmax)
84 { 84 {
85 int qscale; 85 int qscale;
86 86
87 for(qscale=1; qscale<32; qscale++){ 87 for(qscale=qmin; qscale<=qmax; qscale++){
88 int i; 88 int i;
89 if (s->fdct == ff_jpeg_fdct_islow) { 89 if (s->fdct == ff_jpeg_fdct_islow) {
90 for(i=0;i<64;i++) { 90 for(i=0;i<64;i++) {
91 const int j= s->idct_permutation[i]; 91 const int j= s->idct_permutation[i];
92 /* 16 <= qscale * quant_matrix[i] <= 7905 */ 92 /* 16 <= qscale * quant_matrix[i] <= 7905 */
678 678
679 /* precompute matrix */ 679 /* precompute matrix */
680 /* for mjpeg, we do include qscale in the matrix */ 680 /* for mjpeg, we do include qscale in the matrix */
681 if (s->out_format != FMT_MJPEG) { 681 if (s->out_format != FMT_MJPEG) {
682 convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, s->q_intra_matrix16_bias, 682 convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, s->q_intra_matrix16_bias,
683 s->intra_matrix, s->intra_quant_bias); 683 s->intra_matrix, s->intra_quant_bias, 1, 31);
684 convert_matrix(s, s->q_inter_matrix, s->q_inter_matrix16, s->q_inter_matrix16_bias, 684 convert_matrix(s, s->q_inter_matrix, s->q_inter_matrix16, s->q_inter_matrix16_bias,
685 s->inter_matrix, s->inter_quant_bias); 685 s->inter_matrix, s->inter_quant_bias, 1, 31);
686 } 686 }
687 687
688 if(ff_rate_control_init(s) < 0) 688 if(ff_rate_control_init(s) < 0)
689 return -1; 689 return -1;
690 690
2460 int j= s->idct_permutation[i]; 2460 int j= s->idct_permutation[i];
2461 2461
2462 s->intra_matrix[j] = CLAMP_TO_8BIT((ff_mpeg1_default_intra_matrix[i] * s->qscale) >> 3); 2462 s->intra_matrix[j] = CLAMP_TO_8BIT((ff_mpeg1_default_intra_matrix[i] * s->qscale) >> 3);
2463 } 2463 }
2464 convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, 2464 convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16,
2465 s->q_intra_matrix16_bias, s->intra_matrix, s->intra_quant_bias); 2465 s->q_intra_matrix16_bias, s->intra_matrix, s->intra_quant_bias, 8, 8);
2466 } 2466 }
2467 2467
2468 s->last_bits= get_bit_count(&s->pb); 2468 s->last_bits= get_bit_count(&s->pb);
2469 switch(s->out_format) { 2469 switch(s->out_format) {
2470 case FMT_MJPEG: 2470 case FMT_MJPEG: