From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 5/8] avcodec/mpeg12dec: Don't initialize IDCT more than once Date: Mon, 2 Oct 2023 12:51:59 +0200 Message-ID: <AS8P250MB0744540C8B4E6A4FBF32E0CB8FC5A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw) In-Reply-To: <AS8P250MB0744CC369A3887A6A38474498FC7A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> Before 998c9f15d1ca8c7489775ebcca51623b915988f1, the IDCTDSPContext has only been initialized in ff_mpv_common_init() which is deferred until immediately before decoding a picture; to nevertheless parse the quant matrices in sequence headers or quant matrix extensions, a dummy (identity) permutation has been stored in the codec's init function; after ff_mpv_common_init() which could change the permutation the matrices were repermutated. Yet since said commit, the IDCTDSPContext is initialized during init and does not change afterwards (unless the user forces different CPU flags), so there is no need to reinitialize it; the repermutation code can be removed as well. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/mpeg12dec.c | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 92ef6944fa..d2dbcd5b61 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1057,8 +1057,6 @@ static av_cold int mpeg_decode_init(AVCodecContext *avctx) avctx->coded_width = avctx->coded_height = 0; // do not trust dimensions from input ff_mpv_decode_init(s2, avctx); - /* we need some permutation to store matrices, - * until the decoder sets the real permutation. */ ff_mpv_idct_init(s2); ff_mpeg12_init_vlcs(); @@ -1093,18 +1091,6 @@ static int mpeg_decode_update_thread_context(AVCodecContext *avctx, } #endif -static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm, - const uint8_t *new_perm) -{ - uint16_t temp_matrix[64]; - int i; - - memcpy(temp_matrix, matrix, 64 * sizeof(uint16_t)); - - for (i = 0; i < 64; i++) - matrix[new_perm[i]] = temp_matrix[old_perm[i]]; -} - static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = { #if CONFIG_MPEG1_NVDEC_HWACCEL AV_PIX_FMT_CUDA, @@ -1177,7 +1163,6 @@ static int mpeg_decode_postinit(AVCodecContext *avctx) { Mpeg1Context *s1 = avctx->priv_data; MpegEncContext *s = &s1->mpeg_enc_ctx; - uint8_t old_permutation[64]; int ret; if (avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO) { @@ -1297,19 +1282,9 @@ FF_ENABLE_DEPRECATION_WARNINGS avctx->pix_fmt = mpeg_get_pixelformat(avctx); - /* Quantization matrices may need reordering - * if DCT permutation is changed. */ - memcpy(old_permutation, s->idsp.idct_permutation, 64 * sizeof(uint8_t)); - - ff_mpv_idct_init(s); if ((ret = ff_mpv_common_init(s)) < 0) return ret; - quant_matrix_rebuild(s->intra_matrix, old_permutation, s->idsp.idct_permutation); - quant_matrix_rebuild(s->inter_matrix, old_permutation, s->idsp.idct_permutation); - quant_matrix_rebuild(s->chroma_intra_matrix, old_permutation, s->idsp.idct_permutation); - quant_matrix_rebuild(s->chroma_inter_matrix, old_permutation, s->idsp.idct_permutation); - s1->mpeg_enc_ctx_allocated = 1; } return 0; @@ -2169,7 +2144,6 @@ static int vcr2_init_sequence(AVCodecContext *avctx) avctx->pix_fmt = mpeg_get_pixelformat(avctx); - ff_mpv_idct_init(s); if ((ret = ff_mpv_common_init(s)) < 0) return ret; s1->mpeg_enc_ctx_allocated = 1; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2023-10-02 10:51 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-09-30 18:02 [FFmpeg-devel] [PATCH 1/4] avcodec/mpegvideo_dec: Check for existence of planes before accesses Andreas Rheinhardt 2023-09-30 18:02 ` [FFmpeg-devel] [PATCH 2/4] avcodec/mpegvideo_dec: Don't memset twice Andreas Rheinhardt 2023-09-30 18:02 ` [FFmpeg-devel] [PATCH 3/4] avcodec/mpegvideo_dec: Remove commented-out legacy cruft Andreas Rheinhardt 2023-10-01 20:29 ` Michael Niedermayer 2023-09-30 18:02 ` [FFmpeg-devel] [PATCH 4/4] avcodec/h264_slice: Don't keep AVCodecContext props in sync manually Andreas Rheinhardt 2023-10-02 10:51 ` Andreas Rheinhardt [this message] 2023-10-03 22:14 ` [FFmpeg-devel] [PATCH 5/8] avcodec/mpeg12dec: Don't initialize IDCT more than once Andreas Rheinhardt 2023-10-02 10:52 ` [FFmpeg-devel] [PATCH 6/8] avcodec/mpegvideo_dec: Don't zero context on init failure Andreas Rheinhardt 2023-10-02 10:52 ` [FFmpeg-devel] [PATCH 7/8] avcodec/mpegvideo_dec: Always initialize IDCTDSPContext during init Andreas Rheinhardt 2023-10-02 10:52 ` [FFmpeg-devel] [PATCH 8/8] avcodec/h263dec, mpeg4videodec: Parse extradata " Andreas Rheinhardt 2023-10-02 23:39 ` [FFmpeg-devel] [PATCH 1/4] avcodec/mpegvideo_dec: Check for existence of planes before accesses Andreas Rheinhardt 2023-10-03 16:04 ` [FFmpeg-devel] [PATCH 09/12] avcodec/rv10: Remove dead code Andreas Rheinhardt 2023-10-04 17:28 ` Michael Niedermayer 2023-10-03 16:04 ` [FFmpeg-devel] [PATCH 10/12] avcodec/rv10: Replace switch by LUT Andreas Rheinhardt 2023-10-04 17:27 ` Michael Niedermayer 2023-10-06 1:42 ` Vittorio Giovara 2023-10-06 2:03 ` Andreas Rheinhardt 2023-10-07 16:44 ` Michael Niedermayer 2023-10-03 16:04 ` [FFmpeg-devel] [PATCH 11/12] avcodec/h261dec, mpeg12dec, vc1dec: Remove setting write-only flags Andreas Rheinhardt 2023-10-04 17:26 ` Michael Niedermayer 2023-10-03 16:04 ` [FFmpeg-devel] [PATCH 12/12] avcodec/mpegvideo: Move allocating new_picture to the encoder Andreas Rheinhardt 2023-10-06 2:21 ` Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8P250MB0744540C8B4E6A4FBF32E0CB8FC5A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git