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

Reply via email to