First commit

This commit is contained in:
Daniil Gentili 2023-02-25 21:06:06 +01:00
commit 9c6e8c24c8
30 changed files with 4137 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
build

42
.gitmodules vendored Normal file
View File

@ -0,0 +1,42 @@
[submodule "third_party/tgcalls"]
path = third_party/tgcalls
url = https://github.com/TelegramMessenger/tgcalls
[submodule "third_party/libtgvoip"]
path = third_party/libtgvoip
url = https://github.com/TGX-Android/libtgvoip.git
[submodule "third_party/webrtc"]
path = third_party/webrtc
url = https://github.com/TGX-Android/webrtc
[submodule "third_party/opus"]
path = third_party/opus
url = https://github.com/xiph/opus.git
[submodule "third_party/rnnoise"]
path = third_party/rnnoise
url = https://github.com/TGX-Android/rnnoise
[submodule "third_party/pffft"]
path = third_party/pffft
url = https://github.com/TGX-Android/pffft
[submodule "third_party/crc32c"]
path = third_party/crc32c
url = https://github.com/google/crc32c
[submodule "third_party/libevent"]
path = third_party/libevent
url = https://github.com/TGX-Android/libevent
[submodule "third_party/libyuv"]
path = third_party/libyuv
url = https://chromium.googlesource.com/libyuv/libyuv
[submodule "third_party/usrsctp"]
path = third_party/usrsctp
url = https://github.com/sctplab/usrsctp
[submodule "third_party/libsrtp"]
path = third_party/libsrtp
url = https://github.com/cisco/libsrtp
[submodule "third_party/openh264"]
path = third_party/openh264
url = https://github.com/cisco/openh264
[submodule "third_party/abseil-cpp"]
path = third_party/abseil-cpp
url = https://github.com/abseil/abseil-cpp
[submodule "third_party/boringssl"]
path = third_party/boringssl
url = https://github.com/google/boringssl

355
BuildAbsl.cmake Normal file
View File

