1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * This file is part of FFmpeg.
3cabdff1aSopenharmony_ci *
4cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
5cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
6cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
7cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
8cabdff1aSopenharmony_ci *
9cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
10cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
11cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12cabdff1aSopenharmony_ci * Lesser General Public License for more details.
13cabdff1aSopenharmony_ci *
14cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
15cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
16cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17cabdff1aSopenharmony_ci */
18cabdff1aSopenharmony_ci
19cabdff1aSopenharmony_ci#ifndef AVCODEC_ARM_VP8DSP_H
20cabdff1aSopenharmony_ci#define AVCODEC_ARM_VP8DSP_H
21cabdff1aSopenharmony_ci
22cabdff1aSopenharmony_ci#include "libavcodec/vp8dsp.h"
23cabdff1aSopenharmony_ci
24cabdff1aSopenharmony_civoid ff_vp78dsp_init_armv6(VP8DSPContext *dsp);
25cabdff1aSopenharmony_civoid ff_vp78dsp_init_neon(VP8DSPContext *dsp);
26cabdff1aSopenharmony_civoid ff_vp8dsp_init_armv6(VP8DSPContext *dsp);
27cabdff1aSopenharmony_civoid ff_vp8dsp_init_neon(VP8DSPContext *dsp);
28cabdff1aSopenharmony_ci
29cabdff1aSopenharmony_ci#define VP8_LF_Y(hv, inner, opt)                                             \
30cabdff1aSopenharmony_ci    void ff_vp8_##hv##_loop_filter16##inner##_##opt(uint8_t *dst,            \
31cabdff1aSopenharmony_ci                                                    ptrdiff_t stride,        \
32cabdff1aSopenharmony_ci                                                    int flim_E, int flim_I,  \
33cabdff1aSopenharmony_ci                                                    int hev_thresh)
34cabdff1aSopenharmony_ci
35cabdff1aSopenharmony_ci#define VP8_LF_UV(hv, inner, opt)                                            \
36cabdff1aSopenharmony_ci    void ff_vp8_##hv##_loop_filter8uv##inner##_##opt(uint8_t *dstU,          \
37cabdff1aSopenharmony_ci                                                     uint8_t *dstV,          \
38cabdff1aSopenharmony_ci                                                     ptrdiff_t stride,       \
39cabdff1aSopenharmony_ci                                                     int flim_E, int flim_I, \
40cabdff1aSopenharmony_ci                                                     int hev_thresh)
41cabdff1aSopenharmony_ci
42cabdff1aSopenharmony_ci#define VP8_LF_SIMPLE(hv, opt)                                          \
43cabdff1aSopenharmony_ci    void ff_vp8_##hv##_loop_filter16_simple_##opt(uint8_t *dst,         \
44cabdff1aSopenharmony_ci                                                  ptrdiff_t stride,     \
45cabdff1aSopenharmony_ci                                                  int flim)
46cabdff1aSopenharmony_ci
47cabdff1aSopenharmony_ci#define VP8_LF_HV(inner, opt)                   \
48cabdff1aSopenharmony_ci    VP8_LF_Y(h,  inner, opt);                   \
49cabdff1aSopenharmony_ci    VP8_LF_Y(v,  inner, opt);                   \
50cabdff1aSopenharmony_ci    VP8_LF_UV(h, inner, opt);                   \
51cabdff1aSopenharmony_ci    VP8_LF_UV(v, inner, opt)
52cabdff1aSopenharmony_ci
53cabdff1aSopenharmony_ci#define VP8_LF(opt)                             \
54cabdff1aSopenharmony_ci    VP8_LF_HV(,       opt);                     \
55cabdff1aSopenharmony_ci    VP8_LF_HV(_inner, opt);                     \
56cabdff1aSopenharmony_ci    VP8_LF_SIMPLE(h, opt);                      \
57cabdff1aSopenharmony_ci    VP8_LF_SIMPLE(v, opt)
58cabdff1aSopenharmony_ci
59cabdff1aSopenharmony_ci#define VP8_MC(n, opt)                                                  \
60cabdff1aSopenharmony_ci    void ff_put_vp8_##n##_##opt(uint8_t *dst, ptrdiff_t dststride,      \
61cabdff1aSopenharmony_ci                                uint8_t *src, ptrdiff_t srcstride,      \
62cabdff1aSopenharmony_ci                                int h, int x, int y)
63cabdff1aSopenharmony_ci
64cabdff1aSopenharmony_ci#define VP8_EPEL(w, opt)                        \
65cabdff1aSopenharmony_ci    VP8_MC(pixels ## w, opt);                   \
66cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _h4, opt);              \
67cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _h6, opt);              \
68cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _v4, opt);              \
69cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _h4v4, opt);            \
70cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _h6v4, opt);            \
71cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _v6, opt);              \
72cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _h4v6, opt);            \
73cabdff1aSopenharmony_ci    VP8_MC(epel ## w ## _h6v6, opt)
74cabdff1aSopenharmony_ci
75cabdff1aSopenharmony_ci#define VP8_BILIN(w, opt)                       \
76cabdff1aSopenharmony_ci    VP8_MC(bilin ## w ## _h, opt);              \
77cabdff1aSopenharmony_ci    VP8_MC(bilin ## w ## _v, opt);              \
78cabdff1aSopenharmony_ci    VP8_MC(bilin ## w ## _hv, opt)
79cabdff1aSopenharmony_ci
80cabdff1aSopenharmony_ci#endif /* AVCODEC_ARM_VP8DSP_H */
81