FFmpeg
Loading...
Searching...
No Matches
libavcodec
loongarch
idctdsp_init_loongarch.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2021 Loongson Technology Corporation Limited
3
* Contributed by Hao Chen <chenhao@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
#include "
libavutil/loongarch/cpu.h
"
23
#include "
idctdsp_loongarch.h
"
24
#include "
libavcodec/xvididct.h
"
25
26
av_cold
void
ff_idctdsp_init_loongarch
(
IDCTDSPContext
*
c
,
AVCodecContext
*avctx,
27
unsigned
high_bit_depth)
28
{
29
int
cpu_flags
=
av_get_cpu_flags
();
30
31
if
(
have_lasx
(
cpu_flags
)) {
32
if
((avctx->
lowres
!= 1) && (avctx->
lowres
!= 2) && (avctx->
lowres
!= 3) &&
33
(avctx->
bits_per_raw_sample
!= 10) &&
34
(avctx->
bits_per_raw_sample
!= 12) &&
35
(avctx->
idct_algo
==
FF_IDCT_AUTO
)) {
36
c
->idct_put =
ff_simple_idct_put_lasx
;
37
c
->idct_add =
ff_simple_idct_add_lasx
;
38
c
->idct =
ff_simple_idct_lasx
;
39
c
->perm_type =
FF_IDCT_PERM_NONE
;
40
}
41
c
->put_pixels_clamped =
ff_put_pixels_clamped_lasx
;
42
c
->put_signed_pixels_clamped =
ff_put_signed_pixels_clamped_lasx
;
43
c
->add_pixels_clamped =
ff_add_pixels_clamped_lasx
;
44
}
45
}
FF_IDCT_AUTO
#define FF_IDCT_AUTO
Definition
avcodec.h:1545
FF_IDCT_PERM_NONE
@ FF_IDCT_PERM_NONE
Definition
idctdsp.h:28
ff_idctdsp_init_loongarch
av_cold void ff_idctdsp_init_loongarch(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
Definition
idctdsp_init_loongarch.c:26
ff_add_pixels_clamped_lasx
void ff_add_pixels_clamped_lasx(const int16_t *block, uint8_t *restrict pixels, ptrdiff_t stride)
Definition
idctdsp_lasx.c:79
ff_put_pixels_clamped_lasx
void ff_put_pixels_clamped_lasx(const int16_t *block, uint8_t *restrict pixels, ptrdiff_t stride)
Definition
idctdsp_lasx.c:25
ff_put_signed_pixels_clamped_lasx
void ff_put_signed_pixels_clamped_lasx(const int16_t *block, uint8_t *restrict pixels, ptrdiff_t stride)
Definition
idctdsp_lasx.c:50
idctdsp_loongarch.h
ff_simple_idct_add_lasx
void ff_simple_idct_add_lasx(uint8_t *dest, ptrdiff_t stride_dst, int16_t *block)
Definition
simple_idct_lasx.c:234
ff_simple_idct_put_lasx
void ff_simple_idct_put_lasx(uint8_t *dest, ptrdiff_t stride_dst, int16_t *block)
Definition
simple_idct_lasx.c:200
ff_simple_idct_lasx
void ff_simple_idct_lasx(int16_t *block)
Definition
simple_idct_lasx.c:177
av_cold
#define av_cold
Definition
attributes.h:117
cpu_flags
static atomic_int cpu_flags
Definition
cpu.c:56
av_get_cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Definition
cpu.c:109
cpu.h
have_lasx
#define have_lasx(flags)
Definition
cpu.h:29
AVCodecContext
main external API structure.
Definition
avcodec.h:443
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition
avcodec.h:1571
AVCodecContext::idct_algo
int idct_algo
IDCT algorithm, see FF_IDCT_* below.
Definition
avcodec.h:1544
AVCodecContext::lowres
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
Definition
avcodec.h:1702
IDCTDSPContext
Definition
idctdsp.h:43
c
static double c[64]
Definition
vsrc_mptestsrc.c:89
xvididct.h
Generated on Sun Aug 16 2026 20:20:49 for FFmpeg by
1.13.2