1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

avcodec/mpegvideo_enc: Don't do unnecessary work for AMV

Up until now, the initialization of AMV's matrices happened
after the initialization for MJPEG matrices, overwriting
the earlier data. This commit changes this.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2025-02-25 20:56:57 +01:00
parent 8d87162254
commit 772df65356

View File

@ -3839,6 +3839,7 @@ static int encode_picture(MpegEncContext *s, const AVPacket *pkt)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (s->codec_id != AV_CODEC_ID_AMV) {
if (s->avctx->intra_matrix) { if (s->avctx->intra_matrix) {
chroma_matrix = chroma_matrix =
luma_matrix = s->avctx->intra_matrix; luma_matrix = s->avctx->intra_matrix;
@ -3857,13 +3858,7 @@ static int encode_picture(MpegEncContext *s, const AVPacket *pkt)
s->c_dc_scale_table = ff_mpeg12_dc_scale_table[s->intra_dc_precision]; s->c_dc_scale_table = ff_mpeg12_dc_scale_table[s->intra_dc_precision];
s->chroma_intra_matrix[0] = s->chroma_intra_matrix[0] =
s->intra_matrix[0] = ff_mpeg12_dc_scale_table[s->intra_dc_precision][8]; s->intra_matrix[0] = ff_mpeg12_dc_scale_table[s->intra_dc_precision][8];
ff_convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, } else {
s->intra_matrix, s->intra_quant_bias, 8, 8, 1);
ff_convert_matrix(s, s->q_chroma_intra_matrix, s->q_chroma_intra_matrix16,
s->chroma_intra_matrix, s->intra_quant_bias, 8, 8, 1);
s->qscale= 8;
if (s->codec_id == AV_CODEC_ID_AMV) {
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}; 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};
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}; 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};
for (int i = 1; i < 64; i++) { for (int i = 1; i < 64; i++) {
@ -3876,12 +3871,12 @@ static int encode_picture(MpegEncContext *s, const AVPacket *pkt)
s->c_dc_scale_table = c; s->c_dc_scale_table = c;
s->intra_matrix[0] = 13; s->intra_matrix[0] = 13;
s->chroma_intra_matrix[0] = 14; s->chroma_intra_matrix[0] = 14;
}
ff_convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16, ff_convert_matrix(s, s->q_intra_matrix, s->q_intra_matrix16,
s->intra_matrix, s->intra_quant_bias, 8, 8, 1); s->intra_matrix, s->intra_quant_bias, 8, 8, 1);
ff_convert_matrix(s, s->q_chroma_intra_matrix, s->q_chroma_intra_matrix16, ff_convert_matrix(s, s->q_chroma_intra_matrix, s->q_chroma_intra_matrix16,
s->chroma_intra_matrix, s->intra_quant_bias, 8, 8, 1); s->chroma_intra_matrix, s->intra_quant_bias, 8, 8, 1);
s->qscale = 8; s->qscale = 8;
}
} }
if (s->pict_type == AV_PICTURE_TYPE_I) { if (s->pict_type == AV_PICTURE_TYPE_I) {