FFmpeg
Loading...
Searching...
No Matches
h264dsp_loongarch.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Loongson Technology Corporation Limited
3 * Contributed by Shiyou Yin <yinshiyou-hf@loongson.cn>
4 * Xiwei Gu <guxiwei-hf@loongson.cn>
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef AVCODEC_LOONGARCH_H264DSP_LOONGARCH_H
24#define AVCODEC_LOONGARCH_H264DSP_LOONGARCH_H
25
26#include "libavcodec/h264dec.h"
27#include "config.h"
28
29void ff_h264_idct_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
30void ff_h264_idct8_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
31void ff_h264_idct_dc_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
32void ff_h264_idct8_dc_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
33void ff_h264_luma_dc_dequant_idct_8_lsx(int16_t *_output, int16_t *_input, int qmul);
34void ff_h264_idct_add16_8_lsx(uint8_t *dst, const int32_t *blk_offset,
35 int16_t *block, ptrdiff_t dst_stride,
36 const uint8_t nzc[15 * 8]);
37void ff_h264_idct8_add4_8_lsx(uint8_t *dst, const int32_t *blk_offset,
38 int16_t *block, ptrdiff_t dst_stride,
39 const uint8_t nzc[15 * 8]);
40void ff_h264_idct_add8_8_lsx(uint8_t **dst, const int32_t *blk_offset,
41 int16_t *block, ptrdiff_t dst_stride,
42 const uint8_t nzc[15 * 8]);
43void ff_h264_idct_add8_422_8_lsx(uint8_t **dst, const int32_t *blk_offset,
44 int16_t *block, ptrdiff_t dst_stride,
45 const uint8_t nzc[15 * 8]);
46void ff_h264_idct_add16_intra_8_lsx(uint8_t *dst, const int32_t *blk_offset,
47 int16_t *block, ptrdiff_t dst_stride,
48 const uint8_t nzc[15 * 8]);
49
50void ff_h264_h_lpf_luma_8_lsx(uint8_t *src, ptrdiff_t stride,
51 int alpha, int beta, int8_t *tc0);
52void ff_h264_v_lpf_luma_8_lsx(uint8_t *src, ptrdiff_t stride,
53 int alpha, int beta, int8_t *tc0);
54void ff_h264_h_lpf_luma_intra_8_lsx(uint8_t *src, ptrdiff_t stride,
55 int alpha, int beta);
56void ff_h264_v_lpf_luma_intra_8_lsx(uint8_t *src, ptrdiff_t stride,
57 int alpha, int beta);
58void ff_h264_h_lpf_chroma_8_lsx(uint8_t *src, ptrdiff_t stride,
59 int alpha, int beta, int8_t *tc0);
60void ff_h264_v_lpf_chroma_8_lsx(uint8_t *src, ptrdiff_t stride,
61 int alpha, int beta, int8_t *tc0);
63 int alpha, int beta);
65 int alpha, int beta);
66void ff_biweight_h264_pixels16_8_lsx(uint8_t *dst, uint8_t *src,
67 ptrdiff_t stride, int height,
68 int log2_denom, int weight_dst,
69 int weight_src, int offset_in);
70void ff_biweight_h264_pixels8_8_lsx(uint8_t *dst, uint8_t *src,
71 ptrdiff_t stride, int height,
72 int log2_denom, int weight_dst,
73 int weight_src, int offset);
74void ff_biweight_h264_pixels4_8_lsx(uint8_t *dst, uint8_t *src,
75 ptrdiff_t stride, int height,
76 int log2_denom, int weight_dst,
77 int weight_src, int offset);
78void ff_weight_h264_pixels16_8_lsx(uint8_t *src, ptrdiff_t stride,
79 int height, int log2_denom,
80 int weight_src, int offset_in);
81void ff_weight_h264_pixels8_8_lsx(uint8_t *src, ptrdiff_t stride,
82 int height, int log2_denom,
83 int weight_src, int offset);
84void ff_weight_h264_pixels4_8_lsx(uint8_t *src, ptrdiff_t stride,
85 int height, int log2_denom,
86 int weight_src, int offset);
87void ff_h264_add_pixels4_8_lsx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
88void ff_h264_add_pixels8_8_lsx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
89void ff_h264_loop_filter_strength_lsx(int16_t bS[2][4][4], uint8_t nnz[40],
90 int8_t ref[2][40], int16_t mv[2][40][2],
91 int bidir, int edges, int step,
92 int mask_mv0, int mask_mv1, int field);
93
94#if HAVE_LASX
95void ff_h264_h_lpf_luma_8_lasx(uint8_t *src, ptrdiff_t stride,
96 int alpha, int beta, int8_t *tc0);
97void ff_h264_v_lpf_luma_8_lasx(uint8_t *src, ptrdiff_t stride,
98 int alpha, int beta, int8_t *tc0);
99void ff_h264_h_lpf_luma_intra_8_lasx(uint8_t *src, ptrdiff_t stride,
100 int alpha, int beta);
101void ff_h264_v_lpf_luma_intra_8_lasx(uint8_t *src, ptrdiff_t stride,
102 int alpha, int beta);
103void ff_biweight_h264_pixels16_8_lasx(unsigned char *dst, unsigned char *src,
104 ptrdiff_t stride, int height,
105 int log2_denom, int weight_dst,
106 int weight_src, int offset_in);
107void ff_biweight_h264_pixels8_8_lasx(unsigned char *dst, unsigned char *src,
108 ptrdiff_t stride, int height,
109 int log2_denom, int weight_dst,
110 int weight_src, int offset);
111void ff_weight_h264_pixels16_8_lasx(uint8_t *src, ptrdiff_t stride,
112 int height, int log2_denom,
113 int weight_src, int offset_in);
114void ff_weight_h264_pixels8_8_lasx(uint8_t *src, ptrdiff_t stride,
115 int height, int log2_denom,
116 int weight_src, int offset);
117void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
118
119void ff_h264_add_pixels8_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride);
120void ff_h264_idct8_add_8_lasx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride);
121void ff_h264_idct8_dc_add_8_lasx(uint8_t *dst, int16_t *src,
122 ptrdiff_t dst_stride);
123void ff_h264_idct8_add4_8_lasx(uint8_t *dst, const int32_t *blk_offset,
124 int16_t *block, ptrdiff_t dst_stride,
125 const uint8_t nzc[15 * 8]);
126void ff_h264_loop_filter_strength_lasx(int16_t bS[2][4][4], uint8_t nnz[40],
127 int8_t ref[2][40], int16_t mv[2][40][2],
128 int bidir, int edges, int step,
129 int mask_mv0, int mask_mv1, int field);
130#endif // #if HAVE_LASX
131
132#endif // #ifndef AVCODEC_LOONGARCH_H264DSP_LOONGARCH_H
uint8_t * _dst
Definition dsp.h:56
uint8_t ptrdiff_t const uint8_t * _src
Definition dsp.h:56
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
int32_t
static int16_t block[64]
Definition dct.c:125
void ff_h264_loop_filter_strength_lasx(int16_t bS[2][4][4], uint8_t nnz[40], int8_t ref[2][40], int16_t mv[2][40][2], int bidir, int edges, int step, int mask_mv0, int mask_mv1, int field)
H.264 / AVC / MPEG-4 part10 codec.
void ff_h264_v_lpf_luma_intra_8_lasx(uint8_t *data, ptrdiff_t img_width, int alpha_in, int beta_in)
void ff_h264_h_lpf_luma_intra_8_lasx(uint8_t *data, ptrdiff_t img_width, int alpha_in, int beta_in)
void ff_h264_h_lpf_luma_8_lasx(uint8_t *data, ptrdiff_t img_width, int alpha_in, int beta_in, int8_t *tc)
void ff_h264_add_pixels4_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
void ff_h264_v_lpf_luma_8_lasx(uint8_t *data, ptrdiff_t img_width, int alpha_in, int beta_in, int8_t *tc)
void ff_h264_add_pixels8_8_lasx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
void ff_h264_idct8_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride)
void ff_h264_idct_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride)
void ff_h264_v_lpf_chroma_intra_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta)
void ff_h264_idct_dc_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride)
void ff_h264_idct8_add4_8_lsx(uint8_t *dst, const int32_t *blk_offset, int16_t *block, ptrdiff_t dst_stride, const uint8_t nzc[15 *8])
void ff_h264_h_lpf_luma_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta, int8_t *tc0)
void ff_h264_luma_dc_dequant_idct_8_lsx(int16_t *_output, int16_t *_input, int qmul)
void ff_h264_idct_add16_intra_8_lsx(uint8_t *dst, const int32_t *blk_offset, int16_t *block, ptrdiff_t dst_stride, const uint8_t nzc[15 *8])
void ff_h264_h_lpf_luma_intra_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta)
void ff_biweight_h264_pixels16_8_lsx(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height, int log2_denom, int weight_dst, int weight_src, int offset_in)
void ff_h264_idct_add16_8_lsx(uint8_t *dst, const int32_t *blk_offset, int16_t *block, ptrdiff_t dst_stride, const uint8_t nzc[15 *8])
void ff_h264_v_lpf_luma_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta, int8_t *tc0)
void ff_h264_idct8_dc_add_8_lsx(uint8_t *dst, int16_t *src, ptrdiff_t dst_stride)
void ff_h264_loop_filter_strength_lsx(int16_t bS[2][4][4], uint8_t nnz[40], int8_t ref[2][40], int16_t mv[2][40][2], int bidir, int edges, int step, int mask_mv0, int mask_mv1, int field)
void ff_h264_idct_add8_422_8_lsx(uint8_t **dst, const int32_t *blk_offset, int16_t *block, ptrdiff_t dst_stride, const uint8_t nzc[15 *8])
void ff_h264_add_pixels4_8_lsx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
void ff_weight_h264_pixels8_8_lsx(uint8_t *src, ptrdiff_t stride, int height, int log2_denom, int weight_src, int offset)
void ff_h264_h_lpf_chroma_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta, int8_t *tc0)
void ff_biweight_h264_pixels4_8_lsx(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height, int log2_denom, int weight_dst, int weight_src, int offset)
void ff_h264_h_lpf_chroma_intra_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta)
void ff_h264_idct_add8_8_lsx(uint8_t **dst, const int32_t *blk_offset, int16_t *block, ptrdiff_t dst_stride, const uint8_t nzc[15 *8])
void ff_biweight_h264_pixels8_8_lsx(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height, int log2_denom, int weight_dst, int weight_src, int offset)
void ff_h264_v_lpf_luma_intra_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta)
void ff_h264_v_lpf_chroma_8_lsx(uint8_t *src, ptrdiff_t stride, int alpha, int beta, int8_t *tc0)
void ff_weight_h264_pixels4_8_lsx(uint8_t *src, ptrdiff_t stride, int height, int log2_denom, int weight_src, int offset)
void ff_h264_add_pixels8_8_lsx(uint8_t *_dst, int16_t *_src, ptrdiff_t stride)
void ff_weight_h264_pixels16_8_lsx(uint8_t *src, ptrdiff_t stride, int height, int log2_denom, int weight_src, int offset_in)
static const int16_t alpha[]
Definition ilbcdata.h:55
unsigned offset
Definition libaomenc.c:763
static const int8_t mv[256][2]
Definition 4xm.c:81
#define stride
#define src
Definition vp8dsp.c:248
static int ref[MAX_W *MAX_W]
#define height
Definition dsp.h:89