Unified · Split
| @@ -3832,32 +3832,32 @@ static int encode_picture(MpegEncContext *s, const AVPacket *pkt) · 3831 unmodified lines | ||
| 3832 | 3832 | s->qscale= 3; //reduce clipping problems |
| 3833 | 3833 | |
| 3834 | 3834 | if (s->out_format == FMT_MJPEG) { |
| 3835 | − const uint16_t * luma_matrix = ff_mpeg1_default_intra_matrix; | |
| 3836 | − const uint16_t *chroma_matrix = ff_mpeg1_default_intra_matrix; | |
| 3837 | − | |
| 3838 | 3835 | ret = ff_check_codec_matrices(s->avctx, FF_MATRIX_TYPE_INTRA | FF_MATRIX_TYPE_CHROMA_INTRA, (7 + s->qscale) / s->qscale, 65535); |
| 3839 | 3836 | if (ret < 0) |
| 3840 | 3837 | return ret; |
| 3841 | 3838 | |
| 3842 | 3839 | if (s->codec_id != AV_CODEC_ID_AMV) { |
| 3843 | − if (s->avctx->intra_matrix) { | |
| 3844 | − chroma_matrix = | |
| 3845 | − luma_matrix = s->avctx->intra_matrix; | |
| 3846 | − } | |
| 3847 | − if (s->avctx->chroma_intra_matrix) | |
| 3848 | − chroma_matrix = s->avctx->chroma_intra_matrix; | |
| 3840 | + const uint16_t * luma_matrix = ff_mpeg1_default_intra_matrix; | |
| 3841 | + const uint16_t *chroma_matrix = ff_mpeg1_default_intra_matrix; | |
| 3849 | 3842 | |
| 3850 | − /* for mjpeg, we do include qscale in the matrix */ | |
| 3851 | − for(i=1;i<64;i++){ | |
| 3852 | − int j = s->idsp.idct_permutation[i]; | |
| 3843 | + if (s->avctx->intra_matrix) { | |
| 3844 | + chroma_matrix = | |
| 3845 | + luma_matrix = s->avctx->intra_matrix; | |
| 3846 | + } | |
| 3847 | + if (s->avctx->chroma_intra_matrix) | |
| 3848 | + chroma_matrix = s->avctx->chroma_intra_matrix; | |
| 3853 | 3849 | |
| 3854 | − s->chroma_intra_matrix[j] = av_clip_uint8((chroma_matrix[i] * s->qscale) >> 3); | |
| 3855 | − s-> intra_matrix[j] = av_clip_uint8(( luma_matrix[i] * s->qscale) >> 3); | |
| 3856 | − } | |
| 3857 | − s->y_dc_scale_table= | |
| 3858 | − s->c_dc_scale_table = ff_mpeg12_dc_scale_table[s->intra_dc_precision]; | |
| 3859 | − s->chroma_intra_matrix[0] = | |
| 3860 | − s->intra_matrix[0] = ff_mpeg12_dc_scale_table[s->intra_dc_precision][8]; | |
| 3850 | + /* for mjpeg, we do include qscale in the matrix */ | |
| 3851 | + for (int i = 1; i < 64; i++) { | |
| 3852 | + int j = s->idsp.idct_permutation[i]; | |
| 3853 | + | |
| 3854 | + s->chroma_intra_matrix[j] = av_clip_uint8((chroma_matrix[i] * s->qscale) >> 3); | |
| 3855 | + s-> intra_matrix[j] = av_clip_uint8(( luma_matrix[i] * s->qscale) >> 3); | |
| 3856 | + } | |
| 3857 | + s->y_dc_scale_table = | |
| 3858 | + s->c_dc_scale_table = ff_mpeg12_dc_scale_table[s->intra_dc_precision]; | |
| 3859 | + s->chroma_intra_matrix[0] = | |
| 3860 | + s->intra_matrix[0] = ff_mpeg12_dc_scale_table[s->intra_dc_precision][8]; | |
| 3861 | 3861 | } else { |
| 3862 | 3862 | static const uint8_t y[32] = {13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13}; |
| 3863 | 3863 | static const uint8_t c[32] = {14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14}; |
| @@ -3872,11 +3872,11 @@ static int encode_picture(MpegEncContext *s, const AVPacket *pkt) · 8 unmodified lines | ||
| 3872 | 3872 | s->intra_matrix[0] = 13; |
| 3873 | 3873 | s->chroma_intra_matrix[0] = 14; |
| 3874 | 3874 | } |
| 3875 | − ff_convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, | |
| 3876 | − s->intra_matrix, s->intra_quant_bias, 8, 8, 1); | |
| 3877 | − ff_convert_matrix(s, s->q_chroma_intra_matrix, s->q_chroma_intra_matrix16, | |
| 3878 | − s->chroma_intra_matrix, s->intra_quant_bias, 8, 8, 1); | |
| 3879 | − s->qscale = 8; | |
| 3875 | + ff_convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, | |
| 3876 | + s->intra_matrix, s->intra_quant_bias, 8, 8, 1); | |
| 3877 | + ff_convert_matrix(s, s->q_chroma_intra_matrix, s->q_chroma_intra_matrix16, | |
| 3878 | + s->chroma_intra_matrix, s->intra_quant_bias, 8, 8, 1); | |
| 3879 | + s->qscale = 8; | |
| 3880 | 3880 | } |
| 3881 | 3881 | |
| 3882 | 3882 | if (s->pict_type == AV_PICTURE_TYPE_I) { |