Mercurial > libavcodec.hg
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: |