1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * This file is part of FFmpeg.
3cabdff1aSopenharmony_ci *
4cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
5cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
6cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
7cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
8cabdff1aSopenharmony_ci *
9cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
10cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
11cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12cabdff1aSopenharmony_ci * Lesser General Public License for more details.
13cabdff1aSopenharmony_ci *
14cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
15cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
16cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17cabdff1aSopenharmony_ci */
18cabdff1aSopenharmony_ci
19cabdff1aSopenharmony_ci#ifndef AVCODEC_PROFILES_H
20cabdff1aSopenharmony_ci#define AVCODEC_PROFILES_H
21cabdff1aSopenharmony_ci
22cabdff1aSopenharmony_ci#include "avcodec.h"
23cabdff1aSopenharmony_ci#include "libavutil/opt.h"
24cabdff1aSopenharmony_ci
25cabdff1aSopenharmony_ci#define FF_AVCTX_PROFILE_OPTION(name, description, type, value) \
26cabdff1aSopenharmony_ci    {name, description, 0, AV_OPT_TYPE_CONST, {.i64 = value }, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_## type ##_PARAM, "avctx.profile"},
27cabdff1aSopenharmony_ci
28cabdff1aSopenharmony_ci#define FF_AAC_PROFILE_OPTS \
29cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_main",      NULL, AUDIO, FF_PROFILE_AAC_MAIN)\
30cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_low",       NULL, AUDIO, FF_PROFILE_AAC_LOW)\
31cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_ssr",       NULL, AUDIO, FF_PROFILE_AAC_SSR)\
32cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_ltp",       NULL, AUDIO, FF_PROFILE_AAC_LTP)\
33cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_he",        NULL, AUDIO, FF_PROFILE_AAC_HE)\
34cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_he_v2",     NULL, AUDIO, FF_PROFILE_AAC_HE_V2)\
35cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_ld",        NULL, AUDIO, FF_PROFILE_AAC_LD)\
36cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("aac_eld",       NULL, AUDIO, FF_PROFILE_AAC_ELD)\
37cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("mpeg2_aac_low", NULL, AUDIO, FF_PROFILE_MPEG2_AAC_LOW)\
38cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("mpeg2_aac_he",  NULL, AUDIO, FF_PROFILE_MPEG2_AAC_HE)\
39cabdff1aSopenharmony_ci
40cabdff1aSopenharmony_ci#define FF_MPEG4_PROFILE_OPTS \
41cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("mpeg4_sp",      NULL, VIDEO, FF_PROFILE_MPEG4_SIMPLE)\
42cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("mpeg4_core",    NULL, VIDEO, FF_PROFILE_MPEG4_CORE)\
43cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("mpeg4_main",    NULL, VIDEO, FF_PROFILE_MPEG4_MAIN)\
44cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("mpeg4_asp",     NULL, VIDEO, FF_PROFILE_MPEG4_ADVANCED_SIMPLE)\
45cabdff1aSopenharmony_ci
46cabdff1aSopenharmony_ci#define FF_MPEG2_PROFILE_OPTS \
47cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("422",           NULL, VIDEO, FF_PROFILE_MPEG2_422)\
48cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("high",          NULL, VIDEO, FF_PROFILE_MPEG2_HIGH)\
49cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("ss",            NULL, VIDEO, FF_PROFILE_MPEG2_SS)\
50cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("snr",           NULL, VIDEO, FF_PROFILE_MPEG2_SNR_SCALABLE)\
51cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("main",          NULL, VIDEO, FF_PROFILE_MPEG2_MAIN)\
52cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("simple",        NULL, VIDEO, FF_PROFILE_MPEG2_SIMPLE)\
53cabdff1aSopenharmony_ci
54cabdff1aSopenharmony_ci#define FF_AV1_PROFILE_OPTS \
55cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("main",          NULL, VIDEO, FF_PROFILE_AV1_MAIN)\
56cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("high",          NULL, VIDEO, FF_PROFILE_AV1_HIGH)\
57cabdff1aSopenharmony_ci    FF_AVCTX_PROFILE_OPTION("professional",  NULL, VIDEO, FF_PROFILE_AV1_PROFESSIONAL)\
58cabdff1aSopenharmony_ci
59cabdff1aSopenharmony_ciextern const AVProfile ff_aac_profiles[];
60cabdff1aSopenharmony_ciextern const AVProfile ff_dca_profiles[];
61cabdff1aSopenharmony_ciextern const AVProfile ff_dnxhd_profiles[];
62cabdff1aSopenharmony_ciextern const AVProfile ff_h264_profiles[];
63cabdff1aSopenharmony_ciextern const AVProfile ff_hevc_profiles[];
64cabdff1aSopenharmony_ciextern const AVProfile ff_vvc_profiles[];
65cabdff1aSopenharmony_ciextern const AVProfile ff_jpeg2000_profiles[];
66cabdff1aSopenharmony_ciextern const AVProfile ff_mpeg2_video_profiles[];
67cabdff1aSopenharmony_ciextern const AVProfile ff_mpeg4_video_profiles[];
68cabdff1aSopenharmony_ciextern const AVProfile ff_vc1_profiles[];
69cabdff1aSopenharmony_ciextern const AVProfile ff_vp9_profiles[];
70cabdff1aSopenharmony_ciextern const AVProfile ff_av1_profiles[];
71cabdff1aSopenharmony_ciextern const AVProfile ff_sbc_profiles[];
72cabdff1aSopenharmony_ciextern const AVProfile ff_prores_profiles[];
73cabdff1aSopenharmony_ciextern const AVProfile ff_mjpeg_profiles[];
74cabdff1aSopenharmony_ciextern const AVProfile ff_arib_caption_profiles[];
75cabdff1aSopenharmony_ci
76cabdff1aSopenharmony_ci#endif /* AVCODEC_PROFILES_H */
77