hadamard: Add 4x4 test.
[aom.git] / av1 / av1.cmake
blob18860837b499e020ded188c39d817e17a2d4c08c
2 # Copyright (c) 2017, Alliance for Open Media. All rights reserved
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.
11 if(AOM_AV1_AV1_CMAKE_)
12   return()
13 endif() # AOM_AV1_AV1_CMAKE_
14 set(AOM_AV1_AV1_CMAKE_ 1)
16 list(APPEND AOM_AV1_COMMON_SOURCES
17             "${AOM_ROOT}/common/args_helper.h"
18             "${AOM_ROOT}/common/args_helper.c"
19             "${AOM_ROOT}/av1/arg_defs.h"
20             "${AOM_ROOT}/av1/arg_defs.c"
21             "${AOM_ROOT}/av1/av1_iface_common.h"
22             "${AOM_ROOT}/av1/common/alloccommon.c"
23             "${AOM_ROOT}/av1/common/alloccommon.h"
24             "${AOM_ROOT}/av1/common/av1_common_int.h"
25             "${AOM_ROOT}/av1/common/av1_inv_txfm1d.c"
26             "${AOM_ROOT}/av1/common/av1_inv_txfm1d.h"
27             "${AOM_ROOT}/av1/common/av1_inv_txfm1d_cfg.h"
28             "${AOM_ROOT}/av1/common/av1_inv_txfm2d.c"
29             "${AOM_ROOT}/av1/common/av1_loopfilter.c"
30             "${AOM_ROOT}/av1/common/av1_loopfilter.h"
31             "${AOM_ROOT}/av1/common/av1_txfm.c"
32             "${AOM_ROOT}/av1/common/av1_txfm.h"
33             "${AOM_ROOT}/av1/common/blockd.c"
34             "${AOM_ROOT}/av1/common/blockd.h"
35             "${AOM_ROOT}/av1/common/cdef.c"
36             "${AOM_ROOT}/av1/common/cdef.h"
37             "${AOM_ROOT}/av1/common/cdef_block.c"
38             "${AOM_ROOT}/av1/common/cdef_block.h"
39             "${AOM_ROOT}/av1/common/cfl.c"
40             "${AOM_ROOT}/av1/common/cfl.h"
41             "${AOM_ROOT}/av1/common/common.h"
42             "${AOM_ROOT}/av1/common/common_data.h"
43             "${AOM_ROOT}/av1/common/convolve.c"
44             "${AOM_ROOT}/av1/common/convolve.h"
45             "${AOM_ROOT}/av1/common/debugmodes.c"
46             "${AOM_ROOT}/av1/common/entropy.c"
47             "${AOM_ROOT}/av1/common/entropy.h"
48             "${AOM_ROOT}/av1/common/entropymode.c"
49             "${AOM_ROOT}/av1/common/entropymode.h"
50             "${AOM_ROOT}/av1/common/entropymv.c"
51             "${AOM_ROOT}/av1/common/entropymv.h"
52             "${AOM_ROOT}/av1/common/enums.h"
53             "${AOM_ROOT}/av1/common/filter.h"
54             "${AOM_ROOT}/av1/common/frame_buffers.c"
55             "${AOM_ROOT}/av1/common/frame_buffers.h"
56             "${AOM_ROOT}/av1/common/idct.c"
57             "${AOM_ROOT}/av1/common/idct.h"
58             "${AOM_ROOT}/av1/common/mv.h"
59             "${AOM_ROOT}/av1/common/mvref_common.c"
60             "${AOM_ROOT}/av1/common/mvref_common.h"
61             "${AOM_ROOT}/av1/common/obu_util.c"
62             "${AOM_ROOT}/av1/common/obu_util.h"
63             "${AOM_ROOT}/av1/common/pred_common.c"
64             "${AOM_ROOT}/av1/common/pred_common.h"
65             "${AOM_ROOT}/av1/common/quant_common.c"
66             "${AOM_ROOT}/av1/common/quant_common.h"
67             "${AOM_ROOT}/av1/common/reconinter.c"
68             "${AOM_ROOT}/av1/common/reconinter.h"
69             "${AOM_ROOT}/av1/common/reconintra.c"
70             "${AOM_ROOT}/av1/common/reconintra.h"
71             "${AOM_ROOT}/av1/common/resize.c"
72             "${AOM_ROOT}/av1/common/resize.h"
73             "${AOM_ROOT}/av1/common/restoration.c"
74             "${AOM_ROOT}/av1/common/restoration.h"
75             "${AOM_ROOT}/av1/common/scale.c"
76             "${AOM_ROOT}/av1/common/scale.h"
77             "${AOM_ROOT}/av1/common/scan.c"
78             "${AOM_ROOT}/av1/common/scan.h"
79             "${AOM_ROOT}/av1/common/seg_common.c"
80             "${AOM_ROOT}/av1/common/seg_common.h"
81             "${AOM_ROOT}/av1/common/thread_common.c"
82             "${AOM_ROOT}/av1/common/thread_common.h"
83             "${AOM_ROOT}/av1/common/tile_common.c"
84             "${AOM_ROOT}/av1/common/tile_common.h"
85             "${AOM_ROOT}/av1/common/timing.c"
86             "${AOM_ROOT}/av1/common/timing.h"
87             "${AOM_ROOT}/av1/common/token_cdfs.h"
88             "${AOM_ROOT}/av1/common/txb_common.c"
89             "${AOM_ROOT}/av1/common/txb_common.h"
90             "${AOM_ROOT}/av1/common/warped_motion.c"
91             "${AOM_ROOT}/av1/common/warped_motion.h")
93 if(CONFIG_REALTIME_ONLY)
94   list(REMOVE_ITEM AOM_AV1_COMMON_SOURCES "${AOM_ROOT}/av1/common/restoration.c"
95                    "${AOM_ROOT}/av1/common/restoration.h"
96                    "${AOM_ROOT}/av1/common/warped_motion.c"
97                    "${AOM_ROOT}/av1/common/warped_motion.h")
98 endif()
100 list(APPEND AOM_AV1_DECODER_SOURCES
101             "${AOM_ROOT}/av1/av1_dx_iface.c"
102             "${AOM_ROOT}/av1/decoder/decodeframe.c"
103             "${AOM_ROOT}/av1/decoder/decodeframe.h"
104             "${AOM_ROOT}/av1/decoder/decodemv.c"
105             "${AOM_ROOT}/av1/decoder/decodemv.h"
106             "${AOM_ROOT}/av1/decoder/decoder.c"
107             "${AOM_ROOT}/av1/decoder/decoder.h"
108             "${AOM_ROOT}/av1/decoder/decodetxb.c"
109             "${AOM_ROOT}/av1/decoder/decodetxb.h"
110             "${AOM_ROOT}/av1/decoder/detokenize.c"
111             "${AOM_ROOT}/av1/decoder/detokenize.h"
112             "${AOM_ROOT}/av1/decoder/dthread.h"
113             "${AOM_ROOT}/av1/decoder/grain_synthesis.c"
114             "${AOM_ROOT}/av1/decoder/grain_synthesis.h"
115             "${AOM_ROOT}/av1/decoder/obu.h"
116             "${AOM_ROOT}/av1/decoder/obu.c")
118 list(APPEND AOM_AV1_ENCODER_SOURCES
119             "${AOM_ROOT}/av1/av1_cx_iface.c"
120             "${AOM_ROOT}/av1/encoder/aq_complexity.c"
121             "${AOM_ROOT}/av1/encoder/aq_complexity.h"
122             "${AOM_ROOT}/av1/encoder/aq_cyclicrefresh.c"
123             "${AOM_ROOT}/av1/encoder/aq_cyclicrefresh.h"
124             "${AOM_ROOT}/av1/encoder/aq_variance.c"
125             "${AOM_ROOT}/av1/encoder/aq_variance.h"
126             "${AOM_ROOT}/av1/encoder/allintra_vis.c"
127             "${AOM_ROOT}/av1/encoder/allintra_vis.h"
128             "${AOM_ROOT}/av1/encoder/enc_enums.h"
129             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm1d.c"
130             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm1d.h"
131             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm1d_cfg.h"
132             "${AOM_ROOT}/av1/encoder/av1_fwd_txfm2d.c"
133             "${AOM_ROOT}/av1/encoder/av1_quantize.c"
134             "${AOM_ROOT}/av1/encoder/av1_quantize.h"
135             "${AOM_ROOT}/av1/encoder/bitstream.c"
136             "${AOM_ROOT}/av1/encoder/bitstream.h"
137             "${AOM_ROOT}/av1/encoder/block.h"
138             "${AOM_ROOT}/av1/encoder/cnn.c"
139             "${AOM_ROOT}/av1/encoder/cnn.h"
140             "${AOM_ROOT}/av1/encoder/compound_type.c"
141             "${AOM_ROOT}/av1/encoder/compound_type.h"
142             "${AOM_ROOT}/av1/encoder/context_tree.c"
143             "${AOM_ROOT}/av1/encoder/context_tree.h"
144             "${AOM_ROOT}/av1/encoder/corner_detect.c"
145             "${AOM_ROOT}/av1/encoder/corner_detect.h"
146             "${AOM_ROOT}/av1/encoder/corner_match.c"
147             "${AOM_ROOT}/av1/encoder/corner_match.h"
148             "${AOM_ROOT}/av1/encoder/cost.c"
149             "${AOM_ROOT}/av1/encoder/cost.h"
150             "${AOM_ROOT}/av1/encoder/encodeframe.c"
151             "${AOM_ROOT}/av1/encoder/encodeframe.h"
152             "${AOM_ROOT}/av1/encoder/encodeframe_utils.c"
153             "${AOM_ROOT}/av1/encoder/encodeframe_utils.h"
154             "${AOM_ROOT}/av1/encoder/encodemb.c"
155             "${AOM_ROOT}/av1/encoder/encodemb.h"
156             "${AOM_ROOT}/av1/encoder/encodemv.c"
157             "${AOM_ROOT}/av1/encoder/encodemv.h"
158             "${AOM_ROOT}/av1/encoder/encode_strategy.c"
159             "${AOM_ROOT}/av1/encoder/encode_strategy.h"
160             "${AOM_ROOT}/av1/encoder/encoder.c"
161             "${AOM_ROOT}/av1/encoder/encoder.h"
162             "${AOM_ROOT}/av1/encoder/encoder_alloc.h"
163             "${AOM_ROOT}/av1/encoder/encoder_utils.c"
164             "${AOM_ROOT}/av1/encoder/encoder_utils.h"
165             "${AOM_ROOT}/av1/encoder/encodetxb.c"
166             "${AOM_ROOT}/av1/encoder/encodetxb.h"
167             "${AOM_ROOT}/av1/encoder/ethread.c"
168             "${AOM_ROOT}/av1/encoder/ethread.h"
169             "${AOM_ROOT}/av1/encoder/extend.c"
170             "${AOM_ROOT}/av1/encoder/extend.h"
171             "${AOM_ROOT}/av1/encoder/external_partition.c"
172             "${AOM_ROOT}/av1/encoder/external_partition.h"
173             "${AOM_ROOT}/av1/encoder/firstpass.c"
174             "${AOM_ROOT}/av1/encoder/firstpass.h"
175             "${AOM_ROOT}/av1/encoder/global_motion.c"
176             "${AOM_ROOT}/av1/encoder/global_motion.h"
177             "${AOM_ROOT}/av1/encoder/global_motion_facade.c"
178             "${AOM_ROOT}/av1/encoder/global_motion_facade.h"
179             "${AOM_ROOT}/av1/encoder/gop_structure.c"
180             "${AOM_ROOT}/av1/encoder/gop_structure.h"
181             "${AOM_ROOT}/av1/encoder/grain_test_vectors.h"
182             "${AOM_ROOT}/av1/encoder/hash.c"
183             "${AOM_ROOT}/av1/encoder/hash.h"
184             "${AOM_ROOT}/av1/encoder/hash_motion.c"
185             "${AOM_ROOT}/av1/encoder/hash_motion.h"
186             "${AOM_ROOT}/av1/encoder/hybrid_fwd_txfm.c"
187             "${AOM_ROOT}/av1/encoder/hybrid_fwd_txfm.h"
188             "${AOM_ROOT}/av1/encoder/interp_search.c"
189             "${AOM_ROOT}/av1/encoder/interp_search.h"
190             "${AOM_ROOT}/av1/encoder/level.c"
191             "${AOM_ROOT}/av1/encoder/level.h"
192             "${AOM_ROOT}/av1/encoder/lookahead.c"
193             "${AOM_ROOT}/av1/encoder/lookahead.h"
194             "${AOM_ROOT}/av1/encoder/mcomp.c"
195             "${AOM_ROOT}/av1/encoder/mcomp.h"
196             "${AOM_ROOT}/av1/encoder/ml.c"
197             "${AOM_ROOT}/av1/encoder/ml.h"
198             "${AOM_ROOT}/av1/encoder/model_rd.h"
199             "${AOM_ROOT}/av1/encoder/motion_search_facade.c"
200             "${AOM_ROOT}/av1/encoder/motion_search_facade.h"
201             "${AOM_ROOT}/av1/encoder/mv_prec.c"
202             "${AOM_ROOT}/av1/encoder/mv_prec.h"
203             "${AOM_ROOT}/av1/encoder/palette.c"
204             "${AOM_ROOT}/av1/encoder/palette.h"
205             "${AOM_ROOT}/av1/encoder/partition_search.h"
206             "${AOM_ROOT}/av1/encoder/partition_search.c"
207             "${AOM_ROOT}/av1/encoder/partition_strategy.h"
208             "${AOM_ROOT}/av1/encoder/partition_strategy.c"
209             "${AOM_ROOT}/av1/encoder/pass2_strategy.h"
210             "${AOM_ROOT}/av1/encoder/pass2_strategy.c"
211             "${AOM_ROOT}/av1/encoder/pickcdef.c"
212             "${AOM_ROOT}/av1/encoder/pickcdef.h"
213             "${AOM_ROOT}/av1/encoder/picklpf.c"
214             "${AOM_ROOT}/av1/encoder/picklpf.h"
215             "${AOM_ROOT}/av1/encoder/pickrst.c"
216             "${AOM_ROOT}/av1/encoder/pickrst.h"
217             "${AOM_ROOT}/av1/encoder/ransac.c"
218             "${AOM_ROOT}/av1/encoder/ransac.h"
219             "${AOM_ROOT}/av1/encoder/ratectrl.c"
220             "${AOM_ROOT}/av1/encoder/ratectrl.h"
221             "${AOM_ROOT}/av1/encoder/rc_utils.h"
222             "${AOM_ROOT}/av1/encoder/rd.c"
223             "${AOM_ROOT}/av1/encoder/rd.h"
224             "${AOM_ROOT}/av1/encoder/rdopt.c"
225             "${AOM_ROOT}/av1/encoder/nonrd_pickmode.c"
226             "${AOM_ROOT}/av1/encoder/rdopt.h"
227             "${AOM_ROOT}/av1/encoder/rdopt_data_defs.h"
228             "${AOM_ROOT}/av1/encoder/rdopt_utils.h"
229             "${AOM_ROOT}/av1/encoder/reconinter_enc.c"
230             "${AOM_ROOT}/av1/encoder/reconinter_enc.h"
231             "${AOM_ROOT}/av1/encoder/segmentation.c"
232             "${AOM_ROOT}/av1/encoder/segmentation.h"
233             "${AOM_ROOT}/av1/encoder/sorting_network.h"
234             "${AOM_ROOT}/av1/encoder/speed_features.c"
235             "${AOM_ROOT}/av1/encoder/speed_features.h"
236             "${AOM_ROOT}/av1/encoder/superres_scale.c"
237             "${AOM_ROOT}/av1/encoder/superres_scale.h"
238             "${AOM_ROOT}/av1/encoder/svc_layercontext.c"
239             "${AOM_ROOT}/av1/encoder/svc_layercontext.h"
240             "${AOM_ROOT}/av1/encoder/temporal_filter.c"
241             "${AOM_ROOT}/av1/encoder/temporal_filter.h"
242             "${AOM_ROOT}/av1/encoder/thirdpass.c"
243             "${AOM_ROOT}/av1/encoder/thirdpass.h"
244             "${AOM_ROOT}/av1/encoder/tokenize.c"
245             "${AOM_ROOT}/av1/encoder/tokenize.h"
246             "${AOM_ROOT}/av1/encoder/tpl_model.c"
247             "${AOM_ROOT}/av1/encoder/tpl_model.h"
248             "${AOM_ROOT}/av1/encoder/tx_search.c"
249             "${AOM_ROOT}/av1/encoder/tx_search.h"
250             "${AOM_ROOT}/av1/encoder/txb_rdopt.c"
251             "${AOM_ROOT}/av1/encoder/txb_rdopt.h"
252             "${AOM_ROOT}/av1/encoder/txb_rdopt_utils.h"
253             "${AOM_ROOT}/av1/encoder/intra_mode_search.c"
254             "${AOM_ROOT}/av1/encoder/intra_mode_search.h"
255             "${AOM_ROOT}/av1/encoder/intra_mode_search_utils.h"
256             "${AOM_ROOT}/av1/encoder/wedge_utils.c"
257             "${AOM_ROOT}/av1/encoder/var_based_part.c"
258             "${AOM_ROOT}/av1/encoder/var_based_part.h"
259             "${AOM_ROOT}/av1/encoder/av1_noise_estimate.c"
260             "${AOM_ROOT}/av1/encoder/av1_noise_estimate.h"
261             "${AOM_ROOT}/third_party/fastfeat/fast.c"
262             "${AOM_ROOT}/third_party/fastfeat/fast.h"
263             "${AOM_ROOT}/third_party/fastfeat/fast_9.c"
264             "${AOM_ROOT}/third_party/fastfeat/nonmax.c"
265             "${AOM_ROOT}/third_party/vector/vector.c"
266             "${AOM_ROOT}/third_party/vector/vector.h"
267             "${AOM_ROOT}/av1/encoder/dwt.c"
268             "${AOM_ROOT}/av1/encoder/dwt.h")
270 if(CONFIG_TUNE_VMAF)
271   list(APPEND AOM_AV1_ENCODER_SOURCES "${AOM_ROOT}/av1/encoder/tune_vmaf.c"
272               "${AOM_ROOT}/av1/encoder/tune_vmaf.h")
273 endif()
275 if(CONFIG_TUNE_BUTTERAUGLI)
276   list(APPEND AOM_AV1_ENCODER_SOURCES
277               "${AOM_ROOT}/av1/encoder/tune_butteraugli.c"
278               "${AOM_ROOT}/av1/encoder/tune_butteraugli.h")
279 endif()
281 if(CONFIG_OPTICAL_FLOW_API)
282   list(APPEND AOM_AV1_ENCODER_SOURCES
283               "${AOM_ROOT}/av1/encoder/sparse_linear_solver.c"
284               "${AOM_ROOT}/av1/encoder/sparse_linear_solver.h"
285               "${AOM_ROOT}/av1/encoder/optical_flow.c"
286               "${AOM_ROOT}/av1/encoder/optical_flow.h")
287 endif()
289 if(CONFIG_AV1_TEMPORAL_DENOISING)
290   list(APPEND AOM_AV1_ENCODER_SOURCES
291               "${AOM_ROOT}/av1/encoder/av1_temporal_denoiser.c"
292               "${AOM_ROOT}/av1/encoder/av1_temporal_denoiser.h")
293 endif()
295 list(APPEND AOM_AV1_COMMON_INTRIN_SSE2
296             "${AOM_ROOT}/av1/common/cdef_block_sse2.c"
297             "${AOM_ROOT}/av1/common/x86/cfl_sse2.c"
298             "${AOM_ROOT}/av1/common/x86/convolve_2d_sse2.c"
299             "${AOM_ROOT}/av1/common/x86/convolve_sse2.c"
300             "${AOM_ROOT}/av1/common/x86/jnt_convolve_sse2.c"
301             "${AOM_ROOT}/av1/common/x86/wiener_convolve_sse2.c"
302             "${AOM_ROOT}/av1/common/x86/av1_txfm_sse2.h"
303             "${AOM_ROOT}/av1/common/x86/warp_plane_sse2.c")
305 if(CONFIG_REALTIME_ONLY)
306   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE2
307                    "${AOM_ROOT}/av1/common/x86/warp_plane_sse2.c")
308 endif()
310 list(APPEND AOM_AV1_COMMON_INTRIN_SSSE3
311             "${AOM_ROOT}/av1/common/cdef_block_ssse3.c"
312             "${AOM_ROOT}/av1/common/x86/av1_inv_txfm_ssse3.c"
313             "${AOM_ROOT}/av1/common/x86/av1_inv_txfm_ssse3.h"
314             "${AOM_ROOT}/av1/common/x86/cfl_ssse3.c"
315             "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_ssse3.c"
316             "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_ssse3.c"
317             "${AOM_ROOT}/av1/common/x86/jnt_convolve_ssse3.c"
318             "${AOM_ROOT}/av1/common/x86/reconinter_ssse3.c"
319             "${AOM_ROOT}/av1/common/x86/resize_ssse3.c")
321 if(NOT CONFIG_AV1_HIGHBITDEPTH)
322   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSSE3
323                    "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_ssse3.c"
324                    "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_ssse3.c"
325                    "${AOM_ROOT}/av1/common/x86/reconinter_ssse3.c")
326 endif()
328 list(APPEND AOM_AV1_COMMON_INTRIN_SSE4_1
329             "${AOM_ROOT}/av1/common/cdef_block_sse4.c"
330             "${AOM_ROOT}/av1/common/x86/av1_convolve_horiz_rs_sse4.c"
331             "${AOM_ROOT}/av1/common/x86/av1_convolve_scale_sse4.c"
332             "${AOM_ROOT}/av1/common/x86/av1_txfm_sse4.c"
333             "${AOM_ROOT}/av1/common/x86/av1_txfm_sse4.h"
334             "${AOM_ROOT}/av1/common/x86/filterintra_sse4.c"
335             "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_sse4.c"
336             "${AOM_ROOT}/av1/common/x86/highbd_inv_txfm_sse4.c"
337             "${AOM_ROOT}/av1/common/x86/highbd_jnt_convolve_sse4.c"
338             "${AOM_ROOT}/av1/common/x86/highbd_warp_plane_sse4.c"
339             "${AOM_ROOT}/av1/common/x86/intra_edge_sse4.c"
340             "${AOM_ROOT}/av1/common/x86/reconinter_sse4.c"
341             "${AOM_ROOT}/av1/common/x86/selfguided_sse4.c"
342             "${AOM_ROOT}/av1/common/x86/warp_plane_sse4.c")
344 if(NOT CONFIG_AV1_HIGHBITDEPTH)
345   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE4_1
346                    "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_sse4.c"
347                    "${AOM_ROOT}/av1/common/x86/highbd_jnt_convolve_sse4.c"
348                    "${AOM_ROOT}/av1/common/x86/highbd_warp_plane_sse4.c")
349 endif()
351 if(CONFIG_REALTIME_ONLY)
352   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE4_1
353                    "${AOM_ROOT}/av1/common/x86/highbd_warp_plane_sse4.c"
354                    "${AOM_ROOT}/av1/common/x86/selfguided_sse4.c"
355                    "${AOM_ROOT}/av1/common/x86/warp_plane_sse4.c")
356 endif()
358 list(APPEND AOM_AV1_COMMON_INTRIN_AVX2
359             "${AOM_ROOT}/av1/common/cdef_block_avx2.c"
360             "${AOM_ROOT}/av1/common/x86/av1_inv_txfm_avx2.c"
361             "${AOM_ROOT}/av1/common/x86/av1_inv_txfm_avx2.h"
362             "${AOM_ROOT}/av1/common/x86/cfl_avx2.c"
363             "${AOM_ROOT}/av1/common/x86/convolve_2d_avx2.c"
364             "${AOM_ROOT}/av1/common/x86/convolve_avx2.c"
365             "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_avx2.c"
366             "${AOM_ROOT}/av1/common/x86/highbd_inv_txfm_avx2.c"
367             "${AOM_ROOT}/av1/common/x86/highbd_jnt_convolve_avx2.c"
368             "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_avx2.c"
369             "${AOM_ROOT}/av1/common/x86/highbd_warp_affine_avx2.c"
370             "${AOM_ROOT}/av1/common/x86/jnt_convolve_avx2.c"
371             "${AOM_ROOT}/av1/common/x86/reconinter_avx2.c"
372             "${AOM_ROOT}/av1/common/x86/selfguided_avx2.c"
373             "${AOM_ROOT}/av1/common/x86/warp_plane_avx2.c"
374             "${AOM_ROOT}/av1/common/x86/wiener_convolve_avx2.c")
376 if(NOT CONFIG_AV1_HIGHBITDEPTH)
377   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_AVX2
378                    "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_avx2.c"
379                    "${AOM_ROOT}/av1/common/x86/highbd_jnt_convolve_avx2.c"
380                    "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_avx2.c"
381                    "${AOM_ROOT}/av1/common/x86/highbd_warp_affine_avx2.c")
382 endif()
384 if(CONFIG_REALTIME_ONLY)
385   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_AVX2
386                    "${AOM_ROOT}/av1/common/x86/highbd_warp_affine_avx2.c"
387                    "${AOM_ROOT}/av1/common/x86/selfguided_avx2.c"
388                    "${AOM_ROOT}/av1/common/x86/warp_plane_avx2.c")
389 endif()
391 list(APPEND AOM_AV1_ENCODER_ASM_SSE2 "${AOM_ROOT}/av1/encoder/x86/dct_sse2.asm"
392             "${AOM_ROOT}/av1/encoder/x86/error_sse2.asm")
394 list(APPEND AOM_AV1_ENCODER_INTRIN_SSE2
395             "${AOM_ROOT}/av1/encoder/x86/av1_fwd_txfm_sse2.c"
396             "${AOM_ROOT}/av1/encoder/x86/av1_fwd_txfm_sse2.h"
397             "${AOM_ROOT}/av1/encoder/x86/av1_k_means_sse2.c"
398             "${AOM_ROOT}/av1/encoder/x86/av1_quantize_sse2.c"
399             "${AOM_ROOT}/av1/encoder/x86/encodetxb_sse2.c"
400             "${AOM_ROOT}/av1/encoder/x86/error_intrin_sse2.c"
401             "${AOM_ROOT}/av1/encoder/x86/highbd_block_error_intrin_sse2.c"
402             "${AOM_ROOT}/av1/encoder/x86/highbd_temporal_filter_sse2.c"
403             "${AOM_ROOT}/av1/encoder/x86/reconinter_enc_sse2.c"
404             "${AOM_ROOT}/av1/encoder/x86/temporal_filter_sse2.c"
405             "${AOM_ROOT}/av1/encoder/x86/wedge_utils_sse2.c")
407 if(CONFIG_AV1_TEMPORAL_DENOISING)
408   list(APPEND AOM_AV1_ENCODER_INTRIN_SSE2
409               "${AOM_ROOT}/av1/encoder/x86/av1_temporal_denoiser_sse2.c")
410 endif()
412 if(NOT CONFIG_AV1_HIGHBITDEPTH)
413   list(
414     REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_SSE2
415                 "${AOM_ROOT}/av1/encoder/x86/highbd_block_error_intrin_sse2.c"
416                 "${AOM_ROOT}/av1/encoder/x86/highbd_temporal_filter_sse2.c")
417 endif()
419 list(APPEND AOM_AV1_ENCODER_INTRIN_SSE3 "${AOM_ROOT}/av1/encoder/x86/ml_sse3.c")
421 list(APPEND AOM_AV1_ENCODER_INTRIN_SSSE3
422             "${AOM_ROOT}/av1/encoder/x86/reconinter_enc_ssse3.c")
424 list(APPEND AOM_AV1_ENCODER_ASM_SSSE3_X86_64
425             "${AOM_ROOT}/av1/encoder/x86/av1_quantize_ssse3_x86_64.asm")
427 list(APPEND AOM_AV1_ENCODER_INTRIN_SSE4_1
428             "${AOM_ROOT}/av1/encoder/x86/av1_fwd_txfm1d_sse4.c"
429             "${AOM_ROOT}/av1/encoder/x86/av1_fwd_txfm2d_sse4.c"
430             "${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_sse4.c"
431             "${AOM_ROOT}/av1/encoder/x86/corner_match_sse4.c"
432             "${AOM_ROOT}/av1/encoder/x86/encodetxb_sse4.c"
433             "${AOM_ROOT}/av1/encoder/x86/highbd_fwd_txfm_sse4.c"
434             "${AOM_ROOT}/av1/encoder/x86/rdopt_sse4.c"
435             "${AOM_ROOT}/av1/encoder/x86/pickrst_sse4.c")
437 if(NOT CONFIG_AV1_HIGHBITDEPTH)
438   list(REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_SSE4_1
439                    "${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_sse4.c")
440 endif()
442 if(CONFIG_REALTIME_ONLY)
443   list(REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_SSE4_1
444                    "${AOM_ROOT}/av1/encoder/x86/pickrst_sse4.c")
445 endif()
447 list(APPEND AOM_AV1_ENCODER_INTRIN_AVX2
448             "${AOM_ROOT}/av1/encoder/x86/av1_quantize_avx2.c"
449             "${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_avx2.c"
450             "${AOM_ROOT}/av1/encoder/x86/corner_match_avx2.c"
451             "${AOM_ROOT}/av1/encoder/x86/error_intrin_avx2.c"
452             "${AOM_ROOT}/av1/encoder/x86/highbd_block_error_intrin_avx2.c"
453             "${AOM_ROOT}/av1/encoder/x86/av1_fwd_txfm_avx2.h"
454             "${AOM_ROOT}/av1/encoder/x86/av1_fwd_txfm2d_avx2.c"
455             "${AOM_ROOT}/av1/encoder/x86/highbd_fwd_txfm_avx2.c"
456             "${AOM_ROOT}/av1/encoder/x86/wedge_utils_avx2.c"
457             "${AOM_ROOT}/av1/encoder/x86/encodetxb_avx2.c"
458             "${AOM_ROOT}/av1/encoder/x86/rdopt_avx2.c"
459             "${AOM_ROOT}/av1/encoder/x86/av1_k_means_avx2.c"
460             "${AOM_ROOT}/av1/encoder/x86/temporal_filter_avx2.c"
461             "${AOM_ROOT}/av1/encoder/x86/highbd_temporal_filter_avx2.c"
462             "${AOM_ROOT}/av1/encoder/x86/pickrst_avx2.c"
463             "${AOM_ROOT}/av1/encoder/x86/cnn_avx2.c")
465 if(NOT CONFIG_AV1_HIGHBITDEPTH)
466   list(
467     REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_AVX2
468                 "${AOM_ROOT}/av1/encoder/x86/av1_highbd_quantize_avx2.c"
469                 "${AOM_ROOT}/av1/encoder/x86/highbd_block_error_intrin_avx2.c"
470                 "${AOM_ROOT}/av1/encoder/x86/highbd_temporal_filter_avx2.c")
471 endif()
473 if(CONFIG_REALTIME_ONLY)
474   list(REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_AVX2
475                    "${AOM_ROOT}/av1/encoder/x86/pickrst_avx2.c"
476                    "${AOM_ROOT}/av1/encoder/x86/cnn_avx2.c")
477 endif()
479 list(APPEND AOM_AV1_ENCODER_INTRIN_NEON
480             "${AOM_ROOT}/av1/encoder/arm/neon/quantize_neon.c"
481             "${AOM_ROOT}/av1/encoder/arm/neon/ml_neon.c"
482             "${AOM_ROOT}/av1/encoder/arm/neon/picksrt_neon.c"
483             "${AOM_ROOT}/av1/encoder/arm/neon/rdopt_neon.c"
484             "${AOM_ROOT}/av1/encoder/arm/neon/av1_error_neon.c"
485             "${AOM_ROOT}/av1/encoder/arm/neon/encodetxb_neon.c"
486             "${AOM_ROOT}/av1/encoder/arm/neon/hybrid_fwd_txfm_neon.c"
487             "${AOM_ROOT}/av1/encoder/arm/neon/av1_fwd_txfm2d_neon.c"
488             "${AOM_ROOT}/av1/encoder/arm/neon/highbd_fwd_txfm_neon.c")
490 if(CONFIG_AV1_TEMPORAL_DENOISING)
491   list(APPEND AOM_AV1_ENCODER_INTRIN_NEON
492               "${AOM_ROOT}/av1/encoder/arm/neon/av1_temporal_denoiser_neon.c")
493 endif()
495 list(APPEND AOM_AV1_ENCODER_INTRIN_MSA
496             "${AOM_ROOT}/av1/encoder/mips/msa/error_msa.c"
497             "${AOM_ROOT}/av1/encoder/mips/msa/fdct4x4_msa.c"
498             "${AOM_ROOT}/av1/encoder/mips/msa/temporal_filter_msa.c")
500 list(APPEND AOM_AV1_COMMON_INTRIN_NEON
501             "${AOM_ROOT}/av1/common/arm/av1_txfm_neon.c"
502             "${AOM_ROOT}/av1/common/arm/cfl_neon.c"
503             "${AOM_ROOT}/av1/common/arm/convolve_neon.c"
504             "${AOM_ROOT}/av1/common/arm/convolve_neon.h"
505             "${AOM_ROOT}/av1/common/arm/jnt_convolve_neon.c"
506             "${AOM_ROOT}/av1/common/arm/blend_a64_hmask_neon.c"
507             "${AOM_ROOT}/av1/common/arm/blend_a64_vmask_neon.c"
508             "${AOM_ROOT}/av1/common/arm/reconinter_neon.c"
509             "${AOM_ROOT}/av1/common/arm/reconintra_neon.c"
510             "${AOM_ROOT}/av1/common/arm/resize_neon.c"
511             "${AOM_ROOT}/av1/common/arm/wiener_convolve_neon.c"
512             "${AOM_ROOT}/av1/common/arm/selfguided_neon.c"
513             "${AOM_ROOT}/av1/common/arm/av1_inv_txfm_neon.c"
514             "${AOM_ROOT}/av1/common/arm/av1_inv_txfm_neon.h"
515             "${AOM_ROOT}/av1/common/arm/highbd_inv_txfm_neon.c"
516             "${AOM_ROOT}/av1/common/arm/warp_plane_neon.c"
517             "${AOM_ROOT}/av1/common/cdef_block_neon.c")
519 if(CONFIG_REALTIME_ONLY)
520   list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_NEON
521                    "${AOM_ROOT}/av1/common/arm/selfguided_neon.c"
522                    "${AOM_ROOT}/av1/common/arm/warp_plane_neon.c")
523 endif()
525 list(APPEND AOM_AV1_ENCODER_INTRIN_SSE4_2
526             "${AOM_ROOT}/av1/encoder/x86/hash_sse42.c")
528 list(APPEND AOM_AV1_COMMON_INTRIN_VSX "${AOM_ROOT}/av1/common/ppc/cfl_ppc.c")
530 if(CONFIG_ACCOUNTING)
531   list(APPEND AOM_AV1_DECODER_SOURCES "${AOM_ROOT}/av1/decoder/accounting.c"
532               "${AOM_ROOT}/av1/decoder/accounting.h")
533 endif()
535 if(CONFIG_INSPECTION)
536   list(APPEND AOM_AV1_DECODER_SOURCES "${AOM_ROOT}/av1/decoder/inspection.c"
537               "${AOM_ROOT}/av1/decoder/inspection.h")
538 endif()
540 if(CONFIG_INTERNAL_STATS)
541   list(APPEND AOM_AV1_ENCODER_SOURCES "${AOM_ROOT}/av1/encoder/blockiness.c")
542 endif()
544 if(CONFIG_REALTIME_ONLY)
545   list(REMOVE_ITEM AOM_AV1_ENCODER_SOURCES
546                    "${AOM_ROOT}/av1/encoder/cnn.c"
547                    "${AOM_ROOT}/av1/encoder/cnn.h"
548                    "${AOM_ROOT}/av1/encoder/firstpass.c"
549                    "${AOM_ROOT}/av1/encoder/firstpass.h"
550                    "${AOM_ROOT}/av1/encoder/global_motion.c"
551                    "${AOM_ROOT}/av1/encoder/global_motion.h"
552                    "${AOM_ROOT}/av1/encoder/global_motion_facade.c"
553                    "${AOM_ROOT}/av1/encoder/global_motion_facade.h"
554                    "${AOM_ROOT}/av1/encoder/gop_structure.c"
555                    "${AOM_ROOT}/av1/encoder/gop_structure.h"
556                    "${AOM_ROOT}/av1/encoder/misc_model_weights.h"
557                    "${AOM_ROOT}/av1/encoder/partition_cnn_weights.h"
558                    "${AOM_ROOT}/av1/encoder/partition_model_weights.h"
559                    "${AOM_ROOT}/av1/encoder/pass2_strategy.c"
560                    "${AOM_ROOT}/av1/encoder/picklpf.h"
561                    "${AOM_ROOT}/av1/encoder/pickrst.c"
562                    "${AOM_ROOT}/av1/encoder/temporal_filter.c"
563                    "${AOM_ROOT}/av1/encoder/temporal_filter.h"
564                    "${AOM_ROOT}/av1/encoder/tpl_model.c"
565                    "${AOM_ROOT}/av1/encoder/tpl_model.h")
566 endif()
568 # Setup AV1 common/decoder/encoder targets. The libaom target must exist before
569 # this function is called.
570 function(setup_av1_targets)
571   add_library(aom_av1_common OBJECT ${AOM_AV1_COMMON_SOURCES})
572   list(APPEND AOM_LIB_TARGETS aom_av1_common)
573   target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_common>)
574   if(BUILD_SHARED_LIBS)
575     target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_av1_common>)
576   endif()
578   if(CONFIG_AV1_DECODER)
579     add_library(aom_av1_decoder OBJECT ${AOM_AV1_DECODER_SOURCES})
580     set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_av1_decoder)
581     target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_decoder>)
582     if(BUILD_SHARED_LIBS)
583       target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_av1_decoder>)
584     endif()
585   endif()
587   if(CONFIG_AV1_ENCODER)
588     add_library(aom_av1_encoder OBJECT ${AOM_AV1_ENCODER_SOURCES})
589     set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_av1_encoder)
590     target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_encoder>)
591     if(BUILD_SHARED_LIBS)
592       target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_av1_encoder>)
593     endif()
594   endif()
596   if(HAVE_SSE2)
597     require_compiler_flag_nomsvc("-msse2" NO)
598     add_intrinsics_object_library("-msse2" "sse2" "aom_av1_common"
599                                   "AOM_AV1_COMMON_INTRIN_SSE2")
600     if(CONFIG_AV1_DECODER)
601       if(AOM_AV1_DECODER_ASM_SSE2)
602         add_asm_library("aom_av1_decoder_sse2" "AOM_AV1_DECODER_ASM_SSE2")
603       endif()
605       if(AOM_AV1_DECODER_INTRIN_SSE2)
606         add_intrinsics_object_library("-msse2" "sse2" "aom_av1_decoder"
607                                       "AOM_AV1_DECODER_INTRIN_SSE2")
608       endif()
609     endif()
611     if(CONFIG_AV1_ENCODER)
612       add_asm_library("aom_av1_encoder_sse2" "AOM_AV1_ENCODER_ASM_SSE2")
613       add_intrinsics_object_library("-msse2" "sse2" "aom_av1_encoder"
614                                     "AOM_AV1_ENCODER_INTRIN_SSE2")
615     endif()
616   endif()
618   if(HAVE_SSE3)
619     require_compiler_flag_nomsvc("-msse3" NO)
620     if(CONFIG_AV1_ENCODER)
621       add_intrinsics_object_library("-msse3" "sse3" "aom_av1_encoder"
622                                     "AOM_AV1_ENCODER_INTRIN_SSE3")
623     endif()
624   endif()
626   if(HAVE_SSSE3)
627     require_compiler_flag_nomsvc("-mssse3" NO)
628     add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_common"
629                                   "AOM_AV1_COMMON_INTRIN_SSSE3")
631     if(CONFIG_AV1_DECODER)
632       if(AOM_AV1_DECODER_INTRIN_SSSE3)
633         add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_decoder"
634                                       "AOM_AV1_DECODER_INTRIN_SSSE3")
635       endif()
636     endif()
637     if(CONFIG_AV1_ENCODER)
638       if(AOM_AV1_ENCODER_INTRIN_SSSE3)
639         add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_encoder"
640                                       "AOM_AV1_ENCODER_INTRIN_SSSE3")
641       endif()
642     endif()
643   endif()
645   if(HAVE_SSE4_1)
646     require_compiler_flag_nomsvc("-msse4.1" NO)
647     add_intrinsics_object_library("-msse4.1" "sse4" "aom_av1_common"
648                                   "AOM_AV1_COMMON_INTRIN_SSE4_1")
650     if(CONFIG_AV1_ENCODER)
651       if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
652         add_asm_library("aom_av1_encoder_ssse3"
653                         "AOM_AV1_ENCODER_ASM_SSSE3_X86_64")
654       endif()
656       if(AOM_AV1_ENCODER_INTRIN_SSE4_1)
657         add_intrinsics_object_library("-msse4.1" "sse4" "aom_av1_encoder"
658                                       "AOM_AV1_ENCODER_INTRIN_SSE4_1")
659       endif()
660     endif()
661   endif()
663   if(HAVE_SSE4_2)
664     require_compiler_flag_nomsvc("-msse4.2" NO)
665     if(CONFIG_AV1_ENCODER)
666       if(AOM_AV1_ENCODER_INTRIN_SSE4_2)
667         add_intrinsics_object_library("-msse4.2" "sse42" "aom_av1_encoder"
668                                       "AOM_AV1_ENCODER_INTRIN_SSE4_2")
669       endif()
670     endif()
671   endif()
673   if(HAVE_AVX2)
674     require_compiler_flag_nomsvc("-mavx2" NO)
675     add_intrinsics_object_library("-mavx2" "avx2" "aom_av1_common"
676                                   "AOM_AV1_COMMON_INTRIN_AVX2")
678     if(CONFIG_AV1_ENCODER)
679       add_intrinsics_object_library("-mavx2" "avx2" "aom_av1_encoder"
680                                     "AOM_AV1_ENCODER_INTRIN_AVX2")
681     endif()
682   endif()
684   if(HAVE_NEON)
685     if(AOM_AV1_COMMON_INTRIN_NEON)
686       add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
687                                     "aom_av1_common"
688                                     "AOM_AV1_COMMON_INTRIN_NEON")
689     endif()
691     if(CONFIG_AV1_ENCODER)
692       if(AOM_AV1_ENCODER_INTRIN_NEON)
693         add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
694                                       "aom_av1_encoder"
695                                       "AOM_AV1_ENCODER_INTRIN_NEON")
696       endif()
697     endif()
698   endif()
700   if(HAVE_VSX)
701     if(AOM_AV1_COMMON_INTRIN_VSX)
702       add_intrinsics_object_library("-mvsx -maltivec" "vsx" "aom_av1_common"
703                                     "AOM_AV1_COMMON_INTRIN_VSX")
704     endif()
705   endif()
707   if(HAVE_MSA)
708     add_intrinsics_object_library("" "msa" "aom_av1_encoder"
709                                   "AOM_AV1_ENCODER_INTRIN_MSA")
710   endif()
712   # Pass the new lib targets up to the parent scope instance of
713   # $AOM_LIB_TARGETS.
714   set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
715 endfunction()