On Mon, Feb 18, 2013 at 10:13:35AM -0500, Daniel Kang wrote:
> --- a/libavcodec/x86/cavsdsp.c
> +++ b/libavcodec/x86/cavsdsp.c
> @@ -446,12 +446,18 @@ CAVS_MC(put_,  8, mmxext)
>  
>  static av_cold void ff_cavsdsp_init_mmxext(CAVSDSPContext *c,
>                                             AVCodecContext *avctx)
>  {
> +#if HAVE_YASM
> +    c->put_cavs_qpel_pixels_tab[0][0] = ff_put_cavs_qpel16_mc00_mmx;
> +    c->put_cavs_qpel_pixels_tab[1][0] = ff_put_cavs_qpel8_mc00_mmx;
> +#endif
> +
> +#if HAVE_INLINE_ASM
>  #define dspfunc(PFX, IDX, NUM) \
> -    c->PFX ## _pixels_tab[IDX][ 0] = ff_ ## PFX ## NUM ## _mc00_mmxext; \
>      c->PFX ## _pixels_tab[IDX][ 2] = ff_ ## PFX ## NUM ## _mc20_mmxext; \
> @@ -475,12 +481,18 @@ CAVS_MC(put_, 8, 3dnow)
>  
>  static av_cold void ff_cavsdsp_init_3dnow(CAVSDSPContext *c,
>                                            AVCodecContext *avctx)
>  {
> +#if HAVE_YASM
> +    c->put_cavs_qpel_pixels_tab[0][0] = ff_put_cavs_qpel16_mc00_mmx;
> +    c->put_cavs_qpel_pixels_tab[1][0] = ff_put_cavs_qpel8_mc00_mmx;
> +#endif
> +
> +#if HAVE_INLINE_ASM
>  #define dspfunc(PFX, IDX, NUM) \
> -    c->PFX ## _pixels_tab[IDX][ 0] = ff_ ## PFX ## NUM ## _mc00_mmxext; \
>      c->PFX ## _pixels_tab[IDX][ 2] = ff_ ## PFX ## NUM ## _mc20_3dnow; \

This should not be duplicated, but done in a separate mmx init function or an
mmx subpart of the global init function.

> --- a/libavcodec/x86/dsputil_mmx.c
> +++ b/libavcodec/x86/dsputil_mmx.c
> @@ -128,26 +136,45 @@ void ff_put_no_rnd_pixels8_y2_exact_mmxext(uint8_t 
> *block,
>  void ff_put_pixels8_mmxext(uint8_t *block, const uint8_t *pixels, ptrdiff_t 
> line_size, int h);
>  static void ff_put_pixels16_mmxext(uint8_t *block, const uint8_t *pixels,
> -                                   int line_size, int h)
> +                                   ptrdiff_t line_size, int h)

Rebase on top of master / your patch please.

> @@ -1148,27 +1033,27 @@ static void OPNAME ## qpel16_mc22_ ## MMX(uint8_t 
> *dst, uint8_t *src,   \
>  
> -#if HAVE_INLINE_ASM
>  void ff_put_rv40_qpel8_mc33_mmx(uint8_t *dst, uint8_t *src, int stride)
>  {
> -  put_pixels8_xy2_mmx(dst, src, stride, 8);
> +  ff_put_pixels8_xy2_mmx(dst, src, stride, 8);
>  }
>  void ff_put_rv40_qpel16_mc33_mmx(uint8_t *dst, uint8_t *src, int stride)
>  {
> -  put_pixels16_xy2_mmx(dst, src, stride, 16);
> +  ff_put_pixels16_xy2_mmx(dst, src, stride, 16);
>  }
>  void ff_avg_rv40_qpel8_mc33_mmx(uint8_t *dst, uint8_t *src, int stride)
>  {
> -  avg_pixels8_xy2_mmx(dst, src, stride, 8);
> +  ff_avg_pixels8_xy2_mmx(dst, src, stride, 8);
>  }
>  void ff_avg_rv40_qpel16_mc33_mmx(uint8_t *dst, uint8_t *src, int stride)
>  {
> -  avg_pixels16_xy2_mmx(dst, src, stride, 16);
> +  ff_avg_pixels16_xy2_mmx(dst, src, stride, 16);
>  }
> +#endif /* HAVE_YASM */

Now that these rv40-specific functions no longer depend on static
functions local to the file, they could be moved to rv40dsp_init.c.
A follow-up patch doing just that would be much appreciated.

> @@ -1291,31 +1176,29 @@ void ff_put_pixels16_sse2(uint8_t *block, const 
> uint8_t *pixels,
>  
>  /* CAVS-specific */
> -void ff_put_cavs_qpel8_mc00_mmxext(uint8_t *dst, uint8_t *src, int stride)
> +void ff_put_cavs_qpel8_mc00_mmx(uint8_t *dst, uint8_t *src, int stride)
>  {
> -    put_pixels8_mmx(dst, src, stride, 8);
> +    ff_put_pixels8_mmx(dst, src, stride, 8);
>  }
>  
>  void ff_avg_cavs_qpel8_mc00_mmxext(uint8_t *dst, uint8_t *src, int stride)
>  {
> -    avg_pixels8_mmx(dst, src, stride, 8);
> +    ff_avg_pixels8_mmx(dst, src, stride, 8);
>  }
>  
> -void ff_put_cavs_qpel16_mc00_mmxext(uint8_t *dst, uint8_t *src, int stride)
> +void ff_put_cavs_qpel16_mc00_mmx(uint8_t *dst, uint8_t *src, int stride)
>  {
> -    put_pixels16_mmx(dst, src, stride, 16);
> +    ff_put_pixels16_mmx(dst, src, stride, 16);
>  }
>  
>  void ff_avg_cavs_qpel16_mc00_mmxext(uint8_t *dst, uint8_t *src, int stride)
>  {
> -    avg_pixels16_mmx(dst, src, stride, 16);
> +    ff_avg_pixels16_mmx(dst, src, stride, 16);
>  }
>  
>  /* VC-1-specific */
>  void ff_put_vc1_mspel_mc00_mmx(uint8_t *dst, const uint8_t *src,
>                                 int stride, int rnd)

same for these vc1 and cavs bits

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

Reply via email to