2 * Copyright (c) 2020 Loongson Technology Corporation Limited
3 * Contributed by Shiyou Yin <yinshiyou-hf@loongson.cn>
5 * This file is part of FFmpeg.
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.
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.
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
22 #ifndef AVCODEC_LOONGARCH_H264QPEL_LASX_H
23 #define AVCODEC_LOONGARCH_H264QPEL_LASX_H
27 #include "libavcodec/h264.h"
29 void ff_h264_h_lpf_luma_inter_lasx(uint8_t *src, int stride,
30 int alpha, int beta, int8_t *tc0);
31 void ff_h264_v_lpf_luma_inter_lasx(uint8_t *src, int stride,
32 int alpha, int beta, int8_t *tc0);
33 void ff_put_h264_qpel16_mc00_lasx(uint8_t *dst, const uint8_t *src,
34 ptrdiff_t dst_stride);
35 void ff_put_h264_qpel16_mc10_lasx(uint8_t *dst, const uint8_t *src,
36 ptrdiff_t dst_stride);
37 void ff_put_h264_qpel16_mc20_lasx(uint8_t *dst, const uint8_t *src,
38 ptrdiff_t dst_stride);
39 void ff_put_h264_qpel16_mc30_lasx(uint8_t *dst, const uint8_t *src,
40 ptrdiff_t dst_stride);
41 void ff_put_h264_qpel16_mc01_lasx(uint8_t *dst, const uint8_t *src,
42 ptrdiff_t dst_stride);
43 void ff_put_h264_qpel16_mc11_lasx(uint8_t *dst, const uint8_t *src,
44 ptrdiff_t dst_stride);
45 void ff_put_h264_qpel16_mc21_lasx(uint8_t *dst, const uint8_t *src,
46 ptrdiff_t dst_stride);
47 void ff_put_h264_qpel16_mc31_lasx(uint8_t *dst, const uint8_t *src,
48 ptrdiff_t dst_stride);
49 void ff_put_h264_qpel16_mc02_lasx(uint8_t *dst, const uint8_t *src,
50 ptrdiff_t dst_stride);
51 void ff_put_h264_qpel16_mc12_lasx(uint8_t *dst, const uint8_t *src,
52 ptrdiff_t dst_stride);
53 void ff_put_h264_qpel16_mc32_lasx(uint8_t *dst, const uint8_t *src,
54 ptrdiff_t dst_stride);
55 void ff_put_h264_qpel16_mc22_lasx(uint8_t *dst, const uint8_t *src,
56 ptrdiff_t dst_stride);
57 void ff_put_h264_qpel16_mc03_lasx(uint8_t *dst, const uint8_t *src,
58 ptrdiff_t dst_stride);
59 void ff_put_h264_qpel16_mc13_lasx(uint8_t *dst, const uint8_t *src,
60 ptrdiff_t dst_stride);
61 void ff_put_h264_qpel16_mc23_lasx(uint8_t *dst, const uint8_t *src,
62 ptrdiff_t dst_stride);
63 void ff_put_h264_qpel16_mc33_lasx(uint8_t *dst, const uint8_t *src,
64 ptrdiff_t dst_stride);
65 void ff_avg_h264_qpel16_mc00_lasx(uint8_t *dst, const uint8_t *src,
66 ptrdiff_t dst_stride);
67 void ff_avg_h264_qpel16_mc10_lasx(uint8_t *dst, const uint8_t *src,
68 ptrdiff_t dst_stride);
69 void ff_avg_h264_qpel16_mc20_lasx(uint8_t *dst, const uint8_t *src,
70 ptrdiff_t dst_stride);
71 void ff_avg_h264_qpel16_mc30_lasx(uint8_t *dst, const uint8_t *src,
72 ptrdiff_t dst_stride);
73 void ff_avg_h264_qpel16_mc01_lasx(uint8_t *dst, const uint8_t *src,
74 ptrdiff_t dst_stride);
75 void ff_avg_h264_qpel16_mc11_lasx(uint8_t *dst, const uint8_t *src,
76 ptrdiff_t dst_stride);
77 void ff_avg_h264_qpel16_mc21_lasx(uint8_t *dst, const uint8_t *src,
78 ptrdiff_t dst_stride);
79 void ff_avg_h264_qpel16_mc31_lasx(uint8_t *dst, const uint8_t *src,
80 ptrdiff_t dst_stride);
81 void ff_avg_h264_qpel16_mc02_lasx(uint8_t *dst, const uint8_t *src,
82 ptrdiff_t dst_stride);
83 void ff_avg_h264_qpel16_mc12_lasx(uint8_t *dst, const uint8_t *src,
84 ptrdiff_t dst_stride);
85 void ff_avg_h264_qpel16_mc22_lasx(uint8_t *dst, const uint8_t *src,
86 ptrdiff_t dst_stride);
87 void ff_avg_h264_qpel16_mc32_lasx(uint8_t *dst, const uint8_t *src,
88 ptrdiff_t dst_stride);
89 void ff_avg_h264_qpel16_mc03_lasx(uint8_t *dst, const uint8_t *src,
90 ptrdiff_t dst_stride);
91 void ff_avg_h264_qpel16_mc13_lasx(uint8_t *dst, const uint8_t *src,
92 ptrdiff_t dst_stride);
93 void ff_avg_h264_qpel16_mc23_lasx(uint8_t *dst, const uint8_t *src,
94 ptrdiff_t dst_stride);
95 void ff_avg_h264_qpel16_mc33_lasx(uint8_t *dst, const uint8_t *src,
96 ptrdiff_t dst_stride);
98 void ff_put_h264_qpel8_mc00_lasx(uint8_t *dst, const uint8_t *src,
100 void ff_put_h264_qpel8_mc10_lasx(uint8_t *dst, const uint8_t *src,
102 void ff_put_h264_qpel8_mc20_lasx(uint8_t *dst, const uint8_t *src,
104 void ff_put_h264_qpel8_mc30_lasx(uint8_t *dst, const uint8_t *src,
106 void ff_put_h264_qpel8_mc01_lasx(uint8_t *dst, const uint8_t *src,
108 void ff_put_h264_qpel8_mc11_lasx(uint8_t *dst, const uint8_t *src,
110 void ff_put_h264_qpel8_mc21_lasx(uint8_t *dst, const uint8_t *src,
112 void ff_put_h264_qpel8_mc31_lasx(uint8_t *dst, const uint8_t *src,
114 void ff_put_h264_qpel8_mc02_lasx(uint8_t *dst, const uint8_t *src,
116 void ff_put_h264_qpel8_mc12_lasx(uint8_t *dst, const uint8_t *src,
118 void ff_put_h264_qpel8_mc22_lasx(uint8_t *dst, const uint8_t *src,
120 void ff_put_h264_qpel8_mc32_lasx(uint8_t *dst, const uint8_t *src,
122 void ff_put_h264_qpel8_mc03_lasx(uint8_t *dst, const uint8_t *src,
124 void ff_put_h264_qpel8_mc13_lasx(uint8_t *dst, const uint8_t *src,
126 void ff_put_h264_qpel8_mc23_lasx(uint8_t *dst, const uint8_t *src,
128 void ff_put_h264_qpel8_mc33_lasx(uint8_t *dst, const uint8_t *src,
130 void ff_avg_h264_qpel8_mc00_lasx(uint8_t *dst, const uint8_t *src,
131 ptrdiff_t dst_stride);
132 void ff_avg_h264_qpel8_mc10_lasx(uint8_t *dst, const uint8_t *src,
133 ptrdiff_t dst_stride);
134 void ff_avg_h264_qpel8_mc20_lasx(uint8_t *dst, const uint8_t *src,
135 ptrdiff_t dst_stride);
136 void ff_avg_h264_qpel8_mc30_lasx(uint8_t *dst, const uint8_t *src,
137 ptrdiff_t dst_stride);
138 void ff_avg_h264_qpel8_mc11_lasx(uint8_t *dst, const uint8_t *src,
139 ptrdiff_t dst_stride);
140 void ff_avg_h264_qpel8_mc21_lasx(uint8_t *dst, const uint8_t *src,
141 ptrdiff_t dst_stride);
142 void ff_avg_h264_qpel8_mc31_lasx(uint8_t *dst, const uint8_t *src,
143 ptrdiff_t dst_stride);
144 void ff_avg_h264_qpel8_mc02_lasx(uint8_t *dst, const uint8_t *src,
145 ptrdiff_t dst_stride);
146 void ff_avg_h264_qpel8_mc12_lasx(uint8_t *dst, const uint8_t *src,
147 ptrdiff_t dst_stride);
148 void ff_avg_h264_qpel8_mc22_lasx(uint8_t *dst, const uint8_t *src,
149 ptrdiff_t dst_stride);
150 void ff_avg_h264_qpel8_mc32_lasx(uint8_t *dst, const uint8_t *src,
151 ptrdiff_t dst_stride);
152 void ff_avg_h264_qpel8_mc13_lasx(uint8_t *dst, const uint8_t *src,
153 ptrdiff_t dst_stride);
154 void ff_avg_h264_qpel8_mc23_lasx(uint8_t *dst, const uint8_t *src,
155 ptrdiff_t dst_stride);
156 void 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