On Fri, Jul 11, 2014 at 09:16:04PM +0100, Ben Avison wrote:
> Initialise VC1DSPContext for parser as well as for decoder.
> Note, the VC-1 code doesn't actually use the function pointer yet.
> ---
> libavcodec/Makefile | 7 ++++---
> libavcodec/arm/Makefile | 2 ++
> libavcodec/arm/vc1dsp_init_arm.c | 8 ++++++++
> libavcodec/vc1.c | 2 ++
> libavcodec/vc1dec.c | 1 -
> libavcodec/vc1dsp.c | 3 +++
> libavcodec/vc1dsp.h | 8 ++++++++
> 7 files changed, 27 insertions(+), 4 deletions(-)
Do you plan to share this with more than H.264 and VC-1?
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -392,7 +392,8 @@ OBJS-$(CONFIG_V210X_DECODER) += v210x.o
> OBJS-$(CONFIG_VB_DECODER) += vb.o
> OBJS-$(CONFIG_VBLE_DECODER) += vble.o
> OBJS-$(CONFIG_VC1_DECODER) += vc1dec.o vc1.o vc1data.o vc1dsp.o \
> - msmpeg4dec.o msmpeg4.o
> msmpeg4data.o
> + msmpeg4dec.o msmpeg4.o
> msmpeg4data.o \
> + startcode.o
> OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o
> OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdaudio.o
> OBJS-$(CONFIG_VMDVIDEO_DECODER) += vmdvideo.o
> @@ -672,9 +673,9 @@ OBJS-$(CONFIG_PNM_PARSER) += pnm_parser.o
> pnm.o
> OBJS-$(CONFIG_RV30_PARSER) += rv34_parser.o
> OBJS-$(CONFIG_RV40_PARSER) += rv34_parser.o
> OBJS-$(CONFIG_TAK_PARSER) += tak_parser.o tak.o
> -OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o vc1.o vc1data.o \
> +OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o vc1.o vc1data.o
> vc1dsp.o \
> msmpeg4.o msmpeg4data.o
> mpeg4video.o \
> - h263.o
> + h263.o startcode.o
> OBJS-$(CONFIG_VORBIS_PARSER) += vorbis_parser.o xiph.o
> OBJS-$(CONFIG_VP3_PARSER) += vp3_parser.o
> OBJS-$(CONFIG_VP8_PARSER) += vp8_parser.o
> diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
> index 63727b9..4ca9343 100644
> --- a/libavcodec/arm/Makefile
> +++ b/libavcodec/arm/Makefile
> @@ -66,6 +66,8 @@ ARMV6-OBJS-$(CONFIG_MPEGVIDEOENC) +=
> arm/mpegvideoencdsp_armv6.o
> ARMV6-OBJS-$(CONFIG_PIXBLOCKDSP) += arm/pixblockdsp_armv6.o
>
> ARMV6-OBJS-$(CONFIG_MLP_DECODER) += arm/mlpdsp_armv6.o
> +ARMV6-OBJS-$(CONFIG_VC1_DECODER) += arm/startcode_armv6.o
> +ARMV6-OBJS-$(CONFIG_VC1_PARSER) += arm/startcode_armv6.o
> ARMV6-OBJS-$(CONFIG_VP7_DECODER) += arm/vp8_armv6.o \
> arm/vp8dsp_init_armv6.o \
> arm/vp8dsp_armv6.o
All this duplication could be avoided by adding a CONFIG_EXTRA entry in
configure and having the relevant bits depend on it.
> --- a/libavcodec/arm/vc1dsp_init_arm.c
> +++ b/libavcodec/arm/vc1dsp_init_arm.c
> @@ -23,10 +23,18 @@
>
> +int ff_startcode_find_candidate_armv6(const uint8_t *buf, int size);
This declaration is duplicated so it should be in a header file.
> av_cold void ff_vc1dsp_init_arm(VC1DSPContext *dsp)
> {
> int cpu_flags = av_get_cpu_flags();
>
> + if (have_armv6(cpu_flags) && !(have_vfpv3(cpu_flags) ||
> have_neon(cpu_flags))) {
> + // This function uses the 'setend' instruction which is deprecated
> + // on ARMv8. This instruction is serializing on some ARMv7 cores as
> + // well. Therefore, only use the function on ARMv6.
> + dsp->vc1_find_start_code_candidate =
> ff_startcode_find_candidate_armv6;
Maybe it's time to add a macro for this case to libavutil/arm/cpu.h, it
seems to get reused in multiple places already.
Diego
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel