1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * Copyright (c) 2021 Loongson Technology Corporation Limited
3cabdff1aSopenharmony_ci * Contributed by Hecai Yuan <yuanhecai@loongson.cn>
4cabdff1aSopenharmony_ci *
5cabdff1aSopenharmony_ci * This file is part of FFmpeg.
6cabdff1aSopenharmony_ci *
7cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
8cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
9cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
10cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
11cabdff1aSopenharmony_ci *
12cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
13cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
14cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15cabdff1aSopenharmony_ci * Lesser General Public License for more details.
16cabdff1aSopenharmony_ci *
17cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
18cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
19cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20cabdff1aSopenharmony_ci */
21cabdff1aSopenharmony_ci
22cabdff1aSopenharmony_ci#ifndef AVCODEC_LOONGARCH_VP8DSP_LOONGARCH_H
23cabdff1aSopenharmony_ci#define AVCODEC_LOONGARCH_VP8DSP_LOONGARCH_H
24cabdff1aSopenharmony_ci
25cabdff1aSopenharmony_ci#include "libavcodec/vp8dsp.h"
26cabdff1aSopenharmony_ci
27cabdff1aSopenharmony_civoid ff_put_vp8_pixels8_lsx(uint8_t *dst, ptrdiff_t dst_stride,
28cabdff1aSopenharmony_ci                            uint8_t *src, ptrdiff_t src_stride,
29cabdff1aSopenharmony_ci                            int h, int x, int y);
30cabdff1aSopenharmony_civoid ff_put_vp8_pixels16_lsx(uint8_t *dst, ptrdiff_t dst_stride,
31cabdff1aSopenharmony_ci                             uint8_t *src, ptrdiff_t src_stride,
32cabdff1aSopenharmony_ci                             int h, int x, int y);
33cabdff1aSopenharmony_ci
34cabdff1aSopenharmony_civoid ff_put_vp8_epel16_h6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
35cabdff1aSopenharmony_ci                              uint8_t *src, ptrdiff_t src_stride,
36cabdff1aSopenharmony_ci                              int h, int mx, int my);
37cabdff1aSopenharmony_civoid ff_put_vp8_epel16_v4_lsx(uint8_t *dst, ptrdiff_t dst_stride,
38cabdff1aSopenharmony_ci                              uint8_t *src, ptrdiff_t src_stride,
39cabdff1aSopenharmony_ci                              int h, int mx, int my);
40cabdff1aSopenharmony_civoid ff_put_vp8_epel16_v6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
41cabdff1aSopenharmony_ci                              uint8_t *src, ptrdiff_t src_stride,
42cabdff1aSopenharmony_ci                              int h, int mx, int my);
43cabdff1aSopenharmony_civoid ff_put_vp8_epel16_h6v4_lsx(uint8_t *dst, ptrdiff_t dst_stride,
44cabdff1aSopenharmony_ci                                uint8_t *src, ptrdiff_t src_stride,
45cabdff1aSopenharmony_ci                                int h, int mx, int my);
46cabdff1aSopenharmony_civoid ff_put_vp8_epel16_h4v6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
47cabdff1aSopenharmony_ci                                uint8_t *src, ptrdiff_t src_stride,
48cabdff1aSopenharmony_ci                                int h, int mx, int my);
49cabdff1aSopenharmony_civoid ff_put_vp8_epel16_h6v6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
50cabdff1aSopenharmony_ci                                uint8_t *src, ptrdiff_t src_stride,
51cabdff1aSopenharmony_ci                                int h, int mx, int my);
52cabdff1aSopenharmony_ci
53cabdff1aSopenharmony_civoid ff_put_vp8_epel8_v4_lsx(uint8_t *dst, ptrdiff_t dst_stride,
54cabdff1aSopenharmony_ci                             uint8_t *src, ptrdiff_t src_stride,
55cabdff1aSopenharmony_ci                             int h, int mx, int my);
56cabdff1aSopenharmony_civoid ff_put_vp8_epel8_v6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
57cabdff1aSopenharmony_ci                             uint8_t *src, ptrdiff_t src_stride,
58cabdff1aSopenharmony_ci                             int h, int mx, int my);
59cabdff1aSopenharmony_civoid ff_put_vp8_epel8_h6v4_lsx(uint8_t *dst, ptrdiff_t dst_stride,
60cabdff1aSopenharmony_ci                               uint8_t *src, ptrdiff_t src_stride,
61cabdff1aSopenharmony_ci                               int h, int mx, int my);
62cabdff1aSopenharmony_civoid ff_put_vp8_epel8_h4v6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
63cabdff1aSopenharmony_ci                               uint8_t *src, ptrdiff_t src_stride,
64cabdff1aSopenharmony_ci                               int h, int mx, int my);
65cabdff1aSopenharmony_civoid ff_put_vp8_epel8_h6v6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
66cabdff1aSopenharmony_ci                               uint8_t *src, ptrdiff_t src_stride,
67cabdff1aSopenharmony_ci                               int h, int mx, int my);
68cabdff1aSopenharmony_ci
69cabdff1aSopenharmony_civoid ff_put_vp8_epel8_h6_lsx(uint8_t *dst, ptrdiff_t dst_stride,
70cabdff1aSopenharmony_ci                             uint8_t *src, ptrdiff_t src_stride,
71cabdff1aSopenharmony_ci                             int h, int mx, int my);
72cabdff1aSopenharmony_ci
73cabdff1aSopenharmony_ci/* loop filter */
74cabdff1aSopenharmony_civoid ff_vp8_v_loop_filter16_inner_lsx(uint8_t *dst, ptrdiff_t stride,
75cabdff1aSopenharmony_ci                                      int32_t e, int32_t i, int32_t h);
76cabdff1aSopenharmony_civoid ff_vp8_h_loop_filter16_inner_lsx(uint8_t *src, ptrdiff_t stride,
77cabdff1aSopenharmony_ci                                      int32_t e, int32_t i, int32_t h);
78cabdff1aSopenharmony_ci
79cabdff1aSopenharmony_civoid ff_vp8_v_loop_filter16_lsx(uint8_t *dst, ptrdiff_t stride,
80cabdff1aSopenharmony_ci                                int flim_e, int flim_i, int hev_thresh);
81cabdff1aSopenharmony_civoid ff_vp8_h_loop_filter16_lsx(uint8_t *dst, ptrdiff_t stride,
82cabdff1aSopenharmony_ci                                int flim_e, int flim_i, int hev_thresh);
83cabdff1aSopenharmony_civoid ff_vp8_h_loop_filter8uv_lsx(uint8_t *dst_u, uint8_t *dst_v,
84cabdff1aSopenharmony_ci                                 ptrdiff_t stride,
85cabdff1aSopenharmony_ci                                 int flim_e, int flim_i, int hev_thresh);
86cabdff1aSopenharmony_civoid ff_vp8_v_loop_filter8uv_lsx(uint8_t *dst_u, uint8_t *dst_v,
87cabdff1aSopenharmony_ci                                 ptrdiff_t stride,
88cabdff1aSopenharmony_ci                                 int flim_e, int flim_i, int hev_thresh);
89cabdff1aSopenharmony_ci
90cabdff1aSopenharmony_ci#endif  // #ifndef AVCODEC_LOONGARCH_VP8DSP_LOONGARCH_H
91