Пример #1
0
void ff_diracdsp_init_x86(DiracDSPContext* c)
{
    int mm_flags = av_get_cpu_flags();

    if (EXTERNAL_MMX(mm_flags)) {
        c->add_dirac_obmc[0] = ff_add_dirac_obmc8_mmx;
#if !ARCH_X86_64
        c->add_dirac_obmc[1] = ff_add_dirac_obmc16_mmx;
        c->add_dirac_obmc[2] = ff_add_dirac_obmc32_mmx;
        c->dirac_hpel_filter = dirac_hpel_filter_mmx;
        c->add_rect_clamped = ff_add_rect_clamped_mmx;
        c->put_signed_rect_clamped[0] = (void *)ff_put_signed_rect_clamped_mmx;
#endif
        PIXFUNC(put, 0, mmx);
        PIXFUNC(avg, 0, mmx);
    }

    if (EXTERNAL_MMXEXT(mm_flags)) {
        PIXFUNC(avg, 0, mmxext);
    }

    if (EXTERNAL_SSE2(mm_flags)) {
        c->dirac_hpel_filter = dirac_hpel_filter_sse2;
        c->add_rect_clamped = ff_add_rect_clamped_sse2;
        c->put_signed_rect_clamped[0] = (void *)ff_put_signed_rect_clamped_sse2;

        c->add_dirac_obmc[1] = ff_add_dirac_obmc16_sse2;
        c->add_dirac_obmc[2] = ff_add_dirac_obmc32_sse2;

        c->put_dirac_pixels_tab[1][0] = ff_put_dirac_pixels16_sse2;
        c->avg_dirac_pixels_tab[1][0] = ff_avg_dirac_pixels16_sse2;
        c->put_dirac_pixels_tab[2][0] = ff_put_dirac_pixels32_sse2;
        c->avg_dirac_pixels_tab[2][0] = ff_avg_dirac_pixels32_sse2;
    }
}
Пример #2
0
void ff_diracdsp_init_mmx(DiracDSPContext* c)
{
  int mm_flags = av_get_cpu_flags();

  if (!(mm_flags & AV_CPU_FLAG_MMX))
    return;

#if HAVE_YASM
  c->add_dirac_obmc[0] = ff_add_dirac_obmc8_mmx;
#if !ARCH_X86_64
  c->add_dirac_obmc[1] = ff_add_dirac_obmc16_mmx;
  c->add_dirac_obmc[2] = ff_add_dirac_obmc32_mmx;
  c->dirac_hpel_filter = dirac_hpel_filter_mmx;
  c->add_rect_clamped = ff_add_rect_clamped_mmx;
  c->put_signed_rect_clamped = ff_put_signed_rect_clamped_mmx;
#endif
#endif

#if HAVE_MMX_INLINE
  PIXFUNC(put, 0, mmx);
  PIXFUNC(avg, 0, mmx);
#endif

#if HAVE_MMXEXT_INLINE
  if (mm_flags & AV_CPU_FLAG_MMX2) {
    PIXFUNC(avg, 0, mmxext);
  }
#endif

  if (mm_flags & AV_CPU_FLAG_SSE2) {
#if HAVE_YASM
    c->dirac_hpel_filter = dirac_hpel_filter_sse2;
    c->add_rect_clamped = ff_add_rect_clamped_sse2;
    c->put_signed_rect_clamped = ff_put_signed_rect_clamped_sse2;

    c->add_dirac_obmc[1] = ff_add_dirac_obmc16_sse2;
    c->add_dirac_obmc[2] = ff_add_dirac_obmc32_sse2;
#endif
#if HAVE_SSE2_INLINE
    c->put_dirac_pixels_tab[1][0] = ff_put_dirac_pixels16_sse2;
    c->avg_dirac_pixels_tab[1][0] = ff_avg_dirac_pixels16_sse2;
    c->put_dirac_pixels_tab[2][0] = ff_put_dirac_pixels32_sse2;
    c->avg_dirac_pixels_tab[2][0] = ff_avg_dirac_pixels32_sse2;
#endif
  }
}
Пример #3
0
av_cold void ff_diracdsp_init(DiracDSPContext *c)
{
    c->dirac_hpel_filter = dirac_hpel_filter;
    c->add_rect_clamped = add_rect_clamped_c;
    c->put_signed_rect_clamped[0] = put_signed_rect_clamped_8bit_c;
    c->put_signed_rect_clamped[1] = put_signed_rect_clamped_10bit_c;
    c->put_signed_rect_clamped[2] = put_signed_rect_clamped_12bit_c;

    c->add_dirac_obmc[0] = add_obmc8_c;
    c->add_dirac_obmc[1] = add_obmc16_c;
    c->add_dirac_obmc[2] = add_obmc32_c;

    c->weight_dirac_pixels_tab[0] = weight_dirac_pixels8_c;
    c->weight_dirac_pixels_tab[1] = weight_dirac_pixels16_c;
    c->weight_dirac_pixels_tab[2] = weight_dirac_pixels32_c;
    c->biweight_dirac_pixels_tab[0] = biweight_dirac_pixels8_c;
    c->biweight_dirac_pixels_tab[1] = biweight_dirac_pixels16_c;
    c->biweight_dirac_pixels_tab[2] = biweight_dirac_pixels32_c;

    PIXFUNC(put, 8);
    PIXFUNC(put, 16);
    PIXFUNC(put, 32);
    PIXFUNC(avg, 8);
    PIXFUNC(avg, 16);
    PIXFUNC(avg, 32);

    if (HAVE_MMX && HAVE_YASM) ff_diracdsp_init_mmx(c);
}