FFmpeg
Loading...
Searching...
No Matches
v210enc_init.c
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
20#include "libavutil/x86/cpu.h"
21#include "libavcodec/v210enc.h"
22
23void ff_v210_planar_pack_8_ssse3(const uint8_t *y, const uint8_t *u,
24 const uint8_t *v, uint8_t *dst,
25 ptrdiff_t width);
26void ff_v210_planar_pack_8_avx(const uint8_t *y, const uint8_t *u,
27 const uint8_t *v, uint8_t *dst, ptrdiff_t width);
28void ff_v210_planar_pack_8_avx2(const uint8_t *y, const uint8_t *u,
29 const uint8_t *v, uint8_t *dst, ptrdiff_t width);
30void ff_v210_planar_pack_8_avx512(const uint8_t *y, const uint8_t *u,
31 const uint8_t *v, uint8_t *dst, ptrdiff_t width);
32void ff_v210_planar_pack_8_avx512icl(const uint8_t *y, const uint8_t *u,
33 const uint8_t *v, uint8_t *dst, ptrdiff_t width);
34void ff_v210_planar_pack_10_ssse3(const uint16_t *y, const uint16_t *u,
35 const uint16_t *v, uint8_t *dst,
36 ptrdiff_t width);
37void ff_v210_planar_pack_10_avx2(const uint16_t *y, const uint16_t *u,
38 const uint16_t *v, uint8_t *dst,
39 ptrdiff_t width);
40void ff_v210_planar_pack_10_avx512(const uint16_t *y, const uint16_t *u,
41 const uint16_t *v, uint8_t *dst,
42 ptrdiff_t width);
43void ff_v210_planar_pack_10_avx512icl(const uint16_t *y, const uint16_t *u,
44 const uint16_t *v, uint8_t *dst,
45 ptrdiff_t width);
46
48{
50
52 s->pack_line_8 = ff_v210_planar_pack_8_ssse3;
53 s->pack_line_10 = ff_v210_planar_pack_10_ssse3;
54 }
55
57 s->pack_line_8 = ff_v210_planar_pack_8_avx;
58
60 s->sample_factor_8 = 2;
61 s->pack_line_8 = ff_v210_planar_pack_8_avx2;
62 s->sample_factor_10 = 2;
63 s->pack_line_10 = ff_v210_planar_pack_10_avx2;
64 }
65
67 s->sample_factor_8 = 2;
68 s->pack_line_8 = ff_v210_planar_pack_8_avx512;
69#if ARCH_X86_64
70 s->sample_factor_10 = 2;
71 s->pack_line_10 = ff_v210_planar_pack_10_avx512;
72#endif
73 }
74#if HAVE_AVX512ICL_EXTERNAL
76 s->sample_factor_8 = 4;
78 s->sample_factor_10 = 4;
79 s->pack_line_10 = ff_v210_planar_pack_10_avx512icl;
80 }
81#endif
82}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
#define s(width, name)
Definition cbs_vp9.c:198
#define u(width, name, range_min, range_max)
Definition cbs_apv.c:68
Macro definitions for various function/variable attributes.
#define av_cold
Definition attributes.h:117
static atomic_int cpu_flags
Definition cpu.c:56
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Definition cpu.c:109
#define EXTERNAL_AVX(flags)
Definition cpu.h:64
#define EXTERNAL_SSSE3(flags)
Definition cpu.h:59
#define EXTERNAL_AVX512ICL(flags)
Definition cpu.h:78
#define EXTERNAL_AVX512(flags)
Definition cpu.h:77
#define EXTERNAL_AVX2(flags)
Definition cpu.h:72
#define width
Definition dsp.h:89
void ff_v210_planar_pack_10_avx2(const uint16_t *y, const uint16_t *u, const uint16_t *v, uint8_t *dst, ptrdiff_t width)
av_cold void ff_v210enc_init_x86(V210EncContext *s)
void ff_v210_planar_pack_8_avx512(const uint8_t *y, const uint8_t *u, const uint8_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_10_avx512(const uint16_t *y, const uint16_t *u, const uint16_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_8_avx2(const uint8_t *y, const uint8_t *u, const uint8_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_10_ssse3(const uint16_t *y, const uint16_t *u, const uint16_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_8_ssse3(const uint8_t *y, const uint8_t *u, const uint8_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_10_avx512icl(const uint16_t *y, const uint16_t *u, const uint16_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_8_avx(const uint8_t *y, const uint8_t *u, const uint8_t *v, uint8_t *dst, ptrdiff_t width)
void ff_v210_planar_pack_8_avx512icl(const uint8_t *y, const uint8_t *u, const uint8_t *v, uint8_t *dst, ptrdiff_t width)