On Sun, Oct 07, 2012 at 06:50:43PM +0200, Janne Grunau wrote:
> 
> --- a/libavcodec/x86/cavsdsp.c
> +++ b/libavcodec/x86/cavsdsp.c
> @@ -433,15 +435,11 @@ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## 
> _mc03_ ## MMX(uint8_t *dst, ui
>  
> -QPEL_CAVS(put_,       PUT_OP, 3dnow)
> -QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow)
> +#if HAVE_MMXEXT_INLINE
> +
>  QPEL_CAVS(put_,       PUT_OP, mmx2)
>  QPEL_CAVS(avg_,  AVG_MMX2_OP, mmx2)
>  
> @@ -463,6 +461,17 @@ static void ff_cavsdsp_init_mmx2(CAVSDSPContext* c, 
> AVCodecContext *avctx) {
>      c->cavs_idct8_add = cavs_idct8_add_mmx;
>      c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
>  }
> +#endif /* HAVE_MMXEXT_INLINE */
> +
> +#if HAVE_AMD3DNOW_INLINE
> +
> +QPEL_CAVS(put_,       PUT_OP, 3dnow)
> +QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow)
> +
> @@ -480,15 +489,19 @@ static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, 
> AVCodecContext *avctx) {
>      c->cavs_idct8_add = cavs_idct8_add_mmx;
>      c->idct_perm = FF_TRANSPOSE_IDCT_PERM;
>  }
> +#endif /* HAVE_AMD3DNOW_INLINE */
>  
> -#endif /* HAVE_INLINE_ASM */
> +#else
> +extern void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx);
> +extern void ff_cavsdsp_init_mmx2(CAVSDSPContext* c, AVCodecContext *avctx);
> +#endif /* (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE) */
>  
> -void ff_cavsdsp_init_mmx(CAVSDSPContext *c, AVCodecContext *avctx)
> +av_cold void ff_cavsdsp_init_x86(CAVSDSPContext *c, AVCodecContext *avctx)
>  {
>      int mm_flags = av_get_cpu_flags();
>  
> -#if HAVE_INLINE_ASM
> -    if (mm_flags & AV_CPU_FLAG_MMXEXT) ff_cavsdsp_init_mmx2(c, avctx);
> -    if (mm_flags & AV_CPU_FLAG_3DNOW) ff_cavsdsp_init_3dnow(c, avctx);
> -#endif /* HAVE_INLINE_ASM */
> +    if (INLINE_MMXEXT(mm_flags))
> +        ff_cavsdsp_init_mmx2(c, avctx);
> +    if (INLINE_AMD3DNOW(mm_flags))
> +        ff_cavsdsp_init_3dnow(c, avctx);
>  }

I'm suspicious - does this compile with --disable-mmx?

Also, if you keep the #ifdefs you can avoid the forward declarations.

Diego
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to