• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (c) 2017, 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#
11if(AOM_AOM_DSP_AOM_DSP_CMAKE_)
12  return()
13endif() # AOM_AOM_DSP_AOM_DSP_CMAKE_
14set(AOM_AOM_DSP_AOM_DSP_CMAKE_ 1)
15
16list(APPEND AOM_DSP_COMMON_SOURCES
17            "${AOM_ROOT}/aom_dsp/aom_convolve.c"
18            "${AOM_ROOT}/aom_dsp/aom_dsp_common.h"
19            "${AOM_ROOT}/aom_dsp/aom_filter.h"
20            "${AOM_ROOT}/aom_dsp/aom_simd.h"
21            "${AOM_ROOT}/aom_dsp/aom_simd_inline.h"
22            "${AOM_ROOT}/aom_dsp/bitreader_buffer.c"
23            "${AOM_ROOT}/aom_dsp/bitreader_buffer.h"
24            "${AOM_ROOT}/aom_dsp/bitwriter_buffer.c"
25            "${AOM_ROOT}/aom_dsp/bitwriter_buffer.h"
26            "${AOM_ROOT}/aom_dsp/blend.h"
27            "${AOM_ROOT}/aom_dsp/blend_a64_hmask.c"
28            "${AOM_ROOT}/aom_dsp/blend_a64_mask.c"
29            "${AOM_ROOT}/aom_dsp/blend_a64_vmask.c"
30            "${AOM_ROOT}/aom_dsp/entcode.c"
31            "${AOM_ROOT}/aom_dsp/entcode.h"
32            "${AOM_ROOT}/aom_dsp/fft.c"
33            "${AOM_ROOT}/aom_dsp/fft_common.h"
34            "${AOM_ROOT}/aom_dsp/grain_params.h"
35            "${AOM_ROOT}/aom_dsp/intrapred.c"
36            "${AOM_ROOT}/aom_dsp/intrapred_common.h"
37            "${AOM_ROOT}/aom_dsp/loopfilter.c"
38            "${AOM_ROOT}/aom_dsp/odintrin.c"
39            "${AOM_ROOT}/aom_dsp/odintrin.h"
40            "${AOM_ROOT}/aom_dsp/prob.h"
41            "${AOM_ROOT}/aom_dsp/recenter.h"
42            "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics.h"
43            "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics_c.h"
44            "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics.h"
45            "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics_c.h"
46            "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics.h"
47            "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics_c.h"
48            "${AOM_ROOT}/aom_dsp/subtract.c"
49            "${AOM_ROOT}/aom_dsp/txfm_common.h"
50            "${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h")
51
52list(APPEND AOM_DSP_COMMON_ASM_SSE2
53            "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm"
54            "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm"
55            "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_asm_sse2.asm"
56            "${AOM_ROOT}/aom_dsp/x86/intrapred_asm_sse2.asm"
57            "${AOM_ROOT}/aom_dsp/x86/inv_wht_sse2.asm")
58
59list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
60            "${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_sse2.c"
61            "${AOM_ROOT}/aom_dsp/x86/aom_asm_stubs.c"
62            "${AOM_ROOT}/aom_dsp/x86/convolve.h"
63            "${AOM_ROOT}/aom_dsp/x86/convolve_sse2.h"
64            "${AOM_ROOT}/aom_dsp/x86/fft_sse2.c"
65            "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.c"
66            "${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.c"
67            "${AOM_ROOT}/aom_dsp/x86/intrapred_x86.h"
68            "${AOM_ROOT}/aom_dsp/x86/loopfilter_sse2.c"
69            "${AOM_ROOT}/aom_dsp/x86/lpf_common_sse2.h"
70            "${AOM_ROOT}/aom_dsp/x86/mem_sse2.h"
71            "${AOM_ROOT}/aom_dsp/x86/transpose_sse2.h"
72            "${AOM_ROOT}/aom_dsp/x86/txfm_common_sse2.h"
73            "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.h"
74            "${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_sse2.h")
75
76list(APPEND AOM_DSP_COMMON_ASM_SSSE3
77            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
78            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm")
79
80list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
81            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c"
82            "${AOM_ROOT}/aom_dsp/x86/convolve_ssse3.h"
83            "${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.c")
84
85list(APPEND AOM_DSP_COMMON_INTRIN_SSE4_1
86            "${AOM_ROOT}/aom_dsp/x86/blend_mask_sse4.h"
87            "${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
88            "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_sse4.c"
89            "${AOM_ROOT}/aom_dsp/x86/blend_a64_vmask_sse4.c"
90            "${AOM_ROOT}/aom_dsp/x86/intrapred_sse4.c"
91            "${AOM_ROOT}/aom_dsp/x86/intrapred_utils.h")
92
93list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
94            "${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_avx2.c"
95            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c"
96            "${AOM_ROOT}/aom_dsp/x86/common_avx2.h"
97            "${AOM_ROOT}/aom_dsp/x86/txfm_common_avx2.h"
98            "${AOM_ROOT}/aom_dsp/x86/convolve_avx2.h"
99            "${AOM_ROOT}/aom_dsp/x86/fft_avx2.c"
100            "${AOM_ROOT}/aom_dsp/x86/intrapred_avx2.c"
101            "${AOM_ROOT}/aom_dsp/x86/loopfilter_avx2.c"
102            "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c"
103            "${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_avx2.h"
104            "${AOM_ROOT}/third_party/SVT-AV1/convolve_2d_avx2.h"
105            "${AOM_ROOT}/third_party/SVT-AV1/convolve_avx2.h"
106            "${AOM_ROOT}/third_party/SVT-AV1/EbMemory_AVX2.h"
107            "${AOM_ROOT}/third_party/SVT-AV1/EbMemory_SSE4_1.h"
108            "${AOM_ROOT}/third_party/SVT-AV1/synonyms.h")
109
110list(APPEND AOM_DSP_COMMON_INTRIN_NEON
111            "${AOM_ROOT}/aom_dsp/arm/aom_convolve_copy_neon.c"
112            "${AOM_ROOT}/aom_dsp/arm/aom_convolve8_neon.c"
113            "${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
114            "${AOM_ROOT}/aom_dsp/arm/loopfilter_neon.c"
115            "${AOM_ROOT}/aom_dsp/arm/intrapred_neon.c"
116            "${AOM_ROOT}/aom_dsp/arm/subtract_neon.c"
117            "${AOM_ROOT}/aom_dsp/arm/blend_a64_mask_neon.c"
118            "${AOM_ROOT}/aom_dsp/arm/avg_pred_neon.c")
119
120list(APPEND AOM_DSP_COMMON_INTRIN_NEON_DOTPROD
121            "${AOM_ROOT}/aom_dsp/arm/aom_convolve8_neon_dotprod.c")
122
123list(APPEND AOM_DSP_COMMON_INTRIN_NEON_I8MM
124            "${AOM_ROOT}/aom_dsp/arm/aom_convolve8_neon_i8mm.c")
125
126if(CONFIG_AV1_HIGHBITDEPTH)
127  list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
128              "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c"
129              "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c")
130
131  list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
132              "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c")
133
134  list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
135              "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
136              "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c")
137
138  list(APPEND AOM_DSP_COMMON_INTRIN_NEON
139              "${AOM_ROOT}/aom_dsp/arm/highbd_blend_a64_hmask_neon.c"
140              "${AOM_ROOT}/aom_dsp/arm/highbd_blend_a64_mask_neon.c"
141              "${AOM_ROOT}/aom_dsp/arm/highbd_blend_a64_vmask_neon.c"
142              "${AOM_ROOT}/aom_dsp/arm/highbd_convolve8_neon.c"
143              "${AOM_ROOT}/aom_dsp/arm/highbd_intrapred_neon.c"
144              "${AOM_ROOT}/aom_dsp/arm/highbd_loopfilter_neon.c")
145
146  list(APPEND AOM_DSP_COMMON_INTRIN_SVE
147              "${AOM_ROOT}/aom_dsp/arm/highbd_convolve8_sve.c")
148endif()
149
150if(CONFIG_AV1_DECODER)
151  list(APPEND AOM_DSP_DECODER_SOURCES
152              "${AOM_ROOT}/aom_dsp/binary_codes_reader.c"
153              "${AOM_ROOT}/aom_dsp/binary_codes_reader.h"
154              "${AOM_ROOT}/aom_dsp/bitreader.c"
155              "${AOM_ROOT}/aom_dsp/bitreader.h" "${AOM_ROOT}/aom_dsp/entdec.c"
156              "${AOM_ROOT}/aom_dsp/entdec.h")
157endif()
158
159if(CONFIG_AV1_ENCODER)
160  list(APPEND AOM_DSP_ENCODER_SOURCES
161              "${AOM_ROOT}/aom_dsp/avg.c"
162              "${AOM_ROOT}/aom_dsp/binary_codes_writer.c"
163              "${AOM_ROOT}/aom_dsp/binary_codes_writer.h"
164              "${AOM_ROOT}/aom_dsp/bitwriter.c"
165              "${AOM_ROOT}/aom_dsp/bitwriter.h"
166              "${AOM_ROOT}/aom_dsp/blk_sse_sum.c"
167              "${AOM_ROOT}/aom_dsp/entenc.c"
168              "${AOM_ROOT}/aom_dsp/entenc.h"
169              "${AOM_ROOT}/aom_dsp/fwd_txfm.c"
170              "${AOM_ROOT}/aom_dsp/grain_table.c"
171              "${AOM_ROOT}/aom_dsp/grain_table.h"
172              "${AOM_ROOT}/aom_dsp/noise_model.c"
173              "${AOM_ROOT}/aom_dsp/noise_model.h"
174              "${AOM_ROOT}/aom_dsp/noise_util.c"
175              "${AOM_ROOT}/aom_dsp/noise_util.h"
176              "${AOM_ROOT}/aom_dsp/psnr.c"
177              "${AOM_ROOT}/aom_dsp/psnr.h"
178              "${AOM_ROOT}/aom_dsp/quantize.c"
179              "${AOM_ROOT}/aom_dsp/quantize.h"
180              "${AOM_ROOT}/aom_dsp/sad.c"
181              "${AOM_ROOT}/aom_dsp/sad_av1.c"
182              "${AOM_ROOT}/aom_dsp/sse.c"
183              "${AOM_ROOT}/aom_dsp/ssim.c"
184              "${AOM_ROOT}/aom_dsp/ssim.h"
185              "${AOM_ROOT}/aom_dsp/sum_squares.c"
186              "${AOM_ROOT}/aom_dsp/variance.c"
187              "${AOM_ROOT}/aom_dsp/variance.h")
188
189  # Flow estimation library
190  if(NOT CONFIG_REALTIME_ONLY)
191    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/pyramid.c"
192                "${AOM_ROOT}/aom_dsp/flow_estimation/corner_detect.c"
193                "${AOM_ROOT}/aom_dsp/flow_estimation/corner_match.c"
194                "${AOM_ROOT}/aom_dsp/flow_estimation/disflow.c"
195                "${AOM_ROOT}/aom_dsp/flow_estimation/flow_estimation.c"
196                "${AOM_ROOT}/aom_dsp/flow_estimation/ransac.c")
197
198    list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
199                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/corner_match_sse4.c"
200                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/disflow_sse4.c")
201
202    list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
203                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/corner_match_avx2.c"
204                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/disflow_avx2.c")
205
206    list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
207                "${AOM_ROOT}/aom_dsp/flow_estimation/arm/disflow_neon.c")
208  endif()
209
210  list(APPEND AOM_DSP_ENCODER_ASM_SSE2 "${AOM_ROOT}/aom_dsp/x86/sad4d_sse2.asm"
211              "${AOM_ROOT}/aom_dsp/x86/sad_sse2.asm"
212              "${AOM_ROOT}/aom_dsp/x86/subtract_sse2.asm")
213
214  list(APPEND AOM_DSP_ENCODER_ASM_SSE2_X86_64
215              "${AOM_ROOT}/aom_dsp/x86/ssim_sse2_x86_64.asm")
216
217  list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
218              "${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse2.c"
219              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_impl_sse2.h"
220              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
221              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.h"
222              "${AOM_ROOT}/aom_dsp/x86/quantize_sse2.c"
223              "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_sse2.c"
224              "${AOM_ROOT}/aom_dsp/x86/quantize_x86.h"
225              "${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_sse2.c"
226              "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.c"
227              "${AOM_ROOT}/aom_dsp/x86/variance_sse2.c"
228              "${AOM_ROOT}/aom_dsp/x86/jnt_sad_sse2.c")
229
230  list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
231              "${AOM_ROOT}/aom_dsp/x86/subpel_variance_ssse3.asm")
232
233  list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
234              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
235              "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
236
237  list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
238              "${AOM_ROOT}/aom_dsp/x86/avg_intrin_avx2.c"
239              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_avx2.c"
240              "${AOM_ROOT}/aom_dsp/x86/subtract_avx2.c"
241              "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_avx2.c"
242              "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_avx2.c"
243              "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_avx2.c"
244              "${AOM_ROOT}/aom_dsp/x86/quantize_avx2.c"
245              "${AOM_ROOT}/aom_dsp/x86/sad4d_avx2.c"
246              "${AOM_ROOT}/aom_dsp/x86/sad_avx2.c"
247              "${AOM_ROOT}/aom_dsp/x86/highbd_sad_avx2.c"
248              "${AOM_ROOT}/aom_dsp/x86/sad_impl_avx2.c"
249              "${AOM_ROOT}/aom_dsp/x86/variance_avx2.c"
250              "${AOM_ROOT}/aom_dsp/x86/sse_avx2.c"
251              "${AOM_ROOT}/aom_dsp/x86/variance_impl_avx2.c"
252              "${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
253              "${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c"
254              "${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_avx2.c"
255              "${AOM_ROOT}/aom_dsp/x86/sum_squares_avx2.c")
256
257  list(APPEND AOM_DSP_ENCODER_INTRIN_AVX
258              "${AOM_ROOT}/aom_dsp/x86/aom_quantize_avx.c")
259
260  list(APPEND AOM_DSP_ENCODER_INTRIN_SSSE3
261              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.h"
262              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
263              "${AOM_ROOT}/aom_dsp/x86/masked_sad4d_ssse3.c"
264              "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.h"
265              "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c"
266              "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3.c"
267              "${AOM_ROOT}/aom_dsp/x86/variance_impl_ssse3.c"
268              "${AOM_ROOT}/aom_dsp/x86/jnt_variance_ssse3.c")
269
270  list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
271              "${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse4.c"
272              "${AOM_ROOT}/aom_dsp/x86/sse_sse4.c"
273              "${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
274              "${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
275
276  list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
277              "${AOM_ROOT}/aom_dsp/arm/sadxd_neon.c"
278              "${AOM_ROOT}/aom_dsp/arm/sad_neon.c"
279              "${AOM_ROOT}/aom_dsp/arm/masked_sad_neon.c"
280              "${AOM_ROOT}/aom_dsp/arm/masked_sad4d_neon.c"
281              "${AOM_ROOT}/aom_dsp/arm/subpel_variance_neon.c"
282              "${AOM_ROOT}/aom_dsp/arm/variance_neon.c"
283              "${AOM_ROOT}/aom_dsp/arm/hadamard_neon.c"
284              "${AOM_ROOT}/aom_dsp/arm/avg_neon.c"
285              "${AOM_ROOT}/aom_dsp/arm/obmc_variance_neon.c"
286              "${AOM_ROOT}/aom_dsp/arm/obmc_sad_neon.c"
287              "${AOM_ROOT}/aom_dsp/arm/sse_neon.c"
288              "${AOM_ROOT}/aom_dsp/arm/sum_squares_neon.c"
289              "${AOM_ROOT}/aom_dsp/arm/blk_sse_sum_neon.c")
290
291  list(APPEND AOM_DSP_ENCODER_INTRIN_NEON_DOTPROD
292              "${AOM_ROOT}/aom_dsp/arm/sad_neon_dotprod.c"
293              "${AOM_ROOT}/aom_dsp/arm/sadxd_neon_dotprod.c"
294              "${AOM_ROOT}/aom_dsp/arm/sse_neon_dotprod.c"
295              "${AOM_ROOT}/aom_dsp/arm/sum_squares_neon_dotprod.c"
296              "${AOM_ROOT}/aom_dsp/arm/variance_neon_dotprod.c")
297
298  list(APPEND AOM_DSP_ENCODER_INTRIN_SVE "${AOM_ROOT}/aom_dsp/arm/avg_sve.c"
299              "${AOM_ROOT}/aom_dsp/arm/blk_sse_sum_sve.c"
300              "${AOM_ROOT}/aom_dsp/arm/sum_squares_sve.c")
301
302  if(CONFIG_AV1_HIGHBITDEPTH)
303    list(APPEND AOM_DSP_ENCODER_ASM_SSE2
304                "${AOM_ROOT}/aom_dsp/x86/highbd_sad4d_sse2.asm"
305                "${AOM_ROOT}/aom_dsp/x86/highbd_sad_sse2.asm"
306                "${AOM_ROOT}/aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm"
307                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_impl_sse2.asm")
308
309    list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
310                "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c"
311                "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
312                "${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c"
313                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c")
314
315    list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
316                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_avx2.c")
317
318    list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
319                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c")
320
321    list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
322                "${AOM_ROOT}/aom_dsp/arm/highbd_avg_neon.c"
323                "${AOM_ROOT}/aom_dsp/arm/highbd_avg_pred_neon.c"
324                "${AOM_ROOT}/aom_dsp/arm/highbd_hadamard_neon.c"
325                "${AOM_ROOT}/aom_dsp/arm/highbd_masked_sad_neon.c"
326                "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_sad_neon.c"
327                "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_variance_neon.c"
328                "${AOM_ROOT}/aom_dsp/arm/highbd_quantize_neon.c"
329                "${AOM_ROOT}/aom_dsp/arm/highbd_sad_neon.c"
330                "${AOM_ROOT}/aom_dsp/arm/highbd_sadxd_neon.c"
331                "${AOM_ROOT}/aom_dsp/arm/highbd_sse_neon.c"
332                "${AOM_ROOT}/aom_dsp/arm/highbd_subpel_variance_neon.c"
333                "${AOM_ROOT}/aom_dsp/arm/highbd_variance_neon.c")
334
335    list(APPEND AOM_DSP_ENCODER_INTRIN_NEON_DOTPROD
336                "${AOM_ROOT}/aom_dsp/arm/highbd_variance_neon_dotprod.c")
337
338    list(APPEND AOM_DSP_ENCODER_INTRIN_SVE
339                "${AOM_ROOT}/aom_dsp/arm/highbd_sse_sve.c"
340                "${AOM_ROOT}/aom_dsp/arm/highbd_variance_sve.c")
341  endif()
342
343  if(CONFIG_INTERNAL_STATS)
344    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/fastssim.c"
345                "${AOM_ROOT}/aom_dsp/psnrhvs.c")
346  endif()
347
348  if(CONFIG_TUNE_VMAF)
349    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/vmaf.c"
350                "${AOM_ROOT}/aom_dsp/vmaf.h")
351  endif()
352
353  if(CONFIG_TUNE_BUTTERAUGLI)
354    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/butteraugli.c"
355                "${AOM_ROOT}/aom_dsp/butteraugli.h")
356  endif()
357
358  if(CONFIG_REALTIME_ONLY)
359    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_AVX2
360                     "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_avx2.c"
361                     "${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
362                     "${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c")
363
364    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE4_1
365                     "${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
366                     "${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
367
368    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE2
369                     "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_sse2.c")
370
371    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_NEON
372                     "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_variance_neon.c"
373                     "${AOM_ROOT}/aom_dsp/arm/obmc_variance_neon.c")
374  endif()
375endif()
376
377# Creates aom_dsp build targets. Must not be called until after libaom target
378# has been created.
379function(setup_aom_dsp_targets)
380  add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
381  list(APPEND AOM_LIB_TARGETS aom_dsp_common)
382  create_no_op_source_file("aom_av1" "c" "no_op_source_file")
383  add_library(aom_dsp OBJECT "${no_op_source_file}")
384  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
385  if(BUILD_SHARED_LIBS)
386    target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
387  endif()
388  list(APPEND AOM_LIB_TARGETS aom_dsp)
389
390  # Not all generators support libraries consisting only of object files. Add a
391  # source file to the aom_dsp target.
392  add_no_op_source_file_to_target("aom_dsp" "c")
393
394  if(CONFIG_AV1_DECODER)
395    add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
396    list(APPEND AOM_LIB_TARGETS aom_dsp_decoder)
397    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
398    if(BUILD_SHARED_LIBS)
399      target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
400    endif()
401  endif()
402
403  if(CONFIG_AV1_ENCODER)
404    add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
405    list(APPEND AOM_LIB_TARGETS aom_dsp_encoder)
406    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
407    if(BUILD_SHARED_LIBS)
408      target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
409    endif()
410    if(CONFIG_TUNE_VMAF)
411      target_include_directories(aom_dsp_encoder PRIVATE ${VMAF_INCLUDE_DIRS})
412    endif()
413  endif()
414
415  if(HAVE_SSE2)
416    add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2")
417    add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
418                                  "AOM_DSP_COMMON_INTRIN_SSE2")
419
420    if(CONFIG_AV1_ENCODER)
421      if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
422        list(APPEND AOM_DSP_ENCODER_ASM_SSE2 ${AOM_DSP_ENCODER_ASM_SSE2_X86_64})
423      endif()
424      add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2")
425      add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
426                                    "AOM_DSP_ENCODER_INTRIN_SSE2")
427    endif()
428  endif()
429
430  if(HAVE_SSSE3)
431    add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3")
432    add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
433                                  "AOM_DSP_COMMON_INTRIN_SSSE3")
434
435    if(CONFIG_AV1_ENCODER)
436      if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
437        list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
438                    ${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
439      endif()
440      add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3")
441      add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
442                                    "AOM_DSP_ENCODER_INTRIN_SSSE3")
443    endif()
444  endif()
445
446  if(HAVE_SSE4_1)
447    add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
448                                  "AOM_DSP_COMMON_INTRIN_SSE4_1")
449    if(CONFIG_AV1_ENCODER)
450      add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
451                                    "AOM_DSP_ENCODER_INTRIN_SSE4_1")
452    endif()
453  endif()
454
455  if(HAVE_AVX)
456    if(CONFIG_AV1_ENCODER)
457      add_intrinsics_object_library("-mavx" "avx" "aom_dsp_encoder"
458                                    "AOM_DSP_ENCODER_INTRIN_AVX")
459    endif()
460  endif()
461
462  if(HAVE_AVX2)
463    add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
464                                  "AOM_DSP_COMMON_INTRIN_AVX2")
465    if(CONFIG_AV1_ENCODER)
466      add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
467                                    "AOM_DSP_ENCODER_INTRIN_AVX2")
468    endif()
469  endif()
470
471  if(HAVE_NEON)
472    add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
473                                  "aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON")
474    if(CONFIG_AV1_ENCODER)
475      add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
476                                    "aom_dsp_encoder"
477                                    "AOM_DSP_ENCODER_INTRIN_NEON")
478    endif()
479  endif()
480
481  if(HAVE_NEON_DOTPROD)
482    add_intrinsics_object_library("${AOM_NEON_DOTPROD_FLAG}" "neon_dotprod"
483                                  "aom_dsp_common"
484                                  "AOM_DSP_COMMON_INTRIN_NEON_DOTPROD")
485    if(CONFIG_AV1_ENCODER)
486      add_intrinsics_object_library("${AOM_NEON_DOTPROD_FLAG}" "neon_dotprod"
487                                    "aom_dsp_encoder"
488                                    "AOM_DSP_ENCODER_INTRIN_NEON_DOTPROD")
489    endif()
490  endif()
491
492  if(HAVE_NEON_I8MM)
493    add_intrinsics_object_library("${AOM_NEON_I8MM_FLAG}" "neon_i8mm"
494                                  "aom_dsp_common"
495                                  "AOM_DSP_COMMON_INTRIN_NEON_I8MM")
496  endif()
497
498  if(HAVE_SVE)
499    add_intrinsics_object_library("${AOM_SVE_FLAG}" "sve" "aom_dsp_common"
500                                  "AOM_DSP_COMMON_INTRIN_SVE")
501    if(CONFIG_AV1_ENCODER)
502      add_intrinsics_object_library("${AOM_SVE_FLAG}" "sve" "aom_dsp_encoder"
503                                    "AOM_DSP_ENCODER_INTRIN_SVE")
504    endif()
505  endif()
506
507  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp>)
508  if(BUILD_SHARED_LIBS)
509    target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp>)
510  endif()
511
512  # Pass the new lib targets up to the parent scope instance of
513  # $AOM_LIB_TARGETS.
514  set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
515endfunction()
516