@ -0,0 +1,355 @@
# absl
set(ABSL_DIR "${THIRDPARTY_DIR}/abseil-cpp")
# Source files list:
# https://github.com/TelegramMessenger/Telegram-iOS/blob/930d1fcc46e39830e6d590986a6a838c3ff49e27/third-party/webrtc/BUILD
#"${ABSL_DIR}/absl/container/internal/layout.h"
#"${ABSL_DIR}/absl/container/internal/hashtable_debug_hooks.h"
#"${ABSL_DIR}/absl/strings/internal/cord_internal.h"
#"${ABSL_DIR}/absl/strings/internal/cord_rep_btree.h"
#"${ABSL_DIR}/absl/strings/internal/cord_rep_flat.h"
#"${ABSL_DIR}/absl/strings/internal/cord_rep_btree_reader.h"
#"${ABSL_DIR}/absl/strings/internal/cord_rep_btree_navigator.h"
#"${ABSL_DIR}/absl/strings/internal/cord_rep_ring.h"
#"${ABSL_DIR}/absl/strings/internal/cordz_functions.h"
#"${ABSL_DIR}/absl/strings/internal/cordz_info.h"
#"${ABSL_DIR}/absl/strings/internal/cordz_handle.h"
#"${ABSL_DIR}/absl/strings/internal/cordz_statistics.h"
#"${ABSL_DIR}/absl/strings/internal/cordz_update_tracker.h"
#"${ABSL_DIR}/absl/strings/internal/cordz_update_scope.h"
#"${ABSL_DIR}/absl/strings/internal/string_constant.h"
#"${ABSL_DIR}/absl/base/internal/inline_variable.h"
#"${ABSL_DIR}/absl/base/internal/thread_annotations.h"
#"${ABSL_DIR}/absl/base/config.h"
#"${ABSL_DIR}/absl/synchronization/mutex.h"
#"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_fixed.h"
#"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_if.h"
#"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_impl.h"
#"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_info.h"
#"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_libc.h"
#"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_posix.h",
#"${ABSL_DIR}/absl/time/internal/cctz/src/tzfile.h"
#"${ABSL_DIR}/absl/meta/type_traits.h"
#"${ABSL_DIR}/absl/base/options.h"
#"${ABSL_DIR}/absl/base/policy_checks.h"
#"${ABSL_DIR}/absl/strings/string_view.h"
#"${ABSL_DIR}/absl/base/internal/throw_delegate.h"
#"${ABSL_DIR}/absl/base/macros.h"
#"${ABSL_DIR}/absl/base/attributes.h"
#"${ABSL_DIR}/absl/base/optimization.h"
#"${ABSL_DIR}/absl/base/port.h"
#"${ABSL_DIR}/absl/types/optional.h"
#"${ABSL_DIR}/absl/types/bad_variant_access.h"
#"${ABSL_DIR}/absl/types/bad_any_cast.h"
#"${ABSL_DIR}/absl/time/internal/test_util.h"
#"${ABSL_DIR}/absl/time/internal/cctz/include/cctz/time_zone.h"
#"${ABSL_DIR}/absl/synchronization/notification.h"
#"${ABSL_DIR}/absl/time/internal/cctz/include/cctz/civil_time_detail.h"
#"${ABSL_DIR}/absl/base/casts.h"
#"${ABSL_DIR}/absl/time/civil_time.h"
#"${ABSL_DIR}/absl/synchronization/blocking_counter.h"
#"${ABSL_DIR}/absl/synchronization/barrier.h"
#"${ABSL_DIR}/absl/base/internal/low_level_alloc.h"
#"${ABSL_DIR}/absl/strings/str_replace.h"
#"${ABSL_DIR}/absl/strings/substitute.h"
#"${ABSL_DIR}/absl/strings/internal/utf8.h"
#"${ABSL_DIR}/absl/strings/numbers.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/output.h"
#"${ABSL_DIR}/absl/strings/str_cat.h"
#"${ABSL_DIR}/absl/strings/internal/ostringstream.h"
#"${ABSL_DIR}/absl/strings/internal/escaping.h"
#"${ABSL_DIR}/absl/strings/internal/pow10_helper.h"
#"${ABSL_DIR}/absl/strings/internal/memutil.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/arg.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/extension.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/bind.h"
#"${ABSL_DIR}/absl/strings/ascii.h"
#"${ABSL_DIR}/absl/strings/internal/charconv_bigint.h"
#"${ABSL_DIR}/absl/strings/escaping.h"
#"${ABSL_DIR}/absl/status/status.h"
#"${ABSL_DIR}/absl/status/internal/status_internal.h"
#"${ABSL_DIR}/absl/strings/cord.h"
#"${ABSL_DIR}/absl/random/internal/randen_slow.h"
#"${ABSL_DIR}/absl/random/internal/randen_detect.h"
#"${ABSL_DIR}/absl/random/seed_gen_exception.h"
#"${ABSL_DIR}/absl/random/internal/seed_material.h"
#"${ABSL_DIR}/absl/random/gaussian_distribution.h"
#"${ABSL_DIR}/absl/random/internal/chi_square.h"
#"${ABSL_DIR}/absl/random/internal/pool_urbg.h"
#"${ABSL_DIR}/absl/random/internal/distribution_test_util.h"
#"${ABSL_DIR}/absl/flags/usage.h"
#"${ABSL_DIR}/absl/flags/commandlineflag.h"
#"${ABSL_DIR}/absl/flags/internal/sequence_lock.h"
#"${ABSL_DIR}/absl/flags/internal/private_handle_accessor.h"
#"${ABSL_DIR}/absl/flags/reflection.h"
#"${ABSL_DIR}/absl/numeric/int128.h"
#"${ABSL_DIR}/absl/numeric/bits.h"
#"${ABSL_DIR}/absl/numeric/internal/bits.h"
#"${ABSL_DIR}/absl/numeric/internal/representation.h"
#"${ABSL_DIR}/absl/flags/marshalling.h"
#"${ABSL_DIR}/absl/flags/parse.h"
#"${ABSL_DIR}/absl/flags/internal/commandlineflag.h"
#"${ABSL_DIR}/absl/flags/internal/program_name.h"
#"${ABSL_DIR}/absl/flags/internal/usage.h"
#"${ABSL_DIR}/absl/flags/internal/registry.h"
#"${ABSL_DIR}/absl/debugging/internal/vdso_support.h"
#"${ABSL_DIR}/absl/debugging/stacktrace.h"
#"${ABSL_DIR}/absl/flags/flag.h"
#"${ABSL_DIR}/absl/debugging/internal/elf_mem_image.h"
#"${ABSL_DIR}/absl/debugging/internal/examine_stack.h"
#"${ABSL_DIR}/absl/debugging/internal/demangle.h"
#"${ABSL_DIR}/absl/container/internal/test_instance_tracker.h"
#"${ABSL_DIR}/absl/debugging/internal/address_is_readable.h"
#"${ABSL_DIR}/absl/container/internal/raw_hash_set.h"
#"${ABSL_DIR}/absl/debugging/failure_signal_handler.h"
#"${ABSL_DIR}/absl/container/internal/hash_generator_testing.h"
#"${ABSL_DIR}/absl/container/flat_hash_map.h"
#"${ABSL_DIR}/absl/container/internal/hash_function_defaults.h"
#"${ABSL_DIR}/absl/base/internal/spinlock_wait.h"
#"${ABSL_DIR}/absl/base/log_severity.h"
#"${ABSL_DIR}/absl/base/internal/sysinfo.h"
#"${ABSL_DIR}/absl/base/internal/scoped_set_env.h"
#"${ABSL_DIR}/absl/base/internal/spinlock.h"
#"${ABSL_DIR}/absl/base/internal/raw_logging.h"
#"${ABSL_DIR}/absl/base/dynamic_annotations.h"
#"${ABSL_DIR}/absl/strings/match.h"
#"${ABSL_DIR}/absl/algorithm/container.h"
#"${ABSL_DIR}/absl/types/bad_optional_access.h"
#"${ABSL_DIR}/absl/time/internal/cctz/include/cctz/zone_info_source.h"
#"${ABSL_DIR}/absl/time/time.h"
#"${ABSL_DIR}/absl/time/clock.h"
#"${ABSL_DIR}/absl/synchronization/internal/futex.h"
#"${ABSL_DIR}/absl/synchronization/internal/waiter.h"
#"${ABSL_DIR}/absl/strings/str_split.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/float_conversion.h"
#"${ABSL_DIR}/absl/strings/internal/charconv_parse.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/parser.h"
#"${ABSL_DIR}/absl/status/status_payload_printer.h"
#"${ABSL_DIR}/absl/random/seed_sequences.h"
#"${ABSL_DIR}/absl/strings/charconv.h"
#"${ABSL_DIR}/absl/random/internal/randen.h"
#"${ABSL_DIR}/absl/random/discrete_distribution.h"
#"${ABSL_DIR}/absl/random/internal/randen_hwaes.h"
#"${ABSL_DIR}/absl/hash/internal/hash.h"
#"${ABSL_DIR}/absl/random/internal/nanobenchmark.h"
#"${ABSL_DIR}/absl/hash/internal/city.h"
#"${ABSL_DIR}/absl/hash/internal/low_level_hash.h"
#"${ABSL_DIR}/absl/debugging/symbolize.h"
#"${ABSL_DIR}/absl/debugging/internal/stack_consumption.h"
#"${ABSL_DIR}/absl/flags/internal/flag.h"
#"${ABSL_DIR}/absl/container/internal/hashtablez_sampler.h"
#"${ABSL_DIR}/absl/container/internal/raw_hash_map.h"
#"${ABSL_DIR}/absl/profiling/internal/sample_recorder.h"
#"${ABSL_DIR}/absl/base/internal/unscaledcycleclock.h"
#"${ABSL_DIR}/absl/base/internal/thread_identity.h"
#"${ABSL_DIR}/absl/base/internal/cycleclock.h"
#"${ABSL_DIR}/absl/base/internal/strerror.h"
#"${ABSL_DIR}/absl/flags/usage_config.h"
#"${ABSL_DIR}/absl/utility/utility.h"
#"${ABSL_DIR}/absl/algorithm/algorithm.h"
#"${ABSL_DIR}/absl/base/call_once.h"
#"${ABSL_DIR}/absl/base/const_init.h"
#"${ABSL_DIR}/absl/base/internal/atomic_hook.h"
#"${ABSL_DIR}/absl/base/internal/endian.h"
#"${ABSL_DIR}/absl/base/internal/errno_saver.h"
#"${ABSL_DIR}/absl/base/internal/fast_type_id.h"
#"${ABSL_DIR}/absl/base/internal/identity.h"
#"${ABSL_DIR}/absl/base/internal/low_level_scheduling.h"
#"${ABSL_DIR}/absl/base/internal/per_thread_tls.h"
#"${ABSL_DIR}/absl/base/thread_annotations.h"
#"${ABSL_DIR}/absl/container/inlined_vector.h"
#"${ABSL_DIR}/absl/container/internal/hash_policy_testing.h"
#"${ABSL_DIR}/absl/debugging/internal/stacktrace_config.h"
#"${ABSL_DIR}/absl/debugging/internal/symbolize.h"
#"${ABSL_DIR}/absl/flags/declare.h"
#"${ABSL_DIR}/absl/flags/internal/parse.h"
#"${ABSL_DIR}/absl/memory/memory.h"
#"${ABSL_DIR}/absl/random/bernoulli_distribution.h"
#"${ABSL_DIR}/absl/random/internal/fast_uniform_bits.h"
#"${ABSL_DIR}/absl/random/internal/platform.h"
#"${ABSL_DIR}/absl/random/internal/salted_seed_seq.h"
#"${ABSL_DIR}/absl/random/internal/traits.h"
#"${ABSL_DIR}/absl/strings/internal/str_format/checker.h"
#"${ABSL_DIR}/absl/strings/str_join.h"
#"${ABSL_DIR}/absl/synchronization/internal/graphcycles.h"
#"${ABSL_DIR}/absl/time/internal/cctz/include/cctz/civil_time.h"
#"${ABSL_DIR}/absl/types/compare.h"
#"${ABSL_DIR}/absl/types/span.h"
#"${ABSL_DIR}/absl/base/internal/invoke.h"
#"${ABSL_DIR}/absl/base/internal/hide_ptr.h"
#"${ABSL_DIR}/absl/base/internal/scheduling_mode.h"
#"${ABSL_DIR}/absl/base/internal/tsan_mutex_interface.h"
#"${ABSL_DIR}/absl/base/internal/unaligned_access.h"
#"${ABSL_DIR}/absl/container/internal/inlined_vector.h"
#"${ABSL_DIR}/absl/flags/config.h"
#"${ABSL_DIR}/absl/flags/internal/path_util.h"
#"${ABSL_DIR}/absl/hash/hash.h"
#"${ABSL_DIR}/absl/random/internal/generate_real.h"
#"${ABSL_DIR}/absl/random/internal/iostream_state_saver.h"
#"${ABSL_DIR}/absl/random/internal/randen_engine.h"
#"${ABSL_DIR}/absl/random/internal/randen_traits.h"
#"${ABSL_DIR}/absl/strings/internal/resize_uninitialized.h"
#"${ABSL_DIR}/absl/strings/internal/str_join_internal.h"
#"${ABSL_DIR}/absl/strings/internal/str_split_internal.h"
#"${ABSL_DIR}/absl/strings/str_format.h"
#"${ABSL_DIR}/absl/synchronization/internal/kernel_timeout.h"
#"${ABSL_DIR}/absl/synchronization/internal/per_thread_sem.h"
#"${ABSL_DIR}/absl/types/internal/optional.h"
#"${ABSL_DIR}/absl/types/internal/span.h"
#"${ABSL_DIR}/absl/types/variant.h"
#"${ABSL_DIR}/absl/types/internal/variant.h"
#"${ABSL_DIR}/absl/base/internal/direct_mmap.h"
#"${ABSL_DIR}/absl/base/internal/dynamic_annotations.h"
#"${ABSL_DIR}/absl/container/fixed_array.h"
#"${ABSL_DIR}/absl/container/internal/common.h"
#"${ABSL_DIR}/absl/container/internal/compressed_tuple.h"
#"${ABSL_DIR}/absl/random/internal/fastmath.h"
#"${ABSL_DIR}/absl/random/uniform_int_distribution.h"
#"${ABSL_DIR}/absl/strings/internal/char_map.h"
#"${ABSL_DIR}/absl/strings/strip.h"
#"${ABSL_DIR}/absl/synchronization/internal/create_thread_identity.h"
#"${ABSL_DIR}/absl/container/internal/container_memory.h"
#"${ABSL_DIR}/absl/functional/function_ref.h"
#"${ABSL_DIR}/absl/random/internal/wide_multiply.h"
#"${ABSL_DIR}/absl/container/internal/hash_policy_traits.h"
#"${ABSL_DIR}/absl/functional/internal/function_ref.h"
#"${ABSL_DIR}/absl/functional/bind_front.h"
#"${ABSL_DIR}/absl/functional/internal/front_binder.h"
#"${ABSL_DIR}/absl/base/internal/cycleclock_config.h"
#"${ABSL_DIR}/absl/base/internal/prefetch.h"
#"${ABSL_DIR}/absl/base/internal/unscaledcycleclock_config.h"
#"${ABSL_DIR}/absl/functional/any_invocable.h"
#"${ABSL_DIR}/absl/profiling/internal/exponential_biased.h"
#"${ABSL_DIR}/absl/strings/cord_analysis.h"
#"${ABSL_DIR}/absl/strings/internal/has_absl_stringify.h"
#"${ABSL_DIR}/absl/container/internal/common_policy_traits.h"
#"${ABSL_DIR}/absl/functional/internal/any_invocable.h"
#"${ABSL_DIR}/absl/strings/cord_buffer.h"
#"${ABSL_DIR}/absl/strings/internal/stringify_sink.h"
#"${ABSL_DIR}/absl/cleanup/cleanup.h"
#"${ABSL_DIR}/absl/strings/internal/cord_data_edge.h"
#"${ABSL_DIR}/absl/cleanup/internal/cleanup.h"
#"${ABSL_DIR}/absl/strings/internal/cord_rep_crc.h"
#"${ABSL_DIR}/absl/numeric/int128_have_intrinsic.inc"
#"${ABSL_DIR}/absl/debugging/internal/stacktrace_unimplemented-inl.inc"
#"${ABSL_DIR}/absl/debugging/internal/stacktrace_generic-inl.inc"
#"${ABSL_DIR}/absl/debugging/symbolize_unimplemented.inc"
#"${ABSL_DIR}/absl/debugging/symbolize_darwin.inc"
#"${ABSL_DIR}/absl/base/internal/spinlock_posix.inc"
#"${ABSL_DIR}/absl/time/internal/get_current_time_chrono.inc"
add_library(absl STATIC
"${ABSL_DIR}/absl/base/internal/cycleclock.cc"
"${ABSL_DIR}/absl/base/internal/low_level_alloc.cc"
"${ABSL_DIR}/absl/base/internal/raw_logging.cc"
"${ABSL_DIR}/absl/base/internal/scoped_set_env.cc"
"${ABSL_DIR}/absl/base/internal/spinlock.cc"
"${ABSL_DIR}/absl/base/internal/spinlock_wait.cc"
"${ABSL_DIR}/absl/base/internal/strerror.cc"
"${ABSL_DIR}/absl/base/internal/sysinfo.cc"
"${ABSL_DIR}/absl/base/internal/thread_identity.cc"
"${ABSL_DIR}/absl/base/internal/throw_delegate.cc"
"${ABSL_DIR}/absl/base/internal/unscaledcycleclock.cc"
"${ABSL_DIR}/absl/base/log_severity.cc"
"${ABSL_DIR}/absl/container/internal/hash_generator_testing.cc"
"${ABSL_DIR}/absl/container/internal/hashtablez_sampler.cc"
"${ABSL_DIR}/absl/container/internal/hashtablez_sampler_force_weak_definition.cc"
"${ABSL_DIR}/absl/container/internal/raw_hash_set.cc"
"${ABSL_DIR}/absl/container/internal/test_instance_tracker.cc"
"${ABSL_DIR}/absl/debugging/failure_signal_handler.cc"
"${ABSL_DIR}/absl/debugging/internal/address_is_readable.cc"
"${ABSL_DIR}/absl/debugging/internal/demangle.cc"
"${ABSL_DIR}/absl/debugging/internal/elf_mem_image.cc"
"${ABSL_DIR}/absl/debugging/internal/examine_stack.cc"
"${ABSL_DIR}/absl/debugging/internal/stack_consumption.cc"
"${ABSL_DIR}/absl/debugging/internal/vdso_support.cc"
"${ABSL_DIR}/absl/debugging/stacktrace.cc"
"${ABSL_DIR}/absl/debugging/symbolize.cc"
"${ABSL_DIR}/absl/flags/flag.cc"
"${ABSL_DIR}/absl/flags/flag_test_defs.cc"
"${ABSL_DIR}/absl/flags/internal/commandlineflag.cc"
"${ABSL_DIR}/absl/flags/internal/flag.cc"
"${ABSL_DIR}/absl/flags/internal/program_name.cc"
"${ABSL_DIR}/absl/flags/internal/usage.cc"
"${ABSL_DIR}/absl/flags/marshalling.cc"
"${ABSL_DIR}/absl/flags/parse.cc"
"${ABSL_DIR}/absl/flags/usage.cc"
"${ABSL_DIR}/absl/flags/usage_config.cc"
"${ABSL_DIR}/absl/hash/internal/city.cc"
"${ABSL_DIR}/absl/hash/internal/hash.cc"
"${ABSL_DIR}/absl/numeric/int128.cc"
"${ABSL_DIR}/absl/random/discrete_distribution.cc"
"${ABSL_DIR}/absl/random/gaussian_distribution.cc"
"${ABSL_DIR}/absl/random/internal/chi_square.cc"
"${ABSL_DIR}/absl/random/internal/distribution_test_util.cc"
"${ABSL_DIR}/absl/random/internal/nanobenchmark.cc"
"${ABSL_DIR}/absl/random/internal/pool_urbg.cc"
"${ABSL_DIR}/absl/random/internal/randen.cc"
"${ABSL_DIR}/absl/random/internal/randen_detect.cc"
"${ABSL_DIR}/absl/random/internal/randen_hwaes.cc"
"${ABSL_DIR}/absl/random/internal/randen_slow.cc"
"${ABSL_DIR}/absl/random/internal/seed_material.cc"
"${ABSL_DIR}/absl/random/seed_gen_exception.cc"
"${ABSL_DIR}/absl/random/seed_sequences.cc"
"${ABSL_DIR}/absl/status/status.cc"
"${ABSL_DIR}/absl/status/status_payload_printer.cc"
"${ABSL_DIR}/absl/strings/ascii.cc"
"${ABSL_DIR}/absl/strings/charconv.cc"
"${ABSL_DIR}/absl/strings/cord.cc"
"${ABSL_DIR}/absl/strings/escaping.cc"
"${ABSL_DIR}/absl/strings/internal/charconv_bigint.cc"
"${ABSL_DIR}/absl/strings/internal/charconv_parse.cc"
"${ABSL_DIR}/absl/strings/internal/escaping.cc"
"${ABSL_DIR}/absl/strings/internal/memutil.cc"
"${ABSL_DIR}/absl/strings/internal/ostringstream.cc"
"${ABSL_DIR}/absl/strings/internal/pow10_helper.cc"
"${ABSL_DIR}/absl/strings/internal/str_format/arg.cc"
"${ABSL_DIR}/absl/strings/internal/str_format/bind.cc"
"${ABSL_DIR}/absl/strings/internal/str_format/extension.cc"
"${ABSL_DIR}/absl/strings/internal/str_format/float_conversion.cc"
"${ABSL_DIR}/absl/strings/internal/str_format/output.cc"
"${ABSL_DIR}/absl/strings/internal/str_format/parser.cc"
"${ABSL_DIR}/absl/strings/internal/utf8.cc"
"${ABSL_DIR}/absl/strings/match.cc"
"${ABSL_DIR}/absl/strings/numbers.cc"
"${ABSL_DIR}/absl/strings/str_cat.cc"
"${ABSL_DIR}/absl/strings/str_replace.cc"
"${ABSL_DIR}/absl/strings/str_split.cc"
"${ABSL_DIR}/absl/strings/string_view.cc"
"${ABSL_DIR}/absl/strings/substitute.cc"
"${ABSL_DIR}/absl/synchronization/barrier.cc"
"${ABSL_DIR}/absl/synchronization/blocking_counter.cc"
"${ABSL_DIR}/absl/synchronization/internal/create_thread_identity.cc"
"${ABSL_DIR}/absl/synchronization/internal/graphcycles.cc"
"${ABSL_DIR}/absl/synchronization/internal/per_thread_sem.cc"
"${ABSL_DIR}/absl/synchronization/internal/waiter.cc"
"${ABSL_DIR}/absl/synchronization/notification.cc"
"${ABSL_DIR}/absl/time/civil_time.cc"
"${ABSL_DIR}/absl/time/clock.cc"
"${ABSL_DIR}/absl/time/duration.cc"
"${ABSL_DIR}/absl/time/format.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/civil_time_detail.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_fixed.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_format.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_if.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_impl.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_info.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_libc.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_lookup.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/time_zone_posix.cc"
"${ABSL_DIR}/absl/time/internal/cctz/src/zone_info_source.cc"
"${ABSL_DIR}/absl/time/internal/test_util.cc"
"${ABSL_DIR}/absl/time/time.cc"
"${ABSL_DIR}/absl/types/bad_any_cast.cc"
"${ABSL_DIR}/absl/types/bad_optional_access.cc"
"${ABSL_DIR}/absl/types/bad_variant_access.cc"
)
target_compile_definitions(absl PRIVATE
ABSL_ALLOCATOR_NOTHROW=1
)
target_include_directories(absl PUBLIC
"${ABSL_DIR}"
)

