98#define TAP_W16(OPT, FILTERTYPE, TAPTYPE) \
99static void ff_put_vp8_ ## FILTERTYPE ## 16_ ## TAPTYPE ## _ ## OPT( \
100 uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, \
101 ptrdiff_t srcstride, int height, int mx, int my) \
103 ff_put_vp8_ ## FILTERTYPE ## 8_ ## TAPTYPE ## _ ## OPT( \
104 dst, dststride, src, srcstride, height, mx, my); \
105 ff_put_vp8_ ## FILTERTYPE ## 8_ ## TAPTYPE ## _ ## OPT( \
106 dst + 8, dststride, src + 8, srcstride, height, mx, my); \
119#define HVTAP(OPT, ALIGN, TAPNUMX, TAPNUMY, SIZE, MAXHEIGHT) \
120static void ff_put_vp8_epel ## SIZE ## _h ## TAPNUMX ## v ## TAPNUMY ## _ ## OPT( \
121 uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, \
122 ptrdiff_t srcstride, int height, int mx, int my) \
124 LOCAL_ALIGNED(ALIGN, uint8_t, tmp, [SIZE * (MAXHEIGHT + TAPNUMY - 1)]); \
125 uint8_t *tmpptr = tmp + SIZE * (TAPNUMY / 2 - 1); \
126 src -= srcstride * (TAPNUMY / 2 - 1); \
127 ff_put_vp8_epel ## SIZE ## _h ## TAPNUMX ## _ ## OPT( \
128 tmp, SIZE, src, srcstride, height + TAPNUMY - 1, mx, my); \
129 ff_put_vp8_epel ## SIZE ## _v ## TAPNUMY ## _ ## OPT( \
130 dst, dststride, tmpptr, SIZE, height, mx, my); \
133#define HVTAPSSE2(x, y, w) \
134HVTAP(sse2, 16, x, y, w, 16) \
135HVTAP(ssse3, 16, x, y, w, 16)
143HVTAP(ssse3, 16, 4, 4, 4, 8)
144HVTAP(ssse3, 16, 4, 6, 4, 8)
145HVTAP(ssse3, 16, 6, 4, 4, 8)
146HVTAP(ssse3, 16, 6, 6, 4, 8)
148#define HVBILIN(OPT, ALIGN, SIZE, MAXHEIGHT) \
149static void ff_put_vp8_bilinear ## SIZE ## _hv_ ## OPT( \
150 uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, \
151 ptrdiff_t srcstride, int height, int mx, int my) \
153 LOCAL_ALIGNED(ALIGN, uint8_t, tmp, [SIZE * (MAXHEIGHT + 2)]); \
154 ff_put_vp8_bilinear ## SIZE ## _h_ ## OPT( \
155 tmp, SIZE, src, srcstride, height + 1, mx, my); \
156 ff_put_vp8_bilinear ## SIZE ## _v_ ## OPT( \
157 dst, dststride, tmp, SIZE, height, mx, my); \
177#define DECLARE_LOOP_FILTER(NAME) \
178void ff_vp8_v_loop_filter_simple_ ## NAME(uint8_t *dst, \
181void ff_vp8_h_loop_filter_simple_ ## NAME(uint8_t *dst, \
184void ff_vp8_v_loop_filter16y_inner_ ## NAME (uint8_t *dst, \
186 int e, int i, int hvt); \
187void ff_vp8_h_loop_filter16y_inner_ ## NAME (uint8_t *dst, \
189 int e, int i, int hvt); \
190void ff_vp8_v_loop_filter8uv_inner_ ## NAME (uint8_t *dstU, \
193 int e, int i, int hvt); \
194void ff_vp8_h_loop_filter8uv_inner_ ## NAME (uint8_t *dstU, \
197 int e, int i, int hvt); \
198void ff_vp8_v_loop_filter16y_mbedge_ ## NAME(uint8_t *dst, \
200 int e, int i, int hvt); \
201void ff_vp8_h_loop_filter16y_mbedge_ ## NAME(uint8_t *dst, \
203 int e, int i, int hvt); \
204void ff_vp8_v_loop_filter8uv_mbedge_ ## NAME(uint8_t *dstU, \
207 int e, int i, int hvt); \
208void ff_vp8_h_loop_filter8uv_mbedge_ ## NAME(uint8_t *dstU, \
211 int e, int i, int hvt);
217#define VP8_LUMA_MC_FUNC(IDX, SIZE, OPT) \
218 c->put_vp8_epel_pixels_tab[IDX][0][2] = ff_put_vp8_epel ## SIZE ## _h6_ ## OPT; \
219 c->put_vp8_epel_pixels_tab[IDX][2][0] = ff_put_vp8_epel ## SIZE ## _v6_ ## OPT; \
220 c->put_vp8_epel_pixels_tab[IDX][2][2] = ff_put_vp8_epel ## SIZE ## _h6v6_ ## OPT
222#define VP8_MC_FUNC(IDX, SIZE, OPT) \
223 c->put_vp8_epel_pixels_tab[IDX][0][1] = ff_put_vp8_epel ## SIZE ## _h4_ ## OPT; \
224 c->put_vp8_epel_pixels_tab[IDX][1][0] = ff_put_vp8_epel ## SIZE ## _v4_ ## OPT; \
225 c->put_vp8_epel_pixels_tab[IDX][1][1] = ff_put_vp8_epel ## SIZE ## _h4v4_ ## OPT; \
226 c->put_vp8_epel_pixels_tab[IDX][1][2] = ff_put_vp8_epel ## SIZE ## _h6v4_ ## OPT; \
227 c->put_vp8_epel_pixels_tab[IDX][2][1] = ff_put_vp8_epel ## SIZE ## _h4v6_ ## OPT; \
228 VP8_LUMA_MC_FUNC(IDX, SIZE, OPT)
230#define VP8_BILINEAR_MC_FUNC(IDX, SIZE, OPT) \
231 c->put_vp8_bilinear_pixels_tab[IDX][0][1] = ff_put_vp8_bilinear ## SIZE ## _h_ ## OPT; \
232 c->put_vp8_bilinear_pixels_tab[IDX][0][2] = ff_put_vp8_bilinear ## SIZE ## _h_ ## OPT; \
233 c->put_vp8_bilinear_pixels_tab[IDX][1][0] = ff_put_vp8_bilinear ## SIZE ## _v_ ## OPT; \
234 c->put_vp8_bilinear_pixels_tab[IDX][1][1] = ff_put_vp8_bilinear ## SIZE ## _hv_ ## OPT; \
235 c->put_vp8_bilinear_pixels_tab[IDX][1][2] = ff_put_vp8_bilinear ## SIZE ## _hv_ ## OPT; \
236 c->put_vp8_bilinear_pixels_tab[IDX][2][0] = ff_put_vp8_bilinear ## SIZE ## _v_ ## OPT; \
237 c->put_vp8_bilinear_pixels_tab[IDX][2][1] = ff_put_vp8_bilinear ## SIZE ## _hv_ ## OPT; \
238 c->put_vp8_bilinear_pixels_tab[IDX][2][2] = ff_put_vp8_bilinear ## SIZE ## _hv_ ## OPT
246 c->put_vp8_epel_pixels_tab[0][0][0] =
251 c->put_vp8_epel_pixels_tab[1][0][0] =
281 c->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter_simple_sse2;
283 c->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16y_inner_sse2;
284 c->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_sse2;
286 c->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16y_mbedge_sse2;
287 c->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_mbedge_sse2;
295 c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_sse2;
297 c->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16y_inner_sse2;
298 c->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_sse2;
300 c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_sse2;
301 c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_sse2;
305 c->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter_simple_ssse3;
306 c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_ssse3;
308 c->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16y_inner_ssse3;
309 c->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16y_inner_ssse3;
310 c->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_ssse3;
311 c->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_ssse3;
313 c->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16y_mbedge_ssse3;
314 c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_ssse3;
315 c->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_mbedge_ssse3;
316 c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_ssse3;
322 c->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter_simple_sse4;
323 c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_sse4;
324 c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_sse4;
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t const uint8_t ptrdiff_t srcstride
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t my
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t mx
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Macro definitions for various function/variable attributes.
static atomic_int cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
#define EXTERNAL_SSE(flags)
#define EXTERNAL_SSSE3(flags)
#define EXTERNAL_SSE2_SLOW(flags)
#define EXTERNAL_SSE4(flags)
#define EXTERNAL_SSE2(flags)
VP8 compatible video decoder.
void ff_put_vp8_epel8_h4_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
#define HVTAPSSE2(x, y, w)
#define HVTAP(OPT, ALIGN, TAPNUMX, TAPNUMY, SIZE, MAXHEIGHT)
#define DECLARE_LOOP_FILTER(NAME)
#define HVBILIN(OPT, ALIGN, SIZE, MAXHEIGHT)
void ff_put_vp8_bilinear8_h_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
#define VP8_LUMA_MC_FUNC(IDX, SIZE, OPT)
void ff_put_vp8_epel8_v4_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_vp8_luma_dc_wht_sse(int16_t block[4][4][16], int16_t dc[16])
void ff_put_vp8_epel8_v4_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_epel4_v4_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_epel8_h6_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_epel8_h6_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_pixels16_sse(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_pixels8_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_vp8_idct_dc_add_sse2(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
void ff_put_vp8_epel8_v6_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_epel8_v6_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_vp8_idct_dc_add4y_sse2(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride)
#define TAP_W16(OPT, FILTERTYPE, TAPTYPE)
void ff_put_vp8_bilinear4_h_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_bilinear8_v_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_epel4_h6_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_vp8_idct_add_sse(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
void ff_put_vp8_epel4_h4_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
av_cold void ff_vp8dsp_init_x86(VP8DSPContext *c)
void ff_put_vp8_bilinear8_v_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
#define VP8_MC_FUNC(IDX, SIZE, OPT)
void ff_put_vp8_bilinear4_v_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_put_vp8_epel4_v6_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
void ff_vp8_idct_dc_add_sse4(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
void ff_put_vp8_epel8_h4_ssse3(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
av_cold void ff_vp78dsp_init_x86(VP8DSPContext *c)
void ff_put_vp8_bilinear8_h_sse2(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my)
#define VP8_BILINEAR_MC_FUNC(IDX, SIZE, OPT)
void ff_vp8_idct_dc_add4uv_sse2(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride)