From 2a7ac5f71ddd871125fa0fed06e74b3a4faa245b Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Mon, 24 Feb 2025 17:47:22 +0100 Subject: [PATCH 19/30] avcodec/mpegvideo_dec: Move syncing DivX-stuff to mpeg4videodec.c It is only used by MPEG-4 (and is used in h263dec.c and can therefore not just be moved to Mpeg4DecContext...). Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg4videodec.c | 14 ++++++++++++++ libavcodec/mpegvideo_dec.c | 16 ---------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index debcafc4c0..14e4de9a45 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -3699,6 +3699,7 @@ static int mpeg4_update_thread_context(AVCodecContext *dst, s->enhancement_type = s1->enhancement_type; s->scalability = s1->scalability; s->intra_dc_threshold = s1->intra_dc_threshold; + s->m.divx_packed = s1->m.divx_packed; s->divx_version = s1->divx_version; s->divx_build = s1->divx_build; s->xvid_build = s1->xvid_build; @@ -3714,6 +3715,19 @@ static int mpeg4_update_thread_context(AVCodecContext *dst, memcpy(s->sprite_shift, s1->sprite_shift, sizeof(s1->sprite_shift)); memcpy(s->sprite_traj, s1->sprite_traj, sizeof(s1->sprite_traj)); + if (s1->m.bitstream_buffer) { + av_fast_padded_malloc(&s->m.bitstream_buffer, + &s->m.allocated_bitstream_buffer_size, + s1->m.bitstream_buffer_size); + if (!s->m.bitstream_buffer) { + s->m.bitstream_buffer_size = 0; + return AVERROR(ENOMEM); + } + s->m.bitstream_buffer_size = s1->m.bitstream_buffer_size; + memcpy(s->m.bitstream_buffer, s1->m.bitstream_buffer, + s1->m.bitstream_buffer_size); + } + if (!init && s1->xvid_build >= 0) ff_xvid_idct_init(&s->m.idsp, dst); diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c index ebbbc1df8b..8d4ba341d5 100644 --- a/libavcodec/mpegvideo_dec.c +++ b/libavcodec/mpegvideo_dec.c @@ -136,22 +136,6 @@ int ff_mpeg_update_thread_context(AVCodecContext *dst, // B-frame info s->low_delay = s1->low_delay; - // DivX handling (doesn't work) - s->divx_packed = s1->divx_packed; - - if (s1->bitstream_buffer) { - av_fast_padded_malloc(&s->bitstream_buffer, - &s->allocated_bitstream_buffer_size, - s1->bitstream_buffer_size); - if (!s->bitstream_buffer) { - s->bitstream_buffer_size = 0; - return AVERROR(ENOMEM); - } - s->bitstream_buffer_size = s1->bitstream_buffer_size; - memcpy(s->bitstream_buffer, s1->bitstream_buffer, - s1->bitstream_buffer_size); - } - // MPEG-2/interlacing info memcpy(&s->progressive_sequence, &s1->progressive_sequence, (char *) &s1->rtp_mode - (char *) &s1->progressive_sequence); -- 2.45.2