68
BuildLibSRTP.cmake Normal file
View File

@ -0,0 +1,68 @@
# srtp
set(SRTP_DIR "${THIRDPARTY_DIR}/libsrtp")
# libsrtp version matches the one used in Chromium:
# https://chromium.googlesource.com/chromium/deps/libsrtp/+/5b7c744/LIBSRTP_VERSION
# TODO: extract commit hash dynamically instead of hardcoding current $(git rev-parse HEAD)
set(SRTP_COMMIT_HASH "860492290f7d1f25e2bd45da6471bfd4cd4d7add")
add_library(srtp STATIC
"${SRTP_DIR}/crypto/cipher/aes_gcm_ossl.c"
"${SRTP_DIR}/crypto/cipher/aes_icm_ossl.c"
"${SRTP_DIR}/crypto/cipher/cipher.c"
"${SRTP_DIR}/crypto/cipher/null_cipher.c"
"${SRTP_DIR}/crypto/hash/auth.c"
"${SRTP_DIR}/crypto/hash/hmac_ossl.c"
"${SRTP_DIR}/crypto/hash/null_auth.c"
"${SRTP_DIR}/crypto/kernel/alloc.c"
"${SRTP_DIR}/crypto/kernel/crypto_kernel.c"
"${SRTP_DIR}/crypto/kernel/err.c"
"${SRTP_DIR}/crypto/kernel/key.c"
"${SRTP_DIR}/crypto/math/datatypes.c"
"${SRTP_DIR}/crypto/math/stat.c"
"${SRTP_DIR}/crypto/replay/rdb.c"
"${SRTP_DIR}/crypto/replay/rdbx.c"
"${SRTP_DIR}/crypto/replay/ut_sim.c"
"${SRTP_DIR}/srtp/ekt.c"
"${SRTP_DIR}/srtp/srtp.c"
)
# config.h options match the ones used in Chromium:
# https://chromium.googlesource.com/chromium/deps/libsrtp/+/5b7c744/BUILD.gn
target_compile_definitions(srtp PRIVATE
PACKAGE_VERSION="${SRTP_COMMIT_HASH}"
PACKAGE_STRING="${SRTP_COMMIT_HASH}"
HAVE_CONFIG_H
OPENSSL
GCM
HAVE_STDLIB_H
HAVE_STRING_H
HAVE_STDINT_H
HAVE_INTTYPES_H
HAVE_INT16_T
HAVE_INT32_T
HAVE_INT8_T
HAVE_UINT16_T
HAVE_UINT32_T
HAVE_UINT64_T
HAVE_UINT8_T
HAVE_ARPA_INET_H
HAVE_SYS_TYPES_H
HAVE_UNISTD_H
HAVE_ARPA_INET_H
HAVE_NETINET_IN_H
HAVE_SYS_TYPES_H
HAVE_UNISTD_H
)
target_include_directories(srtp PRIVATE
"${STUB_DIR}"
)
target_link_libraries(srtp PUBLIC
usrsctp ssl
)
target_include_directories(srtp PUBLIC
"${SRTP_DIR}/include"
"${SRTP_DIR}/crypto/include"
)

