On 28/01/13 16:24, Ronald S. Bultje wrote:
> From: "Ronald S. Bultje" <[email protected]>
>
> This allows objects to use just halfpel MC without depending on all
> of dsputil. E.g. indeo3, interplayvideo and svq1dec become dsputil-
> independent. The fine-grained HAVE_HPEL_* flags allow only compiling
> a subset of the HPEL functions if a codec only uses a subset of them.
> Currently, only the C code uses this, I'll add this to the assembly
> at a later point.
>
> In addition, I rewrote the C code, it's a little faster on 32bit x86
> and a lot faster on x86-64. The HAVE_HPEL_* flags could be moved to
> configure so they can accessed from assembly as well to conditionally
> compile optimizations, thus allowing further tuning of binary size.
This huge monster had been compiled-tested on alpha, bfin, ppc, sh4 and
sparc many times and I'm about to give it yet another run to make sure
there aren't latest moment glitches.
Help reviewing it chunk by chunk welcome =)
> ---
> configure | 14 +-
> libavcodec/Makefile | 1 +
> libavcodec/alpha/Makefile | 3 +
> libavcodec/alpha/dsputil_alpha.c | 187 +-
> libavcodec/alpha/dsputil_alpha.h | 2 -
> libavcodec/alpha/dsputil_alpha_asm.S | 92 -
> .../alpha/{dsputil_alpha.c => hpeldsp_alpha.c} | 142 +-
> libavcodec/alpha/hpeldsp_asm.S | 135 +
> libavcodec/arm/Makefile | 8 +
> libavcodec/arm/dsputil_arm.S | 584 ----
> libavcodec/arm/dsputil_armv6.S | 238 --
> libavcodec/arm/dsputil_init_arm.c | 39 -
> libavcodec/arm/dsputil_init_armv6.c | 41 -
> libavcodec/arm/dsputil_init_neon.c | 59 -
> libavcodec/arm/dsputil_neon.S | 388 ---
> libavcodec/arm/{dsputil_arm.S => hpeldsp_arm.S} | 98 -
> libavcodec/arm/hpeldsp_arm.h | 29 +
> libavcodec/arm/hpeldsp_armv6.S | 259 ++
> libavcodec/arm/hpeldsp_init_arm.c | 68 +
> libavcodec/arm/hpeldsp_init_armv6.c | 66 +
> libavcodec/arm/hpeldsp_init_neon.c | 87 +
> libavcodec/arm/{dsputil_neon.S => hpeldsp_neon.S} | 187 --
> libavcodec/bfin/Makefile | 8 +-
> libavcodec/bfin/dsputil_bfin.c | 98 +-
> .../bfin/{pixels_bfin.S => hpel_pixels_bfin.S} | 361 --
> libavcodec/bfin/hpeldsp_bfin.c | 134 +
> libavcodec/bfin/pixels_bfin.S | 357 --
> libavcodec/bink.c | 17 +-
> libavcodec/dsputil.c | 20 +-
> libavcodec/dsputil.h | 48 -
> libavcodec/dsputil_template.c | 201 --
> libavcodec/hpelavg_template.c | 55 +
> libavcodec/hpeldsp.c | 238 ++
> libavcodec/hpeldsp.h | 132 +
> libavcodec/hpeldsp_template.c | 174 +
> libavcodec/indeo3.c | 9 +-
> libavcodec/interplayvideo.c | 10 +-
> libavcodec/mimic.c | 7 +-
> libavcodec/motion_est.c | 28 +-
> libavcodec/mpegvideo.c | 15 +-
> libavcodec/mpegvideo.h | 10 +-
> libavcodec/mpegvideo_enc.c | 14 +-
> libavcodec/mpegvideo_motion.c | 26 +-
> libavcodec/ppc/Makefile | 1 +
> libavcodec/ppc/dsputil_altivec.c | 421 ---
> libavcodec/ppc/hpeldsp_altivec.c | 471 +++
> libavcodec/sh4/Makefile | 2 +
> libavcodec/sh4/dsputil_align.c | 1221 +++++--
> libavcodec/sh4/dsputil_align.h | 112 +
> libavcodec/sh4/hpeldsp_align.c | 227 ++
> libavcodec/sh4/qpel.c | 951 ------
> libavcodec/sparc/Makefile | 2 +
> libavcodec/sparc/dsputil_vis.c | 3504
> +-------------------
> libavcodec/sparc/{dsputil_vis.c => hpeldsp_vis.c} | 73 +-
> libavcodec/svq1dec.c | 12 +-
> libavcodec/svq1enc.c | 15 +-
> libavcodec/svq3.c | 14 +-
> libavcodec/vc1dec.c | 16 +-
> libavcodec/vp3.c | 14 +-
> libavcodec/vp56.c | 15 +-
> libavcodec/vp56.h | 2 +
> libavcodec/wmv2.c | 2 +-
> libavcodec/x86/Makefile | 2 +
> libavcodec/x86/dsputil.asm | 43 -
> libavcodec/x86/dsputil_avg_template.c | 44 -
> libavcodec/x86/dsputil_mmx.c | 197 +-
> libavcodec/x86/dsputil_rnd_template.c | 385 +--
> ...{dsputil_avg_template.c => hpel_avg_template.c} | 14 +-
> ...{dsputil_rnd_template.c => hpel_rnd_template.c} | 195 +-
> libavcodec/x86/hpeldsp.asm | 74 +-
> libavcodec/x86/hpeldsp_init.c | 422 +++
> 71 files changed, 3810 insertions(+), 9330 deletions(-)
> copy libavcodec/alpha/{dsputil_alpha.c => hpeldsp_alpha.c} (69%)
> create mode 100644 libavcodec/alpha/hpeldsp_asm.S
> copy libavcodec/arm/{dsputil_arm.S => hpeldsp_arm.S} (85%)
> create mode 100644 libavcodec/arm/hpeldsp_arm.h
> create mode 100644 libavcodec/arm/hpeldsp_armv6.S
> create mode 100644 libavcodec/arm/hpeldsp_init_arm.c
> create mode 100644 libavcodec/arm/hpeldsp_init_armv6.c
> create mode 100644 libavcodec/arm/hpeldsp_init_neon.c
> copy libavcodec/arm/{dsputil_neon.S => hpeldsp_neon.S} (67%)
> copy libavcodec/bfin/{pixels_bfin.S => hpel_pixels_bfin.S} (54%)
> create mode 100644 libavcodec/bfin/hpeldsp_bfin.c
> create mode 100644 libavcodec/hpelavg_template.c
> create mode 100644 libavcodec/hpeldsp.c
> create mode 100644 libavcodec/hpeldsp.h
> create mode 100644 libavcodec/hpeldsp_template.c
> create mode 100644 libavcodec/ppc/hpeldsp_altivec.c
> create mode 100644 libavcodec/sh4/dsputil_align.h
> create mode 100644 libavcodec/sh4/hpeldsp_align.c
> delete mode 100644 libavcodec/sh4/qpel.c
> copy libavcodec/sparc/{dsputil_vis.c => hpeldsp_vis.c} (97%)
> copy libavcodec/x86/{dsputil_avg_template.c => hpel_avg_template.c} (85%)
> copy libavcodec/x86/{dsputil_rnd_template.c => hpel_rnd_template.c} (70%)
> create mode 100644 libavcodec/x86/hpeldsp_init.c
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel