[FFmpeg-devel] [PATCH v2 1/2] avutil: move bswapdsp from avcodec to avutil

Mark Reid mindmark at gmail.com
Wed Dec 7 07:50:26 EET 2022


On Tue, Dec 6, 2022 at 8:11 PM Andreas Rheinhardt <
andreas.rheinhardt at outlook.com> wrote:

> mindmark at gmail.com:
> > From: Mark Reid <mindmark at gmail.com>
> >
> > Also renamed bswap_buf to bswap32_buf
> > ---
> >  configure                                     | 56 ++++++++-----------
> >  libavcodec/4xm.c                              | 14 ++---
> >  libavcodec/Makefile                           |  1 -
> >  libavcodec/ac3dec.c                           |  4 +-
> >  libavcodec/ac3dec.h                           |  4 +-
> >  libavcodec/alsdec.c                           | 12 ++--
> >  libavcodec/apedec.c                           | 10 ++--
> >  libavcodec/asv.c                              |  4 +-
> >  libavcodec/asv.h                              |  4 +-
> >  libavcodec/asvdec.c                           |  4 +-
> >  libavcodec/asvenc.c                           |  4 +-
> >  libavcodec/cllc.c                             |  6 +-
> >  libavcodec/eamad.c                            |  6 +-
> >  libavcodec/eatqi.c                            | 10 ++--
> >  libavcodec/exr.c                              |  6 +-
> >  libavcodec/flacenc.c                          |  6 +-
> >  libavcodec/fraps.c                            | 10 ++--
> >  libavcodec/hevcdec.c                          |  4 +-
> >  libavcodec/hevcdec.h                          |  4 +-
> >  libavcodec/huffyuvdec.c                       | 14 ++---
> >  libavcodec/huffyuvenc.c                       |  8 +--
> >  libavcodec/imc.c                              |  6 +-
> >  libavcodec/imm4.c                             | 12 ++--
> >  libavcodec/mdec.c                             |  6 +-
> >  libavcodec/mimic.c                            | 12 ++--
> >  libavcodec/mobiclip.c                         |  6 +-
> >  libavcodec/motionpixels.c                     | 10 ++--
> >  libavcodec/mpc.h                              |  4 +-
> >  libavcodec/mpc7.c                             |  8 +--
> >  libavcodec/rawdec.c                           |  8 +--
> >  libavcodec/riscv/Makefile                     |  3 -
> >  libavcodec/shorten.c                          |  7 ++-
> >  libavcodec/truemotion2.c                      | 11 ++--
> >  libavcodec/truespeech.c                       |  8 +--
> >  libavcodec/utvideo.h                          |  4 +-
> >  libavcodec/utvideodec.c                       | 16 +++---
> >  libavcodec/utvideoenc.c                       | 10 ++--
> >  libavcodec/x86/Makefile                       |  2 -
> >  libavcodec/ylc.c                              | 18 +++---
> >  libavutil/Makefile                            |  2 +
> >  {libavcodec => libavutil}/bswapdsp.c          | 17 +++---
> >  {libavcodec => libavutil}/bswapdsp.h          | 16 +++---
> >  libavutil/riscv/Makefile                      |  7 ++-
> >  .../riscv/bswapdsp_init.c                     |  9 +--
> >  .../riscv/bswapdsp_rvb.S                      |  0
> >  .../riscv/bswapdsp_rvv.S                      |  0
> >  libavutil/version.h                           |  2 +-
> >  libavutil/x86/Makefile                        |  8 ++-
> >  {libavcodec => libavutil}/x86/bswapdsp.asm    |  4 +-
> >  {libavcodec => libavutil}/x86/bswapdsp_init.c | 17 +++---
> >  tests/checkasm/Makefile                       |  2 +-
> >  tests/checkasm/bswapdsp.c                     |  8 +--
> >  tests/checkasm/checkasm.c                     |  4 +-
> >  53 files changed, 216 insertions(+), 222 deletions(-)
> >  rename {libavcodec => libavutil}/bswapdsp.c (80%)
> >  rename {libavcodec => libavutil}/bswapdsp.h (71%)
> >  rename {libavcodec => libavutil}/riscv/bswapdsp_init.c (85%)
> >  rename {libavcodec => libavutil}/riscv/bswapdsp_rvb.S (100%)
> >  rename {libavcodec => libavutil}/riscv/bswapdsp_rvv.S (100%)
> >  rename {libavcodec => libavutil}/x86/bswapdsp.asm (97%)
> >  rename {libavcodec => libavutil}/x86/bswapdsp_init.c (80%)
> >
> > diff --git a/configure b/configure
> > index f4eedfc207..03b502ea37 100755
> > --- a/configure
> > +++ b/configure
> > @@ -2421,7 +2421,6 @@ CONFIG_EXTRA="
> >      audio_frame_queue
> >      audiodsp
> >      blockdsp
> > -    bswapdsp
> >      cabac
> >      cbs
> >      cbs_av1
> > @@ -2749,8 +2748,8 @@ aac_decoder_select="adts_header mpeg4audio sinewin"
> >  aac_fixed_decoder_select="adts_header mpeg4audio"
> >  aac_encoder_select="audio_frame_queue iirfilter lpc sinewin"
> >  aac_latm_decoder_select="aac_decoder aac_latm_parser"
> > -ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert"
> > -ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp"
> > +ac3_decoder_select="ac3_parser ac3dsp fmtconvert"
> > +ac3_fixed_decoder_select="ac3_parser ac3dsp"
> >  ac3_encoder_select="ac3dsp audiodsp me_cmp"
> >  ac3_fixed_encoder_select="ac3dsp audiodsp me_cmp"
> >  acelp_kelvin_decoder_select="audiodsp"
> > @@ -2759,20 +2758,20 @@ adpcm_g722_encoder_select="g722dsp"
> >  agm_decoder_select="idctdsp"
> >  aic_decoder_select="golomb idctdsp"
> >  alac_encoder_select="lpc"
> > -als_decoder_select="bswapdsp mpeg4audio"
> > +als_decoder_select="mpeg4audio"
> >  amrnb_decoder_select="lsp"
> >  amrwb_decoder_select="lsp"
> >  amv_decoder_select="sp5x_decoder exif"
> >  amv_encoder_select="jpegtables mpegvideoenc"
> > -ape_decoder_select="bswapdsp llauddsp"
> > +ape_decoder_select="llauddsp"
> >  apng_decoder_select="inflate_wrapper"
> >  apng_encoder_select="deflate_wrapper llvidencdsp"
> >  aptx_encoder_select="audio_frame_queue"
> >  aptx_hd_encoder_select="audio_frame_queue"
> > -asv1_decoder_select="blockdsp bswapdsp idctdsp"
> > -asv1_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
> > -asv2_decoder_select="blockdsp bswapdsp idctdsp"
> > -asv2_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
> > +asv1_decoder_select="idctdsp"
> > +asv1_encoder_select="aandcttables fdctdsp pixblockdsp"
> > +asv2_decoder_select="idctdsp"
> > +asv2_encoder_select="aandcttables fdctdsp pixblockdsp"
> >  atrac1_decoder_select="sinewin"
> >  av1_decoder_select="av1_frame_split_bsf cbs_av1"
> >  bink_decoder_select="blockdsp hpeldsp"
> > @@ -2780,7 +2779,6 @@ binkaudio_dct_decoder_select="wma_freqs"
> >  binkaudio_rdft_decoder_select="wma_freqs"
> >  cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp
> videodsp"
> >  clearvideo_decoder_select="idctdsp"
> > -cllc_decoder_select="bswapdsp"
> >  comfortnoise_encoder_select="lpc"
> >  cook_decoder_select="audiodsp sinewin"
> >  cri_decoder_select="mjpeg_decoder"
> > @@ -2795,9 +2793,9 @@ dxa_decoder_deps="zlib"
> >  dxv_decoder_select="lzf texturedsp"
> >  eac3_decoder_select="ac3_decoder"
> >  eac3_encoder_select="ac3_encoder"
> > -eamad_decoder_select="aandcttables blockdsp bswapdsp"
> > +eamad_decoder_select="aandcttables blockdsp"
> >  eatgq_decoder_select="aandcttables"
> > -eatqi_decoder_select="aandcttables blockdsp bswapdsp"
> > +eatqi_decoder_select="aandcttables blockdsp"
> >  exr_decoder_deps="zlib"
> >  exr_encoder_deps="zlib"
> >  ffv1_decoder_select="rangecoder"
> > @@ -2805,15 +2803,15 @@ ffv1_encoder_select="rangecoder"
> >  ffvhuff_decoder_select="huffyuv_decoder"
> >  ffvhuff_encoder_select="huffyuv_encoder"
> >  fic_decoder_select="golomb"
> > -flac_encoder_select="bswapdsp lpc"
> > +flac_encoder_select="lpc"
> >  flashsv2_decoder_select="inflate_wrapper"
> >  flashsv2_encoder_select="deflate_wrapper"
> >  flashsv_decoder_select="inflate_wrapper"
> >  flashsv_encoder_deps="zlib"
> >  flv_decoder_select="h263_decoder"
> >  flv_encoder_select="h263_encoder"
> > -fourxm_decoder_select="blockdsp bswapdsp"
> > -fraps_decoder_select="bswapdsp huffman"
> > +fourxm_decoder_select="blockdsp"
> > +fraps_decoder_select="huffman"
> >  g2m_decoder_deps="zlib"
> >  g2m_decoder_select="blockdsp idctdsp jpegtables"
> >  g729_decoder_select="audiodsp"
> > @@ -2829,13 +2827,13 @@ h264_decoder_suggest="error_resilience"
> >  hap_decoder_select="snappy texturedsp"
> >  hap_encoder_deps="libsnappy"
> >  hap_encoder_select="texturedspenc"
> > -hevc_decoder_select="bswapdsp cabac dovi_rpu golomb hevcparse hevc_sei
> videodsp"
> > -huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
> > -huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp"
> > +hevc_decoder_select="cabac dovi_rpu golomb hevcparse hevc_sei videodsp"
> > +huffyuv_decoder_select="huffyuvdsp llviddsp"
> > +huffyuv_encoder_select="huffman huffyuvencdsp llvidencdsp"
> >  hymt_decoder_select="huffyuv_decoder"
> >  iac_decoder_select="imc_decoder"
> > -imc_decoder_select="bswapdsp sinewin"
> > -imm4_decoder_select="bswapdsp idctdsp"
> > +imc_decoder_select="sinewin"
> > +imm4_decoder_select="idctdsp"
> >  imm5_decoder_select="h264_decoder hevc_decoder"
> >  indeo3_decoder_select="hpeldsp"
> >  indeo4_decoder_select="ividsp"
> > @@ -2849,16 +2847,15 @@ ljpeg_encoder_select="jpegtables"
> >  lscr_decoder_select="inflate_wrapper"
> >  magicyuv_decoder_select="llviddsp"
> >  magicyuv_encoder_select="llvidencdsp"
> > -mdec_decoder_select="blockdsp bswapdsp idctdsp"
> > +mdec_decoder_select="blockdsp idctdsp"
> >  metasound_decoder_select="lsp sinewin"
> > -mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
> > +mimic_decoder_select="blockdsp hpeldsp idctdsp"
> >  mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
> >  mjpeg_encoder_select="jpegtables mpegvideoenc"
> >  mjpegb_decoder_select="mjpeg_decoder"
> >  mlp_decoder_select="mlp_parser"
> >  mlp_encoder_select="lpc audio_frame_queue"
> > -mobiclip_decoder_select="bswapdsp golomb"
> > -motionpixels_decoder_select="bswapdsp"
> > +mobiclip_decoder_select="golomb"
> >  mp1_decoder_select="mpegaudio"
> >  mp1float_decoder_select="mpegaudio"
> >  mp2_decoder_select="mpegaudio"
> > @@ -2869,7 +2866,7 @@ mp3adufloat_decoder_select="mpegaudio"
> >  mp3float_decoder_select="mpegaudio"
> >  mp3on4_decoder_select="mpegaudio mpeg4audio"
> >  mp3on4float_decoder_select="mpegaudio mpeg4audio"
> > -mpc7_decoder_select="bswapdsp mpegaudiodsp"
> > +mpc7_decoder_select="mpegaudiodsp"
> >  mpc8_decoder_select="mpegaudiodsp"
> >  mpegvideo_decoder_select="mpegvideodec"
> >  mpeg1video_decoder_select="mpegvideodec"
> > @@ -2909,7 +2906,6 @@ ra_144_decoder_select="audiodsp"
> >  ra_144_encoder_select="audio_frame_queue lpc audiodsp"
> >  ralf_decoder_select="golomb"
> >  rasc_decoder_select="inflate_wrapper"
> > -rawvideo_decoder_select="bswapdsp"
> >  rscc_decoder_deps="zlib"
> >  rv10_decoder_select="h263_decoder"
> >  rv10_encoder_select="h263_encoder"
> > @@ -2918,7 +2914,6 @@ rv20_encoder_select="h263_encoder"
> >  rv30_decoder_select="golomb h264pred h264qpel mpegvideodec rv34dsp"
> >  rv40_decoder_select="golomb h264pred h264qpel mpegvideodec rv34dsp"
> >  screenpresso_decoder_deps="zlib"
> > -shorten_decoder_select="bswapdsp"
> >  sipr_decoder_select="lsp"
> >  smvjpeg_decoder_select="mjpeg_decoder"
> >  snow_decoder_select="dwt h264qpel hpeldsp rangecoder videodsp"
> > @@ -2944,13 +2939,11 @@ tiff_decoder_suggest="zlib lzma"
> >  tiff_encoder_suggest="zlib"
> >  truehd_decoder_select="mlp_parser"
> >  truehd_encoder_select="lpc audio_frame_queue"
> > -truemotion2_decoder_select="bswapdsp"
> > -truespeech_decoder_select="bswapdsp"
> >  tscc_decoder_select="inflate_wrapper"
> >  twinvq_decoder_select="lsp sinewin"
> >  txd_decoder_select="texturedsp"
> > -utvideo_decoder_select="bswapdsp llviddsp"
> > -utvideo_encoder_select="bswapdsp huffman llvidencdsp"
> > +utvideo_decoder_select="llviddsp"
> > +utvideo_encoder_select="huffman llvidencdsp"
> >  vble_decoder_select="llviddsp"
> >  vbn_decoder_select="texturedsp"
> >  vbn_encoder_select="texturedspenc"
> > @@ -2983,7 +2976,6 @@ wmv3_decoder_select="vc1_decoder"
> >  wmv3image_decoder_select="wmv3_decoder"
> >  xma1_decoder_select="wmapro_decoder"
> >  xma2_decoder_select="wmapro_decoder"
> > -ylc_decoder_select="bswapdsp"
> >  zerocodec_decoder_select="inflate_wrapper"
> >  zlib_decoder_select="inflate_wrapper"
> >  zlib_encoder_select="deflate_wrapper"
> > diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c
> > index 5636fdef2d..b99f8be172 100644
> > --- a/libavcodec/4xm.c
> > +++ b/libavcodec/4xm.c
> > @@ -27,6 +27,7 @@
> >  #include <inttypes.h>
> >
> >  #include "libavutil/avassert.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/frame.h"
> >  #include "libavutil/imgutils.h"
> >  #include "libavutil/intreadwrite.h"
> > @@ -34,7 +35,6 @@
> >  #include "libavutil/thread.h"
> >  #include "avcodec.h"
> >  #include "blockdsp.h"
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> > @@ -138,7 +138,7 @@ typedef struct CFrameBuffer {
> >  typedef struct FourXContext {
> >      AVCodecContext *avctx;
> >      BlockDSPContext bdsp;
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >      uint16_t *frame_buffer;
> >      uint16_t *last_frame_buffer;
> >      GetBitContext pre_gb;          ///< ac/dc prefix
> > @@ -469,8 +469,8 @@ static int decode_p_frame(FourXContext *f, const
> uint8_t *buf, int length)
> >                            bitstream_size);
> >      if (!f->bitstream_buffer)
> >          return AVERROR(ENOMEM);
> > -    f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) (buf +
> extra),
> > -                       bitstream_size / 4);
> > +    f->bbdsp.bswap32_buf(f->bitstream_buffer, (const uint32_t *) (buf +
> extra),
> > +                         bitstream_size / 4);
> >      init_get_bits(&f->gb, f->bitstream_buffer, 8 * bitstream_size);
> >
> >      wordstream_offset = extra + bitstream_size;
> > @@ -813,8 +813,8 @@ static int decode_i_frame(FourXContext *f, const
> uint8_t *buf, int length)
> >                            prestream_size);
> >      if (!f->bitstream_buffer)
> >          return AVERROR(ENOMEM);
> > -    f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *)
> prestream,
> > -                       prestream_size / 4);
> > +    f->bbdsp.bswap32_buf(f->bitstream_buffer, (const uint32_t *)
> prestream,
> > +                         prestream_size / 4);
> >      init_get_bits(&f->pre_gb, f->bitstream_buffer, 8 * prestream_size);
> >
> >      f->last_dc = 0 * 128 * 8 * 8;
> > @@ -1013,7 +1013,7 @@ static av_cold int decode_init(AVCodecContext
> *avctx)
> >
> >      f->version = AV_RL32(avctx->extradata) >> 16;
> >      ff_blockdsp_init(&f->bdsp);
> > -    ff_bswapdsp_init(&f->bbdsp);
> > +    av_bswapdsp_init(&f->bbdsp);
> >      f->avctx = avctx;
> >
> >      if (f->version > 2)
> > diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> > index 98841ed07c..6b9b7a48dd 100644
> > --- a/libavcodec/Makefile
> > +++ b/libavcodec/Makefile
> > @@ -70,7 +70,6 @@ OBJS-$(CONFIG_AUDIO_FRAME_QUEUE)       +=
> audio_frame_queue.o
> >  OBJS-$(CONFIG_ATSC_A53)                += atsc_a53.o
> >  OBJS-$(CONFIG_AUDIODSP)                += audiodsp.o
> >  OBJS-$(CONFIG_BLOCKDSP)                += blockdsp.o
> > -OBJS-$(CONFIG_BSWAPDSP)                += bswapdsp.o
> >  OBJS-$(CONFIG_CABAC)                   += cabac.o
> >  OBJS-$(CONFIG_CBS)                     += cbs.o cbs_bsf.o
> >  OBJS-$(CONFIG_CBS_AV1)                 += cbs_av1.o
> > diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c
> > index 1f2949dcfd..218f4e96d2 100644
> > --- a/libavcodec/ac3dec.c
> > +++ b/libavcodec/ac3dec.c
> > @@ -31,13 +31,13 @@
> >  #include <math.h>
> >  #include <string.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/channel_layout.h"
> >  #include "libavutil/crc.h"
> >  #include "libavutil/downmix_info.h"
> >  #include "libavutil/intmath.h"
> >  #include "libavutil/opt.h"
> >  #include "libavutil/thread.h"
> > -#include "bswapdsp.h"
> >  #include "aac_ac3_parser.h"
> >  #include "ac3_parser_internal.h"
> >  #include "ac3dec.h"
> > @@ -229,7 +229,7 @@ static av_cold int ac3_decode_init(AVCodecContext
> *avctx)
> >          return ret;
> >
> >      AC3_RENAME(ff_kbd_window_init)(s->window, 5.0, 256);
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >
> >  #if (USE_FIXED)
> >      s->fdsp = avpriv_alloc_fixed_dsp(avctx->flags &
> AV_CODEC_FLAG_BITEXACT);
> > diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h
> > index 138b462abb..8cd6d83e9a 100644
> > --- a/libavcodec/ac3dec.h
> > +++ b/libavcodec/ac3dec.h
> > @@ -51,6 +51,7 @@
> >  #define AVCODEC_AC3DEC_H
> >
> >  #include "libavutil/tx.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/float_dsp.h"
> >  #include "libavutil/fixed_dsp.h"
> >  #include "libavutil/lfg.h"
> > @@ -59,7 +60,6 @@
> >  #include "ac3.h"
> >  #include "ac3dsp.h"
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "get_bits.h"
> >  #include "fmtconvert.h"
> >
> > @@ -228,7 +228,7 @@ typedef struct AC3DecodeContext {
> >  ///@}
> >
> >  ///@name Optimization
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >  #if USE_FIXED
> >      AVFixedDSPContext *fdsp;
> >  #else
> > diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c
> > index 4605b2248f..af41eda49f 100644
> > --- a/libavcodec/alsdec.c
> > +++ b/libavcodec/alsdec.c
> > @@ -32,12 +32,12 @@
> >  #include "unary.h"
> >  #include "mpeg4audio.h"
> >  #include "bgmc.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "internal.h"
> >  #include "mlz.h"
> >  #include "libavutil/samplefmt.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/crc.h"
> >  #include "libavutil/softfloat_ieee754.h"
> >  #include "libavutil/intfloat.h"
> > @@ -197,7 +197,7 @@ typedef struct ALSDecContext {
> >      AVCodecContext *avctx;
> >      ALSSpecificConfig sconf;
> >      GetBitContext gb;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      const AVCRC *crc_table;
> >      uint32_t crc_org;               ///< CRC value of the original
> input data
> >      uint32_t crc;                   ///< CRC value calculated from
> decoded data
> > @@ -1899,9 +1899,9 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *frame,
> >                           sample++)
> >                          *dest++ = av_bswap16(src[sample]);
> >                  } else {
> > -                    ctx->bdsp.bswap_buf((uint32_t *) ctx->crc_buffer,
> > -                                        (uint32_t *) frame->data[0],
> > -                                        ctx->cur_frame_length *
> channels);
> > +                    ctx->bdsp.bswap32_buf((uint32_t *) ctx->crc_buffer,
> > +                                          (uint32_t *) frame->data[0],
> > +                                          ctx->cur_frame_length *
> channels);
> >                  }
> >                  crc_source = ctx->crc_buffer;
> >              } else {
> > @@ -2164,7 +2164,7 @@ static av_cold int decode_init(AVCodecContext
> *avctx)
> >          }
> >      }
> >
> > -    ff_bswapdsp_init(&ctx->bdsp);
> > +    av_bswapdsp_init(&ctx->bdsp);
> >
> >      return 0;
> >  }
> > diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
> > index c08d13d6c2..7b9fa74416 100644
> > --- a/libavcodec/apedec.c
> > +++ b/libavcodec/apedec.c
> > @@ -23,12 +23,12 @@
> >  #include <inttypes.h>
> >
> >  #include "libavutil/avassert.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/channel_layout.h"
> >  #include "libavutil/crc.h"
> >  #include "libavutil/opt.h"
> >  #include "lossless_audiodsp.h"
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> > @@ -153,7 +153,7 @@ typedef struct APEPredictor64 {
> >  typedef struct APEContext {
> >      AVClass *class;                          ///< class for AVOptions
> >      AVCodecContext *avctx;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      LLAudDSPContext adsp;
> >      int channels;
> >      int samples;                             ///< samples left to
> decode in current frame
> > @@ -313,7 +313,7 @@ static av_cold int ape_decode_init(AVCodecContext
> *avctx)
> >          s->predictor_decode_stereo = predictor_decode_stereo_3950;
> >      }
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >      ff_llauddsp_init(&s->adsp);
> >      av_channel_layout_uninit(&avctx->ch_layout);
> >      avctx->ch_layout = (channels == 2) ?
> (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO
> > @@ -1499,8 +1499,8 @@ static int ape_decode_frame(AVCodecContext *avctx,
> AVFrame *frame,
> >          av_fast_padded_malloc(&s->data, &s->data_size, buf_size);
> >          if (!s->data)
> >              return AVERROR(ENOMEM);
> > -        s->bdsp.bswap_buf((uint32_t *) s->data, (const uint32_t *) buf,
> > -                          buf_size >> 2);
> > +        s->bdsp.bswap32_buf((uint32_t *) s->data, (const uint32_t *)
> buf,
> > +                            buf_size >> 2);
> >          memset(s->data + (buf_size & ~3), 0, buf_size & 3);
> >          s->ptr = s->data;
> >          s->data_end = s->data + buf_size;
> > diff --git a/libavcodec/asv.c b/libavcodec/asv.c
> > index 3aa08c30c0..bfe669d25e 100644
> > --- a/libavcodec/asv.c
> > +++ b/libavcodec/asv.c
> > @@ -26,10 +26,10 @@
> >  #include <stdint.h>
> >
> >  #include "libavutil/attributes.h"
> > +#include "libavutil/bswapdsp.h"
> >
> >  #include "asv.h"
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >
> >  const uint8_t ff_asv_scantab[64] = {
> >      0x00, 0x08, 0x01, 0x09, 0x10, 0x18, 0x11, 0x19,
> > @@ -92,7 +92,7 @@ av_cold void ff_asv_common_init(AVCodecContext *avctx)
> >  {
> >      ASVCommonContext *const a = avctx->priv_data;
> >
> > -    ff_bswapdsp_init(&a->bbdsp);
> > +    av_bswapdsp_init(&a->bbdsp);
> >
> >      a->mb_width   = (avctx->width  + 15) / 16;
> >      a->mb_height  = (avctx->height + 15) / 16;
> > diff --git a/libavcodec/asv.h b/libavcodec/asv.h
> > index 7c0983a497..f7e00d8ef2 100644
> > --- a/libavcodec/asv.h
> > +++ b/libavcodec/asv.h
> > @@ -29,11 +29,11 @@
> >  #include <stdint.h>
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> > +#include "libavutil/bswapdsp.h"
> >
> >  typedef struct ASVCommonContext {
> >      AVCodecContext *avctx;
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >      int mb_width;
> >      int mb_height;
> >      int mb_width2;
> > diff --git a/libavcodec/asvdec.c b/libavcodec/asvdec.c
> > index 699aab9f8f..25dab7473f 100644
> > --- a/libavcodec/asvdec.c
> > +++ b/libavcodec/asvdec.c
> > @@ -253,8 +253,8 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *p,
> >          if (!a->bitstream_buffer)
> >              return AVERROR(ENOMEM);
> >
> > -        c->bbdsp.bswap_buf((uint32_t *) a->bitstream_buffer,
> > -                           (const uint32_t *) buf, buf_size / 4);
> > +        c->bbdsp.bswap32_buf((uint32_t *) a->bitstream_buffer,
> > +                             (const uint32_t *) buf, buf_size / 4);
> >          ret = init_get_bits8(&a->gb, a->bitstream_buffer, buf_size);
> >      } else {
> >          ret = init_get_bits8_le(&a->gb, buf, buf_size);
> > diff --git a/libavcodec/asvenc.c b/libavcodec/asvenc.c
> > index 9da7cbb986..2bf67d686c 100644
> > --- a/libavcodec/asvenc.c
> > +++ b/libavcodec/asvenc.c
> > @@ -309,8 +309,8 @@ static int encode_frame(AVCodecContext *avctx,
> AVPacket *pkt,
> >      size = (put_bytes_output(&a->pb) + 3) / 4;
> >
> >      if (avctx->codec_id == AV_CODEC_ID_ASV1) {
> > -        c->bbdsp.bswap_buf((uint32_t *) pkt->data,
> > -                           (uint32_t *) pkt->data, size);
> > +        c->bbdsp.bswap32_buf((uint32_t *) pkt->data,
> > +                             (uint32_t *) pkt->data, size);
> >      }
> >
> >      pkt->size   = size * 4;
> > diff --git a/libavcodec/cllc.c b/libavcodec/cllc.c
> > index 911717b68d..dede8591c5 100644
> > --- a/libavcodec/cllc.c
> > +++ b/libavcodec/cllc.c
> > @@ -22,8 +22,8 @@
> >
> >  #include <inttypes.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/intreadwrite.h"
> > -#include "bswapdsp.h"
> >  #include "canopus.h"
> >  #include "get_bits.h"
> >  #include "avcodec.h"
> > @@ -36,7 +36,7 @@
> >
> >  typedef struct CLLCContext {
> >      AVCodecContext *avctx;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >
> >      uint8_t *swapped_buf;
> >      int      swapped_buf_size;
> > @@ -486,7 +486,7 @@ static av_cold int cllc_decode_init(AVCodecContext
> *avctx)
> >      ctx->swapped_buf      = NULL;
> >      ctx->swapped_buf_size = 0;
> >
> > -    ff_bswapdsp_init(&ctx->bdsp);
> > +    av_bswapdsp_init(&ctx->bdsp);
> >
> >      return 0;
> >  }
> > diff --git a/libavcodec/eamad.c b/libavcodec/eamad.c
> > index 45012c62b8..0ffcd14105 100644
> > --- a/libavcodec/eamad.c
> > +++ b/libavcodec/eamad.c
> > @@ -28,12 +28,12 @@
> >   * http://wiki.multimedia.cx/index.php?title=Electronic_Arts_MAD
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/mem_internal.h"
> >
> >  #include "avcodec.h"
> >  #include "blockdsp.h"
> >  #include "bytestream.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "get_bits.h"
> > @@ -50,7 +50,7 @@
> >  typedef struct MadContext {
> >      AVCodecContext *avctx;
> >      BlockDSPContext bdsp;
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >      AVFrame *last_frame;
> >      GetBitContext gb;
> >      void *bitstream_buf;
> > @@ -67,7 +67,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      s->avctx = avctx;
> >      avctx->pix_fmt = AV_PIX_FMT_YUV420P;
> >      ff_blockdsp_init(&s->bdsp);
> > -    ff_bswapdsp_init(&s->bbdsp);
> > +    av_bswapdsp_init(&s->bbdsp);
> >      ff_mpeg12_init_vlcs();
> >
> >      s->last_frame = av_frame_alloc();
> > diff --git a/libavcodec/eatqi.c b/libavcodec/eatqi.c
> > index e4f12b3db2..b1475b16c4 100644
> > --- a/libavcodec/eatqi.c
> > +++ b/libavcodec/eatqi.c
> > @@ -26,11 +26,11 @@
> >   * @see http://wiki.multimedia.cx/index.php?title=Electronic_Arts_TQI
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/mem_internal.h"
> >
> >  #include "avcodec.h"
> >  #include "blockdsp.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "get_bits.h"
> > @@ -43,7 +43,7 @@ typedef struct TqiContext {
> >      AVCodecContext *avctx;
> >      GetBitContext gb;
> >      BlockDSPContext bdsp;
> > -    BswapDSPContext bsdsp;
> > +    AVBSwapDSPContext bsdsp;
> >
> >      void *bitstream_buf;
> >      unsigned int bitstream_buf_size;
> > @@ -60,7 +60,7 @@ static av_cold int tqi_decode_init(AVCodecContext
> *avctx)
> >      TqiContext *t = avctx->priv_data;
> >
> >      ff_blockdsp_init(&t->bdsp);
> > -    ff_bswapdsp_init(&t->bsdsp);
> > +    av_bswapdsp_init(&t->bsdsp);
> >
> >      avctx->framerate = (AVRational){ 15, 1 };
> >      avctx->pix_fmt = AV_PIX_FMT_YUV420P;
> > @@ -148,8 +148,8 @@ static int tqi_decode_frame(AVCodecContext *avctx,
> AVFrame *frame,
> >                            buf_end - buf);
> >      if (!t->bitstream_buf)
> >          return AVERROR(ENOMEM);
> > -    t->bsdsp.bswap_buf(t->bitstream_buf, (const uint32_t *) buf,
> > -                       (buf_end - buf) / 4);
> > +    t->bsdsp.bswap32_buf(t->bitstream_buf, (const uint32_t *) buf,
> > +                         (buf_end - buf) / 4);
> >      init_get_bits(&t->gb, t->bitstream_buf, 8 * (buf_end - buf));
> >
> >      t->last_dc[0] =
> > diff --git a/libavcodec/exr.c b/libavcodec/exr.c
> > index 6a0af96ce4..e22045a1a9 100644
> > --- a/libavcodec/exr.c
> > +++ b/libavcodec/exr.c
> > @@ -47,7 +47,7 @@
> >  #include "bytestream.h"
> >
> >  #if HAVE_BIGENDIAN
> > -#include "bswapdsp.h"
> > +#include "libavutil/bswapdsp.h"
> >  #endif
> >
> >  #include "codec_internal.h"
> > @@ -150,7 +150,7 @@ typedef struct EXRContext {
> >      ExrDSPContext dsp;
> >
> >  #if HAVE_BIGENDIAN
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >  #endif
> >
> >      enum ExrCompr compression;
> > @@ -2224,7 +2224,7 @@ static av_cold int decode_init(AVCodecContext
> *avctx)
> >      ff_exrdsp_init(&s->dsp);
> >
> >  #if HAVE_BIGENDIAN
> > -    ff_bswapdsp_init(&s->bbdsp);
> > +    av_bswapdsp_init(&s->bbdsp);
> >  #endif
> >
> >      trc_func = avpriv_get_trc_function_from_trc(s->apply_trc_type);
> > diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c
> > index bca71b3780..1082910974 100644
> > --- a/libavcodec/flacenc.c
> > +++ b/libavcodec/flacenc.c
> > @@ -20,6 +20,7 @@
> >   */
> >
> >  #include "libavutil/avassert.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/channel_layout.h"
> >  #include "libavutil/crc.h"
> >  #include "libavutil/intmath.h"
> > @@ -27,7 +28,6 @@
> >  #include "libavutil/opt.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "encode.h"
> >  #include "put_bits.h"
> > @@ -123,7 +123,7 @@ typedef struct FlacEncodeContext {
> >      struct AVMD5 *md5ctx;
> >      uint8_t *md5_buffer;
> >      unsigned int md5_buffer_size;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      FLACEncDSPContext flac_dsp;
> >
> >      int flushed;
> > @@ -454,7 +454,7 @@ static av_cold int flac_encode_init(AVCodecContext
> *avctx)
> >      ret = ff_lpc_init(&s->lpc_ctx, avctx->frame_size,
> >                        s->options.max_prediction_order,
> FF_LPC_TYPE_LEVINSON);
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >      ff_flacencdsp_init(&s->flac_dsp);
> >
> >      dprint_compression_options(s);
> > diff --git a/libavcodec/fraps.c b/libavcodec/fraps.c
> > index 4c4c46b602..33e24a5bfb 100644
> > --- a/libavcodec/fraps.c
> > +++ b/libavcodec/fraps.c
> > @@ -35,11 +35,11 @@
> >
> >  #define CACHED_BITSTREAM_READER HAVE_FAST_64BIT
> >  #define UNCHECKED_BITSTREAM_READER 1
> > +#include "libavutil/bswapdsp.h"
> >  #include "avcodec.h"
> >  #include "get_bits.h"
> >  #include "huffman.h"
> >  #include "bytestream.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "thread.h"
> >
> > @@ -51,7 +51,7 @@
> >   */
> >  typedef struct FrapsContext {
> >      AVCodecContext *avctx;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      uint8_t *tmpbuf;
> >      int tmpbuf_size;
> >  } FrapsContext;
> > @@ -69,7 +69,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      s->avctx  = avctx;
> >      s->tmpbuf = NULL;
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >
> >      return 0;
> >  }
> > @@ -106,8 +106,8 @@ static int fraps2_decode_plane(FrapsContext *s,
> uint8_t *dst, int stride, int w,
> >      /* we have built Huffman table and are ready to decode plane */
> >
> >      /* convert bits so they may be used by standard bitreader */
> > -    s->bdsp.bswap_buf((uint32_t *) s->tmpbuf,
> > -                      (const uint32_t *) src, size >> 2);
> > +    s->bdsp.bswap32_buf((uint32_t *) s->tmpbuf,
> > +                        (const uint32_t *) src, size >> 2);
> >
> >      if ((ret = init_get_bits8(&gb, s->tmpbuf, size)) < 0)
> >          return ret;
> > diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
> > index 567e8d81d4..e9cef539b2 100644
> > --- a/libavcodec/hevcdec.c
> > +++ b/libavcodec/hevcdec.c
> > @@ -27,6 +27,7 @@
> >
> >  #include "libavutil/attributes.h"
> >  #include "libavutil/avstring.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/common.h"
> >  #include "libavutil/display.h"
> >  #include "libavutil/film_grain_params.h"
> > @@ -37,7 +38,6 @@
> >  #include "libavutil/pixdesc.h"
> >  #include "libavutil/timecode.h"
> >
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "cabac_functions.h"
> >  #include "codec_internal.h"
> > @@ -3527,7 +3527,7 @@ static av_cold int
> hevc_init_context(AVCodecContext *avctx)
> >      if (!s->md5_ctx)
> >          return AVERROR(ENOMEM);
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >
> >      s->dovi_ctx.logctx = avctx;
> >      s->eos = 0;
> > diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h
> > index 9d3f4adbb3..f73ff352d1 100644
> > --- a/libavcodec/hevcdec.h
> > +++ b/libavcodec/hevcdec.h
> > @@ -25,11 +25,11 @@
> >
> >  #include <stdatomic.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/buffer.h"
> >  #include "libavutil/mem_internal.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "cabac.h"
> >  #include "dovi_rpu.h"
> >  #include "get_bits.h"
> > @@ -541,7 +541,7 @@ typedef struct HEVCContext {
> >      HEVCPredContext hpc;
> >      HEVCDSPContext hevcdsp;
> >      VideoDSPContext vdsp;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      H274FilmGrainDatabase h274db;
> >      int8_t *qp_y_tab;
> >      uint8_t *horizontal_bs;
> > diff --git a/libavcodec/huffyuvdec.c b/libavcodec/huffyuvdec.c
> > index 7d3515cc88..5d3c7a3828 100644
> > --- a/libavcodec/huffyuvdec.c
> > +++ b/libavcodec/huffyuvdec.c
> > @@ -35,13 +35,13 @@
> >  #include "config_components.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "get_bits.h"
> >  #include "huffyuv.h"
> >  #include "huffyuvdsp.h"
> >  #include "lossless_videodsp.h"
> >  #include "thread.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/imgutils.h"
> >  #include "libavutil/pixdesc.h"
> >
> > @@ -76,7 +76,7 @@ typedef struct HYuvDecContext {
> >      VLC vlc[8];                             //Y,U,V,A,YY,YU,YV,AA
> >      uint8_t *bitstream_buffer;
> >      unsigned int bitstream_buffer_size;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      HuffYUVDSPContext hdsp;
> >      LLVidDSPContext llviddsp;
> >  } HYuvDecContext;
> > @@ -340,7 +340,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >
> >      s->flags = avctx->flags;
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >      ff_huffyuvdsp_init(&s->hdsp, avctx->pix_fmt);
> >      ff_llviddsp_init(&s->llviddsp);
> >      memset(s->vlc, 0, 4 * sizeof(VLC));
> > @@ -1239,8 +1239,8 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *p,
> >      if (!s->bitstream_buffer)
> >          return AVERROR(ENOMEM);
> >
> > -    s->bdsp.bswap_buf((uint32_t *) s->bitstream_buffer,
> > -                      (const uint32_t *) buf, buf_size / 4);
> > +    s->bdsp.bswap32_buf((uint32_t *) s->bitstream_buffer,
> > +                        (const uint32_t *) buf, buf_size / 4);
> >
> >      if ((ret = ff_thread_get_buffer(avctx, p, 0)) < 0)
> >          return ret;
> > @@ -1282,8 +1282,8 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *p,
> >                  return AVERROR_INVALIDDATA;
> >
> >              y_offset = height - (slice + 1) * slice_height;
> > -            s->bdsp.bswap_buf((uint32_t *)s->bitstream_buffer,
> > -                              (const uint32_t *)(buf + slice_offset),
> slice_size / 4);
> > +            s->bdsp.bswap32_buf((uint32_t *)s->bitstream_buffer,
> > +                                (const uint32_t *)(buf + slice_offset),
> slice_size / 4);
> >          } else {
> >              y_offset = 0;
> >              slice_offset = 0;
> > diff --git a/libavcodec/huffyuvenc.c b/libavcodec/huffyuvenc.c
> > index db274e37ad..6230e107a3 100644
> > --- a/libavcodec/huffyuvenc.c
> > +++ b/libavcodec/huffyuvenc.c
> > @@ -31,7 +31,6 @@
> >  #include "config_components.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "encode.h"
> >  #include "huffyuv.h"
> > @@ -39,6 +38,7 @@
> >  #include "huffyuvencdsp.h"
> >  #include "lossless_videoencdsp.h"
> >  #include "put_bits.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/opt.h"
> >  #include "libavutil/pixdesc.h"
> >
> > @@ -68,7 +68,7 @@ typedef struct HYuvEncContext {
> >      uint64_t stats[4][MAX_VLC_N];
> >      uint8_t len[4][MAX_VLC_N];
> >      uint32_t bits[4][MAX_VLC_N];
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      HuffYUVEncDSPContext hencdsp;
> >      LLVidEncDSPContext llvidencdsp;
> >      int non_determ; // non-deterministic, multi-threaded encoder allowed
> > @@ -247,7 +247,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
> >      s->avctx = avctx;
> >      s->flags = avctx->flags;
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >      ff_huffyuvencdsp_init(&s->hencdsp, avctx->pix_fmt);
> >      ff_llvidencdsp_init(&s->llvidencdsp);
> >
> > @@ -1018,7 +1018,7 @@ static int encode_frame(AVCodecContext *avctx,
> AVPacket *pkt,
> >          avctx->stats_out[0] = '\0';
> >      if (!(s->avctx->flags2 & AV_CODEC_FLAG2_NO_OUTPUT)) {
> >          flush_put_bits(&s->pb);
> > -        s->bdsp.bswap_buf((uint32_t *) pkt->data, (uint32_t *)
> pkt->data, size);
> > +        s->bdsp.bswap32_buf((uint32_t *) pkt->data, (uint32_t *)
> pkt->data, size);
> >      }
> >
> >      s->picture_number++;
> > diff --git a/libavcodec/imc.c b/libavcodec/imc.c
> > index 174332de4d..185da01323 100644
> > --- a/libavcodec/imc.c
> > +++ b/libavcodec/imc.c
> > @@ -34,6 +34,7 @@
> >  #include <math.h>
> >  #include <stddef.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/channel_layout.h"
> >  #include "libavutil/ffmath.h"
> >  #include "libavutil/float_dsp.h"
> > @@ -43,7 +44,6 @@
> >  #include "libavutil/tx.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "get_bits.h"
> > @@ -92,7 +92,7 @@ typedef struct IMCContext {
> >      GetBitContext gb;
> >
> >      AVFloatDSPContext *fdsp;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      AVTXContext *mdct;
> >      av_tx_fn mdct_fn;
> >      float *out_samples;
> > @@ -243,7 +243,7 @@ static av_cold int imc_decode_init(AVCodecContext
> *avctx)
> >      if (ret < 0)
> >          return ret;
> >
> > -    ff_bswapdsp_init(&q->bdsp);
> > +    av_bswapdsp_init(&q->bdsp);
> >
> >      avctx->sample_fmt     = AV_SAMPLE_FMT_FLTP;
> >
> > diff --git a/libavcodec/imm4.c b/libavcodec/imm4.c
> > index ccec5dff43..ae391b343b 100644
> > --- a/libavcodec/imm4.c
> > +++ b/libavcodec/imm4.c
> > @@ -23,11 +23,11 @@
> >  #include <stddef.h>
> >  #include <string.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/mem_internal.h"
> >  #include "libavutil/thread.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "copy_block.h"
> > @@ -40,7 +40,7 @@
> >  #define BLOCK_VLC_BITS  12
> >
> >  typedef struct IMM4Context {
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      GetBitContext  gb;
> >
> >      AVFrame *prev_frame;
> > @@ -368,9 +368,9 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *frame,
> >      if (!s->bitstream)
> >          return AVERROR(ENOMEM);
> >
> > -    s->bdsp.bswap_buf((uint32_t *)s->bitstream,
> > -                      (uint32_t *)avpkt->data,
> > -                      (avpkt->size + 3) >> 2);
> > +    s->bdsp.bswap32_buf((uint32_t *)s->bitstream,
> > +                        (uint32_t *)avpkt->data,
> > +                        (avpkt->size + 3) >> 2);
> >
> >      if ((ret = init_get_bits8(gb, s->bitstream, FFALIGN(avpkt->size,
> 4))) < 0)
> >          return ret;
> > @@ -495,7 +495,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      static AVOnce init_static_once = AV_ONCE_INIT;
> >      IMM4Context *s = avctx->priv_data;
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >      ff_idctdsp_init(&s->idsp, avctx);
> >
> >      s->prev_frame = av_frame_alloc();
> > diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c
> > index 640b671a0f..269a3afdfe 100644
> > --- a/libavcodec/mdec.c
> > +++ b/libavcodec/mdec.c
> > @@ -27,11 +27,11 @@
> >   * This is very similar to intra-only MPEG-1.
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/mem_internal.h"
> >
> >  #include "avcodec.h"
> >  #include "blockdsp.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "idctdsp.h"
> >  #include "mpeg12data.h"
> > @@ -41,7 +41,7 @@
> >  typedef struct MDECContext {
> >      AVCodecContext *avctx;
> >      BlockDSPContext bdsp;
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >      IDCTDSPContext idsp;
> >      GetBitContext gb;
> >      uint8_t permutated_scantable[64];
> > @@ -219,7 +219,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      a->avctx           = avctx;
> >
> >      ff_blockdsp_init(&a->bdsp);
> > -    ff_bswapdsp_init(&a->bbdsp);
> > +    av_bswapdsp_init(&a->bbdsp);
> >      ff_idctdsp_init(&a->idsp, avctx);
> >      ff_mpeg12_init_vlcs();
> >      ff_permute_scantable(a->permutated_scantable, ff_zigzag_direct,
> > diff --git a/libavcodec/mimic.c b/libavcodec/mimic.c
> > index 891471b30e..333085f8f3 100644
> > --- a/libavcodec/mimic.c
> > +++ b/libavcodec/mimic.c
> > @@ -21,6 +21,7 @@
> >
> >  #include <stdint.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/mem_internal.h"
> >  #include "libavutil/thread.h"
> >
> > @@ -30,7 +31,6 @@
> >  #include "decode.h"
> >  #include "get_bits.h"
> >  #include "bytestream.h"
> > -#include "bswapdsp.h"
> >  #include "hpeldsp.h"
> >  #include "idctdsp.h"
> >  #include "thread.h"
> > @@ -58,7 +58,7 @@ typedef struct MimicContext {
> >      GetBitContext   gb;
> >      uint8_t         permutated_scantable[64];
> >      BlockDSPContext bdsp;
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >      HpelDSPContext  hdsp;
> >      IDCTDSPContext  idsp;
> >
> > @@ -134,7 +134,7 @@ static av_cold int mimic_decode_init(AVCodecContext
> *avctx)
> >      ctx->cur_index  = 15;
> >
> >      ff_blockdsp_init(&ctx->bdsp);
> > -    ff_bswapdsp_init(&ctx->bbdsp);
> > +    av_bswapdsp_init(&ctx->bbdsp);
> >      ff_hpeldsp_init(&ctx->hdsp, avctx->flags);
> >      ff_idctdsp_init(&ctx->idsp, avctx);
> >      ff_permute_scantable(ctx->permutated_scantable, col_zag,
> ctx->idsp.idct_permutation);
> > @@ -411,9 +411,9 @@ static int mimic_decode_frame(AVCodecContext *avctx,
> AVFrame *rframe,
> >      if (!ctx->swap_buf)
> >          return AVERROR(ENOMEM);
> >
> > -    ctx->bbdsp.bswap_buf(ctx->swap_buf,
> > -                         (const uint32_t *) (buf + MIMIC_HEADER_SIZE),
> > -                         swap_buf_size >> 2);
> > +    ctx->bbdsp.bswap32_buf(ctx->swap_buf,
> > +                           (const uint32_t *) (buf + MIMIC_HEADER_SIZE),
> > +                           swap_buf_size >> 2);
> >      init_get_bits(&ctx->gb, ctx->swap_buf, swap_buf_size << 3);
> >
> >      res = decode(ctx, quality, num_coeffs, !is_pframe);
> > diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c
> > index c3b2383dbc..79c6953ee4 100644
> > --- a/libavcodec/mobiclip.c
> > +++ b/libavcodec/mobiclip.c
> > @@ -24,10 +24,10 @@
> >  #include <inttypes.h>
> >
> >  #include "libavutil/avassert.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/thread.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "get_bits.h"
> > @@ -271,7 +271,7 @@ typedef struct MobiClipContext {
> >      MotionXY *motion;
> >      int     motion_size;
> >
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >  } MobiClipContext;
> >
> >  static VLC rl_vlc[2];
> > @@ -310,7 +310,7 @@ static av_cold int mobiclip_init(AVCodecContext
> *avctx)
> >          return AVERROR_INVALIDDATA;
> >      }
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >
> >      avctx->pix_fmt = AV_PIX_FMT_YUV420P;
> >
> > diff --git a/libavcodec/motionpixels.c b/libavcodec/motionpixels.c
> > index 4141c5a495..04a56a379c 100644
> > --- a/libavcodec/motionpixels.c
> > +++ b/libavcodec/motionpixels.c
> > @@ -19,13 +19,13 @@
> >   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/thread.h"
> >
> >  #include "config.h"
> >
> >  #include "avcodec.h"
> >  #include "get_bits.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >
> > @@ -41,7 +41,7 @@ typedef struct HuffCode {
> >  typedef struct MotionPixelsContext {
> >      AVCodecContext *avctx;
> >      AVFrame *frame;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      uint8_t *changes_map;
> >      int offset_bits_len;
> >      int codes_count, current_codes_count;
> > @@ -80,7 +80,7 @@ static av_cold int mp_decode_init(AVCodecContext
> *avctx)
> >      }
> >
> >      mp->avctx = avctx;
> > -    ff_bswapdsp_init(&mp->bdsp);
> > +    av_bswapdsp_init(&mp->bdsp);
> >      mp->changes_map = av_calloc(avctx->width, h4);
> >      mp->offset_bits_len = av_log2(avctx->width * avctx->height) + 1;
> >      mp->vpt = av_calloc(avctx->height, sizeof(*mp->vpt));
> > @@ -294,8 +294,8 @@ static int mp_decode_frame(AVCodecContext *avctx,
> AVFrame *rframe,
> >      av_fast_padded_malloc(&mp->bswapbuf, &mp->bswapbuf_size, buf_size);
> >      if (!mp->bswapbuf)
> >          return AVERROR(ENOMEM);
> > -    mp->bdsp.bswap_buf((uint32_t *) mp->bswapbuf, (const uint32_t *)
> buf,
> > -                       buf_size / 4);
> > +    mp->bdsp.bswap32_buf((uint32_t *) mp->bswapbuf, (const uint32_t *)
> buf,
> > +                         buf_size / 4);
> >      if (buf_size & 3)
> >          memcpy(mp->bswapbuf + (buf_size & ~3), buf + (buf_size & ~3),
> buf_size & 3);
> >      init_get_bits(&gb, mp->bswapbuf, buf_size * 8);
> > diff --git a/libavcodec/mpc.h b/libavcodec/mpc.h
> > index cef8db4899..c736a84088 100644
> > --- a/libavcodec/mpc.h
> > +++ b/libavcodec/mpc.h
> > @@ -31,10 +31,10 @@
> >
> >  #include <stdint.h>
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/lfg.h"
> >  #include "libavutil/mem_internal.h"
> >
> > -#include "bswapdsp.h"
> >  #include "mpegaudio.h"
> >  #include "mpegaudiodsp.h"
> >
> > @@ -52,7 +52,7 @@ typedef struct Band {
> >  }Band;
> >
> >  typedef struct MPCContext {
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      MPADSPContext mpadsp;
> >      int IS, MSS, gapless;
> >      int lastframelen;
> > diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c
> > index d2745366c2..9b7af9a01f 100644
> > --- a/libavcodec/mpc7.c
> > +++ b/libavcodec/mpc7.c
> > @@ -91,9 +91,9 @@ static av_cold int mpc7_decode_init(AVCodecContext *
> avctx)
> >      }
> >      memset(c->oldDSCF, 0, sizeof(c->oldDSCF));
> >      av_lfg_init(&c->rnd, 0xDEADBEEF);
> > -    ff_bswapdsp_init(&c->bdsp);
> > +    av_bswapdsp_init(&c->bdsp);
> >      ff_mpadsp_init(&c->mpadsp);
> > -    c->bdsp.bswap_buf((uint32_t *) buf, (const uint32_t *)
> avctx->extradata, 4);
> > +    c->bdsp.bswap32_buf((uint32_t *) buf, (const uint32_t *)
> avctx->extradata, 4);
> >      init_get_bits(&gb, buf, 128);
> >
> >      c->IS = get_bits1(&gb);
> > @@ -211,8 +211,8 @@ static int mpc7_decode_frame(AVCodecContext *avctx,
> AVFrame *frame,
> >      av_fast_padded_malloc(&c->bits, &c->buf_size, buf_size);
> >      if (!c->bits)
> >          return AVERROR(ENOMEM);
> > -    c->bdsp.bswap_buf((uint32_t *) c->bits, (const uint32_t *) buf,
> > -                      buf_size >> 2);
> > +    c->bdsp.bswap32_buf((uint32_t *) c->bits, (const uint32_t *) buf,
> > +                        buf_size >> 2);
> >      if ((ret = init_get_bits8(&gb, c->bits, buf_size)) < 0)
> >          return ret;
> >      skip_bits_long(&gb, skip);
> > diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c
> > index 72cdd13916..0fc25cac04 100644
> > --- a/libavcodec/rawdec.c
> > +++ b/libavcodec/rawdec.c
> > @@ -25,13 +25,13 @@
> >   */
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "get_bits.h"
> >  #include "internal.h"
> >  #include "raw.h"
> >  #include "libavutil/avassert.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/buffer.h"
> >  #include "libavutil/common.h"
> >  #include "libavutil/intreadwrite.h"
> > @@ -52,7 +52,7 @@ typedef struct RawVideoContext {
> >      int is_lt_16bpp; // 16bpp pixfmt and bits_per_coded_sample < 16
> >      int tff;
> >
> > -    BswapDSPContext bbdsp;
> > +    AVBSwapDSPContext bbdsp;
> >      void *bitstream_buf;
> >      unsigned int bitstream_buf_size;
> >  } RawVideoContext;
> > @@ -73,7 +73,7 @@ static av_cold int raw_init_decoder(AVCodecContext
> *avctx)
> >      RawVideoContext *context = avctx->priv_data;
> >      const AVPixFmtDescriptor *desc;
> >
> > -    ff_bswapdsp_init(&context->bbdsp);
> > +    av_bswapdsp_init(&context->bbdsp);
> >
> >      if (   avctx->codec_tag == MKTAG('r','a','w',' ')
> >          || avctx->codec_tag == MKTAG('N','O','1','6'))
> > @@ -324,7 +324,7 @@ static int raw_decode(AVCodecContext *avctx, AVFrame
> *frame,
> >              if (swap == 16)
> >                  context->bbdsp.bswap16_buf(context->bitstream_buf,
> (const uint16_t*)buf, buf_size / 2);
> >              else if (swap == 32)
> > -                context->bbdsp.bswap_buf(context->bitstream_buf, (const
> uint32_t*)buf, buf_size / 4);
> > +                context->bbdsp.bswap32_buf(context->bitstream_buf,
> (const uint32_t*)buf, buf_size / 4);
> >              else
> >                  return AVERROR_INVALIDDATA;
> >              buf = context->bitstream_buf;
> > diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile
> > index 965942f4df..212ab3dc13 100644
> > --- a/libavcodec/riscv/Makefile
> > +++ b/libavcodec/riscv/Makefile
> > @@ -5,9 +5,6 @@ RVV-OBJS-$(CONFIG_ALAC_DECODER) += riscv/alacdsp_rvv.o
> >  OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_init.o \
> >                             riscv/audiodsp_rvf.o
> >  RVV-OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_rvv.o
> > -OBJS-$(CONFIG_BSWAPDSP) += riscv/bswapdsp_init.o \
> > -                           riscv/bswapdsp_rvb.o
> > -RVV-OBJS-$(CONFIG_BSWAPDSP) += riscv/bswapdsp_rvv.o
> >  OBJS-$(CONFIG_FMTCONVERT) += riscv/fmtconvert_init.o
> >  RVV-OBJS-$(CONFIG_FMTCONVERT) += riscv/fmtconvert_rvv.o
> >  OBJS-$(CONFIG_IDCTDSP) += riscv/idctdsp_init.o
> > diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
> > index 1b2abd76b1..6385821ca1 100644
> > --- a/libavcodec/shorten.c
> > +++ b/libavcodec/shorten.c
> > @@ -25,9 +25,10 @@
> >   * @author Jeff Muizelaar
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> > +
> >  #include <limits.h>
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> > @@ -112,7 +113,7 @@ typedef struct ShortenContext {
> >      int got_header;
> >      int got_quit_command;
> >      int swap;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >  } ShortenContext;
> >
> >  static av_cold int shorten_decode_init(AVCodecContext *avctx)
> > @@ -120,7 +121,7 @@ static av_cold int
> shorten_decode_init(AVCodecContext *avctx)
> >      ShortenContext *s = avctx->priv_data;
> >      s->avctx          = avctx;
> >
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >
> >      return 0;
> >  }
> > diff --git a/libavcodec/truemotion2.c b/libavcodec/truemotion2.c
> > index b168b9cda1..7b6db4d9d5 100644
> > --- a/libavcodec/truemotion2.c
> > +++ b/libavcodec/truemotion2.c
> > @@ -26,8 +26,9 @@
> >
> >  #include <inttypes.h>
> >
> > +#include "libavutil/bswapdsp.h"
> > +
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> > @@ -65,7 +66,7 @@ typedef struct TM2Context {
> >
> >      GetBitContext gb;
> >      int error;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >
> >      uint8_t *buffer;
> >      int buffer_size;
> > @@ -907,8 +908,8 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *rframe,
> >      if ((ret = ff_reget_buffer(avctx, p, 0)) < 0)
> >          return ret;
> >
> > -    l->bdsp.bswap_buf((uint32_t *) l->buffer, (const uint32_t *) buf,
> > -                      buf_size >> 2);
> > +    l->bdsp.bswap32_buf((uint32_t *) l->buffer, (const uint32_t *) buf,
> > +                        buf_size >> 2);
> >
> >      if ((ret = tm2_read_header(l, l->buffer)) < 0) {
> >          return ret;
> > @@ -960,7 +961,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      if (!l->pic)
> >          return AVERROR(ENOMEM);
> >
> > -    ff_bswapdsp_init(&l->bdsp);
> > +    av_bswapdsp_init(&l->bdsp);
> >
> >      l->last  = av_malloc_array(w, 2 * sizeof(*l->last));
> >      if (!l->last)
> > diff --git a/libavcodec/truespeech.c b/libavcodec/truespeech.c
> > index 454121cc75..06a76fe0db 100644
> > --- a/libavcodec/truespeech.c
> > +++ b/libavcodec/truespeech.c
> > @@ -19,11 +19,11 @@
> >   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/channel_layout.h"
> >  #include "libavutil/mem_internal.h"
> >
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "decode.h"
> >  #include "get_bits.h"
> > @@ -38,7 +38,7 @@
> >   * TrueSpeech decoder context
> >   */
> >  typedef struct TSContext {
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      /* input data */
> >      DECLARE_ALIGNED(16, uint8_t, buffer)[32];
> >      int16_t vector[8];  ///< input vector: 5/5/4/4/4/3/3/3
> > @@ -73,7 +73,7 @@ static av_cold int
> truespeech_decode_init(AVCodecContext * avctx)
> >      avctx->ch_layout      = (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO;
> >      avctx->sample_fmt     = AV_SAMPLE_FMT_S16;
> >
> > -    ff_bswapdsp_init(&c->bdsp);
> > +    av_bswapdsp_init(&c->bdsp);
> >
> >      return 0;
> >  }
> > @@ -82,7 +82,7 @@ static void truespeech_read_frame(TSContext *dec,
> const uint8_t *input)
> >  {
> >      GetBitContext gb;
> >
> > -    dec->bdsp.bswap_buf((uint32_t *) dec->buffer, (const uint32_t *)
> input, 8);
> > +    dec->bdsp.bswap32_buf((uint32_t *) dec->buffer, (const uint32_t *)
> input, 8);
> >      init_get_bits(&gb, dec->buffer, 32 * 8);
> >
> >      dec->vector[7] = ts_codebook[7][get_bits(&gb, 3)];
> > diff --git a/libavcodec/utvideo.h b/libavcodec/utvideo.h
> > index 9da9329ff3..2ccd088c47 100644
> > --- a/libavcodec/utvideo.h
> > +++ b/libavcodec/utvideo.h
> > @@ -27,9 +27,9 @@
> >   * Common Ut Video header
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/common.h"
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "utvideodsp.h"
> >  #include "lossless_videodsp.h"
> >  #include "lossless_videoencdsp.h"
> > @@ -65,7 +65,7 @@ typedef struct UtvideoContext {
> >      const AVClass *class;
> >      AVCodecContext *avctx;
> >      UTVideoDSPContext utdsp;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >      LLVidDSPContext llviddsp;
> >      LLVidEncDSPContext llvidencdsp;
> >
> > diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c
> > index 83120d1b22..dcf09b56c6 100644
> > --- a/libavcodec/utvideodec.c
> > +++ b/libavcodec/utvideodec.c
> > @@ -30,10 +30,10 @@
> >  #define CACHED_BITSTREAM_READER !ARCH_X86_32
> >  #define UNCHECKED_BITSTREAM_READER 1
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/intreadwrite.h"
> >  #include "libavutil/pixdesc.h"
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "codec_internal.h"
> >  #include "get_bits.h"
> > @@ -150,9 +150,9 @@ static int decode_plane10(UtvideoContext *c, int
> plane_no,
> >          }
> >
> >          memset(c->slice_bits + slice_size, 0,
> AV_INPUT_BUFFER_PADDING_SIZE);
> > -        c->bdsp.bswap_buf((uint32_t *) c->slice_bits,
> > -                          (uint32_t *)(src + slice_data_start +
> c->slices * 4),
> > -                          (slice_data_end - slice_data_start + 3) >> 2);
> > +        c->bdsp.bswap32_buf((uint32_t *) c->slice_bits,
> > +                            (uint32_t *)(src + slice_data_start +
> c->slices * 4),
> > +                            (slice_data_end - slice_data_start + 3) >>
> 2);
> >          init_get_bits(&gb, c->slice_bits, slice_size * 8);
> >
> >          prev = 0x200;
> > @@ -311,9 +311,9 @@ static int decode_plane(UtvideoContext *c, int
> plane_no,
> >          }
> >
> >          memset(c->slice_bits + slice_size, 0,
> AV_INPUT_BUFFER_PADDING_SIZE);
> > -        c->bdsp.bswap_buf((uint32_t *) c->slice_bits,
> > -                          (uint32_t *)(src + slice_data_start +
> c->slices * 4),
> > -                          (slice_data_end - slice_data_start + 3) >> 2);
> > +        c->bdsp.bswap32_buf((uint32_t *) c->slice_bits,
> > +                            (uint32_t *)(src + slice_data_start +
> c->slices * 4),
> > +                            (slice_data_end - slice_data_start + 3) >>
> 2);
> >          init_get_bits(&gb, c->slice_bits, slice_size * 8);
> >
> >          prev = 0x80;
> > @@ -887,7 +887,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      c->avctx = avctx;
> >
> >      ff_utvideodsp_init(&c->utdsp);
> > -    ff_bswapdsp_init(&c->bdsp);
> > +    av_bswapdsp_init(&c->bdsp);
> >      ff_llviddsp_init(&c->llviddsp);
> >
> >      c->slice_bits_size = 0;
> > diff --git a/libavcodec/utvideoenc.c b/libavcodec/utvideoenc.c
> > index d4388da8ba..de9ea8c135 100644
> > --- a/libavcodec/utvideoenc.c
> > +++ b/libavcodec/utvideoenc.c
> > @@ -24,6 +24,7 @@
> >   * Ut Video encoder
> >   */
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/imgutils.h"
> >  #include "libavutil/intreadwrite.h"
> >  #include "libavutil/opt.h"
> > @@ -31,7 +32,6 @@
> >  #include "avcodec.h"
> >  #include "codec_internal.h"
> >  #include "encode.h"
> > -#include "bswapdsp.h"
> >  #include "bytestream.h"
> >  #include "put_bits.h"
> >  #include "mathops.h"
> > @@ -132,7 +132,7 @@ static av_cold int
> utvideo_encode_init(AVCodecContext *avctx)
> >          return AVERROR_INVALIDDATA;
> >      }
> >
> > -    ff_bswapdsp_init(&c->bdsp);
> > +    av_bswapdsp_init(&c->bdsp);
> >      ff_llvidencdsp_init(&c->llvidencdsp);
> >
> >      if (c->frame_pred == PRED_GRADIENT) {
> > @@ -490,9 +490,9 @@ static int encode_plane(AVCodecContext *avctx, const
> uint8_t *src,
> >          slice_len = offset - slice_len;
> >
> >          /* Byteswap the written huffman codes */
> > -        c->bdsp.bswap_buf((uint32_t *) c->slice_bits,
> > -                          (uint32_t *) c->slice_bits,
> > -                          slice_len >> 2);
> > +        c->bdsp.bswap32_buf((uint32_t *) c->slice_bits,
> > +                            (uint32_t *) c->slice_bits,
> > +                            slice_len >> 2);
> >
> >          /* Write the offset to the stream */
> >          bytestream2_put_le32(pb, offset);
> > diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
> > index 6f62878081..ad0f54be3c 100644
> > --- a/libavcodec/x86/Makefile
> > +++ b/libavcodec/x86/Makefile
> > @@ -4,7 +4,6 @@ OBJS                                   +=
> x86/constants.o               \
> >  OBJS-$(CONFIG_AC3DSP)                  += x86/ac3dsp_init.o
> >  OBJS-$(CONFIG_AUDIODSP)                += x86/audiodsp_init.o
> >  OBJS-$(CONFIG_BLOCKDSP)                += x86/blockdsp_init.o
> > -OBJS-$(CONFIG_BSWAPDSP)                += x86/bswapdsp_init.o
> >  OBJS-$(CONFIG_DCT)                     += x86/dct_init.o
> >  OBJS-$(CONFIG_DIRAC_DECODER)           += x86/diracdsp_init.o
>  \
> >                                            x86/dirac_dwt_init.o
> > @@ -98,7 +97,6 @@ X86ASM-OBJS-$(CONFIG_AC3DSP)           +=
> x86/ac3dsp.o                  \
> >                                            x86/ac3dsp_downmix.o
> >  X86ASM-OBJS-$(CONFIG_AUDIODSP)         += x86/audiodsp.o
> >  X86ASM-OBJS-$(CONFIG_BLOCKDSP)         += x86/blockdsp.o
> > -X86ASM-OBJS-$(CONFIG_BSWAPDSP)         += x86/bswapdsp.o
> >  X86ASM-OBJS-$(CONFIG_DCT)              += x86/dct32.o
> >  X86ASM-OBJS-$(CONFIG_FFT)              += x86/fft.o
> >  X86ASM-OBJS-$(CONFIG_FMTCONVERT)       += x86/fmtconvert.o
> > diff --git a/libavcodec/ylc.c b/libavcodec/ylc.c
> > index 29c10f05da..7a90e2e5f1 100644
> > --- a/libavcodec/ylc.c
> > +++ b/libavcodec/ylc.c
> > @@ -22,11 +22,11 @@
> >
> >  #define YLC_VLC_BITS 10
> >
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/intreadwrite.h"
> >  #include "libavutil/mem.h"
> >  #include "libavutil/pixfmt.h"
> >  #include "avcodec.h"
> > -#include "bswapdsp.h"
> >  #include "codec_internal.h"
> >  #include "get_bits.h"
> >  #include "thread.h"
> > @@ -37,7 +37,7 @@ typedef struct YLCContext {
> >      uint32_t table[256];
> >      uint8_t *buffer;
> >      int buffer_size;
> > -    BswapDSPContext bdsp;
> > +    AVBSwapDSPContext bdsp;
> >  } YLCContext;
> >
> >  static av_cold int decode_init(AVCodecContext *avctx)
> > @@ -45,7 +45,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
> >      YLCContext *s = avctx->priv_data;
> >
> >      avctx->pix_fmt = AV_PIX_FMT_YUYV422;
> > -    ff_bswapdsp_init(&s->bdsp);
> > +    av_bswapdsp_init(&s->bdsp);
> >
> >      return 0;
> >  }
> > @@ -311,9 +311,9 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *p,
> >
> >      memcpy(s->buffer, avpkt->data + toffset, boffset - toffset);
> >      memset(s->buffer + boffset - toffset, 0,
> AV_INPUT_BUFFER_PADDING_SIZE);
> > -    s->bdsp.bswap_buf((uint32_t *) s->buffer,
> > -                      (uint32_t *) s->buffer,
> > -                      (boffset - toffset + 3) >> 2);
> > +    s->bdsp.bswap32_buf((uint32_t *) s->buffer,
> > +                        (uint32_t *) s->buffer,
> > +                        (boffset - toffset + 3) >> 2);
> >      if ((ret = init_get_bits8(&gb, s->buffer, boffset - toffset)) < 0)
> >          return ret;
> >
> > @@ -332,9 +332,9 @@ static int decode_frame(AVCodecContext *avctx,
> AVFrame *p,
> >
> >      memcpy(s->buffer, avpkt->data + boffset, avpkt->size - boffset);
> >      memset(s->buffer + avpkt->size - boffset, 0,
> AV_INPUT_BUFFER_PADDING_SIZE);
> > -    s->bdsp.bswap_buf((uint32_t *) s->buffer,
> > -                      (uint32_t *) s->buffer,
> > -                      (avpkt->size - boffset) >> 2);
> > +    s->bdsp.bswap32_buf((uint32_t *) s->buffer,
> > +                        (uint32_t *) s->buffer,
> > +                        (avpkt->size - boffset) >> 2);
> >      if ((ret = init_get_bits8(&gb, s->buffer, avpkt->size - boffset)) <
> 0)
> >          return ret;
> >
> > diff --git a/libavutil/Makefile b/libavutil/Makefile
> > index 3d9c07aea8..bff5dbc7d9 100644
> > --- a/libavutil/Makefile
> > +++ b/libavutil/Makefile
> > @@ -13,6 +13,7 @@ HEADERS = adler32.h
>                  \
> >            blowfish.h
> \
> >            bprint.h
> \
> >            bswap.h
>  \
> > +          bswapdsp.h
> \
> >            buffer.h
> \
> >            cast5.h
>  \
> >            camellia.h
> \
> > @@ -108,6 +109,7 @@ OBJS = adler32.o
>                     \
> >         base64.o
>  \
> >         blowfish.o
>  \
> >         bprint.o
>  \
> > +       bswapdsp.o
>  \
> >         buffer.o
>  \
> >         cast5.o
> \
> >         camellia.o
>  \
> > diff --git a/libavcodec/bswapdsp.c b/libavutil/bswapdsp.c
> > similarity index 80%
> > rename from libavcodec/bswapdsp.c
> > rename to libavutil/bswapdsp.c
> > index f0ea2b55c5..e85cdfe5d7 100644
> > --- a/libavcodec/bswapdsp.c
> > +++ b/libavutil/bswapdsp.c
> > @@ -18,15 +18,18 @@
> >
> >  #include <stdint.h>
> >
> > -#include "libavutil/attributes.h"
> > -#include "libavutil/bswap.h"
> > +#include "attributes.h"
> > +#include "bswap.h"
> >  #include "bswapdsp.h"
> >
> > -static void bswap_buf(uint32_t *dst, const uint32_t *src, int w)
> > +void ff_bswapdsp_init_riscv(AVBSwapDSPContext *c);
> > +void ff_bswapdsp_init_x86(AVBSwapDSPContext *c);
> > +
> > +static void bswap32_buf(uint32_t *dst, const uint32_t *src, int len)
> >  {
> >      int i;
> >
> > -    for (i = 0; i + 8 <= w; i += 8) {
> > +    for (i = 0; i + 8 <= len; i += 8) {
> >          dst[i + 0] = av_bswap32(src[i + 0]);
> >          dst[i + 1] = av_bswap32(src[i + 1]);
> >          dst[i + 2] = av_bswap32(src[i + 2]);
> > @@ -36,7 +39,7 @@ static void bswap_buf(uint32_t *dst, const uint32_t
> *src, int w)
> >          dst[i + 6] = av_bswap32(src[i + 6]);
> >          dst[i + 7] = av_bswap32(src[i + 7]);
> >      }
> > -    for (; i < w; i++)
> > +    for (; i < len; i++)
> >          dst[i + 0] = av_bswap32(src[i + 0]);
> >  }
> >
> > @@ -46,9 +49,9 @@ static void bswap16_buf(uint16_t *dst, const uint16_t
> *src, int len)
> >          *dst++ = av_bswap16(*src++);
> >  }
> >
> > -av_cold void ff_bswapdsp_init(BswapDSPContext *c)
> > +av_cold void av_bswapdsp_init(AVBSwapDSPContext *c)
> >  {
> > -    c->bswap_buf   = bswap_buf;
> > +    c->bswap32_buf = bswap32_buf;
> >      c->bswap16_buf = bswap16_buf;
> >
> >  #if ARCH_RISCV
> > diff --git a/libavcodec/bswapdsp.h b/libavutil/bswapdsp.h
> > similarity index 71%
> > rename from libavcodec/bswapdsp.h
> > rename to libavutil/bswapdsp.h
> > index 6f4db66115..b540560d6a 100644
> > --- a/libavcodec/bswapdsp.h
> > +++ b/libavutil/bswapdsp.h
> > @@ -16,18 +16,16 @@
> >   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> >   */
> >
> > -#ifndef AVCODEC_BSWAPDSP_H
> > -#define AVCODEC_BSWAPDSP_H
> > +#ifndef AVUTIL_BSWAPDSP_H
> > +#define AVUTIL_BSWAPDSP_H
> >
> >  #include <stdint.h>
> >
> > -typedef struct BswapDSPContext {
> > -    void (*bswap_buf)(uint32_t *dst, const uint32_t *src, int w);
> > +typedef struct AVBSwapDSPContext {
> > +    void (*bswap32_buf)(uint32_t *dst, const uint32_t *src, int len);
> >      void (*bswap16_buf)(uint16_t *dst, const uint16_t *src, int len);
> > -} BswapDSPContext;
> > +} AVBSwapDSPContext;
> >
> > -void ff_bswapdsp_init(BswapDSPContext *c);
> > -void ff_bswapdsp_init_riscv(BswapDSPContext *c);
> > -void ff_bswapdsp_init_x86(BswapDSPContext *c);
> > +void av_bswapdsp_init(AVBSwapDSPContext *c);
> >
> > -#endif /* AVCODEC_BSWAPDSP_H */
> > +#endif /* AVUTIL_BSWAPDSP_H */
> > diff --git a/libavutil/riscv/Makefile b/libavutil/riscv/Makefile
> > index 1597154ba5..525538f6b6 100644
> > --- a/libavutil/riscv/Makefile
> > +++ b/libavutil/riscv/Makefile
> > @@ -1,5 +1,8 @@
> > -OBJS +=     riscv/float_dsp_init.o \
> > +OBJS +=     riscv/bswapdsp_init.o \
> > +            riscv/bswapdsp_rvb.o \
> > +            riscv/float_dsp_init.o \
> >              riscv/fixed_dsp_init.o \
> >              riscv/cpu.o
> > -RVV-OBJS += riscv/float_dsp_rvv.o \
> > +RVV-OBJS += riscv/bswapdsp_rvv.o  \
> > +            riscv/float_dsp_rvv.o \
> >              riscv/fixed_dsp_rvv.o
> > diff --git a/libavcodec/riscv/bswapdsp_init.c
> b/libavutil/riscv/bswapdsp_init.c
> > similarity index 85%
> > rename from libavcodec/riscv/bswapdsp_init.c
> > rename to libavutil/riscv/bswapdsp_init.c
> > index abe84ec1f7..362d574a27 100644
> > --- a/libavcodec/riscv/bswapdsp_init.c
> > +++ b/libavutil/riscv/bswapdsp_init.c
> > @@ -22,24 +22,25 @@
> >
> >  #include "config.h"
> >  #include "libavutil/attributes.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/cpu.h"
> > -#include "libavcodec/bswapdsp.h"
> >
> >  void ff_bswap32_buf_rvb(uint32_t *dst, const uint32_t *src, int len);
> >  void ff_bswap32_buf_rvv(uint32_t *dst, const uint32_t *src, int len);
> >  void ff_bswap16_buf_rvv(uint16_t *dst, const uint16_t *src, int len);
> > +void ff_bswapdsp_init_riscv(AVBSwapDSPContext *c);
> >
> > -av_cold void ff_bswapdsp_init_riscv(BswapDSPContext *c)
> > +av_cold void ff_bswapdsp_init_riscv(AVBSwapDSPContext *c)
> >  {
> >      int cpu_flags = av_get_cpu_flags();
> >
> >  #if (__riscv_xlen >= 64)
> >      if (cpu_flags & AV_CPU_FLAG_RVB_BASIC)
> > -        c->bswap_buf = ff_bswap32_buf_rvb;
> > +        c->bswap32_buf = ff_bswap32_buf_rvb;
> >  #endif
> >  #if HAVE_RVV
> >      if (cpu_flags & AV_CPU_FLAG_RVV_I32) {
> > -        c->bswap_buf = ff_bswap32_buf_rvv;
> > +        c->bswap32_buf = ff_bswap32_buf_rvv;
> >          c->bswap16_buf = ff_bswap16_buf_rvv;
> >      }
> >  #endif
> > diff --git a/libavcodec/riscv/bswapdsp_rvb.S
> b/libavutil/riscv/bswapdsp_rvb.S
> > similarity index 100%
> > rename from libavcodec/riscv/bswapdsp_rvb.S
> > rename to libavutil/riscv/bswapdsp_rvb.S
> > diff --git a/libavcodec/riscv/bswapdsp_rvv.S
> b/libavutil/riscv/bswapdsp_rvv.S
> > similarity index 100%
> > rename from libavcodec/riscv/bswapdsp_rvv.S
> > rename to libavutil/riscv/bswapdsp_rvv.S
> > diff --git a/libavutil/version.h b/libavutil/version.h
> > index 3b616ea489..60f96af5df 100644
> > --- a/libavutil/version.h
> > +++ b/libavutil/version.h
> > @@ -79,7 +79,7 @@
> >   */
> >
> >  #define LIBAVUTIL_VERSION_MAJOR  57
> > -#define LIBAVUTIL_VERSION_MINOR  43
> > +#define LIBAVUTIL_VERSION_MINOR  44
> >  #define LIBAVUTIL_VERSION_MICRO 100
> >
> >  #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR,
> \
> > diff --git a/libavutil/x86/Makefile b/libavutil/x86/Makefile
> > index d66839e35d..40bac784d1 100644
> > --- a/libavutil/x86/Makefile
> > +++ b/libavutil/x86/Makefile
> > @@ -4,14 +4,16 @@ OBJS += x86/cpu.o
>                  \
> >          x86/imgutils_init.o
>  \
> >          x86/lls_init.o
> \
> >
> > -OBJS-$(HAVE_X86ASM) += x86/tx_float_init.o
> \
> > +OBJS-$(HAVE_X86ASM) += x86/bswapdsp_init.o
> \
> > +                       x86/tx_float_init.o
> >
> >  OBJS-$(CONFIG_PIXELUTILS) += x86/pixelutils_init.o
> \
> >
> >  EMMS_OBJS_$(HAVE_MMX_INLINE)_$(HAVE_MMX_EXTERNAL)_$(HAVE_MM_EMPTY) =
> x86/emms.o
> >
> > -X86ASM-OBJS += x86/cpuid.o
> \
> > -             $(EMMS_OBJS__yes_)                                      \
> > +X86ASM-OBJS += x86/bswapdsp.o
>  \
> > +             x86/cpuid.o
> \
> > +             $(EMMS_OBJS__yes_)
>  \
> >               x86/fixed_dsp.o
> \
> >               x86/float_dsp.o
> \
> >               x86/imgutils.o
>  \
> > diff --git a/libavcodec/x86/bswapdsp.asm b/libavutil/x86/bswapdsp.asm
> > similarity index 97%
> > rename from libavcodec/x86/bswapdsp.asm
> > rename to libavutil/x86/bswapdsp.asm
> > index 31c6c48a21..c3bb90c2be 100644
> > --- a/libavcodec/x86/bswapdsp.asm
> > +++ b/libavutil/x86/bswapdsp.asm
> > @@ -26,8 +26,6 @@
> >  SECTION_RODATA
> >  pb_bswap32: db 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12
> >
> > -cextern pb_80
> > -
> >  SECTION .text
> >
> >  ; %1 = aligned/unaligned
> > @@ -99,7 +97,7 @@ SECTION .text
> >      add      r0, 16
> >  %endmacro
> >
> > -; void ff_bswap_buf(uint32_t *dst, const uint32_t *src, int w);
> > +; void ff_bswap32_buf(uint32_t *dst, const uint32_t *src, int len);
> >  %macro BSWAP32_BUF 0
> >  %if cpuflag(ssse3)||cpuflag(avx2)
> >  cglobal bswap32_buf, 3,4,3
> > diff --git a/libavcodec/x86/bswapdsp_init.c
> b/libavutil/x86/bswapdsp_init.c
> > similarity index 80%
> > rename from libavcodec/x86/bswapdsp_init.c
> > rename to libavutil/x86/bswapdsp_init.c
> > index 877bab1a2c..3694e9208c 100644
> > --- a/libavcodec/x86/bswapdsp_init.c
> > +++ b/libavutil/x86/bswapdsp_init.c
> > @@ -19,22 +19,23 @@
> >  #include <stdint.h>
> >
> >  #include "libavutil/attributes.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/cpu.h"
> >  #include "libavutil/x86/cpu.h"
> > -#include "libavcodec/bswapdsp.h"
> >
> > -void ff_bswap32_buf_sse2(uint32_t *dst, const uint32_t *src, int w);
> > -void ff_bswap32_buf_ssse3(uint32_t *dst, const uint32_t *src, int w);
> > -void ff_bswap32_buf_avx2(uint32_t *dst, const uint32_t *src, int w);
> > +void ff_bswap32_buf_sse2(uint32_t *dst, const uint32_t *src, int len);
> > +void ff_bswap32_buf_ssse3(uint32_t *dst, const uint32_t *src, int len);
> > +void ff_bswap32_buf_avx2(uint32_t *dst, const uint32_t *src, int len);
> > +void ff_bswapdsp_init_x86(AVBSwapDSPContext *c);
> >
> > -av_cold void ff_bswapdsp_init_x86(BswapDSPContext *c)
> > +av_cold void ff_bswapdsp_init_x86(AVBSwapDSPContext *c)
> >  {
> >      int cpu_flags = av_get_cpu_flags();
> >
> >      if (EXTERNAL_SSE2(cpu_flags))
> > -        c->bswap_buf = ff_bswap32_buf_sse2;
> > +        c->bswap32_buf = ff_bswap32_buf_sse2;
> >      if (EXTERNAL_SSSE3(cpu_flags))
> > -        c->bswap_buf = ff_bswap32_buf_ssse3;
> > +        c->bswap32_buf = ff_bswap32_buf_ssse3;
> >      if (EXTERNAL_AVX2_FAST(cpu_flags))
> > -        c->bswap_buf = ff_bswap32_buf_avx2;
> > +        c->bswap32_buf = ff_bswap32_buf_avx2;
> >  }
> > diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile
> > index a6f06c7007..1bfaea0e9b 100644
> > --- a/tests/checkasm/Makefile
> > +++ b/tests/checkasm/Makefile
> > @@ -2,7 +2,6 @@
> >  # subsystems
> >  AVCODECOBJS-$(CONFIG_AUDIODSP)          += audiodsp.o
> >  AVCODECOBJS-$(CONFIG_BLOCKDSP)          += blockdsp.o
> > -AVCODECOBJS-$(CONFIG_BSWAPDSP)          += bswapdsp.o
> >  AVCODECOBJS-$(CONFIG_FMTCONVERT)        += fmtconvert.o
> >  AVCODECOBJS-$(CONFIG_G722DSP)           += g722dsp.o
> >  AVCODECOBJS-$(CONFIG_H264DSP)           += h264dsp.o
> > @@ -59,6 +58,7 @@ CHECKASMOBJS-$(CONFIG_SWSCALE)  += $(SWSCALEOBJS)
> >  AVUTILOBJS                              += av_tx.o
> >  AVUTILOBJS                              += fixed_dsp.o
> >  AVUTILOBJS                              += float_dsp.o
> > +AVUTILOBJS                              += bswapdsp.o
> >
> >  CHECKASMOBJS-$(CONFIG_AVUTIL)  += $(AVUTILOBJS)
> >
> > diff --git a/tests/checkasm/bswapdsp.c b/tests/checkasm/bswapdsp.c
> > index d789e90de3..f8dc50be33 100644
> > --- a/tests/checkasm/bswapdsp.c
> > +++ b/tests/checkasm/bswapdsp.c
> > @@ -20,7 +20,7 @@
> >
> >  #include <string.h>
> >  #include "checkasm.h"
> > -#include "libavcodec/bswapdsp.h"
> > +#include "libavutil/bswapdsp.h"
> >  #include "libavutil/common.h"
> >  #include "libavutil/internal.h"
> >  #include "libavutil/intreadwrite.h"
> > @@ -63,11 +63,11 @@ void checkasm_check_bswapdsp(void)
> >      LOCAL_ALIGNED_16(uint8_t, src1, [BUF_SIZE]);
> >      LOCAL_ALIGNED_16(uint8_t, dst0, [BUF_SIZE]);
> >      LOCAL_ALIGNED_16(uint8_t, dst1, [BUF_SIZE]);
> > -    BswapDSPContext h;
> > +    AVBSwapDSPContext h;
> >
> > -    ff_bswapdsp_init(&h);
> > +    av_bswapdsp_init(&h);
> >
> > -    if (check_func(h.bswap_buf, "bswap_buf"))
> > +    if (check_func(h.bswap32_buf, "bswap32_buf"))
> >          check_bswap(uint32_t);
> >
> >      if (check_func(h.bswap16_buf, "bswap16_buf"))
> > diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
> > index e96d84a7da..32657b6c2d 100644
> > --- a/tests/checkasm/checkasm.c
> > +++ b/tests/checkasm/checkasm.c
> > @@ -87,9 +87,6 @@ static const struct {
> >      #if CONFIG_BLOCKDSP
> >          { "blockdsp", checkasm_check_blockdsp },
> >      #endif
> > -    #if CONFIG_BSWAPDSP
> > -        { "bswapdsp", checkasm_check_bswapdsp },
> > -    #endif
> >      #if CONFIG_DCA_DECODER
> >          { "synth_filter", checkasm_check_synth_filter },
> >      #endif
> > @@ -207,6 +204,7 @@ static const struct {
> >      { "sw_scale", checkasm_check_sw_scale },
> >  #endif
> >  #if CONFIG_AVUTIL
> > +        { "bswapdsp", checkasm_check_bswapdsp },
> >          { "fixed_dsp", checkasm_check_fixed_dsp },
> >          { "float_dsp", checkasm_check_float_dsp },
> >          { "av_tx",     checkasm_check_av_tx },
>
> 1. Renaming bswap_buf->bswap32_buf should be done in a separate
> (preceding) commit. The same goes for removing the unnecessary cextern
> declaration.
>

good idea, will do that.


> 2. If this is supposed to be public, it needs better documentation (or
> actually, documentation at all): E.g. either src and dst must coincide
> or they must point to disjoint buffers of the appropriate length.
> 3. a) Making this public will impair our ability to change anything
> about it (i.e. we could not add a 64bit variant or use size_t for the
> amount of elements to process or switch the len parameter to bytes or
> whatever).
> b) To mitigate a), we could make sizeof(AVBSwapDSPContext) private and
> change the init function to allocate it. Yet this would add error checks
> when initializing, would necessitate freeing said context lateron and
> would add an unnecessary indirection at runtime. This is only a
> mitigation, as we would be force to keep the int functions around in
> case we wanted to switch to size_t.
> (c) An alternative way to mitigate this is to use a function like
> void (*av_bswapdsp_init(enum AVBSwapType type))(void *dst, const void
> *src, int len). This works because most users (except rawvideo and
> swscale, it seems) actually want only one type of swap function. This
> would avoid the allocs and frees.)
> 4. Because of 3. I am in favour of duplicating this into swscale instead
> of making it public.
>

I was going to move it to avutil but keep it private (not install the
header) and add the avpriv prefix, is that okay?


> 5. Btw: We use this API on data coming from packets and the data of
> packets has no alignment requirements. It means that there is UB in case
> the packets' data is not suitably aligned (the UB already happens in the
> uint8_t*->uint(32|16)_t* conversion; in case the C version is used, it
> also happens in bswap_buf() or bswap16_buf()). The former can be fixed
> by making src const void*, the latter by reading via AV_RN(32|16) in the
> C versions.
> This would of course also necessitate documentation if this were done
> and still made public.
>

yikes, guess it's always been like that. I'll try fixing that too.  Looks
like the x86 asm is handling the unaligned case.
I have been testing riscv via qemu, but I am not familiar with riscv asm,
so I'm not sure if it is handling alignment correctly.


>
> - Andreas
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>


More information about the ffmpeg-devel mailing list