130
BuildOpenH264.cmake Normal file
View File

@ -0,0 +1,130 @@
# OpenH264
set(OPENH264_DIR "${THIRDPARTY_DIR}/openh264")
add_library(openh264 STATIC
"${OPENH264_DIR}/codec/encoder/core/src/au_set.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/deblocking.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/decode_mb_aux.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/encode_mb_aux.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/encoder_data_tables.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/encoder_ext.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/encoder.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/get_intra_predictor.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/md.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/mv_pred.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/nal_encap.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/paraset_strategy.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/picture_handle.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/ratectl.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/ref_list_mgr_svc.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/sample.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/set_mb_syn_cabac.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/set_mb_syn_cavlc.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/slice_multi_threading.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_base_layer_md.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_enc_slice_segment.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_encode_mb.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_encode_slice.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_mode_decision.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_motion_estimate.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_set_mb_syn_cabac.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/svc_set_mb_syn_cavlc.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/wels_preprocess.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/wels_task_base.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/wels_task_encoder.cpp"
"${OPENH264_DIR}/codec/encoder/core/src/wels_task_management.cpp"
"${OPENH264_DIR}/codec/encoder/plus/src/welsEncoderExt.cpp"
"${OPENH264_DIR}/codec/common/src/welsCodecTrace.cpp"
"${OPENH264_DIR}/codec/common/src/common_tables.cpp"
"${OPENH264_DIR}/codec/common/src/copy_mb.cpp"
"${OPENH264_DIR}/codec/common/src/cpu.cpp"
"${OPENH264_DIR}/codec/common/src/crt_util_safe_x.cpp"
"${OPENH264_DIR}/codec/common/src/deblocking_common.cpp"
"${OPENH264_DIR}/codec/common/src/expand_pic.cpp"
"${OPENH264_DIR}/codec/common/src/intra_pred_common.cpp"
"${OPENH264_DIR}/codec/common/src/mc.cpp"
"${OPENH264_DIR}/codec/common/src/memory_align.cpp"
"${OPENH264_DIR}/codec/common/src/sad_common.cpp"
"${OPENH264_DIR}/codec/common/src/WelsTaskThread.cpp"
"${OPENH264_DIR}/codec/common/src/WelsThread.cpp"
"${OPENH264_DIR}/codec/common/src/WelsThreadLib.cpp"
"${OPENH264_DIR}/codec/common/src/WelsThreadPool.cpp"
"${OPENH264_DIR}/codec/common/src/utils.cpp"
"${OPENH264_DIR}/codec/processing/src/adaptivequantization/AdaptiveQuantization.cpp"
"${OPENH264_DIR}/codec/processing/src/backgrounddetection/BackgroundDetection.cpp"
"${OPENH264_DIR}/codec/processing/src/common/memory.cpp"
"${OPENH264_DIR}/codec/processing/src/common/WelsFrameWork.cpp"
"${OPENH264_DIR}/codec/processing/src/common/WelsFrameWorkEx.cpp"
"${OPENH264_DIR}/codec/processing/src/complexityanalysis/ComplexityAnalysis.cpp"
"${OPENH264_DIR}/codec/processing/src/denoise/denoise.cpp"
"${OPENH264_DIR}/codec/processing/src/denoise/denoise_filter.cpp"
"${OPENH264_DIR}/codec/processing/src/downsample/downsample.cpp"
"${OPENH264_DIR}/codec/processing/src/downsample/downsamplefuncs.cpp"
"${OPENH264_DIR}/codec/processing/src/imagerotate/imagerotate.cpp"
"${OPENH264_DIR}/codec/processing/src/imagerotate/imagerotatefuncs.cpp"
"${OPENH264_DIR}/codec/processing/src/scenechangedetection/SceneChangeDetection.cpp"
"${OPENH264_DIR}/codec/processing/src/scrolldetection/ScrollDetection.cpp"
"${OPENH264_DIR}/codec/processing/src/scrolldetection/ScrollDetectionFuncs.cpp"
"${OPENH264_DIR}/codec/processing/src/vaacalc/vaacalcfuncs.cpp"
"${OPENH264_DIR}/codec/processing/src/vaacalc/vaacalculation.cpp"
)
target_include_directories(openh264 PRIVATE
"${OPENH264_DIR}/codec/encoder/core/inc"
"${OPENH264_DIR}/codec/encoder/plus/inc"
"${OPENH264_DIR}/codec/decoder/plus/inc"
"${OPENH264_DIR}/codec/common/inc"
"${OPENH264_DIR}/codec/api/svc"
"${OPENH264_DIR}/codec/processing/interface"
"${OPENH264_DIR}/codec/processing/src/common"
)
if (${ARCHITECTURE} STREQUAL "armv7l")
target_sources(openh264 PRIVATE
"${OPENH264_DIR}/codec/encoder/core/arm/intra_pred_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm/memory_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm/pixel_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm/reconstruct_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm/svc_motion_estimation.S"
"${OPENH264_DIR}/codec/common/arm/copy_mb_neon.S"
"${OPENH264_DIR}/codec/common/arm/deblocking_neon.S"
"${OPENH264_DIR}/codec/common/arm/expand_picture_neon.S"
"${OPENH264_DIR}/codec/common/arm/intra_pred_common_neon.S"
"${OPENH264_DIR}/codec/common/arm/mc_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm/adaptive_quantization.S"
"${OPENH264_DIR}/codec/processing/src/arm/down_sample_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm/pixel_sad_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm/vaa_calc_neon.S"
)
target_include_directories(openh264 PRIVATE
"${OPENH264_DIR}/codec/common/arm"
)
target_compile_definitions(openh264 PRIVATE
HAVE_NEON=1
)
elseif(${ARCHITECTURE} STREQUAL "aarch64")
target_sources(openh264 PRIVATE
"${OPENH264_DIR}/codec/encoder/core/arm64/intra_pred_aarch64_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm64/intra_pred_sad_3_opt_aarch64_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm64/memory_aarch64_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm64/pixel_aarch64_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm64/reconstruct_aarch64_neon.S"
"${OPENH264_DIR}/codec/encoder/core/arm64/svc_motion_estimation_aarch64_neon.S"
"${OPENH264_DIR}/codec/common/arm64/copy_mb_aarch64_neon.S"
"${OPENH264_DIR}/codec/common/arm64/deblocking_aarch64_neon.S"
"${OPENH264_DIR}/codec/common/arm64/expand_picture_aarch64_neon.S"
"${OPENH264_DIR}/codec/common/arm64/intra_pred_common_aarch64_neon.S"
"${OPENH264_DIR}/codec/common/arm64/mc_aarch64_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm64/adaptive_quantization_aarch64_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm64/down_sample_aarch64_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm64/pixel_sad_aarch64_neon.S"
"${OPENH264_DIR}/codec/processing/src/arm64/vaa_calc_aarch64_neon.S"
)
target_include_directories(openh264 PRIVATE
"${OPENH264_DIR}/codec/common/arm64"
)
target_compile_definitions(openh264 PUBLIC
HAVE_NEON_AARCH64=1
)
endif()

