diff --git a/.bazelrc b/.bazelrc
index d973e54886..53cb5e58c7 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,13 +1,22 @@
build --strategy=Genrule=local
-build --strategy=SwiftCompile=standalone
build --apple_platform_type=ios
build --cxxopt='-std=c++14'
build --copt='-w'
build --swiftcopt='-Xcc'
build --swiftcopt='-w'
-#build --features=swift.enable_batch_mode
+build --features=swift.enable_batch_mode
build --features=swift.use_global_module_cache
+build --features=swift.cacheable_swiftmodules
build --spawn_strategy=local
-build --swiftcopt=-wmo
-build --swiftcopt='-num-threads'
-build --swiftcopt='16'
+
+#build --swiftcopt=-wmo
+#build --swiftcopt='-num-threads'
+#build --swiftcopt='16'
+build --swiftcopt=-j14
+#build --jobs 16
+
+#build --remote_executor=grpc://localhost:8980
+#build --spawn_strategy=remote
+#build --strategy=SwiftCompile=worker
+#build --strategy=SwiftCompile=remote
+build --strategy=SwiftCompile=local
diff --git a/.bazelrc.swp b/.bazelrc.swp
new file mode 100644
index 0000000000..4f6e5472b0
Binary files /dev/null and b/.bazelrc.swp differ
diff --git a/.gitmodules b/.gitmodules
index 766b93a2ea..ab5edb3778 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -11,3 +11,6 @@
[submodule "build-system/bazel-rules/apple_support"]
path = build-system/bazel-rules/apple_support
url = https://github.com/bazelbuild/apple_support.git
+[submodule "submodules/TgVoip/libtgvoip"]
+ path = submodules/TgVoip/libtgvoip
+ url = https://github.com/telegramdesktop/libtgvoip.git
diff --git a/Makefile b/Makefile
index 28e255e3b1..6d02c28e93 100644
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,10 @@
include Utils.makefile
+APP_VERSION="5.15.1"
+
BUCK_OPTIONS=\
- --config custom.appVersion="5.15.1" \
+ --config custom.appVersion="${APP_VERSION}" \
--config custom.developmentCodeSignIdentity="${DEVELOPMENT_CODE_SIGN_IDENTITY}" \
--config custom.distributionCodeSignIdentity="${DISTRIBUTION_CODE_SIGN_IDENTITY}" \
--config custom.developmentTeam="${DEVELOPMENT_TEAM}" \
@@ -41,6 +43,12 @@ BUCK_OPTIONS=\
BAZEL=$(shell which bazel)
+ifneq ($(BAZEL_CACHE_DIR),)
+ export BAZEL_CACHE_OPTIONS=\
+ --disk_cache="${BAZEL_CACHE_DIR}"
+endif
+
+
build_arm64: check_env
$(BUCK) build \
//Telegram:AppPackage#iphoneos-arm64 \
@@ -397,5 +405,31 @@ temp_project: check_env kill_xcode
$(BUCK) project //Temp:workspace --config custom.mode=project ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS}
open Temp/Telegram_Buck.xcworkspace
-tulsi_project:
- ${HOME}/Applications/Tulsi.app/Contents/MacOS/Tulsi -- --verbose --genconfig Telegram/Telegram.tulsiproj:Default --bazel "${BAZEL}" --build-options ${BAZEL_OPTIONS} --startup-options ${BAZEL_OPTIONS}
+bazel_app_debug_arm64:
+ APP_VERSION="${APP_VERSION}" \
+ build-system/prepare-build.sh distribution
+ "${BAZEL}" build Telegram/Telegram \
+ -c dbg \
+ --ios_multi_cpus=arm64 \
+ --watchos_cpus=armv7k,arm64_32 \
+ --verbose_failures \
+ -s
+
+bazel_app_arm64:
+ APP_VERSION="${APP_VERSION}" \
+ BAZEL_CACHE_DIR="${BAZEL_CACHE_DIR}" \
+ build-system/prepare-build.sh distribution
+ "${BAZEL}" build Telegram/Telegram ${BAZEL_CACHE_OPTIONS} \
+ -c opt \
+ --ios_multi_cpus=arm64 \
+ --watchos_cpus=armv7k,arm64_32 \
+ --objc_enable_binary_stripping=true \
+ --features=dead_strip \
+ --apple_generate_dsym \
+ --output_groups=+dsyms \
+ --verbose_failures
+
+bazel_project: kill_xcode
+ APP_VERSION="${APP_VERSION}" \
+ BAZEL_CACHE_DIR="${BAZEL_CACHE_DIR}" \
+ build-system/generate-xcode-project.sh
diff --git a/Telegram/BUILD b/Telegram/BUILD
index a94347b39b..3fad209128 100644
--- a/Telegram/BUILD
+++ b/Telegram/BUILD
@@ -16,8 +16,8 @@ load("@build_bazel_rules_swift//swift:swift.bzl",
"swift_library",
)
-load("//build-system:info_plist_fragment.bzl",
- "info_plist_fragment",
+load("//build-system:plist_fragment.bzl",
+ "plist_fragment",
)
load(
@@ -25,6 +25,7 @@ load(
"telegram_build_number",
"telegram_version",
"telegram_bundle_id",
+ "telegram_aps_environment",
)
filegroup(
@@ -119,8 +120,9 @@ swift_library(
],
)
-additional_info_plist = info_plist_fragment(
+plist_fragment(
name = "AdditionalInfoPlist",
+ extension = "plist",
template =
"""
CFBundleShortVersionString
@@ -167,6 +169,63 @@ additional_info_plist = info_plist_fragment(
)
)
+official_apple_pay_merchants = [
+ "merchant.ph.telegra.Telegraph",
+ "merchant.yandex.ph.telegra.Telegraph",
+ "merchant.sberbank.ph.telegra.Telegraph",
+ "merchant.sberbank.test.ph.telegra.Telegraph",
+ "merchant.privatbank.test.telergramios",
+ "merchant.privatbank.prod.telergram",
+ "merchant.telegram.tranzzo.test",
+]
+
+apple_pay_merchants = official_apple_pay_merchants if telegram_bundle_id == "ph.telegra.Telegraph" else ""
+
+apple_pay_merchants_fragment = "" if apple_pay_merchants == "" else """
+com.apple.developer.in-app-payments
+
+""" + "\n".join([
+" {}".format(merchant_id) for merchant_id in apple_pay_merchants
+]) + "\n" + """
+
+"""
+
+telegram_entitlements_template = """
+ com.apple.developer.icloud-services
+
+ CloudKit
+ CloudDocuments
+
+ com.apple.developer.icloud-container-identifiers
+
+ iCloud.{telegram_bundle_id}
+
+ aps-environment
+ {telegram_aps_environment}
+ com.apple.developer.associated-domains
+
+ applinks:telegram.me
+ applinks:t.me
+
+ com.apple.developer.siri
+
+ com.apple.security.application-groups
+
+ group.{telegram_bundle_id}
+
+ com.apple.developer.pushkit.unrestricted-voip
+
+""" + apple_pay_merchants_fragment
+
+plist_fragment(
+ name = "TelegramEntitlements",
+ extension = "entitlements",
+ template = telegram_entitlements_template.format(
+ telegram_bundle_id = telegram_bundle_id,
+ telegram_aps_environment = telegram_aps_environment,
+ )
+)
+
filegroup(
name = "TelegramWatchExtensionResources",
srcs = glob([
@@ -223,8 +282,9 @@ objc_library(
],
)
-info_plist_fragment(
+plist_fragment(
name = "WatchVersionInfoPlist",
+ extension = "plist",
template =
"""
CFBundleShortVersionString
@@ -237,8 +297,9 @@ info_plist_fragment(
)
)
-info_plist_fragment(
+plist_fragment(
name = "WatchAppNameInfoPlist",
+ extension = "plist",
template =
"""
CFBundleDisplayName
@@ -246,8 +307,9 @@ info_plist_fragment(
"""
)
-info_plist_fragment(
+plist_fragment(
name = "WatchExtensionNSExtensionInfoPlist",
+ extension = "plist",
template =
"""
NSExtension
@@ -265,8 +327,9 @@ info_plist_fragment(
)
)
-info_plist_fragment(
+plist_fragment(
name = "WatchAppCompanionInfoPlist",
+ extension = "plist",
template =
"""
WKCompanionAppBundleIdentifier
@@ -336,7 +399,7 @@ ios_application(
families = ["iphone", "ipad"],
minimum_os_version = "9.0",
provisioning_profile = "//build-input/data/provisioning-profiles:Telegram.mobileprovision",
- entitlements = "Telegram-iOS/Telegram-iOS-Hockeyapp.entitlements",
+ entitlements = ":TelegramEntitlements.entitlements",
infoplists = [
"Info.plist",
":AdditionalInfoPlist",
diff --git a/build-system/copy-provisioning-profiles.sh b/build-system/copy-provisioning-profiles.sh
index cf9a1d651f..ef676cc5b5 100755
--- a/build-system/copy-provisioning-profiles.sh
+++ b/build-system/copy-provisioning-profiles.sh
@@ -1,103 +1,125 @@
#!/bin/sh
-set -e
-
-if [ "$CODESIGNING_DATA_PATH" = "" ]; then
- >&2 echo "CODESIGNING_DATA_PATH not defined"
- exit 1
-fi
-
-EXPECTED_VARIABLES=(\
- DEVELOPMENT_PROVISIONING_PROFILE_APP \
- DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_SHARE \
- DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_WIDGET \
- DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE \
- DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT \
- DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_INTENTS \
- DEVELOPMENT_PROVISIONING_PROFILE_WATCH_APP \
- DEVELOPMENT_PROVISIONING_PROFILE_WATCH_EXTENSION \
-)
-
-EXPECTED_VARIABLE_NAMES=(\
- Telegram \
- Share \
- Widget \
- NotificationService \
- NotificationContent \
- Intents \
- WatchApp \
- WatchExtension \
-)
-
-SEARCH_NAMES=()
-
-MISSING_VARIABLES="0"
-for VARIABLE_NAME in ${EXPECTED_VARIABLES[@]}; do
- if [ "${!VARIABLE_NAME}" = "" ]; then
- echo "$VARIABLE_NAME not defined"
- MISSING_VARIABLES="1"
- fi
-done
-
-if [ "$MISSING_VARIABLES" == "1" ]; then
- exit 1
-fi
-
-VARIABLE_COUNT=${#EXPECTED_VARIABLES[@]}
-for (( i=0; i<$VARIABLE_COUNT; i=i+1 )); do
- VARIABLE_NAME="${EXPECTED_VARIABLES[$(($i))]}"
- SEARCH_NAMES=("${SEARCH_NAMES[@]}" "${EXPECTED_VARIABLE_NAMES[$i]}" "${!VARIABLE_NAME}")
-done
-
-touch "build-input/data/BUILD"
-
-OUTPUT_DIRECTORY="build-input/data/provisioning-profiles"
-rm -rf "$OUTPUT_DIRECTORY"
-mkdir -p "$OUTPUT_DIRECTORY"
-
-BUILD_PATH="$OUTPUT_DIRECTORY/BUILD"
-touch "$BUILD_PATH"
-
-echo "exports_files([" >> "$BUILD_PATH"
-
-ELEMENT_COUNT=${#SEARCH_NAMES[@]}
-REMAINDER=$(($ELEMENT_COUNT % 2))
-
-if [ $REMAINDER != 0 ]; then
- >&2 echo "Expecting key-value pairs"
- exit 1
-fi
-
-for PROFILE in `find "$CODESIGNING_DATA_PATH" -type f -name "*.mobileprovision"`; do
- PROFILE_DATA=$(security cms -D -i "$PROFILE")
- PROFILE_NAME=$(/usr/libexec/PlistBuddy -c "Print :Name" /dev/stdin <<< $(echo $PROFILE_DATA))
- for (( i=0; i<$ELEMENT_COUNT; i=i+2 )); do
- ID=${SEARCH_NAMES[$i]}
- SEARCH_NAME=${SEARCH_NAMES[$(($i + 1))]}
- if [ "$PROFILE_NAME" = "$SEARCH_NAME" ]; then
- VARIABLE_NAME="FOUND_PROFILE_$ID"
- if [ "${!VARIABLE_NAME}" = "" ]; then
- eval "FOUND_PROFILE_$ID=\"$PROFILE\""
- else
- >&2 echo "Found multiple profiles with name \"$SEARCH_NAME\""
- exit 1
- fi
- fi
- done
-done
-
-for (( i=0; i<$ELEMENT_COUNT; i=i+2 )); do
- ID=${SEARCH_NAMES[$i]}
- SEARCH_NAME=${SEARCH_NAMES[$(($i + 1))]}
- VARIABLE_NAME="FOUND_PROFILE_$ID"
- FOUND_PROFILE="${!VARIABLE_NAME}"
- if [ "$FOUND_PROFILE" = "" ]; then
- >&2 echo "Profile \"$SEARCH_NAME\" not found"
+copy_provisioning_profiles () {
+ if [ "$CODESIGNING_DATA_PATH" = "" ]; then
+ >&2 echo "CODESIGNING_DATA_PATH not defined"
exit 1
fi
- cp "$FOUND_PROFILE" "$OUTPUT_DIRECTORY/$ID.mobileprovision"
- echo " \"$ID.mobileprovision\"," >> $BUILD_PATH
-done
-echo "])" >> "$BUILD_PATH"
+ PROFILES_TYPE="$1"
+ case "$PROFILES_TYPE" in
+ development)
+ EXPECTED_VARIABLES=(\
+ DEVELOPMENT_PROVISIONING_PROFILE_APP \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_SHARE \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_WIDGET \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_INTENTS \
+ DEVELOPMENT_PROVISIONING_PROFILE_WATCH_APP \
+ DEVELOPMENT_PROVISIONING_PROFILE_WATCH_EXTENSION \
+ )
+ ;;
+ distribution)
+ EXPECTED_VARIABLES=(\
+ DISTRIBUTION_PROVISIONING_PROFILE_APP \
+ DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_SHARE \
+ DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_WIDGET \
+ DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE \
+ DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT \
+ DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_INTENTS \
+ DISTRIBUTION_PROVISIONING_PROFILE_WATCH_APP \
+ DISTRIBUTION_PROVISIONING_PROFILE_WATCH_EXTENSION \
+ )
+ ;;
+ *)
+ echo "Unknown build provisioning type: $PROFILES_TYPE"
+ exit 1
+ ;;
+ esac
+
+ EXPECTED_VARIABLE_NAMES=(\
+ Telegram \
+ Share \
+ Widget \
+ NotificationService \
+ NotificationContent \
+ Intents \
+ WatchApp \
+ WatchExtension \
+ )
+
+ local SEARCH_NAMES=()
+
+ local MISSING_VARIABLES="0"
+ for VARIABLE_NAME in ${EXPECTED_VARIABLES[@]}; do
+ if [ "${!VARIABLE_NAME}" = "" ]; then
+ echo "$VARIABLE_NAME not defined"
+ MISSING_VARIABLES="1"
+ fi
+ done
+
+ if [ "$MISSING_VARIABLES" == "1" ]; then
+ exit 1
+ fi
+
+ local VARIABLE_COUNT=${#EXPECTED_VARIABLES[@]}
+ for (( i=0; i<$VARIABLE_COUNT; i=i+1 )); do
+ VARIABLE_NAME="${EXPECTED_VARIABLES[$(($i))]}"
+ SEARCH_NAMES=("${SEARCH_NAMES[@]}" "${EXPECTED_VARIABLE_NAMES[$i]}" "${!VARIABLE_NAME}")
+ done
+
+ local DATA_PATH="build-input/data"
+
+ local OUTPUT_DIRECTORY="$DATA_PATH/provisioning-profiles"
+ rm -rf "$OUTPUT_DIRECTORY"
+ mkdir -p "$OUTPUT_DIRECTORY"
+
+ local BUILD_PATH="$OUTPUT_DIRECTORY/BUILD"
+ touch "$BUILD_PATH"
+
+ echo "exports_files([" >> "$BUILD_PATH"
+
+ local ELEMENT_COUNT=${#SEARCH_NAMES[@]}
+ local REMAINDER=$(($ELEMENT_COUNT % 2))
+
+ if [ $REMAINDER != 0 ]; then
+ >&2 echo "Expecting key-value pairs"
+ exit 1
+ fi
+
+ for PROFILE in `find "$CODESIGNING_DATA_PATH" -type f -name "*.mobileprovision"`; do
+ PROFILE_DATA=$(security cms -D -i "$PROFILE")
+ PROFILE_NAME=$(/usr/libexec/PlistBuddy -c "Print :Name" /dev/stdin <<< $(echo $PROFILE_DATA))
+ for (( i=0; i<$ELEMENT_COUNT; i=i+2 )); do
+ ID=${SEARCH_NAMES[$i]}
+ SEARCH_NAME=${SEARCH_NAMES[$(($i + 1))]}
+ if [ "$PROFILE_NAME" = "$SEARCH_NAME" ]; then
+ VARIABLE_NAME="FOUND_PROFILE_$ID"
+ if [ "${!VARIABLE_NAME}" = "" ]; then
+ eval "FOUND_PROFILE_$ID=\"$PROFILE\""
+ else
+ >&2 echo "Found multiple profiles with name \"$SEARCH_NAME\""
+ exit 1
+ fi
+ fi
+ done
+ done
+
+ for (( i=0; i<$ELEMENT_COUNT; i=i+2 )); do
+ ID=${SEARCH_NAMES[$i]}
+ SEARCH_NAME=${SEARCH_NAMES[$(($i + 1))]}
+ VARIABLE_NAME="FOUND_PROFILE_$ID"
+ FOUND_PROFILE="${!VARIABLE_NAME}"
+ if [ "$FOUND_PROFILE" = "" ]; then
+ >&2 echo "Profile \"$SEARCH_NAME\" not found"
+ exit 1
+ fi
+
+ cp "$FOUND_PROFILE" "$OUTPUT_DIRECTORY/$ID.mobileprovision"
+ echo " \"$ID.mobileprovision\"," >> $BUILD_PATH
+ done
+
+ echo "])" >> "$BUILD_PATH"
+}
diff --git a/build-system/generate-xcode-project.sh b/build-system/generate-xcode-project.sh
index e32fb118ac..99e1d3d1d2 100755
--- a/build-system/generate-xcode-project.sh
+++ b/build-system/generate-xcode-project.sh
@@ -1,4 +1,4 @@
-#!/bin/zsh
+#!/bin/sh
set -e
@@ -28,46 +28,23 @@ for VARIABLE_NAME in ${EXPECTED_VARIABLES[@]}; do
MISSING_VARIABLES="1"
fi
done
-
if [ "$MISSING_VARIABLES" == "1" ]; then
exit 1
fi
-VARIABLES_DIRECTORY="build-input/data"
-mkdir -p "$VARIABLES_DIRECTORY"
-VARIABLES_PATH="$VARIABLES_DIRECTORY/variables.bzl"
-rm -f "$VARIABLES_PATH"
-
GEN_DIRECTORY="build-input/gen/project"
rm -rf "$GEN_DIRECTORY"
mkdir -p "$GEN_DIRECTORY"
-echo "telegram_build_number = \"$BUILD_NUMBER\"" >> "$VARIABLES_PATH"
-echo "telegram_version = \"$APP_VERSION\"" >> "$VARIABLES_PATH"
-echo "telegram_bundle_id = \"$BUNDLE_ID\"" >> "$VARIABLES_PATH"
-echo "telegram_api_id = \"$API_ID\"" >> "$VARIABLES_PATH"
-echo "telegram_api_hash = \"$API_HASH\"" >> "$VARIABLES_PATH"
-echo "telegram_app_center_id = \"$APP_CENTER_ID\"" >> "$VARIABLES_PATH"
-echo "telegram_is_internal_build = \"$IS_INTERNAL_BUILD\"" >> "$VARIABLES_PATH"
-echo "telegram_is_appstore_build = \"$IS_APPSTORE_BUILD\"" >> "$VARIABLES_PATH"
-echo "telegram_appstore_id = \"$APPSTORE_ID\"" >> "$VARIABLES_PATH"
-echo "telegram_app_specific_url_scheme = \"$APP_SPECIFIC_URL_SCHEME\"" >> "$VARIABLES_PATH"
-
BAZEL_OPTIONS=(\
--features=swift.use_global_module_cache \
--spawn_strategy=standalone \
--strategy=SwiftCompile=standalone \
- --define=telegram_build_number="$BUILD_NUMBER" \
- --define=telegram_version="$APP_VERSION" \
- --define=telegram_bundle_id="$BUNDLE_ID" \
- --define=telegram_api_id="$API_ID" \
- --define=telegram_api_hash="$API_HASH" \
- --define=telegram_app_center_id="$APP_CENTER_ID" \
- --define=telegram_is_internal_build="$IS_INTERNAL_BUILD" \
- --define=telegram_is_appstore_build="$IS_APPSTORE_BUILD" \
- --define=telegram_appstore_id="$APPSTORE_ID" \
- --define=telegram_app_specific_url_scheme="$APP_SPECIFIC_URL_SCHEME" \
)
+set -x
+if [ "$BAZEL_CACHE_DIR" != "" ]; then
+ BAZEL_OPTIONS=("${BAZEL_OPTIONS[@]}" --disk_cache="$(echo $BAZEL_CACHE_DIR | sed -e 's/[\/&]/\\&/g')")
+fi
$HOME/Applications/Tulsi.app/Contents/MacOS/Tulsi -- \
--verbose \
diff --git a/build-system/info_plist_fragment.bzl b/build-system/plist_fragment.bzl
similarity index 87%
rename from build-system/info_plist_fragment.bzl
rename to build-system/plist_fragment.bzl
index 6c5e2c9029..4b28670773 100644
--- a/build-system/info_plist_fragment.bzl
+++ b/build-system/plist_fragment.bzl
@@ -2,7 +2,7 @@ load("//build-system:defines.bzl",
"string_value",
)
-def _info_plist_fragment(ctx):
+def _plist_fragment(ctx):
output = ctx.outputs.out
found_keys = list()
@@ -40,12 +40,13 @@ def _info_plist_fragment(ctx):
content = plist_string,
)
-info_plist_fragment = rule(
- implementation = _info_plist_fragment,
+plist_fragment = rule(
+ implementation = _plist_fragment,
attrs = {
+ "extension": attr.string(mandatory = True),
"template": attr.string(mandatory = True),
},
outputs = {
- "out": "%{name}.plist"
+ "out": "%{name}.%{extension}"
},
)
diff --git a/build-system/prepare-build-variables.sh b/build-system/prepare-build-variables.sh
new file mode 100755
index 0000000000..fb098631a9
--- /dev/null
+++ b/build-system/prepare-build-variables.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+set -e
+
+prepare_build_variables () {
+ BUILD_TYPE="$1"
+ case "$BUILD_TYPE" in
+ development)
+ APS_ENVIRONMENT="development"
+ ;;
+ distribution)
+ APS_ENVIRONMENT="production"
+ ;;
+ *)
+ echo "Unknown build provisioning type: $BUILD_TYPE"
+ exit 1
+ ;;
+ esac
+
+ local BAZEL="$(which bazel)"
+ if [ "$BAZEL" = "" ]; then
+ echo "bazel not found in PATH"
+ exit 1
+ fi
+
+ local EXPECTED_VARIABLES=(\
+ BUILD_NUMBER \
+ APP_VERSION \
+ BUNDLE_ID \
+ API_ID \
+ API_HASH \
+ APP_CENTER_ID \
+ IS_INTERNAL_BUILD \
+ IS_APPSTORE_BUILD \
+ APPSTORE_ID \
+ APP_SPECIFIC_URL_SCHEME \
+ )
+
+ local MISSING_VARIABLES="0"
+ for VARIABLE_NAME in ${EXPECTED_VARIABLES[@]}; do
+ if [ "${!VARIABLE_NAME}" = "" ]; then
+ echo "$VARIABLE_NAME not defined"
+ MISSING_VARIABLES="1"
+ fi
+ done
+
+ if [ "$MISSING_VARIABLES" == "1" ]; then
+ exit 1
+ fi
+
+ local VARIABLES_DIRECTORY="build-input/data"
+ mkdir -p "$VARIABLES_DIRECTORY"
+ local VARIABLES_PATH="$VARIABLES_DIRECTORY/variables.bzl"
+ rm -f "$VARIABLES_PATH"
+
+ echo "telegram_build_number = \"$BUILD_NUMBER\"" >> "$VARIABLES_PATH"
+ echo "telegram_version = \"$APP_VERSION\"" >> "$VARIABLES_PATH"
+ echo "telegram_bundle_id = \"$BUNDLE_ID\"" >> "$VARIABLES_PATH"
+ echo "telegram_api_id = \"$API_ID\"" >> "$VARIABLES_PATH"
+ echo "telegram_api_hash = \"$API_HASH\"" >> "$VARIABLES_PATH"
+ echo "telegram_app_center_id = \"$APP_CENTER_ID\"" >> "$VARIABLES_PATH"
+ echo "telegram_is_internal_build = \"$IS_INTERNAL_BUILD\"" >> "$VARIABLES_PATH"
+ echo "telegram_is_appstore_build = \"$IS_APPSTORE_BUILD\"" >> "$VARIABLES_PATH"
+ echo "telegram_appstore_id = \"$APPSTORE_ID\"" >> "$VARIABLES_PATH"
+ echo "telegram_app_specific_url_scheme = \"$APP_SPECIFIC_URL_SCHEME\"" >> "$VARIABLES_PATH"
+ echo "telegram_aps_environment = \"$APS_ENVIRONMENT\"" >> "$VARIABLES_PATH"
+}
diff --git a/build-system/prepare-build.sh b/build-system/prepare-build.sh
new file mode 100755
index 0000000000..c65df066f1
--- /dev/null
+++ b/build-system/prepare-build.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+set -e
+
+BUILD_TYPE="$1"
+case "$BUILD_TYPE" in
+ development)
+ PROFILES_TYPE="development"
+ ;;
+ distribution)
+ PROFILES_TYPE="distribution"
+ ;;
+ *)
+ echo "Unknown build provisioning type: $BUILD_TYPE"
+ exit 1
+ ;;
+esac
+
+BASE_PATH=$(dirname $0)
+
+DATA_DIRECTORY="build-input/data"
+rm -rf "$DATA_DIRECTORY"
+mkdir -p "$DATA_DIRECTORY"
+touch "$DATA_DIRECTORY/BUILD"
+
+source "$BASE_PATH/copy-provisioning-profiles.sh"
+source "$BASE_PATH/prepare-build-variables.sh"
+
+echo "Copying provisioning profiles..."
+copy_provisioning_profiles "$PROFILES_TYPE"
+
+echo "Preparing build variables..."
+prepare_build_variables "$BUILD_TYPE"
diff --git a/submodules/Display/Source/Nodes/ButtonNode.swift b/submodules/Display/Source/Nodes/ButtonNode.swift
index 1e3958489e..9b68afc19f 100644
--- a/submodules/Display/Source/Nodes/ButtonNode.swift
+++ b/submodules/Display/Source/Nodes/ButtonNode.swift
@@ -279,4 +279,6 @@ open class ASButtonNode: ASControlNode {
self.backgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
self.highlightedBackgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
}
+
+ func f2() {print("test5") }
}
diff --git a/submodules/TelegramUI/BUILD b/submodules/TelegramUI/BUILD
index a7e7824561..ce54d7e777 100644
--- a/submodules/TelegramUI/BUILD
+++ b/submodules/TelegramUI/BUILD
@@ -35,7 +35,7 @@ swift_library(
"//submodules/TelegramPresentationData:TelegramPresentationData",
"//submodules/AccountContext:AccountContext",
"//submodules/LegacyComponents:LegacyComponents",
- "//submodules/libtgvoip:libtgvoip",
+ "//submodules/TgVoip:TgVoip",
"//submodules/lottie-ios:Lottie",
"//submodules/FFMpegBinding:FFMpegBinding",
"//submodules/WebPBinding:WebPBinding",
diff --git a/submodules/TelegramVoip/BUILD b/submodules/TelegramVoip/BUILD
index 97c3c4fa39..0fa6b09a6d 100644
--- a/submodules/TelegramVoip/BUILD
+++ b/submodules/TelegramVoip/BUILD
@@ -12,7 +12,7 @@ swift_library(
"//submodules/SyncCore:SyncCore",
"//submodules/Postbox:Postbox",
"//submodules/TelegramUIPreferences:TelegramUIPreferences",
- "//submodules/libtgvoip:libtgvoip",
+ "//submodules/TgVoip:TgVoip",
],
visibility = [
"//visibility:public",
diff --git a/submodules/TelegramVoip/Sources/OngoingCallContext.swift b/submodules/TelegramVoip/Sources/OngoingCallContext.swift
index 210144168a..a884f06c50 100644
--- a/submodules/TelegramVoip/Sources/OngoingCallContext.swift
+++ b/submodules/TelegramVoip/Sources/OngoingCallContext.swift
@@ -4,7 +4,7 @@ import TelegramCore
import SyncCore
import Postbox
import TelegramUIPreferences
-import libtgvoip
+import TgVoip
private func callConnectionDescription(_ connection: CallSessionConnection) -> OngoingCallConnectionDescription {
return OngoingCallConnectionDescription(connectionId: connection.id, ip: connection.ip, ipv6: connection.ipv6, port: connection.port, peerTag: connection.peerTag)
diff --git a/submodules/libtgvoip/BUCK b/submodules/TgVoip/BUCK
similarity index 63%
rename from submodules/libtgvoip/BUCK
rename to submodules/TgVoip/BUCK
index 6435a94a45..cb8649b287 100644
--- a/submodules/libtgvoip/BUCK
+++ b/submodules/TgVoip/BUCK
@@ -3,36 +3,36 @@ load("//Config:buck_rule_macros.bzl", "static_library", "glob_map", "glob_sub_ma
static_library(
name = "libtgvoip",
srcs = glob([
- "*.m",
- "*.mm",
- "*.cpp",
- "audio/*.cpp",
- "video/*.cpp",
- "os/darwin/*.m",
- "os/darwin/*.mm",
- "os/darwin/*.cpp",
- "os/posix/*.cpp",
- "webrtc_dsp/**/*.c",
- "webrtc_dsp/**/*.cc",
- "webrtc_dsp/**/*.cpp",
- ], exclude = ["os/darwin/*OSX*"]),
+ "libtgvoip/*.m",
+ "libtgvoip/*.mm",
+ "libtgvoip/*.cpp",
+ "libtgvoip/audio/*.cpp",
+ "libtgvoip/video/*.cpp",
+ "libtgvoip/os/darwin/*.m",
+ "libtgvoip/os/darwin/*.mm",
+ "libtgvoip/os/darwin/*.cpp",
+ "libtgvoip/os/posix/*.cpp",
+ "libtgvoip/webrtc_dsp/**/*.c",
+ "libtgvoip/webrtc_dsp/**/*.cc",
+ "libtgvoip/webrtc_dsp/**/*.cpp",
+ ], exclude = ["libtgvoip/os/darwin/*OSX*"]),
has_cpp = True,
headers = merge_maps([
glob_map(glob([
- "*.h",
- "audio/*.h",
- "video/*.h",
+ "libtgvoip/*.h",
+ "libtgvoip/audio/*.h",
+ "libtgvoip/video/*.h",
])),
glob_map(glob([
- "os/darwin/*.h",
- ], exclude = ["os/darwin/*OSX*"])),
- glob_sub_map("webrtc_dsp/", [
- "webrtc_dsp/**/*.h",
+ "libtgvoip/os/darwin/*.h",
+ ], exclude = ["libtgvoip/os/darwin/*OSX*"])),
+ glob_sub_map("libtgvoip/webrtc_dsp/", [
+ "libtgvoip/webrtc_dsp/**/*.h",
]),
]),
exported_headers = glob([
- "OngoingCallThreadLocalContext.h"
- ], exclude = ["libtgvoip.h"]),
+ "libtgvoip/OngoingCallThreadLocalContext.h"
+ ], exclude = ["libtgvoip/libtgvoip.h"]),
platform_compiler_flags = [
('arm.*', [
'-DTGVOIP_USE_CUSTOM_CRYPTO',
diff --git a/submodules/TgVoip/BUILD b/submodules/TgVoip/BUILD
new file mode 100644
index 0000000000..9ea7e9af6a
--- /dev/null
+++ b/submodules/TgVoip/BUILD
@@ -0,0 +1,74 @@
+
+copts_arm = [
+ "-DTGVOIP_USE_CUSTOM_CRYPTO",
+ "-DWEBRTC_APM_DEBUG_DUMP=0",
+ "-DWEBRTC_POSIX",
+ "-DTGVOIP_HAVE_TGLOG",
+ "-DWEBRTC_NS_FLOAT",
+ "-DWEBRTC_IOS",
+ "-DWEBRTC_HAS_NEON",
+]
+
+copts_x86 = [
+ "-DTGVOIP_USE_CUSTOM_CRYPTO",
+ "-DWEBRTC_APM_DEBUG_DUMP=0",
+ "-DWEBRTC_POSIX",
+ "-DTGVOIP_HAVE_TGLOG",
+ "-DWEBRTC_NS_FLOAT",
+ "-DWEBRTC_IOS",
+]
+
+objc_library(
+ name = "TgVoip",
+ enable_modules = True,
+ module_name = "TgVoip",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.mm",
+ "Sources/**/*.h",
+ "libtgvoip/*.m",
+ "libtgvoip/*.mm",
+ "libtgvoip/*.cpp",
+ "libtgvoip/audio/*.cpp",
+ "libtgvoip/video/*.cpp",
+ "libtgvoip/os/darwin/*.m",
+ "libtgvoip/os/darwin/*.mm",
+ "libtgvoip/os/darwin/*.cpp",
+ "libtgvoip/os/posix/*.cpp",
+ "libtgvoip/webrtc_dsp/**/*.c",
+ "libtgvoip/webrtc_dsp/**/*.cc",
+ "libtgvoip/webrtc_dsp/**/*.cpp",
+ ], exclude = ["libtgvoip/os/darwin/*OSX*"]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ copts = [
+ "-Isubmodules/TgVoip/PublicHeaders/TgVoip",
+ "-Isubmodules/TgVoip/libtgvoip",
+ "-Isubmodules/TgVoip/libtgvoip/webrtc_dsp",
+ "-DTGVOIP_USE_INSTALLED_OPUS",
+ ] + select({
+ "@build_bazel_rules_apple//apple:ios_armv7": copts_arm,
+ "@build_bazel_rules_apple//apple:ios_arm64": copts_arm,
+ "@build_bazel_rules_apple//apple:ios_x86_64": copts_x86,
+ }),
+ includes = [
+ "PublicHeaders",
+ ],
+ deps = [
+ "//submodules/MtProtoKit:MtProtoKit",
+ "//submodules/Opus:opus",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ "UIKit",
+ "AudioToolbox",
+ "VideoToolbox",
+ "CoreTelephony",
+ "CoreMedia",
+ "AVFoundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/libtgvoip/PublicHeaders/libtgvoip/OngoingCallThreadLocalContext.h b/submodules/TgVoip/PublicHeaders/TgVoip/OngoingCallThreadLocalContext.h
similarity index 100%
rename from submodules/libtgvoip/PublicHeaders/libtgvoip/OngoingCallThreadLocalContext.h
rename to submodules/TgVoip/PublicHeaders/TgVoip/OngoingCallThreadLocalContext.h
diff --git a/submodules/TgVoip/PublicHeaders/TgVoip/OngoingCallThreadLocalContext.mm b/submodules/TgVoip/PublicHeaders/TgVoip/OngoingCallThreadLocalContext.mm
new file mode 100644
index 0000000000..c98bcf146f
--- /dev/null
+++ b/submodules/TgVoip/PublicHeaders/TgVoip/OngoingCallThreadLocalContext.mm
@@ -0,0 +1,418 @@
+#import "OngoingCallThreadLocalContext.h"
+
+#import "VoIPController.h"
+#import "VoIPServerConfig.h"
+#import "os/darwin/SetupLogging.h"
+
+#ifdef BUCK
+#import
+#else
+#import
+#endif
+
+static void TGCallAesIgeEncrypt(uint8_t *inBytes, uint8_t *outBytes, size_t length, uint8_t *key, uint8_t *iv) {
+ MTAesEncryptRaw(inBytes, outBytes, length, key, iv);
+}
+
+static void TGCallAesIgeDecrypt(uint8_t *inBytes, uint8_t *outBytes, size_t length, uint8_t *key, uint8_t *iv) {
+ MTAesDecryptRaw(inBytes, outBytes, length, key, iv);
+}
+
+static void TGCallSha1(uint8_t *msg, size_t length, uint8_t *output) {
+ MTRawSha1(msg, length, output);
+}
+
+static void TGCallSha256(uint8_t *msg, size_t length, uint8_t *output) {
+ MTRawSha256(msg, length, output);
+}
+
+static void TGCallAesCtrEncrypt(uint8_t *inOut, size_t length, uint8_t *key, uint8_t *iv, uint8_t *ecount, uint32_t *num) {
+ uint8_t *outData = (uint8_t *)malloc(length);
+ MTAesCtr *aesCtr = [[MTAesCtr alloc] initWithKey:key keyLength:32 iv:iv ecount:ecount num:*num];
+ [aesCtr encryptIn:inOut out:outData len:length];
+ memcpy(inOut, outData, length);
+ free(outData);
+
+ [aesCtr getIv:iv];
+
+ memcpy(ecount, [aesCtr ecount], 16);
+ *num = [aesCtr num];
+}
+
+static void TGCallRandomBytes(uint8_t *buffer, size_t length) {
+ arc4random_buf(buffer, length);
+}
+
+@implementation OngoingCallConnectionDescription
+
+- (instancetype _Nonnull)initWithConnectionId:(int64_t)connectionId ip:(NSString * _Nonnull)ip ipv6:(NSString * _Nonnull)ipv6 port:(int32_t)port peerTag:(NSData * _Nonnull)peerTag {
+ self = [super init];
+ if (self != nil) {
+ _connectionId = connectionId;
+ _ip = ip;
+ _ipv6 = ipv6;
+ _port = port;
+ _peerTag = peerTag;
+ }
+ return self;
+}
+
+@end
+
+static MTAtomic *callContexts() {
+ static MTAtomic *instance = nil;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ instance = [[MTAtomic alloc] initWithValue:[[NSMutableDictionary alloc] init]];
+ });
+ return instance;
+}
+
+@interface OngoingCallThreadLocalContextReference : NSObject
+
+@property (nonatomic, weak) OngoingCallThreadLocalContext *context;
+@property (nonatomic, strong, readonly) id queue;
+
+@end
+
+@implementation OngoingCallThreadLocalContextReference
+
+- (instancetype)initWithContext:(OngoingCallThreadLocalContext *)context queue:(id)queue {
+ self = [super init];
+ if (self != nil) {
+ self.context = context;
+ _queue = queue;
+ }
+ return self;
+}
+
+@end
+
+static int32_t nextId = 1;
+
+static int32_t addContext(OngoingCallThreadLocalContext *context, id queue) {
+ int32_t contextId = OSAtomicIncrement32(&nextId);
+ [callContexts() with:^id(NSMutableDictionary *dict) {
+ dict[@(contextId)] = [[OngoingCallThreadLocalContextReference alloc] initWithContext:context queue:queue];
+ return nil;
+ }];
+ return contextId;
+}
+
+static void removeContext(int32_t contextId) {
+ [callContexts() with:^id(NSMutableDictionary *dict) {
+ [dict removeObjectForKey:@(contextId)];
+ return nil;
+ }];
+}
+
+static void withContext(int32_t contextId, void (^f)(OngoingCallThreadLocalContext *)) {
+ __block OngoingCallThreadLocalContextReference *reference = nil;
+ [callContexts() with:^id(NSMutableDictionary *dict) {
+ reference = dict[@(contextId)];
+ return nil;
+ }];
+ if (reference != nil) {
+ [reference.queue dispatch:^{
+ __strong OngoingCallThreadLocalContext *context = reference.context;
+ if (context != nil) {
+ f(context);
+ }
+ }];
+ }
+}
+
+@interface OngoingCallThreadLocalContext () {
+ id _queue;
+ int32_t _contextId;
+
+ OngoingCallNetworkType _networkType;
+ NSTimeInterval _callReceiveTimeout;
+ NSTimeInterval _callRingTimeout;
+ NSTimeInterval _callConnectTimeout;
+ NSTimeInterval _callPacketTimeout;
+ int32_t _dataSavingMode;
+
+ tgvoip::VoIPController *_controller;
+
+ OngoingCallState _state;
+ int32_t _signalBars;
+ NSData *_lastDerivedState;
+}
+
+- (void)controllerStateChanged:(int)state;
+- (void)signalBarsChanged:(int32_t)signalBars;
+
+@end
+
+static void controllerStateCallback(tgvoip::VoIPController *controller, int state) {
+ int32_t contextId = (int32_t)((intptr_t)controller->implData);
+ withContext(contextId, ^(OngoingCallThreadLocalContext *context) {
+ [context controllerStateChanged:state];
+ });
+}
+
+static void signalBarsCallback(tgvoip::VoIPController *controller, int signalBars) {
+ int32_t contextId = (int32_t)((intptr_t)controller->implData);
+ withContext(contextId, ^(OngoingCallThreadLocalContext *context) {
+ [context signalBarsChanged:(int32_t)signalBars];
+ });
+}
+
+@implementation VoipProxyServer
+
+- (instancetype _Nonnull)initWithHost:(NSString * _Nonnull)host port:(int32_t)port username:(NSString * _Nullable)username password:(NSString * _Nullable)password {
+ self = [super init];
+ if (self != nil) {
+ _host = host;
+ _port = port;
+ _username = username;
+ _password = password;
+ }
+ return self;
+}
+
+@end
+
+static int callControllerNetworkTypeForType(OngoingCallNetworkType type) {
+ switch (type) {
+ case OngoingCallNetworkTypeWifi:
+ return tgvoip::NET_TYPE_WIFI;
+ case OngoingCallNetworkTypeCellularGprs:
+ return tgvoip::NET_TYPE_GPRS;
+ case OngoingCallNetworkTypeCellular3g:
+ return tgvoip::NET_TYPE_3G;
+ case OngoingCallNetworkTypeCellularLte:
+ return tgvoip::NET_TYPE_LTE;
+ default:
+ return tgvoip::NET_TYPE_WIFI;
+ }
+}
+
+static int callControllerDataSavingForType(OngoingCallDataSaving type) {
+ switch (type) {
+ case OngoingCallDataSavingNever:
+ return tgvoip::DATA_SAVING_NEVER;
+ case OngoingCallDataSavingCellular:
+ return tgvoip::DATA_SAVING_MOBILE;
+ case OngoingCallDataSavingAlways:
+ return tgvoip::DATA_SAVING_ALWAYS;
+ default:
+ return tgvoip::DATA_SAVING_NEVER;
+ }
+}
+
+@implementation OngoingCallThreadLocalContext
+
++ (void)setupLoggingFunction:(void (*)(NSString *))loggingFunction {
+ TGVoipLoggingFunction = loggingFunction;
+}
+
++ (void)applyServerConfig:(NSString *)string {
+ if (string.length != 0) {
+ tgvoip::ServerConfig::GetSharedInstance()->Update(std::string(string.UTF8String));
+ }
+}
+
++ (int32_t)maxLayer {
+ return tgvoip::VoIPController::GetConnectionMaxLayer();
+}
+
+- (instancetype _Nonnull)initWithQueue:(id _Nonnull)queue proxy:(VoipProxyServer * _Nullable)proxy networkType:(OngoingCallNetworkType)networkType dataSaving:(OngoingCallDataSaving)dataSaving derivedState:(NSData * _Nonnull)derivedState {
+ self = [super init];
+ if (self != nil) {
+ _queue = queue;
+ assert([queue isCurrent]);
+ _contextId = addContext(self, queue);
+
+ _callReceiveTimeout = 20.0;
+ _callRingTimeout = 90.0;
+ _callConnectTimeout = 30.0;
+ _callPacketTimeout = 10.0;
+ _dataSavingMode = callControllerDataSavingForType(dataSaving);
+ _networkType = networkType;
+
+ _controller = new tgvoip::VoIPController();
+ _controller->implData = (void *)((intptr_t)_contextId);
+ std::vector derivedStateValue;
+ derivedStateValue.resize(derivedState.length);
+ [derivedState getBytes:derivedStateValue.data() length:derivedState.length];
+ _controller->SetPersistentState(derivedStateValue);
+
+ if (proxy != nil) {
+ _controller->SetProxy(tgvoip::PROXY_SOCKS5, proxy.host.UTF8String, (uint16_t)proxy.port, proxy.username.UTF8String ?: "", proxy.password.UTF8String ?: "");
+ }
+
+ auto callbacks = tgvoip::VoIPController::Callbacks();
+ callbacks.connectionStateChanged = &controllerStateCallback;
+ callbacks.groupCallKeyReceived = NULL;
+ callbacks.groupCallKeySent = NULL;
+ callbacks.signalBarCountChanged = &signalBarsCallback;
+ callbacks.upgradeToGroupCallRequested = NULL;
+ _controller->SetCallbacks(callbacks);
+
+ tgvoip::VoIPController::crypto.sha1 = &TGCallSha1;
+ tgvoip::VoIPController::crypto.sha256 = &TGCallSha256;
+ tgvoip::VoIPController::crypto.rand_bytes = &TGCallRandomBytes;
+ tgvoip::VoIPController::crypto.aes_ige_encrypt = &TGCallAesIgeEncrypt;
+ tgvoip::VoIPController::crypto.aes_ige_decrypt = &TGCallAesIgeDecrypt;
+ tgvoip::VoIPController::crypto.aes_ctr_encrypt = &TGCallAesCtrEncrypt;
+
+ _state = OngoingCallStateInitializing;
+ _signalBars = -1;
+ }
+ return self;
+}
+
+- (void)dealloc {
+ assert([_queue isCurrent]);
+ removeContext(_contextId);
+ if (_controller != NULL) {
+ [self stop:nil];
+ }
+}
+
+- (void)startWithKey:(NSData * _Nonnull)key isOutgoing:(bool)isOutgoing primaryConnection:(OngoingCallConnectionDescription * _Nonnull)primaryConnection alternativeConnections:(NSArray * _Nonnull)alternativeConnections maxLayer:(int32_t)maxLayer allowP2P:(BOOL)allowP2P logPath:(NSString * _Nonnull)logPath {
+ std::vector endpoints;
+ NSArray *connections = [@[primaryConnection] arrayByAddingObjectsFromArray:alternativeConnections];
+ for (OngoingCallConnectionDescription *connection in connections) {
+ struct in_addr addrIpV4;
+ if (!inet_aton(connection.ip.UTF8String, &addrIpV4)) {
+ NSLog(@"CallSession: invalid ipv4 address");
+ }
+
+ struct in6_addr addrIpV6;
+ if (!inet_pton(AF_INET6, connection.ipv6.UTF8String, &addrIpV6)) {
+ NSLog(@"CallSession: invalid ipv6 address");
+ }
+
+ tgvoip::IPv4Address address(std::string(connection.ip.UTF8String));
+ tgvoip::IPv6Address addressv6(std::string(connection.ipv6.UTF8String));
+ unsigned char peerTag[16];
+ [connection.peerTag getBytes:peerTag length:16];
+ endpoints.push_back(tgvoip::Endpoint(connection.connectionId, (uint16_t)connection.port, address, addressv6, tgvoip::Endpoint::Type::UDP_RELAY, peerTag));
+ }
+
+ tgvoip::VoIPController::Config config(_callConnectTimeout, _callPacketTimeout, _dataSavingMode, false, true, true);
+ config.logFilePath = logPath.length > 0 ? std::string(logPath.UTF8String) : "";
+ config.statsDumpFilePath = "";
+
+ if (_controller != nil) {
+ _controller->SetConfig(config);
+
+ _controller->SetNetworkType(callControllerNetworkTypeForType(_networkType));
+ _controller->SetEncryptionKey((char *)key.bytes, isOutgoing);
+ _controller->SetRemoteEndpoints(endpoints, allowP2P, maxLayer);
+ _controller->Start();
+
+ _controller->Connect();
+ }
+}
+
+- (void)stop:(void (^)(NSString *, int64_t, int64_t, int64_t, int64_t))completion {
+ if (_controller != nil) {
+ _controller->Stop();
+
+ auto debugString = _controller->GetDebugLog();
+ NSString *debugLog = [NSString stringWithUTF8String:debugString.c_str()];
+
+ tgvoip::VoIPController::TrafficStats stats;
+ _controller->GetStats(&stats);
+ std::vector derivedStateValue = _controller->GetPersistentState();
+ _lastDerivedState = [[NSData alloc] initWithBytes:derivedStateValue.data() length:derivedStateValue.size()];
+ delete _controller;
+ _controller = NULL;
+
+ if (completion) {
+ completion(debugLog, stats.bytesSentWifi, stats.bytesRecvdWifi, stats.bytesSentMobile, stats.bytesRecvdMobile);
+ }
+ }
+}
+
+- (bool)needRate {
+ if (_controller != nil) {
+ return _controller->NeedRate();
+ } else {
+ return false;
+ }
+}
+
+- (NSString *)debugInfo {
+ if (_controller != nil) {
+ auto rawDebugString = _controller->GetDebugString();
+ return [NSString stringWithUTF8String:rawDebugString.c_str()];
+ } else {
+ return nil;
+ }
+}
+
+- (NSString *)version {
+ if (_controller != nil) {
+ return [NSString stringWithUTF8String:_controller->GetVersion()];
+ } else {
+ return nil;
+ }
+}
+
+- (NSData * _Nonnull)getDerivedState {
+ if (_controller != nil) {
+ std::vector derivedStateValue = _controller->GetPersistentState();
+ return [[NSData alloc] initWithBytes:derivedStateValue.data() length:derivedStateValue.size()];
+ } else if (_lastDerivedState != nil) {
+ return _lastDerivedState;
+ } else {
+ return [NSData data];
+ }
+}
+
+- (void)controllerStateChanged:(int)state {
+ OngoingCallState callState = OngoingCallStateInitializing;
+ switch (state) {
+ case tgvoip::STATE_ESTABLISHED:
+ callState = OngoingCallStateConnected;
+ break;
+ case tgvoip::STATE_FAILED:
+ callState = OngoingCallStateFailed;
+ break;
+ case tgvoip::STATE_RECONNECTING:
+ callState = OngoingCallStateReconnecting;
+ break;
+ default:
+ break;
+ }
+
+ if (callState != _state) {
+ _state = callState;
+
+ if (_stateChanged) {
+ _stateChanged(callState);
+ }
+ }
+}
+
+- (void)signalBarsChanged:(int32_t)signalBars {
+ if (signalBars != _signalBars) {
+ _signalBars = signalBars;
+
+ if (_signalBarsChanged) {
+ _signalBarsChanged(signalBars);
+ }
+ }
+}
+
+- (void)setIsMuted:(bool)isMuted {
+ if (_controller != nil) {
+ _controller->SetMicMute(isMuted);
+ }
+}
+
+- (void)setNetworkType:(OngoingCallNetworkType)networkType {
+ if (_networkType != networkType) {
+ _networkType = networkType;
+ if (_controller != nil) {
+ _controller->SetNetworkType(callControllerNetworkTypeForType(networkType));
+ }
+ }
+}
+
+@end
diff --git a/submodules/libtgvoip/OngoingCallThreadLocalContext.mm b/submodules/TgVoip/Sources/OngoingCallThreadLocalContext.mm
similarity index 99%
rename from submodules/libtgvoip/OngoingCallThreadLocalContext.mm
rename to submodules/TgVoip/Sources/OngoingCallThreadLocalContext.mm
index 3a49f01995..881a259284 100644
--- a/submodules/libtgvoip/OngoingCallThreadLocalContext.mm
+++ b/submodules/TgVoip/Sources/OngoingCallThreadLocalContext.mm
@@ -1,4 +1,4 @@
-#import
+#import "OngoingCallThreadLocalContext.h"
#import "VoIPController.h"
#import "VoIPServerConfig.h"
diff --git a/submodules/TgVoip/libtgvoip b/submodules/TgVoip/libtgvoip
new file mode 160000
index 0000000000..522550a1e9
--- /dev/null
+++ b/submodules/TgVoip/libtgvoip
@@ -0,0 +1 @@
+Subproject commit 522550a1e975b17e9048d7a2ab2d5b97cfc2f5d4
diff --git a/submodules/libtgvoip/.gitignore b/submodules/libtgvoip/.gitignore
deleted file mode 100644
index 6572e25a84..0000000000
--- a/submodules/libtgvoip/.gitignore
+++ /dev/null
@@ -1,28 +0,0 @@
-.DS_Store
-bin
-.idea
-build
-*/Debug/*
-*/Release/*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-[Pp]review/
-[Pp]roduction/
-x64/
-x86/
-bld/
-[Bb]in/
-[Oo]bj/
-DerivedData/
-
-# Visual Studio 2015 cache/options directory
-.vs/
-
-xcuserdata/
-autom4te.cache/
-
-libtgvoip.xcodeproj/*
diff --git a/submodules/libtgvoip/Android.mk b/submodules/libtgvoip/Android.mk
deleted file mode 100644
index 0351868921..0000000000
--- a/submodules/libtgvoip/Android.mk
+++ /dev/null
@@ -1,350 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-LOCAL_MODULE := voip
-LOCAL_CPPFLAGS := -Wall -std=c++11 -DANDROID -finline-functions -ffast-math -Os -fno-strict-aliasing -O3 -frtti -D__STDC_LIMIT_MACROS -Wno-unknown-pragmas
-LOCAL_CFLAGS := -O3 -DUSE_KISS_FFT -fexceptions -DWEBRTC_APM_DEBUG_DUMP=0 -DWEBRTC_POSIX -DWEBRTC_ANDROID -D__STDC_LIMIT_MACROS -DFIXED_POINT -DWEBRTC_NS_FLOAT
-LOCAL_EXPORT_LDLIBS := -llog -lOpenSLES
-
-MY_DIR := libtgvoip
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/../opus/include $(LOCAL_PATH)/../boringssl/include/ $(LOCAL_PATH)/webrtc_dsp/
-
-ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI),armeabi-v7a arm64-v8a))
-CC_NEON := cc.neon
-LOCAL_CFLAGS += -DWEBRTC_HAS_NEON
-else
-CC_NEON := cc
-endif
-
-LOCAL_CFLAGS += $(TGVOIP_ADDITIONAL_CFLAGS)
-
-LOCAL_SRC_FILES := \
-./logging.cpp \
-./VoIPController.cpp \
-./VoIPGroupController.cpp \
-./Buffers.cpp \
-./BlockingQueue.cpp \
-./audio/AudioInput.cpp \
-./os/android/AudioInputOpenSLES.cpp \
-./MediaStreamItf.cpp \
-./audio/AudioOutput.cpp \
-./OpusEncoder.cpp \
-./os/android/AudioOutputOpenSLES.cpp \
-./JitterBuffer.cpp \
-./OpusDecoder.cpp \
-./os/android/OpenSLEngineWrapper.cpp \
-./os/android/AudioInputAndroid.cpp \
-./os/android/AudioOutputAndroid.cpp \
-./EchoCanceller.cpp \
-./CongestionControl.cpp \
-./VoIPServerConfig.cpp \
-./audio/Resampler.cpp \
-./NetworkSocket.cpp \
-./os/posix/NetworkSocketPosix.cpp \
-./PacketReassembler.cpp \
-./MessageThread.cpp \
-./json11.cpp \
-./audio/AudioIO.cpp \
-./video/VideoRenderer.cpp \
-./video/VideoSource.cpp \
-./video/ScreamCongestionController.cpp \
-./os/android/VideoSourceAndroid.cpp \
-./os/android/VideoRendererAndroid.cpp \
-./client/android/tg_voip_jni.cpp
-
-# WebRTC signal processing
-
-LOCAL_SRC_FILES += \
-./webrtc_dsp/system_wrappers/source/field_trial.cc \
-./webrtc_dsp/system_wrappers/source/metrics.cc \
-./webrtc_dsp/system_wrappers/source/cpu_features.cc \
-./webrtc_dsp/absl/strings/internal/memutil.cc \
-./webrtc_dsp/absl/strings/string_view.cc \
-./webrtc_dsp/absl/strings/ascii.cc \
-./webrtc_dsp/absl/types/bad_optional_access.cc \
-./webrtc_dsp/absl/types/optional.cc \
-./webrtc_dsp/absl/base/internal/raw_logging.cc \
-./webrtc_dsp/absl/base/internal/throw_delegate.cc \
-./webrtc_dsp/rtc_base/race_checker.cc \
-./webrtc_dsp/rtc_base/strings/string_builder.cc \
-./webrtc_dsp/rtc_base/memory/aligned_malloc.cc \
-./webrtc_dsp/rtc_base/timeutils.cc \
-./webrtc_dsp/rtc_base/platform_file.cc \
-./webrtc_dsp/rtc_base/string_to_number.cc \
-./webrtc_dsp/rtc_base/thread_checker_impl.cc \
-./webrtc_dsp/rtc_base/stringencode.cc \
-./webrtc_dsp/rtc_base/stringutils.cc \
-./webrtc_dsp/rtc_base/checks.cc \
-./webrtc_dsp/rtc_base/platform_thread.cc \
-./webrtc_dsp/rtc_base/criticalsection.cc \
-./webrtc_dsp/rtc_base/platform_thread_types.cc \
-./webrtc_dsp/rtc_base/event.cc \
-./webrtc_dsp/rtc_base/event_tracer.cc \
-./webrtc_dsp/rtc_base/logging_webrtc.cc \
-./webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.cc \
-./webrtc_dsp/third_party/rnnoise/src/kiss_fft.cc \
-./webrtc_dsp/api/audio/audio_frame.cc \
-./webrtc_dsp/api/audio/echo_canceller3_config.cc \
-./webrtc_dsp/api/audio/echo_canceller3_factory.cc \
-./webrtc_dsp/modules/third_party/fft/fft.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.c \
-./webrtc_dsp/modules/audio_processing/rms_level.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/moving_max.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.cc \
-./webrtc_dsp/modules/audio_processing/splitting_filter.cc \
-./webrtc_dsp/modules/audio_processing/gain_control_impl.cc \
-./webrtc_dsp/modules/audio_processing/ns/nsx_core.c \
-./webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.c \
-./webrtc_dsp/modules/audio_processing/ns/nsx_core_c.c \
-./webrtc_dsp/modules/audio_processing/ns/ns_core.c \
-./webrtc_dsp/modules/audio_processing/ns/noise_suppression.c \
-./webrtc_dsp/modules/audio_processing/audio_buffer.cc \
-./webrtc_dsp/modules/audio_processing/typing_detection.cc \
-./webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.cc \
-./webrtc_dsp/modules/audio_processing/include/audio_generator_factory.cc \
-./webrtc_dsp/modules/audio_processing/include/aec_dump.cc \
-./webrtc_dsp/modules/audio_processing/include/audio_processing.cc \
-./webrtc_dsp/modules/audio_processing/include/config.cc \
-./webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.cc \
-./webrtc_dsp/modules/audio_processing/agc2/agc2_common.cc \
-./webrtc_dsp/modules/audio_processing/agc2/gain_applier.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc \
-./webrtc_dsp/modules/audio_processing/agc2/limiter.cc \
-./webrtc_dsp/modules/audio_processing/agc2/saturation_protector.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.cc \
-./webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.cc \
-./webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.cc \
-./webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.cc \
-./webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.cc \
-./webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.cc \
-./webrtc_dsp/modules/audio_processing/agc2/vad_with_level.cc \
-./webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.cc \
-./webrtc_dsp/modules/audio_processing/agc2/down_sampler.cc \
-./webrtc_dsp/modules/audio_processing/agc2/signal_classifier.cc \
-./webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.cc \
-./webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.cc \
-./webrtc_dsp/modules/audio_processing/agc2/biquad_filter.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc \
-./webrtc_dsp/modules/audio_processing/transient/moving_moments.cc \
-./webrtc_dsp/modules/audio_processing/transient/wpd_tree.cc \
-./webrtc_dsp/modules/audio_processing/transient/wpd_node.cc \
-./webrtc_dsp/modules/audio_processing/transient/transient_suppressor.cc \
-./webrtc_dsp/modules/audio_processing/transient/transient_detector.cc \
-./webrtc_dsp/modules/audio_processing/low_cut_filter.cc \
-./webrtc_dsp/modules/audio_processing/level_estimator_impl.cc \
-./webrtc_dsp/modules/audio_processing/three_band_filter_bank.cc \
-./webrtc_dsp/modules/audio_processing/aec/echo_cancellation.cc \
-./webrtc_dsp/modules/audio_processing/aec/aec_resampler.cc \
-./webrtc_dsp/modules/audio_processing/aec/aec_core.cc \
-./webrtc_dsp/modules/audio_processing/voice_detection_impl.cc \
-./webrtc_dsp/modules/audio_processing/echo_cancellation_impl.cc \
-./webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.cc \
-./webrtc_dsp/modules/audio_processing/agc/agc.cc \
-./webrtc_dsp/modules/audio_processing/agc/loudness_histogram.cc \
-./webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.cc \
-./webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.c \
-./webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.c \
-./webrtc_dsp/modules/audio_processing/agc/utility.cc \
-./webrtc_dsp/modules/audio_processing/audio_processing_impl.cc \
-./webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.cc \
-./webrtc_dsp/modules/audio_processing/gain_controller2.cc \
-./webrtc_dsp/modules/audio_processing/residual_echo_detector.cc \
-./webrtc_dsp/modules/audio_processing/noise_suppression_impl.cc \
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core.cc \
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.cc \
-./webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.cc \
-./webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.cc \
-./webrtc_dsp/modules/audio_processing/aec3/frame_blocker.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subtractor.cc \
-./webrtc_dsp/modules/audio_processing/aec3/aec3_fft.cc \
-./webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/suppression_filter.$(CC_NEON) \
-./webrtc_dsp/modules/audio_processing/aec3/block_processor.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/vector_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/erl_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/aec_state.cc \
-./webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.$(CC_NEON) \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.cc \
-./webrtc_dsp/modules/audio_processing/aec3/skew_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_framer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/erle_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model.cc \
-./webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subtractor_output.cc \
-./webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/suppression_gain.$(CC_NEON) \
-./webrtc_dsp/modules/audio_processing/aec3/echo_audibility.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.cc \
-./webrtc_dsp/modules/audio_processing/aec3/moving_average.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/aec3_common.cc \
-./webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/matched_filter.$(CC_NEON) \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.cc \
-./webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_remover.cc \
-./webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_processor2.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/fft_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.$(CC_NEON) \
-./webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.cc \
-./webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.cc \
-./webrtc_dsp/modules/audio_processing/aec3/decimator.cc \
-./webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.cc \
-./webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.cc \
-./webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.cc \
-./webrtc_dsp/modules/audio_processing/vad/standalone_vad.cc \
-./webrtc_dsp/modules/audio_processing/vad/pitch_internal.cc \
-./webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.cc \
-./webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.cc \
-./webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.cc \
-./webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.cc \
-./webrtc_dsp/modules/audio_processing/vad/gmm.cc \
-./webrtc_dsp/modules/audio_processing/utility/ooura_fft.cc \
-./webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.cc \
-./webrtc_dsp/modules/audio_processing/utility/delay_estimator.cc \
-./webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.cc \
-./webrtc_dsp/common_audio/window_generator.cc \
-./webrtc_dsp/common_audio/channel_buffer.cc \
-./webrtc_dsp/common_audio/fir_filter_factory.cc \
-./webrtc_dsp/common_audio/wav_header.cc \
-./webrtc_dsp/common_audio/real_fourier_ooura.cc \
-./webrtc_dsp/common_audio/audio_util.cc \
-./webrtc_dsp/common_audio/resampler/push_sinc_resampler.cc \
-./webrtc_dsp/common_audio/resampler/resampler.cc \
-./webrtc_dsp/common_audio/resampler/push_resampler.cc \
-./webrtc_dsp/common_audio/resampler/sinc_resampler.cc \
-./webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.cc \
-./webrtc_dsp/common_audio/wav_file.cc \
-./webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c \
-./webrtc_dsp/common_audio/third_party/fft4g/fft4g.c \
-./webrtc_dsp/common_audio/audio_converter.cc \
-./webrtc_dsp/common_audio/real_fourier.cc \
-./webrtc_dsp/common_audio/sparse_fir_filter.cc \
-./webrtc_dsp/common_audio/smoothing_filter.cc \
-./webrtc_dsp/common_audio/fir_filter_c.cc \
-./webrtc_dsp/common_audio/ring_buffer.c \
-./webrtc_dsp/common_audio/signal_processing/complex_fft.c \
-./webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.c \
-./webrtc_dsp/common_audio/signal_processing/levinson_durbin.c \
-./webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.cc \
-./webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.c \
-./webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.c \
-./webrtc_dsp/common_audio/signal_processing/energy.c \
-./webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c \
-./webrtc_dsp/common_audio/signal_processing/downsample_fast.c \
-./webrtc_dsp/common_audio/signal_processing/splitting_filter1.c \
-./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.c \
-./webrtc_dsp/common_audio/signal_processing/spl_init.c \
-./webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.c \
-./webrtc_dsp/common_audio/signal_processing/cross_correlation.c \
-./webrtc_dsp/common_audio/signal_processing/division_operations.c \
-./webrtc_dsp/common_audio/signal_processing/auto_correlation.c \
-./webrtc_dsp/common_audio/signal_processing/get_scaling_square.c \
-./webrtc_dsp/common_audio/signal_processing/resample.c \
-./webrtc_dsp/common_audio/signal_processing/min_max_operations.c \
-./webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.c \
-./webrtc_dsp/common_audio/signal_processing/filter_ar.c \
-./webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.c \
-./webrtc_dsp/common_audio/signal_processing/resample_fractional.c \
-./webrtc_dsp/common_audio/signal_processing/real_fft.c \
-./webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.c \
-./webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.c \
-./webrtc_dsp/common_audio/signal_processing/randomization_functions.c \
-./webrtc_dsp/common_audio/signal_processing/copy_set_operations.c \
-./webrtc_dsp/common_audio/signal_processing/resample_by_2.c \
-./webrtc_dsp/common_audio/signal_processing/get_hanning_window.c \
-./webrtc_dsp/common_audio/signal_processing/resample_48khz.c \
-./webrtc_dsp/common_audio/signal_processing/spl_inl.c \
-./webrtc_dsp/common_audio/signal_processing/spl_sqrt.c \
-./webrtc_dsp/common_audio/vad/vad_sp.c \
-./webrtc_dsp/common_audio/vad/vad.cc \
-./webrtc_dsp/common_audio/vad/webrtc_vad.c \
-./webrtc_dsp/common_audio/vad/vad_filterbank.c \
-./webrtc_dsp/common_audio/vad/vad_core.c \
-./webrtc_dsp/common_audio/vad/vad_gmm.c
-
-ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI),armeabi-v7a arm64-v8a))
-LOCAL_SRC_FILES += \
-./webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.c.neon \
-./webrtc_dsp/modules/audio_processing/aec/aec_core_neon.cc.neon \
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.cc.neon \
-./webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.cc.neon \
-./webrtc_dsp/common_audio/fir_filter_neon.cc.neon \
-./webrtc_dsp/common_audio/resampler/sinc_resampler_neon.cc.neon \
-./webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.c.neon \
-./webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.c.neon \
-./webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.c.neon
-endif
-
-ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
-LOCAL_SRC_FILES += \
-./webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.S.neon \
-./webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.S.neon \
-./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S.neon
-endif
-
-ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI),x86 x86_64))
-LOCAL_SRC_FILES += \
-./webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.cc \
-./webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.cc \
-./webrtc_dsp/common_audio/fir_filter_sse.cc \
-./webrtc_dsp/common_audio/resampler/sinc_resampler_sse.cc
-endif
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/submodules/libtgvoip/BlockingQueue.cpp b/submodules/libtgvoip/BlockingQueue.cpp
deleted file mode 100644
index 4a02d47625..0000000000
--- a/submodules/libtgvoip/BlockingQueue.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "BlockingQueue.h"
-
-using namespace tgvoip;
-
diff --git a/submodules/libtgvoip/BlockingQueue.h b/submodules/libtgvoip/BlockingQueue.h
deleted file mode 100644
index df7eda3274..0000000000
--- a/submodules/libtgvoip/BlockingQueue.h
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_BLOCKINGQUEUE_H
-#define LIBTGVOIP_BLOCKINGQUEUE_H
-
-#include
-#include
-#include "threading.h"
-#include "utils.h"
-
-using namespace std;
-
-namespace tgvoip{
-
-template
-class BlockingQueue{
-public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(BlockingQueue);
- BlockingQueue(size_t capacity) : semaphore(capacity, 0){
- this->capacity=capacity;
- overflowCallback=NULL;
- };
-
- ~BlockingQueue(){
- semaphore.Release();
- }
-
- void Put(T thing){
- MutexGuard sync(mutex);
- queue.push_back(std::move(thing));
- bool didOverflow=false;
- while(queue.size()>capacity){
- didOverflow=true;
- if(overflowCallback){
- overflowCallback(std::move(queue.front()));
- queue.pop_front();
- }else{
- abort();
- }
- }
- if(!didOverflow)
- semaphore.Release();
- }
-
- T GetBlocking(){
- semaphore.Acquire();
- MutexGuard sync(mutex);
- return GetInternal();
- }
-
- T Get(){
- MutexGuard sync(mutex);
- if(queue.size()>0)
- semaphore.Acquire();
- return GetInternal();
- }
-
- unsigned int Size(){
- return queue.size();
- }
-
- void PrepareDealloc(){
-
- }
-
- void SetOverflowCallback(void (*overflowCallback)(T)){
- this->overflowCallback=overflowCallback;
- }
-
-private:
- T GetInternal(){
- //if(queue.size()==0)
- // return NULL;
- T r=std::move(queue.front());
- queue.pop_front();
- return r;
- }
-
- list queue;
- size_t capacity;
- //tgvoip_lock_t lock;
- Semaphore semaphore;
- Mutex mutex;
- void (*overflowCallback)(T);
-};
-}
-
-#endif //LIBTGVOIP_BLOCKINGQUEUE_H
diff --git a/submodules/libtgvoip/Buffers.cpp b/submodules/libtgvoip/Buffers.cpp
deleted file mode 100644
index 85db3e9218..0000000000
--- a/submodules/libtgvoip/Buffers.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "Buffers.h"
-#include
-#include
-#include
-#include
-#include
-#include "logging.h"
-
-using namespace tgvoip;
-
-#pragma mark - BufferInputStream
-
-BufferInputStream::BufferInputStream(const unsigned char* data, size_t length){
- this->buffer=data;
- this->length=length;
- offset=0;
-}
-
-BufferInputStream::BufferInputStream(const Buffer &buffer){
- this->buffer=*buffer;
- this->length=buffer.Length();
- offset=0;
-}
-
-BufferInputStream::~BufferInputStream(){
-
-}
-
-
-void BufferInputStream::Seek(size_t offset){
- if(offset>length){
- throw std::out_of_range("Not enough bytes in buffer");
- }
- this->offset=offset;
-}
-
-size_t BufferInputStream::GetLength(){
- return length;
-}
-
-size_t BufferInputStream::GetOffset(){
- return offset;
-}
-
-size_t BufferInputStream::Remaining(){
- return length-offset;
-}
-
-unsigned char BufferInputStream::ReadByte(){
- EnsureEnoughRemaining(1);
- return (unsigned char)buffer[offset++];
-}
-
-int32_t BufferInputStream::ReadInt32(){
- EnsureEnoughRemaining(4);
- int32_t res=((int32_t)buffer[offset] & 0xFF) |
- (((int32_t)buffer[offset+1] & 0xFF) << 8) |
- (((int32_t)buffer[offset+2] & 0xFF) << 16) |
- (((int32_t)buffer[offset+3] & 0xFF) << 24);
- offset+=4;
- return res;
-}
-
-int64_t BufferInputStream::ReadInt64(){
- EnsureEnoughRemaining(8);
- int64_t res=((int64_t)buffer[offset] & 0xFF) |
- (((int64_t)buffer[offset+1] & 0xFF) << 8) |
- (((int64_t)buffer[offset+2] & 0xFF) << 16) |
- (((int64_t)buffer[offset+3] & 0xFF) << 24) |
- (((int64_t)buffer[offset+4] & 0xFF) << 32) |
- (((int64_t)buffer[offset+5] & 0xFF) << 40) |
- (((int64_t)buffer[offset+6] & 0xFF) << 48) |
- (((int64_t)buffer[offset+7] & 0xFF) << 56);
- offset+=8;
- return res;
-}
-
-int16_t BufferInputStream::ReadInt16(){
- EnsureEnoughRemaining(2);
- int16_t res=(uint16_t)buffer[offset] | ((uint16_t)buffer[offset+1] << 8);
- offset+=2;
- return res;
-}
-
-
-int32_t BufferInputStream::ReadTlLength(){
- unsigned char l=ReadByte();
- if(l<254)
- return l;
- assert(length-offset>=3);
- EnsureEnoughRemaining(3);
- int32_t res=((int32_t)buffer[offset] & 0xFF) |
- (((int32_t)buffer[offset+1] & 0xFF) << 8) |
- (((int32_t)buffer[offset+2] & 0xFF) << 16);
- offset+=3;
- return res;
-}
-
-void BufferInputStream::ReadBytes(unsigned char *to, size_t count){
- EnsureEnoughRemaining(count);
- memcpy(to, buffer+offset, count);
- offset+=count;
-}
-
-void BufferInputStream::ReadBytes(Buffer &to){
- ReadBytes(*to, to.Length());
-}
-
-BufferInputStream BufferInputStream::GetPartBuffer(size_t length, bool advance){
- EnsureEnoughRemaining(length);
- BufferInputStream s=BufferInputStream(buffer+offset, length);
- if(advance)
- offset+=length;
- return s;
-}
-
-void BufferInputStream::EnsureEnoughRemaining(size_t need){
- if(length-offsetsize=size;
- bufferProvided=false;
-}
-
-BufferOutputStream::BufferOutputStream(unsigned char *buffer, size_t size){
- this->buffer=buffer;
- this->size=size;
- offset=0;
- bufferProvided=true;
-}
-
-BufferOutputStream::~BufferOutputStream(){
- if(!bufferProvided && buffer)
- free(buffer);
-}
-
-void BufferOutputStream::WriteByte(unsigned char byte){
- this->ExpandBufferIfNeeded(1);
- buffer[offset++]=byte;
-}
-
-void BufferOutputStream::WriteInt32(int32_t i){
- this->ExpandBufferIfNeeded(4);
- buffer[offset+3]=(unsigned char)((i >> 24) & 0xFF);
- buffer[offset+2]=(unsigned char)((i >> 16) & 0xFF);
- buffer[offset+1]=(unsigned char)((i >> 8) & 0xFF);
- buffer[offset]=(unsigned char)(i & 0xFF);
- offset+=4;
-}
-
-void BufferOutputStream::WriteInt64(int64_t i){
- this->ExpandBufferIfNeeded(8);
- buffer[offset+7]=(unsigned char)((i >> 56) & 0xFF);
- buffer[offset+6]=(unsigned char)((i >> 48) & 0xFF);
- buffer[offset+5]=(unsigned char)((i >> 40) & 0xFF);
- buffer[offset+4]=(unsigned char)((i >> 32) & 0xFF);
- buffer[offset+3]=(unsigned char)((i >> 24) & 0xFF);
- buffer[offset+2]=(unsigned char)((i >> 16) & 0xFF);
- buffer[offset+1]=(unsigned char)((i >> 8) & 0xFF);
- buffer[offset]=(unsigned char)(i & 0xFF);
- offset+=8;
-}
-
-void BufferOutputStream::WriteInt16(int16_t i){
- this->ExpandBufferIfNeeded(2);
- buffer[offset+1]=(unsigned char)((i >> 8) & 0xFF);
- buffer[offset]=(unsigned char)(i & 0xFF);
- offset+=2;
-}
-
-void BufferOutputStream::WriteBytes(const unsigned char *bytes, size_t count){
- this->ExpandBufferIfNeeded(count);
- memcpy(buffer+offset, bytes, count);
- offset+=count;
-}
-
-void BufferOutputStream::WriteBytes(const Buffer &buffer){
- WriteBytes(*buffer, buffer.Length());
-}
-
-void BufferOutputStream::WriteBytes(const Buffer &buffer, size_t offset, size_t count){
- if(offset+count>buffer.Length())
- throw std::out_of_range("offset out of buffer bounds");
- WriteBytes(*buffer+offset, count);
-}
-
-unsigned char *BufferOutputStream::GetBuffer(){
- return buffer;
-}
-
-size_t BufferOutputStream::GetLength(){
- return offset;
-}
-
-void BufferOutputStream::ExpandBufferIfNeeded(size_t need){
- if(offset+need>size){
- if(bufferProvided){
- throw std::out_of_range("buffer overflow");
- }
- if(need<1024){
- buffer=(unsigned char *) realloc(buffer, size+1024);
- size+=1024;
- }else{
- buffer=(unsigned char *) realloc(buffer, size+need);
- size+=need;
- }
- if(!buffer)
- throw std::bad_alloc();
- }
-}
-
-
-void BufferOutputStream::Reset(){
- offset=0;
-}
-
-void BufferOutputStream::Rewind(size_t numBytes){
- if(numBytes>offset)
- throw std::out_of_range("buffer underflow");
- offset-=numBytes;
-}
-
-#pragma mark - BufferPool
-
-BufferPool::BufferPool(unsigned int size, unsigned int count){
- assert(count<=64);
- buffers[0]=(unsigned char*) malloc(size*count);
- bufferCount=count;
- unsigned int i;
- for(i=1;isize=size;
-}
-
-BufferPool::~BufferPool(){
- free(buffers[0]);
-}
-
-unsigned char* BufferPool::Get(){
- MutexGuard m(mutex);
- int i;
- for(i=0;i> i) & 1)){
- usedBuffers|=(1LL << i);
- return buffers[i];
- }
- }
- return NULL;
-}
-
-void BufferPool::Reuse(unsigned char* buffer){
- MutexGuard m(mutex);
- int i;
- for(i=0;i
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "threading.h"
-#include "utils.h"
-
-namespace tgvoip{
- class Buffer;
-
- class BufferInputStream{
-
- public:
- BufferInputStream(const unsigned char* data, size_t length);
- BufferInputStream(const Buffer& buffer);
- ~BufferInputStream();
- void Seek(size_t offset);
- size_t GetLength();
- size_t GetOffset();
- size_t Remaining();
- unsigned char ReadByte();
- int64_t ReadInt64();
- int32_t ReadInt32();
- int16_t ReadInt16();
- int32_t ReadTlLength();
- void ReadBytes(unsigned char* to, size_t count);
- void ReadBytes(Buffer& to);
- BufferInputStream GetPartBuffer(size_t length, bool advance);
-
- private:
- void EnsureEnoughRemaining(size_t need);
- const unsigned char* buffer;
- size_t length;
- size_t offset;
- };
-
- class BufferOutputStream{
- friend class Buffer;
- public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(BufferOutputStream);
- BufferOutputStream(size_t size);
- BufferOutputStream(unsigned char* buffer, size_t size);
- ~BufferOutputStream();
- void WriteByte(unsigned char byte);
- void WriteInt64(int64_t i);
- void WriteInt32(int32_t i);
- void WriteInt16(int16_t i);
- void WriteBytes(const unsigned char* bytes, size_t count);
- void WriteBytes(const Buffer& buffer);
- void WriteBytes(const Buffer& buffer, size_t offset, size_t count);
- unsigned char* GetBuffer();
- size_t GetLength();
- void Reset();
- void Rewind(size_t numBytes);
-
- BufferOutputStream& operator=(BufferOutputStream&& other){
- if(this!=&other){
- if(!bufferProvided && buffer)
- free(buffer);
- buffer=other.buffer;
- offset=other.offset;
- size=other.size;
- bufferProvided=other.bufferProvided;
- other.buffer=NULL;
- }
- return *this;
- }
-
- private:
- void ExpandBufferIfNeeded(size_t need);
- unsigned char* buffer=NULL;
- size_t size;
- size_t offset;
- bool bufferProvided;
- };
-
- class BufferPool{
- public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(BufferPool);
- BufferPool(unsigned int size, unsigned int count);
- ~BufferPool();
- unsigned char* Get();
- void Reuse(unsigned char* buffer);
- size_t GetSingleBufferSize();
- size_t GetBufferCount();
-
- private:
- uint64_t usedBuffers;
- int bufferCount;
- size_t size;
- unsigned char* buffers[64];
- Mutex mutex;
- };
-
- class Buffer{
- public:
- Buffer(size_t capacity){
- if(capacity>0)
- data=(unsigned char *) malloc(capacity);
- else
- data=NULL;
- length=capacity;
- };
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(Buffer); // use Buffer::CopyOf to copy contents explicitly
- Buffer(Buffer&& other) noexcept {
- data=other.data;
- length=other.length;
- other.data=NULL;
- };
- Buffer(BufferOutputStream&& stream){
- data=stream.buffer;
- length=stream.offset;
- stream.buffer=NULL;
- }
- Buffer(){
- data=NULL;
- length=0;
- }
- ~Buffer(){
- if(data)
- free(data);
- data=NULL;
- };
- Buffer& operator=(Buffer&& other){
- if(this!=&other){
- if(data)
- free(data);
- data=other.data;
- length=other.length;
- other.data=NULL;
- }
- return *this;
- }
- unsigned char& operator[](size_t i){
- if(i>=length)
- throw std::out_of_range("");
- return data[i];
- }
- const unsigned char& operator[](size_t i) const{
- if(i>=length)
- throw std::out_of_range("");
- return data[i];
- }
- unsigned char* operator*(){
- return data;
- }
- const unsigned char* operator*() const{
- return data;
- }
- void CopyFrom(const Buffer& other, size_t count, size_t srcOffset=0, size_t dstOffset=0){
- if(!other.data)
- throw std::invalid_argument("CopyFrom can't copy from NULL");
- if(other.length class HistoricBuffer{
- public:
- HistoricBuffer(){
- std::fill(data.begin(), data.end(), (T)0);
- }
-
- AVG_T Average(){
- AVG_T avg=(AVG_T)0;
- for(T& i:data){
- avg+=i;
- }
- return avg/(AVG_T)size;
- }
-
- AVG_T Average(size_t firstN){
- AVG_T avg=(AVG_T)0;
- for(size_t i=0;i::max();
- for(T& i:data){
- if(i::min();
- for(T& i:data){
- if(i>max)
- max=i;
- }
- return max;
- }
-
- void Reset(){
- std::fill(data.begin(), data.end(), (T)0);
- offset=0;
- }
-
- T& operator[](size_t i){
- assert(i data;
- ptrdiff_t offset=0;
- };
-}
-
-#endif //LIBTGVOIP_BUFFERINPUTSTREAM_H
diff --git a/submodules/libtgvoip/CongestionControl.cpp b/submodules/libtgvoip/CongestionControl.cpp
deleted file mode 100644
index a761b1a3bb..0000000000
--- a/submodules/libtgvoip/CongestionControl.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "CongestionControl.h"
-#include "VoIPController.h"
-#include "logging.h"
-#include "VoIPServerConfig.h"
-#include "PrivateDefines.h"
-#include
-#include
-
-using namespace tgvoip;
-
-CongestionControl::CongestionControl(){
- memset(inflightPackets, 0, sizeof(inflightPackets));
- tmpRtt=0;
- tmpRttCount=0;
- lastSentSeq=0;
- lastActionTime=0;
- lastActionRtt=0;
- stateTransitionTime=0;
- inflightDataSize=0;
- lossCount=0;
- cwnd=(size_t) ServerConfig::GetSharedInstance()->GetInt("audio_congestion_window", 1024);
-}
-
-CongestionControl::~CongestionControl(){
-}
-
-size_t CongestionControl::GetAcknowledgedDataSize(){
- return 0;
-}
-
-double CongestionControl::GetAverageRTT(){
- return rttHistory.NonZeroAverage();
-}
-
-size_t CongestionControl::GetInflightDataSize(){
- return inflightHistory.Average();
-}
-
-
-size_t CongestionControl::GetCongestionWindow(){
- return cwnd;
-}
-
-double CongestionControl::GetMinimumRTT(){
- return rttHistory.Min();
-}
-
-void CongestionControl::PacketAcknowledged(uint32_t seq){
- MutexGuard sync(mutex);
- int i;
- for(i=0;i<100;i++){
- if(inflightPackets[i].seq==seq && inflightPackets[i].sendTime>0){
- tmpRtt+=(VoIPController::GetCurrentTime()-inflightPackets[i].sendTime);
- tmpRttCount++;
- inflightPackets[i].sendTime=0;
- inflightDataSize-=inflightPackets[i].size;
- break;
- }
- }
-}
-
-void CongestionControl::PacketSent(uint32_t seq, size_t size){
- if(!seqgt(seq, lastSentSeq) || seq==lastSentSeq){
- LOGW("Duplicate outgoing seq %u", seq);
- return;
- }
- lastSentSeq=seq;
- MutexGuard sync(mutex);
- double smallestSendTime=INFINITY;
- tgvoip_congestionctl_packet_t* slot=NULL;
- int i;
- for(i=0;i<100;i++){
- if(inflightPackets[i].sendTime==0){
- slot=&inflightPackets[i];
- break;
- }
- if(smallestSendTime>inflightPackets[i].sendTime){
- slot=&inflightPackets[i];
- smallestSendTime=slot->sendTime;
- }
- }
- assert(slot!=NULL);
- if(slot->sendTime>0){
- inflightDataSize-=slot->size;
- lossCount++;
- LOGD("Packet with seq %u was not acknowledged", slot->seq);
- }
- slot->seq=seq;
- slot->size=size;
- slot->sendTime=VoIPController::GetCurrentTime();
- inflightDataSize+=size;
-}
-
-
-void CongestionControl::Tick(){
- tickCount++;
- MutexGuard sync(mutex);
- if(tmpRttCount>0){
- rttHistory.Add(tmpRtt/tmpRttCount);
- tmpRtt=0;
- tmpRttCount=0;
- }
- int i;
- for(i=0;i<100;i++){
- if(inflightPackets[i].sendTime!=0 && VoIPController::GetCurrentTime()-inflightPackets[i].sendTime>2){
- inflightPackets[i].sendTime=0;
- inflightDataSize-=inflightPackets[i].size;
- lossCount++;
- LOGD("Packet with seq %u was not acknowledged", inflightPackets[i].seq);
- }
- }
- inflightHistory.Add(inflightDataSize);
-}
-
-
-int CongestionControl::GetBandwidthControlAction(){
- if(VoIPController::GetCurrentTime()-lastActionTime<1)
- return TGVOIP_CONCTL_ACT_NONE;
- size_t inflightAvg=GetInflightDataSize();
- size_t max=cwnd+cwnd/10;
- size_t min=cwnd-cwnd/10;
- if(inflightAvgmax){
- lastActionTime=VoIPController::GetCurrentTime();
- return TGVOIP_CONCTL_ACT_DECREASE;
- }
- return TGVOIP_CONCTL_ACT_NONE;
-}
-
-
-uint32_t CongestionControl::GetSendLossCount(){
- return lossCount;
-}
diff --git a/submodules/libtgvoip/CongestionControl.h b/submodules/libtgvoip/CongestionControl.h
deleted file mode 100644
index 02a2589de3..0000000000
--- a/submodules/libtgvoip/CongestionControl.h
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_CONGESTIONCONTROL_H
-#define LIBTGVOIP_CONGESTIONCONTROL_H
-
-#include
-#include
-#include "threading.h"
-#include "Buffers.h"
-
-#define TGVOIP_CONCTL_ACT_INCREASE 1
-#define TGVOIP_CONCTL_ACT_DECREASE 2
-#define TGVOIP_CONCTL_ACT_NONE 0
-
-namespace tgvoip{
-
-struct tgvoip_congestionctl_packet_t{
- uint32_t seq;
- double sendTime;
- size_t size;
-};
-typedef struct tgvoip_congestionctl_packet_t tgvoip_congestionctl_packet_t;
-
-class CongestionControl{
-public:
- CongestionControl();
- ~CongestionControl();
-
- void PacketSent(uint32_t seq, size_t size);
- void PacketAcknowledged(uint32_t seq);
-
- double GetAverageRTT();
- double GetMinimumRTT();
- size_t GetInflightDataSize();
- size_t GetCongestionWindow();
- size_t GetAcknowledgedDataSize();
- void Tick();
- int GetBandwidthControlAction();
- uint32_t GetSendLossCount();
-
-private:
- HistoricBuffer rttHistory;
- HistoricBuffer inflightHistory;
- tgvoip_congestionctl_packet_t inflightPackets[100];
- uint32_t lossCount;
- double tmpRtt;
- double lastActionTime;
- double lastActionRtt;
- double stateTransitionTime;
- int tmpRttCount;
- uint32_t lastSentSeq;
- uint32_t tickCount;
- size_t inflightDataSize;
- size_t cwnd;
- Mutex mutex;
-};
-}
-
-#endif //LIBTGVOIP_CONGESTIONCONTROL_H
diff --git a/submodules/libtgvoip/EchoCanceller.cpp b/submodules/libtgvoip/EchoCanceller.cpp
deleted file mode 100755
index d11f110623..0000000000
--- a/submodules/libtgvoip/EchoCanceller.cpp
+++ /dev/null
@@ -1,240 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef TGVOIP_NO_DSP
-#include "webrtc_dsp/modules/audio_processing/include/audio_processing.h"
-#include "webrtc_dsp/api/audio/audio_frame.h"
-#endif
-
-#include "EchoCanceller.h"
-#include "audio/AudioOutput.h"
-#include "audio/AudioInput.h"
-#include "logging.h"
-#include "VoIPServerConfig.h"
-#include
-#include
-#include
-
-using namespace tgvoip;
-
-EchoCanceller::EchoCanceller(bool enableAEC, bool enableNS, bool enableAGC){
-#ifndef TGVOIP_NO_DSP
- this->enableAEC=enableAEC;
- this->enableAGC=enableAGC;
- this->enableNS=enableNS;
- isOn=true;
-
- webrtc::Config extraConfig;
-#ifdef TGVOIP_USE_DESKTOP_DSP
- extraConfig.Set(new webrtc::DelayAgnostic(true));
-#endif
-
- apm=webrtc::AudioProcessingBuilder().Create(extraConfig);
-
- webrtc::AudioProcessing::Config config;
- config.echo_canceller.enabled = enableAEC;
-#ifndef TGVOIP_USE_DESKTOP_DSP
- config.echo_canceller.mobile_mode = true;
-#else
- config.echo_canceller.mobile_mode = false;
-#endif
- config.high_pass_filter.enabled = enableAEC;
- config.gain_controller2.enabled = enableAGC;
- apm->ApplyConfig(config);
-
- webrtc::NoiseSuppression::Level nsLevel;
-#ifdef __APPLE__
- switch(ServerConfig::GetSharedInstance()->GetInt("webrtc_ns_level_vpio", 0)){
-#else
- switch(ServerConfig::GetSharedInstance()->GetInt("webrtc_ns_level", 2)){
-#endif
- case 0:
- nsLevel=webrtc::NoiseSuppression::Level::kLow;
- break;
- case 1:
- nsLevel=webrtc::NoiseSuppression::Level::kModerate;
- break;
- case 3:
- nsLevel=webrtc::NoiseSuppression::Level::kVeryHigh;
- break;
- case 2:
- default:
- nsLevel=webrtc::NoiseSuppression::Level::kHigh;
- break;
- }
- apm->noise_suppression()->set_level(nsLevel);
- apm->noise_suppression()->Enable(enableNS);
- if(enableAGC){
- apm->gain_control()->set_mode(webrtc::GainControl::Mode::kAdaptiveDigital);
- apm->gain_control()->set_target_level_dbfs(ServerConfig::GetSharedInstance()->GetInt("webrtc_agc_target_level", 9));
- apm->gain_control()->enable_limiter(ServerConfig::GetSharedInstance()->GetBoolean("webrtc_agc_enable_limiter", true));
- apm->gain_control()->set_compression_gain_db(ServerConfig::GetSharedInstance()->GetInt("webrtc_agc_compression_gain", 20));
- }
- apm->voice_detection()->set_likelihood(webrtc::VoiceDetection::Likelihood::kVeryLowLikelihood);
-
- audioFrame=new webrtc::AudioFrame();
- audioFrame->samples_per_channel_=480;
- audioFrame->sample_rate_hz_=48000;
- audioFrame->num_channels_=1;
-
- farendQueue=new BlockingQueue(11);
- farendBufferPool=new BufferPool(960*2, 10);
- running=true;
- bufferFarendThread=new Thread(std::bind(&EchoCanceller::RunBufferFarendThread, this));
- bufferFarendThread->Start();
-
-#else
- this->enableAEC=this->enableAGC=enableAGC=this->enableNS=enableNS=false;
- isOn=true;
-#endif
-}
-
-EchoCanceller::~EchoCanceller(){
-#ifndef TGVOIP_NO_DSP
- delete apm;
- delete audioFrame;
-#endif
-}
-
-void EchoCanceller::Start(){
-
-}
-
-void EchoCanceller::Stop(){
-
-}
-
-
-void EchoCanceller::SpeakerOutCallback(unsigned char* data, size_t len){
- if(len!=960*2 || !enableAEC || !isOn)
- return;
-#ifndef TGVOIP_NO_DSP
- int16_t* buf=(int16_t*)farendBufferPool->Get();
- if(buf){
- memcpy(buf, data, 960*2);
- farendQueue->Put(buf);
- }
-#endif
-}
-
-#ifndef TGVOIP_NO_DSP
-void EchoCanceller::RunBufferFarendThread(){
- webrtc::AudioFrame frame;
- frame.num_channels_=1;
- frame.sample_rate_hz_=48000;
- frame.samples_per_channel_=480;
- while(running){
- int16_t* samplesIn=farendQueue->GetBlocking();
- if(samplesIn){
- memcpy(frame.mutable_data(), samplesIn, 480*2);
- apm->ProcessReverseStream(&frame);
- memcpy(frame.mutable_data(), samplesIn+480, 480*2);
- apm->ProcessReverseStream(&frame);
- didBufferFarend=true;
- farendBufferPool->Reuse(reinterpret_cast(samplesIn));
- }
- }
-}
-#endif
-
-void EchoCanceller::Enable(bool enabled){
- isOn=enabled;
-}
-
-void EchoCanceller::ProcessInput(int16_t* inOut, size_t numSamples, bool& hasVoice){
-#ifndef TGVOIP_NO_DSP
- if(!isOn || (!enableAEC && !enableAGC && !enableNS)){
- return;
- }
- int delay=audio::AudioInput::GetEstimatedDelay()+audio::AudioOutput::GetEstimatedDelay();
- assert(numSamples==960);
-
- memcpy(audioFrame->mutable_data(), inOut, 480*2);
- if(enableAEC)
- apm->set_stream_delay_ms(delay);
- apm->ProcessStream(audioFrame);
- if(enableVAD)
- hasVoice=apm->voice_detection()->stream_has_voice();
- memcpy(inOut, audioFrame->data(), 480*2);
- memcpy(audioFrame->mutable_data(), inOut+480, 480*2);
- if(enableAEC)
- apm->set_stream_delay_ms(delay);
- apm->ProcessStream(audioFrame);
- if(enableVAD){
- hasVoice=hasVoice || apm->voice_detection()->stream_has_voice();
- }
- memcpy(inOut+480, audioFrame->data(), 480*2);
-#endif
-}
-
-void EchoCanceller::SetAECStrength(int strength){
-#ifndef TGVOIP_NO_DSP
- /*if(aec){
-#ifndef TGVOIP_USE_DESKTOP_DSP
- AecmConfig cfg;
- cfg.cngMode=AecmFalse;
- cfg.echoMode=(int16_t) strength;
- WebRtcAecm_set_config(aec, cfg);
-#endif
- }*/
-#endif
-}
-
-void EchoCanceller::SetVoiceDetectionEnabled(bool enabled){
- enableVAD=enabled;
-#ifndef TGVOIP_NO_DSP
- apm->voice_detection()->Enable(enabled);
-#endif
-}
-
-using namespace tgvoip::effects;
-
-AudioEffect::~AudioEffect(){
-
-}
-
-void AudioEffect::SetPassThrough(bool passThrough){
- this->passThrough=passThrough;
-}
-
-Volume::Volume(){
-
-}
-
-Volume::~Volume(){
-
-}
-
-void Volume::Process(int16_t* inOut, size_t numSamples){
- if(level==1.0f || passThrough){
- return;
- }
- for(size_t i=0;i32767.0f)
- inOut[i]=INT16_MAX;
- else if(sample<-32768.0f)
- inOut[i]=INT16_MIN;
- else
- inOut[i]=(int16_t)sample;
- }
-}
-
-void Volume::SetLevel(float level){
- this->level=level;
- float db;
- if(level<1.0f)
- db=-50.0f*(1.0f-level);
- else if(level>1.0f && level<=2.0f)
- db=10.0f*(level-1.0f);
- else
- db=0.0f;
- multiplier=expf(db/20.0f * logf(10.0f));
-}
-
-float Volume::GetLevel(){
- return level;
-}
diff --git a/submodules/libtgvoip/EchoCanceller.h b/submodules/libtgvoip/EchoCanceller.h
deleted file mode 100755
index 5f26e1aeb9..0000000000
--- a/submodules/libtgvoip/EchoCanceller.h
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_ECHOCANCELLER_H
-#define LIBTGVOIP_ECHOCANCELLER_H
-
-#include "threading.h"
-#include "Buffers.h"
-#include "BlockingQueue.h"
-#include "MediaStreamItf.h"
-#include "utils.h"
-
-namespace webrtc{
- class AudioProcessing;
- class AudioFrame;
-}
-
-namespace tgvoip{
-class EchoCanceller{
-
-public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(EchoCanceller);
- EchoCanceller(bool enableAEC, bool enableNS, bool enableAGC);
- virtual ~EchoCanceller();
- virtual void Start();
- virtual void Stop();
- void SpeakerOutCallback(unsigned char* data, size_t len);
- void Enable(bool enabled);
- void ProcessInput(int16_t* inOut, size_t numSamples, bool& hasVoice);
- void SetAECStrength(int strength);
- void SetVoiceDetectionEnabled(bool enabled);
-
-private:
- bool enableAEC;
- bool enableAGC;
- bool enableNS;
- bool enableVAD=false;
- bool isOn;
-#ifndef TGVOIP_NO_DSP
- webrtc::AudioProcessing* apm=NULL;
- webrtc::AudioFrame* audioFrame=NULL;
- void RunBufferFarendThread();
- bool didBufferFarend;
- Thread* bufferFarendThread;
- BlockingQueue* farendQueue;
- BufferPool* farendBufferPool;
- bool running;
-#endif
-};
-
-namespace effects{
-
-class AudioEffect{
-public:
- virtual ~AudioEffect()=0;
- virtual void Process(int16_t* inOut, size_t numSamples)=0;
- virtual void SetPassThrough(bool passThrough);
-protected:
- bool passThrough=false;
-};
-
-class Volume : public AudioEffect{
-public:
- Volume();
- virtual ~Volume();
- virtual void Process(int16_t* inOut, size_t numSamples);
- /**
- * Level is (0.0, 2.0]
- */
- void SetLevel(float level);
- float GetLevel();
-private:
- float level=1.0f;
- float multiplier=1.0f;
-};
-
-}
-}
-
-#endif //LIBTGVOIP_ECHOCANCELLER_H
diff --git a/submodules/libtgvoip/Info.plist b/submodules/libtgvoip/Info.plist
deleted file mode 100644
index fbe1e6b314..0000000000
--- a/submodules/libtgvoip/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
- NSPrincipalClass
-
-
-
diff --git a/submodules/libtgvoip/JitterBuffer.cpp b/submodules/libtgvoip/JitterBuffer.cpp
deleted file mode 100755
index 18bf2ad80e..0000000000
--- a/submodules/libtgvoip/JitterBuffer.cpp
+++ /dev/null
@@ -1,463 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "VoIPController.h"
-#include "JitterBuffer.h"
-#include "logging.h"
-#include "VoIPServerConfig.h"
-#include
-
-using namespace tgvoip;
-
-JitterBuffer::JitterBuffer(MediaStreamItf *out, uint32_t step):bufferPool(JITTER_SLOT_SIZE, JITTER_SLOT_COUNT){
- if(out)
- out->SetCallback(JitterBuffer::CallbackOut, this);
- this->step=step;
- memset(slots, 0, sizeof(jitter_packet_t)*JITTER_SLOT_COUNT);
- if(step<30){
- minMinDelay=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_min_delay_20", 6);
- maxMinDelay=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_max_delay_20", 25);
- maxUsedSlots=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_max_slots_20", 50);
- }else if(step<50){
- minMinDelay=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_min_delay_40", 4);
- maxMinDelay=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_max_delay_40", 15);
- maxUsedSlots=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_max_slots_40", 30);
- }else{
- minMinDelay=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_min_delay_60", 2);
- maxMinDelay=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_max_delay_60", 10);
- maxUsedSlots=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_max_slots_60", 20);
- }
- lossesToReset=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_losses_to_reset", 20);
- resyncThreshold=ServerConfig::GetSharedInstance()->GetDouble("jitter_resync_threshold", 1.0);
-#ifdef TGVOIP_DUMP_JITTER_STATS
-#ifdef TGVOIP_JITTER_DUMP_FILE
- dump=fopen(TGVOIP_JITTER_DUMP_FILE, "w");
-#elif defined(__ANDROID__)
- dump=fopen("/sdcard/tgvoip_jitter_dump.txt", "w");
-#else
- dump=fopen("tgvoip_jitter_dump.txt", "w");
-#endif
- tgvoip_log_file_write_header(dump);
- fprintf(dump, "PTS\tRTS\tNumInBuf\tAJitter\tADelay\tTDelay\n");
-#endif
- Reset();
-}
-
-JitterBuffer::~JitterBuffer(){
- Reset();
-}
-
-void JitterBuffer::SetMinPacketCount(uint32_t count){
- LOGI("jitter: set min packet count %u", count);
- minDelay=count;
- minMinDelay=count;
- //Reset();
-}
-
-int JitterBuffer::GetMinPacketCount(){
- return (int)minDelay;
-}
-
-size_t JitterBuffer::CallbackIn(unsigned char *data, size_t len, void *param){
- //((JitterBuffer*)param)->HandleInput(data, len);
- return 0;
-}
-
-size_t JitterBuffer::CallbackOut(unsigned char *data, size_t len, void *param){
- return 0; //((JitterBuffer*)param)->HandleOutput(data, len, 0, NULL);
-}
-
-void JitterBuffer::HandleInput(unsigned char *data, size_t len, uint32_t timestamp, bool isEC){
- MutexGuard m(mutex);
- jitter_packet_t pkt;
- pkt.size=len;
- pkt.buffer=data;
- pkt.timestamp=timestamp;
- pkt.isEC=isEC;
- PutInternal(&pkt, !isEC);
- //LOGV("in, ts=%d, ec=%d", timestamp, isEC);
-
-}
-
-void JitterBuffer::Reset(){
- wasReset=true;
- needBuffering=true;
- lastPutTimestamp=0;
- int i;
- for(i=0;i5){
- LOGW("jitter: delay too big upon start (%u), dropping packets", delay);
- while(delay>GetMinPacketCount()){
- for(int i=0;isizesize));
- }else{
- if(pkt) {
- pkt->size = slots[i].size;
- pkt->timestamp = slots[i].timestamp;
- memcpy(pkt->buffer, slots[i].buffer, slots[i].size);
- pkt->isEC=slots[i].isEC;
- }
- }
- bufferPool.Reuse(slots[i].buffer);
- slots[i].buffer=NULL;
- if(offset==0)
- Advance();
- lostCount=0;
- needBuffering=false;
- return JR_OK;
- }
-
- LOGV("jitter: found no packet for timestamp %lld (last put = %d, lost = %d)", (long long int)timestampToGet, lastPutTimestamp, lostCount);
-
- if(advance)
- Advance();
-
- if(!needBuffering){
- lostCount++;
- if(offset==0){
- lostPackets++;
- lostSinceReset++;
- }
- if(lostCount>=lossesToReset || (gotSinceReset>minDelay*25 && lostSinceReset>gotSinceReset/2)){
- LOGW("jitter: lost %d packets in a row, resetting", lostCount);
- //minDelay++;
- dontIncMinDelay=16;
- dontDecMinDelay+=128;
- if(GetCurrentDelay()size>JITTER_SLOT_SIZE){
- LOGE("The packet is too big to fit into the jitter buffer");
- return;
- }
-
- int i;
- for(i=0;itimestamp){
- //LOGV("Found existing packet for timestamp %u, overwrite %d", pkt->timestamp, overwriteExisting);
- if(overwriteExisting){
- memcpy(slots[i].buffer, pkt->buffer, pkt->size);
- slots[i].size=pkt->size;
- slots[i].isEC=pkt->isEC;
- }
- return;
- }
- }
- gotSinceReset++;
- if(wasReset){
- wasReset=false;
- outstandingDelayChange=0;
- nextTimestamp=(int64_t)(((int64_t)pkt->timestamp)-step*minDelay);
- first=true;
- LOGI("jitter: resyncing, next timestamp = %lld (step=%d, minDelay=%f)", (long long int)nextTimestamp, step, minDelay);
- }
-
- for(i=0;itimestamp-slots[i].timestamptimestamp-closestTime){
- closestTime=slots[i].timestamp;
- prevTime=slots[i].recvTime;
- }
- }*/
- double time=VoIPController::GetCurrentTime();
- if(expectNextAtTime!=0){
- double dev=expectNextAtTime-time;
- //LOGV("packet dev %f", dev);
- deviationHistory.Add(dev);
- expectNextAtTime+=step/1000.0;
- }else{
- expectNextAtTime=time+step/1000.0;
- }
-
- if(pkt->timestamptimestamp);
- latePacketCount++;
- lostPackets--;
- }else if(pkt->timestamptimestamp);
- latePacketCount++;
- return;
- }
-
- if(pkt->timestamp>lastPutTimestamp)
- lastPutTimestamp=pkt->timestamp;
-
- for(i=0;i=maxUsedSlots){
- int toRemove=JITTER_SLOT_COUNT;
- uint32_t bestTimestamp=0xFFFFFFFF;
- for(i=0;itimestamp;
- slots[i].size=pkt->size;
- slots[i].buffer=bufferPool.Get();
- slots[i].recvTimeDiff=time-prevRecvTime;
- slots[i].isEC=pkt->isEC;
- if(slots[i].buffer)
- memcpy(slots[i].buffer, pkt->buffer, pkt->size);
- else
- LOGE("WTF!!");
-#ifdef TGVOIP_DUMP_JITTER_STATS
- fprintf(dump, "%u\t%.03f\t%d\t%.03f\t%.03f\t%.03f\n", pkt->timestamp, time, GetCurrentDelay(), lastMeasuredJitter, lastMeasuredDelay, minDelay);
-#endif
- prevRecvTime=time;
-}
-
-
-void JitterBuffer::Advance(){
- nextTimestamp+=step;
-}
-
-
-unsigned int JitterBuffer::GetCurrentDelay(){
- unsigned int delay=0;
- int i;
- for(i=0;i=resyncThreshold){
- LOGV("resyncing: avgLate16=%f, resyncThreshold=%f", avgLate16, resyncThreshold);
- wasReset=true;
- }
-
- if(absolutelyNoLatePackets){
- if(dontDecMinDelay>0)
- dontDecMinDelay--;
- }
-
- delayHistory.Add(GetCurrentDelay());
- avgDelay=delayHistory.Average(32);
-
- double stddev=0;
- double avgdev=deviationHistory.Average();
- for(i=0;i<64;i++){
- double d=(deviationHistory[i]-avgdev);
- stddev+=(d*d);
- }
- stddev=sqrt(stddev/64);
- uint32_t stddevDelay=(uint32_t)ceil(stddev*2*1000/step);
- if(stddevDelaymaxMinDelay)
- stddevDelay=maxMinDelay;
- if(stddevDelay!=minDelay){
- int32_t diff=(int32_t)(stddevDelay-minDelay);
- if(diff>0){
- dontDecMinDelay=100;
- }
- if(diff<-1)
- diff=-1;
- if(diff>1)
- diff=1;
- if((diff>0 && dontIncMinDelay==0) || (diff<0 && dontDecMinDelay==0)){
- //nextTimestamp+=diff*(int32_t)step;
- minDelay+=diff;
- outstandingDelayChange+=diff*60;
- dontChangeDelay+=32;
- //LOGD("new delay from stddev %f", minDelay);
- if(diff<0){
- dontDecMinDelay+=25;
- }
- if(diff>0){
- dontIncMinDelay=25;
- }
- }
- }
- lastMeasuredJitter=stddev;
- lastMeasuredDelay=stddevDelay;
- //LOGV("stddev=%.3f, avg=%.3f, ndelay=%d, dontDec=%u", stddev, avgdev, stddevDelay, dontDecMinDelay);
- if(dontChangeDelay==0){
- if(avgDelay>minDelay+0.5){
- outstandingDelayChange-=avgDelay>minDelay+2 ? 60 : 20;
- dontChangeDelay+=10;
- }else if(avgDelay0)
- dontChangeDelay--;
-
- //LOGV("jitter: avg delay=%d, delay=%d, late16=%.1f, dontDecMinDelay=%d", avgDelay, delayHistory[0], avgLate16, dontDecMinDelay);
- /*if(!adjustingDelay) {
- if (((minDelay==1 ? (avgDelay>=3) : (avgDelay>=minDelay/2)) && delayHistory[0]>minDelay && avgLate16<=0.1 && absolutelyNoLatePackets && dontDecMinDelay<32 && min>minDelay)) {
- LOGI("jitter: need adjust");
- adjustingDelay=true;
- }
- }else{
- if(!absolutelyNoLatePackets){
- LOGI("jitter: done adjusting because we're losing packets");
- adjustingDelay=false;
- }else if(tickCount%5==0){
- LOGD("jitter: removing a packet to reduce delay");
- GetInternal(NULL, 0);
- expectNextAtTime=0;
- if(GetCurrentDelay()<=minDelay || min<=minDelay){
- adjustingDelay = false;
- LOGI("jitter: done adjusting");
- }
- }
- }*/
-
- tickCount++;
-
-}
-
-
-void JitterBuffer::GetAverageLateCount(double *out){
- double avgLate64=lateHistory.Average(), avgLate32=lateHistory.Average(32), avgLate16=lateHistory.Average(16);
- out[0]=avgLate16;
- out[1]=avgLate32;
- out[2]=avgLate64;
-}
-
-
-int JitterBuffer::GetAndResetLostPacketCount(){
- MutexGuard m(mutex);
- int r=lostPackets;
- lostPackets=0;
- return r;
-}
-
-double JitterBuffer::GetLastMeasuredJitter(){
- return lastMeasuredJitter;
-}
-
-double JitterBuffer::GetLastMeasuredDelay(){
- return lastMeasuredDelay;
-}
-
-double JitterBuffer::GetAverageDelay(){
- return avgDelay;
-}
diff --git a/submodules/libtgvoip/JitterBuffer.h b/submodules/libtgvoip/JitterBuffer.h
deleted file mode 100644
index ddbe4475d8..0000000000
--- a/submodules/libtgvoip/JitterBuffer.h
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_JITTERBUFFER_H
-#define LIBTGVOIP_JITTERBUFFER_H
-
-#include
-#include
-#include
-#include "MediaStreamItf.h"
-#include "BlockingQueue.h"
-#include "Buffers.h"
-#include "threading.h"
-
-#define JITTER_SLOT_COUNT 64
-#define JITTER_SLOT_SIZE 1024
-#define JR_OK 1
-#define JR_MISSING 2
-#define JR_BUFFERING 3
-
-
-namespace tgvoip{
-class JitterBuffer{
-public:
- JitterBuffer(MediaStreamItf* out, uint32_t step);
- ~JitterBuffer();
- void SetMinPacketCount(uint32_t count);
- int GetMinPacketCount();
- unsigned int GetCurrentDelay();
- double GetAverageDelay();
- void Reset();
- void HandleInput(unsigned char* data, size_t len, uint32_t timestamp, bool isEC);
- size_t HandleOutput(unsigned char* buffer, size_t len, int offsetInSteps, bool advance, int& playbackScaledDuration, bool& isEC);
- void Tick();
- void GetAverageLateCount(double* out);
- int GetAndResetLostPacketCount();
- double GetLastMeasuredJitter();
- double GetLastMeasuredDelay();
-
-private:
- struct jitter_packet_t{
- unsigned char* buffer=NULL;
- size_t size;
- uint32_t timestamp;
- bool isEC;
- double recvTimeDiff;
- };
- static size_t CallbackIn(unsigned char* data, size_t len, void* param);
- static size_t CallbackOut(unsigned char* data, size_t len, void* param);
- void PutInternal(jitter_packet_t* pkt, bool overwriteExisting);
- int GetInternal(jitter_packet_t* pkt, int offset, bool advance);
- void Advance();
-
- BufferPool bufferPool;
- Mutex mutex;
- jitter_packet_t slots[JITTER_SLOT_COUNT];
- int64_t nextTimestamp=0;
- uint32_t step;
- double minDelay=6;
- uint32_t minMinDelay;
- uint32_t maxMinDelay;
- uint32_t maxUsedSlots;
- uint32_t lastPutTimestamp;
- uint32_t lossesToReset;
- double resyncThreshold;
- unsigned int lostCount=0;
- unsigned int lostSinceReset=0;
- unsigned int gotSinceReset=0;
- bool wasReset=true;
- bool needBuffering=true;
- HistoricBuffer delayHistory;
- HistoricBuffer lateHistory;
- bool adjustingDelay=false;
- unsigned int tickCount=0;
- unsigned int latePacketCount=0;
- unsigned int dontIncMinDelay=0;
- unsigned int dontDecMinDelay=0;
- int lostPackets=0;
- double prevRecvTime=0;
- double expectNextAtTime=0;
- HistoricBuffer deviationHistory;
- double lastMeasuredJitter=0;
- double lastMeasuredDelay=0;
- int outstandingDelayChange=0;
- unsigned int dontChangeDelay=0;
- double avgDelay=0;
- bool first=true;
-#ifdef TGVOIP_DUMP_JITTER_STATS
- FILE* dump;
-#endif
-};
-}
-
-#endif //LIBTGVOIP_JITTERBUFFER_H
diff --git a/submodules/libtgvoip/Makefile.am b/submodules/libtgvoip/Makefile.am
deleted file mode 100644
index 0d1f1b50ff..0000000000
--- a/submodules/libtgvoip/Makefile.am
+++ /dev/null
@@ -1,760 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-CFLAGS = -Wall -DHAVE_CONFIG_H -Wno-unknown-pragmas
-
-lib_LTLIBRARIES = libtgvoip.la
-
-SRC = VoIPController.cpp \
-Buffers.cpp \
-CongestionControl.cpp \
-EchoCanceller.cpp \
-JitterBuffer.cpp \
-logging.cpp \
-MediaStreamItf.cpp \
-MessageThread.cpp \
-NetworkSocket.cpp \
-OpusDecoder.cpp \
-OpusEncoder.cpp \
-PacketReassembler.cpp \
-VoIPGroupController.cpp \
-VoIPServerConfig.cpp \
-audio/AudioIO.cpp \
-audio/AudioInput.cpp \
-audio/AudioOutput.cpp \
-audio/Resampler.cpp \
-os/posix/NetworkSocketPosix.cpp \
-video/VideoSource.cpp \
-video/VideoRenderer.cpp \
-video/ScreamCongestionController.cpp \
-json11.cpp
-
-TGVOIP_HDRS = \
-VoIPController.h \
-Buffers.h \
-BlockingQueue.h \
-PrivateDefines.h \
-CongestionControl.h \
-EchoCanceller.h \
-JitterBuffer.h \
-logging.h \
-threading.h \
-MediaStreamItf.h \
-MessageThread.h \
-NetworkSocket.h \
-OpusDecoder.h \
-OpusEncoder.h \
-PacketReassembler.h \
-VoIPServerConfig.h \
-audio/AudioIO.h \
-audio/AudioInput.h \
-audio/AudioOutput.h \
-audio/Resampler.h \
-os/posix/NetworkSocketPosix.h \
-video/VideoSource.h \
-video/VideoRenderer.h \
-video/ScreamCongestionController.h \
-json11.hpp \
-utils.h
-
-if TARGET_OS_OSX
-
-SRC += \
-os/darwin/AudioInputAudioUnit.cpp \
-os/darwin/AudioOutputAudioUnit.cpp \
-os/darwin/AudioUnitIO.cpp \
-os/darwin/AudioInputAudioUnitOSX.cpp \
-os/darwin/AudioOutputAudioUnitOSX.cpp \
-os/darwin/DarwinSpecific.mm \
-os/darwin/SampleBufferDisplayLayerRenderer.mm \
-os/darwin/TGVVideoRenderer.mm \
-os/darwin/TGVVideoSource.mm \
-os/darwin/VideoToolboxEncoderSource.mm
-
-TGVOIP_HDRS += \
-os/darwin/AudioInputAudioUnit.h \
-os/darwin/AudioOutputAudioUnit.h \
-os/darwin/AudioUnitIO.h \
-os/darwin/AudioInputAudioUnitOSX.h \
-os/darwin/AudioOutputAudioUnitOSX.h \
-os/darwin/DarwinSpecific.h \
-os/darwin/SampleBufferDisplayLayerRenderer.h \
-os/darwin/TGVVideoRenderer.h \
-os/darwin/TGVVideoSource.h \
-os/darwin/VideoToolboxEncoderSource.h
-
-LDFLAGS += -framework Foundation -framework CoreFoundation -framework CoreAudio -framework AudioToolbox -framework VideoToolbox -framework CoreMedia -framework CoreVideo
-
-else
-# Linux-specific
-
-if WITH_ALSA
-SRC += \
-os/linux/AudioInputALSA.cpp \
-os/linux/AudioOutputALSA.cpp
-TGVOIP_HDRS += \
-os/linux/AudioInputALSA.h \
-os/linux/AudioOutputALSA.h
-endif
-
-if WITH_PULSE
-SRC += \
-os/linux/AudioOutputPulse.cpp \
-os/linux/AudioInputPulse.cpp \
-os/linux/AudioPulse.cpp
-TGVOIP_HDRS += \
-os/linux/AudioOutputPulse.h \
-os/linux/AudioInputPulse.h \
-os/linux/AudioPulse.h \
-os/linux/PulseFunctions.h
-endif
-endif
-
-if ENABLE_DSP
-CFLAGS += -DWEBRTC_POSIX -DWEBRTC_APM_DEBUG_DUMP=0 -DWEBRTC_NS_FLOAT -I$(top_srcdir)/webrtc_dsp
-CCASFLAGS += -I$(top_srcdir)/webrtc_dsp
-
-SRC += \
-./webrtc_dsp/system_wrappers/source/field_trial.cc \
-./webrtc_dsp/system_wrappers/source/metrics.cc \
-./webrtc_dsp/system_wrappers/source/cpu_features.cc \
-./webrtc_dsp/absl/strings/internal/memutil.cc \
-./webrtc_dsp/absl/strings/string_view.cc \
-./webrtc_dsp/absl/strings/ascii.cc \
-./webrtc_dsp/absl/types/bad_optional_access.cc \
-./webrtc_dsp/absl/types/optional.cc \
-./webrtc_dsp/absl/base/internal/raw_logging.cc \
-./webrtc_dsp/absl/base/internal/throw_delegate.cc \
-./webrtc_dsp/rtc_base/race_checker.cc \
-./webrtc_dsp/rtc_base/strings/string_builder.cc \
-./webrtc_dsp/rtc_base/memory/aligned_malloc.cc \
-./webrtc_dsp/rtc_base/timeutils.cc \
-./webrtc_dsp/rtc_base/platform_file.cc \
-./webrtc_dsp/rtc_base/string_to_number.cc \
-./webrtc_dsp/rtc_base/thread_checker_impl.cc \
-./webrtc_dsp/rtc_base/stringencode.cc \
-./webrtc_dsp/rtc_base/stringutils.cc \
-./webrtc_dsp/rtc_base/checks.cc \
-./webrtc_dsp/rtc_base/platform_thread.cc \
-./webrtc_dsp/rtc_base/logging_webrtc.cc \
-./webrtc_dsp/rtc_base/criticalsection.cc \
-./webrtc_dsp/rtc_base/platform_thread_types.cc \
-./webrtc_dsp/rtc_base/event.cc \
-./webrtc_dsp/rtc_base/event_tracer.cc \
-./webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.cc \
-./webrtc_dsp/third_party/rnnoise/src/kiss_fft.cc \
-./webrtc_dsp/api/audio/audio_frame.cc \
-./webrtc_dsp/api/audio/echo_canceller3_config.cc \
-./webrtc_dsp/api/audio/echo_canceller3_factory.cc \
-./webrtc_dsp/modules/third_party/fft/fft.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c \
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.c \
-./webrtc_dsp/modules/audio_processing/rms_level.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/moving_max.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.cc \
-./webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.cc \
-./webrtc_dsp/modules/audio_processing/splitting_filter.cc \
-./webrtc_dsp/modules/audio_processing/gain_control_impl.cc \
-./webrtc_dsp/modules/audio_processing/ns/nsx_core.c \
-./webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.c \
-./webrtc_dsp/modules/audio_processing/ns/nsx_core_c.c \
-./webrtc_dsp/modules/audio_processing/ns/ns_core.c \
-./webrtc_dsp/modules/audio_processing/ns/noise_suppression.c \
-./webrtc_dsp/modules/audio_processing/audio_buffer.cc \
-./webrtc_dsp/modules/audio_processing/typing_detection.cc \
-./webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.cc \
-./webrtc_dsp/modules/audio_processing/include/audio_generator_factory.cc \
-./webrtc_dsp/modules/audio_processing/include/aec_dump.cc \
-./webrtc_dsp/modules/audio_processing/include/audio_processing.cc \
-./webrtc_dsp/modules/audio_processing/include/config.cc \
-./webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.cc \
-./webrtc_dsp/modules/audio_processing/agc2/agc2_common.cc \
-./webrtc_dsp/modules/audio_processing/agc2/gain_applier.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc \
-./webrtc_dsp/modules/audio_processing/agc2/limiter.cc \
-./webrtc_dsp/modules/audio_processing/agc2/saturation_protector.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.cc \
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.cc \
-./webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.cc \
-./webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.cc \
-./webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.cc \
-./webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.cc \
-./webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.cc \
-./webrtc_dsp/modules/audio_processing/agc2/vad_with_level.cc \
-./webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.cc \
-./webrtc_dsp/modules/audio_processing/agc2/down_sampler.cc \
-./webrtc_dsp/modules/audio_processing/agc2/signal_classifier.cc \
-./webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.cc \
-./webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.cc \
-./webrtc_dsp/modules/audio_processing/agc2/biquad_filter.cc \
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc \
-./webrtc_dsp/modules/audio_processing/transient/moving_moments.cc \
-./webrtc_dsp/modules/audio_processing/transient/wpd_tree.cc \
-./webrtc_dsp/modules/audio_processing/transient/wpd_node.cc \
-./webrtc_dsp/modules/audio_processing/transient/transient_suppressor.cc \
-./webrtc_dsp/modules/audio_processing/transient/transient_detector.cc \
-./webrtc_dsp/modules/audio_processing/low_cut_filter.cc \
-./webrtc_dsp/modules/audio_processing/level_estimator_impl.cc \
-./webrtc_dsp/modules/audio_processing/three_band_filter_bank.cc \
-./webrtc_dsp/modules/audio_processing/aec/echo_cancellation.cc \
-./webrtc_dsp/modules/audio_processing/aec/aec_resampler.cc \
-./webrtc_dsp/modules/audio_processing/aec/aec_core.cc \
-./webrtc_dsp/modules/audio_processing/voice_detection_impl.cc \
-./webrtc_dsp/modules/audio_processing/echo_cancellation_impl.cc \
-./webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.cc \
-./webrtc_dsp/modules/audio_processing/agc/agc.cc \
-./webrtc_dsp/modules/audio_processing/agc/loudness_histogram.cc \
-./webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.cc \
-./webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.c \
-./webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.c \
-./webrtc_dsp/modules/audio_processing/agc/utility.cc \
-./webrtc_dsp/modules/audio_processing/audio_processing_impl.cc \
-./webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.cc \
-./webrtc_dsp/modules/audio_processing/gain_controller2.cc \
-./webrtc_dsp/modules/audio_processing/residual_echo_detector.cc \
-./webrtc_dsp/modules/audio_processing/noise_suppression_impl.cc \
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core.cc \
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.cc \
-./webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.cc \
-./webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.cc \
-./webrtc_dsp/modules/audio_processing/aec3/frame_blocker.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subtractor.cc \
-./webrtc_dsp/modules/audio_processing/aec3/aec3_fft.cc \
-./webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/suppression_filter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_processor.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/vector_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/erl_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/aec_state.cc \
-./webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.cc \
-./webrtc_dsp/modules/audio_processing/aec3/skew_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_framer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/erle_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model.cc \
-./webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subtractor_output.cc \
-./webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/suppression_gain.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_audibility.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.cc \
-./webrtc_dsp/modules/audio_processing/aec3/moving_average.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/aec3_common.cc \
-./webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/matched_filter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.cc \
-./webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.cc \
-./webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_remover.cc \
-./webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_processor2.cc \
-./webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.cc \
-./webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/fft_buffer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.cc \
-./webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.cc \
-./webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.cc \
-./webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.cc \
-./webrtc_dsp/modules/audio_processing/aec3/decimator.cc \
-./webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.cc \
-./webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.cc \
-./webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.cc \
-./webrtc_dsp/modules/audio_processing/vad/standalone_vad.cc \
-./webrtc_dsp/modules/audio_processing/vad/pitch_internal.cc \
-./webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.cc \
-./webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.cc \
-./webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.cc \
-./webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.cc \
-./webrtc_dsp/modules/audio_processing/vad/gmm.cc \
-./webrtc_dsp/modules/audio_processing/utility/ooura_fft.cc \
-./webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.cc \
-./webrtc_dsp/modules/audio_processing/utility/delay_estimator.cc \
-./webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.cc \
-./webrtc_dsp/common_audio/window_generator.cc \
-./webrtc_dsp/common_audio/channel_buffer.cc \
-./webrtc_dsp/common_audio/fir_filter_factory.cc \
-./webrtc_dsp/common_audio/wav_header.cc \
-./webrtc_dsp/common_audio/real_fourier_ooura.cc \
-./webrtc_dsp/common_audio/audio_util.cc \
-./webrtc_dsp/common_audio/fir_filter_sse.cc \
-./webrtc_dsp/common_audio/resampler/push_sinc_resampler.cc \
-./webrtc_dsp/common_audio/resampler/resampler.cc \
-./webrtc_dsp/common_audio/resampler/sinc_resampler_sse.cc \
-./webrtc_dsp/common_audio/resampler/push_resampler.cc \
-./webrtc_dsp/common_audio/resampler/sinc_resampler.cc \
-./webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.cc \
-./webrtc_dsp/common_audio/wav_file.cc \
-./webrtc_dsp/common_audio/third_party/fft4g/fft4g.c \
-./webrtc_dsp/common_audio/audio_converter.cc \
-./webrtc_dsp/common_audio/real_fourier.cc \
-./webrtc_dsp/common_audio/sparse_fir_filter.cc \
-./webrtc_dsp/common_audio/smoothing_filter.cc \
-./webrtc_dsp/common_audio/fir_filter_c.cc \
-./webrtc_dsp/common_audio/ring_buffer.c \
-./webrtc_dsp/common_audio/signal_processing/complex_fft.c \
-./webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.c \
-./webrtc_dsp/common_audio/signal_processing/splitting_filter1.c \
-./webrtc_dsp/common_audio/signal_processing/levinson_durbin.c \
-./webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.cc \
-./webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.c \
-./webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.c \
-./webrtc_dsp/common_audio/signal_processing/energy.c \
-./webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c \
-./webrtc_dsp/common_audio/signal_processing/downsample_fast.c \
-./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.c \
-./webrtc_dsp/common_audio/signal_processing/spl_init.c \
-./webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.c \
-./webrtc_dsp/common_audio/signal_processing/cross_correlation.c \
-./webrtc_dsp/common_audio/signal_processing/division_operations.c \
-./webrtc_dsp/common_audio/signal_processing/auto_correlation.c \
-./webrtc_dsp/common_audio/signal_processing/get_scaling_square.c \
-./webrtc_dsp/common_audio/signal_processing/resample.c \
-./webrtc_dsp/common_audio/signal_processing/min_max_operations.c \
-./webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.c \
-./webrtc_dsp/common_audio/signal_processing/filter_ar.c \
-./webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.c \
-./webrtc_dsp/common_audio/signal_processing/resample_fractional.c \
-./webrtc_dsp/common_audio/signal_processing/real_fft.c \
-./webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.c \
-./webrtc_dsp/common_audio/signal_processing/randomization_functions.c \
-./webrtc_dsp/common_audio/signal_processing/copy_set_operations.c \
-./webrtc_dsp/common_audio/signal_processing/resample_by_2.c \
-./webrtc_dsp/common_audio/signal_processing/get_hanning_window.c \
-./webrtc_dsp/common_audio/signal_processing/resample_48khz.c \
-./webrtc_dsp/common_audio/signal_processing/spl_inl.c \
-./webrtc_dsp/common_audio/signal_processing/spl_sqrt.c \
-./webrtc_dsp/common_audio/vad/vad_sp.c \
-./webrtc_dsp/common_audio/vad/vad.cc \
-./webrtc_dsp/common_audio/vad/webrtc_vad.c \
-./webrtc_dsp/common_audio/vad/vad_filterbank.c \
-./webrtc_dsp/common_audio/vad/vad_core.c \
-./webrtc_dsp/common_audio/vad/vad_gmm.c
-
-if TARGET_OS_OSX
-CFLAGS += -DWEBRTC_MAC
-SRC += \
-webrtc_dsp/rtc_base/logging_mac.mm \
-webrtc_dsp/rtc_base/logging_mac.h
-else
-CFLAGS += -DWEBRTC_LINUX
-endif
-
-if TARGET_CPU_X86
-SRC += \
-webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.cc \
-webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.cc
-endif
-
-if ENABLE_AUDIO_CALLBACK
-CFLAGS += -DTGVOIP_USE_CALLBACK_AUDIO_IO
-SRC += \
-audio/AudioIOCallback.cpp
-TGVOIP_HDRS += \
-audio/AudioIOCallback.h
-endif
-
-if TARGET_CPU_ARM
-SRC += \
-webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.S \
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.S
-if TARGET_CPU_ARMV7
-CFLAGS += -mfpu=neon -mfloat-abi=hard
-CCASFLAGS += -mfpu=neon -mfloat-abi=hard
-SRC += \
-webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.c \
-webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.c \
-webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.c \
-webrtc_dsp/modules/audio_processing/aec/aec_core_neon.cc \
-webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.cc \
-webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.c \
-webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.cc
-# webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S
-endif
-else
-SRC += \
-webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.c \
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c
-endif
-
-# headers
-SRC += \
-webrtc_dsp/system_wrappers/include/field_trial.h \
-webrtc_dsp/system_wrappers/include/cpu_features_wrapper.h \
-webrtc_dsp/system_wrappers/include/asm_defines.h \
-webrtc_dsp/system_wrappers/include/metrics.h \
-webrtc_dsp/system_wrappers/include/compile_assert_c.h \
-webrtc_dsp/typedefs.h \
-webrtc_dsp/absl/strings/internal/memutil.h \
-webrtc_dsp/absl/strings/ascii.h \
-webrtc_dsp/absl/strings/string_view.h \
-webrtc_dsp/absl/types/optional.h \
-webrtc_dsp/absl/types/bad_optional_access.h \
-webrtc_dsp/absl/memory/memory.h \
-webrtc_dsp/absl/meta/type_traits.h \
-webrtc_dsp/absl/algorithm/algorithm.h \
-webrtc_dsp/absl/container/inlined_vector.h \
-webrtc_dsp/absl/base/policy_checks.h \
-webrtc_dsp/absl/base/port.h \
-webrtc_dsp/absl/base/config.h \
-webrtc_dsp/absl/base/internal/invoke.h \
-webrtc_dsp/absl/base/internal/inline_variable.h \
-webrtc_dsp/absl/base/internal/atomic_hook.h \
-webrtc_dsp/absl/base/internal/identity.h \
-webrtc_dsp/absl/base/internal/raw_logging.h \
-webrtc_dsp/absl/base/internal/throw_delegate.h \
-webrtc_dsp/absl/base/attributes.h \
-webrtc_dsp/absl/base/macros.h \
-webrtc_dsp/absl/base/optimization.h \
-webrtc_dsp/absl/base/log_severity.h \
-webrtc_dsp/absl/utility/utility.h \
-webrtc_dsp/rtc_base/string_to_number.h \
-webrtc_dsp/rtc_base/constructormagic.h \
-webrtc_dsp/rtc_base/strings/string_builder.h \
-webrtc_dsp/rtc_base/event_tracer.h \
-webrtc_dsp/rtc_base/stringencode.h \
-webrtc_dsp/rtc_base/memory/aligned_malloc.h \
-webrtc_dsp/rtc_base/event.h \
-webrtc_dsp/rtc_base/ignore_wundef.h \
-webrtc_dsp/rtc_base/stringutils.h \
-webrtc_dsp/rtc_base/arraysize.h \
-webrtc_dsp/rtc_base/swap_queue.h \
-webrtc_dsp/rtc_base/trace_event.h \
-webrtc_dsp/rtc_base/checks.h \
-webrtc_dsp/rtc_base/deprecation.h \
-webrtc_dsp/rtc_base/sanitizer.h \
-webrtc_dsp/rtc_base/scoped_ref_ptr.h \
-webrtc_dsp/rtc_base/logging.h \
-webrtc_dsp/rtc_base/timeutils.h \
-webrtc_dsp/rtc_base/atomicops.h \
-webrtc_dsp/rtc_base/numerics/safe_minmax.h \
-webrtc_dsp/rtc_base/numerics/safe_conversions.h \
-webrtc_dsp/rtc_base/numerics/safe_conversions_impl.h \
-webrtc_dsp/rtc_base/numerics/safe_compare.h \
-webrtc_dsp/rtc_base/system/unused.h \
-webrtc_dsp/rtc_base/system/inline.h \
-webrtc_dsp/rtc_base/system/ignore_warnings.h \
-webrtc_dsp/rtc_base/system/asm_defines.h \
-webrtc_dsp/rtc_base/system/rtc_export.h \
-webrtc_dsp/rtc_base/system/arch.h \
-webrtc_dsp/rtc_base/platform_thread.h \
-webrtc_dsp/rtc_base/platform_thread_types.h \
-webrtc_dsp/rtc_base/protobuf_utils.h \
-webrtc_dsp/rtc_base/thread_annotations.h \
-webrtc_dsp/rtc_base/gtest_prod_util.h \
-webrtc_dsp/rtc_base/function_view.h \
-webrtc_dsp/rtc_base/criticalsection.h \
-webrtc_dsp/rtc_base/refcount.h \
-webrtc_dsp/rtc_base/thread_checker_impl.h \
-webrtc_dsp/rtc_base/compile_assert_c.h \
-webrtc_dsp/rtc_base/type_traits.h \
-webrtc_dsp/rtc_base/platform_file.h \
-webrtc_dsp/rtc_base/refcounter.h \
-webrtc_dsp/rtc_base/thread_checker.h \
-webrtc_dsp/rtc_base/race_checker.h \
-webrtc_dsp/rtc_base/refcountedobject.h \
-webrtc_dsp/third_party/rnnoise/src/rnn_activations.h \
-webrtc_dsp/third_party/rnnoise/src/kiss_fft.h \
-webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.h \
-webrtc_dsp/api/audio/echo_canceller3_config.h \
-webrtc_dsp/api/audio/echo_control.h \
-webrtc_dsp/api/audio/audio_frame.h \
-webrtc_dsp/api/audio/echo_canceller3_factory.h \
-webrtc_dsp/api/array_view.h \
-webrtc_dsp/modules/third_party/fft/fft.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/bandwidth_info.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/include/isac.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/settings.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_float_type.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/codec.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/structs.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h \
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.h \
-webrtc_dsp/modules/audio_processing/echo_detector/moving_max.h \
-webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.h \
-webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.h \
-webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.h \
-webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.h \
-webrtc_dsp/modules/audio_processing/rms_level.h \
-webrtc_dsp/modules/audio_processing/ns/ns_core.h \
-webrtc_dsp/modules/audio_processing/ns/defines.h \
-webrtc_dsp/modules/audio_processing/ns/noise_suppression.h \
-webrtc_dsp/modules/audio_processing/ns/nsx_core.h \
-webrtc_dsp/modules/audio_processing/ns/windows_private.h \
-webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.h \
-webrtc_dsp/modules/audio_processing/ns/nsx_defines.h \
-webrtc_dsp/modules/audio_processing/residual_echo_detector.h \
-webrtc_dsp/modules/audio_processing/audio_processing_impl.h \
-webrtc_dsp/modules/audio_processing/render_queue_item_verifier.h \
-webrtc_dsp/modules/audio_processing/include/audio_generator.h \
-webrtc_dsp/modules/audio_processing/include/config.h \
-webrtc_dsp/modules/audio_processing/include/audio_frame_view.h \
-webrtc_dsp/modules/audio_processing/include/mock_audio_processing.h \
-webrtc_dsp/modules/audio_processing/include/gain_control.h \
-webrtc_dsp/modules/audio_processing/include/audio_generator_factory.h \
-webrtc_dsp/modules/audio_processing/include/aec_dump.h \
-webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.h \
-webrtc_dsp/modules/audio_processing/include/audio_processing.h \
-webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.h \
-webrtc_dsp/modules/audio_processing/agc2/biquad_filter.h \
-webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.h \
-webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.h \
-webrtc_dsp/modules/audio_processing/agc2/signal_classifier.h \
-webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/sequence_buffer.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/test_utils.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_info.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/ring_buffer.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/symmetric_matrix_buffer.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/common.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h \
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.h \
-webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.h \
-webrtc_dsp/modules/audio_processing/agc2/down_sampler.h \
-webrtc_dsp/modules/audio_processing/agc2/saturation_protector.h \
-webrtc_dsp/modules/audio_processing/agc2/agc2_common.h \
-webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.h \
-webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.h \
-webrtc_dsp/modules/audio_processing/agc2/vad_with_level.h \
-webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.h \
-webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.h \
-webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.h \
-webrtc_dsp/modules/audio_processing/agc2/gain_applier.h \
-webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.h \
-webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.h \
-webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.h \
-webrtc_dsp/modules/audio_processing/agc2/limiter.h \
-webrtc_dsp/modules/audio_processing/transient/transient_detector.h \
-webrtc_dsp/modules/audio_processing/transient/transient_suppressor.h \
-webrtc_dsp/modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h \
-webrtc_dsp/modules/audio_processing/transient/common.h \
-webrtc_dsp/modules/audio_processing/transient/wpd_node.h \
-webrtc_dsp/modules/audio_processing/transient/moving_moments.h \
-webrtc_dsp/modules/audio_processing/transient/wpd_tree.h \
-webrtc_dsp/modules/audio_processing/transient/dyadic_decimator.h \
-webrtc_dsp/modules/audio_processing/noise_suppression_impl.h \
-webrtc_dsp/modules/audio_processing/aec/aec_resampler.h \
-webrtc_dsp/modules/audio_processing/aec/echo_cancellation.h \
-webrtc_dsp/modules/audio_processing/aec/aec_core.h \
-webrtc_dsp/modules/audio_processing/aec/aec_core_optimized_methods.h \
-webrtc_dsp/modules/audio_processing/aec/aec_common.h \
-webrtc_dsp/modules/audio_processing/voice_detection_impl.h \
-webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.h \
-webrtc_dsp/modules/audio_processing/agc/legacy/gain_control.h \
-webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.h \
-webrtc_dsp/modules/audio_processing/agc/mock_agc.h \
-webrtc_dsp/modules/audio_processing/agc/loudness_histogram.h \
-webrtc_dsp/modules/audio_processing/agc/gain_map_internal.h \
-webrtc_dsp/modules/audio_processing/agc/utility.h \
-webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.h \
-webrtc_dsp/modules/audio_processing/agc/agc.h \
-webrtc_dsp/modules/audio_processing/common.h \
-webrtc_dsp/modules/audio_processing/audio_buffer.h \
-webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.h \
-webrtc_dsp/modules/audio_processing/splitting_filter.h \
-webrtc_dsp/modules/audio_processing/low_cut_filter.h \
-webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.h \
-webrtc_dsp/modules/audio_processing/three_band_filter_bank.h \
-webrtc_dsp/modules/audio_processing/echo_cancellation_impl.h \
-webrtc_dsp/modules/audio_processing/level_estimator_impl.h \
-webrtc_dsp/modules/audio_processing/gain_controller2.h \
-webrtc_dsp/modules/audio_processing/aecm/aecm_core.h \
-webrtc_dsp/modules/audio_processing/aecm/aecm_defines.h \
-webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.h \
-webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.h \
-webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.h \
-webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.h \
-webrtc_dsp/modules/audio_processing/aec3/aec_state.h \
-webrtc_dsp/modules/audio_processing/aec3/suppression_filter.h \
-webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.h \
-webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.h \
-webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.h \
-webrtc_dsp/modules/audio_processing/aec3/matched_filter.h \
-webrtc_dsp/modules/audio_processing/aec3/subtractor_output.h \
-webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.h \
-webrtc_dsp/modules/audio_processing/aec3/aec3_fft.h \
-webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.h \
-webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.h \
-webrtc_dsp/modules/audio_processing/aec3/subtractor.h \
-webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.h \
-webrtc_dsp/modules/audio_processing/aec3/fft_data.h \
-webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.h \
-webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.h \
-webrtc_dsp/modules/audio_processing/aec3/erl_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/echo_remover.h \
-webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.h \
-webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.h \
-webrtc_dsp/modules/audio_processing/aec3/moving_average.h \
-webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.h \
-webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.h \
-webrtc_dsp/modules/audio_processing/aec3/suppression_gain.h \
-webrtc_dsp/modules/audio_processing/aec3/erle_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/block_processor.h \
-webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.h \
-webrtc_dsp/modules/audio_processing/aec3/skew_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/render_buffer.h \
-webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.h \
-webrtc_dsp/modules/audio_processing/aec3/vector_buffer.h \
-webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.h \
-webrtc_dsp/modules/audio_processing/aec3/echo_audibility.h \
-webrtc_dsp/modules/audio_processing/aec3/fft_buffer.h \
-webrtc_dsp/modules/audio_processing/aec3/aec3_common.h \
-webrtc_dsp/modules/audio_processing/aec3/vector_math.h \
-webrtc_dsp/modules/audio_processing/aec3/decimator.h \
-webrtc_dsp/modules/audio_processing/aec3/frame_blocker.h \
-webrtc_dsp/modules/audio_processing/aec3/block_framer.h \
-webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.h \
-webrtc_dsp/modules/audio_processing/aec3/delay_estimate.h \
-webrtc_dsp/modules/audio_processing/aec3/reverb_model.h \
-webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.h \
-webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.h \
-webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.h \
-webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.h \
-webrtc_dsp/modules/audio_processing/gain_control_impl.h \
-webrtc_dsp/modules/audio_processing/typing_detection.h \
-webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.h \
-webrtc_dsp/modules/audio_processing/vad/vad_audio_proc_internal.h \
-webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.h \
-webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.h \
-webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.h \
-webrtc_dsp/modules/audio_processing/vad/gmm.h \
-webrtc_dsp/modules/audio_processing/vad/common.h \
-webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.h \
-webrtc_dsp/modules/audio_processing/vad/voice_gmm_tables.h \
-webrtc_dsp/modules/audio_processing/vad/noise_gmm_tables.h \
-webrtc_dsp/modules/audio_processing/vad/pitch_internal.h \
-webrtc_dsp/modules/audio_processing/vad/standalone_vad.h \
-webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.h \
-webrtc_dsp/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h \
-webrtc_dsp/modules/audio_processing/utility/delay_estimator_internal.h \
-webrtc_dsp/modules/audio_processing/utility/ooura_fft.h \
-webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.h \
-webrtc_dsp/modules/audio_processing/utility/delay_estimator.h \
-webrtc_dsp/modules/audio_processing/utility/ooura_fft_tables_common.h \
-webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.h \
-webrtc_dsp/common_audio/mocks/mock_smoothing_filter.h \
-webrtc_dsp/common_audio/wav_file.h \
-webrtc_dsp/common_audio/sparse_fir_filter.h \
-webrtc_dsp/common_audio/fir_filter_sse.h \
-webrtc_dsp/common_audio/window_generator.h \
-webrtc_dsp/common_audio/ring_buffer.h \
-webrtc_dsp/common_audio/fir_filter.h \
-webrtc_dsp/common_audio/include/audio_util.h \
-webrtc_dsp/common_audio/real_fourier_ooura.h \
-webrtc_dsp/common_audio/smoothing_filter.h \
-webrtc_dsp/common_audio/resampler/sinc_resampler.h \
-webrtc_dsp/common_audio/resampler/include/push_resampler.h \
-webrtc_dsp/common_audio/resampler/include/resampler.h \
-webrtc_dsp/common_audio/resampler/push_sinc_resampler.h \
-webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.h \
-webrtc_dsp/common_audio/fir_filter_factory.h \
-webrtc_dsp/common_audio/audio_converter.h \
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h \
-webrtc_dsp/common_audio/third_party/fft4g/fft4g.h \
-webrtc_dsp/common_audio/channel_buffer.h \
-webrtc_dsp/common_audio/real_fourier.h \
-webrtc_dsp/common_audio/fir_filter_neon.h \
-webrtc_dsp/common_audio/fir_filter_c.h \
-webrtc_dsp/common_audio/signal_processing/complex_fft_tables.h \
-webrtc_dsp/common_audio/signal_processing/include/signal_processing_library.h \
-webrtc_dsp/common_audio/signal_processing/include/real_fft.h \
-webrtc_dsp/common_audio/signal_processing/include/spl_inl.h \
-webrtc_dsp/common_audio/signal_processing/include/spl_inl_armv7.h \
-webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.h \
-webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.h \
-webrtc_dsp/common_audio/wav_header.h \
-webrtc_dsp/common_audio/vad/vad_core.h \
-webrtc_dsp/common_audio/vad/include/vad.h \
-webrtc_dsp/common_audio/vad/include/webrtc_vad.h \
-webrtc_dsp/common_audio/vad/vad_gmm.h \
-webrtc_dsp/common_audio/vad/vad_sp.h \
-webrtc_dsp/common_audio/vad/vad_filterbank.h
-
-else
-CFLAGS += -DTGVOIP_NO_DSP
-endif
-
-libtgvoip_la_SOURCES = $(SRC) $(TGVOIP_HDRS)
-tgvoipincludedir = $(includedir)/tgvoip
-nobase_tgvoipinclude_HEADERS = $(TGVOIP_HDRS)
-
-CXXFLAGS += -std=gnu++0x $(CFLAGS)
-if TARGET_OS_OSX
-OBJCFLAGS = $(CFLAGS)
-OBJCXXFLAGS += -std=gnu++0x $(CFLAGS)
-endif
\ No newline at end of file
diff --git a/submodules/libtgvoip/Makefile.in b/submodules/libtgvoip/Makefile.in
deleted file mode 100644
index c401d281ca..0000000000
--- a/submodules/libtgvoip/Makefile.in
+++ /dev/null
@@ -1,5223 +0,0 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@TARGET_OS_OSX_TRUE@am__append_1 = \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioInputAudioUnit.cpp \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioOutputAudioUnit.cpp \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioUnitIO.cpp \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioInputAudioUnitOSX.cpp \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioOutputAudioUnitOSX.cpp \
-@TARGET_OS_OSX_TRUE@os/darwin/DarwinSpecific.mm \
-@TARGET_OS_OSX_TRUE@os/darwin/SampleBufferDisplayLayerRenderer.mm \
-@TARGET_OS_OSX_TRUE@os/darwin/TGVVideoRenderer.mm \
-@TARGET_OS_OSX_TRUE@os/darwin/TGVVideoSource.mm \
-@TARGET_OS_OSX_TRUE@os/darwin/VideoToolboxEncoderSource.mm
-
-@TARGET_OS_OSX_TRUE@am__append_2 = \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioInputAudioUnit.h \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioOutputAudioUnit.h \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioUnitIO.h \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioInputAudioUnitOSX.h \
-@TARGET_OS_OSX_TRUE@os/darwin/AudioOutputAudioUnitOSX.h \
-@TARGET_OS_OSX_TRUE@os/darwin/DarwinSpecific.h \
-@TARGET_OS_OSX_TRUE@os/darwin/SampleBufferDisplayLayerRenderer.h \
-@TARGET_OS_OSX_TRUE@os/darwin/TGVVideoRenderer.h \
-@TARGET_OS_OSX_TRUE@os/darwin/TGVVideoSource.h \
-@TARGET_OS_OSX_TRUE@os/darwin/VideoToolboxEncoderSource.h
-
-@TARGET_OS_OSX_TRUE@am__append_3 = -framework Foundation -framework CoreFoundation -framework CoreAudio -framework AudioToolbox -framework VideoToolbox -framework CoreMedia -framework CoreVideo
-
-# Linux-specific
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@am__append_4 = \
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@os/linux/AudioInputALSA.cpp \
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@os/linux/AudioOutputALSA.cpp
-
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@am__append_5 = \
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@os/linux/AudioInputALSA.h \
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@os/linux/AudioOutputALSA.h
-
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@am__append_6 = \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/AudioOutputPulse.cpp \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/AudioInputPulse.cpp \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/AudioPulse.cpp
-
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@am__append_7 = \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/AudioOutputPulse.h \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/AudioInputPulse.h \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/AudioPulse.h \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@os/linux/PulseFunctions.h
-
-@ENABLE_DSP_TRUE@am__append_8 = -DWEBRTC_POSIX -DWEBRTC_APM_DEBUG_DUMP=0 -DWEBRTC_NS_FLOAT -I$(top_srcdir)/webrtc_dsp
-@ENABLE_DSP_TRUE@am__append_9 = -I$(top_srcdir)/webrtc_dsp
-@ENABLE_DSP_TRUE@am__append_10 = \
-@ENABLE_DSP_TRUE@./webrtc_dsp/system_wrappers/source/field_trial.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/system_wrappers/source/metrics.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/system_wrappers/source/cpu_features.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/strings/internal/memutil.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/strings/string_view.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/strings/ascii.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/types/bad_optional_access.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/types/optional.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/base/internal/raw_logging.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/absl/base/internal/throw_delegate.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/race_checker.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/strings/string_builder.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/memory/aligned_malloc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/timeutils.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/platform_file.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/string_to_number.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/thread_checker_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/stringencode.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/stringutils.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/checks.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/platform_thread.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/logging_webrtc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/criticalsection.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/platform_thread_types.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/event.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/rtc_base/event_tracer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/third_party/rnnoise/src/kiss_fft.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/api/audio/audio_frame.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/api/audio/echo_canceller3_config.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/api/audio/echo_canceller3_factory.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/third_party/fft/fft.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/rms_level.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/echo_detector/moving_max.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/splitting_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/gain_control_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/ns/nsx_core.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/ns/nsx_core_c.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/ns/ns_core.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/ns/noise_suppression.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/audio_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/typing_detection.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/include/audio_generator_factory.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/include/aec_dump.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/include/audio_processing.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/include/config.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/agc2_common.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/gain_applier.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/limiter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/saturation_protector.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/vad_with_level.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/down_sampler.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/signal_classifier.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/biquad_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/transient/moving_moments.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/transient/wpd_tree.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/transient/wpd_node.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/transient/transient_suppressor.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/transient/transient_detector.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/low_cut_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/level_estimator_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/three_band_filter_bank.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec/echo_cancellation.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec/aec_resampler.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec/aec_core.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/voice_detection_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/echo_cancellation_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc/agc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc/loudness_histogram.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/agc/utility.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/audio_processing_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/gain_controller2.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/residual_echo_detector.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/noise_suppression_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aecm/aecm_core.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/frame_blocker.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/subtractor.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/aec3_fft.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/suppression_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/block_processor.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/vector_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/erl_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/aec_state.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/skew_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/block_framer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/erle_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/reverb_model.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/subtractor_output.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/suppression_gain.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/echo_audibility.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/moving_average.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/aec3_common.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/matched_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/echo_remover.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/block_processor2.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/fft_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/aec3/decimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/standalone_vad.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/pitch_internal.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/vad/gmm.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/utility/ooura_fft.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/utility/delay_estimator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/window_generator.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/channel_buffer.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/fir_filter_factory.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/wav_header.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/real_fourier_ooura.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/audio_util.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/fir_filter_sse.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/resampler/push_sinc_resampler.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/resampler/resampler.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/resampler/sinc_resampler_sse.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/resampler/push_resampler.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/resampler/sinc_resampler.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/wav_file.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/third_party/fft4g/fft4g.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/audio_converter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/real_fourier.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/sparse_fir_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/smoothing_filter.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/fir_filter_c.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/ring_buffer.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/complex_fft.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/splitting_filter1.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/levinson_durbin.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/energy.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/downsample_fast.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/spl_init.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/cross_correlation.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/division_operations.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/auto_correlation.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/get_scaling_square.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/resample.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/min_max_operations.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/filter_ar.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/resample_fractional.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/real_fft.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/randomization_functions.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/copy_set_operations.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/resample_by_2.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/get_hanning_window.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/resample_48khz.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/spl_inl.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/signal_processing/spl_sqrt.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/vad/vad_sp.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/vad/vad.cc \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/vad/webrtc_vad.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/vad/vad_filterbank.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/vad/vad_core.c \
-@ENABLE_DSP_TRUE@./webrtc_dsp/common_audio/vad/vad_gmm.c
-
-@ENABLE_DSP_TRUE@@TARGET_OS_OSX_TRUE@am__append_11 = -DWEBRTC_MAC
-@ENABLE_DSP_TRUE@@TARGET_OS_OSX_TRUE@am__append_12 = \
-@ENABLE_DSP_TRUE@@TARGET_OS_OSX_TRUE@webrtc_dsp/rtc_base/logging_mac.mm \
-@ENABLE_DSP_TRUE@@TARGET_OS_OSX_TRUE@webrtc_dsp/rtc_base/logging_mac.h
-
-@ENABLE_DSP_TRUE@@TARGET_OS_OSX_FALSE@am__append_13 = -DWEBRTC_LINUX
-@ENABLE_DSP_TRUE@@TARGET_CPU_X86_TRUE@am__append_14 = \
-@ENABLE_DSP_TRUE@@TARGET_CPU_X86_TRUE@webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.cc \
-@ENABLE_DSP_TRUE@@TARGET_CPU_X86_TRUE@webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.cc
-
-@ENABLE_AUDIO_CALLBACK_TRUE@@ENABLE_DSP_TRUE@am__append_15 = -DTGVOIP_USE_CALLBACK_AUDIO_IO
-@ENABLE_AUDIO_CALLBACK_TRUE@@ENABLE_DSP_TRUE@am__append_16 = \
-@ENABLE_AUDIO_CALLBACK_TRUE@@ENABLE_DSP_TRUE@audio/AudioIOCallback.cpp
-
-@ENABLE_AUDIO_CALLBACK_TRUE@@ENABLE_DSP_TRUE@am__append_17 = \
-@ENABLE_AUDIO_CALLBACK_TRUE@@ENABLE_DSP_TRUE@audio/AudioIOCallback.h
-
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_TRUE@am__append_18 = \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.S \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.S
-
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@am__append_19 = -mfpu=neon -mfloat-abi=hard
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@am__append_20 = -mfpu=neon -mfloat-abi=hard
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@am__append_21 = \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.c \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.c \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.c \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/modules/audio_processing/aec/aec_core_neon.cc \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.cc \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.c \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.cc
-
-# webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_FALSE@am__append_22 = \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_FALSE@webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.c \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_FALSE@webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c
-
-
-# headers
-@ENABLE_DSP_TRUE@am__append_23 = \
-@ENABLE_DSP_TRUE@webrtc_dsp/system_wrappers/include/field_trial.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/system_wrappers/include/cpu_features_wrapper.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/system_wrappers/include/asm_defines.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/system_wrappers/include/metrics.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/system_wrappers/include/compile_assert_c.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/typedefs.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/strings/internal/memutil.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/strings/ascii.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/strings/string_view.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/types/optional.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/types/bad_optional_access.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/memory/memory.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/meta/type_traits.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/algorithm/algorithm.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/container/inlined_vector.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/policy_checks.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/port.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/config.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/internal/invoke.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/internal/inline_variable.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/internal/atomic_hook.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/internal/identity.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/internal/raw_logging.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/internal/throw_delegate.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/attributes.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/macros.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/optimization.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/base/log_severity.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/absl/utility/utility.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/string_to_number.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/constructormagic.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/strings/string_builder.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/event_tracer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/stringencode.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/memory/aligned_malloc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/event.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/ignore_wundef.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/stringutils.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/arraysize.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/swap_queue.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/trace_event.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/checks.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/deprecation.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/sanitizer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/scoped_ref_ptr.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/logging.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/timeutils.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/atomicops.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/numerics/safe_minmax.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/numerics/safe_conversions.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/numerics/safe_conversions_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/numerics/safe_compare.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/system/unused.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/system/inline.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/system/ignore_warnings.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/system/asm_defines.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/system/rtc_export.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/system/arch.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/platform_thread.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/platform_thread_types.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/protobuf_utils.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/thread_annotations.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/gtest_prod_util.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/function_view.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/criticalsection.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/refcount.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/thread_checker_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/compile_assert_c.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/type_traits.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/platform_file.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/refcounter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/thread_checker.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/race_checker.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/rtc_base/refcountedobject.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/third_party/rnnoise/src/rnn_activations.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/third_party/rnnoise/src/kiss_fft.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/api/audio/echo_canceller3_config.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/api/audio/echo_control.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/api/audio/audio_frame.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/api/audio/echo_canceller3_factory.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/api/array_view.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/third_party/fft/fft.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/bandwidth_info.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/include/isac.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/settings.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_float_type.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/codec.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/structs.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/echo_detector/moving_max.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/rms_level.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/ns_core.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/defines.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/noise_suppression.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/nsx_core.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/windows_private.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/ns/nsx_defines.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/residual_echo_detector.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/audio_processing_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/render_queue_item_verifier.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/audio_generator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/config.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/audio_frame_view.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/mock_audio_processing.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/gain_control.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/audio_generator_factory.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/aec_dump.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/include/audio_processing.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/biquad_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/signal_classifier.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/sequence_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/test_utils.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_info.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/ring_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/symmetric_matrix_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/down_sampler.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/saturation_protector.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/agc2_common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/vad_with_level.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/gain_applier.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc2/limiter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/transient_detector.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/transient_suppressor.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/wpd_node.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/moving_moments.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/wpd_tree.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/transient/dyadic_decimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/noise_suppression_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec/aec_resampler.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec/echo_cancellation.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec/aec_core.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec/aec_core_optimized_methods.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec/aec_common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/voice_detection_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/legacy/gain_control.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/mock_agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/loudness_histogram.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/gain_map_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/utility.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/agc/agc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/audio_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/splitting_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/low_cut_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/three_band_filter_bank.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/echo_cancellation_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/level_estimator_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/gain_controller2.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aecm/aecm_core.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aecm/aecm_defines.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/aec_state.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/suppression_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/matched_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/subtractor_output.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/aec3_fft.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/subtractor.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/fft_data.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/erl_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/echo_remover.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/moving_average.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/suppression_gain.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/erle_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/block_processor.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/skew_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/render_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/vector_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/echo_audibility.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/fft_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/aec3_common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/vector_math.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/decimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/frame_blocker.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/block_framer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/delay_estimate.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/reverb_model.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/gain_control_impl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/typing_detection.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/vad_audio_proc_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/gmm.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/voice_gmm_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/noise_gmm_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/pitch_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/standalone_vad.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/delay_estimator_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/ooura_fft.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/delay_estimator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/ooura_fft_tables_common.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/mocks/mock_smoothing_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/wav_file.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/sparse_fir_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/fir_filter_sse.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/window_generator.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/ring_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/fir_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/include/audio_util.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/real_fourier_ooura.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/smoothing_filter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/resampler/sinc_resampler.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/resampler/include/push_resampler.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/resampler/include/resampler.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/resampler/push_sinc_resampler.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/fir_filter_factory.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/audio_converter.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/third_party/fft4g/fft4g.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/channel_buffer.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/real_fourier.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/fir_filter_neon.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/fir_filter_c.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/complex_fft_tables.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/include/signal_processing_library.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/include/real_fft.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/include/spl_inl.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/include/spl_inl_armv7.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/wav_header.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/vad/vad_core.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/vad/include/vad.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/vad/include/webrtc_vad.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/vad/vad_gmm.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/vad/vad_sp.h \
-@ENABLE_DSP_TRUE@webrtc_dsp/common_audio/vad/vad_filterbank.h
-
-@ENABLE_DSP_FALSE@am__append_24 = -DTGVOIP_NO_DSP
-@TARGET_OS_OSX_TRUE@am__append_25 = -std=gnu++0x $(CFLAGS)
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
- $(am__configure_deps) $(am__nobase_tgvoipinclude_HEADERS_DIST) \
- $(am__DIST_COMMON)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(libdir)" \
- "$(DESTDIR)$(tgvoipincludedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libtgvoip_la_LIBADD =
-am__libtgvoip_la_SOURCES_DIST = VoIPController.cpp Buffers.cpp \
- CongestionControl.cpp EchoCanceller.cpp JitterBuffer.cpp \
- logging.cpp MediaStreamItf.cpp MessageThread.cpp \
- NetworkSocket.cpp OpusDecoder.cpp OpusEncoder.cpp \
- PacketReassembler.cpp VoIPGroupController.cpp \
- VoIPServerConfig.cpp audio/AudioIO.cpp audio/AudioInput.cpp \
- audio/AudioOutput.cpp audio/Resampler.cpp \
- os/posix/NetworkSocketPosix.cpp video/VideoSource.cpp \
- video/VideoRenderer.cpp video/ScreamCongestionController.cpp \
- json11.cpp os/darwin/AudioInputAudioUnit.cpp \
- os/darwin/AudioOutputAudioUnit.cpp os/darwin/AudioUnitIO.cpp \
- os/darwin/AudioInputAudioUnitOSX.cpp \
- os/darwin/AudioOutputAudioUnitOSX.cpp \
- os/darwin/DarwinSpecific.mm \
- os/darwin/SampleBufferDisplayLayerRenderer.mm \
- os/darwin/TGVVideoRenderer.mm os/darwin/TGVVideoSource.mm \
- os/darwin/VideoToolboxEncoderSource.mm \
- os/linux/AudioInputALSA.cpp os/linux/AudioOutputALSA.cpp \
- os/linux/AudioOutputPulse.cpp os/linux/AudioInputPulse.cpp \
- os/linux/AudioPulse.cpp \
- ./webrtc_dsp/system_wrappers/source/field_trial.cc \
- ./webrtc_dsp/system_wrappers/source/metrics.cc \
- ./webrtc_dsp/system_wrappers/source/cpu_features.cc \
- ./webrtc_dsp/absl/strings/internal/memutil.cc \
- ./webrtc_dsp/absl/strings/string_view.cc \
- ./webrtc_dsp/absl/strings/ascii.cc \
- ./webrtc_dsp/absl/types/bad_optional_access.cc \
- ./webrtc_dsp/absl/types/optional.cc \
- ./webrtc_dsp/absl/base/internal/raw_logging.cc \
- ./webrtc_dsp/absl/base/internal/throw_delegate.cc \
- ./webrtc_dsp/rtc_base/race_checker.cc \
- ./webrtc_dsp/rtc_base/strings/string_builder.cc \
- ./webrtc_dsp/rtc_base/memory/aligned_malloc.cc \
- ./webrtc_dsp/rtc_base/timeutils.cc \
- ./webrtc_dsp/rtc_base/platform_file.cc \
- ./webrtc_dsp/rtc_base/string_to_number.cc \
- ./webrtc_dsp/rtc_base/thread_checker_impl.cc \
- ./webrtc_dsp/rtc_base/stringencode.cc \
- ./webrtc_dsp/rtc_base/stringutils.cc \
- ./webrtc_dsp/rtc_base/checks.cc \
- ./webrtc_dsp/rtc_base/platform_thread.cc \
- ./webrtc_dsp/rtc_base/logging_webrtc.cc \
- ./webrtc_dsp/rtc_base/criticalsection.cc \
- ./webrtc_dsp/rtc_base/platform_thread_types.cc \
- ./webrtc_dsp/rtc_base/event.cc \
- ./webrtc_dsp/rtc_base/event_tracer.cc \
- ./webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.cc \
- ./webrtc_dsp/third_party/rnnoise/src/kiss_fft.cc \
- ./webrtc_dsp/api/audio/audio_frame.cc \
- ./webrtc_dsp/api/audio/echo_canceller3_config.cc \
- ./webrtc_dsp/api/audio/echo_canceller3_factory.cc \
- ./webrtc_dsp/modules/third_party/fft/fft.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.c \
- ./webrtc_dsp/modules/audio_processing/rms_level.cc \
- ./webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/echo_detector/moving_max.cc \
- ./webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/splitting_filter.cc \
- ./webrtc_dsp/modules/audio_processing/gain_control_impl.cc \
- ./webrtc_dsp/modules/audio_processing/ns/nsx_core.c \
- ./webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.c \
- ./webrtc_dsp/modules/audio_processing/ns/nsx_core_c.c \
- ./webrtc_dsp/modules/audio_processing/ns/ns_core.c \
- ./webrtc_dsp/modules/audio_processing/ns/noise_suppression.c \
- ./webrtc_dsp/modules/audio_processing/audio_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/typing_detection.cc \
- ./webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.cc \
- ./webrtc_dsp/modules/audio_processing/include/audio_generator_factory.cc \
- ./webrtc_dsp/modules/audio_processing/include/aec_dump.cc \
- ./webrtc_dsp/modules/audio_processing/include/audio_processing.cc \
- ./webrtc_dsp/modules/audio_processing/include/config.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/agc2_common.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/gain_applier.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/limiter.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/saturation_protector.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/vad_with_level.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/down_sampler.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/signal_classifier.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/biquad_filter.cc \
- ./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/transient/moving_moments.cc \
- ./webrtc_dsp/modules/audio_processing/transient/wpd_tree.cc \
- ./webrtc_dsp/modules/audio_processing/transient/wpd_node.cc \
- ./webrtc_dsp/modules/audio_processing/transient/transient_suppressor.cc \
- ./webrtc_dsp/modules/audio_processing/transient/transient_detector.cc \
- ./webrtc_dsp/modules/audio_processing/low_cut_filter.cc \
- ./webrtc_dsp/modules/audio_processing/level_estimator_impl.cc \
- ./webrtc_dsp/modules/audio_processing/three_band_filter_bank.cc \
- ./webrtc_dsp/modules/audio_processing/aec/echo_cancellation.cc \
- ./webrtc_dsp/modules/audio_processing/aec/aec_resampler.cc \
- ./webrtc_dsp/modules/audio_processing/aec/aec_core.cc \
- ./webrtc_dsp/modules/audio_processing/voice_detection_impl.cc \
- ./webrtc_dsp/modules/audio_processing/echo_cancellation_impl.cc \
- ./webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.cc \
- ./webrtc_dsp/modules/audio_processing/agc/agc.cc \
- ./webrtc_dsp/modules/audio_processing/agc/loudness_histogram.cc \
- ./webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.cc \
- ./webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.c \
- ./webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.c \
- ./webrtc_dsp/modules/audio_processing/agc/utility.cc \
- ./webrtc_dsp/modules/audio_processing/audio_processing_impl.cc \
- ./webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.cc \
- ./webrtc_dsp/modules/audio_processing/gain_controller2.cc \
- ./webrtc_dsp/modules/audio_processing/residual_echo_detector.cc \
- ./webrtc_dsp/modules/audio_processing/noise_suppression_impl.cc \
- ./webrtc_dsp/modules/audio_processing/aecm/aecm_core.cc \
- ./webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.cc \
- ./webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/frame_blocker.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/subtractor.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/aec3_fft.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/suppression_filter.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/block_processor.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/vector_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/erl_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/aec_state.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/skew_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/block_framer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/erle_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/reverb_model.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/subtractor_output.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/suppression_gain.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/echo_audibility.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/moving_average.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/aec3_common.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/matched_filter.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/echo_remover.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/block_processor2.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/fft_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.cc \
- ./webrtc_dsp/modules/audio_processing/aec3/decimator.cc \
- ./webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.cc \
- ./webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.cc \
- ./webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.cc \
- ./webrtc_dsp/modules/audio_processing/vad/standalone_vad.cc \
- ./webrtc_dsp/modules/audio_processing/vad/pitch_internal.cc \
- ./webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.cc \
- ./webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.cc \
- ./webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.cc \
- ./webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.cc \
- ./webrtc_dsp/modules/audio_processing/vad/gmm.cc \
- ./webrtc_dsp/modules/audio_processing/utility/ooura_fft.cc \
- ./webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.cc \
- ./webrtc_dsp/modules/audio_processing/utility/delay_estimator.cc \
- ./webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.cc \
- ./webrtc_dsp/common_audio/window_generator.cc \
- ./webrtc_dsp/common_audio/channel_buffer.cc \
- ./webrtc_dsp/common_audio/fir_filter_factory.cc \
- ./webrtc_dsp/common_audio/wav_header.cc \
- ./webrtc_dsp/common_audio/real_fourier_ooura.cc \
- ./webrtc_dsp/common_audio/audio_util.cc \
- ./webrtc_dsp/common_audio/fir_filter_sse.cc \
- ./webrtc_dsp/common_audio/resampler/push_sinc_resampler.cc \
- ./webrtc_dsp/common_audio/resampler/resampler.cc \
- ./webrtc_dsp/common_audio/resampler/sinc_resampler_sse.cc \
- ./webrtc_dsp/common_audio/resampler/push_resampler.cc \
- ./webrtc_dsp/common_audio/resampler/sinc_resampler.cc \
- ./webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.cc \
- ./webrtc_dsp/common_audio/wav_file.cc \
- ./webrtc_dsp/common_audio/third_party/fft4g/fft4g.c \
- ./webrtc_dsp/common_audio/audio_converter.cc \
- ./webrtc_dsp/common_audio/real_fourier.cc \
- ./webrtc_dsp/common_audio/sparse_fir_filter.cc \
- ./webrtc_dsp/common_audio/smoothing_filter.cc \
- ./webrtc_dsp/common_audio/fir_filter_c.cc \
- ./webrtc_dsp/common_audio/ring_buffer.c \
- ./webrtc_dsp/common_audio/signal_processing/complex_fft.c \
- ./webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.c \
- ./webrtc_dsp/common_audio/signal_processing/splitting_filter1.c \
- ./webrtc_dsp/common_audio/signal_processing/levinson_durbin.c \
- ./webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.cc \
- ./webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.c \
- ./webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.c \
- ./webrtc_dsp/common_audio/signal_processing/energy.c \
- ./webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c \
- ./webrtc_dsp/common_audio/signal_processing/downsample_fast.c \
- ./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.c \
- ./webrtc_dsp/common_audio/signal_processing/spl_init.c \
- ./webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.c \
- ./webrtc_dsp/common_audio/signal_processing/cross_correlation.c \
- ./webrtc_dsp/common_audio/signal_processing/division_operations.c \
- ./webrtc_dsp/common_audio/signal_processing/auto_correlation.c \
- ./webrtc_dsp/common_audio/signal_processing/get_scaling_square.c \
- ./webrtc_dsp/common_audio/signal_processing/resample.c \
- ./webrtc_dsp/common_audio/signal_processing/min_max_operations.c \
- ./webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.c \
- ./webrtc_dsp/common_audio/signal_processing/filter_ar.c \
- ./webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.c \
- ./webrtc_dsp/common_audio/signal_processing/resample_fractional.c \
- ./webrtc_dsp/common_audio/signal_processing/real_fft.c \
- ./webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.c \
- ./webrtc_dsp/common_audio/signal_processing/randomization_functions.c \
- ./webrtc_dsp/common_audio/signal_processing/copy_set_operations.c \
- ./webrtc_dsp/common_audio/signal_processing/resample_by_2.c \
- ./webrtc_dsp/common_audio/signal_processing/get_hanning_window.c \
- ./webrtc_dsp/common_audio/signal_processing/resample_48khz.c \
- ./webrtc_dsp/common_audio/signal_processing/spl_inl.c \
- ./webrtc_dsp/common_audio/signal_processing/spl_sqrt.c \
- ./webrtc_dsp/common_audio/vad/vad_sp.c \
- ./webrtc_dsp/common_audio/vad/vad.cc \
- ./webrtc_dsp/common_audio/vad/webrtc_vad.c \
- ./webrtc_dsp/common_audio/vad/vad_filterbank.c \
- ./webrtc_dsp/common_audio/vad/vad_core.c \
- ./webrtc_dsp/common_audio/vad/vad_gmm.c \
- webrtc_dsp/rtc_base/logging_mac.mm \
- webrtc_dsp/rtc_base/logging_mac.h \
- webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.cc \
- webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.cc \
- audio/AudioIOCallback.cpp \
- webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.S \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.S \
- webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.c \
- webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.c \
- webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.c \
- webrtc_dsp/modules/audio_processing/aec/aec_core_neon.cc \
- webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.cc \
- webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.c \
- webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.cc \
- webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.c \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c \
- webrtc_dsp/system_wrappers/include/field_trial.h \
- webrtc_dsp/system_wrappers/include/cpu_features_wrapper.h \
- webrtc_dsp/system_wrappers/include/asm_defines.h \
- webrtc_dsp/system_wrappers/include/metrics.h \
- webrtc_dsp/system_wrappers/include/compile_assert_c.h \
- webrtc_dsp/typedefs.h \
- webrtc_dsp/absl/strings/internal/memutil.h \
- webrtc_dsp/absl/strings/ascii.h \
- webrtc_dsp/absl/strings/string_view.h \
- webrtc_dsp/absl/types/optional.h \
- webrtc_dsp/absl/types/bad_optional_access.h \
- webrtc_dsp/absl/memory/memory.h \
- webrtc_dsp/absl/meta/type_traits.h \
- webrtc_dsp/absl/algorithm/algorithm.h \
- webrtc_dsp/absl/container/inlined_vector.h \
- webrtc_dsp/absl/base/policy_checks.h \
- webrtc_dsp/absl/base/port.h webrtc_dsp/absl/base/config.h \
- webrtc_dsp/absl/base/internal/invoke.h \
- webrtc_dsp/absl/base/internal/inline_variable.h \
- webrtc_dsp/absl/base/internal/atomic_hook.h \
- webrtc_dsp/absl/base/internal/identity.h \
- webrtc_dsp/absl/base/internal/raw_logging.h \
- webrtc_dsp/absl/base/internal/throw_delegate.h \
- webrtc_dsp/absl/base/attributes.h \
- webrtc_dsp/absl/base/macros.h \
- webrtc_dsp/absl/base/optimization.h \
- webrtc_dsp/absl/base/log_severity.h \
- webrtc_dsp/absl/utility/utility.h \
- webrtc_dsp/rtc_base/string_to_number.h \
- webrtc_dsp/rtc_base/constructormagic.h \
- webrtc_dsp/rtc_base/strings/string_builder.h \
- webrtc_dsp/rtc_base/event_tracer.h \
- webrtc_dsp/rtc_base/stringencode.h \
- webrtc_dsp/rtc_base/memory/aligned_malloc.h \
- webrtc_dsp/rtc_base/event.h \
- webrtc_dsp/rtc_base/ignore_wundef.h \
- webrtc_dsp/rtc_base/stringutils.h \
- webrtc_dsp/rtc_base/arraysize.h \
- webrtc_dsp/rtc_base/swap_queue.h \
- webrtc_dsp/rtc_base/trace_event.h webrtc_dsp/rtc_base/checks.h \
- webrtc_dsp/rtc_base/deprecation.h \
- webrtc_dsp/rtc_base/sanitizer.h \
- webrtc_dsp/rtc_base/scoped_ref_ptr.h \
- webrtc_dsp/rtc_base/logging.h webrtc_dsp/rtc_base/timeutils.h \
- webrtc_dsp/rtc_base/atomicops.h \
- webrtc_dsp/rtc_base/numerics/safe_minmax.h \
- webrtc_dsp/rtc_base/numerics/safe_conversions.h \
- webrtc_dsp/rtc_base/numerics/safe_conversions_impl.h \
- webrtc_dsp/rtc_base/numerics/safe_compare.h \
- webrtc_dsp/rtc_base/system/unused.h \
- webrtc_dsp/rtc_base/system/inline.h \
- webrtc_dsp/rtc_base/system/ignore_warnings.h \
- webrtc_dsp/rtc_base/system/asm_defines.h \
- webrtc_dsp/rtc_base/system/rtc_export.h \
- webrtc_dsp/rtc_base/system/arch.h \
- webrtc_dsp/rtc_base/platform_thread.h \
- webrtc_dsp/rtc_base/platform_thread_types.h \
- webrtc_dsp/rtc_base/protobuf_utils.h \
- webrtc_dsp/rtc_base/thread_annotations.h \
- webrtc_dsp/rtc_base/gtest_prod_util.h \
- webrtc_dsp/rtc_base/function_view.h \
- webrtc_dsp/rtc_base/criticalsection.h \
- webrtc_dsp/rtc_base/refcount.h \
- webrtc_dsp/rtc_base/thread_checker_impl.h \
- webrtc_dsp/rtc_base/compile_assert_c.h \
- webrtc_dsp/rtc_base/type_traits.h \
- webrtc_dsp/rtc_base/platform_file.h \
- webrtc_dsp/rtc_base/refcounter.h \
- webrtc_dsp/rtc_base/thread_checker.h \
- webrtc_dsp/rtc_base/race_checker.h \
- webrtc_dsp/rtc_base/refcountedobject.h \
- webrtc_dsp/third_party/rnnoise/src/rnn_activations.h \
- webrtc_dsp/third_party/rnnoise/src/kiss_fft.h \
- webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.h \
- webrtc_dsp/api/audio/echo_canceller3_config.h \
- webrtc_dsp/api/audio/echo_control.h \
- webrtc_dsp/api/audio/audio_frame.h \
- webrtc_dsp/api/audio/echo_canceller3_factory.h \
- webrtc_dsp/api/array_view.h \
- webrtc_dsp/modules/third_party/fft/fft.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/bandwidth_info.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/include/isac.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/settings.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_float_type.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/codec.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/structs.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.h \
- webrtc_dsp/modules/audio_processing/echo_detector/moving_max.h \
- webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.h \
- webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.h \
- webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.h \
- webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.h \
- webrtc_dsp/modules/audio_processing/rms_level.h \
- webrtc_dsp/modules/audio_processing/ns/ns_core.h \
- webrtc_dsp/modules/audio_processing/ns/defines.h \
- webrtc_dsp/modules/audio_processing/ns/noise_suppression.h \
- webrtc_dsp/modules/audio_processing/ns/nsx_core.h \
- webrtc_dsp/modules/audio_processing/ns/windows_private.h \
- webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.h \
- webrtc_dsp/modules/audio_processing/ns/nsx_defines.h \
- webrtc_dsp/modules/audio_processing/residual_echo_detector.h \
- webrtc_dsp/modules/audio_processing/audio_processing_impl.h \
- webrtc_dsp/modules/audio_processing/render_queue_item_verifier.h \
- webrtc_dsp/modules/audio_processing/include/audio_generator.h \
- webrtc_dsp/modules/audio_processing/include/config.h \
- webrtc_dsp/modules/audio_processing/include/audio_frame_view.h \
- webrtc_dsp/modules/audio_processing/include/mock_audio_processing.h \
- webrtc_dsp/modules/audio_processing/include/gain_control.h \
- webrtc_dsp/modules/audio_processing/include/audio_generator_factory.h \
- webrtc_dsp/modules/audio_processing/include/aec_dump.h \
- webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.h \
- webrtc_dsp/modules/audio_processing/include/audio_processing.h \
- webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.h \
- webrtc_dsp/modules/audio_processing/agc2/biquad_filter.h \
- webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.h \
- webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.h \
- webrtc_dsp/modules/audio_processing/agc2/signal_classifier.h \
- webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/sequence_buffer.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/test_utils.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_info.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/ring_buffer.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/symmetric_matrix_buffer.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/common.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.h \
- webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.h \
- webrtc_dsp/modules/audio_processing/agc2/down_sampler.h \
- webrtc_dsp/modules/audio_processing/agc2/saturation_protector.h \
- webrtc_dsp/modules/audio_processing/agc2/agc2_common.h \
- webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.h \
- webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.h \
- webrtc_dsp/modules/audio_processing/agc2/vad_with_level.h \
- webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.h \
- webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.h \
- webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.h \
- webrtc_dsp/modules/audio_processing/agc2/gain_applier.h \
- webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.h \
- webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.h \
- webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.h \
- webrtc_dsp/modules/audio_processing/agc2/limiter.h \
- webrtc_dsp/modules/audio_processing/transient/transient_detector.h \
- webrtc_dsp/modules/audio_processing/transient/transient_suppressor.h \
- webrtc_dsp/modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h \
- webrtc_dsp/modules/audio_processing/transient/common.h \
- webrtc_dsp/modules/audio_processing/transient/wpd_node.h \
- webrtc_dsp/modules/audio_processing/transient/moving_moments.h \
- webrtc_dsp/modules/audio_processing/transient/wpd_tree.h \
- webrtc_dsp/modules/audio_processing/transient/dyadic_decimator.h \
- webrtc_dsp/modules/audio_processing/noise_suppression_impl.h \
- webrtc_dsp/modules/audio_processing/aec/aec_resampler.h \
- webrtc_dsp/modules/audio_processing/aec/echo_cancellation.h \
- webrtc_dsp/modules/audio_processing/aec/aec_core.h \
- webrtc_dsp/modules/audio_processing/aec/aec_core_optimized_methods.h \
- webrtc_dsp/modules/audio_processing/aec/aec_common.h \
- webrtc_dsp/modules/audio_processing/voice_detection_impl.h \
- webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.h \
- webrtc_dsp/modules/audio_processing/agc/legacy/gain_control.h \
- webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.h \
- webrtc_dsp/modules/audio_processing/agc/mock_agc.h \
- webrtc_dsp/modules/audio_processing/agc/loudness_histogram.h \
- webrtc_dsp/modules/audio_processing/agc/gain_map_internal.h \
- webrtc_dsp/modules/audio_processing/agc/utility.h \
- webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.h \
- webrtc_dsp/modules/audio_processing/agc/agc.h \
- webrtc_dsp/modules/audio_processing/common.h \
- webrtc_dsp/modules/audio_processing/audio_buffer.h \
- webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.h \
- webrtc_dsp/modules/audio_processing/splitting_filter.h \
- webrtc_dsp/modules/audio_processing/low_cut_filter.h \
- webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.h \
- webrtc_dsp/modules/audio_processing/three_band_filter_bank.h \
- webrtc_dsp/modules/audio_processing/echo_cancellation_impl.h \
- webrtc_dsp/modules/audio_processing/level_estimator_impl.h \
- webrtc_dsp/modules/audio_processing/gain_controller2.h \
- webrtc_dsp/modules/audio_processing/aecm/aecm_core.h \
- webrtc_dsp/modules/audio_processing/aecm/aecm_defines.h \
- webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.h \
- webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.h \
- webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.h \
- webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.h \
- webrtc_dsp/modules/audio_processing/aec3/aec_state.h \
- webrtc_dsp/modules/audio_processing/aec3/suppression_filter.h \
- webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.h \
- webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.h \
- webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.h \
- webrtc_dsp/modules/audio_processing/aec3/matched_filter.h \
- webrtc_dsp/modules/audio_processing/aec3/subtractor_output.h \
- webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.h \
- webrtc_dsp/modules/audio_processing/aec3/aec3_fft.h \
- webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.h \
- webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.h \
- webrtc_dsp/modules/audio_processing/aec3/subtractor.h \
- webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.h \
- webrtc_dsp/modules/audio_processing/aec3/fft_data.h \
- webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.h \
- webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.h \
- webrtc_dsp/modules/audio_processing/aec3/erl_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/echo_remover.h \
- webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.h \
- webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.h \
- webrtc_dsp/modules/audio_processing/aec3/moving_average.h \
- webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.h \
- webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.h \
- webrtc_dsp/modules/audio_processing/aec3/suppression_gain.h \
- webrtc_dsp/modules/audio_processing/aec3/erle_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/block_processor.h \
- webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.h \
- webrtc_dsp/modules/audio_processing/aec3/skew_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/render_buffer.h \
- webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.h \
- webrtc_dsp/modules/audio_processing/aec3/vector_buffer.h \
- webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.h \
- webrtc_dsp/modules/audio_processing/aec3/echo_audibility.h \
- webrtc_dsp/modules/audio_processing/aec3/fft_buffer.h \
- webrtc_dsp/modules/audio_processing/aec3/aec3_common.h \
- webrtc_dsp/modules/audio_processing/aec3/vector_math.h \
- webrtc_dsp/modules/audio_processing/aec3/decimator.h \
- webrtc_dsp/modules/audio_processing/aec3/frame_blocker.h \
- webrtc_dsp/modules/audio_processing/aec3/block_framer.h \
- webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.h \
- webrtc_dsp/modules/audio_processing/aec3/delay_estimate.h \
- webrtc_dsp/modules/audio_processing/aec3/reverb_model.h \
- webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.h \
- webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.h \
- webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.h \
- webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.h \
- webrtc_dsp/modules/audio_processing/gain_control_impl.h \
- webrtc_dsp/modules/audio_processing/typing_detection.h \
- webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.h \
- webrtc_dsp/modules/audio_processing/vad/vad_audio_proc_internal.h \
- webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.h \
- webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.h \
- webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.h \
- webrtc_dsp/modules/audio_processing/vad/gmm.h \
- webrtc_dsp/modules/audio_processing/vad/common.h \
- webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.h \
- webrtc_dsp/modules/audio_processing/vad/voice_gmm_tables.h \
- webrtc_dsp/modules/audio_processing/vad/noise_gmm_tables.h \
- webrtc_dsp/modules/audio_processing/vad/pitch_internal.h \
- webrtc_dsp/modules/audio_processing/vad/standalone_vad.h \
- webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.h \
- webrtc_dsp/modules/audio_processing/utility/ooura_fft_tables_neon_sse2.h \
- webrtc_dsp/modules/audio_processing/utility/delay_estimator_internal.h \
- webrtc_dsp/modules/audio_processing/utility/ooura_fft.h \
- webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.h \
- webrtc_dsp/modules/audio_processing/utility/delay_estimator.h \
- webrtc_dsp/modules/audio_processing/utility/ooura_fft_tables_common.h \
- webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.h \
- webrtc_dsp/common_audio/mocks/mock_smoothing_filter.h \
- webrtc_dsp/common_audio/wav_file.h \
- webrtc_dsp/common_audio/sparse_fir_filter.h \
- webrtc_dsp/common_audio/fir_filter_sse.h \
- webrtc_dsp/common_audio/window_generator.h \
- webrtc_dsp/common_audio/ring_buffer.h \
- webrtc_dsp/common_audio/fir_filter.h \
- webrtc_dsp/common_audio/include/audio_util.h \
- webrtc_dsp/common_audio/real_fourier_ooura.h \
- webrtc_dsp/common_audio/smoothing_filter.h \
- webrtc_dsp/common_audio/resampler/sinc_resampler.h \
- webrtc_dsp/common_audio/resampler/include/push_resampler.h \
- webrtc_dsp/common_audio/resampler/include/resampler.h \
- webrtc_dsp/common_audio/resampler/push_sinc_resampler.h \
- webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.h \
- webrtc_dsp/common_audio/fir_filter_factory.h \
- webrtc_dsp/common_audio/audio_converter.h \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h \
- webrtc_dsp/common_audio/third_party/fft4g/fft4g.h \
- webrtc_dsp/common_audio/channel_buffer.h \
- webrtc_dsp/common_audio/real_fourier.h \
- webrtc_dsp/common_audio/fir_filter_neon.h \
- webrtc_dsp/common_audio/fir_filter_c.h \
- webrtc_dsp/common_audio/signal_processing/complex_fft_tables.h \
- webrtc_dsp/common_audio/signal_processing/include/signal_processing_library.h \
- webrtc_dsp/common_audio/signal_processing/include/real_fft.h \
- webrtc_dsp/common_audio/signal_processing/include/spl_inl.h \
- webrtc_dsp/common_audio/signal_processing/include/spl_inl_armv7.h \
- webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.h \
- webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.h \
- webrtc_dsp/common_audio/wav_header.h \
- webrtc_dsp/common_audio/vad/vad_core.h \
- webrtc_dsp/common_audio/vad/include/vad.h \
- webrtc_dsp/common_audio/vad/include/webrtc_vad.h \
- webrtc_dsp/common_audio/vad/vad_gmm.h \
- webrtc_dsp/common_audio/vad/vad_sp.h \
- webrtc_dsp/common_audio/vad/vad_filterbank.h VoIPController.h \
- Buffers.h BlockingQueue.h PrivateDefines.h CongestionControl.h \
- EchoCanceller.h JitterBuffer.h logging.h threading.h \
- MediaStreamItf.h MessageThread.h NetworkSocket.h OpusDecoder.h \
- OpusEncoder.h PacketReassembler.h VoIPServerConfig.h \
- audio/AudioIO.h audio/AudioInput.h audio/AudioOutput.h \
- audio/Resampler.h os/posix/NetworkSocketPosix.h \
- video/VideoSource.h video/VideoRenderer.h \
- video/ScreamCongestionController.h json11.hpp utils.h \
- os/darwin/AudioInputAudioUnit.h \
- os/darwin/AudioOutputAudioUnit.h os/darwin/AudioUnitIO.h \
- os/darwin/AudioInputAudioUnitOSX.h \
- os/darwin/AudioOutputAudioUnitOSX.h os/darwin/DarwinSpecific.h \
- os/darwin/SampleBufferDisplayLayerRenderer.h \
- os/darwin/TGVVideoRenderer.h os/darwin/TGVVideoSource.h \
- os/darwin/VideoToolboxEncoderSource.h \
- os/linux/AudioInputALSA.h os/linux/AudioOutputALSA.h \
- os/linux/AudioOutputPulse.h os/linux/AudioInputPulse.h \
- os/linux/AudioPulse.h os/linux/PulseFunctions.h \
- audio/AudioIOCallback.h
-am__dirstamp = $(am__leading_dot)dirstamp
-@TARGET_OS_OSX_TRUE@am__objects_1 = os/darwin/AudioInputAudioUnit.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/AudioOutputAudioUnit.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/AudioUnitIO.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/AudioInputAudioUnitOSX.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/AudioOutputAudioUnitOSX.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/DarwinSpecific.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/SampleBufferDisplayLayerRenderer.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/TGVVideoRenderer.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/TGVVideoSource.lo \
-@TARGET_OS_OSX_TRUE@ os/darwin/VideoToolboxEncoderSource.lo
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@am__objects_2 = os/linux/AudioInputALSA.lo \
-@TARGET_OS_OSX_FALSE@@WITH_ALSA_TRUE@ os/linux/AudioOutputALSA.lo
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@am__objects_3 = os/linux/AudioOutputPulse.lo \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@ os/linux/AudioInputPulse.lo \
-@TARGET_OS_OSX_FALSE@@WITH_PULSE_TRUE@ os/linux/AudioPulse.lo
-@ENABLE_DSP_TRUE@am__objects_4 = ./webrtc_dsp/system_wrappers/source/field_trial.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/system_wrappers/source/metrics.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/system_wrappers/source/cpu_features.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/strings/internal/memutil.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/strings/string_view.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/strings/ascii.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/types/bad_optional_access.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/types/optional.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/base/internal/raw_logging.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/absl/base/internal/throw_delegate.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/race_checker.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/strings/string_builder.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/memory/aligned_malloc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/timeutils.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/platform_file.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/string_to_number.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/thread_checker_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/stringencode.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/stringutils.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/checks.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/platform_thread.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/logging_webrtc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/criticalsection.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/platform_thread_types.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/event.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/rtc_base/event_tracer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/third_party/rnnoise/src/kiss_fft.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/api/audio/audio_frame.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/api/audio/echo_canceller3_config.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/api/audio/echo_canceller3_factory.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/third_party/fft/fft.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/rms_level.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/echo_detector/moving_max.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/splitting_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/gain_control_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/ns/nsx_core.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/ns/nsx_core_c.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/ns/ns_core.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/ns/noise_suppression.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/audio_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/typing_detection.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/include/audio_generator_factory.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/include/aec_dump.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/include/audio_processing.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/include/config.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/agc2_common.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/gain_applier.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/limiter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/saturation_protector.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/vad_with_level.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/down_sampler.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/signal_classifier.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/biquad_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/transient/moving_moments.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/transient/wpd_tree.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/transient/wpd_node.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/transient/transient_suppressor.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/transient/transient_detector.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/low_cut_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/level_estimator_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/three_band_filter_bank.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec/echo_cancellation.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec/aec_resampler.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec/aec_core.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/voice_detection_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/echo_cancellation_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc/agc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc/loudness_histogram.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/agc/utility.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/audio_processing_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/gain_controller2.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/residual_echo_detector.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/noise_suppression_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aecm/aecm_core.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/frame_blocker.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/subtractor.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/aec3_fft.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/suppression_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/block_processor.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/vector_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/erl_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/aec_state.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/skew_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/block_framer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/erle_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/reverb_model.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/subtractor_output.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/suppression_gain.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/echo_audibility.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/moving_average.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/aec3_common.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/matched_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/echo_remover.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/block_processor2.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/fft_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/aec3/decimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/standalone_vad.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/pitch_internal.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/vad/gmm.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/utility/ooura_fft.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/utility/delay_estimator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/window_generator.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/channel_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/fir_filter_factory.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/wav_header.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/real_fourier_ooura.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/audio_util.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/fir_filter_sse.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/resampler/push_sinc_resampler.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/resampler/resampler.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/resampler/sinc_resampler_sse.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/resampler/push_resampler.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/resampler/sinc_resampler.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/wav_file.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/third_party/fft4g/fft4g.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/audio_converter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/real_fourier.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/sparse_fir_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/smoothing_filter.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/fir_filter_c.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/ring_buffer.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/complex_fft.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/splitting_filter1.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/levinson_durbin.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/energy.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/downsample_fast.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/spl_init.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/cross_correlation.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/division_operations.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/auto_correlation.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/get_scaling_square.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/resample.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/min_max_operations.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/filter_ar.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/resample_fractional.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/real_fft.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/randomization_functions.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/copy_set_operations.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/resample_by_2.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/get_hanning_window.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/resample_48khz.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/spl_inl.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/signal_processing/spl_sqrt.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/vad/vad_sp.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/vad/vad.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/vad/webrtc_vad.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/vad/vad_filterbank.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/vad/vad_core.lo \
-@ENABLE_DSP_TRUE@ ./webrtc_dsp/common_audio/vad/vad_gmm.lo
-@ENABLE_DSP_TRUE@@TARGET_OS_OSX_TRUE@am__objects_5 = webrtc_dsp/rtc_base/logging_mac.lo
-@ENABLE_DSP_TRUE@@TARGET_CPU_X86_TRUE@am__objects_6 = webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_X86_TRUE@ webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.lo
-@ENABLE_AUDIO_CALLBACK_TRUE@@ENABLE_DSP_TRUE@am__objects_7 = audio/AudioIOCallback.lo
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_TRUE@am__objects_8 = webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.lo
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@am__objects_9 = webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/modules/audio_processing/aec/aec_core_neon.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARMV7_TRUE@@TARGET_CPU_ARM_TRUE@ webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.lo
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_FALSE@am__objects_10 = webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.lo \
-@ENABLE_DSP_TRUE@@TARGET_CPU_ARM_FALSE@ webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.lo
-am__objects_11 =
-am__objects_12 = VoIPController.lo Buffers.lo CongestionControl.lo \
- EchoCanceller.lo JitterBuffer.lo logging.lo MediaStreamItf.lo \
- MessageThread.lo NetworkSocket.lo OpusDecoder.lo \
- OpusEncoder.lo PacketReassembler.lo VoIPGroupController.lo \
- VoIPServerConfig.lo audio/AudioIO.lo audio/AudioInput.lo \
- audio/AudioOutput.lo audio/Resampler.lo \
- os/posix/NetworkSocketPosix.lo video/VideoSource.lo \
- video/VideoRenderer.lo video/ScreamCongestionController.lo \
- json11.lo $(am__objects_1) $(am__objects_2) $(am__objects_3) \
- $(am__objects_4) $(am__objects_5) $(am__objects_6) \
- $(am__objects_7) $(am__objects_8) $(am__objects_9) \
- $(am__objects_10) $(am__objects_11)
-am__objects_13 = $(am__objects_11) $(am__objects_11) $(am__objects_11) \
- $(am__objects_11)
-am_libtgvoip_la_OBJECTS = $(am__objects_12) $(am__objects_13)
-libtgvoip_la_OBJECTS = $(am_libtgvoip_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/Buffers.Plo \
- ./$(DEPDIR)/CongestionControl.Plo \
- ./$(DEPDIR)/EchoCanceller.Plo ./$(DEPDIR)/JitterBuffer.Plo \
- ./$(DEPDIR)/MediaStreamItf.Plo ./$(DEPDIR)/MessageThread.Plo \
- ./$(DEPDIR)/NetworkSocket.Plo ./$(DEPDIR)/OpusDecoder.Plo \
- ./$(DEPDIR)/OpusEncoder.Plo ./$(DEPDIR)/PacketReassembler.Plo \
- ./$(DEPDIR)/VoIPController.Plo \
- ./$(DEPDIR)/VoIPGroupController.Plo \
- ./$(DEPDIR)/VoIPServerConfig.Plo ./$(DEPDIR)/json11.Plo \
- ./$(DEPDIR)/logging.Plo \
- ./webrtc_dsp/absl/base/internal/$(DEPDIR)/raw_logging.Plo \
- ./webrtc_dsp/absl/base/internal/$(DEPDIR)/throw_delegate.Plo \
- ./webrtc_dsp/absl/strings/$(DEPDIR)/ascii.Plo \
- ./webrtc_dsp/absl/strings/$(DEPDIR)/string_view.Plo \
- ./webrtc_dsp/absl/strings/internal/$(DEPDIR)/memutil.Plo \
- ./webrtc_dsp/absl/types/$(DEPDIR)/bad_optional_access.Plo \
- ./webrtc_dsp/absl/types/$(DEPDIR)/optional.Plo \
- ./webrtc_dsp/api/audio/$(DEPDIR)/audio_frame.Plo \
- ./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_config.Plo \
- ./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_factory.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/audio_converter.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/audio_util.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/channel_buffer.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_c.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_factory.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_sse.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier_ooura.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/ring_buffer.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/smoothing_filter.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/sparse_fir_filter.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/wav_file.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/wav_header.Plo \
- ./webrtc_dsp/common_audio/$(DEPDIR)/window_generator.Plo \
- ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_resampler.Plo \
- ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_sinc_resampler.Plo \
- ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/resampler.Plo \
- ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler.Plo \
- ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler_sse.Plo \
- ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinusoidal_linear_chirp_source.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_corr_to_refl_coef.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_correlation.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_fft.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/copy_set_operations.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/division_operations.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/dot_product_with_scale.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/energy.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar_fast_q12.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ma_fast_q12.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_hanning_window.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_scaling_square.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/ilbc_specific_functions.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/levinson_durbin.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/lpc_to_refl_coef.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/randomization_functions.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/real_fft.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/refl_coef_to_lpc.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_48khz.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2_internal.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_fractional.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_init.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_inl.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_sqrt.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/splitting_filter1.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/sqrt_of_one_minus_x_squared.Plo \
- ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/vector_scaling_operations.Plo \
- ./webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/fft4g.Plo \
- ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad.Plo \
- ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_core.Plo \
- ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_filterbank.Plo \
- ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_gmm.Plo \
- ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_sp.Plo \
- ./webrtc_dsp/common_audio/vad/$(DEPDIR)/webrtc_vad.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_hist.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_logist.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/bandwidth_estimator.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/crc.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode_bwe.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode_lpc_swb.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/entropy_coding.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filter_functions.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filterbanks.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/intialize.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac_vad.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lattice.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_analysis.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_gain_swb_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb12_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb16_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_estimator.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_filter.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_gain_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_lag_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/spectrum_ar_model_tables.Plo \
- ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/transform.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_processing_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_cancellation_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_control_mobile_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_for_experimental_agc.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_controller2.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/level_estimator_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/low_cut_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/noise_suppression_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/residual_echo_detector.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/rms_level.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/splitting_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/three_band_filter_bank.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/typing_detection.Plo \
- ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/voice_detection_impl.Plo \
- ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core.Plo \
- ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_resampler.Plo \
- ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/echo_cancellation.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/adaptive_fir_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_common.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_fft.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec_state.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_delay_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_framer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor2.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor_metrics.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/cascaded_biquad_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/comfort_noise_generator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/decimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/downsampled_render_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_audibility.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_canceller3.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_delay_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_variability.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover_metrics.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erl_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erle_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fft_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/filter_analyzer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/frame_blocker.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fullband_erle_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/main_filter_update_gain.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter_lag_aggregator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matrix_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/moving_average.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer2.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller2.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller_metrics.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_reverb_model.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_signal_analyzer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/residual_echo_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_decay_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_frequency_response.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_fallback.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/shadow_filter_update_gain.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/skew_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/stationarity_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subband_erle_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output_analyzer.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain_limiter.Plo \
- ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/vector_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core.Plo \
- ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_c.Plo \
- ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/echo_control_mobile.Plo \
- ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc.Plo \
- ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc_manager_direct.Plo \
- ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/loudness_histogram.Plo \
- ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/utility.Plo \
- ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/analog_agc.Plo \
- ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/digital_agc.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_agc.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_digital_gain_applier.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator_agc.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_common.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_testing_common.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/biquad_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/compute_interpolated_gain_curve.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/down_sampler.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_digital_level_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_gain_controller.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/gain_applier.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/interpolated_gain_curve.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter_db_gain_curve.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_level_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_spectrum_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/saturation_protector.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/signal_classifier.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vad_with_level.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vector_float_frame.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/features_extraction.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/fft_util.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/lp_residual.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search_internal.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/rnn.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features.Plo \
- ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features_internal.Plo \
- ./webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/file_audio_generator.Plo \
- ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/circular_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/mean_variance_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/moving_max.Plo \
- ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/normalized_covariance_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/aec_dump.Plo \
- ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_generator_factory.Plo \
- ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing.Plo \
- ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing_statistics.Plo \
- ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/config.Plo \
- ./webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/apm_data_dumper.Plo \
- ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression.Plo \
- ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression_x.Plo \
- ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/ns_core.Plo \
- ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core.Plo \
- ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_c.Plo \
- ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/moving_moments.Plo \
- ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_detector.Plo \
- ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_suppressor.Plo \
- ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_node.Plo \
- ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_tree.Plo \
- ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/block_mean_calculator.Plo \
- ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator.Plo \
- ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator_wrapper.Plo \
- ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/gmm.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_based_vad.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_internal.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pole_zero_filter.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/standalone_vad.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_audio_proc.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_circular_buffer.Plo \
- ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/voice_activity_detector.Plo \
- ./webrtc_dsp/modules/third_party/fft/$(DEPDIR)/fft.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/checks.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/criticalsection.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/event.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/event_tracer.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/logging_webrtc.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_file.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread_types.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/race_checker.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/string_to_number.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/stringencode.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/stringutils.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/thread_checker_impl.Plo \
- ./webrtc_dsp/rtc_base/$(DEPDIR)/timeutils.Plo \
- ./webrtc_dsp/rtc_base/memory/$(DEPDIR)/aligned_malloc.Plo \
- ./webrtc_dsp/rtc_base/strings/$(DEPDIR)/string_builder.Plo \
- ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/cpu_features.Plo \
- ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/field_trial.Plo \
- ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/metrics.Plo \
- ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/kiss_fft.Plo \
- ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/rnn_vad_weights.Plo \
- audio/$(DEPDIR)/AudioIO.Plo \
- audio/$(DEPDIR)/AudioIOCallback.Plo \
- audio/$(DEPDIR)/AudioInput.Plo audio/$(DEPDIR)/AudioOutput.Plo \
- audio/$(DEPDIR)/Resampler.Plo \
- os/darwin/$(DEPDIR)/AudioInputAudioUnit.Plo \
- os/darwin/$(DEPDIR)/AudioInputAudioUnitOSX.Plo \
- os/darwin/$(DEPDIR)/AudioOutputAudioUnit.Plo \
- os/darwin/$(DEPDIR)/AudioOutputAudioUnitOSX.Plo \
- os/darwin/$(DEPDIR)/AudioUnitIO.Plo \
- os/darwin/$(DEPDIR)/DarwinSpecific.Plo \
- os/darwin/$(DEPDIR)/SampleBufferDisplayLayerRenderer.Plo \
- os/darwin/$(DEPDIR)/TGVVideoRenderer.Plo \
- os/darwin/$(DEPDIR)/TGVVideoSource.Plo \
- os/darwin/$(DEPDIR)/VideoToolboxEncoderSource.Plo \
- os/linux/$(DEPDIR)/AudioInputALSA.Plo \
- os/linux/$(DEPDIR)/AudioInputPulse.Plo \
- os/linux/$(DEPDIR)/AudioOutputALSA.Plo \
- os/linux/$(DEPDIR)/AudioOutputPulse.Plo \
- os/linux/$(DEPDIR)/AudioPulse.Plo \
- os/posix/$(DEPDIR)/NetworkSocketPosix.Plo \
- video/$(DEPDIR)/ScreamCongestionController.Plo \
- video/$(DEPDIR)/VideoRenderer.Plo \
- video/$(DEPDIR)/VideoSource.Plo \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse.Plo \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse_arm.Plo \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation_neon.Plo \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast_neon.Plo \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations_neon.Plo \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor.Plo \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor_arm.Plo \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_neon.Plo \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_sse2.Plo \
- webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_neon.Plo \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_neon.Plo \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_neon.Plo \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_sse2.Plo \
- webrtc_dsp/rtc_base/$(DEPDIR)/logging_mac.Plo
-am__mv = mv -f
-CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
-LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CCASFLAGS) $(CCASFLAGS)
-AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
-am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
-am__v_CPPAS_0 = @echo " CPPAS " $@;
-am__v_CPPAS_1 =
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo " CXX " $@;
-am__v_CXX_1 =
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo " CXXLD " $@;
-am__v_CXXLD_1 =
-OBJCXXCOMPILE = $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS)
-LTOBJCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(OBJCXX) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS)
-AM_V_OBJCXX = $(am__v_OBJCXX_@AM_V@)
-am__v_OBJCXX_ = $(am__v_OBJCXX_@AM_DEFAULT_V@)
-am__v_OBJCXX_0 = @echo " OBJCXX " $@;
-am__v_OBJCXX_1 =
-OBJCXXLD = $(OBJCXX)
-OBJCXXLINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(OBJCXXLD) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_OBJCXXLD = $(am__v_OBJCXXLD_@AM_V@)
-am__v_OBJCXXLD_ = $(am__v_OBJCXXLD_@AM_DEFAULT_V@)
-am__v_OBJCXXLD_0 = @echo " OBJCXXLD" $@;
-am__v_OBJCXXLD_1 =
-SOURCES = $(libtgvoip_la_SOURCES)
-DIST_SOURCES = $(am__libtgvoip_la_SOURCES_DIST)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__nobase_tgvoipinclude_HEADERS_DIST = VoIPController.h Buffers.h \
- BlockingQueue.h PrivateDefines.h CongestionControl.h \
- EchoCanceller.h JitterBuffer.h logging.h threading.h \
- MediaStreamItf.h MessageThread.h NetworkSocket.h OpusDecoder.h \
- OpusEncoder.h PacketReassembler.h VoIPServerConfig.h \
- audio/AudioIO.h audio/AudioInput.h audio/AudioOutput.h \
- audio/Resampler.h os/posix/NetworkSocketPosix.h \
- video/VideoSource.h video/VideoRenderer.h \
- video/ScreamCongestionController.h json11.hpp utils.h \
- os/darwin/AudioInputAudioUnit.h \
- os/darwin/AudioOutputAudioUnit.h os/darwin/AudioUnitIO.h \
- os/darwin/AudioInputAudioUnitOSX.h \
- os/darwin/AudioOutputAudioUnitOSX.h os/darwin/DarwinSpecific.h \
- os/darwin/SampleBufferDisplayLayerRenderer.h \
- os/darwin/TGVVideoRenderer.h os/darwin/TGVVideoSource.h \
- os/darwin/VideoToolboxEncoderSource.h \
- os/linux/AudioInputALSA.h os/linux/AudioOutputALSA.h \
- os/linux/AudioOutputPulse.h os/linux/AudioInputPulse.h \
- os/linux/AudioPulse.h os/linux/PulseFunctions.h \
- audio/AudioIOCallback.h
-HEADERS = $(nobase_tgvoipinclude_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
- $(LISP)config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-AM_RECURSIVE_TARGETS = cscope
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in compile \
- config.guess config.sub depcomp install-sh ltmain.sh missing
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- if test -d "$(distdir)"; then \
- find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -rf "$(distdir)" \
- || { sleep 5 && rm -rf "$(distdir)"; }; \
- else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
- | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@ $(am__append_9) $(am__append_20)
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = -Wall -DHAVE_CONFIG_H -Wno-unknown-pragmas $(am__append_8) \
- $(am__append_11) $(am__append_13) $(am__append_15) \
- $(am__append_19) $(am__append_24)
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@ -std=gnu++0x $(CFLAGS)
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@ $(am__append_3)
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJCXX = @OBJCXX@
-OBJCXXDEPMODE = @OBJCXXDEPMODE@
-OBJCXXFLAGS = @OBJCXXFLAGS@ $(am__append_25)
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJCXX = @ac_ct_OBJCXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-lib_LTLIBRARIES = libtgvoip.la
-SRC = VoIPController.cpp Buffers.cpp CongestionControl.cpp \
- EchoCanceller.cpp JitterBuffer.cpp logging.cpp \
- MediaStreamItf.cpp MessageThread.cpp NetworkSocket.cpp \
- OpusDecoder.cpp OpusEncoder.cpp PacketReassembler.cpp \
- VoIPGroupController.cpp VoIPServerConfig.cpp audio/AudioIO.cpp \
- audio/AudioInput.cpp audio/AudioOutput.cpp audio/Resampler.cpp \
- os/posix/NetworkSocketPosix.cpp video/VideoSource.cpp \
- video/VideoRenderer.cpp video/ScreamCongestionController.cpp \
- json11.cpp $(am__append_1) $(am__append_4) $(am__append_6) \
- $(am__append_10) $(am__append_12) $(am__append_14) \
- $(am__append_16) $(am__append_18) $(am__append_21) \
- $(am__append_22) $(am__append_23)
-TGVOIP_HDRS = VoIPController.h Buffers.h BlockingQueue.h \
- PrivateDefines.h CongestionControl.h EchoCanceller.h \
- JitterBuffer.h logging.h threading.h MediaStreamItf.h \
- MessageThread.h NetworkSocket.h OpusDecoder.h OpusEncoder.h \
- PacketReassembler.h VoIPServerConfig.h audio/AudioIO.h \
- audio/AudioInput.h audio/AudioOutput.h audio/Resampler.h \
- os/posix/NetworkSocketPosix.h video/VideoSource.h \
- video/VideoRenderer.h video/ScreamCongestionController.h \
- json11.hpp utils.h $(am__append_2) $(am__append_5) \
- $(am__append_7) $(am__append_17)
-libtgvoip_la_SOURCES = $(SRC) $(TGVOIP_HDRS)
-tgvoipincludedir = $(includedir)/tgvoip
-nobase_tgvoipinclude_HEADERS = $(TGVOIP_HDRS)
-@TARGET_OS_OSX_TRUE@OBJCFLAGS = $(CFLAGS)
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .S .c .cc .cpp .lo .mm .o .obj
-am--refresh: Makefile
- @:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
- @test -f $@ || rm -f stamp-h1
- @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: $(am__configure_deps)
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f config.h stamp-h1
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
- }
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-audio/$(am__dirstamp):
- @$(MKDIR_P) audio
- @: > audio/$(am__dirstamp)
-audio/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) audio/$(DEPDIR)
- @: > audio/$(DEPDIR)/$(am__dirstamp)
-audio/AudioIO.lo: audio/$(am__dirstamp) \
- audio/$(DEPDIR)/$(am__dirstamp)
-audio/AudioInput.lo: audio/$(am__dirstamp) \
- audio/$(DEPDIR)/$(am__dirstamp)
-audio/AudioOutput.lo: audio/$(am__dirstamp) \
- audio/$(DEPDIR)/$(am__dirstamp)
-audio/Resampler.lo: audio/$(am__dirstamp) \
- audio/$(DEPDIR)/$(am__dirstamp)
-os/posix/$(am__dirstamp):
- @$(MKDIR_P) os/posix
- @: > os/posix/$(am__dirstamp)
-os/posix/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) os/posix/$(DEPDIR)
- @: > os/posix/$(DEPDIR)/$(am__dirstamp)
-os/posix/NetworkSocketPosix.lo: os/posix/$(am__dirstamp) \
- os/posix/$(DEPDIR)/$(am__dirstamp)
-video/$(am__dirstamp):
- @$(MKDIR_P) video
- @: > video/$(am__dirstamp)
-video/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) video/$(DEPDIR)
- @: > video/$(DEPDIR)/$(am__dirstamp)
-video/VideoSource.lo: video/$(am__dirstamp) \
- video/$(DEPDIR)/$(am__dirstamp)
-video/VideoRenderer.lo: video/$(am__dirstamp) \
- video/$(DEPDIR)/$(am__dirstamp)
-video/ScreamCongestionController.lo: video/$(am__dirstamp) \
- video/$(DEPDIR)/$(am__dirstamp)
-os/darwin/$(am__dirstamp):
- @$(MKDIR_P) os/darwin
- @: > os/darwin/$(am__dirstamp)
-os/darwin/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) os/darwin/$(DEPDIR)
- @: > os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/AudioInputAudioUnit.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/AudioOutputAudioUnit.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/AudioUnitIO.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/AudioInputAudioUnitOSX.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/AudioOutputAudioUnitOSX.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/DarwinSpecific.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/SampleBufferDisplayLayerRenderer.lo: \
- os/darwin/$(am__dirstamp) os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/TGVVideoRenderer.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/TGVVideoSource.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/darwin/VideoToolboxEncoderSource.lo: os/darwin/$(am__dirstamp) \
- os/darwin/$(DEPDIR)/$(am__dirstamp)
-os/linux/$(am__dirstamp):
- @$(MKDIR_P) os/linux
- @: > os/linux/$(am__dirstamp)
-os/linux/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) os/linux/$(DEPDIR)
- @: > os/linux/$(DEPDIR)/$(am__dirstamp)
-os/linux/AudioInputALSA.lo: os/linux/$(am__dirstamp) \
- os/linux/$(DEPDIR)/$(am__dirstamp)
-os/linux/AudioOutputALSA.lo: os/linux/$(am__dirstamp) \
- os/linux/$(DEPDIR)/$(am__dirstamp)
-os/linux/AudioOutputPulse.lo: os/linux/$(am__dirstamp) \
- os/linux/$(DEPDIR)/$(am__dirstamp)
-os/linux/AudioInputPulse.lo: os/linux/$(am__dirstamp) \
- os/linux/$(DEPDIR)/$(am__dirstamp)
-os/linux/AudioPulse.lo: os/linux/$(am__dirstamp) \
- os/linux/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/system_wrappers/source/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/system_wrappers/source
- @: > webrtc_dsp/system_wrappers/source/$(am__dirstamp)
-webrtc_dsp/system_wrappers/source/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/system_wrappers/source/$(DEPDIR)
- @: > webrtc_dsp/system_wrappers/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/system_wrappers/source/field_trial.lo: \
- webrtc_dsp/system_wrappers/source/$(am__dirstamp) \
- webrtc_dsp/system_wrappers/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/system_wrappers/source/metrics.lo: \
- webrtc_dsp/system_wrappers/source/$(am__dirstamp) \
- webrtc_dsp/system_wrappers/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/system_wrappers/source/cpu_features.lo: \
- webrtc_dsp/system_wrappers/source/$(am__dirstamp) \
- webrtc_dsp/system_wrappers/source/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/absl/strings/internal/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/strings/internal
- @: > webrtc_dsp/absl/strings/internal/$(am__dirstamp)
-webrtc_dsp/absl/strings/internal/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/strings/internal/$(DEPDIR)
- @: > webrtc_dsp/absl/strings/internal/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/strings/internal/memutil.lo: \
- webrtc_dsp/absl/strings/internal/$(am__dirstamp) \
- webrtc_dsp/absl/strings/internal/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/absl/strings/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/strings
- @: > webrtc_dsp/absl/strings/$(am__dirstamp)
-webrtc_dsp/absl/strings/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/strings/$(DEPDIR)
- @: > webrtc_dsp/absl/strings/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/strings/string_view.lo: \
- webrtc_dsp/absl/strings/$(am__dirstamp) \
- webrtc_dsp/absl/strings/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/strings/ascii.lo: \
- webrtc_dsp/absl/strings/$(am__dirstamp) \
- webrtc_dsp/absl/strings/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/absl/types/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/types
- @: > webrtc_dsp/absl/types/$(am__dirstamp)
-webrtc_dsp/absl/types/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/types/$(DEPDIR)
- @: > webrtc_dsp/absl/types/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/types/bad_optional_access.lo: \
- webrtc_dsp/absl/types/$(am__dirstamp) \
- webrtc_dsp/absl/types/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/types/optional.lo: \
- webrtc_dsp/absl/types/$(am__dirstamp) \
- webrtc_dsp/absl/types/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/absl/base/internal/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/base/internal
- @: > webrtc_dsp/absl/base/internal/$(am__dirstamp)
-webrtc_dsp/absl/base/internal/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/absl/base/internal/$(DEPDIR)
- @: > webrtc_dsp/absl/base/internal/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/base/internal/raw_logging.lo: \
- webrtc_dsp/absl/base/internal/$(am__dirstamp) \
- webrtc_dsp/absl/base/internal/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/absl/base/internal/throw_delegate.lo: \
- webrtc_dsp/absl/base/internal/$(am__dirstamp) \
- webrtc_dsp/absl/base/internal/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/rtc_base/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/rtc_base
- @: > webrtc_dsp/rtc_base/$(am__dirstamp)
-webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/rtc_base/$(DEPDIR)
- @: > webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/race_checker.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/rtc_base/strings/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/rtc_base/strings
- @: > webrtc_dsp/rtc_base/strings/$(am__dirstamp)
-webrtc_dsp/rtc_base/strings/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/rtc_base/strings/$(DEPDIR)
- @: > webrtc_dsp/rtc_base/strings/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/strings/string_builder.lo: \
- webrtc_dsp/rtc_base/strings/$(am__dirstamp) \
- webrtc_dsp/rtc_base/strings/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/rtc_base/memory/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/rtc_base/memory
- @: > webrtc_dsp/rtc_base/memory/$(am__dirstamp)
-webrtc_dsp/rtc_base/memory/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/rtc_base/memory/$(DEPDIR)
- @: > webrtc_dsp/rtc_base/memory/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/memory/aligned_malloc.lo: \
- webrtc_dsp/rtc_base/memory/$(am__dirstamp) \
- webrtc_dsp/rtc_base/memory/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/timeutils.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/platform_file.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/string_to_number.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/thread_checker_impl.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/stringencode.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/stringutils.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/checks.lo: webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/platform_thread.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/logging_webrtc.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/criticalsection.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/platform_thread_types.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/event.lo: webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/rtc_base/event_tracer.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/third_party/rnnoise/src/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/third_party/rnnoise/src
- @: > webrtc_dsp/third_party/rnnoise/src/$(am__dirstamp)
-webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)
- @: > webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/third_party/rnnoise/src/rnn_vad_weights.lo: \
- webrtc_dsp/third_party/rnnoise/src/$(am__dirstamp) \
- webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/third_party/rnnoise/src/kiss_fft.lo: \
- webrtc_dsp/third_party/rnnoise/src/$(am__dirstamp) \
- webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/api/audio/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/api/audio
- @: > webrtc_dsp/api/audio/$(am__dirstamp)
-webrtc_dsp/api/audio/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/api/audio/$(DEPDIR)
- @: > webrtc_dsp/api/audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/api/audio/audio_frame.lo: \
- webrtc_dsp/api/audio/$(am__dirstamp) \
- webrtc_dsp/api/audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/api/audio/echo_canceller3_config.lo: \
- webrtc_dsp/api/audio/$(am__dirstamp) \
- webrtc_dsp/api/audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/api/audio/echo_canceller3_factory.lo: \
- webrtc_dsp/api/audio/$(am__dirstamp) \
- webrtc_dsp/api/audio/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/third_party/fft/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/third_party/fft
- @: > webrtc_dsp/modules/third_party/fft/$(am__dirstamp)
-webrtc_dsp/modules/third_party/fft/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/third_party/fft/$(DEPDIR)
- @: > webrtc_dsp/modules/third_party/fft/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/third_party/fft/fft.lo: \
- webrtc_dsp/modules/third_party/fft/$(am__dirstamp) \
- webrtc_dsp/modules/third_party/fft/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source
- @: > webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp)
-webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_estimator.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filterbanks.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/transform.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_filter.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/filter_functions.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lattice.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/intialize.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/encode.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_analysis.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/entropy_coding.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac_vad.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/arith_routines.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/crc.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/decode_bwe.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/isac.lo: webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp) \
- webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing
- @: > webrtc_dsp/modules/audio_processing/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/rms_level.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/echo_detector
- @: > webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/echo_detector/normalized_covariance_estimator.lo: webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/echo_detector/moving_max.lo: webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/echo_detector/circular_buffer.lo: webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/echo_detector/mean_variance_estimator.lo: webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/splitting_filter.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/gain_control_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/ns
- @: > webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/ns/nsx_core.lo: \
- webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/ns/noise_suppression_x.lo: \
- webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/ns/nsx_core_c.lo: \
- webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/ns/ns_core.lo: \
- webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/ns/noise_suppression.lo: \
- webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/audio_buffer.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/typing_detection.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/include/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/include
- @: > webrtc_dsp/modules/audio_processing/include/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/include/audio_processing_statistics.lo: \
- webrtc_dsp/modules/audio_processing/include/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/include/audio_generator_factory.lo: \
- webrtc_dsp/modules/audio_processing/include/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/include/aec_dump.lo: \
- webrtc_dsp/modules/audio_processing/include/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/include/audio_processing.lo: \
- webrtc_dsp/modules/audio_processing/include/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/include/config.lo: \
- webrtc_dsp/modules/audio_processing/include/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc2
- @: > webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/interpolated_gain_curve.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/agc2_common.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/gain_applier.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_agc.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_digital_gain_applier.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/limiter.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/saturation_protector.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad
- @: > webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/rnn.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/spectral_features.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/pitch_search.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/features_extraction.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/fft_util.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/lp_residual.lo: webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/vector_float_frame.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/noise_level_estimator.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/agc2_testing_common.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/fixed_digital_level_estimator.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/fixed_gain_controller.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/vad_with_level.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/limiter_db_gain_curve.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/down_sampler.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/signal_classifier.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/noise_spectrum_estimator.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/compute_interpolated_gain_curve.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/biquad_filter.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc2/adaptive_mode_level_estimator.lo: \
- webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/transient
- @: > webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/transient/moving_moments.lo: \
- webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/transient/wpd_tree.lo: \
- webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/transient/wpd_node.lo: \
- webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/transient/transient_suppressor.lo: \
- webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/transient/transient_detector.lo: \
- webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/low_cut_filter.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/level_estimator_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/three_band_filter_bank.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/aec
- @: > webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec/echo_cancellation.lo: \
- webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec/aec_resampler.lo: \
- webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec/aec_core.lo: \
- webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/voice_detection_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/echo_cancellation_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/gain_control_for_experimental_agc.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc
- @: > webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc/agc.lo: \
- webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc/loudness_histogram.lo: \
- webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc/agc_manager_direct.lo: \
- webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc/legacy/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc/legacy
- @: > webrtc_dsp/modules/audio_processing/agc/legacy/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc/legacy/analog_agc.lo: webrtc_dsp/modules/audio_processing/agc/legacy/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc/legacy/digital_agc.lo: webrtc_dsp/modules/audio_processing/agc/legacy/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/agc/utility.lo: \
- webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/audio_processing_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/audio_generator/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/audio_generator
- @: > webrtc_dsp/modules/audio_processing/audio_generator/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/audio_generator/file_audio_generator.lo: webrtc_dsp/modules/audio_processing/audio_generator/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/gain_controller2.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/residual_echo_detector.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/noise_suppression_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/aecm
- @: > webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core.lo: \
- webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aecm/aecm_core_c.lo: \
- webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aecm/echo_control_mobile.lo: \
- webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/aec3
- @: > webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_reverb_model.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model_fallback.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/echo_remover_metrics.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/matched_filter_lag_aggregator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer2.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/echo_path_variability.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/frame_blocker.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/subtractor.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/aec3_fft.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/fullband_erle_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/suppression_filter.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/block_processor.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/subband_erle_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller_metrics.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/vector_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/erl_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/aec_state.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/adaptive_fir_filter.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/skew_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/echo_path_delay_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/block_framer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/erle_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/cascaded_biquad_filter.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/subtractor_output.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/stationarity_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_signal_analyzer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/subtractor_output_analyzer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/suppression_gain.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/echo_audibility.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/block_processor_metrics.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/moving_average.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/reverb_model_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/aec3_common.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/residual_echo_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/matched_filter.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/reverb_decay_estimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/render_delay_controller2.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/suppression_gain_limiter.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/main_filter_update_gain.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/echo_remover.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/downsampled_render_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/matrix_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/block_processor2.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/echo_canceller3.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/block_delay_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/fft_buffer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/comfort_noise_generator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/shadow_filter_update_gain.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/filter_analyzer.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/reverb_frequency_response.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/aec3/decimator.lo: \
- webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/echo_control_mobile_impl.lo: \
- webrtc_dsp/modules/audio_processing/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/logging/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/logging
- @: > webrtc_dsp/modules/audio_processing/logging/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/logging/apm_data_dumper.lo: \
- webrtc_dsp/modules/audio_processing/logging/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/vad
- @: > webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/voice_activity_detector.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/standalone_vad.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/pitch_internal.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/vad_circular_buffer.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/vad_audio_proc.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/pole_zero_filter.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/pitch_based_vad.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/vad/gmm.lo: \
- webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/utility
- @: > webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)
- @: > webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/utility/ooura_fft.lo: \
- webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/utility/delay_estimator_wrapper.lo: \
- webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/utility/delay_estimator.lo: \
- webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/modules/audio_processing/utility/block_mean_calculator.lo: \
- webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio
- @: > webrtc_dsp/common_audio/$(am__dirstamp)
-webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/$(DEPDIR)
- @: > webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/window_generator.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/channel_buffer.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/fir_filter_factory.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/wav_header.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/real_fourier_ooura.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/audio_util.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/fir_filter_sse.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/resampler/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/resampler
- @: > webrtc_dsp/common_audio/resampler/$(am__dirstamp)
-webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/resampler/$(DEPDIR)
- @: > webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/resampler/push_sinc_resampler.lo: \
- webrtc_dsp/common_audio/resampler/$(am__dirstamp) \
- webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/resampler/resampler.lo: \
- webrtc_dsp/common_audio/resampler/$(am__dirstamp) \
- webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/resampler/sinc_resampler_sse.lo: \
- webrtc_dsp/common_audio/resampler/$(am__dirstamp) \
- webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/resampler/push_resampler.lo: \
- webrtc_dsp/common_audio/resampler/$(am__dirstamp) \
- webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/resampler/sinc_resampler.lo: \
- webrtc_dsp/common_audio/resampler/$(am__dirstamp) \
- webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/resampler/sinusoidal_linear_chirp_source.lo: \
- webrtc_dsp/common_audio/resampler/$(am__dirstamp) \
- webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/wav_file.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/third_party/fft4g/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/third_party/fft4g
- @: > webrtc_dsp/common_audio/third_party/fft4g/$(am__dirstamp)
-webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)
- @: > webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/third_party/fft4g/fft4g.lo: \
- webrtc_dsp/common_audio/third_party/fft4g/$(am__dirstamp) \
- webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/audio_converter.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/real_fourier.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/sparse_fir_filter.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/smoothing_filter.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/fir_filter_c.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/ring_buffer.lo: \
- webrtc_dsp/common_audio/$(am__dirstamp) \
- webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/signal_processing
- @: > webrtc_dsp/common_audio/signal_processing/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)
- @: > webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/complex_fft.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/filter_ma_fast_q12.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/splitting_filter1.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/levinson_durbin.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/dot_product_with_scale.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/auto_corr_to_refl_coef.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/resample_by_2_internal.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/energy.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/sqrt_of_one_minus_x_squared.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/downsample_fast.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/spl_init.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/lpc_to_refl_coef.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/cross_correlation.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/division_operations.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/auto_correlation.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/get_scaling_square.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/resample.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/min_max_operations.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/refl_coef_to_lpc.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/filter_ar.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/vector_scaling_operations.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/resample_fractional.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/real_fft.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/ilbc_specific_functions.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/randomization_functions.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/copy_set_operations.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/resample_by_2.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/get_hanning_window.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/resample_48khz.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/spl_inl.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/signal_processing/spl_sqrt.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/vad/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/vad
- @: > webrtc_dsp/common_audio/vad/$(am__dirstamp)
-webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) ./webrtc_dsp/common_audio/vad/$(DEPDIR)
- @: > webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/vad/vad_sp.lo: \
- webrtc_dsp/common_audio/vad/$(am__dirstamp) \
- webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/vad/vad.lo: \
- webrtc_dsp/common_audio/vad/$(am__dirstamp) \
- webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/vad/webrtc_vad.lo: \
- webrtc_dsp/common_audio/vad/$(am__dirstamp) \
- webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/vad/vad_filterbank.lo: \
- webrtc_dsp/common_audio/vad/$(am__dirstamp) \
- webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/vad/vad_core.lo: \
- webrtc_dsp/common_audio/vad/$(am__dirstamp) \
- webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-./webrtc_dsp/common_audio/vad/vad_gmm.lo: \
- webrtc_dsp/common_audio/vad/$(am__dirstamp) \
- webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/rtc_base/logging_mac.lo: \
- webrtc_dsp/rtc_base/$(am__dirstamp) \
- webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aec/aec_core_sse2.lo: \
- webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/utility/ooura_fft_sse2.lo: \
- webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-audio/AudioIOCallback.lo: audio/$(am__dirstamp) \
- audio/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/complex_bit_reverse_arm.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(am__dirstamp):
- @$(MKDIR_P) webrtc_dsp/common_audio/third_party/spl_sqrt_floor
- @: > webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(am__dirstamp)
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)
- @: > webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor_arm.lo: webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(am__dirstamp) \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/downsample_fast_neon.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/min_max_operations_neon.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aec/aec_core_neon.lo: \
- webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/aecm/aecm_core_neon.lo: \
- webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/ns/nsx_core_neon.lo: \
- webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/modules/audio_processing/utility/ooura_fft_neon.lo: \
- webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp) \
- webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/signal_processing/complex_bit_reverse.lo: \
- webrtc_dsp/common_audio/signal_processing/$(am__dirstamp) \
- webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
-webrtc_dsp/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.lo: webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(am__dirstamp) \
- webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/$(am__dirstamp)
-
-libtgvoip.la: $(libtgvoip_la_OBJECTS) $(libtgvoip_la_DEPENDENCIES) $(EXTRA_libtgvoip_la_DEPENDENCIES)
- $(AM_V_OBJCXXLD)$(OBJCXXLINK) -rpath $(libdir) $(libtgvoip_la_OBJECTS) $(libtgvoip_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
- -rm -f ./webrtc_dsp/absl/base/internal/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/absl/base/internal/*.lo
- -rm -f ./webrtc_dsp/absl/strings/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/absl/strings/*.lo
- -rm -f ./webrtc_dsp/absl/strings/internal/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/absl/strings/internal/*.lo
- -rm -f ./webrtc_dsp/absl/types/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/absl/types/*.lo
- -rm -f ./webrtc_dsp/api/audio/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/api/audio/*.lo
- -rm -f ./webrtc_dsp/common_audio/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/common_audio/*.lo
- -rm -f ./webrtc_dsp/common_audio/resampler/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/common_audio/resampler/*.lo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/common_audio/signal_processing/*.lo
- -rm -f ./webrtc_dsp/common_audio/third_party/fft4g/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/common_audio/third_party/fft4g/*.lo
- -rm -f ./webrtc_dsp/common_audio/vad/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/common_audio/vad/*.lo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/legacy/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/legacy/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/audio_generator/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/audio_generator/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/include/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/logging/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/logging/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/*.lo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/*.lo
- -rm -f ./webrtc_dsp/modules/third_party/fft/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/modules/third_party/fft/*.lo
- -rm -f ./webrtc_dsp/rtc_base/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/rtc_base/*.lo
- -rm -f ./webrtc_dsp/rtc_base/memory/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/rtc_base/memory/*.lo
- -rm -f ./webrtc_dsp/rtc_base/strings/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/rtc_base/strings/*.lo
- -rm -f ./webrtc_dsp/system_wrappers/source/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/system_wrappers/source/*.lo
- -rm -f ./webrtc_dsp/third_party/rnnoise/src/*.$(OBJEXT)
- -rm -f ./webrtc_dsp/third_party/rnnoise/src/*.lo
- -rm -f audio/*.$(OBJEXT)
- -rm -f audio/*.lo
- -rm -f os/darwin/*.$(OBJEXT)
- -rm -f os/darwin/*.lo
- -rm -f os/linux/*.$(OBJEXT)
- -rm -f os/linux/*.lo
- -rm -f os/posix/*.$(OBJEXT)
- -rm -f os/posix/*.lo
- -rm -f video/*.$(OBJEXT)
- -rm -f video/*.lo
- -rm -f webrtc_dsp/common_audio/signal_processing/*.$(OBJEXT)
- -rm -f webrtc_dsp/common_audio/signal_processing/*.lo
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/*.$(OBJEXT)
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/*.lo
- -rm -f webrtc_dsp/modules/audio_processing/aec/*.$(OBJEXT)
- -rm -f webrtc_dsp/modules/audio_processing/aec/*.lo
- -rm -f webrtc_dsp/modules/audio_processing/aecm/*.$(OBJEXT)
- -rm -f webrtc_dsp/modules/audio_processing/aecm/*.lo
- -rm -f webrtc_dsp/modules/audio_processing/ns/*.$(OBJEXT)
- -rm -f webrtc_dsp/modules/audio_processing/ns/*.lo
- -rm -f webrtc_dsp/modules/audio_processing/utility/*.$(OBJEXT)
- -rm -f webrtc_dsp/modules/audio_processing/utility/*.lo
- -rm -f webrtc_dsp/rtc_base/*.$(OBJEXT)
- -rm -f webrtc_dsp/rtc_base/*.lo
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Buffers.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CongestionControl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EchoCanceller.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/JitterBuffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MediaStreamItf.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MessageThread.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkSocket.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OpusDecoder.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OpusEncoder.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PacketReassembler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VoIPController.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VoIPGroupController.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VoIPServerConfig.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/json11.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logging.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/base/internal/$(DEPDIR)/raw_logging.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/base/internal/$(DEPDIR)/throw_delegate.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/strings/$(DEPDIR)/ascii.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/strings/$(DEPDIR)/string_view.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/strings/internal/$(DEPDIR)/memutil.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/types/$(DEPDIR)/bad_optional_access.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/absl/types/$(DEPDIR)/optional.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/api/audio/$(DEPDIR)/audio_frame.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_config.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_factory.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/audio_converter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/audio_util.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/channel_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_c.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_factory.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_sse.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier_ooura.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/ring_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/smoothing_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/sparse_fir_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/wav_file.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/wav_header.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/$(DEPDIR)/window_generator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_resampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_sinc_resampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/resampler/$(DEPDIR)/resampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler_sse.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinusoidal_linear_chirp_source.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_corr_to_refl_coef.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_correlation.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_fft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/copy_set_operations.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/division_operations.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/dot_product_with_scale.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/energy.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar_fast_q12.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ma_fast_q12.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_hanning_window.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_scaling_square.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/ilbc_specific_functions.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/levinson_durbin.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/lpc_to_refl_coef.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/randomization_functions.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/real_fft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/refl_coef_to_lpc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_48khz.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2_internal.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_fractional.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_init.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_inl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_sqrt.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/splitting_filter1.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/sqrt_of_one_minus_x_squared.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/vector_scaling_operations.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/fft4g.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_core.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_filterbank.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_gmm.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_sp.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/common_audio/vad/$(DEPDIR)/webrtc_vad.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_hist.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_logist.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/bandwidth_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/crc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode_bwe.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode_lpc_swb.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/entropy_coding.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filter_functions.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filterbanks.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/intialize.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac_vad.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lattice.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_analysis.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_gain_swb_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb12_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb16_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_gain_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_lag_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/spectrum_ar_model_tables.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/transform.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_processing_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_cancellation_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_control_mobile_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_for_experimental_agc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_controller2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/level_estimator_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/low_cut_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/noise_suppression_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/residual_echo_detector.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/rms_level.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/splitting_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/three_band_filter_bank.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/typing_detection.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/$(DEPDIR)/voice_detection_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_resampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/echo_cancellation.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/adaptive_fir_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_common.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_fft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec_state.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_delay_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_framer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor_metrics.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/cascaded_biquad_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/comfort_noise_generator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/decimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/downsampled_render_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_audibility.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_canceller3.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_delay_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_variability.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover_metrics.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erl_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erle_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fft_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/filter_analyzer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/frame_blocker.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fullband_erle_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/main_filter_update_gain.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter_lag_aggregator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matrix_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/moving_average.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller_metrics.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_reverb_model.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_signal_analyzer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/residual_echo_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_decay_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_frequency_response.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_fallback.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/shadow_filter_update_gain.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/skew_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/stationarity_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subband_erle_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output_analyzer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain_limiter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/vector_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_c.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/echo_control_mobile.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc_manager_direct.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/loudness_histogram.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/utility.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/analog_agc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/digital_agc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_agc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_digital_gain_applier.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator_agc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_common.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_testing_common.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/biquad_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/compute_interpolated_gain_curve.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/down_sampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_digital_level_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_gain_controller.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/gain_applier.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/interpolated_gain_curve.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter_db_gain_curve.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_level_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_spectrum_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/saturation_protector.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/signal_classifier.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vad_with_level.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vector_float_frame.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/features_extraction.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/fft_util.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/lp_residual.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search_internal.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/rnn.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features_internal.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/file_audio_generator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/circular_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/mean_variance_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/moving_max.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/normalized_covariance_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/aec_dump.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_generator_factory.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing_statistics.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/config.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/apm_data_dumper.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression_x.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/ns_core.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_c.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/moving_moments.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_detector.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_suppressor.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_node.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_tree.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/block_mean_calculator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator_wrapper.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/gmm.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_based_vad.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_internal.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pole_zero_filter.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/standalone_vad.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_audio_proc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_circular_buffer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/voice_activity_detector.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/modules/third_party/fft/$(DEPDIR)/fft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/checks.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/criticalsection.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/event.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/event_tracer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/logging_webrtc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/platform_file.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread_types.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/race_checker.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/string_to_number.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/stringencode.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/stringutils.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/thread_checker_impl.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/$(DEPDIR)/timeutils.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/memory/$(DEPDIR)/aligned_malloc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/rtc_base/strings/$(DEPDIR)/string_builder.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/system_wrappers/source/$(DEPDIR)/cpu_features.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/system_wrappers/source/$(DEPDIR)/field_trial.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/system_wrappers/source/$(DEPDIR)/metrics.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/kiss_fft.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/rnn_vad_weights.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/AudioIO.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/AudioIOCallback.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/AudioInput.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/AudioOutput.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/Resampler.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/AudioInputAudioUnit.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/AudioInputAudioUnitOSX.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/AudioOutputAudioUnit.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/AudioOutputAudioUnitOSX.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/AudioUnitIO.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/DarwinSpecific.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/SampleBufferDisplayLayerRenderer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/TGVVideoRenderer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/TGVVideoSource.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/darwin/$(DEPDIR)/VideoToolboxEncoderSource.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/linux/$(DEPDIR)/AudioInputALSA.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/linux/$(DEPDIR)/AudioInputPulse.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/linux/$(DEPDIR)/AudioOutputALSA.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/linux/$(DEPDIR)/AudioOutputPulse.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/linux/$(DEPDIR)/AudioPulse.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@os/posix/$(DEPDIR)/NetworkSocketPosix.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/ScreamCongestionController.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/VideoRenderer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/VideoSource.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse_arm.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor_arm.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_sse2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_neon.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_sse2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@webrtc_dsp/rtc_base/$(DEPDIR)/logging_mac.Plo@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
- @$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.S.o:
-@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
-
-.S.obj:
-@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.S.lo:
-@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $<
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-.cc.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-.cpp.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-.mm.o:
-@am__fastdepOBJCXX_TRUE@ $(AM_V_OBJCXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepOBJCXX_TRUE@ $(OBJCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepOBJCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepOBJCXX_FALSE@ $(AM_V_OBJCXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJCXX_FALSE@ DEPDIR=$(DEPDIR) $(OBJCXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJCXX_FALSE@ $(AM_V_OBJCXX@am__nodep@)$(OBJCXXCOMPILE) -c -o $@ $<
-
-.mm.obj:
-@am__fastdepOBJCXX_TRUE@ $(AM_V_OBJCXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepOBJCXX_TRUE@ $(OBJCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepOBJCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepOBJCXX_FALSE@ $(AM_V_OBJCXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJCXX_FALSE@ DEPDIR=$(DEPDIR) $(OBJCXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJCXX_FALSE@ $(AM_V_OBJCXX@am__nodep@)$(OBJCXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.mm.lo:
-@am__fastdepOBJCXX_TRUE@ $(AM_V_OBJCXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepOBJCXX_TRUE@ $(LTOBJCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepOBJCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepOBJCXX_FALSE@ $(AM_V_OBJCXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJCXX_FALSE@ DEPDIR=$(DEPDIR) $(OBJCXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJCXX_FALSE@ $(AM_V_OBJCXX@am__nodep@)$(LTOBJCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
- -rm -rf ./webrtc_dsp/absl/base/internal/.libs ./webrtc_dsp/absl/base/internal/_libs
- -rm -rf ./webrtc_dsp/absl/strings/.libs ./webrtc_dsp/absl/strings/_libs
- -rm -rf ./webrtc_dsp/absl/strings/internal/.libs ./webrtc_dsp/absl/strings/internal/_libs
- -rm -rf ./webrtc_dsp/absl/types/.libs ./webrtc_dsp/absl/types/_libs
- -rm -rf ./webrtc_dsp/api/audio/.libs ./webrtc_dsp/api/audio/_libs
- -rm -rf ./webrtc_dsp/common_audio/.libs ./webrtc_dsp/common_audio/_libs
- -rm -rf ./webrtc_dsp/common_audio/resampler/.libs ./webrtc_dsp/common_audio/resampler/_libs
- -rm -rf ./webrtc_dsp/common_audio/signal_processing/.libs ./webrtc_dsp/common_audio/signal_processing/_libs
- -rm -rf ./webrtc_dsp/common_audio/third_party/fft4g/.libs ./webrtc_dsp/common_audio/third_party/fft4g/_libs
- -rm -rf ./webrtc_dsp/common_audio/vad/.libs ./webrtc_dsp/common_audio/vad/_libs
- -rm -rf ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/.libs ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/.libs ./webrtc_dsp/modules/audio_processing/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/aec/.libs ./webrtc_dsp/modules/audio_processing/aec/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/aec3/.libs ./webrtc_dsp/modules/audio_processing/aec3/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/aecm/.libs ./webrtc_dsp/modules/audio_processing/aecm/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/agc/.libs ./webrtc_dsp/modules/audio_processing/agc/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/agc/legacy/.libs ./webrtc_dsp/modules/audio_processing/agc/legacy/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/agc2/.libs ./webrtc_dsp/modules/audio_processing/agc2/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/.libs ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/audio_generator/.libs ./webrtc_dsp/modules/audio_processing/audio_generator/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/echo_detector/.libs ./webrtc_dsp/modules/audio_processing/echo_detector/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/include/.libs ./webrtc_dsp/modules/audio_processing/include/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/logging/.libs ./webrtc_dsp/modules/audio_processing/logging/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/ns/.libs ./webrtc_dsp/modules/audio_processing/ns/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/transient/.libs ./webrtc_dsp/modules/audio_processing/transient/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/utility/.libs ./webrtc_dsp/modules/audio_processing/utility/_libs
- -rm -rf ./webrtc_dsp/modules/audio_processing/vad/.libs ./webrtc_dsp/modules/audio_processing/vad/_libs
- -rm -rf ./webrtc_dsp/modules/third_party/fft/.libs ./webrtc_dsp/modules/third_party/fft/_libs
- -rm -rf ./webrtc_dsp/rtc_base/.libs ./webrtc_dsp/rtc_base/_libs
- -rm -rf ./webrtc_dsp/rtc_base/memory/.libs ./webrtc_dsp/rtc_base/memory/_libs
- -rm -rf ./webrtc_dsp/rtc_base/strings/.libs ./webrtc_dsp/rtc_base/strings/_libs
- -rm -rf ./webrtc_dsp/system_wrappers/source/.libs ./webrtc_dsp/system_wrappers/source/_libs
- -rm -rf ./webrtc_dsp/third_party/rnnoise/src/.libs ./webrtc_dsp/third_party/rnnoise/src/_libs
- -rm -rf audio/.libs audio/_libs
- -rm -rf os/darwin/.libs os/darwin/_libs
- -rm -rf os/linux/.libs os/linux/_libs
- -rm -rf os/posix/.libs os/posix/_libs
- -rm -rf video/.libs video/_libs
- -rm -rf webrtc_dsp/common_audio/signal_processing/.libs webrtc_dsp/common_audio/signal_processing/_libs
- -rm -rf webrtc_dsp/common_audio/third_party/spl_sqrt_floor/.libs webrtc_dsp/common_audio/third_party/spl_sqrt_floor/_libs
- -rm -rf webrtc_dsp/modules/audio_processing/aec/.libs webrtc_dsp/modules/audio_processing/aec/_libs
- -rm -rf webrtc_dsp/modules/audio_processing/aecm/.libs webrtc_dsp/modules/audio_processing/aecm/_libs
- -rm -rf webrtc_dsp/modules/audio_processing/ns/.libs webrtc_dsp/modules/audio_processing/ns/_libs
- -rm -rf webrtc_dsp/modules/audio_processing/utility/.libs webrtc_dsp/modules/audio_processing/utility/_libs
- -rm -rf webrtc_dsp/rtc_base/.libs webrtc_dsp/rtc_base/_libs
-
-distclean-libtool:
- -rm -f libtool config.lt
-install-nobase_tgvoipincludeHEADERS: $(nobase_tgvoipinclude_HEADERS)
- @$(NORMAL_INSTALL)
- @list='$(nobase_tgvoipinclude_HEADERS)'; test -n "$(tgvoipincludedir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(tgvoipincludedir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(tgvoipincludedir)" || exit 1; \
- fi; \
- $(am__nobase_list) | while read dir files; do \
- xfiles=; for file in $$files; do \
- if test -f "$$file"; then xfiles="$$xfiles $$file"; \
- else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
- test -z "$$xfiles" || { \
- test "x$$dir" = x. || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(tgvoipincludedir)/$$dir'"; \
- $(MKDIR_P) "$(DESTDIR)$(tgvoipincludedir)/$$dir"; }; \
- echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(tgvoipincludedir)/$$dir'"; \
- $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(tgvoipincludedir)/$$dir" || exit $$?; }; \
- done
-
-uninstall-nobase_tgvoipincludeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(nobase_tgvoipinclude_HEADERS)'; test -n "$(tgvoipincludedir)" || list=; \
- $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
- dir='$(DESTDIR)$(tgvoipincludedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
- test ! -s cscope.files \
- || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
- -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
- -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -755 \
- -exec chmod u+rwx,go+rx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
- $(am__post_remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
- $(am__post_remove_distdir)
-
-dist-lzip: distdir
- tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
- $(am__post_remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
- $(am__post_remove_distdir)
-
-dist-tarZ: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__post_remove_distdir)
-
-dist-shar: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
- $(am__post_remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__post_remove_distdir)
-
-dist dist-all:
- $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
- $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lz*) \
- lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir)
- chmod u+w $(distdir)
- mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build/sub \
- && ../../configure \
- $(AM_DISTCHECK_CONFIGURE_FLAGS) \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=../.. --prefix="$$dc_install_base" \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__post_remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @test -n '$(distuninstallcheck_dir)' || { \
- echo 'ERROR: trying to run $@ with an empty' \
- '$$(distuninstallcheck_dir)' >&2; \
- exit 1; \
- }; \
- $(am__cd) '$(distuninstallcheck_dir)' || { \
- echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
- exit 1; \
- }; \
- test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.h
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(tgvoipincludedir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -rm -f audio/$(DEPDIR)/$(am__dirstamp)
- -rm -f audio/$(am__dirstamp)
- -rm -f os/darwin/$(DEPDIR)/$(am__dirstamp)
- -rm -f os/darwin/$(am__dirstamp)
- -rm -f os/linux/$(DEPDIR)/$(am__dirstamp)
- -rm -f os/linux/$(am__dirstamp)
- -rm -f os/posix/$(DEPDIR)/$(am__dirstamp)
- -rm -f os/posix/$(am__dirstamp)
- -rm -f video/$(DEPDIR)/$(am__dirstamp)
- -rm -f video/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/base/internal/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/base/internal/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/strings/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/strings/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/strings/internal/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/strings/internal/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/types/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/absl/types/$(am__dirstamp)
- -rm -f webrtc_dsp/api/audio/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/api/audio/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/resampler/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/resampler/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/signal_processing/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/third_party/fft4g/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/vad/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/common_audio/vad/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/aec/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/aec3/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/aecm/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc/legacy/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc2/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/audio_generator/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/echo_detector/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/include/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/logging/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/ns/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/transient/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/utility/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/audio_processing/vad/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/third_party/fft/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/modules/third_party/fft/$(am__dirstamp)
- -rm -f webrtc_dsp/rtc_base/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/rtc_base/$(am__dirstamp)
- -rm -f webrtc_dsp/rtc_base/memory/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/rtc_base/memory/$(am__dirstamp)
- -rm -f webrtc_dsp/rtc_base/strings/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/rtc_base/strings/$(am__dirstamp)
- -rm -f webrtc_dsp/system_wrappers/source/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/system_wrappers/source/$(am__dirstamp)
- -rm -f webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/$(am__dirstamp)
- -rm -f webrtc_dsp/third_party/rnnoise/src/$(am__dirstamp)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f ./$(DEPDIR)/Buffers.Plo
- -rm -f ./$(DEPDIR)/CongestionControl.Plo
- -rm -f ./$(DEPDIR)/EchoCanceller.Plo
- -rm -f ./$(DEPDIR)/JitterBuffer.Plo
- -rm -f ./$(DEPDIR)/MediaStreamItf.Plo
- -rm -f ./$(DEPDIR)/MessageThread.Plo
- -rm -f ./$(DEPDIR)/NetworkSocket.Plo
- -rm -f ./$(DEPDIR)/OpusDecoder.Plo
- -rm -f ./$(DEPDIR)/OpusEncoder.Plo
- -rm -f ./$(DEPDIR)/PacketReassembler.Plo
- -rm -f ./$(DEPDIR)/VoIPController.Plo
- -rm -f ./$(DEPDIR)/VoIPGroupController.Plo
- -rm -f ./$(DEPDIR)/VoIPServerConfig.Plo
- -rm -f ./$(DEPDIR)/json11.Plo
- -rm -f ./$(DEPDIR)/logging.Plo
- -rm -f ./webrtc_dsp/absl/base/internal/$(DEPDIR)/raw_logging.Plo
- -rm -f ./webrtc_dsp/absl/base/internal/$(DEPDIR)/throw_delegate.Plo
- -rm -f ./webrtc_dsp/absl/strings/$(DEPDIR)/ascii.Plo
- -rm -f ./webrtc_dsp/absl/strings/$(DEPDIR)/string_view.Plo
- -rm -f ./webrtc_dsp/absl/strings/internal/$(DEPDIR)/memutil.Plo
- -rm -f ./webrtc_dsp/absl/types/$(DEPDIR)/bad_optional_access.Plo
- -rm -f ./webrtc_dsp/absl/types/$(DEPDIR)/optional.Plo
- -rm -f ./webrtc_dsp/api/audio/$(DEPDIR)/audio_frame.Plo
- -rm -f ./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_config.Plo
- -rm -f ./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_factory.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/audio_converter.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/audio_util.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/channel_buffer.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_c.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_factory.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_sse.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier_ooura.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/ring_buffer.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/smoothing_filter.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/sparse_fir_filter.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/wav_file.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/wav_header.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/window_generator.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_sinc_resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler_sse.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinusoidal_linear_chirp_source.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_corr_to_refl_coef.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_correlation.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_fft.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/copy_set_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/division_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/dot_product_with_scale.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/energy.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar_fast_q12.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ma_fast_q12.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_hanning_window.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_scaling_square.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/ilbc_specific_functions.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/levinson_durbin.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/lpc_to_refl_coef.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/randomization_functions.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/real_fft.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/refl_coef_to_lpc.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_48khz.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2_internal.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_fractional.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_init.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_inl.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_sqrt.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/splitting_filter1.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/sqrt_of_one_minus_x_squared.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/vector_scaling_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/fft4g.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_core.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_filterbank.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_gmm.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_sp.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/webrtc_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_hist.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_logist.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/bandwidth_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/crc.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode_bwe.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode_lpc_swb.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/entropy_coding.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filter_functions.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filterbanks.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/intialize.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lattice.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_analysis.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_gain_swb_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb12_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb16_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_gain_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_lag_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/spectrum_ar_model_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/transform.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_processing_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_cancellation_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_control_mobile_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_for_experimental_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_controller2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/level_estimator_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/low_cut_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/noise_suppression_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/residual_echo_detector.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/rms_level.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/splitting_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/three_band_filter_bank.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/typing_detection.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/voice_detection_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_resampler.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/echo_cancellation.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/adaptive_fir_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_common.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_fft.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec_state.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_delay_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_framer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor_metrics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/cascaded_biquad_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/comfort_noise_generator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/decimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/downsampled_render_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_audibility.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_canceller3.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_delay_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_variability.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover_metrics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erl_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erle_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fft_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/filter_analyzer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/frame_blocker.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fullband_erle_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/main_filter_update_gain.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter_lag_aggregator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matrix_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/moving_average.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller_metrics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_reverb_model.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_signal_analyzer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/residual_echo_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_decay_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_frequency_response.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_fallback.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/shadow_filter_update_gain.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/skew_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/stationarity_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subband_erle_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output_analyzer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain_limiter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/vector_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_c.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/echo_control_mobile.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc_manager_direct.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/loudness_histogram.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/utility.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/analog_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/digital_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_digital_gain_applier.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_common.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_testing_common.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/biquad_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/compute_interpolated_gain_curve.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/down_sampler.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_digital_level_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_gain_controller.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/gain_applier.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/interpolated_gain_curve.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter_db_gain_curve.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_level_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_spectrum_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/saturation_protector.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/signal_classifier.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vad_with_level.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vector_float_frame.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/features_extraction.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/fft_util.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/lp_residual.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search_internal.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/rnn.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features_internal.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/file_audio_generator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/circular_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/mean_variance_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/moving_max.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/normalized_covariance_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/aec_dump.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_generator_factory.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing_statistics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/config.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/apm_data_dumper.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression_x.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/ns_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_c.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/moving_moments.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_detector.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_suppressor.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_node.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_tree.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/block_mean_calculator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator_wrapper.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/gmm.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_based_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_internal.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pole_zero_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/standalone_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_audio_proc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_circular_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/voice_activity_detector.Plo
- -rm -f ./webrtc_dsp/modules/third_party/fft/$(DEPDIR)/fft.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/checks.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/criticalsection.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/event.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/event_tracer.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/logging_webrtc.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_file.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread_types.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/race_checker.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/string_to_number.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/stringencode.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/stringutils.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/thread_checker_impl.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/timeutils.Plo
- -rm -f ./webrtc_dsp/rtc_base/memory/$(DEPDIR)/aligned_malloc.Plo
- -rm -f ./webrtc_dsp/rtc_base/strings/$(DEPDIR)/string_builder.Plo
- -rm -f ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/cpu_features.Plo
- -rm -f ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/field_trial.Plo
- -rm -f ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/metrics.Plo
- -rm -f ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/kiss_fft.Plo
- -rm -f ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/rnn_vad_weights.Plo
- -rm -f audio/$(DEPDIR)/AudioIO.Plo
- -rm -f audio/$(DEPDIR)/AudioIOCallback.Plo
- -rm -f audio/$(DEPDIR)/AudioInput.Plo
- -rm -f audio/$(DEPDIR)/AudioOutput.Plo
- -rm -f audio/$(DEPDIR)/Resampler.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioInputAudioUnit.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioInputAudioUnitOSX.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioOutputAudioUnit.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioOutputAudioUnitOSX.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioUnitIO.Plo
- -rm -f os/darwin/$(DEPDIR)/DarwinSpecific.Plo
- -rm -f os/darwin/$(DEPDIR)/SampleBufferDisplayLayerRenderer.Plo
- -rm -f os/darwin/$(DEPDIR)/TGVVideoRenderer.Plo
- -rm -f os/darwin/$(DEPDIR)/TGVVideoSource.Plo
- -rm -f os/darwin/$(DEPDIR)/VideoToolboxEncoderSource.Plo
- -rm -f os/linux/$(DEPDIR)/AudioInputALSA.Plo
- -rm -f os/linux/$(DEPDIR)/AudioInputPulse.Plo
- -rm -f os/linux/$(DEPDIR)/AudioOutputALSA.Plo
- -rm -f os/linux/$(DEPDIR)/AudioOutputPulse.Plo
- -rm -f os/linux/$(DEPDIR)/AudioPulse.Plo
- -rm -f os/posix/$(DEPDIR)/NetworkSocketPosix.Plo
- -rm -f video/$(DEPDIR)/ScreamCongestionController.Plo
- -rm -f video/$(DEPDIR)/VideoRenderer.Plo
- -rm -f video/$(DEPDIR)/VideoSource.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse_arm.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation_neon.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast_neon.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations_neon.Plo
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor.Plo
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor_arm.Plo
- -rm -f webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_sse2.Plo
- -rm -f webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_sse2.Plo
- -rm -f webrtc_dsp/rtc_base/$(DEPDIR)/logging_mac.Plo
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-hdr distclean-libtool distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nobase_tgvoipincludeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f ./$(DEPDIR)/Buffers.Plo
- -rm -f ./$(DEPDIR)/CongestionControl.Plo
- -rm -f ./$(DEPDIR)/EchoCanceller.Plo
- -rm -f ./$(DEPDIR)/JitterBuffer.Plo
- -rm -f ./$(DEPDIR)/MediaStreamItf.Plo
- -rm -f ./$(DEPDIR)/MessageThread.Plo
- -rm -f ./$(DEPDIR)/NetworkSocket.Plo
- -rm -f ./$(DEPDIR)/OpusDecoder.Plo
- -rm -f ./$(DEPDIR)/OpusEncoder.Plo
- -rm -f ./$(DEPDIR)/PacketReassembler.Plo
- -rm -f ./$(DEPDIR)/VoIPController.Plo
- -rm -f ./$(DEPDIR)/VoIPGroupController.Plo
- -rm -f ./$(DEPDIR)/VoIPServerConfig.Plo
- -rm -f ./$(DEPDIR)/json11.Plo
- -rm -f ./$(DEPDIR)/logging.Plo
- -rm -f ./webrtc_dsp/absl/base/internal/$(DEPDIR)/raw_logging.Plo
- -rm -f ./webrtc_dsp/absl/base/internal/$(DEPDIR)/throw_delegate.Plo
- -rm -f ./webrtc_dsp/absl/strings/$(DEPDIR)/ascii.Plo
- -rm -f ./webrtc_dsp/absl/strings/$(DEPDIR)/string_view.Plo
- -rm -f ./webrtc_dsp/absl/strings/internal/$(DEPDIR)/memutil.Plo
- -rm -f ./webrtc_dsp/absl/types/$(DEPDIR)/bad_optional_access.Plo
- -rm -f ./webrtc_dsp/absl/types/$(DEPDIR)/optional.Plo
- -rm -f ./webrtc_dsp/api/audio/$(DEPDIR)/audio_frame.Plo
- -rm -f ./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_config.Plo
- -rm -f ./webrtc_dsp/api/audio/$(DEPDIR)/echo_canceller3_factory.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/audio_converter.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/audio_util.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/channel_buffer.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_c.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_factory.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/fir_filter_sse.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/real_fourier_ooura.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/ring_buffer.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/smoothing_filter.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/sparse_fir_filter.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/wav_file.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/wav_header.Plo
- -rm -f ./webrtc_dsp/common_audio/$(DEPDIR)/window_generator.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/push_sinc_resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinc_resampler_sse.Plo
- -rm -f ./webrtc_dsp/common_audio/resampler/$(DEPDIR)/sinusoidal_linear_chirp_source.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_corr_to_refl_coef.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/auto_correlation.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_fft.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/copy_set_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/division_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/dot_product_with_scale.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/energy.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ar_fast_q12.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/filter_ma_fast_q12.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_hanning_window.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/get_scaling_square.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/ilbc_specific_functions.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/levinson_durbin.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/lpc_to_refl_coef.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/randomization_functions.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/real_fft.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/refl_coef_to_lpc.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_48khz.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_by_2_internal.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/resample_fractional.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_init.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_inl.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/spl_sqrt.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/splitting_filter1.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/sqrt_of_one_minus_x_squared.Plo
- -rm -f ./webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/vector_scaling_operations.Plo
- -rm -f ./webrtc_dsp/common_audio/third_party/fft4g/$(DEPDIR)/fft4g.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_core.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_filterbank.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_gmm.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/vad_sp.Plo
- -rm -f ./webrtc_dsp/common_audio/vad/$(DEPDIR)/webrtc_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_hist.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/arith_routines_logist.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/bandwidth_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/crc.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/decode_bwe.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/encode_lpc_swb.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/entropy_coding.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filter_functions.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/filterbanks.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/intialize.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/isac_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lattice.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_analysis.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_gain_swb_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb12_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_shape_swb16_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/lpc_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_gain_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/pitch_lag_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/spectrum_ar_model_tables.Plo
- -rm -f ./webrtc_dsp/modules/audio_coding/codecs/isac/main/source/$(DEPDIR)/transform.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/audio_processing_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_cancellation_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/echo_control_mobile_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_for_experimental_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_control_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/gain_controller2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/level_estimator_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/low_cut_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/noise_suppression_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/residual_echo_detector.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/rms_level.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/splitting_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/three_band_filter_bank.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/typing_detection.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/$(DEPDIR)/voice_detection_impl.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_resampler.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/echo_cancellation.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/adaptive_fir_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_common.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec3_fft.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/aec_state.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_delay_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_framer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/block_processor_metrics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/cascaded_biquad_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/comfort_noise_generator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/decimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/downsampled_render_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_audibility.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_canceller3.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_delay_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_path_variability.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/echo_remover_metrics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erl_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/erle_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fft_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/filter_analyzer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/frame_blocker.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/fullband_erle_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/main_filter_update_gain.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matched_filter_lag_aggregator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/matrix_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/moving_average.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_buffer2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller2.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_delay_controller_metrics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_reverb_model.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/render_signal_analyzer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/residual_echo_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_decay_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_frequency_response.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/reverb_model_fallback.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/shadow_filter_update_gain.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/skew_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/stationarity_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subband_erle_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/subtractor_output_analyzer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/suppression_gain_limiter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aec3/$(DEPDIR)/vector_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_c.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/echo_control_mobile.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/agc_manager_direct.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/loudness_histogram.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/$(DEPDIR)/utility.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/analog_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc/legacy/$(DEPDIR)/digital_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_digital_gain_applier.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/adaptive_mode_level_estimator_agc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_common.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/agc2_testing_common.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/biquad_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/compute_interpolated_gain_curve.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/down_sampler.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_digital_level_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/fixed_gain_controller.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/gain_applier.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/interpolated_gain_curve.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/limiter_db_gain_curve.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_level_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/noise_spectrum_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/saturation_protector.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/signal_classifier.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vad_with_level.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/$(DEPDIR)/vector_float_frame.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/features_extraction.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/fft_util.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/lp_residual.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/pitch_search_internal.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/rnn.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/agc2/rnn_vad/$(DEPDIR)/spectral_features_internal.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/audio_generator/$(DEPDIR)/file_audio_generator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/circular_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/mean_variance_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/moving_max.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/echo_detector/$(DEPDIR)/normalized_covariance_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/aec_dump.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_generator_factory.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/audio_processing_statistics.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/include/$(DEPDIR)/config.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/logging/$(DEPDIR)/apm_data_dumper.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/noise_suppression_x.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/ns_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_c.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/moving_moments.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_detector.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/transient_suppressor.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_node.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/transient/$(DEPDIR)/wpd_tree.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/block_mean_calculator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/delay_estimator_wrapper.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/gmm.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_based_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pitch_internal.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/pole_zero_filter.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/standalone_vad.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_audio_proc.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/vad_circular_buffer.Plo
- -rm -f ./webrtc_dsp/modules/audio_processing/vad/$(DEPDIR)/voice_activity_detector.Plo
- -rm -f ./webrtc_dsp/modules/third_party/fft/$(DEPDIR)/fft.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/checks.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/criticalsection.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/event.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/event_tracer.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/logging_webrtc.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_file.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/platform_thread_types.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/race_checker.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/string_to_number.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/stringencode.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/stringutils.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/thread_checker_impl.Plo
- -rm -f ./webrtc_dsp/rtc_base/$(DEPDIR)/timeutils.Plo
- -rm -f ./webrtc_dsp/rtc_base/memory/$(DEPDIR)/aligned_malloc.Plo
- -rm -f ./webrtc_dsp/rtc_base/strings/$(DEPDIR)/string_builder.Plo
- -rm -f ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/cpu_features.Plo
- -rm -f ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/field_trial.Plo
- -rm -f ./webrtc_dsp/system_wrappers/source/$(DEPDIR)/metrics.Plo
- -rm -f ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/kiss_fft.Plo
- -rm -f ./webrtc_dsp/third_party/rnnoise/src/$(DEPDIR)/rnn_vad_weights.Plo
- -rm -f audio/$(DEPDIR)/AudioIO.Plo
- -rm -f audio/$(DEPDIR)/AudioIOCallback.Plo
- -rm -f audio/$(DEPDIR)/AudioInput.Plo
- -rm -f audio/$(DEPDIR)/AudioOutput.Plo
- -rm -f audio/$(DEPDIR)/Resampler.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioInputAudioUnit.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioInputAudioUnitOSX.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioOutputAudioUnit.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioOutputAudioUnitOSX.Plo
- -rm -f os/darwin/$(DEPDIR)/AudioUnitIO.Plo
- -rm -f os/darwin/$(DEPDIR)/DarwinSpecific.Plo
- -rm -f os/darwin/$(DEPDIR)/SampleBufferDisplayLayerRenderer.Plo
- -rm -f os/darwin/$(DEPDIR)/TGVVideoRenderer.Plo
- -rm -f os/darwin/$(DEPDIR)/TGVVideoSource.Plo
- -rm -f os/darwin/$(DEPDIR)/VideoToolboxEncoderSource.Plo
- -rm -f os/linux/$(DEPDIR)/AudioInputALSA.Plo
- -rm -f os/linux/$(DEPDIR)/AudioInputPulse.Plo
- -rm -f os/linux/$(DEPDIR)/AudioOutputALSA.Plo
- -rm -f os/linux/$(DEPDIR)/AudioOutputPulse.Plo
- -rm -f os/linux/$(DEPDIR)/AudioPulse.Plo
- -rm -f os/posix/$(DEPDIR)/NetworkSocketPosix.Plo
- -rm -f video/$(DEPDIR)/ScreamCongestionController.Plo
- -rm -f video/$(DEPDIR)/VideoRenderer.Plo
- -rm -f video/$(DEPDIR)/VideoSource.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/complex_bit_reverse_arm.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/cross_correlation_neon.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/downsample_fast_neon.Plo
- -rm -f webrtc_dsp/common_audio/signal_processing/$(DEPDIR)/min_max_operations_neon.Plo
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor.Plo
- -rm -f webrtc_dsp/common_audio/third_party/spl_sqrt_floor/$(DEPDIR)/spl_sqrt_floor_arm.Plo
- -rm -f webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/aec/$(DEPDIR)/aec_core_sse2.Plo
- -rm -f webrtc_dsp/modules/audio_processing/aecm/$(DEPDIR)/aecm_core_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/ns/$(DEPDIR)/nsx_core_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_neon.Plo
- -rm -f webrtc_dsp/modules/audio_processing/utility/$(DEPDIR)/ooura_fft_sse2.Plo
- -rm -f webrtc_dsp/rtc_base/$(DEPDIR)/logging_mac.Plo
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES \
- uninstall-nobase_tgvoipincludeHEADERS
-
-.MAKE: all install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \
- check-am clean clean-cscope clean-generic clean-libLTLIBRARIES \
- clean-libtool cscope cscopelist-am ctags ctags-am dist \
- dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
- dist-xz dist-zip distcheck distclean distclean-compile \
- distclean-generic distclean-hdr distclean-libtool \
- distclean-tags distcleancheck distdir distuninstallcheck dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-libLTLIBRARIES \
- install-man install-nobase_tgvoipincludeHEADERS install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
- uninstall-nobase_tgvoipincludeHEADERS
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/submodules/libtgvoip/MediaStreamItf.cpp b/submodules/libtgvoip/MediaStreamItf.cpp
deleted file mode 100644
index 554ed0d7ab..0000000000
--- a/submodules/libtgvoip/MediaStreamItf.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "logging.h"
-#include "MediaStreamItf.h"
-#include "EchoCanceller.h"
-#include
-#include
-#include
-#include
-
-using namespace tgvoip;
-
-void MediaStreamItf::SetCallback(size_t (*f)(unsigned char *, size_t, void*), void* param){
- callback=f;
- callbackParam=param;
-}
-
-size_t MediaStreamItf::InvokeCallback(unsigned char *data, size_t length){
- if(callback)
- return (*callback)(data, length, callbackParam);
- return 0;
-}
-
-AudioMixer::AudioMixer() : bufferPool(960*2, 16), processedQueue(16), semaphore(16, 0){
- running=false;
-}
-
-AudioMixer::~AudioMixer(){
-}
-
-void AudioMixer::SetOutput(MediaStreamItf* output){
- output->SetCallback(OutputCallback, this);
-}
-
-void AudioMixer::Start(){
- assert(!running);
- running=true;
- thread=new Thread(std::bind(&AudioMixer::RunThread, this));
- thread->SetName("AudioMixer");
- thread->Start();
-}
-
-void AudioMixer::Stop(){
- if(!running){
- LOGE("Tried to stop AudioMixer that wasn't started");
- return;
- }
- running=false;
- semaphore.Release();
- thread->Join();
- delete thread;
- thread=NULL;
-}
-
-void AudioMixer::DoCallback(unsigned char *data, size_t length){
- //memset(data, 0, 960*2);
- //LOGD("audio mixer callback, %d inputs", inputs.size());
- if(processedQueue.Size()==0)
- semaphore.Release(2);
- else
- semaphore.Release();
- unsigned char* buf=processedQueue.GetBlocking();
- memcpy(data, buf, 960*2);
- bufferPool.Reuse(buf);
-}
-
-size_t AudioMixer::OutputCallback(unsigned char *data, size_t length, void *arg){
- ((AudioMixer*)arg)->DoCallback(data, length);
- return 960*2;
-}
-
-void AudioMixer::AddInput(std::shared_ptr input){
- MutexGuard m(inputsMutex);
- MixerInput in;
- in.multiplier=1;
- in.source=input;
- inputs.push_back(in);
-}
-
-void AudioMixer::RemoveInput(std::shared_ptr input){
- MutexGuard m(inputsMutex);
- for(std::vector::iterator i=inputs.begin();i!=inputs.end();++i){
- if(i->source==input){
- inputs.erase(i);
- return;
- }
- }
-}
-
-void AudioMixer::SetInputVolume(std::shared_ptr input, float volumeDB){
- MutexGuard m(inputsMutex);
- for(std::vector::iterator i=inputs.begin();i!=inputs.end();++i){
- if(i->source==input){
- if(volumeDB==-INFINITY)
- i->multiplier=0;
- else
- i->multiplier=expf(volumeDB/20.0f * logf(10.0f));
- return;
- }
- }
-}
-
-void AudioMixer::RunThread(){
- LOGV("AudioMixer thread started");
- while(running){
- semaphore.Acquire();
- if(!running)
- break;
-
- unsigned char* data=bufferPool.Get();
- //LOGV("Audio mixer processing a frame");
- if(!data){
- LOGE("AudioMixer: no buffers left");
- continue;
- }
- MutexGuard m(inputsMutex);
- int16_t* buf=reinterpret_cast(data);
- int16_t input[960];
- float out[960];
- memset(out, 0, 960*4);
- int usedInputs=0;
- for(std::vector::iterator in=inputs.begin();in!=inputs.end();++in){
- size_t res=in->source->InvokeCallback(reinterpret_cast(input), 960*2);
- if(!res || in->multiplier==0){
- //LOGV("AudioMixer: skipping silent packet");
- continue;
- }
- usedInputs++;
- float k=in->multiplier;
- if(k!=1){
- for(size_t i=0; i<960; i++){
- out[i]+=(float)input[i]*k;
- }
- }else{
- for(size_t i=0;i<960;i++){
- out[i]+=(float)input[i];
- }
- }
- }
- if(usedInputs>0){
- for(size_t i=0; i<960; i++){
- if(out[i]>32767.0f)
- buf[i]=INT16_MAX;
- else if(out[i]<-32768.0f)
- buf[i]=INT16_MIN;
- else
- buf[i]=(int16_t)out[i];
- }
- }else{
- memset(data, 0, 960*2);
- }
- if(echoCanceller)
- echoCanceller->SpeakerOutCallback(data, 960*2);
- processedQueue.Put(data);
- }
- LOGI("======== audio mixer thread exiting =========");
-}
-
-void AudioMixer::SetEchoCanceller(EchoCanceller *aec){
- echoCanceller=aec;
-}
-
-AudioLevelMeter::AudioLevelMeter(){
- absMax=0;
- count=0;
- currentLevel=0;
- currentLevelFullRange=0;
-}
-
-float AudioLevelMeter::GetLevel(){
- return currentLevel/9.0f;
-}
-
-void AudioLevelMeter::Update(int16_t *samples, size_t count){
- // Number of bars on the indicator.
- // Note that the number of elements is specified because we are indexing it
- // in the range of 0-32
- const int8_t permutation[33]={0,1,2,3,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,9,9,9,9,9,9,9,9,9,9,9};
- int16_t absValue=0;
- for(unsigned int k=0;kabsValue)
- absValue=absolute;
- }
-
- if(absValue>absMax)
- absMax = absValue;
- // Update level approximately 10 times per second
- if (this->count++==10){
- currentLevelFullRange=absMax;
- this->count=0;
- // Highest value for a int16_t is 0x7fff = 32767
- // Divide with 1000 to get in the range of 0-32 which is the range of
- // the permutation vector
- int32_t position=absMax/1000;
- // Make it less likely that the bar stays at position 0. I.e. only if
- // its in the range 0-250 (instead of 0-1000)
- /*if ((position==0) && (absMax>250)){
- position=1;
- }*/
- currentLevel=permutation[position];
- // Decay the absolute maximum (divide by 4)
- absMax >>= 2;
- }
-}
diff --git a/submodules/libtgvoip/MediaStreamItf.h b/submodules/libtgvoip/MediaStreamItf.h
deleted file mode 100644
index c8b5acdcee..0000000000
--- a/submodules/libtgvoip/MediaStreamItf.h
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_MEDIASTREAMINPUT_H
-#define LIBTGVOIP_MEDIASTREAMINPUT_H
-
-#include
-#include
-#include
-#include
-#include "threading.h"
-#include "BlockingQueue.h"
-#include "Buffers.h"
-
-namespace tgvoip{
-
- class EchoCanceller;
-
-class MediaStreamItf{
-public:
- virtual void Start()=0;
- virtual void Stop()=0;
- void SetCallback(size_t (*f)(unsigned char*, size_t, void*), void* param);
-
-//protected:
- size_t InvokeCallback(unsigned char* data, size_t length);
-
-private:
- size_t (*callback)(unsigned char*, size_t, void*)=NULL;
- void* callbackParam;
-};
-
- class AudioMixer : public MediaStreamItf{
- public:
- AudioMixer();
- virtual ~AudioMixer();
- void SetOutput(MediaStreamItf* output);
- virtual void Start();
- virtual void Stop();
- void AddInput(std::shared_ptr input);
- void RemoveInput(std::shared_ptr input);
- void SetInputVolume(std::shared_ptr input, float volumeDB);
- void SetEchoCanceller(EchoCanceller* aec);
- private:
- void RunThread();
- struct MixerInput{
- std::shared_ptr source;
- float multiplier;
- };
- Mutex inputsMutex;
- void DoCallback(unsigned char* data, size_t length);
- static size_t OutputCallback(unsigned char* data, size_t length, void* arg);
- std::vector inputs;
- Thread* thread;
- BufferPool bufferPool;
- BlockingQueue processedQueue;
- Semaphore semaphore;
- EchoCanceller* echoCanceller;
- bool running;
- };
-
- class CallbackWrapper : public MediaStreamItf{
- public:
- CallbackWrapper(){};
- virtual ~CallbackWrapper(){};
- virtual void Start(){};
- virtual void Stop(){};
-
- };
-
- class AudioLevelMeter{
- public:
- AudioLevelMeter();
- float GetLevel();
- void Update(int16_t* samples, size_t count);
- private:
- int16_t absMax;
- int16_t count;
- int8_t currentLevel;
- int16_t currentLevelFullRange;
- };
-};
-
-
-#endif //LIBTGVOIP_MEDIASTREAMINPUT_H
diff --git a/submodules/libtgvoip/MessageThread.cpp b/submodules/libtgvoip/MessageThread.cpp
deleted file mode 100755
index 9af1441046..0000000000
--- a/submodules/libtgvoip/MessageThread.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// Created by Grishka on 17.06.2018.
-//
-
-#include
-#include
-#include
-#include
-#include
-
-#ifndef _WIN32
-#include
-#endif
-
-#include "MessageThread.h"
-#include "VoIPController.h"
-#include "logging.h"
-
-using namespace tgvoip;
-
-MessageThread::MessageThread() : Thread(std::bind(&MessageThread::Run, this)){
-
- SetName("MessageThread");
-
-#ifdef _WIN32
-#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP
- event=CreateEvent(NULL, false, false, NULL);
-#else
- event=CreateEventEx(NULL, NULL, 0, EVENT_ALL_ACCESS);
-#endif
-#else
- pthread_cond_init(&cond, NULL);
-#endif
-}
-
-MessageThread::~MessageThread(){
- Stop();
-#ifdef _WIN32
- CloseHandle(event);
-#else
- pthread_cond_destroy(&cond);
-#endif
-}
-
-void MessageThread::Stop(){
- if(running){
- running=false;
-#ifdef _WIN32
- SetEvent(event);
-#else
- pthread_cond_signal(&cond);
-#endif
- Join();
- }
-}
-
-void MessageThread::Run(){
- queueMutex.Lock();
- while(running){
- double currentTime=VoIPController::GetCurrentTime();
- double waitTimeout=queue.empty() ? DBL_MAX : (queue[0].deliverAt-currentTime);
- //LOGW("MessageThread wait timeout %f", waitTimeout);
- if(waitTimeout>0.0){
-#ifdef _WIN32
- queueMutex.Unlock();
- DWORD actualWaitTimeout=waitTimeout==DBL_MAX ? INFINITE : ((DWORD)round(waitTimeout*1000.0));
-#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP
- WaitForSingleObject(event, actualWaitTimeout);
-#else
- WaitForSingleObjectEx(event, actualWaitTimeout, false);
-#endif
- // we don't really care if a context switch happens here and anything gets added to the queue by another thread
- // since any new no-delay messages will get delivered on this iteration anyway
- queueMutex.Lock();
-#else
- if(waitTimeout!=DBL_MAX){
- struct timeval now;
- struct timespec timeout;
- gettimeofday(&now, NULL);
- waitTimeout+=now.tv_sec;
- waitTimeout+=(now.tv_usec/1000000.0);
- timeout.tv_sec=(time_t)(floor(waitTimeout));
- timeout.tv_nsec=(long)((waitTimeout-floor(waitTimeout))*1000000000.0);
- pthread_cond_timedwait(&cond, queueMutex.NativeHandle(), &timeout);
- }else{
- pthread_cond_wait(&cond, queueMutex.NativeHandle());
- }
-#endif
- }
- if(!running){
- queueMutex.Unlock();
- return;
- }
- currentTime=VoIPController::GetCurrentTime();
- std::vector msgsToDeliverNow;
- for(std::vector::iterator m=queue.begin();m!=queue.end();){
- if(m->deliverAt==0.0 || currentTime>=m->deliverAt){
- msgsToDeliverNow.push_back(*m);
- m=queue.erase(m);
- continue;
- }
- ++m;
- }
-
- for(Message& m:msgsToDeliverNow){
- //LOGI("MessageThread delivering %u", m.msg);
- cancelCurrent=false;
- if(m.deliverAt==0.0)
- m.deliverAt=VoIPController::GetCurrentTime();
- if(m.func!=nullptr){
- m.func();
- }
- if(!cancelCurrent && m.interval>0.0){
- m.deliverAt+=m.interval;
- InsertMessageInternal(m);
- }
- }
-
- }
- queueMutex.Unlock();
-}
-
-uint32_t MessageThread::Post(std::function func, double delay, double interval){
- assert(delay>=0);
- //LOGI("MessageThread post [function] delay %f", delay);
- if(!IsCurrent()){
- queueMutex.Lock();
- }
- double currentTime=VoIPController::GetCurrentTime();
- Message m{lastMessageID++, delay==0.0 ? 0.0 : (currentTime+delay), interval, func};
- InsertMessageInternal(m);
- if(!IsCurrent()){
-#ifdef _WIN32
- SetEvent(event);
-#else
- pthread_cond_signal(&cond);
-#endif
- queueMutex.Unlock();
- }
- return m.id;
-}
-
-void MessageThread::InsertMessageInternal(MessageThread::Message &m){
- if(queue.empty()){
- queue.push_back(m);
- }else{
- if(queue[0].deliverAt>m.deliverAt){
- queue.insert(queue.begin(), m);
- }else{
- std::vector::iterator insertAfter=queue.begin();
- for(; insertAfter!=queue.end(); ++insertAfter){
- std::vector::iterator next=std::next(insertAfter);
- if(next==queue.end() || (next->deliverAt>m.deliverAt && insertAfter->deliverAt<=m.deliverAt)){
- queue.insert(next, m);
- break;
- }
- }
- }
- }
-}
-
-void MessageThread::Cancel(uint32_t id){
- if(!IsCurrent()){
- queueMutex.Lock();
- }
-
- for(std::vector::iterator m=queue.begin();m!=queue.end();){
- if(m->id==id){
- m=queue.erase(m);
- }else{
- ++m;
- }
- }
-
- if(!IsCurrent()){
- queueMutex.Unlock();
- }
-}
-
-void MessageThread::CancelSelf(){
- assert(IsCurrent());
- cancelCurrent=true;
-}
diff --git a/submodules/libtgvoip/MessageThread.h b/submodules/libtgvoip/MessageThread.h
deleted file mode 100755
index 8feb9166dc..0000000000
--- a/submodules/libtgvoip/MessageThread.h
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// Created by Grishka on 17.06.2018.
-//
-
-#ifndef LIBTGVOIP_MESSAGETHREAD_H
-#define LIBTGVOIP_MESSAGETHREAD_H
-
-#include "threading.h"
-#include "utils.h"
-#include
-#include
-
-namespace tgvoip{
- class MessageThread : public Thread{
- public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(MessageThread);
- MessageThread();
- virtual ~MessageThread();
- uint32_t Post(std::function func, double delay=0, double interval=0);
- void Cancel(uint32_t id);
- void CancelSelf();
- void Stop();
-
- enum{
- INVALID_ID=0
- };
- private:
- struct Message{
- uint32_t id;
- double deliverAt;
- double interval;
- std::function func;
- };
-
- void Run();
- void InsertMessageInternal(Message& m);
-
- bool running=true;
- std::vector queue;
- Mutex queueMutex;
- uint32_t lastMessageID=1;
- bool cancelCurrent=false;
-
-#ifdef _WIN32
- HANDLE event;
-#else
- pthread_cond_t cond;
-#endif
- };
-}
-
-#endif //LIBTGVOIP_MESSAGETHREAD_H
diff --git a/submodules/libtgvoip/NetworkSocket.cpp b/submodules/libtgvoip/NetworkSocket.cpp
deleted file mode 100644
index 4ee314e913..0000000000
--- a/submodules/libtgvoip/NetworkSocket.cpp
+++ /dev/null
@@ -1,682 +0,0 @@
-//
-// Created by Grishka on 29.03.17.
-//
-
-#include "NetworkSocket.h"
-#include
-#include
-#include
-#include
-#if defined(_WIN32)
-#include "os/windows/NetworkSocketWinsock.h"
-#include
-#else
-#include "os/posix/NetworkSocketPosix.h"
-#endif
-#include "logging.h"
-#include "VoIPServerConfig.h"
-#include "VoIPController.h"
-#include "Buffers.h"
-
-#define MIN_UDP_PORT 16384
-#define MAX_UDP_PORT 32768
-
-using namespace tgvoip;
-
-NetworkSocket::NetworkSocket(NetworkProtocol protocol) : protocol(protocol){
- ipv6Timeout=ServerConfig::GetSharedInstance()->GetDouble("nat64_fallback_timeout", 3);
- failed=false;
-}
-
-NetworkSocket::~NetworkSocket(){
-
-}
-
-std::string NetworkSocket::GetLocalInterfaceInfo(IPv4Address *inet4addr, IPv6Address *inet6addr){
- std::string r="not implemented";
- return r;
-}
-
-uint16_t NetworkSocket::GenerateLocalPort(){
- uint16_t rnd;
- VoIPController::crypto.rand_bytes(reinterpret_cast(&rnd), 2);
- return (uint16_t) ((rnd%(MAX_UDP_PORT-MIN_UDP_PORT))+MIN_UDP_PORT);
-}
-
-void NetworkSocket::SetMaxPriority(){
-}
-
-bool NetworkSocket::IsFailed(){
- return failed;
-}
-
-NetworkSocket *NetworkSocket::Create(NetworkProtocol protocol){
-#ifndef _WIN32
- return new NetworkSocketPosix(protocol);
-#else
- return new NetworkSocketWinsock(protocol);
-#endif
-}
-
-IPv4Address *NetworkSocket::ResolveDomainName(std::string name){
-#ifndef _WIN32
- return NetworkSocketPosix::ResolveDomainName(name);
-#else
- return NetworkSocketWinsock::ResolveDomainName(name);
-#endif
-}
-
-void NetworkSocket::GenerateTCPO2States(unsigned char* buffer, TCPO2State* recvState, TCPO2State* sendState){
- memset(recvState, 0, sizeof(TCPO2State));
- memset(sendState, 0, sizeof(TCPO2State));
- unsigned char nonce[64];
- uint32_t *first = reinterpret_cast(nonce), *second = first + 1;
- uint32_t first1 = 0x44414548U, first2 = 0x54534f50U, first3 = 0x20544547U, first4 = 0x20544547U, first5 = 0xeeeeeeeeU;
- uint32_t second1 = 0;
- do {
- VoIPController::crypto.rand_bytes(nonce, sizeof(nonce));
- } while (*first == first1 || *first == first2 || *first == first3 || *first == first4 || *first == first5 || *second == second1 || *reinterpret_cast(nonce) == 0xef);
-
- // prepare encryption key/iv
- memcpy(sendState->key, nonce + 8, 32);
- memcpy(sendState->iv, nonce + 8 + 32, 16);
-
- // prepare decryption key/iv
- char reversed[48];
- memcpy(reversed, nonce + 8, sizeof(reversed));
- std::reverse(reversed, reversed + sizeof(reversed));
- memcpy(recvState->key, reversed, 32);
- memcpy(recvState->iv, reversed + 32, 16);
-
- // write protocol identifier
- *reinterpret_cast(nonce + 56) = 0xefefefefU;
- memcpy(buffer, nonce, 56);
- EncryptForTCPO2(nonce, sizeof(nonce), sendState);
- memcpy(buffer+56, nonce+56, 8);
-}
-
-void NetworkSocket::EncryptForTCPO2(unsigned char *buffer, size_t len, TCPO2State *state){
- VoIPController::crypto.aes_ctr_encrypt(buffer, len, state->key, state->iv, state->ecount, &state->num);
-}
-
-size_t NetworkSocket::Receive(unsigned char *buffer, size_t len){
- NetworkPacket pkt={0};
- pkt.data=buffer;
- pkt.length=len;
- Receive(&pkt);
- return pkt.length;
-}
-
-size_t NetworkSocket::Send(unsigned char *buffer, size_t len){
- NetworkPacket pkt={0};
- pkt.data=buffer;
- pkt.length=len;
- Send(&pkt);
- return pkt.length;
-}
-
-bool NetworkAddress::operator==(const NetworkAddress &other) const{
- const IPv4Address* self4=dynamic_cast(this);
- const IPv4Address* other4=dynamic_cast((NetworkAddress*)&other);
- if(self4 && other4){
- return self4->GetAddress()==other4->GetAddress();
- }
- const IPv6Address* self6=dynamic_cast(this);
- const IPv6Address* other6=dynamic_cast((NetworkAddress*)&other);
- if(self6 && other6){
- return memcmp(self6->GetAddress(), other6->GetAddress(), 16)==0;
- }
- return false;
-}
-
-bool NetworkAddress::operator!=(const NetworkAddress &other) const{
- return !(*this == other);
-}
-
-IPv4Address::IPv4Address(std::string addr){
-#ifndef _WIN32
- this->address=NetworkSocketPosix::StringToV4Address(addr);
-#else
- this->address=NetworkSocketWinsock::StringToV4Address(addr);
-#endif
-}
-
-IPv4Address::IPv4Address(uint32_t addr){
- this->address=addr;
-}
-
-IPv4Address::IPv4Address(){
- this->address=0;
-}
-
-
-std::string IPv4Address::ToString() const{
-#ifndef _WIN32
- return NetworkSocketPosix::V4AddressToString(address);
-#else
- return NetworkSocketWinsock::V4AddressToString(address);
-#endif
-}
-
-bool IPv4Address::PrefixMatches(const unsigned int prefix, const NetworkAddress &other) const{
- const IPv4Address* v4=dynamic_cast(&other);
- if(v4){
- uint32_t mask=0xFFFFFFFF << (32-prefix);
- return (address & mask) == (v4->address & mask);
- }
- return false;
-}
-
-/*sockaddr &IPv4Address::ToSockAddr(uint16_t port){
- sockaddr_in sa;
- sa.sin_family=AF_INET;
- sa.sin_addr=addr;
- sa.sin_port=port;
- return *((sockaddr *) &sa);
-}*/
-
-uint32_t IPv4Address::GetAddress() const{
- return address;
-}
-
-bool IPv4Address::IsEmpty() const{
- return address==0;
-}
-
-IPv6Address::IPv6Address(std::string addr){
-#ifndef _WIN32
- NetworkSocketPosix::StringToV6Address(addr, this->address);
-#else
- NetworkSocketWinsock::StringToV6Address(addr, this->address);
-#endif
-}
-
-IPv6Address::IPv6Address(const uint8_t* addr){
- memcpy(address, addr, 16);
-}
-
-IPv6Address::IPv6Address(){
- memset(address, 0, 16);
-}
-
-std::string IPv6Address::ToString() const{
-#ifndef _WIN32
- return NetworkSocketPosix::V6AddressToString(address);
-#else
- return NetworkSocketWinsock::V6AddressToString(address);
-#endif
-}
-
-bool IPv6Address::PrefixMatches(const unsigned int prefix, const NetworkAddress &other) const{
- return false;
-}
-
-bool IPv6Address::IsEmpty() const{
- const uint64_t* a=reinterpret_cast(address);
- return a[0]==0LL && a[1]==0LL;
-}
-
-/*sockaddr &IPv6Address::ToSockAddr(uint16_t port){
- sockaddr_in6 sa;
- sa.sin6_family=AF_INET6;
- sa.sin6_addr=addr;
- sa.sin6_port=port;
- return *((sockaddr *) &sa);
-}*/
-
-const uint8_t *IPv6Address::GetAddress() const{
- return address;
-}
-
-bool NetworkSocket::Select(std::vector &readFds, std::vector &writeFds, std::vector &errorFds, SocketSelectCanceller *canceller){
-#ifndef _WIN32
- return NetworkSocketPosix::Select(readFds, writeFds, errorFds, canceller);
-#else
- return NetworkSocketWinsock::Select(readFds, writeFds, errorFds, canceller);
-#endif
-}
-
-SocketSelectCanceller::~SocketSelectCanceller(){
-
-}
-
-SocketSelectCanceller *SocketSelectCanceller::Create(){
-#ifndef _WIN32
- return new SocketSelectCancellerPosix();
-#else
- return new SocketSelectCancellerWin32();
-#endif
-}
-
-
-
-NetworkSocketTCPObfuscated::NetworkSocketTCPObfuscated(NetworkSocket *wrapped) : NetworkSocketWrapper(PROTO_TCP){
- this->wrapped=wrapped;
-}
-
-NetworkSocketTCPObfuscated::~NetworkSocketTCPObfuscated(){
- if(wrapped)
- delete wrapped;
-}
-
-NetworkSocket *NetworkSocketTCPObfuscated::GetWrapped(){
- return wrapped;
-}
-
-void NetworkSocketTCPObfuscated::InitConnection(){
- unsigned char buf[64];
- GenerateTCPO2States(buf, &recvState, &sendState);
- wrapped->Send(buf, 64);
-}
-
-void NetworkSocketTCPObfuscated::Send(NetworkPacket *packet){
- BufferOutputStream os(packet->length+4);
- size_t len=packet->length/4;
- if(len<0x7F){
- os.WriteByte((unsigned char)len);
- }else{
- os.WriteByte(0x7F);
- os.WriteByte((unsigned char)(len & 0xFF));
- os.WriteByte((unsigned char)((len >> 8) & 0xFF));
- os.WriteByte((unsigned char)((len >> 16) & 0xFF));
- }
- os.WriteBytes(packet->data, packet->length);
- EncryptForTCPO2(os.GetBuffer(), os.GetLength(), &sendState);
- wrapped->Send(os.GetBuffer(), os.GetLength());
- //LOGD("Sent %u bytes", os.GetLength());
-}
-
-bool NetworkSocketTCPObfuscated::OnReadyToSend(){
- if(!initialized){
- //LOGV("Initializing TCPO2 connection");
- initialized=true;
- InitConnection();
- readyToSend=true;
- return false;
- }
- return wrapped->OnReadyToSend();
-}
-
-void NetworkSocketTCPObfuscated::Receive(NetworkPacket *packet){
- unsigned char len1;
- size_t packetLen=0;
- size_t offset=0;
- size_t len;
- len=wrapped->Receive(&len1, 1);
- if(len<=0){
- packet->length=0;
- return;
- }
- EncryptForTCPO2(&len1, 1, &recvState);
-
- if(len1<0x7F){
- packetLen=(size_t)len1*4;
- }else{
- unsigned char len2[3];
- len=wrapped->Receive(len2, 3);
- if(len<=0){
- packet->length=0;
- return;
- }
- EncryptForTCPO2(len2, 3, &recvState);
- packetLen=((size_t)len2[0] | ((size_t)len2[1] << 8) | ((size_t)len2[2] << 16))*4;
- }
-
- if(packetLen>packet->length){
- LOGW("packet too big to fit into buffer (%u vs %u)", (unsigned int)packetLen, (unsigned int)packet->length);
- packet->length=0;
- return;
- }
-
- while(offsetReceive(packet->data+offset, packetLen-offset);
- if(len<=0){
- packet->length=0;
- return;
- }
- offset+=len;
- }
- EncryptForTCPO2(packet->data, packetLen, &recvState);
- //packet->address=&itr->address;
- packet->length=packetLen;
- //packet->port=itr->port;
- packet->protocol=PROTO_TCP;
- packet->address=wrapped->GetConnectedAddress();
- packet->port=wrapped->GetConnectedPort();
-}
-
-void NetworkSocketTCPObfuscated::Open(){
-
-}
-
-void NetworkSocketTCPObfuscated::Close(){
- wrapped->Close();
-}
-
-void NetworkSocketTCPObfuscated::Connect(const NetworkAddress *address, uint16_t port){
- wrapped->Connect(address, port);
-}
-
-bool NetworkSocketTCPObfuscated::IsFailed(){
- return wrapped->IsFailed();
-}
-
-NetworkSocketSOCKS5Proxy::NetworkSocketSOCKS5Proxy(NetworkSocket *tcp, NetworkSocket *udp, std::string username, std::string password) : NetworkSocketWrapper(udp ? PROTO_UDP : PROTO_TCP){
- this->tcp=tcp;
- this->udp=udp;
- this->username=username;
- this->password=password;
- connectedAddress=NULL;
-}
-
-NetworkSocketSOCKS5Proxy::~NetworkSocketSOCKS5Proxy(){
- delete tcp;
- if(connectedAddress)
- delete connectedAddress;
-}
-
-void NetworkSocketSOCKS5Proxy::Send(NetworkPacket *packet){
- if(protocol==PROTO_TCP){
- tcp->Send(packet);
- }else if(protocol==PROTO_UDP){
- unsigned char buf[1500];
- BufferOutputStream out(buf, sizeof(buf));
- out.WriteInt16(0); // RSV
- out.WriteByte(0); // FRAG
- const IPv4Address* v4=dynamic_cast(packet->address);
- const IPv6Address* v6=dynamic_cast(packet->address);
- if(v4){
- out.WriteByte(1); // ATYP (IPv4)
- out.WriteInt32(v4->GetAddress());
- }else{
- out.WriteByte(4); // ATYP (IPv6)
- out.WriteBytes((unsigned char *) v6->GetAddress(), 16);
- }
- out.WriteInt16(htons(packet->port));
- out.WriteBytes(packet->data, packet->length);
- NetworkPacket p={0};
- p.data=buf;
- p.length=out.GetLength();
- p.address=connectedAddress;
- p.port=connectedPort;
- p.protocol=PROTO_UDP;
- udp->Send(&p);
- }
-}
-
-void NetworkSocketSOCKS5Proxy::Receive(NetworkPacket *packet){
- if(protocol==PROTO_TCP){
- tcp->Receive(packet);
- packet->address=connectedAddress;
- packet->port=connectedPort;
- }else if(protocol==PROTO_UDP){
- unsigned char buf[1500];
- NetworkPacket p={0};
- p.data=buf;
- p.length=sizeof(buf);
- udp->Receive(&p);
- if(p.length && p.address && *p.address==*connectedAddress && p.port==connectedPort){
- BufferInputStream in(buf, p.length);
- in.ReadInt16(); // RSV
- in.ReadByte(); // FRAG
- unsigned char atyp=in.ReadByte();
- if(atyp==1){ // IPv4
- lastRecvdV4=IPv4Address((uint32_t) in.ReadInt32());
- packet->address=&lastRecvdV4;
- }else if(atyp==4){ // IPv6
- unsigned char addr[16];
- in.ReadBytes(addr, 16);
- lastRecvdV6=IPv6Address(addr);
- packet->address=&lastRecvdV6;
- }
- packet->port=ntohs(in.ReadInt16());
- if(packet->length>=in.Remaining()){
- packet->length=in.Remaining();
- in.ReadBytes(packet->data, in.Remaining());
- }else{
- packet->length=0;
- LOGW("socks5: received packet too big");
- }
- }
- }
-}
-
-void NetworkSocketSOCKS5Proxy::Open(){
-
-}
-
-void NetworkSocketSOCKS5Proxy::Close(){
- tcp->Close();
-}
-
-void NetworkSocketSOCKS5Proxy::Connect(const NetworkAddress *address, uint16_t port){
- const IPv4Address* v4=dynamic_cast(address);
- const IPv6Address* v6=dynamic_cast(address);
- connectedAddress=v4 ? (NetworkAddress*)new IPv4Address(*v4) : (NetworkAddress*)new IPv6Address(*v6);
- connectedPort=port;
-}
-
-NetworkSocket *NetworkSocketSOCKS5Proxy::GetWrapped(){
- return protocol==PROTO_TCP ? tcp : udp;
-}
-
-void NetworkSocketSOCKS5Proxy::InitConnection(){
-}
-
-bool NetworkSocketSOCKS5Proxy::IsFailed(){
- return NetworkSocket::IsFailed() || tcp->IsFailed();
-}
-
-NetworkAddress *NetworkSocketSOCKS5Proxy::GetConnectedAddress(){
- return connectedAddress;
-}
-
-uint16_t NetworkSocketSOCKS5Proxy::GetConnectedPort(){
- return connectedPort;
-}
-
-bool NetworkSocketSOCKS5Proxy::OnReadyToSend(){
- //LOGV("on ready to send, state=%d", state);
- unsigned char buf[1024];
- if(state==ConnectionState::Initial){
- BufferOutputStream p(buf, sizeof(buf));
- p.WriteByte(5); // VER
- if(!username.empty()){
- p.WriteByte(2); // NMETHODS
- p.WriteByte(0); // no auth
- p.WriteByte(2); // user/pass
- }else{
- p.WriteByte(1); // NMETHODS
- p.WriteByte(0); // no auth
- }
- tcp->Send(buf, p.GetLength());
- state=ConnectionState::WaitingForAuthMethod;
- return false;
- }
- return udp ? udp->OnReadyToSend() : tcp->OnReadyToSend();
-}
-
-bool NetworkSocketSOCKS5Proxy::OnReadyToReceive(){
- //LOGV("on ready to receive state=%d", state);
- unsigned char buf[1024];
- if(state==ConnectionState::WaitingForAuthMethod){
- size_t l=tcp->Receive(buf, sizeof(buf));
- if(l<2 || tcp->IsFailed()){
- failed=true;
- return false;
- }
- BufferInputStream in(buf, l);
- unsigned char ver=in.ReadByte();
- unsigned char chosenMethod=in.ReadByte();
- LOGV("socks5: VER=%02X, METHOD=%02X", ver, chosenMethod);
- if(ver!=5){
- LOGW("socks5: incorrect VER in response");
- failed=true;
- return false;
- }
- if(chosenMethod==0){
- // connected, no further auth needed
- SendConnectionCommand();
- }else if(chosenMethod==2 && !username.empty()){
- BufferOutputStream p(buf, sizeof(buf));
- p.WriteByte(1); // VER
- p.WriteByte((unsigned char)(username.length()>255 ? 255 : username.length())); // ULEN
- p.WriteBytes((unsigned char*)username.c_str(), username.length()>255 ? 255 : username.length()); // UNAME
- p.WriteByte((unsigned char)(password.length()>255 ? 255 : password.length())); // PLEN
- p.WriteBytes((unsigned char*)password.c_str(), password.length()>255 ? 255 : password.length()); // PASSWD
- tcp->Send(buf, p.GetLength());
- state=ConnectionState::WaitingForAuthResult;
- }else{
- LOGW("socks5: unsupported auth method");
- failed=true;
- return false;
- }
- return false;
- }else if(state==ConnectionState::WaitingForAuthResult){
- size_t l=tcp->Receive(buf, sizeof(buf));
- if(l<2 || tcp->IsFailed()){
- failed=true;
- return false;
- }
- BufferInputStream in(buf, l);
- uint8_t ver=in.ReadByte();
- unsigned char status=in.ReadByte();
- LOGV("socks5: auth response VER=%02X, STATUS=%02X", ver, status);
- if(ver!=1){
- LOGW("socks5: auth response VER is incorrect");
- failed=true;
- return false;
- }
- if(status!=0){
- LOGW("socks5: username/password auth failed");
- failed=true;
- return false;
- }
- LOGV("socks5: authentication succeeded");
- SendConnectionCommand();
- return false;
- }else if(state==ConnectionState::WaitingForCommandResult){
- size_t l=tcp->Receive(buf, sizeof(buf));
- if(protocol==PROTO_TCP){
- if(l<2 || tcp->IsFailed()){
- LOGW("socks5: connect failed")
- failed=true;
- return false;
- }
- BufferInputStream in(buf, l);
- unsigned char ver=in.ReadByte();
- if(ver!=5){
- LOGW("socks5: connect: wrong ver in response");
- failed=true;
- return false;
- }
- unsigned char rep=in.ReadByte();
- if(rep!=0){
- LOGW("socks5: connect: failed with error %02X", rep);
- failed=true;
- return false;
- }
- LOGV("socks5: connect succeeded");
- state=ConnectionState::Connected;
- tcp=new NetworkSocketTCPObfuscated(tcp);
- readyToSend=true;
- return tcp->OnReadyToSend();
- }else if(protocol==PROTO_UDP){
- if(l<2 || tcp->IsFailed()){
- LOGW("socks5: udp associate failed");
- failed=true;
- return false;
- }
- try{
- BufferInputStream in(buf, l);
- unsigned char ver=in.ReadByte();
- unsigned char rep=in.ReadByte();
- if(ver!=5){
- LOGW("socks5: udp associate: wrong ver in response");
- failed=true;
- return false;
- }
- if(rep!=0){
- LOGW("socks5: udp associate failed with error %02X", rep);
- failed=true;
- return false;
- }
- in.ReadByte(); // RSV
- unsigned char atyp=in.ReadByte();
- if(atyp==1){
- uint32_t addr=(uint32_t) in.ReadInt32();
- connectedAddress=new IPv4Address(addr);
- }else if(atyp==3){
- unsigned char len=in.ReadByte();
- char domain[256];
- memset(domain, 0, sizeof(domain));
- in.ReadBytes((unsigned char*)domain, len);
- LOGD("address type is domain, address=%s", domain);
- connectedAddress=ResolveDomainName(std::string(domain));
- if(!connectedAddress){
- LOGW("socks5: failed to resolve domain name '%s'", domain);
- failed=true;
- return false;
- }
- }else if(atyp==4){
- unsigned char addr[16];
- in.ReadBytes(addr, 16);
- connectedAddress=new IPv6Address(addr);
- }else{
- LOGW("socks5: unknown address type %d", atyp);
- failed=true;
- return false;
- }
- connectedPort=(uint16_t)ntohs(in.ReadInt16());
- state=ConnectionState::Connected;
- readyToSend=true;
- LOGV("socks5: udp associate successful, given endpoint %s:%d", connectedAddress->ToString().c_str(), connectedPort);
- }catch(std::out_of_range& x){
- LOGW("socks5: udp associate response parse failed");
- failed=true;
- }
- }
- }
- return udp ? udp->OnReadyToReceive() : tcp->OnReadyToReceive();
-}
-
-void NetworkSocketSOCKS5Proxy::SendConnectionCommand(){
- unsigned char buf[1024];
- if(protocol==PROTO_TCP){
- BufferOutputStream out(buf, sizeof(buf));
- out.WriteByte(5); // VER
- out.WriteByte(1); // CMD (CONNECT)
- out.WriteByte(0); // RSV
- const IPv4Address* v4=dynamic_cast(connectedAddress);
- const IPv6Address* v6=dynamic_cast(connectedAddress);
- if(v4){
- out.WriteByte(1); // ATYP (IPv4)
- out.WriteInt32(v4->GetAddress());
- }else if(v6){
- out.WriteByte(4); // ATYP (IPv6)
- out.WriteBytes((unsigned char*)v6->GetAddress(), 16);
- }else{
- LOGW("socks5: unknown address type");
- failed=true;
- return;
- }
- out.WriteInt16(htons(connectedPort)); // DST.PORT
- tcp->Send(buf, out.GetLength());
- state=ConnectionState::WaitingForCommandResult;
- }else if(protocol==PROTO_UDP){
- LOGV("Sending udp associate");
- BufferOutputStream out(buf, sizeof(buf));
- out.WriteByte(5); // VER
- out.WriteByte(3); // CMD (UDP ASSOCIATE)
- out.WriteByte(0); // RSV
- out.WriteByte(1); // ATYP (IPv4)
- out.WriteInt32(0); // DST.ADDR
- out.WriteInt16(0); // DST.PORT
- tcp->Send(buf, out.GetLength());
- state=ConnectionState::WaitingForCommandResult;
- }
-}
-
-bool NetworkSocketSOCKS5Proxy::NeedSelectForSending(){
- return state==ConnectionState::Initial || state==ConnectionState::Connected;
-}
diff --git a/submodules/libtgvoip/NetworkSocket.h b/submodules/libtgvoip/NetworkSocket.h
deleted file mode 100644
index 67b134247f..0000000000
--- a/submodules/libtgvoip/NetworkSocket.h
+++ /dev/null
@@ -1,210 +0,0 @@
-//
-// Created by Grishka on 29.03.17.
-//
-
-#ifndef LIBTGVOIP_NETWORKSOCKET_H
-#define LIBTGVOIP_NETWORKSOCKET_H
-
-#include
-#include
-#include
-#include "utils.h"
-
-namespace tgvoip {
-
- enum NetworkProtocol{
- PROTO_UDP=0,
- PROTO_TCP
- };
-
- struct TCPO2State{
- unsigned char key[32];
- unsigned char iv[16];
- unsigned char ecount[16];
- uint32_t num;
- };
-
- class NetworkAddress{
- public:
- virtual std::string ToString() const =0;
- bool operator==(const NetworkAddress& other) const;
- bool operator!=(const NetworkAddress& other) const;
- virtual ~NetworkAddress()=default;
- virtual bool IsEmpty() const =0;
- virtual bool PrefixMatches(const unsigned int prefix, const NetworkAddress& other) const =0;
- };
-
- class IPv4Address : public NetworkAddress{
- public:
- IPv4Address(std::string addr);
- IPv4Address(uint32_t addr);
- IPv4Address();
- virtual std::string ToString() const override;
- uint32_t GetAddress() const;
- virtual bool IsEmpty() const override;
- virtual bool PrefixMatches(const unsigned int prefix, const NetworkAddress& other) const override;
-
- static const IPv4Address Broadcast(){
- return IPv4Address(0xFFFFFFFF);
- }
- private:
- uint32_t address;
- };
-
- class IPv6Address : public NetworkAddress{
- public:
- IPv6Address(std::string addr);
- IPv6Address(const uint8_t* addr);
- IPv6Address();
- virtual std::string ToString() const override;
- const uint8_t* GetAddress() const;
- virtual bool IsEmpty() const override;
- virtual bool PrefixMatches(const unsigned int prefix, const NetworkAddress& other) const override;
- private:
- uint8_t address[16];
- };
-
- struct NetworkPacket{
- unsigned char* data;
- size_t length;
- NetworkAddress* address;
- uint16_t port;
- NetworkProtocol protocol;
- };
- typedef struct NetworkPacket NetworkPacket;
-
- class SocketSelectCanceller{
- public:
- virtual ~SocketSelectCanceller();
- virtual void CancelSelect()=0;
- static SocketSelectCanceller* Create();
- };
-
- class NetworkSocket{
- public:
- friend class NetworkSocketPosix;
- friend class NetworkSocketWinsock;
-
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(NetworkSocket);
- NetworkSocket(NetworkProtocol protocol);
- virtual ~NetworkSocket();
- virtual void Send(NetworkPacket* packet)=0;
- virtual void Receive(NetworkPacket* packet)=0;
- size_t Receive(unsigned char* buffer, size_t len);
- size_t Send(unsigned char* buffer, size_t len);
- virtual void Open()=0;
- virtual void Close()=0;
- virtual uint16_t GetLocalPort(){ return 0; };
- virtual void Connect(const NetworkAddress* address, uint16_t port)=0;
- virtual std::string GetLocalInterfaceInfo(IPv4Address* inet4addr, IPv6Address* inet6addr);
- virtual void OnActiveInterfaceChanged(){};
- virtual NetworkAddress* GetConnectedAddress(){ return NULL; };
- virtual uint16_t GetConnectedPort(){ return 0; };
- virtual void SetTimeouts(int sendTimeout, int recvTimeout){};
-
- virtual bool IsFailed();
- virtual bool IsReadyToSend(){
- return readyToSend;
- }
- virtual bool OnReadyToSend(){ readyToSend=true; return true; };
- virtual bool OnReadyToReceive(){ return true; };
- void SetTimeout(double timeout){
- this->timeout=timeout;
- };
-
- static NetworkSocket* Create(NetworkProtocol protocol);
- static IPv4Address* ResolveDomainName(std::string name);
- static bool Select(std::vector& readFds, std::vector& writeFds, std::vector& errorFds, SocketSelectCanceller* canceller);
-
- protected:
- virtual uint16_t GenerateLocalPort();
- virtual void SetMaxPriority();
-
- static void GenerateTCPO2States(unsigned char* buffer, TCPO2State* recvState, TCPO2State* sendState);
- static void EncryptForTCPO2(unsigned char* buffer, size_t len, TCPO2State* state);
- double ipv6Timeout;
- unsigned char nat64Prefix[12];
- bool failed;
- bool readyToSend=false;
- double lastSuccessfulOperationTime=0.0;
- double timeout=0.0;
- NetworkProtocol protocol;
- };
-
- class NetworkSocketWrapper : public NetworkSocket{
- public:
- NetworkSocketWrapper(NetworkProtocol protocol) : NetworkSocket(protocol){};
- virtual ~NetworkSocketWrapper(){};
- virtual NetworkSocket* GetWrapped()=0;
- virtual void InitConnection()=0;
- virtual void SetNonBlocking(bool){};
- };
-
- class NetworkSocketTCPObfuscated : public NetworkSocketWrapper{
- public:
- NetworkSocketTCPObfuscated(NetworkSocket* wrapped);
- virtual ~NetworkSocketTCPObfuscated();
- virtual NetworkSocket* GetWrapped();
- virtual void InitConnection();
- virtual void Send(NetworkPacket *packet);
- virtual void Receive(NetworkPacket *packet);
- virtual void Open();
- virtual void Close();
- virtual void Connect(const NetworkAddress *address, uint16_t port);
- virtual bool OnReadyToSend();
-
- virtual bool IsFailed();
- virtual bool IsReadyToSend(){
- return readyToSend && wrapped->IsReadyToSend();
- };
-
- private:
- NetworkSocket* wrapped;
- TCPO2State recvState;
- TCPO2State sendState;
- bool initialized=false;
- };
-
- class NetworkSocketSOCKS5Proxy : public NetworkSocketWrapper{
- public:
- NetworkSocketSOCKS5Proxy(NetworkSocket* tcp, NetworkSocket* udp, std::string username, std::string password);
- virtual ~NetworkSocketSOCKS5Proxy();
- virtual void Send(NetworkPacket *packet);
- virtual void Receive(NetworkPacket *packet);
- virtual void Open();
- virtual void Close();
- virtual void Connect(const NetworkAddress *address, uint16_t port);
- virtual NetworkSocket *GetWrapped();
- virtual void InitConnection();
- virtual bool IsFailed();
- virtual NetworkAddress *GetConnectedAddress();
- virtual uint16_t GetConnectedPort();
- virtual bool OnReadyToSend();
- virtual bool OnReadyToReceive();
-
- bool NeedSelectForSending();
-
- private:
- void SendConnectionCommand();
- enum ConnectionState{
- Initial,
- WaitingForAuthMethod,
- WaitingForAuthResult,
- WaitingForCommandResult,
- Connected
- };
- NetworkSocket* tcp;
- NetworkSocket* udp;
- std::string username;
- std::string password;
- NetworkAddress* connectedAddress;
- uint16_t connectedPort;
- ConnectionState state=ConnectionState::Initial;
-
- IPv4Address lastRecvdV4;
- IPv6Address lastRecvdV6;
- };
-
-}
-
-#endif //LIBTGVOIP_NETWORKSOCKET_H
diff --git a/submodules/libtgvoip/OpusDecoder.cpp b/submodules/libtgvoip/OpusDecoder.cpp
deleted file mode 100755
index 7b2d7c8bfd..0000000000
--- a/submodules/libtgvoip/OpusDecoder.cpp
+++ /dev/null
@@ -1,286 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "OpusDecoder.h"
-#include "audio/Resampler.h"
-#include "logging.h"
-#include
-#include
-#include
-#include
-
-#include "VoIPController.h"
-
-#define PACKET_SIZE (960*2)
-
-using namespace tgvoip;
-
-tgvoip::OpusDecoder::OpusDecoder(const std::shared_ptr& dst, bool isAsync, bool needEC){
- dst->SetCallback(OpusDecoder::Callback, this);
- Initialize(isAsync, needEC);
-}
-
-tgvoip::OpusDecoder::OpusDecoder(const std::unique_ptr& dst, bool isAsync, bool needEC){
- dst->SetCallback(OpusDecoder::Callback, this);
- Initialize(isAsync, needEC);
-}
-
-tgvoip::OpusDecoder::OpusDecoder(MediaStreamItf* dst, bool isAsync, bool needEC){
- dst->SetCallback(OpusDecoder::Callback, this);
- Initialize(isAsync, needEC);
-}
-
-void tgvoip::OpusDecoder::Initialize(bool isAsync, bool needEC){
- async=isAsync;
- if(async){
- decodedQueue=new BlockingQueue(33);
- bufferPool=new BufferPool(PACKET_SIZE, 32);
- semaphore=new Semaphore(32, 0);
- }else{
- decodedQueue=NULL;
- bufferPool=NULL;
- semaphore=NULL;
- }
- dec=opus_decoder_create(48000, 1, NULL);
- if(needEC)
- ecDec=opus_decoder_create(48000, 1, NULL);
- else
- ecDec=NULL;
- buffer=(unsigned char *) malloc(8192);
- lastDecoded=NULL;
- outputBufferSize=0;
- echoCanceller=NULL;
- frameDuration=20;
- consecutiveLostPackets=0;
- enableDTX=false;
- silentPacketCount=0;
- levelMeter=NULL;
- nextLen=0;
- running=false;
- remainingDataLen=0;
- processedBuffer=NULL;
- prevWasEC=false;
- prevLastSample=0;
-}
-
-tgvoip::OpusDecoder::~OpusDecoder(){
- opus_decoder_destroy(dec);
- if(ecDec)
- opus_decoder_destroy(ecDec);
- free(buffer);
- if(bufferPool)
- delete bufferPool;
- if(decodedQueue)
- delete decodedQueue;
- if(semaphore)
- delete semaphore;
-}
-
-
-void tgvoip::OpusDecoder::SetEchoCanceller(EchoCanceller* canceller){
- echoCanceller=canceller;
-}
-
-size_t tgvoip::OpusDecoder::Callback(unsigned char *data, size_t len, void *param){
- return ((OpusDecoder*)param)->HandleCallback(data, len);
-}
-
-size_t tgvoip::OpusDecoder::HandleCallback(unsigned char *data, size_t len){
- if(async){
- if(!running){
- memset(data, 0, len);
- return 0;
- }
- if(outputBufferSize==0){
- outputBufferSize=len;
- int packetsNeeded;
- if(len>PACKET_SIZE)
- packetsNeeded=len/PACKET_SIZE;
- else
- packetsNeeded=1;
- packetsNeeded*=2;
- semaphore->Release(packetsNeeded);
- }
- assert(outputBufferSize==len && "output buffer size is supposed to be the same throughout callbacks");
- if(len==PACKET_SIZE){
- lastDecoded=(unsigned char *) decodedQueue->GetBlocking();
- if(!lastDecoded)
- return 0;
- memcpy(data, lastDecoded, PACKET_SIZE);
- bufferPool->Reuse(lastDecoded);
- semaphore->Release();
- if(silentPacketCount>0){
- silentPacketCount--;
- if(levelMeter)
- levelMeter->Update(reinterpret_cast(data), 0);
- return 0;
- }
- if(echoCanceller){
- echoCanceller->SpeakerOutCallback(data, PACKET_SIZE);
- }
- }else{
- LOGE("Opus decoder buffer length != 960 samples");
- abort();
- }
- }else{
- if(remainingDataLen==0 && silentPacketCount==0){
- int duration=DecodeNextFrame();
- remainingDataLen=(size_t) (duration/20*960*2);
- }
- if(silentPacketCount>0 || remainingDataLen==0 || !processedBuffer){
- if(silentPacketCount>0)
- silentPacketCount--;
- memset(data, 0, 960*2);
- if(levelMeter)
- levelMeter->Update(reinterpret_cast(data), 0);
- return 0;
- }
- memcpy(data, processedBuffer, 960*2);
- remainingDataLen-=960*2;
- if(remainingDataLen>0){
- memmove(processedBuffer, processedBuffer+960*2, remainingDataLen);
- }
- }
- if(levelMeter)
- levelMeter->Update(reinterpret_cast(data), len/2);
- return len;
-}
-
-
-void tgvoip::OpusDecoder::Start(){
- if(!async)
- return;
- running=true;
- thread=new Thread(std::bind(&tgvoip::OpusDecoder::RunThread, this));
- thread->SetName("opus_decoder");
- thread->SetMaxPriority();
- thread->Start();
-}
-
-void tgvoip::OpusDecoder::Stop(){
- if(!running || !async)
- return;
- running=false;
- semaphore->Release();
- thread->Join();
- delete thread;
-}
-
-void tgvoip::OpusDecoder::RunThread(){
- int i;
- LOGI("decoder: packets per frame %d", packetsPerFrame);
- while(running){
- int playbackDuration=DecodeNextFrame();
- for(i=0;iAcquire();
- if(!running){
- LOGI("==== decoder exiting ====");
- return;
- }
- unsigned char *buf=bufferPool->Get();
- if(buf){
- if(remainingDataLen>0){
- for(effects::AudioEffect*& effect:postProcEffects){
- effect->Process(reinterpret_cast(processedBuffer+(PACKET_SIZE*i)), 960);
- }
- memcpy(buf, processedBuffer+(PACKET_SIZE*i), PACKET_SIZE);
- }else{
- //LOGE("Error decoding, result=%d", size);
- memset(buf, 0, PACKET_SIZE);
- }
- decodedQueue->Put(buf);
- }else{
- LOGW("decoder: no buffers left!");
- }
- }
- }
-}
-
-int tgvoip::OpusDecoder::DecodeNextFrame(){
- int playbackDuration=0;
- bool isEC=false;
- size_t len=jitterBuffer->HandleOutput(buffer, 8192, 0, true, playbackDuration, isEC);
- bool fec=false;
- if(!len){
- fec=true;
- len=jitterBuffer->HandleOutput(buffer, 8192, 0, false, playbackDuration, isEC);
- //if(len)
- // LOGV("Trying FEC...");
- }
- int size;
- if(len){
- size=opus_decode(isEC ? ecDec : dec, buffer, len, (opus_int16 *) decodeBuffer, packetsPerFrame*960, fec ? 1 : 0);
- consecutiveLostPackets=0;
- if(prevWasEC!=isEC && size){
- // It turns out the waveforms generated by the PLC feature are also great to help smooth out the
- // otherwise audible transition between the frames from different decoders. Those are basically an extrapolation
- // of the previous successfully decoded data -- which is exactly what we need here.
- size=opus_decode(prevWasEC ? ecDec : dec, NULL, 0, (opus_int16*)nextBuffer, packetsPerFrame*960, 0);
- if(size){
- int16_t* plcSamples=reinterpret_cast(nextBuffer);
- int16_t* samples=reinterpret_cast(decodeBuffer);
- constexpr float coeffs[]={0.999802, 0.995062, 0.984031, 0.966778, 0.943413, 0.914084, 0.878975, 0.838309, 0.792344,
- 0.741368, 0.685706, 0.625708, 0.561754, 0.494249, 0.423619, 0.350311, 0.274788, 0.197527, 0.119018, 0.039757};
- for(int i=0;i<20;i++){
- samples[i]=(int16_t)round((plcSamples[i]*coeffs[i]+(float)samples[i]*(1.0-coeffs[i])));
- }
- }
- }
- prevWasEC=isEC;
- prevLastSample=decodeBuffer[size-1];
- }else{ // do packet loss concealment
- consecutiveLostPackets++;
- if(consecutiveLostPackets>2 && enableDTX){
- silentPacketCount+=packetsPerFrame;
- size=packetsPerFrame*960;
- }else{
- size=opus_decode(prevWasEC ? ecDec : dec, NULL, 0, (opus_int16 *) decodeBuffer, packetsPerFrame*960, 0);
- //LOGV("PLC");
- }
- }
- if(size<0)
- LOGW("decoder: opus_decode error %d", size);
- remainingDataLen=size;
- if(playbackDuration==80){
- processedBuffer=buffer;
- audio::Resampler::Rescale60To80((int16_t*) decodeBuffer, (int16_t*) processedBuffer);
- }else if(playbackDuration==40){
- processedBuffer=buffer;
- audio::Resampler::Rescale60To40((int16_t*) decodeBuffer, (int16_t*) processedBuffer);
- }else{
- processedBuffer=decodeBuffer;
- }
- return playbackDuration;
-}
-
-
-void tgvoip::OpusDecoder::SetFrameDuration(uint32_t duration){
- frameDuration=duration;
- packetsPerFrame=frameDuration/20;
-}
-
-
-void tgvoip::OpusDecoder::SetJitterBuffer(std::shared_ptr jitterBuffer){
- this->jitterBuffer=jitterBuffer;
-}
-
-void tgvoip::OpusDecoder::SetDTX(bool enable){
- enableDTX=enable;
-}
-
-void tgvoip::OpusDecoder::SetLevelMeter(AudioLevelMeter *levelMeter){
- this->levelMeter=levelMeter;
-}
-
-void tgvoip::OpusDecoder::AddAudioEffect(effects::AudioEffect *effect){
- postProcEffects.push_back(effect);
-}
-
-void tgvoip::OpusDecoder::RemoveAudioEffect(effects::AudioEffect *effect){
- std::vector::iterator i=std::find(postProcEffects.begin(), postProcEffects.end(), effect);
- if(i!=postProcEffects.end())
- postProcEffects.erase(i);
-}
diff --git a/submodules/libtgvoip/OpusDecoder.h b/submodules/libtgvoip/OpusDecoder.h
deleted file mode 100755
index 572649185a..0000000000
--- a/submodules/libtgvoip/OpusDecoder.h
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_OPUSDECODER_H
-#define LIBTGVOIP_OPUSDECODER_H
-
-
-#include "MediaStreamItf.h"
-#include "threading.h"
-#include "BlockingQueue.h"
-#include "Buffers.h"
-#include "EchoCanceller.h"
-#include "JitterBuffer.h"
-#include "utils.h"
-#include
-#include
-#include
-
-struct OpusDecoder;
-
-namespace tgvoip{
-class OpusDecoder {
-public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(OpusDecoder);
- virtual void Start();
-
- virtual void Stop();
-
- OpusDecoder(const std::shared_ptr& dst, bool isAsync, bool needEC);
- OpusDecoder(const std::unique_ptr& dst, bool isAsync, bool needEC);
- OpusDecoder(MediaStreamItf* dst, bool isAsync, bool needEC);
- virtual ~OpusDecoder();
- size_t HandleCallback(unsigned char* data, size_t len);
- void SetEchoCanceller(EchoCanceller* canceller);
- void SetFrameDuration(uint32_t duration);
- void SetJitterBuffer(std::shared_ptr jitterBuffer);
- void SetDTX(bool enable);
- void SetLevelMeter(AudioLevelMeter* levelMeter);
- void AddAudioEffect(effects::AudioEffect* effect);
- void RemoveAudioEffect(effects::AudioEffect* effect);
-
-private:
- void Initialize(bool isAsync, bool needEC);
- static size_t Callback(unsigned char* data, size_t len, void* param);
- void RunThread();
- int DecodeNextFrame();
- ::OpusDecoder* dec;
- ::OpusDecoder* ecDec;
- BlockingQueue* decodedQueue;
- BufferPool* bufferPool;
- unsigned char* buffer;
- unsigned char* lastDecoded;
- unsigned char* processedBuffer;
- size_t outputBufferSize;
- bool running;
- Thread* thread;
- Semaphore* semaphore;
- uint32_t frameDuration;
- EchoCanceller* echoCanceller;
- std::shared_ptr jitterBuffer;
- AudioLevelMeter* levelMeter;
- int consecutiveLostPackets;
- bool enableDTX;
- size_t silentPacketCount;
- std::vector postProcEffects;
- bool async;
- unsigned char nextBuffer[8192];
- unsigned char decodeBuffer[8192];
- size_t nextLen;
- unsigned int packetsPerFrame;
- ptrdiff_t remainingDataLen;
- bool prevWasEC;
- int16_t prevLastSample;
-};
-}
-
-#endif //LIBTGVOIP_OPUSDECODER_H
diff --git a/submodules/libtgvoip/OpusEncoder.cpp b/submodules/libtgvoip/OpusEncoder.cpp
deleted file mode 100755
index b50c16efcf..0000000000
--- a/submodules/libtgvoip/OpusEncoder.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#include "OpusEncoder.h"
-#include
-#include
-#include "logging.h"
-#include "VoIPServerConfig.h"
-#include
-
-namespace{
- int serverConfigValueToBandwidth(int config){
- switch(config){
- case 0:
- return OPUS_BANDWIDTH_NARROWBAND;
- case 1:
- return OPUS_BANDWIDTH_MEDIUMBAND;
- case 2:
- return OPUS_BANDWIDTH_WIDEBAND;
- case 3:
- return OPUS_BANDWIDTH_SUPERWIDEBAND;
- case 4:
- default:
- return OPUS_BANDWIDTH_FULLBAND;
- }
- }
-}
-
-tgvoip::OpusEncoder::OpusEncoder(MediaStreamItf *source, bool needSecondary):queue(11), bufferPool(960*2, 10){
- this->source=source;
- source->SetCallback(tgvoip::OpusEncoder::Callback, this);
- enc=opus_encoder_create(48000, 1, OPUS_APPLICATION_VOIP, NULL);
- opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
- opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(1));
- opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
- opus_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
- requestedBitrate=20000;
- currentBitrate=0;
- running=false;
- echoCanceller=NULL;
- complexity=10;
- frameDuration=20;
- levelMeter=NULL;
- vadNoVoiceBitrate=static_cast(ServerConfig::GetSharedInstance()->GetInt("audio_vad_no_voice_bitrate", 6000));
- vadModeVoiceBandwidth=serverConfigValueToBandwidth(ServerConfig::GetSharedInstance()->GetInt("audio_vad_bandwidth", 3));
- vadModeNoVoiceBandwidth=serverConfigValueToBandwidth(ServerConfig::GetSharedInstance()->GetInt("audio_vad_no_voice_bandwidth", 0));
- secondaryEnabledBandwidth=serverConfigValueToBandwidth(ServerConfig::GetSharedInstance()->GetInt("audio_extra_ec_bandwidth", 2));
- secondaryEncoderEnabled=false;
-
- if(needSecondary){
- secondaryEncoder=opus_encoder_create(48000, 1, OPUS_APPLICATION_VOIP, NULL);
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_COMPLEXITY(10));
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
- //opus_encoder_ctl(secondaryEncoder, OPUS_SET_VBR(0));
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BITRATE(8000));
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BANDWIDTH(secondaryEnabledBandwidth));
- }else{
- secondaryEncoder=NULL;
- }
-}
-
-tgvoip::OpusEncoder::~OpusEncoder(){
- opus_encoder_destroy(enc);
- if(secondaryEncoder)
- opus_encoder_destroy(secondaryEncoder);
-}
-
-void tgvoip::OpusEncoder::Start(){
- if(running)
- return;
- running=true;
- thread=new Thread(std::bind(&tgvoip::OpusEncoder::RunThread, this));
- thread->SetName("OpusEncoder");
- thread->Start();
- thread->SetMaxPriority();
-}
-
-void tgvoip::OpusEncoder::Stop(){
- if(!running)
- return;
- running=false;
- queue.Put(NULL);
- thread->Join();
- delete thread;
-}
-
-
-void tgvoip::OpusEncoder::SetBitrate(uint32_t bitrate){
- requestedBitrate=bitrate;
-}
-
-void tgvoip::OpusEncoder::Encode(int16_t* data, size_t len){
- if(requestedBitrate!=currentBitrate){
- opus_encoder_ctl(enc, OPUS_SET_BITRATE(requestedBitrate));
- currentBitrate=requestedBitrate;
- LOGV("opus_encoder: setting bitrate to %u", currentBitrate);
- }
- if(levelMeter)
- levelMeter->Update(data, len);
- if(secondaryEncoderEnabled!=wasSecondaryEncoderEnabled){
- wasSecondaryEncoderEnabled=secondaryEncoderEnabled;
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(secondaryEncoderEnabled ? secondaryEnabledBandwidth : OPUS_BANDWIDTH_FULLBAND));
- }
- int32_t r=opus_encode(enc, data, static_cast(len), buffer, 4096);
- if(r<=0){
- LOGE("Error encoding: %d", r);
- }else if(r==1){
- LOGW("DTX");
- }else if(running){
- //LOGV("Packet size = %d", r);
- int32_t secondaryLen=0;
- unsigned char secondaryBuffer[128];
- if(secondaryEncoderEnabled && secondaryEncoder){
- secondaryLen=opus_encode(secondaryEncoder, data, static_cast(len), secondaryBuffer, sizeof(secondaryBuffer));
- //LOGV("secondaryLen %d", secondaryLen);
- }
- InvokeCallback(buffer, (size_t)r, secondaryBuffer, (size_t)secondaryLen);
- }
-}
-
-size_t tgvoip::OpusEncoder::Callback(unsigned char *data, size_t len, void* param){
- OpusEncoder* e=(OpusEncoder*)param;
- unsigned char* buf=e->bufferPool.Get();
- if(buf){
- assert(len==960*2);
- memcpy(buf, data, 960*2);
- e->queue.Put(buf);
- }else{
- LOGW("opus_encoder: no buffer slots left");
- if(e->complexity>1){
- e->complexity--;
- opus_encoder_ctl(e->enc, OPUS_SET_COMPLEXITY(e->complexity));
- }
- }
- return 0;
-}
-
-
-uint32_t tgvoip::OpusEncoder::GetBitrate(){
- return requestedBitrate;
-}
-
-void tgvoip::OpusEncoder::SetEchoCanceller(EchoCanceller* aec){
- echoCanceller=aec;
-}
-
-void tgvoip::OpusEncoder::RunThread(){
- uint32_t bufferedCount=0;
- uint32_t packetsPerFrame=frameDuration/20;
- LOGV("starting encoder, packets per frame=%d", packetsPerFrame);
- int16_t* frame;
- if(packetsPerFrame>1)
- frame=(int16_t*) malloc(960*2*packetsPerFrame);
- else
- frame=NULL;
- bool frameHasVoice=false;
- bool wasVadMode=false;
- while(running){
- int16_t* packet=(int16_t*)queue.GetBlocking();
- if(packet){
- bool hasVoice=true;
- if(echoCanceller)
- echoCanceller->ProcessInput(packet, 960, hasVoice);
- if(!postProcEffects.empty()){
- for(effects::AudioEffect* effect:postProcEffects){
- effect->Process(packet, 960);
- }
- }
- if(packetsPerFrame==1){
- Encode(packet, 960);
- }else{
- memcpy(frame+(960*bufferedCount), packet, 960*2);
- frameHasVoice=frameHasVoice || hasVoice;
- bufferedCount++;
- if(bufferedCount==packetsPerFrame){
- if(vadMode){
- if(frameHasVoice){
- opus_encoder_ctl(enc, OPUS_SET_BITRATE(currentBitrate));
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(vadModeVoiceBandwidth));
- if(secondaryEncoder){
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BITRATE(currentBitrate));
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BANDWIDTH(vadModeVoiceBandwidth));
- }
- }else{
- opus_encoder_ctl(enc, OPUS_SET_BITRATE(vadNoVoiceBitrate));
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(vadModeNoVoiceBandwidth));
- if(secondaryEncoder){
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BITRATE(vadNoVoiceBitrate));
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BANDWIDTH(vadModeNoVoiceBandwidth));
- }
- }
- wasVadMode=true;
- }else if(wasVadMode){
- wasVadMode=false;
- opus_encoder_ctl(enc, OPUS_SET_BITRATE(currentBitrate));
- opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(secondaryEncoderEnabled ? secondaryEnabledBandwidth : OPUS_AUTO));
- if(secondaryEncoder){
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BITRATE(currentBitrate));
- opus_encoder_ctl(secondaryEncoder, OPUS_SET_BANDWIDTH(secondaryEnabledBandwidth));
- }
- }
- Encode(frame, 960*packetsPerFrame);
- bufferedCount=0;
- frameHasVoice=false;
- }
- }
- bufferPool.Reuse(reinterpret_cast(packet));
- }
- }
- if(frame)
- free(frame);
-}
-
-
-void tgvoip::OpusEncoder::SetOutputFrameDuration(uint32_t duration){
- frameDuration=duration;
-}
-
-
-void tgvoip::OpusEncoder::SetPacketLoss(int percent){
- packetLossPercent=std::min(20, percent);
- opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(packetLossPercent));
- opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(percent>0 && !secondaryEncoderEnabled ? 1 : 0));
-}
-
-int tgvoip::OpusEncoder::GetPacketLoss(){
- return packetLossPercent;
-}
-
-void tgvoip::OpusEncoder::SetDTX(bool enable){
- opus_encoder_ctl(enc, OPUS_SET_DTX(enable ? 1 : 0));
-}
-
-void tgvoip::OpusEncoder::SetLevelMeter(tgvoip::AudioLevelMeter *levelMeter){
- this->levelMeter=levelMeter;
-}
-
-void tgvoip::OpusEncoder::SetCallback(void (*f)(unsigned char *, size_t, unsigned char *, size_t, void *), void *param){
- callback=f;
- callbackParam=param;
-}
-
-void tgvoip::OpusEncoder::InvokeCallback(unsigned char *data, size_t length, unsigned char *secondaryData, size_t secondaryLength){
- callback(data, length, secondaryData, secondaryLength, callbackParam);
-}
-
-void tgvoip::OpusEncoder::SetSecondaryEncoderEnabled(bool enabled){
- secondaryEncoderEnabled=enabled;
-}
-
-void tgvoip::OpusEncoder::SetVadMode(bool vad){
- vadMode=vad;
-}
-void tgvoip::OpusEncoder::AddAudioEffect(effects::AudioEffect *effect){
- postProcEffects.push_back(effect);
-}
-
-void tgvoip::OpusEncoder::RemoveAudioEffect(effects::AudioEffect *effect){
- std::vector::iterator i=std::find(postProcEffects.begin(), postProcEffects.end(), effect);
- if(i!=postProcEffects.end())
- postProcEffects.erase(i);
-}
diff --git a/submodules/libtgvoip/OpusEncoder.h b/submodules/libtgvoip/OpusEncoder.h
deleted file mode 100755
index efb65cbcc2..0000000000
--- a/submodules/libtgvoip/OpusEncoder.h
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef LIBTGVOIP_OPUSENCODER_H
-#define LIBTGVOIP_OPUSENCODER_H
-
-
-#include "MediaStreamItf.h"
-#include "threading.h"
-#include "BlockingQueue.h"
-#include "Buffers.h"
-#include "EchoCanceller.h"
-#include "utils.h"
-
-#include
-
-struct OpusEncoder;
-
-namespace tgvoip{
-class OpusEncoder{
-public:
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(OpusEncoder);
- OpusEncoder(MediaStreamItf* source, bool needSecondary);
- virtual ~OpusEncoder();
- virtual void Start();
- virtual void Stop();
- void SetBitrate(uint32_t bitrate);
- void SetEchoCanceller(EchoCanceller* aec);
- void SetOutputFrameDuration(uint32_t duration);
- void SetPacketLoss(int percent);
- int GetPacketLoss();
- uint32_t GetBitrate();
- void SetDTX(bool enable);
- void SetLevelMeter(AudioLevelMeter* levelMeter);
- void SetCallback(void (*f)(unsigned char*, size_t, unsigned char*, size_t, void*), void* param);
- void SetSecondaryEncoderEnabled(bool enabled);
- void SetVadMode(bool vad);
- void AddAudioEffect(effects::AudioEffect* effect);
- void RemoveAudioEffect(effects::AudioEffect* effect);
- int GetComplexity(){
- return complexity;
- }
-
-private:
- static size_t Callback(unsigned char* data, size_t len, void* param);
- void RunThread();
- void Encode(int16_t* data, size_t len);
- void InvokeCallback(unsigned char* data, size_t length, unsigned char* secondaryData, size_t secondaryLength);
- MediaStreamItf* source;
- ::OpusEncoder* enc;
- ::OpusEncoder* secondaryEncoder;
- unsigned char buffer[4096];
- uint32_t requestedBitrate;
- uint32_t currentBitrate;
- Thread* thread;
- BlockingQueue queue;
- BufferPool bufferPool;
- EchoCanceller* echoCanceller;
- int complexity;
- bool running;
- uint32_t frameDuration;
- int packetLossPercent;
- AudioLevelMeter* levelMeter;
- bool secondaryEncoderEnabled;
- bool vadMode=false;
- uint32_t vadNoVoiceBitrate;
- std::vector postProcEffects;
- int secondaryEnabledBandwidth;
- int vadModeVoiceBandwidth;
- int vadModeNoVoiceBandwidth;
-
- bool wasSecondaryEncoderEnabled=false;
-
- void (*callback)(unsigned char*, size_t, unsigned char*, size_t, void*);
- void* callbackParam;
-};
-}
-
-#endif //LIBTGVOIP_OPUSENCODER_H
diff --git a/submodules/libtgvoip/PacketReassembler.cpp b/submodules/libtgvoip/PacketReassembler.cpp
deleted file mode 100644
index 9d2bdfeb05..0000000000
--- a/submodules/libtgvoip/PacketReassembler.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Created by Grishka on 19.03.2018.
-//
-
-#include "PacketReassembler.h"
-#include "logging.h"
-
-#include
-
-using namespace tgvoip;
-
-PacketReassembler::PacketReassembler(){
-
-}
-
-PacketReassembler::~PacketReassembler(){
-
-}
-
-void PacketReassembler::Reset(){
-
-}
-
-void PacketReassembler::AddFragment(Buffer pkt, unsigned int fragmentIndex, unsigned int fragmentCount, uint32_t pts, bool keyframe){
- for(Packet& packet:packets){
- if(packet.timestamp==pts){
- if(fragmentCount!=packet.partCount){
- LOGE("Received fragment total count %u inconsistent with previous %u", fragmentCount, packet.partCount);
- return;
- }
- packet.AddFragment(std::move(pkt), fragmentIndex);
- return;
- }
- }
-
- if(pts=fragmentCount){
- LOGE("Received fragment index %u is out of bounds %u", fragmentIndex, fragmentCount);
- return;
- }
- if(fragmentCount>255){
- LOGE("Received fragment total count too big %u", fragmentCount);
- return;
- }
-
- maxTimestamp=std::max(maxTimestamp, pts);
-
- Packet packet(fragmentCount);
- packet.timestamp=pts;
- packet.isKeyframe=keyframe;
- packet.receivedPartCount=0;
- packet.AddFragment(std::move(pkt), fragmentIndex);
-
- packets.push_back(std::move(packet));
- while(packets.size()>3){
- Packet&& old=std::move(packets[0]);
- packets.erase(packets.begin());
- if(old.receivedPartCount==old.partCount){
- Buffer buffer=old.Reassemble();
- callback(std::move(buffer), old.timestamp, old.isKeyframe);
- //LOGV("Packet %u reassembled", old.timestamp);
- }else{
- LOGW("Packet %u not reassembled (%u of %u)", old.timestamp, old.receivedPartCount, old.partCount);
- }
- }
-}
-
-void PacketReassembler::SetCallback(std::function callback){
- this->callback=callback;
-}
-
-void PacketReassembler::Packet::AddFragment(Buffer pkt, uint32_t fragmentIndex){
- //LOGV("Add fragment %u/%u to packet %u", fragmentIndex, partCount, timestamp);
- parts[fragmentIndex]=std::move(pkt);
- receivedPartCount++;
-}
-
-Buffer PacketReassembler::Packet::Reassemble(){
- if(partCount==1){
- return std::move(parts[0]);
- }
- BufferOutputStream out(10240);
- for(unsigned int i=0;i
-#include
-#include
-
-#include "Buffers.h"
-
-namespace tgvoip {
- class PacketReassembler{
- public:
- PacketReassembler();
- virtual ~PacketReassembler();
-
- void Reset();
- void AddFragment(Buffer pkt, unsigned int fragmentIndex, unsigned int fragmentCount, uint32_t pts, bool keyframe);
- void SetCallback(std::function callback);
-
- private:
- struct Packet{
- uint32_t timestamp;
- uint32_t partCount;
- uint32_t receivedPartCount;
- bool isKeyframe;
- Buffer* parts;
-
- TGVOIP_DISALLOW_COPY_AND_ASSIGN(Packet);
-
- Packet(Packet&& other) : timestamp(other.timestamp), partCount(other.partCount), receivedPartCount(other.receivedPartCount), isKeyframe(other.isKeyframe){
- parts=other.parts;
- other.parts=NULL;
- }
- Packet& operator=(Packet&& other){
- if(&other!=this){
- if(parts)
- delete[] parts;
- parts=other.parts;
- other.parts=NULL;
- timestamp=other.timestamp;
- partCount=other.partCount;
- receivedPartCount=other.receivedPartCount;
- isKeyframe=other.isKeyframe;
- }
- return *this;
- }
-
- Packet(uint32_t partCount) : partCount(partCount){
- parts=new Buffer[partCount];
- }
- ~Packet(){
- if(parts)
- delete[] parts;
- }
-
-
- void AddFragment(Buffer pkt, uint32_t fragmentIndex);
- Buffer Reassemble();
- };
- std::function callback;
- std::vector packets;
- uint32_t maxTimestamp=0;
- };
-}
-
-#endif //TGVOIP_PACKETREASSEMBLER_H
diff --git a/submodules/libtgvoip/PrivateDefines.h b/submodules/libtgvoip/PrivateDefines.h
deleted file mode 100644
index 10a1108011..0000000000
--- a/submodules/libtgvoip/PrivateDefines.h
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// Created by Grishka on 20.04.2018.
-//
-
-#ifndef TGVOIP_PRIVATEDEFINES_H
-#define TGVOIP_PRIVATEDEFINES_H
-
-#define PKT_INIT 1
-#define PKT_INIT_ACK 2
-#define PKT_STREAM_STATE 3
-#define PKT_STREAM_DATA 4
-#define PKT_UPDATE_STREAMS 5
-#define PKT_PING 6
-#define PKT_PONG 7
-#define PKT_STREAM_DATA_X2 8
-#define PKT_STREAM_DATA_X3 9
-#define PKT_LAN_ENDPOINT 10
-#define PKT_NETWORK_CHANGED 11
-#define PKT_SWITCH_PREF_RELAY 12
-#define PKT_SWITCH_TO_P2P 13
-#define PKT_NOP 14
-//#define PKT_GROUP_CALL_KEY 15 // replaced with 'extra' in 2.1 (protocol v6)
-//#define PKT_REQUEST_GROUP 16
-#define PKT_STREAM_EC 17
-
-#define IS_MOBILE_NETWORK(x) (x==NET_TYPE_GPRS || x==NET_TYPE_EDGE || x==NET_TYPE_3G || x==NET_TYPE_HSPA || x==NET_TYPE_LTE || x==NET_TYPE_OTHER_MOBILE)
-
-#define PROTOCOL_NAME 0x50567247 // "GrVP" in little endian (reversed here)
-#define PROTOCOL_VERSION 9
-#define MIN_PROTOCOL_VERSION 3
-
-#define STREAM_DATA_FLAG_LEN16 0x40
-#define STREAM_DATA_FLAG_HAS_MORE_FLAGS 0x80
-// Since the data can't be larger than the MTU anyway,
-// 5 top bits of data length are allocated for these flags
-#define STREAM_DATA_XFLAG_KEYFRAME (1 << 15)
-#define STREAM_DATA_XFLAG_FRAGMENTED (1 << 14)
-#define STREAM_DATA_XFLAG_EXTRA_FEC (1 << 13)
-
-#define STREAM_TYPE_AUDIO 1
-#define STREAM_TYPE_VIDEO 2
-
-#define FOURCC(a,b,c,d) ((uint32_t)d | ((uint32_t)c << 8) | ((uint32_t)b << 16) | ((uint32_t)a << 24))
-#define PRINT_FOURCC(x) (char)(x >> 24), (char)(x >> 16), (char)(x >> 8), (char)x
-
-#define CODEC_OPUS_OLD 1
-#define CODEC_OPUS FOURCC('O','P','U','S')
-
-#define CODEC_AVC FOURCC('A','V','C',' ')
-#define CODEC_HEVC FOURCC('H','E','V','C')
-#define CODEC_VP8 FOURCC('V','P','8','0')
-#define CODEC_VP9 FOURCC('V','P','9','0')
-#define CODEC_AV1 FOURCC('A','V','0','1')
-
-#define DEFAULT_MTU 1100
-
-/*flags:# voice_call_id:flags.2?int128 in_seq_no:flags.4?int out_seq_no:flags.4?int
- * recent_received_mask:flags.5?int proto:flags.3?int extra:flags.1?string raw_data:flags.0?string*/
-#define PFLAG_HAS_DATA 1
-#define PFLAG_HAS_EXTRA 2
-#define PFLAG_HAS_CALL_ID 4
-#define PFLAG_HAS_PROTO 8
-#define PFLAG_HAS_SEQ 16
-#define PFLAG_HAS_RECENT_RECV 32
-#define PFLAG_HAS_SENDER_TAG_HASH 64
-
-#define XPFLAG_HAS_EXTRA 1
-#define XPFLAG_HAS_RECV_TS 2
-
-#define EXTRA_TYPE_STREAM_FLAGS 1
-#define EXTRA_TYPE_STREAM_CSD 2
-#define EXTRA_TYPE_LAN_ENDPOINT 3
-#define EXTRA_TYPE_NETWORK_CHANGED 4
-#define EXTRA_TYPE_GROUP_CALL_KEY 5
-#define EXTRA_TYPE_REQUEST_GROUP 6
-#define EXTRA_TYPE_IPV6_ENDPOINT 7
-#define EXTRA_TYPE_BW_ESTIMATE 8
-#define EXTRA_TYPE_VIDEO_ROTATION 9
-
-#define STREAM_FLAG_ENABLED 1
-#define STREAM_FLAG_DTX 2
-#define STREAM_FLAG_EXTRA_EC 4
-
-#define STREAM_RFLAG_SUPPORTED 1
-
-#define INIT_FLAG_DATA_SAVING_ENABLED 1
-#define INIT_FLAG_GROUP_CALLS_SUPPORTED 2
-#define INIT_FLAG_VIDEO_SEND_SUPPORTED 4
-#define INIT_FLAG_VIDEO_RECV_SUPPORTED 8
-
-#define INIT_VIDEO_RES_NONE 0
-#define INIT_VIDEO_RES_240 1
-#define INIT_VIDEO_RES_360 2
-#define INIT_VIDEO_RES_480 3
-#define INIT_VIDEO_RES_720 4
-#define INIT_VIDEO_RES_1080 5
-#define INIT_VIDEO_RES_1440 6
-#define INIT_VIDEO_RES_4K 7
-
-#define TLID_DECRYPTED_AUDIO_BLOCK 0xDBF948C1
-#define TLID_SIMPLE_AUDIO_BLOCK 0xCC0D0E76
-#define TLID_UDP_REFLECTOR_PEER_INFO 0x27D9371C
-#define TLID_UDP_REFLECTOR_PEER_INFO_IPV6 0x83fc73b1
-#define TLID_UDP_REFLECTOR_SELF_INFO 0xc01572c7
-#define TLID_UDP_REFLECTOR_REQUEST_PACKETS_INFO 0x1a06fc96
-#define TLID_UDP_REFLECTOR_LAST_PACKETS_INFO 0x0e107305
-#define TLID_VECTOR 0x1cb5c415
-#define PAD4(x) (4-(x+(x<=253 ? 1 : 0))%4)
-
-#define MAX_RECENT_PACKETS 128
-
-#define MAX(a,b) (a>b ? a : b)
-#define MIN(a,b) (as2) && (s1-s2<=SEQ_MAX/2)) || ((s1SEQ_MAX/2));
-}
-
-#define NEED_RATE_FLAG_SHITTY_INTERNET_MODE 1
-#define NEED_RATE_FLAG_UDP_NA 2
-#define NEED_RATE_FLAG_UDP_BAD 4
-#define NEED_RATE_FLAG_RECONNECTING 8
-
-#define VIDEO_FRAME_FLAG_KEYFRAME 1
-
-#endif //TGVOIP_PRIVATEDEFINES_H
diff --git a/submodules/libtgvoip/UNLICENSE b/submodules/libtgvoip/UNLICENSE
deleted file mode 100644
index 00d2e135a7..0000000000
--- a/submodules/libtgvoip/UNLICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-For more information, please refer to
\ No newline at end of file
diff --git a/submodules/libtgvoip/VoIPController.cpp b/submodules/libtgvoip/VoIPController.cpp
deleted file mode 100755
index 407cec4904..0000000000
--- a/submodules/libtgvoip/VoIPController.cpp
+++ /dev/null
@@ -1,4015 +0,0 @@
-//
-// libtgvoip is free and unencumbered public domain software.
-// For more information, see http://unlicense.org or the UNLICENSE file
-// you should have received with this source code distribution.
-//
-
-#ifndef _WIN32
-#include
-#include
-#endif
-#include
-#include
-#include
-#include "VoIPController.h"
-#include "logging.h"
-#include "threading.h"
-#include "Buffers.h"
-#include "OpusEncoder.h"
-#include "OpusDecoder.h"
-#include "VoIPServerConfig.h"
-#include "PrivateDefines.h"
-#include "json11.hpp"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-inline int pad4(int x){
- int r=PAD4(x);
- if(r==4)
- return 0;
- return r;
-}
-
-
-using namespace tgvoip;
-using namespace std;
-
-#ifdef __APPLE__
-#include "os/darwin/AudioUnitIO.h"
-#include
-double VoIPController::machTimebase=0;
-uint64_t VoIPController::machTimestart=0;
-#endif
-
-#ifdef _WIN32
-int64_t VoIPController::win32TimeScale = 0;
-bool VoIPController::didInitWin32TimeScale = false;
-#endif
-
-#ifdef __ANDROID__
-#include "os/android/JNIUtilities.h"
-#include "os/android/AudioInputAndroid.h"
-extern jclass jniUtilitiesClass;
-#endif
-
-#if defined(TGVOIP_USE_CALLBACK_AUDIO_IO)
-#include "audio/AudioIOCallback.h"
-#endif
-
-#pragma mark - OpenSSL wrappers
-
-#ifndef TGVOIP_USE_CUSTOM_CRYPTO
-extern "C" {
-#include
-#include
-#include
-#include
-}
-
-void tgvoip_openssl_aes_ige_encrypt(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv){
- AES_KEY akey;
- AES_set_encrypt_key(key, 32*8, &akey);
- AES_ige_encrypt(in, out, length, &akey, iv, AES_ENCRYPT);
-}
-
-void tgvoip_openssl_aes_ige_decrypt(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv){
- AES_KEY akey;
- AES_set_decrypt_key(key, 32*8, &akey);
- AES_ige_encrypt(in, out, length, &akey, iv, AES_DECRYPT);
-}
-
-void tgvoip_openssl_rand_bytes(uint8_t* buffer, size_t len){
- RAND_bytes(buffer, len);
-}
-
-void tgvoip_openssl_sha1(uint8_t* msg, size_t len, uint8_t* output){
- SHA1(msg, len, output);
-}
-
-void tgvoip_openssl_sha256(uint8_t* msg, size_t len, uint8_t* output){
- SHA256(msg, len, output);
-}
-
-void tgvoip_openssl_aes_ctr_encrypt(uint8_t* inout, size_t length, uint8_t* key, uint8_t* iv, uint8_t* ecount, uint32_t* num){
- AES_KEY akey;
- AES_set_encrypt_key(key, 32*8, &akey);
- CRYPTO_ctr128_encrypt(inout, inout, length, &akey, iv, ecount, num, (block128_f) AES_encrypt);
-}
-
-void tgvoip_openssl_aes_cbc_encrypt(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv){
- AES_KEY akey;
- AES_set_encrypt_key(key, 256, &akey);
- AES_cbc_encrypt(in, out, length, &akey, iv, AES_ENCRYPT);
-}
-
-void tgvoip_openssl_aes_cbc_decrypt(uint8_t* in, uint8_t* out, size_t length, uint8_t* key, uint8_t* iv){
- AES_KEY akey;
- AES_set_decrypt_key(key, 256, &akey);
- AES_cbc_encrypt(in, out, length, &akey, iv, AES_DECRYPT);
-}
-
-CryptoFunctions VoIPController::crypto={
- tgvoip_openssl_rand_bytes,
- tgvoip_openssl_sha1,
- tgvoip_openssl_sha256,
- tgvoip_openssl_aes_ige_encrypt,
- tgvoip_openssl_aes_ige_decrypt,
- tgvoip_openssl_aes_ctr_encrypt,
- tgvoip_openssl_aes_cbc_encrypt,
- tgvoip_openssl_aes_cbc_decrypt
-
-};
-#else
-CryptoFunctions VoIPController::crypto; // set it yourself upon initialization
-#endif
-
-
-extern FILE* tgvoipLogFile;
-
-#pragma mark - Public API
-
-VoIPController::VoIPController() : activeNetItfName(""),
- currentAudioInput("default"),
- currentAudioOutput("default"),
- proxyAddress(""),
- proxyUsername(""),
- proxyPassword(""){
- seq=1;
- lastRemoteSeq=0;
- state=STATE_WAIT_INIT;
- audioInput=NULL;
- audioOutput=NULL;
- encoder=NULL;
- audioOutStarted=false;
- audioTimestampIn=0;
- audioTimestampOut=0;
- stopping=false;
- memset(recvPacketTimes, 0, sizeof(double)*32);
- memset(&stats, 0, sizeof(TrafficStats));
- lastRemoteAckSeq=0;
- lastSentSeq=0;
- recvLossCount=0;
- packetsReceived=0;
- waitingForAcks=false;
- networkType=NET_TYPE_UNKNOWN;
- echoCanceller=NULL;
- dontSendPackets=0;
- micMuted=false;
- waitingForRelayPeerInfo=false;
- allowP2p=true;
- dataSavingMode=false;
- publicEndpointsReqTime=0;
- connectionInitTime=0;
- lastRecvPacketTime=0;
- dataSavingRequestedByPeer=false;
- peerVersion=0;
- conctl=new CongestionControl();
- prevSendLossCount=0;
- receivedInit=false;
- receivedInitAck=false;
- statsDump=NULL;
- useTCP=false;
- useUDP=true;
- didAddTcpRelays=false;
- udpPingCount=0;
- lastUdpPingTime=0;
-
- proxyProtocol=PROXY_NONE;
- proxyPort=0;
- resolvedProxyAddress=NULL;
-
- selectCanceller=SocketSelectCanceller::Create();
- udpSocket=NetworkSocket::Create(PROTO_UDP);
- realUdpSocket=udpSocket;
- udpConnectivityState=UDP_UNKNOWN;
- echoCancellationStrength=1;
-
- peerCapabilities=0;
- callbacks={0};
- didReceiveGroupCallKey=false;
- didReceiveGroupCallKeyAck=false;
- didSendGroupCallKey=false;
- didSendUpgradeRequest=false;
- didInvokeUpgradeCallback=false;
-
- connectionMaxLayer=0;
- useMTProto2=false;
- setCurrentEndpointToTCP=false;
- useIPv6=false;
- peerIPv6Available=false;
- shittyInternetMode=false;
- didAddIPv6Relays=false;
- didSendIPv6Endpoint=false;
- unsentStreamPackets.store(0);
-
- sendThread=NULL;
- recvThread=NULL;
-
- maxAudioBitrate=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_max_bitrate", 20000);
- maxAudioBitrateGPRS=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_max_bitrate_gprs", 8000);
- maxAudioBitrateEDGE=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_max_bitrate_edge", 16000);
- maxAudioBitrateSaving=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_max_bitrate_saving", 8000);
- initAudioBitrate=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_init_bitrate", 16000);
- initAudioBitrateGPRS=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_init_bitrate_gprs", 8000);
- initAudioBitrateEDGE=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_init_bitrate_edge", 8000);
- initAudioBitrateSaving=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_init_bitrate_saving", 8000);
- audioBitrateStepIncr=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_bitrate_step_incr", 1000);
- audioBitrateStepDecr=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_bitrate_step_decr", 1000);
- minAudioBitrate=(uint32_t) ServerConfig::GetSharedInstance()->GetInt("audio_min_bitrate", 8000);
- relaySwitchThreshold=ServerConfig::GetSharedInstance()->GetDouble("relay_switch_threshold", 0.8);
- p2pToRelaySwitchThreshold=ServerConfig::GetSharedInstance()->GetDouble("p2p_to_relay_switch_threshold", 0.6);
- relayToP2pSwitchThreshold=ServerConfig::GetSharedInstance()->GetDouble("relay_to_p2p_switch_threshold", 0.8);
- reconnectingTimeout=ServerConfig::GetSharedInstance()->GetDouble("reconnecting_state_timeout", 2.0);
- needRateFlags=static_cast(ServerConfig::GetSharedInstance()->GetInt("rate_flags", 0xFFFFFFFF));
- rateMaxAcceptableRTT=ServerConfig::GetSharedInstance()->GetDouble("rate_min_rtt", 0.6);
- rateMaxAcceptableSendLoss=ServerConfig::GetSharedInstance()->GetDouble("rate_min_send_loss", 0.2);
- packetLossToEnableExtraEC=ServerConfig::GetSharedInstance()->GetDouble("packet_loss_for_extra_ec", 0.02);
- maxUnsentStreamPackets=static_cast(ServerConfig::GetSharedInstance()->GetInt("max_unsent_stream_packets", 2));
-
-#ifdef __APPLE__
- machTimestart=0;
-#endif
-
- shared_ptr stm=make_shared();
- stm->id=1;
- stm->type=STREAM_TYPE_AUDIO;
- stm->codec=CODEC_OPUS;
- stm->enabled=1;
- stm->frameDuration=60;
- outgoingStreams.push_back(stm);
-
-}
-
-VoIPController::~VoIPController(){
- LOGD("Entered VoIPController::~VoIPController");
- if(!stopping){
- LOGE("!!!!!!!!!!!!!!!!!!!! CALL controller->Stop() BEFORE DELETING THE CONTROLLER OBJECT !!!!!!!!!!!!!!!!!!!!!!!1");
- abort();
- }
- LOGD("before close socket");
- if(udpSocket)
- delete udpSocket;
- if(udpSocket!=realUdpSocket)
- delete realUdpSocket;
- LOGD("before delete audioIO");
- if(audioIO){
- delete audioIO;
- audioInput=NULL;
- audioOutput=NULL;
- }
- for(vector>::iterator _stm=incomingStreams.begin();_stm!=incomingStreams.end();++_stm){
- shared_ptr stm=*_stm;
- LOGD("before stop decoder");
- if(stm->decoder){
- stm->decoder->Stop();
- }
- }
- LOGD("before delete encoder");
- if(encoder){
- encoder->Stop();
- delete encoder;
- }
- LOGD("before delete echo canceller");
- if(echoCanceller){
- echoCanceller->Stop();
- delete echoCanceller;
- }
- delete conctl;
- if(statsDump)
- fclose(statsDump);
- if(resolvedProxyAddress)
- delete resolvedProxyAddress;
- delete selectCanceller;
- LOGD("Left VoIPController::~VoIPController");
- if(tgvoipLogFile){
- FILE* log=tgvoipLogFile;
- tgvoipLogFile=NULL;
- fclose(log);
- }
-}
-
-void VoIPController::Stop(){
- LOGD("Entered VoIPController::Stop");
- stopping=true;
- runReceiver=false;
- LOGD("before shutdown socket");
- if(udpSocket)
- udpSocket->Close();
- if(realUdpSocket!=udpSocket)
- realUdpSocket->Close();
- selectCanceller->CancelSelect();
- Buffer emptyBuf(0);
- //PendingOutgoingPacket emptyPacket{0, 0, 0, move(emptyBuf), 0};
- //sendQueue->Put(move(emptyPacket));
- LOGD("before join sendThread");
- if(sendThread){
- sendThread->Join();
- delete sendThread;
- }
- LOGD("before join recvThread");
- if(recvThread){
- recvThread->Join();
- delete recvThread;
- }
- LOGD("before stop messageThread");
- messageThread.Stop();
- {
- LOGD("Before stop audio I/O");
- MutexGuard m(audioIOMutex);
- if(audioInput){
- audioInput->Stop();
- audioInput->SetCallback(NULL, NULL);
- }
- if(audioOutput){
- audioOutput->Stop();
- audioOutput->SetCallback(NULL, NULL);
- }
- }
- LOGD("Left VoIPController::Stop [need rate = %d]", (int)needRate);
-}
-
-bool VoIPController::NeedRate(){
- return needRate && ServerConfig::GetSharedInstance()->GetBoolean("bad_call_rating", false);
-}
-
-void VoIPController::SetRemoteEndpoints(vector endpoints, bool allowP2p, int32_t connectionMaxLayer){
- LOGW("Set remote endpoints, allowP2P=%d, connectionMaxLayer=%u", allowP2p ? 1 : 0, connectionMaxLayer);
- preferredRelay=0;
- {
- MutexGuard m(endpointsMutex);
- this->endpoints.clear();
- didAddTcpRelays=false;
- useTCP=true;
- for(vector::iterator itrtr=endpoints.begin();itrtr!=endpoints.end();++itrtr){
- if(this->endpoints.find(itrtr->id)!=this->endpoints.end())
- LOGE("Endpoint IDs are not unique!");
- this->endpoints[itrtr->id]=*itrtr;
- if(currentEndpoint==0)
- currentEndpoint=itrtr->id;
- if(itrtr->type==Endpoint::Type::TCP_RELAY)
- didAddTcpRelays=true;
- if(itrtr->type==Endpoint::Type::UDP_RELAY)
- useTCP=false;
- LOGV("Adding endpoint: %s:%d, %s", itrtr->address.ToString().c_str(), itrtr->port, itrtr->type==Endpoint::Type::UDP_RELAY ? "UDP" : "TCP");
- }
- }
- preferredRelay=currentEndpoint;
- this->allowP2p=allowP2p;
- this->connectionMaxLayer=connectionMaxLayer;
- if(connectionMaxLayer>=74){
- useMTProto2=true;
- }
- AddIPv6Relays();
-}
-
-void VoIPController::Start(){
- LOGW("Starting voip controller");
- udpSocket->Open();
- if(udpSocket->IsFailed()){
- SetState(STATE_FAILED);
- return;
- }
-
- //SendPacket(NULL, 0, currentEndpoint);
-
- runReceiver=true;
- recvThread=new Thread(bind(&VoIPController::RunRecvThread, this));
- recvThread->SetName("VoipRecv");
- recvThread->Start();
-
- messageThread.Start();
-}
-
-
-void VoIPController::Connect(){
- assert(state!=STATE_WAIT_INIT_ACK);
- connectionInitTime=GetCurrentTime();
- if(config.initTimeout==0.0){
- LOGE("Init timeout is 0 -- did you forget to set config?");
- config.initTimeout=30.0;
- }
-
- //InitializeTimers();
- //SendInit();
- sendThread=new Thread(bind(&VoIPController::RunSendThread, this));
- sendThread->SetName("VoipSend");
- sendThread->Start();
-}
-
-void VoIPController::SetEncryptionKey(char *key, bool isOutgoing){
- memcpy(encryptionKey, key, 256);
- uint8_t sha1[SHA1_LENGTH];
- crypto.sha1((uint8_t*) encryptionKey, 256, sha1);
- memcpy(keyFingerprint, sha1+(SHA1_LENGTH-8), 8);
- uint8_t sha256[SHA256_LENGTH];
- crypto.sha256((uint8_t*) encryptionKey, 256, sha256);
- memcpy(callID, sha256+(SHA256_LENGTH-16), 16);
- this->isOutgoing=isOutgoing;
-}
-
-void VoIPController::SetNetworkType(int type){
- networkType=type;
- UpdateDataSavingState();
- UpdateAudioBitrateLimit();
- myIPv6=IPv6Address();
- string itfName=udpSocket->GetLocalInterfaceInfo(NULL, &myIPv6);
- LOGI("set network type: %s, active interface %s", NetworkTypeToString(type).c_str(), itfName.c_str());
- LOGI("Local IPv6 address: %s", myIPv6.ToString().c_str());
- if(IS_MOBILE_NETWORK(networkType)){
- CellularCarrierInfo carrier=GetCarrierInfo();
- if(!carrier.name.empty()){
- LOGI("Carrier: %s [%s; mcc=%s, mnc=%s]", carrier.name.c_str(), carrier.countryCode.c_str(), carrier.mcc.c_str(), carrier.mnc.c_str());
- }
- }
- if(itfName!=activeNetItfName){
- udpSocket->OnActiveInterfaceChanged();
- LOGI("Active network interface changed: %s -> %s", activeNetItfName.c_str(), itfName.c_str());
- bool isFirstChange=activeNetItfName.length()==0 && state!=STATE_ESTABLISHED && state!=STATE_RECONNECTING;
- activeNetItfName=itfName;
- if(isFirstChange)
- return;
- wasNetworkHandover=true;
- if(currentEndpoint){
- const Endpoint& _currentEndpoint=endpoints.at(currentEndpoint);
- const Endpoint& _preferredRelay=endpoints.at(preferredRelay);
- if(_currentEndpoint.type!=Endpoint::Type::UDP_RELAY){
- if(_preferredRelay.type==Endpoint::Type::UDP_RELAY)
- currentEndpoint=preferredRelay;
- MutexGuard m(endpointsMutex);
- constexpr int64_t lanID=(int64_t)(FOURCC('L','A','N','4')) << 32;
- endpoints.erase(lanID);
- for(pair& e:endpoints){
- Endpoint& endpoint=e.second;
- if(endpoint.type==Endpoint::Type::UDP_RELAY && useTCP){
- useTCP=false;
- if(_preferredRelay.type==Endpoint::Type::TCP_RELAY){
- preferredRelay=currentEndpoint=endpoint.id;
- }
- }else if(endpoint.type==Endpoint::Type::TCP_RELAY && endpoint.socket){
- endpoint.socket->Close();
- //delete endpoint.socket;
- //endpoint.socket=NULL;
- }
- //if(endpoint->type==Endpoint::Type::UDP_P2P_INET){
- endpoint.averageRTT=0;
- endpoint.rtts.Reset();
- //}
- }
- }
- }
- lastUdpPingTime=0;
- if(proxyProtocol==PROXY_SOCKS5)
- InitUDPProxy();
- if(allowP2p && currentEndpoint){
- SendPublicEndpointsRequest();
- }
- BufferOutputStream s(4);
- s.WriteInt32(dataSavingMode ? INIT_FLAG_DATA_SAVING_ENABLED : 0);
- if(peerVersion<6){
- SendPacketReliably(PKT_NETWORK_CHANGED, s.GetBuffer(), s.GetLength(), 1, 20);
- }else{
- Buffer buf(move(s));
- SendExtra(buf, EXTRA_TYPE_NETWORK_CHANGED);
- }
- needReInitUdpProxy=true;
- selectCanceller->CancelSelect();
- didSendIPv6Endpoint=false;
-
- AddIPv6Relays();
- ResetUdpAvailability();
- ResetEndpointPingStats();
-
- }
-}
-
-double VoIPController::GetAverageRTT(){
- if(lastSentSeq>=lastRemoteAckSeq){
- uint32_t diff=lastSentSeq-lastRemoteAckSeq;
- //LOGV("rtt diff=%u", diff);
- if(diff<32){
- double res=0;
- int count=0;
- /*for(i=diff;i<32;i++){
- if(remoteAcks[i-diff]>0){
- res+=(remoteAcks[i-diff]-sentPacketTimes[i]);
- count++;
- }
- }*/
- MutexGuard m(queuedPacketsMutex);
- for(std::vector::iterator itr=recentOutgoingPackets.begin();itr!=recentOutgoingPackets.end();++itr){
- if(itr->ackTime>0){
- res+=(itr->ackTime-itr->sendTime);
- count++;
- }
- }
- if(count>0)
- res/=count;
- return res;
- }
- }
- return 999;
-}
-
-void VoIPController::SetMicMute(bool mute){
- if(micMuted==mute)
- return;
- micMuted=mute;
- if(audioInput){
- if(mute)
- audioInput->Stop();
- else
- audioInput->Start();
- if(!audioInput->IsInitialized()){
- lastError=ERROR_AUDIO_IO;
- SetState(STATE_FAILED);
- return;
- }
- }
- if(echoCanceller)
- echoCanceller->Enable(!mute);
- if(state==STATE_ESTABLISHED){
- for(shared_ptr& s:outgoingStreams){
- if(s->type==STREAM_TYPE_AUDIO){
- s->enabled=!mute;
- if(peerVersion<6){
- unsigned char buf[2];
- buf[0]=s->id;
- buf[1]=(char) (mute ? 0 : 1);
- SendPacketReliably(PKT_STREAM_STATE, buf, 2, .5f, 20);
- }else{
- SendStreamFlags(*s);
- }
- }
- }
- }
- if(mute){
- if(noStreamsNopID==MessageThread::INVALID_ID)
- noStreamsNopID=messageThread.Post(std::bind(&VoIPController::SendNopPacket, this), 0.2, 0.2);
- }else{
- if(noStreamsNopID!=MessageThread::INVALID_ID){
- messageThread.Cancel(noStreamsNopID);
- noStreamsNopID=MessageThread::INVALID_ID;
- }
- }
-}
-
-string VoIPController::GetDebugString(){
- string r="Remote endpoints: \n";
- char buffer[2048];
- MutexGuard m(endpointsMutex);
- for(pair& _e:endpoints){
- Endpoint& endpoint=_e.second;
- const char* type;
- switch(endpoint.type){
- case Endpoint::Type::UDP_P2P_INET:
- type="UDP_P2P_INET";
- break;
- case Endpoint::Type::UDP_P2P_LAN:
- type="UDP_P2P_LAN";
- break;
- case Endpoint::Type::UDP_RELAY:
- type="UDP_RELAY";
- break;
- case Endpoint::Type::TCP_RELAY:
- type="TCP_RELAY";
- break;
- default:
- type="UNKNOWN";
- break;
- }
- snprintf(buffer, sizeof(buffer), "%s:%u %dms %d 0x%" PRIx64 " [%s%s]\n", endpoint.address.IsEmpty() ? ("["+endpoint.v6address.ToString()+"]").c_str() : endpoint.address.ToString().c_str(), endpoint.port, (int)(endpoint.averageRTT*1000), endpoint.udpPongCount, (uint64_t)endpoint.id, type, currentEndpoint==endpoint.id ? ", IN_USE" : "");
- r+=buffer;
- }
- if(shittyInternetMode){
- snprintf(buffer, sizeof(buffer), "ShittyInternetMode: level %d\n", extraEcLevel);
- r+=buffer;
- }
- double avgLate[3];
- shared_ptr stm=GetStreamByType(STREAM_TYPE_AUDIO, false);
- shared_ptr jitterBuffer;
- if(stm)
- jitterBuffer=stm->jitterBuffer;
- if(jitterBuffer)
- jitterBuffer->GetAverageLateCount(avgLate);
- else
- memset(avgLate, 0, 3*sizeof(double));
- snprintf(buffer, sizeof(buffer),
- "Jitter buffer: %d/%.2f | %.1f, %.1f, %.1f\n"
- "RTT avg/min: %d/%d\n"
- "Congestion window: %d/%d bytes\n"
- "Key fingerprint: %02hhX%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX%s\n"
- "Last sent/ack'd seq: %u/%u\n"
- "Last recvd seq: %u\n"
- "Send/recv losses: %u/%u (%d%%)\n"
- "Audio bitrate: %d kbit\n"
- "Outgoing queue: %u\n"
- // "Packet grouping: %d\n"
- "Frame size out/in: %d/%d\n"
- "Bytes sent/recvd: %llu/%llu",
- jitterBuffer ? jitterBuffer->GetMinPacketCount() : 0, jitterBuffer ? jitterBuffer->GetAverageDelay() : 0, avgLate[0], avgLate[1], avgLate[2],
- // (int)(GetAverageRTT()*1000), 0,
- (int)(conctl->GetAverageRTT()*1000), (int)(conctl->GetMinimumRTT()*1000),
- int(conctl->GetInflightDataSize()), int(conctl->GetCongestionWindow()),
- keyFingerprint[0],keyFingerprint[1],keyFingerprint[2],keyFingerprint[3],keyFingerprint[4],keyFingerprint[5],keyFingerprint[6],keyFingerprint[7],
- useMTProto2 ? " (MTProto2.0)" : "",
- lastSentSeq, lastRemoteAckSeq, lastRemoteSeq,
- conctl->GetSendLossCount(), recvLossCount, encoder ? encoder->GetPacketLoss() : 0,
- encoder ? (encoder->GetBitrate()/1000) : 0,
- static_cast(unsentStreamPackets),
-// audioPacketGrouping,
- outgoingStreams[0]->frameDuration, incomingStreams.size()>0 ? incomingStreams[0]->frameDuration : 0,
- (long long unsigned int)(stats.bytesSentMobile+stats.bytesSentWifi),
- (long long unsigned int)(stats.bytesRecvdMobile+stats.bytesRecvdWifi));
- r+=buffer;
- return r;
-}
-
-const char* VoIPController::GetVersion(){
- return LIBTGVOIP_VERSION;
-}
-
-
-int64_t VoIPController::GetPreferredRelayID(){
- return preferredRelay;
-}
-
-
-int VoIPController::GetLastError(){
- return lastError;
-}
-
-
-void VoIPController::GetStats(TrafficStats *stats){
- memcpy(stats, &this->stats, sizeof(TrafficStats));
-}
-
-string VoIPController::GetDebugLog(){
- map network{
- {"type", NetworkTypeToString(networkType)}
- };
- if(IS_MOBILE_NETWORK(networkType)){
- CellularCarrierInfo carrier=GetCarrierInfo();
- if(!carrier.name.empty()){
- network["carrier"]=carrier.name;
- network["country"]=carrier.countryCode;
- network["mcc"]=carrier.mcc;
- network["mnc"]=carrier.mnc;
- }
- }else if(networkType==NET_TYPE_WIFI){
-#ifdef __ANDROID__
- jni::DoWithJNI([&](JNIEnv* env){
- jmethodID getWifiInfoMethod=env->GetStaticMethodID(jniUtilitiesClass, "getWifiInfo", "()[I");
- jintArray res=static_cast(env->CallStaticObjectMethod(jniUtilitiesClass, getWifiInfoMethod));
- if(res){
- jint* wifiInfo=env->GetIntArrayElements(res, NULL);
- network["rssi"]=wifiInfo[0];
- network["link_speed"]=wifiInfo[1];
- env->ReleaseIntArrayElements(res, wifiInfo, JNI_ABORT);
- }
- });
-#endif
- }
- /*vector lpkts;
- for(DebugLoggedPacket& lpkt:debugLoggedPackets){
- lpkts.push_back(json11::Json::array{lpkt.timestamp, lpkt.seq, lpkt.length});
- }
- return json11::Json(json11::Json::object{
- {"log_type", "out_packet_stats"},
- {"libtgvoip_version", LIBTGVOIP_VERSION},
- {"network", network},
- {"protocol_version", std::min(peerVersion, PROTOCOL_VERSION)},
- {"total_losses", json11::Json::object{
- {"s", (int32_t)conctl->GetSendLossCount()},
- {"r", (int32_t)recvLossCount}
- }},
- {"call_duration", GetCurrentTime()-connectionInitTime},
- {"out_packet_stats", lpkts}
- }).dump();*/
-
- string p2pType="none";
- Endpoint& cur=endpoints[currentEndpoint];
- if(cur.type==Endpoint::Type::UDP_P2P_INET)
- p2pType=cur.IsIPv6Only() ? "inet6" : "inet";
- else if(cur.type==Endpoint::Type::UDP_P2P_LAN)
- p2pType="lan";
-
- vector problems;
- if(lastError==ERROR_TIMEOUT)
- problems.push_back("timeout");
- if(wasReconnecting)
- problems.push_back("reconnecting");
- if(wasExtraEC)
- problems.push_back("extra_ec");
- if(wasEncoderLaggy)
- problems.push_back("encoder_lag");
- if(!wasEstablished)
- problems.push_back("not_inited");
- if(wasNetworkHandover)
- problems.push_back("network_handover");
-
- ostringstream prefRelay;
- prefRelay << preferredRelay;
-
- return json11::Json(json11::Json::object{
- {"log_type", "call_stats"},
- {"libtgvoip_version", LIBTGVOIP_VERSION},
- {"network", network},
- {"protocol_version", std::min(peerVersion, PROTOCOL_VERSION)},
- {"udp_avail", udpConnectivityState==UDP_AVAILABLE},
- {"tcp_used", useTCP},
- {"relay_rtt", (int)(endpoints[preferredRelay].averageRTT*1000.0)},
- {"p2p_type", p2pType},
- {"rtt", (int)(endpoints[currentEndpoint].averageRTT*1000.0)},
- {"packet_stats", json11::Json::object{
- {"out", (int)seq},
- {"in", (int)packetsReceived},
- {"lost_out", (int)conctl->GetSendLossCount()},
- {"lost_in", (int)recvLossCount}
- }},
- {"problems", problems},
- {"pref_relay", prefRelay.str()}
- }).dump();
-}
-
-vector VoIPController::EnumerateAudioInputs(){
- vector devs;
- audio::AudioInput::EnumerateDevices(devs);
- return devs;
-}
-
-vector VoIPController::EnumerateAudioOutputs(){
- vector devs;
- audio::AudioOutput::EnumerateDevices(devs);
- return devs;
-}
-
-void VoIPController::SetCurrentAudioInput(string id){
- currentAudioInput=id;
- if(audioInput)
- audioInput->SetCurrentDevice(id);
-}
-
-void VoIPController::SetCurrentAudioOutput(string id){
- currentAudioOutput=id;
- if(audioOutput)
- audioOutput->SetCurrentDevice(id);
-}
-
-string VoIPController::GetCurrentAudioInputID(){
- return currentAudioInput;
-}
-
-string VoIPController::GetCurrentAudioOutputID(){
- return currentAudioOutput;
-}
-
-void VoIPController::SetProxy(int protocol, string address, uint16_t port, string username, string password){
- proxyProtocol=protocol;
- proxyAddress=address;
- proxyPort=port;
- proxyUsername=username;
- proxyPassword=password;
-}
-
-int VoIPController::GetSignalBarsCount(){
- return signalBarsHistory.NonZeroAverage();
-}
-
-void VoIPController::SetCallbacks(VoIPController::Callbacks callbacks){
- this->callbacks=callbacks;
- if(callbacks.connectionStateChanged)
- callbacks.connectionStateChanged(this, state);
-}
-
-void VoIPController::SetAudioOutputGainControlEnabled(bool enabled){
- LOGD("New output AGC state: %d", enabled);
-}
-
-uint32_t VoIPController::GetPeerCapabilities(){
- return peerCapabilities;
-}
-
-void VoIPController::SendGroupCallKey(unsigned char *key){
- if(!(peerCapabilities & TGVOIP_PEER_CAP_GROUP_CALLS)){
- LOGE("Tried to send group call key but peer isn't capable of them");
- return;
- }
- if(didSendGroupCallKey){
- LOGE("Tried to send a group call key repeatedly");
- return;
- }
- if(!isOutgoing){
- LOGE("You aren't supposed to send group call key in an incoming call, use VoIPController::RequestCallUpgrade() instead");
- return;
- }
- didSendGroupCallKey=true;
- Buffer buf(256);
- buf.CopyFrom(key, 0, 256);
- SendExtra(buf, EXTRA_TYPE_GROUP_CALL_KEY);
-}
-
-void VoIPController::RequestCallUpgrade(){
- if(!(peerCapabilities & TGVOIP_PEER_CAP_GROUP_CALLS)){
- LOGE("Tried to send group call key but peer isn't capable of them");
- return;
- }
- if(didSendUpgradeRequest){
- LOGE("Tried to send upgrade request repeatedly");
- return;
- }
- if(isOutgoing){
- LOGE("You aren't supposed to send an upgrade request in an outgoing call, generate an encryption key and use VoIPController::SendGroupCallKey instead");
- return;
- }
- didSendUpgradeRequest=true;
- Buffer empty(0);
- SendExtra(empty, EXTRA_TYPE_REQUEST_GROUP);
-}
-
-void VoIPController::SetEchoCancellationStrength(int strength){
- echoCancellationStrength=strength;
- if(echoCanceller)
- echoCanceller->SetAECStrength(strength);
-}
-
-#if defined(TGVOIP_USE_CALLBACK_AUDIO_IO)
-void VoIPController::SetAudioDataCallbacks(std::function input, std::function output){
- audioInputDataCallback=input;
- audioOutputDataCallback=output;
-}
-#endif
-
-int VoIPController::GetConnectionState(){
- return state;
-}
-
-void VoIPController::SetConfig(const Config& cfg){
- config=cfg;
- if(tgvoipLogFile){
- fclose(tgvoipLogFile);
- tgvoipLogFile=NULL;
- }
- if(!config.logFilePath.empty()){
-#ifndef _WIN32
- tgvoipLogFile=fopen(config.logFilePath.c_str(), "a");
-#else
- if(_wfopen_s(&tgvoipLogFile, config.logFilePath.c_str(), L"a")!=0){
- tgvoipLogFile=NULL;
- }
-#endif
- tgvoip_log_file_write_header(tgvoipLogFile);
- }else{
- tgvoipLogFile=NULL;
- }
- if(statsDump){
- fclose(statsDump);
- statsDump=NULL;
- }
- if(!config.statsDumpFilePath.empty()){
-#ifndef _WIN32
- statsDump=fopen(config.statsDumpFilePath.c_str(), "w");
-#else
- if(_wfopen_s(&statsDump, config.statsDumpFilePath.c_str(), L"w")!=0){
- statsDump=NULL;
- }
-#endif
- if(statsDump)
- fprintf(statsDump, "Time\tRTT\tLRSeq\tLSSeq\tLASeq\tLostR\tLostS\tCWnd\tBitrate\tLoss%%\tJitter\tJDelay\tAJDelay\n");
- //else
- // LOGW("Failed to open stats dump file %s for writing", config.statsDumpFilePath.c_str());
- }else{
- statsDump=NULL;
- }
- UpdateDataSavingState();
- UpdateAudioBitrateLimit();
-}
-
-void VoIPController::SetPersistentState(vector state){
- using namespace json11;
-
- if(state.empty())
- return;
- string jsonErr;
- string json=string(state.begin(), state.end());
- Json _obj=Json::parse(json, jsonErr);
- if(!jsonErr.empty()){
- LOGE("Error parsing persistable state: %s", jsonErr.c_str());
- return;
- }
- Json::object obj=_obj.object_items();
- if(obj.find("proxy")!=obj.end()){
- Json::object proxy=obj["proxy"].object_items();
- lastTestedProxyServer=proxy["server"].string_value();
- proxySupportsUDP=proxy["udp"].bool_value();
- proxySupportsTCP=proxy["tcp"].bool_value();
- }
-}
-
-vector VoIPController::GetPersistentState(){
- using namespace json11;
-
- Json::object obj=Json::object{
- {"ver", 1},
- };
- if(proxyProtocol==PROXY_SOCKS5){
- char pbuf[128];
- snprintf(pbuf, sizeof(pbuf), "%s:%u", proxyAddress.c_str(), proxyPort);
- obj.insert({"proxy", Json::object{
- {"server", string(pbuf)},
- {"udp", proxySupportsUDP},
- {"tcp", proxySupportsTCP}
- }});
- }
- string _jstr=Json(obj).dump();
- const char* jstr=_jstr.c_str();
- return vector(jstr, jstr+strlen(jstr));
-}
-
-void VoIPController::SetOutputVolume(float level){
- outputVolume.SetLevel(level);
-}
-
-void VoIPController::SetInputVolume(float level){
- inputVolume.SetLevel(level);
-}
-
-#if defined(__APPLE__) && TARGET_OS_OSX
-void VoIPController::SetAudioOutputDuckingEnabled(bool enabled){
- macAudioDuckingEnabled=enabled;
- audio::AudioUnitIO* osxAudio=dynamic_cast(audioIO);
- if(osxAudio){
- osxAudio->SetDuckingEnabled(enabled);
- }
-}
-#endif
-
-#pragma mark - Internal intialization
-
-void VoIPController::InitializeTimers(){
- initTimeoutID=messageThread.Post([this]{
- LOGW("Init timeout, disconnecting");
- lastError=ERROR_TIMEOUT;
- SetState(STATE_FAILED);
- }, config.initTimeout);
-
- if(!config.statsDumpFilePath.empty()){
- messageThread.Post([this]{
- if(statsDump && incomingStreams.size()==1){
- shared_ptr& jitterBuffer=incomingStreams[0]->jitterBuffer;
- //fprintf(statsDump, "Time\tRTT\tLISeq\tLASeq\tCWnd\tBitrate\tJitter\tJDelay\tAJDelay\n");
- fprintf(statsDump, "%.3f\t%.3f\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%.3f\t%.3f\t%.3f\n",
- GetCurrentTime()-connectionInitTime,
- endpoints.at(currentEndpoint).rtts[0],
- lastRemoteSeq,
- (uint32_t)seq,
- lastRemoteAckSeq,
- recvLossCount,
- conctl ? conctl->GetSendLossCount() : 0,
- conctl ? (int)conctl->GetInflightDataSize() : 0,
- encoder ? encoder->GetBitrate() : 0,
- encoder ? encoder->GetPacketLoss() : 0,
- jitterBuffer ? jitterBuffer->GetLastMeasuredJitter() : 0,
- jitterBuffer ? jitterBuffer->GetLastMeasuredDelay()*0.06 : 0,
- jitterBuffer ? jitterBuffer->GetAverageDelay()*0.06 : 0);
- }
- }, 0.1, 0.1);
- }
-
- messageThread.Post(std::bind(&VoIPController::SendRelayPings, this), 0.0, 2.0);
-}
-
-void VoIPController::RunSendThread(){
- InitializeAudio();
- InitializeTimers();
- SendInit();
- LOGI("=== send thread exiting ===");
-}
-
-#pragma mark - Miscellaneous
-
-void VoIPController::SetState(int state){
- this->state=state;
- LOGV("Call state changed to %d", state);
- stateChangeTime=GetCurrentTime();
- messageThread.Post([this, state]{
- if(callbacks.connectionStateChanged)
- callbacks.connectionStateChanged(this, state);
- });
- if(state==STATE_ESTABLISHED){
- SetMicMute(micMuted);
- if(!wasEstablished){
- wasEstablished=true;
- messageThread.Post(std::bind(&VoIPController::UpdateRTT, this), 0.1, 0.5);
- messageThread.Post(std::bind(&VoIPController::UpdateAudioBitrate, this), 0.0, 0.3);
- messageThread.Post(std::bind(&VoIPController::UpdateCongestion, this), 0.0, 1.0);
- messageThread.Post(std::bind(&VoIPController::UpdateSignalBars, this), 1.0, 1.0);
- messageThread.Post(std::bind(&VoIPController::TickJitterBufferAngCongestionControl, this), 0.0, 0.1);
- }
- }
-}
-
-void VoIPController::SendStreamFlags(Stream& stream){
- BufferOutputStream s(5);
- s.WriteByte(stream.id);
- uint32_t flags=0;
- if(stream.enabled)
- flags|=STREAM_FLAG_ENABLED;
- if(stream.extraECEnabled)
- flags|=STREAM_FLAG_EXTRA_EC;
- s.WriteInt32(flags);
- LOGV("My stream state: id %u flags %u", (unsigned int)stream.id, (unsigned int)flags);
- Buffer buf(move(s));
- SendExtra(buf, EXTRA_TYPE_STREAM_FLAGS);
-}
-
-shared_ptr VoIPController::GetStreamByType(int type, bool outgoing){
- shared_ptr s;
- for(shared_ptr& ss:(outgoing ? outgoingStreams : incomingStreams)){
- if(ss->type==type)
- return ss;
- }
- return s;
-}
-
-CellularCarrierInfo VoIPController::GetCarrierInfo(){
-#if defined(__APPLE__) && TARGET_OS_IOS
- return DarwinSpecific::GetCarrierInfo();
-#elif defined(__ANDROID__)
- CellularCarrierInfo carrier;
- jni::DoWithJNI([&carrier](JNIEnv* env){
- jmethodID getCarrierInfoMethod=env->GetStaticMethodID(jniUtilitiesClass, "getCarrierInfo", "()[Ljava/lang/String;");
- jobjectArray jinfo=(jobjectArray) env->CallStaticObjectMethod(jniUtilitiesClass, getCarrierInfoMethod);
- if(jinfo && env->GetArrayLength(jinfo)==4){
- carrier.name=jni::JavaStringToStdString(env, (jstring)env->GetObjectArrayElement(jinfo, 0));
- carrier.countryCode=jni::JavaStringToStdString(env, (jstring)env->GetObjectArrayElement(jinfo, 1));
- carrier.mcc=jni::JavaStringToStdString(env, (jstring)env->GetObjectArrayElement(jinfo, 2));
- carrier.mnc=jni::JavaStringToStdString(env, (jstring)env->GetObjectArrayElement(jinfo, 3));
- }else{
- LOGW("Failed to get carrier info");
- }
- });
- return carrier;
-#else
- return CellularCarrierInfo();
-#endif
-}
-
-#pragma mark - Audio I/O
-
-void VoIPController::AudioInputCallback(unsigned char* data, size_t length, unsigned char* secondaryData, size_t secondaryLength, void* param){
- ((VoIPController*)param)->HandleAudioInput(data, length, secondaryData, secondaryLength);
-}
-
-void VoIPController::HandleAudioInput(unsigned char *data, size_t len, unsigned char* secondaryData, size_t secondaryLen){
- if(stopping)
- return;
- unsentStreamPacketsHistory.Add(static_cast(unsentStreamPackets));
- if(unsentStreamPacketsHistory.Average()>=maxUnsentStreamPackets && !videoSource){
- LOGW("Resetting stalled send queue");
- sendQueue.clear();
- unsentStreamPacketsHistory.Reset();
- unsentStreamPackets=0;
- }
- if(waitingForAcks || dontSendPackets>0 || ((unsigned int)unsentStreamPackets>=maxUnsentStreamPackets /*&& endpoints[currentEndpoint].type==Endpoint::Type::TCP_RELAY*/)){
- LOGV("waiting for queue, dropping outgoing audio packet, %d %d %d [%d]", (unsigned int)unsentStreamPackets, waitingForAcks, dontSendPackets, maxUnsentStreamPackets);
- return;
- }
- //LOGV("Audio packet size %u", (unsigned int)len);
- if(!receivedInitAck)
- return;
-
- BufferOutputStream pkt(1500);
-
- bool hasExtraFEC=peerVersion>=7 && secondaryData && secondaryLen && shittyInternetMode;
- unsigned char flags=(unsigned char) (len>255 || hasExtraFEC ? STREAM_DATA_FLAG_LEN16 : 0);
- pkt.WriteByte((unsigned char) (1 | flags)); // streamID + flags
- if(len>255 || hasExtraFEC){
- int16_t lenAndFlags=static_cast(len);
- if(hasExtraFEC)
- lenAndFlags|=STREAM_DATA_XFLAG_EXTRA_FEC;
- pkt.WriteInt16(lenAndFlags);
- }else{
- pkt.WriteByte((unsigned char) len);
- }
- pkt.WriteInt32(audioTimestampOut);
- pkt.WriteBytes(data, len);
-
- if(hasExtraFEC){
- Buffer ecBuf(secondaryLen);
- ecBuf.CopyFrom(secondaryData, 0, secondaryLen);
- ecAudioPackets.push_back(move(ecBuf));
- while(ecAudioPackets.size()>4)
- ecAudioPackets.erase(ecAudioPackets.begin());
- pkt.WriteByte((unsigned char)MIN(ecAudioPackets.size(), extraEcLevel));
- for(vector::iterator ecData=ecAudioPackets.begin()+MAX(0, (int)ecAudioPackets.size()-extraEcLevel);ecData!=ecAudioPackets.end();++ecData){
- pkt.WriteByte((unsigned char)ecData->Length());
- pkt.WriteBytes(*ecData);
- }
- }
-
- unsentStreamPackets++;
- PendingOutgoingPacket p{
- /*.seq=*/GenerateOutSeq(),
- /*.type=*/PKT_STREAM_DATA,
- /*.len=*/pkt.GetLength(),
- /*.data=*/Buffer(move(pkt)),
- /*.endpoint=*/0,
- };
-
- conctl->PacketSent(p.seq, p.len);
-
- SendOrEnqueuePacket(move(p));
- if(peerVersion<7 && secondaryData && secondaryLen && shittyInternetMode){
- Buffer ecBuf(secondaryLen);
- ecBuf.CopyFrom(secondaryData, 0, secondaryLen);
- ecAudioPackets.push_back(move(ecBuf));
- while(ecAudioPackets.size()>4)
- ecAudioPackets.erase(ecAudioPackets.begin());
- pkt=BufferOutputStream(1500);
- pkt.WriteByte(outgoingStreams[0]->id);
- pkt.WriteInt32(audioTimestampOut);
- pkt.WriteByte((unsigned char)MIN(ecAudioPackets.size(), extraEcLevel));
- for(vector::iterator ecData=ecAudioPackets.begin()+MAX(0, (int)ecAudioPackets.size()-extraEcLevel);ecData!=ecAudioPackets.end();++ecData){
- pkt.WriteByte((unsigned char)ecData->Length());
- pkt.WriteBytes(*ecData);
- }
-
- PendingOutgoingPacket p{
- GenerateOutSeq(),
- PKT_STREAM_EC,
- pkt.GetLength(),
- Buffer(move(pkt)),
- 0
- };
- SendOrEnqueuePacket(move(p));
- }
-
- audioTimestampOut+=outgoingStreams[0]->frameDuration;
-}
-
-void VoIPController::InitializeAudio(){
- double t=GetCurrentTime();
- shared_ptr outgoingAudioStream=GetStreamByType(STREAM_TYPE_AUDIO, true);
- LOGI("before create audio io");
- audioIO=audio::AudioIO::Create(currentAudioInput, currentAudioOutput);
- audioInput=audioIO->GetInput();
- audioOutput=audioIO->GetOutput();
-#ifdef __ANDROID__
- audio::AudioInputAndroid* androidInput=dynamic_cast(audioInput);
- if(androidInput){
- unsigned int effects=androidInput->GetEnabledEffects();
- if(!(effects & audio::AudioInputAndroid::EFFECT_AEC)){
- config.enableAEC=true;
- LOGI("Forcing software AEC because built-in is not good");
- }
- if(!(effects & audio::AudioInputAndroid::EFFECT_NS)){
- config.enableNS=true;
- LOGI("Forcing software NS because built-in is not good");
- }
- }
-#elif defined(__APPLE__) && TARGET_OS_OSX
- SetAudioOutputDuckingEnabled(macAudioDuckingEnabled);
-#endif
- LOGI("AEC: %d NS: %d AGC: %d", config.enableAEC, config.enableNS, config.enableAGC);
- echoCanceller=new EchoCanceller(config.enableAEC, config.enableNS, config.enableAGC);
- encoder=new OpusEncoder(audioInput, true);
- encoder->SetCallback(AudioInputCallback, this);
- encoder->SetOutputFrameDuration(outgoingAudioStream->frameDuration);
- encoder->SetEchoCanceller(echoCanceller);
- encoder->SetSecondaryEncoderEnabled(false);
- if(config.enableVolumeControl){
- encoder->AddAudioEffect(&inputVolume);
- }
-
-#if defined(TGVOIP_USE_CALLBACK_AUDIO_IO)
- dynamic_cast(audioInput)->SetDataCallback(audioInputDataCallback);
- dynamic_cast(audioOutput)->SetDataCallback(audioOutputDataCallback);
-#endif
-
- if(!audioOutput->IsInitialized()){
- LOGE("Error initializing audio playback");
- lastError=ERROR_AUDIO_IO;
-
- SetState(STATE_FAILED);
- return;
- }
- UpdateAudioBitrateLimit();
- LOGI("Audio initialization took %f seconds", GetCurrentTime()-t);
-}
-
-void VoIPController::StartAudio(){
- OnAudioOutputReady();
-
- encoder->Start();
- if(!micMuted){
- audioInput->Start();
- if(!audioInput->IsInitialized()){
- LOGE("Erorr initializing audio capture");
- lastError=ERROR_AUDIO_IO;
-
- SetState(STATE_FAILED);
- return;
- }
- }
-}
-
-void VoIPController::OnAudioOutputReady(){
- LOGI("Audio I/O ready");
- shared_ptr& stm=incomingStreams[0];
- stm->decoder=make_shared(audioOutput, true, peerVersion>=6);
- stm->decoder->SetEchoCanceller(echoCanceller);
- if(config.enableVolumeControl){
- stm->decoder->AddAudioEffect(&outputVolume);
- }
- stm->decoder->SetJitterBuffer(stm->jitterBuffer);
- stm->decoder->SetFrameDuration(stm->frameDuration);
- stm->decoder->Start();
-}
-
-void VoIPController::UpdateAudioOutputState(){
- bool areAnyAudioStreamsEnabled=false;
- for(vector