This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit f02f948ed011cfb3be72f4f9eda5dd69d8e4c974 Author: Andreas Rheinhardt <[email protected]> AuthorDate: Tue Dec 30 11:38:59 2025 +0100 Commit: Andreas Rheinhardt <[email protected]> CommitDate: Fri Jan 2 18:39:48 2026 +0100 avcodec/wmv2dsp: Modify IDCTDSPContext directly This allows to remove ff_wmv2_common_init() altogether. Signed-off-by: Andreas Rheinhardt <[email protected]> --- configure | 1 + libavcodec/Makefile | 4 ++-- libavcodec/intrax8.c | 15 ++++++--------- libavcodec/intrax8.h | 4 ++-- libavcodec/mips/wmv2dsp_init_mips.c | 4 +++- libavcodec/mips/wmv2dsp_mips.h | 3 ++- libavcodec/msmpeg4.c | 4 ++-- libavcodec/wmv2.c | 37 ------------------------------------- libavcodec/wmv2.h | 8 +++----- libavcodec/wmv2dec.c | 2 +- libavcodec/wmv2dsp.c | 7 +++++-- libavcodec/wmv2dsp.h | 14 +++----------- 12 files changed, 30 insertions(+), 73 deletions(-) diff --git a/configure b/configure index 74e0345d88..3273ba746b 100755 --- a/configure +++ b/configure @@ -2963,6 +2963,7 @@ msmpeg4dec_select="h263_decoder" msmpeg4enc_select="h263_encoder" vc1dsp_select="h264chroma startcode" vvc_sei_select="atsc_a53 golomb" +wmv2dsp_select="idctdsp" # decoders / encoders aac_decoder_select="adts_header mpeg4audio sinewin" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 28ad85afb4..3d60347a19 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -854,8 +854,8 @@ OBJS-$(CONFIG_WMAV2_ENCODER) += wmaenc.o wma.o wma_common.o aactab.o OBJS-$(CONFIG_WMAVOICE_DECODER) += wmavoice.o \ celp_filters.o \ acelp_vectors.o acelp_filters.o -OBJS-$(CONFIG_WMV2_DECODER) += wmv2dec.o wmv2.o wmv2data.o -OBJS-$(CONFIG_WMV2_ENCODER) += wmv2enc.o wmv2.o wmv2data.o +OBJS-$(CONFIG_WMV2_DECODER) += wmv2dec.o wmv2data.o +OBJS-$(CONFIG_WMV2_ENCODER) += wmv2enc.o wmv2data.o OBJS-$(CONFIG_WNV1_DECODER) += wnv1.o OBJS-$(CONFIG_WRAPPED_AVFRAME_DECODER) += wrapped_avframe.o OBJS-$(CONFIG_WRAPPED_AVFRAME_ENCODER) += wrapped_avframe.o diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c index 89b70e5902..ada5fc317f 100644 --- a/libavcodec/intrax8.c +++ b/libavcodec/intrax8.c @@ -437,7 +437,7 @@ static void x8_ac_compensation(IntraX8Context *const w, const int direction, const int dc_level) { int t; -#define B(x,y) w->block[w->idct_permutation[(x) + (y) * 8]] +#define B(x,y) w->block[w->idsp.idct_permutation[(x) + (y) * 8]] #define T(x) ((x) * dc_level + 0x8000) >> 16; switch (direction) { case 0: @@ -637,7 +637,7 @@ static int x8_decode_intra_mb(IntraX8Context *const w, const int chroma) w->frame->linesize[!!chroma]); } if (!zeros_only) - w->wdsp.idct_add(w->dest[chroma], + w->idsp.idct_add(w->dest[chroma], w->frame->linesize[!!chroma], w->block); @@ -693,17 +693,14 @@ av_cold int ff_intrax8_common_init(AVCodecContext *avctx, if (!w->prediction_table) return AVERROR(ENOMEM); - ff_wmv2dsp_init(&w->wdsp); - - ff_init_scantable_permutation(w->idct_permutation, - w->wdsp.idct_perm); + ff_wmv2dsp_init(&w->idsp); ff_permute_scantable(w->permutated_scantable[0], ff_wmv1_scantable[0], - w->idct_permutation); + w->idsp.idct_permutation); ff_permute_scantable(w->permutated_scantable[1], ff_wmv1_scantable[2], - w->idct_permutation); + w->idsp.idct_permutation); ff_permute_scantable(w->permutated_scantable[2], ff_wmv1_scantable[3], - w->idct_permutation); + w->idsp.idct_permutation); ff_intrax8dsp_init(&w->dsp); ff_blockdsp_init(&w->bdsp); diff --git a/libavcodec/intrax8.h b/libavcodec/intrax8.h index 2ec90963a8..a936299fbb 100644 --- a/libavcodec/intrax8.h +++ b/libavcodec/intrax8.h @@ -21,6 +21,7 @@ #include "blockdsp.h" #include "get_bits.h" +#include "idctdsp.h" #include "intrax8dsp.h" #include "wmv2dsp.h" #include "mpegpicture.h" @@ -35,8 +36,7 @@ typedef struct IntraX8Context { // set by ff_intrax8_common_init uint8_t *prediction_table; // 2 * (mb_w * 2) uint8_t permutated_scantable[3][64]; - WMV2DSPContext wdsp; - uint8_t idct_permutation[64]; + IDCTDSPContext idsp; AVCodecContext *avctx; int16_t *block; diff --git a/libavcodec/mips/wmv2dsp_init_mips.c b/libavcodec/mips/wmv2dsp_init_mips.c index af1400731a..e48413b9a4 100644 --- a/libavcodec/mips/wmv2dsp_init_mips.c +++ b/libavcodec/mips/wmv2dsp_init_mips.c @@ -21,9 +21,11 @@ #include "libavutil/mips/cpu.h" #include "config.h" #include "libavutil/attributes.h" +#include "libavcodec/idctdsp.h" +#include "libavcodec/wmv2dsp.h" #include "wmv2dsp_mips.h" -av_cold void ff_wmv2dsp_init_mips(WMV2DSPContext *c) +av_cold void ff_wmv2dsp_init_mips(IDCTDSPContext *c) { int cpu_flags = av_get_cpu_flags(); diff --git a/libavcodec/mips/wmv2dsp_mips.h b/libavcodec/mips/wmv2dsp_mips.h index c96b3d94c7..94fbd8f6b7 100644 --- a/libavcodec/mips/wmv2dsp_mips.h +++ b/libavcodec/mips/wmv2dsp_mips.h @@ -21,7 +21,8 @@ #ifndef AVCODEC_MIPS_WMV2DSP_MIPS_H #define AVCODEC_MIPS_WMV2DSP_MIPS_H -#include "libavcodec/wmv2dsp.h" +#include <stddef.h> +#include <stdint.h> void ff_wmv2_idct_add_mmi(uint8_t *dest, ptrdiff_t line_size, int16_t *block); void ff_wmv2_idct_put_mmi(uint8_t *dest, ptrdiff_t line_size, int16_t *block); diff --git a/libavcodec/msmpeg4.c b/libavcodec/msmpeg4.c index 5d9592d260..386ee83f31 100644 --- a/libavcodec/msmpeg4.c +++ b/libavcodec/msmpeg4.c @@ -44,7 +44,7 @@ #include "mpeg4videodata.h" #include "msmpeg4data.h" #include "msmpeg4_vc1_data.h" -#include "wmv2.h" +#include "wmv2dsp.h" /* * You can also call this codec: MPEG-4 with a twist! @@ -140,7 +140,7 @@ av_cold void ff_msmpeg4_common_init(MpegEncContext *s) break; #if CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER case MSMP4_WMV2: - ff_wmv2_common_init(s); + ff_wmv2dsp_init(&s->idsp); // fallthrough #endif case MSMP4_WMV1: diff --git a/libavcodec/wmv2.c b/libavcodec/wmv2.c deleted file mode 100644 index b29037cacb..0000000000 --- a/libavcodec/wmv2.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2002 The FFmpeg Project - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "idctdsp.h" -#include "mpegvideo.h" -#include "wmv2.h" - - -av_cold void ff_wmv2_common_init(MpegEncContext *s) -{ - WMV2Context *const w = s->private_ctx; - - ff_wmv2dsp_init(&w->wdsp); - s->idsp.perm_type = w->wdsp.idct_perm; - ff_init_scantable_permutation(s->idsp.idct_permutation, - w->wdsp.idct_perm); - s->idsp.idct_put = w->wdsp.idct_put; - s->idsp.idct_add = w->wdsp.idct_add; - s->idsp.idct = NULL; -} diff --git a/libavcodec/wmv2.h b/libavcodec/wmv2.h index b2767c6ca4..e97ee658ba 100644 --- a/libavcodec/wmv2.h +++ b/libavcodec/wmv2.h @@ -21,8 +21,9 @@ #ifndef AVCODEC_WMV2_H #define AVCODEC_WMV2_H -#include "mpegvideo.h" -#include "wmv2dsp.h" +#include <stdint.h> + +#include "libavutil/attributes.h" #define SKIP_TYPE_NONE 0 #define SKIP_TYPE_MPEG 1 @@ -31,12 +32,9 @@ typedef struct WMV2Context { - WMV2DSPContext wdsp; int hshift; } WMV2Context; -void ff_wmv2_common_init(MpegEncContext *s); - static av_always_inline int wmv2_get_cbp_table_index(int qscale, int cbp_index) { static const uint8_t map[3][3] = { diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index 749a8608a2..756ab9a44d 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -277,7 +277,7 @@ static void wmv2_add_block(WMV2DecContext *w, int16_t blocks1[][64], int16_t *block1 = blocks1[n]; switch (w->abt_type_table[n]) { case 0: - w->common.wdsp.idct_add(dst, stride, block1); + h->c.idsp.idct_add(dst, stride, block1); break; case 1: ff_simple_idct84_add(dst, stride, block1); diff --git a/libavcodec/wmv2dsp.c b/libavcodec/wmv2dsp.c index 2616f133ba..7ebe4b614c 100644 --- a/libavcodec/wmv2dsp.c +++ b/libavcodec/wmv2dsp.c @@ -139,13 +139,16 @@ static void wmv2_idct_put_c(uint8_t *dest, ptrdiff_t line_size, int16_t *block) } } -av_cold void ff_wmv2dsp_init(WMV2DSPContext *c) +av_cold void ff_wmv2dsp_init(IDCTDSPContext *c) { c->idct_add = wmv2_idct_add_c; c->idct_put = wmv2_idct_put_c; - c->idct_perm = FF_IDCT_PERM_NONE; + c->idct = NULL; + c->perm_type = FF_IDCT_PERM_NONE; #if ARCH_MIPS ff_wmv2dsp_init_mips(c); #endif + ff_init_scantable_permutation(c->idct_permutation, + c->perm_type); } diff --git a/libavcodec/wmv2dsp.h b/libavcodec/wmv2dsp.h index 6906dc29f2..1402dbb96d 100644 --- a/libavcodec/wmv2dsp.h +++ b/libavcodec/wmv2dsp.h @@ -19,17 +19,9 @@ #ifndef AVCODEC_WMV2DSP_H #define AVCODEC_WMV2DSP_H -#include <stddef.h> -#include <stdint.h> +struct IDCTDSPContext; -typedef struct WMV2DSPContext { - void (*idct_add)(uint8_t *dest, ptrdiff_t line_size, int16_t *block); - void (*idct_put)(uint8_t *dest, ptrdiff_t line_size, int16_t *block); - - int idct_perm; -} WMV2DSPContext; - -void ff_wmv2dsp_init(WMV2DSPContext *c); -void ff_wmv2dsp_init_mips(WMV2DSPContext *c); +void ff_wmv2dsp_init(struct IDCTDSPContext *c); +void ff_wmv2dsp_init_mips(struct IDCTDSPContext *c); #endif /* AVCODEC_WMV2DSP_H */ _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