58
BuildOpus.cmake Normal file
View File

@ -0,0 +1,58 @@
# opus
set(OPUS_DIR "${THIRDPARTY_DIR}/opus")
ReadVariables("${OPUS_DIR}/celt_sources.mk")
ReadVariables("${OPUS_DIR}/opus_sources.mk")
ReadVariables("${OPUS_DIR}/silk_sources.mk")
Prefix(CELT_SOURCES "${OPUS_DIR}/")
Prefix(OPUS_SOURCES "${OPUS_DIR}/")
Prefix(OPUS_SOURCES_FLOAT "${OPUS_DIR}/")
Prefix(SILK_SOURCES "${OPUS_DIR}/")
Prefix(SILK_SOURCES_FIXED "${OPUS_DIR}/")
Prefix(CELT_SOURCES_ARM "${OPUS_DIR}/")
Prefix(CELT_SOURCES_ARM_ASM "${OPUS_DIR}/")
add_library(opus STATIC
${CELT_SOURCES}
${OPUS_SOURCES}
${OPUS_SOURCES_FLOAT}
${SILK_SOURCES}
${SILK_SOURCES_FIXED}
)
target_compile_definitions(opus PRIVATE
OPUS_BUILD
FIXED_POINT
USE_ALLOCA
HAVE_LRINT
HAVE_LRINTF
)
if (${ARCHITECTURE} STREQUAL "armv7l")
Transform(CELT_SOURCES_ARM_ASM "\\.s$" "_gnu.s")
target_sources(opus PRIVATE
${CELT_SOURCES_ARM}
"${OPUS_DIR}/celt/arm/armopts_gnu.s"
${CELT_SOURCES_ARM_ASM}
)
target_compile_definitions(opus PRIVATE
OPUS_ARM_ASM
OPUS_ARM_INLINE_ASM
OPUS_ARM_INLINE_EDSP
OPUS_ARM_INLINE_MEDIA
OPUS_ARM_INLINE_NEON
OPUS_ARM_MAY_HAVE_NEON
OPUS_ARM_MAY_HAVE_MEDIA
OPUS_ARM_MAY_HAVE_EDSP
)
endif()
target_include_directories(opus PUBLIC
"${OPUS_DIR}/include"
)
target_include_directories(opus PRIVATE
"${OPUS_DIR}/src"
"${OPUS_DIR}/silk"
"${OPUS_DIR}/celt"
"${OPUS_DIR}/silk/fixed"
"${OPUS_DIR}"
)

