• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

libavcodec/arm/vp8dsp_init_arm.c

Go to the documentation of this file.
00001 
00019 #include <stdint.h>
00020 #include "libavcodec/vp8dsp.h"
00021 
00022 void ff_vp8_luma_dc_wht_neon(DCTELEM block[4][4][16], DCTELEM dc[16]);
00023 void ff_vp8_luma_dc_wht_dc_neon(DCTELEM block[4][4][16], DCTELEM dc[16]);
00024 
00025 void ff_vp8_idct_add_neon(uint8_t *dst, DCTELEM block[16], int stride);
00026 void ff_vp8_idct_dc_add_neon(uint8_t *dst, DCTELEM block[16], int stride);
00027 void ff_vp8_idct_dc_add4y_neon(uint8_t *dst, DCTELEM block[4][16], int stride);
00028 void ff_vp8_idct_dc_add4uv_neon(uint8_t *dst, DCTELEM block[4][16], int stride);
00029 
00030 void ff_vp8_v_loop_filter16_neon(uint8_t *dst, int stride,
00031                                  int flim_E, int flim_I, int hev_thresh);
00032 void ff_vp8_h_loop_filter16_neon(uint8_t *dst, int stride,
00033                                  int flim_E, int flim_I, int hev_thresh);
00034 void ff_vp8_v_loop_filter8uv_neon(uint8_t *dstU, uint8_t *dstV, int stride,
00035                                   int flim_E, int flim_I, int hev_thresh);
00036 void ff_vp8_h_loop_filter8uv_neon(uint8_t *dstU, uint8_t *dstV, int stride,
00037                                   int flim_E, int flim_I, int hev_thresh);
00038 
00039 void ff_vp8_v_loop_filter16_inner_neon(uint8_t *dst, int stride,
00040                                        int flim_E, int flim_I, int hev_thresh);
00041 void ff_vp8_h_loop_filter16_inner_neon(uint8_t *dst, int stride,
00042                                        int flim_E, int flim_I, int hev_thresh);
00043 void ff_vp8_v_loop_filter8uv_inner_neon(uint8_t *dstU, uint8_t *dstV,
00044                                         int stride, int flim_E, int flim_I,
00045                                         int hev_thresh);
00046 void ff_vp8_h_loop_filter8uv_inner_neon(uint8_t *dstU, uint8_t *dstV,
00047                                         int stride, int flim_E, int flim_I,
00048                                         int hev_thresh);
00049 
00050 void ff_vp8_v_loop_filter16_simple_neon(uint8_t *dst, int stride, int flim);
00051 void ff_vp8_h_loop_filter16_simple_neon(uint8_t *dst, int stride, int flim);
00052 
00053 
00054 #define VP8_MC(n)                                                       \
00055     void ff_put_vp8_##n##_neon(uint8_t *dst, int dststride,             \
00056                                uint8_t *src, int srcstride,             \
00057                                int h, int x, int y)
00058 
00059 #define VP8_EPEL(w)                             \
00060     VP8_MC(pixels ## w);                        \
00061     VP8_MC(epel ## w ## _h4);                   \
00062     VP8_MC(epel ## w ## _h6);                   \
00063     VP8_MC(epel ## w ## _v4);                   \
00064     VP8_MC(epel ## w ## _h4v4);                 \
00065     VP8_MC(epel ## w ## _h6v4);                 \
00066     VP8_MC(epel ## w ## _v6);                   \
00067     VP8_MC(epel ## w ## _h4v6);                 \
00068     VP8_MC(epel ## w ## _h6v6)
00069 
00070 VP8_EPEL(16);
00071 VP8_EPEL(8);
00072 VP8_EPEL(4);
00073 
00074 VP8_MC(bilin16_h);
00075 VP8_MC(bilin16_v);
00076 VP8_MC(bilin16_hv);
00077 VP8_MC(bilin8_h);
00078 VP8_MC(bilin8_v);
00079 VP8_MC(bilin8_hv);
00080 VP8_MC(bilin4_h);
00081 VP8_MC(bilin4_v);
00082 VP8_MC(bilin4_hv);
00083 
00084 av_cold void ff_vp8dsp_init_arm(VP8DSPContext *dsp)
00085 {
00086     if (HAVE_NEON) {
00087         dsp->vp8_luma_dc_wht    = ff_vp8_luma_dc_wht_neon;
00088         dsp->vp8_luma_dc_wht_dc = ff_vp8_luma_dc_wht_dc_neon;
00089 
00090         dsp->vp8_idct_add       = ff_vp8_idct_add_neon;
00091         dsp->vp8_idct_dc_add    = ff_vp8_idct_dc_add_neon;
00092         dsp->vp8_idct_dc_add4y  = ff_vp8_idct_dc_add4y_neon;
00093         dsp->vp8_idct_dc_add4uv = ff_vp8_idct_dc_add4uv_neon;
00094 
00095         dsp->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16_neon;
00096         dsp->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16_neon;
00097         dsp->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_neon;
00098         dsp->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_neon;
00099 
00100         dsp->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16_inner_neon;
00101         dsp->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16_inner_neon;
00102         dsp->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_neon;
00103         dsp->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_neon;
00104 
00105         dsp->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter16_simple_neon;
00106         dsp->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter16_simple_neon;
00107 
00108         dsp->put_vp8_epel_pixels_tab[0][0][0] = ff_put_vp8_pixels16_neon;
00109         dsp->put_vp8_epel_pixels_tab[0][0][2] = ff_put_vp8_epel16_h6_neon;
00110         dsp->put_vp8_epel_pixels_tab[0][2][0] = ff_put_vp8_epel16_v6_neon;
00111         dsp->put_vp8_epel_pixels_tab[0][2][2] = ff_put_vp8_epel16_h6v6_neon;
00112 
00113         dsp->put_vp8_epel_pixels_tab[1][0][0] = ff_put_vp8_pixels8_neon;
00114         dsp->put_vp8_epel_pixels_tab[1][0][1] = ff_put_vp8_epel8_h4_neon;
00115         dsp->put_vp8_epel_pixels_tab[1][0][2] = ff_put_vp8_epel8_h6_neon;
00116         dsp->put_vp8_epel_pixels_tab[1][1][0] = ff_put_vp8_epel8_v4_neon;
00117         dsp->put_vp8_epel_pixels_tab[1][1][1] = ff_put_vp8_epel8_h4v4_neon;
00118         dsp->put_vp8_epel_pixels_tab[1][1][2] = ff_put_vp8_epel8_h6v4_neon;
00119         dsp->put_vp8_epel_pixels_tab[1][2][0] = ff_put_vp8_epel8_v6_neon;
00120         dsp->put_vp8_epel_pixels_tab[1][2][1] = ff_put_vp8_epel8_h4v6_neon;
00121         dsp->put_vp8_epel_pixels_tab[1][2][2] = ff_put_vp8_epel8_h6v6_neon;
00122 
00123         dsp->put_vp8_epel_pixels_tab[2][0][0] = ff_put_vp8_pixels4_neon;
00124         dsp->put_vp8_epel_pixels_tab[2][0][1] = ff_put_vp8_epel4_h4_neon;
00125         dsp->put_vp8_epel_pixels_tab[2][0][2] = ff_put_vp8_epel4_h6_neon;
00126         dsp->put_vp8_epel_pixels_tab[2][1][0] = ff_put_vp8_epel4_v4_neon;
00127         dsp->put_vp8_epel_pixels_tab[2][1][1] = ff_put_vp8_epel4_h4v4_neon;
00128         dsp->put_vp8_epel_pixels_tab[2][1][2] = ff_put_vp8_epel4_h6v4_neon;
00129         dsp->put_vp8_epel_pixels_tab[2][2][0] = ff_put_vp8_epel4_v6_neon;
00130         dsp->put_vp8_epel_pixels_tab[2][2][1] = ff_put_vp8_epel4_h4v6_neon;
00131         dsp->put_vp8_epel_pixels_tab[2][2][2] = ff_put_vp8_epel4_h6v6_neon;
00132 
00133         dsp->put_vp8_bilinear_pixels_tab[0][0][0] = ff_put_vp8_pixels16_neon;
00134         dsp->put_vp8_bilinear_pixels_tab[0][0][1] = ff_put_vp8_bilin16_h_neon;
00135         dsp->put_vp8_bilinear_pixels_tab[0][0][2] = ff_put_vp8_bilin16_h_neon;
00136         dsp->put_vp8_bilinear_pixels_tab[0][1][0] = ff_put_vp8_bilin16_v_neon;
00137         dsp->put_vp8_bilinear_pixels_tab[0][1][1] = ff_put_vp8_bilin16_hv_neon;
00138         dsp->put_vp8_bilinear_pixels_tab[0][1][2] = ff_put_vp8_bilin16_hv_neon;
00139         dsp->put_vp8_bilinear_pixels_tab[0][2][0] = ff_put_vp8_bilin16_v_neon;
00140         dsp->put_vp8_bilinear_pixels_tab[0][2][1] = ff_put_vp8_bilin16_hv_neon;
00141         dsp->put_vp8_bilinear_pixels_tab[0][2][2] = ff_put_vp8_bilin16_hv_neon;
00142 
00143         dsp->put_vp8_bilinear_pixels_tab[1][0][0] = ff_put_vp8_pixels8_neon;
00144         dsp->put_vp8_bilinear_pixels_tab[1][0][1] = ff_put_vp8_bilin8_h_neon;
00145         dsp->put_vp8_bilinear_pixels_tab[1][0][2] = ff_put_vp8_bilin8_h_neon;
00146         dsp->put_vp8_bilinear_pixels_tab[1][1][0] = ff_put_vp8_bilin8_v_neon;
00147         dsp->put_vp8_bilinear_pixels_tab[1][1][1] = ff_put_vp8_bilin8_hv_neon;
00148         dsp->put_vp8_bilinear_pixels_tab[1][1][2] = ff_put_vp8_bilin8_hv_neon;
00149         dsp->put_vp8_bilinear_pixels_tab[1][2][0] = ff_put_vp8_bilin8_v_neon;
00150         dsp->put_vp8_bilinear_pixels_tab[1][2][1] = ff_put_vp8_bilin8_hv_neon;
00151         dsp->put_vp8_bilinear_pixels_tab[1][2][2] = ff_put_vp8_bilin8_hv_neon;
00152 
00153         dsp->put_vp8_bilinear_pixels_tab[2][0][0] = ff_put_vp8_pixels4_neon;
00154         dsp->put_vp8_bilinear_pixels_tab[2][0][1] = ff_put_vp8_bilin4_h_neon;
00155         dsp->put_vp8_bilinear_pixels_tab[2][0][2] = ff_put_vp8_bilin4_h_neon;
00156         dsp->put_vp8_bilinear_pixels_tab[2][1][0] = ff_put_vp8_bilin4_v_neon;
00157         dsp->put_vp8_bilinear_pixels_tab[2][1][1] = ff_put_vp8_bilin4_hv_neon;
00158         dsp->put_vp8_bilinear_pixels_tab[2][1][2] = ff_put_vp8_bilin4_hv_neon;
00159         dsp->put_vp8_bilinear_pixels_tab[2][2][0] = ff_put_vp8_bilin4_v_neon;
00160         dsp->put_vp8_bilinear_pixels_tab[2][2][1] = ff_put_vp8_bilin4_hv_neon;
00161         dsp->put_vp8_bilinear_pixels_tab[2][2][2] = ff_put_vp8_bilin4_hv_neon;
00162     }
00163 }
Generated on Sun Apr 22 2012 21:53:59 for Libav by doxygen 1.7.1