• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (c) 2016, Alliance for Open Media. All rights reserved.
3#
4# This source code is subject to the terms of the BSD 2 Clause License and the
5# Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was
6# not distributed with this source code in the LICENSE file, you can obtain it
7# at www.aomedia.org/license/software. If the Alliance for Open Media Patent
8# License 1.0 was not distributed with this source code in the PATENTS file, you
9# can obtain it at www.aomedia.org/license/patent.
10
11include("${AOM_ROOT}/build/cmake/util.cmake")
12
13# This file sets default values for libaom configuration variables. All libaom
14# config variables are added to the CMake variable cache via the macros provided
15# in util.cmake.
16
17#
18# The variables in this section of the file are detected at configuration time,
19# but can be overridden via the use of CONFIG_* and ENABLE_* values also defined
20# in this file.
21#
22
23# CPUs.
24set_aom_detect_var(AOM_ARCH_AARCH64 0 "Enables AArch64 architecture.")
25set_aom_detect_var(AOM_ARCH_ARM 0 "Enables ARM architecture.")
26set_aom_detect_var(AOM_ARCH_PPC 0 "Enables PPC architecture.")
27set_aom_detect_var(AOM_ARCH_X86 0 "Enables X86 architecture.")
28set_aom_detect_var(AOM_ARCH_X86_64 0 "Enables X86_64 architecture.")
29set_aom_detect_var(AOM_ARCH_RISCV 0 "Enables RISC-V architecture.")
30
31# Arm/AArch64 feature flags.
32set_aom_detect_var(HAVE_NEON 0 "Enables Neon intrinsics optimizations.")
33set_aom_detect_var(HAVE_ARM_CRC32 0 "Enables Arm CRC32 optimizations.")
34set_aom_detect_var(HAVE_NEON_DOTPROD 0
35                   "Enables Armv8.2-A Neon dotprod intrinsics optimizations.")
36set_aom_detect_var(HAVE_NEON_I8MM 0
37                   "Enables Armv8.2-A Neon i8mm intrinsics optimizations.")
38set_aom_detect_var(HAVE_SVE 0 "Enables Armv8.2-A SVE intrinsics optimizations.")
39set_aom_detect_var(HAVE_SVE2 0 "Enables Armv9-A SVE2 intrinsics optimizations.")
40
41# PPC feature flags.
42set_aom_detect_var(HAVE_VSX 0 "Enables VSX optimizations.")
43
44# x86/x86_64 feature flags.
45set_aom_detect_var(HAVE_MMX 0 "Enables MMX optimizations. ")
46set_aom_detect_var(HAVE_SSE 0 "Enables SSE optimizations.")
47set_aom_detect_var(HAVE_SSE2 0 "Enables SSE2 optimizations.")
48set_aom_detect_var(HAVE_SSE3 0 "Enables SSE3 optimizations.")
49set_aom_detect_var(HAVE_SSSE3 0 "Enables SSSE3 optimizations.")
50set_aom_detect_var(HAVE_SSE4_1 0 "Enables SSE 4.1 optimizations.")
51set_aom_detect_var(HAVE_SSE4_2 0 "Enables SSE 4.2 optimizations.")
52set_aom_detect_var(HAVE_AVX 0 "Enables AVX optimizations.")
53set_aom_detect_var(HAVE_AVX2 0 "Enables AVX2 optimizations.")
54
55# RISC-V64 feature flags.
56set_aom_detect_var(HAVE_RVV 0 "Enables RVV optimizations.")
57
58# Flags describing the build environment.
59set_aom_detect_var(HAVE_FEXCEPT 0
60                   "Internal flag, GNU fenv.h present for target.")
61set_aom_detect_var(HAVE_PTHREAD_H 0 "Internal flag, target pthread support.")
62set_aom_detect_var(HAVE_UNISTD_H 0
63                   "Internal flag, unistd.h present for target.")
64set_aom_detect_var(HAVE_WXWIDGETS 0 "WxWidgets present.")
65
66#
67# Variables in this section can be set from the CMake command line or from
68# within the CMake GUI. The variables control libaom features.
69#
70
71# Build configuration flags.
72set_aom_config_var(AOM_RTCD_FLAGS ""
73                   "Arguments to pass to rtcd.pl. Separate with ';'")
74set_aom_config_var(CONFIG_AV1_DECODER 1 "Enable AV1 decoder.")
75set_aom_config_var(CONFIG_AV1_ENCODER 1 "Enable AV1 encoder.")
76set_aom_config_var(CONFIG_BIG_ENDIAN 0 "Internal flag.")
77set_aom_config_var(CONFIG_FPMT_TEST 0 "Enable FPMT testing.")
78set_aom_config_var(CONFIG_GCC 0 "Building with GCC (detect).")
79set_aom_config_var(CONFIG_GCOV 0 "Enable gcov support.")
80set_aom_config_var(CONFIG_GPROF 0 "Enable gprof support.")
81set_aom_config_var(CONFIG_LIBYUV 1 "Enables libyuv scaling/conversion support.")
82# Set CONFIG_SVT_AV1 to 0 to avoid the BSD 3-Clause Clear License used by the
83# code in third_party/SVT-AV1/.
84set_aom_config_var(CONFIG_SVT_AV1 1 "Enables SVT-AV1 AVX2 convolution support.")
85
86set_aom_config_var(CONFIG_AV1_HIGHBITDEPTH 1
87                   "Build with high bitdepth support.")
88set_aom_config_var(CONFIG_AV1_TEMPORAL_DENOISING 0
89                   "Build with temporal denoising support.")
90set_aom_config_var(CONFIG_MULTITHREAD 1 "Multithread support.")
91set_aom_config_var(CONFIG_OS_SUPPORT 0 "Internal flag.")
92set_aom_config_var(CONFIG_PIC 0 "Build with PIC enabled.")
93set_aom_config_var(CONFIG_QUANT_MATRIX 1
94                   "Build with quantization matrices for AV1 encoder."
95                   "AV1 decoder is always built with quantization matrices.")
96set_aom_config_var(CONFIG_REALTIME_ONLY 0
97                   "Build for RTC-only. See aomcx.h for all disabled features.")
98set_aom_config_var(CONFIG_RUNTIME_CPU_DETECT 1 "Runtime CPU detection support.")
99set_aom_config_var(CONFIG_SHARED 0 "Build shared libs.")
100set_aom_config_var(CONFIG_WEBM_IO 1 "Enables WebM support.")
101
102# Debugging flags.
103set_aom_config_var(CONFIG_DEBUG 0 "Enable debug-only code.")
104set_aom_config_var(CONFIG_EXCLUDE_SIMD_MISMATCH 0
105                   "Exclude mismatch in SIMD functions for testing/debugging.")
106set_aom_config_var(CONFIG_MISMATCH_DEBUG 0 "Mismatch debugging flag.")
107
108# AV1 feature flags.
109set_aom_config_var(CONFIG_ACCOUNTING 0 "Enables bit accounting.")
110set_aom_config_var(CONFIG_ANALYZER 0 "Enables bit stream analyzer.")
111set_aom_config_var(CONFIG_COEFFICIENT_RANGE_CHECKING 0
112                   "Coefficient range check.")
113set_aom_config_var(CONFIG_DENOISE 1
114                   "Denoise/noise modeling support in encoder.")
115set_aom_config_var(CONFIG_INSPECTION 0 "Enables bitstream inspection.")
116set_aom_config_var(CONFIG_INTERNAL_STATS 0 "Enables internal encoder stats.")
117set_aom_config_var(FORCE_HIGHBITDEPTH_DECODING 0
118                   "Force high bitdepth decoding pipeline on 8-bit input.")
119mark_as_advanced(FORCE_HIGHBITDEPTH_DECODING)
120set_aom_config_var(CONFIG_MAX_DECODE_PROFILE 2
121                   "Max profile to support decoding.")
122set_aom_config_var(
123  CONFIG_NORMAL_TILE_MODE 0
124  "Only enables general decoding (disables large scale tile decoding).")
125set_aom_config_var(CONFIG_SIZE_LIMIT 0 "Limit max decode width/height.")
126set_aom_config_var(CONFIG_TUNE_BUTTERAUGLI 0
127                   "Enable encoding tuning for Butteraugli.")
128set_aom_config_var(CONFIG_TUNE_VMAF 0 "Enable encoding tuning for VMAF.")
129set_aom_config_var(DECODE_HEIGHT_LIMIT 0 "Set limit for decode height.")
130set_aom_config_var(DECODE_WIDTH_LIMIT 0 "Set limit for decode width.")
131set_aom_config_var(STATIC_LINK_JXL 0 "Statically link the JPEG-XL library.")
132
133# AV1 experiment flags.
134set_aom_config_var(CONFIG_BITRATE_ACCURACY 0
135                   "AV1 experiment: Improve bitrate accuracy.")
136set_aom_config_var(
137  CONFIG_BITRATE_ACCURACY_BL 0
138  "AV1 experiment: Baseline of improve bitrate accuracy experiment.")
139set_aom_config_var(CONFIG_BITSTREAM_DEBUG 0
140                   "AV1 experiment: Bitstream debugging.")
141set_aom_config_var(
142  CONFIG_COLLECT_COMPONENT_TIMING 0
143  "AV1 experiment: Collect encoding component timing information.")
144set_aom_config_var(
145  CONFIG_COLLECT_PARTITION_STATS 0
146  "AV1 experiment: Collect partition timing stats. Can be 1 or 2.")
147set_aom_config_var(CONFIG_COLLECT_RD_STATS 0 "AV1 experiment.")
148set_aom_config_var(
149  CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1
150  "AV1 experiment: Disable full_pixel_motion_search_based_split on BLOCK_8X8.")
151set_aom_config_var(CONFIG_ENTROPY_STATS 0 "AV1 experiment.")
152set_aom_config_var(CONFIG_INTER_STATS_ONLY 0 "AV1 experiment.")
153set_aom_config_var(CONFIG_NN_V2 0
154                   "AV1 experiment: Fully-connected neural nets ver.2.")
155set_aom_config_var(CONFIG_OPTICAL_FLOW_API 0
156                   "AV1 experiment: for optical flow API.")
157set_aom_config_var(CONFIG_PARTITION_SEARCH_ORDER 0
158                   "AV1 experiment: Use alternative partition search order.")
159set_aom_config_var(CONFIG_RATECTRL_LOG 0
160                   "AV1 experiment: Log rate control decision.")
161set_aom_config_var(CONFIG_RD_COMMAND 0
162                   "AV1 experiment: Use external rdmult and q_index.")
163set_aom_config_var(CONFIG_RD_DEBUG 0 "AV1 experiment.")
164set_aom_config_var(
165  CONFIG_RT_ML_PARTITIONING 0
166  "AV1 experiment: Build with ML-based partitioning for Real Time.")
167set_aom_config_var(CONFIG_SPEED_STATS 0 "AV1 experiment.")
168set_aom_config_var(CONFIG_TFLITE 0
169                   "AV1 experiment: Enable tensorflow lite library.")
170set_aom_config_var(CONFIG_THREE_PASS 0
171                   "AV1 experiment: Enable three-pass encoding.")
172set_aom_config_var(CONFIG_OUTPUT_FRAME_SIZE 0
173                   "AV1 experiment: Output frame size information.")
174set_aom_config_var(
175  CONFIG_SALIENCY_MAP 0
176  "AV1 experiment: Enable saliency map based encoding tuning for VMAF.")
177set_aom_config_var(CONFIG_CWG_C013 0
178                   "AV1 experiment: Support for 7.x and 8.x levels.")
179set_aom_config_var(CONFIG_CWG_E050 0
180                   "AV1 experiment: Support for multilayer metadata OBU.")
181# Add this change to make aomenc reported PSNR consistent with libvmaf result.
182set_aom_config_var(CONFIG_LIBVMAF_PSNR_PEAK 1
183                   "Use libvmaf PSNR peak for 10- and 12-bit")
184
185#
186# Variables in this section control optional features of the build system.
187#
188set_aom_option_var(ENABLE_CCACHE "Enable ccache support." OFF)
189set_aom_option_var(ENABLE_DECODE_PERF_TESTS "Enables decoder performance tests"
190                   OFF)
191set_aom_option_var(ENABLE_DISTCC "Enable distcc support." OFF)
192set_aom_option_var(ENABLE_DOCS
193                   "Enable documentation generation (doxygen required)." ON)
194set_aom_option_var(ENABLE_ENCODE_PERF_TESTS "Enables encoder performance tests"
195                   OFF)
196set_aom_option_var(ENABLE_EXAMPLES "Enables build of example code." ON)
197set_aom_option_var(ENABLE_GOMA "Enable goma support." OFF)
198set_aom_option_var(
199  ENABLE_IDE_TEST_HOSTING
200  "Enables running tests within IDEs like Visual Studio and Xcode." OFF)
201set_aom_option_var(ENABLE_NASM "Use nasm instead of yasm for x86 assembly." OFF)
202set_aom_option_var(ENABLE_TESTDATA "Enables unit test data download targets."
203                   ON)
204set_aom_option_var(ENABLE_TESTS "Enables unit tests." ON)
205set_aom_option_var(ENABLE_TOOLS "Enable applications in tools sub directory."
206                   ON)
207set_aom_option_var(ENABLE_WERROR "Converts warnings to errors at compile time."
208                   OFF)
209
210# Arm/AArch64 assembly/intrinsics flags.
211set_aom_option_var(ENABLE_NEON
212                   "Enables Neon optimizations on Arm/AArch64 targets." ON)
213set_aom_option_var(ENABLE_ARM_CRC32 "Enables Arm CRC32 optimizations." ON)
214set_aom_option_var(
215  ENABLE_NEON_DOTPROD
216  "Enables Armv8.2-A Neon dotprod optimizations on AArch64 targets." ON)
217set_aom_option_var(
218  ENABLE_NEON_I8MM
219  "Enables Armv8.2-A Neon i8mm optimizations on AArch64 targets." ON)
220set_aom_option_var(ENABLE_SVE
221                   "Enables Armv8.2-A SVE optimizations on AArch64 targets." ON)
222set_aom_option_var(ENABLE_SVE2
223                   "Enables Armv9-A SVE2 optimizations on AArch64 targets." ON)
224
225# VSX intrinsics flags.
226set_aom_option_var(ENABLE_VSX "Enables VSX optimizations on PowerPC targets."
227                   ON)
228
229# x86/x86_64 assembly/intrinsics flags.
230set_aom_option_var(ENABLE_MMX "Enables MMX optimizations on x86/x86_64 targets."
231                   ON)
232set_aom_option_var(ENABLE_SSE "Enables SSE optimizations on x86/x86_64 targets."
233                   ON)
234set_aom_option_var(ENABLE_SSE2
235                   "Enables SSE2 optimizations on x86/x86_64 targets." ON)
236set_aom_option_var(ENABLE_SSE3
237                   "Enables SSE3 optimizations on x86/x86_64 targets." ON)
238set_aom_option_var(ENABLE_SSSE3
239                   "Enables SSSE3 optimizations on x86/x86_64 targets." ON)
240set_aom_option_var(ENABLE_SSE4_1
241                   "Enables SSE4_1 optimizations on x86/x86_64 targets." ON)
242set_aom_option_var(ENABLE_SSE4_2
243                   "Enables SSE4_2 optimizations on x86/x86_64 targets." ON)
244set_aom_option_var(ENABLE_AVX "Enables AVX optimizations on x86/x86_64 targets."
245                   ON)
246set_aom_option_var(ENABLE_AVX2
247                   "Enables AVX2 optimizations on x86/x86_64 targets." ON)
248
249# RVV intrinsics flags.
250set_aom_option_var(ENABLE_RVV "Enables RVV optimizations on RISC-V targets." ON)
251