360
BuildTelegramVoIP.cmake Normal file
View File

@ -0,0 +1,360 @@
# libtgvoip
set(TGVOIP_DIR "${THIRDPARTY_DIR}/libtgvoip")
# TODO move to "${THIRDPARTY_DIR}/libtgvoip/CMakeLists.txt"
add_library(tgvoip STATIC
"${TGVOIP_DIR}/logging.cpp"
"${TGVOIP_DIR}/VoIPController.cpp"
"${TGVOIP_DIR}/VoIPGroupController.cpp"
"${TGVOIP_DIR}/Buffers.cpp"
"${TGVOIP_DIR}/BlockingQueue.cpp"
"${TGVOIP_DIR}/audio/AudioInput.cpp"
"${TGVOIP_DIR}/MediaStreamItf.cpp"
"${TGVOIP_DIR}/audio/AudioOutput.cpp"
"${TGVOIP_DIR}/OpusEncoder.cpp"
"${TGVOIP_DIR}/JitterBuffer.cpp"
"${TGVOIP_DIR}/OpusDecoder.cpp"
"${TGVOIP_DIR}/EchoCanceller.cpp"
"${TGVOIP_DIR}/CongestionControl.cpp"
"${TGVOIP_DIR}/VoIPServerConfig.cpp"
"${TGVOIP_DIR}/audio/Resampler.cpp"
"${TGVOIP_DIR}/NetworkSocket.cpp"
"${TGVOIP_DIR}/os/posix/NetworkSocketPosix.cpp"
"${TGVOIP_DIR}/PacketReassembler.cpp"
"${TGVOIP_DIR}/MessageThread.cpp"
"${TGVOIP_DIR}/json11.cpp"
"${TGVOIP_DIR}/audio/AudioIO.cpp"
"${TGVOIP_DIR}/video/VideoRenderer.cpp"
"${TGVOIP_DIR}/video/VideoSource.cpp"
"${TGVOIP_DIR}/video/ScreamCongestionController.cpp"
)
if (${ARCHITECTURE} STREQUAL "armv7l")
target_compile_definitions(tgvoip PRIVATE
WEBRTC_HAS_NEON
)
elseif(${ARCHITECTURE} STREQUAL "aarch64")
target_compile_definitions(tgvoip PRIVATE
WEBRTC_HAS_NEON
__ARM64_NEON__
)
endif()
set(CC_NEON "cc")
target_sources(tgvoip PRIVATE
"${TGVOIP_DIR}/webrtc_dsp/system_wrappers/source/field_trial.cc"
"${TGVOIP_DIR}/webrtc_dsp/system_wrappers/source/metrics.cc"
"${TGVOIP_DIR}/webrtc_dsp/system_wrappers/source/cpu_features.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/strings/internal/memutil.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/strings/string_view.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/strings/ascii.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/types/bad_optional_access.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/types/optional.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/base/internal/raw_logging.cc"
"${TGVOIP_DIR}/webrtc_dsp/absl/base/internal/throw_delegate.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/race_checker.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/strings/string_builder.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/memory/aligned_malloc.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/timeutils.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/platform_file.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/string_to_number.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/thread_checker_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/stringencode.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/stringutils.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/checks.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/platform_thread.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/criticalsection.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/platform_thread_types.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/event.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/event_tracer.cc"
"${TGVOIP_DIR}/webrtc_dsp/rtc_base/logging_webrtc.cc"
"${TGVOIP_DIR}/webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.cc"
"${TGVOIP_DIR}/webrtc_dsp/third_party/rnnoise/src/kiss_fft.cc"
"${TGVOIP_DIR}/webrtc_dsp/api/audio/audio_frame.cc"
"${TGVOIP_DIR}/webrtc_dsp/api/audio/echo_canceller3_config.cc"
"${TGVOIP_DIR}/webrtc_dsp/api/audio/echo_canceller3_factory.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/third_party/fft/fft.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/rms_level.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/echo_detector/moving_max.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/splitting_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/gain_control_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/ns/nsx_core.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/ns/nsx_core_c.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/ns/ns_core.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/ns/noise_suppression.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/audio_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/typing_detection.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/include/audio_generator_factory.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/include/aec_dump.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/include/audio_processing.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/include/config.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/agc2_common.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/gain_applier.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/limiter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/saturation_protector.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/vad_with_level.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/down_sampler.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/signal_classifier.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/biquad_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/transient/moving_moments.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/transient/wpd_tree.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/transient/wpd_node.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/transient/transient_suppressor.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/transient/transient_detector.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/low_cut_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/level_estimator_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/three_band_filter_bank.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec/echo_cancellation.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec/aec_resampler.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec/aec_core.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/voice_detection_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/echo_cancellation_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc/agc.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc/loudness_histogram.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/agc/utility.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/audio_processing_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/gain_controller2.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/residual_echo_detector.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/noise_suppression_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aecm/aecm_core.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/frame_blocker.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/subtractor.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/aec3_fft.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/suppression_filter.${CC_NEON}"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/block_processor.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/vector_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/erl_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/aec_state.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.${CC_NEON}"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/skew_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/block_framer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/erle_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/reverb_model.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/subtractor_output.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/suppression_gain.${CC_NEON}"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/echo_audibility.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/moving_average.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/aec3_common.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/matched_filter.${CC_NEON}"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/echo_remover.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/block_processor2.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/fft_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.${CC_NEON}"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec3/decimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/standalone_vad.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/pitch_internal.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/vad/gmm.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/utility/ooura_fft.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/utility/delay_estimator.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/window_generator.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/channel_buffer.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/fir_filter_factory.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/wav_header.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/real_fourier_ooura.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/audio_util.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/push_sinc_resampler.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/resampler.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/push_resampler.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/sinc_resampler.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/wav_file.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/third_party/fft4g/fft4g.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/audio_converter.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/real_fourier.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/sparse_fir_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/smoothing_filter.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/fir_filter_c.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/ring_buffer.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/complex_fft.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/levinson_durbin.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/energy.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/downsample_fast.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/splitting_filter1.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/spl_init.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/cross_correlation.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/division_operations.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/auto_correlation.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/get_scaling_square.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/resample.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/min_max_operations.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/filter_ar.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/resample_fractional.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/real_fft.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/randomization_functions.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/copy_set_operations.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/resample_by_2.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/get_hanning_window.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/resample_48khz.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/spl_inl.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/spl_sqrt.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/vad/vad_sp.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/vad/vad.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/vad/webrtc_vad.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/vad/vad_filterbank.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/vad/vad_core.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/vad/vad_gmm.c"
)
if (${ARCHITECTURE} STREQUAL "armv7l" OR ${ARCHITECTURE} STREQUAL "aarch64")
target_sources(tgvoip PRIVATE
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.c"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec/aec_core_neon.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/fir_filter_neon.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/sinc_resampler_neon.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.c"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.c"
)
endif()
if (${ARCHITECTURE} STREQUAL "armv7l")
target_sources(tgvoip PRIVATE
"${TGVOIP_DIR}/webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.S"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.S"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S"
)
endif()
if (${ARCHITECTURE} STREQUAL "x86" OR ${ARCHITECTURE} STREQUAL "x86_64")
target_sources(tgvoip PRIVATE
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.cc"
"${TGVOIP_DIR}/webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/fir_filter_sse.cc"
"${TGVOIP_DIR}/webrtc_dsp/common_audio/resampler/sinc_resampler_sse.cc"
)
endif()
target_compile_definitions(tgvoip PRIVATE
TGVOIP_USE_CUSTOM_CRYPTO
TGVOIP_HAS_CONFIG
TGVOIP_NO_VIDEO
TGVOIP_NO_GROUP_CALLS
TGVOIP_PACKAGE_PATH="org/thunderdog/challegram/voip"
TGVOIP_PEER_TAG_VARIABLE_NAME="peerTag"
TGVOIP_ENDPOINT_CLASS="org/drinkless/td/libcore/telegram/TdApi$CallServer"
USE_KISS_FFT
WEBRTC_APM_DEBUG_DUMP=0
WEBRTC_POSIX
WEBRTC_LINUX
FIXED_POINT
WEBRTC_NS_FLOAT
__STDC_LIMIT_MACROS
)
target_include_directories(tgvoip PRIVATE
"${TGVOIP_DIR}/webrtc_dsp"
.
)
target_compile_options(tgvoip PRIVATE
-frtti -fexceptions -finline-functions -ffast-math -fno-strict-aliasing -Wno-unknown-pragmas
)
target_link_libraries(tgvoip PUBLIC opus)

