1/*
2 * Copyright (c) 2020 Loongson Technology Corporation Limited
3 * Contributed by Shiyou Yin <yinshiyou-hf@loongson.cn>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#ifndef AVCODEC_LOONGARCH_H264QPEL_LASX_H
23#define AVCODEC_LOONGARCH_H264QPEL_LASX_H
24
25#include <stdint.h>
26#include <stddef.h>
27#include "libavcodec/h264.h"
28
29void ff_h264_h_lpf_luma_inter_lasx(uint8_t *src, int stride,
30                                   int alpha, int beta, int8_t *tc0);
31void ff_h264_v_lpf_luma_inter_lasx(uint8_t *src, int stride,
32                                   int alpha, int beta, int8_t *tc0);
33void ff_put_h264_qpel16_mc00_lasx(uint8_t *dst, const uint8_t *src,
34                                  ptrdiff_t dst_stride);
35void ff_put_h264_qpel16_mc10_lasx(uint8_t *dst, const uint8_t *src,
36                                  ptrdiff_t dst_stride);
37void ff_put_h264_qpel16_mc20_lasx(uint8_t *dst, const uint8_t *src,
38                                  ptrdiff_t dst_stride);
39void ff_put_h264_qpel16_mc30_lasx(uint8_t *dst, const uint8_t *src,
40                                  ptrdiff_t dst_stride);
41void ff_put_h264_qpel16_mc01_lasx(uint8_t *dst, const uint8_t *src,
42                                  ptrdiff_t dst_stride);
43void ff_put_h264_qpel16_mc11_lasx(uint8_t *dst, const uint8_t *src,
44                                  ptrdiff_t dst_stride);
45void ff_put_h264_qpel16_mc21_lasx(uint8_t *dst, const uint8_t *src,
46                                  ptrdiff_t dst_stride);
47void ff_put_h264_qpel16_mc31_lasx(uint8_t *dst, const uint8_t *src,
48                                  ptrdiff_t dst_stride);
49void ff_put_h264_qpel16_mc02_lasx(uint8_t *dst, const uint8_t *src,
50                                  ptrdiff_t dst_stride);
51void ff_put_h264_qpel16_mc12_lasx(uint8_t *dst, const uint8_t *src,
52                                  ptrdiff_t dst_stride);
53void ff_put_h264_qpel16_mc32_lasx(uint8_t *dst, const uint8_t *src,
54                                  ptrdiff_t dst_stride);
55void ff_put_h264_qpel16_mc22_lasx(uint8_t *dst, const uint8_t *src,
56                                  ptrdiff_t dst_stride);
57void ff_put_h264_qpel16_mc03_lasx(uint8_t *dst, const uint8_t *src,
58                                  ptrdiff_t dst_stride);
59void ff_put_h264_qpel16_mc13_lasx(uint8_t *dst, const uint8_t *src,
60                                  ptrdiff_t dst_stride);
61void ff_put_h264_qpel16_mc23_lasx(uint8_t *dst, const uint8_t *src,
62                                  ptrdiff_t dst_stride);
63void ff_put_h264_qpel16_mc33_lasx(uint8_t *dst, const uint8_t *src,
64                                  ptrdiff_t dst_stride);
65void ff_avg_h264_qpel16_mc00_lasx(uint8_t *dst, const uint8_t *src,
66                                  ptrdiff_t dst_stride);
67void ff_avg_h264_qpel16_mc10_lasx(uint8_t *dst, const uint8_t *src,
68                                  ptrdiff_t dst_stride);
69void ff_avg_h264_qpel16_mc20_lasx(uint8_t *dst, const uint8_t *src,
70                                  ptrdiff_t dst_stride);
71void ff_avg_h264_qpel16_mc30_lasx(uint8_t *dst, const uint8_t *src,
72                                  ptrdiff_t dst_stride);
73void ff_avg_h264_qpel16_mc01_lasx(uint8_t *dst, const uint8_t *src,
74                                  ptrdiff_t dst_stride);
75void ff_avg_h264_qpel16_mc11_lasx(uint8_t *dst, const uint8_t *src,
76                                  ptrdiff_t dst_stride);
77void ff_avg_h264_qpel16_mc21_lasx(uint8_t *dst, const uint8_t *src,
78                                  ptrdiff_t dst_stride);
79void ff_avg_h264_qpel16_mc31_lasx(uint8_t *dst, const uint8_t *src,
80                                  ptrdiff_t dst_stride);
81void ff_avg_h264_qpel16_mc02_lasx(uint8_t *dst, const uint8_t *src,
82                                  ptrdiff_t dst_stride);
83void ff_avg_h264_qpel16_mc12_lasx(uint8_t *dst, const uint8_t *src,
84                                  ptrdiff_t dst_stride);
85void ff_avg_h264_qpel16_mc22_lasx(uint8_t *dst, const uint8_t *src,
86                                  ptrdiff_t dst_stride);
87void ff_avg_h264_qpel16_mc32_lasx(uint8_t *dst, const uint8_t *src,
88                                  ptrdiff_t dst_stride);
89void ff_avg_h264_qpel16_mc03_lasx(uint8_t *dst, const uint8_t *src,
90                                  ptrdiff_t dst_stride);
91void ff_avg_h264_qpel16_mc13_lasx(uint8_t *dst, const uint8_t *src,
92                                  ptrdiff_t dst_stride);
93void ff_avg_h264_qpel16_mc23_lasx(uint8_t *dst, const uint8_t *src,
94                                  ptrdiff_t dst_stride);
95void ff_avg_h264_qpel16_mc33_lasx(uint8_t *dst, const uint8_t *src,
96                                  ptrdiff_t dst_stride);
97
98void ff_put_h264_qpel8_mc00_lasx(uint8_t *dst, const uint8_t *src,
99                                 ptrdiff_t stride);
100void ff_put_h264_qpel8_mc10_lasx(uint8_t *dst, const uint8_t *src,
101                                 ptrdiff_t stride);
102void ff_put_h264_qpel8_mc20_lasx(uint8_t *dst, const uint8_t *src,
103                                 ptrdiff_t stride);
104void ff_put_h264_qpel8_mc30_lasx(uint8_t *dst, const uint8_t *src,
105                                 ptrdiff_t stride);
106void ff_put_h264_qpel8_mc01_lasx(uint8_t *dst, const uint8_t *src,
107                                 ptrdiff_t stride);
108void ff_put_h264_qpel8_mc11_lasx(uint8_t *dst, const uint8_t *src,
109                                 ptrdiff_t stride);
110void ff_put_h264_qpel8_mc21_lasx(uint8_t *dst, const uint8_t *src,
111                                 ptrdiff_t stride);
112void ff_put_h264_qpel8_mc31_lasx(uint8_t *dst, const uint8_t *src,
113                                 ptrdiff_t stride);
114void ff_put_h264_qpel8_mc02_lasx(uint8_t *dst, const uint8_t *src,
115                                 ptrdiff_t stride);
116void ff_put_h264_qpel8_mc12_lasx(uint8_t *dst, const uint8_t *src,
117                                 ptrdiff_t stride);
118void ff_put_h264_qpel8_mc22_lasx(uint8_t *dst, const uint8_t *src,
119                                 ptrdiff_t stride);
120void ff_put_h264_qpel8_mc32_lasx(uint8_t *dst, const uint8_t *src,
121                                 ptrdiff_t stride);
122void ff_put_h264_qpel8_mc03_lasx(uint8_t *dst, const uint8_t *src,
123                                 ptrdiff_t stride);
124void ff_put_h264_qpel8_mc13_lasx(uint8_t *dst, const uint8_t *src,
125                                 ptrdiff_t stride);
126void ff_put_h264_qpel8_mc23_lasx(uint8_t *dst, const uint8_t *src,
127                                 ptrdiff_t stride);
128void ff_put_h264_qpel8_mc33_lasx(uint8_t *dst, const uint8_t *src,
129                                 ptrdiff_t stride);
130void ff_avg_h264_qpel8_mc00_lasx(uint8_t *dst, const uint8_t *src,
131                                 ptrdiff_t dst_stride);
132void ff_avg_h264_qpel8_mc10_lasx(uint8_t *dst, const uint8_t *src,
133                                 ptrdiff_t dst_stride);
134void ff_avg_h264_qpel8_mc20_lasx(uint8_t *dst, const uint8_t *src,
135                                 ptrdiff_t dst_stride);
136void ff_avg_h264_qpel8_mc30_lasx(uint8_t *dst, const uint8_t *src,
137                                 ptrdiff_t dst_stride);
138void ff_avg_h264_qpel8_mc11_lasx(uint8_t *dst, const uint8_t *src,
139                                 ptrdiff_t dst_stride);
140void ff_avg_h264_qpel8_mc21_lasx(uint8_t *dst, const uint8_t *src,
141                                 ptrdiff_t dst_stride);
142void ff_avg_h264_qpel8_mc31_lasx(uint8_t *dst, const uint8_t *src,
143                                 ptrdiff_t dst_stride);
144void ff_avg_h264_qpel8_mc02_lasx(uint8_t *dst, const uint8_t *src,
145                                 ptrdiff_t dst_stride);
146void ff_avg_h264_qpel8_mc12_lasx(uint8_t *dst, const uint8_t *src,
147                                 ptrdiff_t dst_stride);
148void ff_avg_h264_qpel8_mc22_lasx(uint8_t *dst, const uint8_t *src,
149                                 ptrdiff_t dst_stride);
150void ff_avg_h264_qpel8_mc32_lasx(uint8_t *dst, const uint8_t *src,
151                                 ptrdiff_t dst_stride);
152void ff_avg_h264_qpel8_mc13_lasx(uint8_t *dst, const uint8_t *src,
153                                 ptrdiff_t dst_stride);
154void ff_avg_h264_qpel8_mc23_lasx(uint8_t *dst, const uint8_t *src,
155                                 ptrdiff_t dst_stride);
156void ff_avg_h264_qpel8_mc33_lasx(uint8_t *dst, const uint8_t *src,
157                                 ptrdiff_t dst_stride);
158#endif  // #ifndef AVCODEC_LOONGARCH_H264QPEL_LASX_H
159