10
BuildTgCalls.cmake Normal file
View File

@ -0,0 +1,10 @@
# tgcalls
set(TGCALLS_DIR "${THIRDPARTY_DIR}/tgcalls")
# Commit Telegram X currently relies on:
# https://github.com/TelegramMessenger/tgcalls/tree/92640c4db6d99de3754bf5ada8419a40d0c4aac4
# Source files list:
# https://github.com/TelegramMessenger/Telegram-iOS/blob/930d1fcc46e39830e6d590986a6a838c3ff49e27/submodules/TgVoipWebrtc/BUILD

37
BuildUsrSCTP.cmake Normal file
View File

@ -0,0 +1,37 @@
# usrsctp
set(USRSCTP_DIR "${THIRDPARTY_DIR}/usrsctp/usrsctplib")
add_library(usrsctp STATIC
"${USRSCTP_DIR}/netinet/sctp_asconf.c"
"${USRSCTP_DIR}/netinet/sctp_auth.c"
"${USRSCTP_DIR}/netinet/sctp_bsd_addr.c"
"${USRSCTP_DIR}/netinet/sctp_callout.c"
"${USRSCTP_DIR}/netinet/sctp_cc_functions.c"
"${USRSCTP_DIR}/netinet/sctp_crc32.c"
"${USRSCTP_DIR}/netinet/sctp_indata.c"
"${USRSCTP_DIR}/netinet/sctp_input.c"
"${USRSCTP_DIR}/netinet/sctp_output.c"
"${USRSCTP_DIR}/netinet/sctp_pcb.c"
"${USRSCTP_DIR}/netinet/sctp_peeloff.c"
"${USRSCTP_DIR}/netinet/sctp_sha1.c"
"${USRSCTP_DIR}/netinet/sctp_ss_functions.c"
"${USRSCTP_DIR}/netinet/sctp_sysctl.c"
"${USRSCTP_DIR}/netinet/sctp_timer.c"
"${USRSCTP_DIR}/netinet/sctp_userspace.c"
"${USRSCTP_DIR}/netinet/sctp_usrreq.c"
"${USRSCTP_DIR}/netinet/sctputil.c"
"${USRSCTP_DIR}/netinet6/sctp6_usrreq.c"
"${USRSCTP_DIR}/user_environment.c"
"${USRSCTP_DIR}/user_mbuf.c"
"${USRSCTP_DIR}/user_recv_thread.c"
"${USRSCTP_DIR}/user_socket.c"
)
target_compile_definitions(usrsctp PRIVATE
__Userspace__
SCTP_SIMPLE_ALLOCATOR
SCTP_PROCESS_LEVEL_LOCKS
)
target_include_directories(usrsctp PUBLIC
"${USRSCTP_DIR}"
)

2876
BuildWebRTC.cmake Normal file

File diff suppressed because it is too large Load Diff

75
BuildYuv.cmake Normal file
View File

@ -0,0 +1,75 @@
# yuv
set(YUV_DIR "${THIRDPARTY_DIR}/libyuv")
add_library(yuv STATIC
"${YUV_DIR}/source/compare.cc"
"${YUV_DIR}/source/compare_common.cc"
"${YUV_DIR}/source/compare_gcc.cc"
"${YUV_DIR}/source/compare_mmi.cc"
"${YUV_DIR}/source/compare_msa.cc"
"${YUV_DIR}/source/compare_neon.cc"
"${YUV_DIR}/source/compare_neon64.cc"
"${YUV_DIR}/source/compare_win.cc"
"${YUV_DIR}/source/convert.cc"
"${YUV_DIR}/source/convert_argb.cc"
"${YUV_DIR}/source/convert_from.cc"
"${YUV_DIR}/source/convert_from_argb.cc"
"${YUV_DIR}/source/convert_to_argb.cc"
"${YUV_DIR}/source/convert_to_i420.cc"
"${YUV_DIR}/source/cpu_id.cc"
"${YUV_DIR}/source/planar_functions.cc"
"${YUV_DIR}/source/rotate.cc"
"${YUV_DIR}/source/rotate_any.cc"
"${YUV_DIR}/source/rotate_argb.cc"
"${YUV_DIR}/source/rotate_common.cc"
"${YUV_DIR}/source/rotate_gcc.cc"
"${YUV_DIR}/source/rotate_mmi.cc"
"${YUV_DIR}/source/rotate_msa.cc"
"${YUV_DIR}/source/rotate_neon.cc"
"${YUV_DIR}/source/rotate_neon64.cc"
"${YUV_DIR}/source/rotate_win.cc"
"${YUV_DIR}/source/row_any.cc"
"${YUV_DIR}/source/row_common.cc"
"${YUV_DIR}/source/row_gcc.cc"
"${YUV_DIR}/source/row_mmi.cc"
"${YUV_DIR}/source/row_msa.cc"
"${YUV_DIR}/source/row_neon.cc"
"${YUV_DIR}/source/row_neon64.cc"
"${YUV_DIR}/source/row_win.cc"
"${YUV_DIR}/source/scale.cc"
"${YUV_DIR}/source/scale_any.cc"
"${YUV_DIR}/source/scale_argb.cc"
"${YUV_DIR}/source/scale_common.cc"
"${YUV_DIR}/source/scale_gcc.cc"
"${YUV_DIR}/source/scale_mmi.cc"
"${YUV_DIR}/source/scale_msa.cc"
"${YUV_DIR}/source/scale_neon.cc"
"${YUV_DIR}/source/scale_neon64.cc"
"${YUV_DIR}/source/scale_uv.cc"
"${YUV_DIR}/source/scale_win.cc"
"${YUV_DIR}/source/video_common.cc"
)
if(${ARCHITECTURE} STREQUAL "armv7l")
target_sources(yuv PRIVATE
"${YUV_DIR}/source/compare_neon.cc"
"${YUV_DIR}/source/rotate_neon.cc"
"${YUV_DIR}/source/row_neon.cc"
"${YUV_DIR}/source/scale_neon.cc"
)
target_compile_definitions(yuv PRIVATE
LIBYUV_NEON
)
endif()
target_include_directories(yuv PUBLIC
"${YUV_DIR}/include"
)
target_compile_options(yuv PRIVATE
-fexceptions
-finline-functions -ffast-math
-Os
-fno-unwind-tables -fno-asynchronous-unwind-tables
-Wnon-virtual-dtor -Woverloaded-virtual
-Wno-unused-parameter
)

51
CMakeLists.txt Normal file
View File

@ -0,0 +1,51 @@
cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)
project(tgcalls_cli)
EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
set(THIRDPARTY_DIR "${CMAKE_HOME_DIRECTORY}/third_party")
include("${CMAKE_HOME_DIRECTORY}/cmake/ReadVariables.cmake")
include("${CMAKE_HOME_DIRECTORY}/cmake/Prefix.cmake")
include("${CMAKE_HOME_DIRECTORY}/cmake/Join.cmake")
set(SSL_DIR "${THIRDPARTY_DIR}/boringssl")
set(SSL_LIB_PATH "${SSL_DIR}/build/${ANDROID_ABI}/ssl/libssl.a")
set(CRYPTO_LIB_PATH "${SSL_DIR}/build/${ANDROID_ABI}/crypto/libcrypto.a")
# crypto
add_library(crypto STATIC IMPORTED)
set_target_properties(crypto PROPERTIES IMPORTED_LOCATION "${CRYPTO_LIB_PATH}")
# ssl
add_library(ssl STATIC IMPORTED)
set_target_properties(ssl PROPERTIES IMPORTED_LOCATION "${SSL_LIB_PATH}")
target_include_directories(ssl INTERFACE "${SSL_DIR}/include")
# libtgvoip
include("${CMAKE_HOME_DIRECTORY}/BuildTelegramVoIP.cmake")
# usrsctp
include("${CMAKE_HOME_DIRECTORY}/BuildUsrSCTP.cmake")
# srtp
include("${CMAKE_HOME_DIRECTORY}/BuildLibSRTP.cmake")
# openh264
include("${CMAKE_HOME_DIRECTORY}/BuildOpenH264.cmake")
# absl
include("${CMAKE_HOME_DIRECTORY}/BuildAbsl.cmake")
# webrtc
include("${CMAKE_HOME_DIRECTORY}/BuildWebRTC.cmake")
# tgcalls
include("${CMAKE_HOME_DIRECTORY}/BuildTgCalls.cmake")
# yuv
include("${CMAKE_HOME_DIRECTORY}/BuildYuv.cmake")
# opus
include("${CMAKE_HOME_DIRECTORY}/BuildOpus.cmake")
# == Linking dependencies ==

12
cmake/Join.cmake Normal file
View File

@ -0,0 +1,12 @@
function(Join output_var list glue)
set(result "")
foreach(item ${list})
string(LENGTH "${result}" len)
if (${len} EQUAL 0)
string(APPEND result "${item}")
else()
string(APPEND result "${glue}${item}")
endif()
endforeach()
set(${output_var} "${result}" PARENT_SCOPE)
endfunction(Join)

13
cmake/Prefix.cmake Normal file
View File

@ -0,0 +1,13 @@
function(Prefix list prefix)
string(REGEX REPLACE "([^;]+)" "${prefix}\\1" newList "${${list}}")
set(${list} "${newList}" PARENT_SCOPE)
endfunction(Prefix)
function(Transform list regex replacement)
set(newList "")
foreach(line ${${list}})
string(REGEX REPLACE "${regex}" "${replacement}" newLine "${line}")
list(APPEND newList "${newLine}")
endforeach()
set(${list} "${newList}" PARENT_SCOPE)
endfunction(Transform)

34
cmake/ReadVariables.cmake Normal file
View File

@ -0,0 +1,34 @@
# Simple CMake utility to read variables from MK files
# - Gets contents from given file (name or path)
# - Parses the assignment statements
# - Makes the same assignments in the PARENT_SCOPE
if(POLICY CMP0007)
cmake_policy(SET CMP0007 NEW)
endif()
function(ReadVariables MKFile)
file(READ "${MKFile}" FileContents)
string(REGEX REPLACE "\\\\\n *" " " FileContents ${FileContents})
string(REGEX REPLACE "#[^\n]*" "" FileContents ${FileContents})
string(STRIP FileContents ${FileContents})
string(REPLACE "\n" ";" FileLines ${FileContents})
list(REMOVE_ITEM FileLines "")
foreach(line ${FileLines})
string(REGEX REPLACE ":?=" ";" line_split ${line})
list(LENGTH line_split count)
if (count LESS 2)
message(STATUS "Skipping ${line}")
continue()
endif()
list(GET line_split -1 value)
string(STRIP ${value} value)
string(REGEX REPLACE " +" " " value "${value}")
separate_arguments(value)
list(REMOVE_AT line_split -1)
foreach(var_name ${line_split})
string(STRIP ${var_name} var_name)
set(${var_name} ${value} PARENT_SCOPE)
endforeach()
endforeach()
endfunction()

1
stub/config.h Normal file
View File

@ -0,0 +1 @@
// Empty

1
third_party/abseil-cpp vendored Submodule

@ -0,0 +1 @@
Subproject commit f2b52372f7f553a4e9b2558daf2d14d3adf484da

1
third_party/boringssl vendored Submodule

@ -0,0 +1 @@
Subproject commit b3c2c756aeec1c4309447f5247f61d435274da4a

1
third_party/crc32c vendored Submodule

@ -0,0 +1 @@
Subproject commit 21fc8ef30415a635e7351ffa0e5d5367943d4a94

1
third_party/libevent vendored Submodule

@ -0,0 +1 @@
Subproject commit 422a87cd9cfc916fae4b918d63bf2a3d9bc9c40f

1
third_party/libsrtp vendored Submodule

@ -0,0 +1 @@
Subproject commit 860492290f7d1f25e2bd45da6471bfd4cd4d7add

1
third_party/libtgvoip vendored Submodule

@ -0,0 +1 @@
Subproject commit 3df5d624cfead0f00069bcc6df1f586ac4e8d21e

1
third_party/libyuv vendored Submodule

@ -0,0 +1 @@
Subproject commit 88b050f337cc0ca2a51800fe7bf4737222c87344

1
third_party/openh264 vendored Submodule

@ -0,0 +1 @@
Subproject commit a60e28efe227ea8ea760b1e29a8943e371ebe4b3

1
third_party/opus vendored Submodule

@ -0,0 +1 @@
Subproject commit 8cf872a186b96085b1bb3a547afd598354ebeb87

1
third_party/pffft vendored Submodule

@ -0,0 +1 @@
Subproject commit de9c9a8ab9ade3cff08762f888a7ea24c81ac0dc

1
third_party/rnnoise vendored Submodule

@ -0,0 +1 @@
Subproject commit 3b97c7947b92ca521de898f444cccf5a66c8552b

1
third_party/tgcalls vendored Submodule

@ -0,0 +1 @@
Subproject commit 5090576cde46c2c4e05c264f2e6c1ea7a2771d49

1
third_party/usrsctp vendored Submodule

@ -0,0 +1 @@
Subproject commit c1d6cb3bf4344e01e7d0b3157f4e7103d55b0fbf

1
third_party/webrtc vendored Submodule

@ -0,0 +1 @@
Subproject commit a5ada0a83db11a26d9ac6804d767d30c6d2a0b42