master dc3d81297499 cached
9141 files
57.2 MB
15.6M tokens
47161 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (62,214K chars total). Download the full file to get everything.
Repository: haiyangwu/mediasoup-client-android
Branch: master
Commit: dc3d81297499
Files: 9141
Total size: 57.2 MB

Directory structure:
gitextract_hfbrqaaj/

├── .gitattributes
├── .gitignore
├── .idea/
│   ├── codeStyles/
│   │   ├── Project.xml
│   │   └── codeStyleConfig.xml
│   ├── google-java-format.xml
│   └── jarRepositories.xml
├── .travis.yml
├── LICENSE
├── README.md
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── mediasoup-client/
│   ├── .clang-format
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── build.gradle
│   ├── deps/
│   │   ├── libmediasoupclient/
│   │   │   ├── .clang-format
│   │   │   ├── .clang-tidy
│   │   │   ├── .github/
│   │   │   │   └── FUNDING.yml
│   │   │   ├── .gitignore
│   │   │   ├── .npmrc
│   │   │   ├── CHANGELOG.md
│   │   │   ├── CMakeLists.txt
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── TODO.md
│   │   │   ├── deps/
│   │   │   │   ├── catch/
│   │   │   │   │   ├── .conan/
│   │   │   │   │   │   ├── build.py
│   │   │   │   │   │   └── test_package/
│   │   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │   │       ├── conanfile.py
│   │   │   │   │   │       └── test_package.cpp
│   │   │   │   │   ├── .gitattributes
│   │   │   │   │   ├── .github/
│   │   │   │   │   │   ├── FUNDING.yml
│   │   │   │   │   │   ├── ISSUE_TEMPLATE/
│   │   │   │   │   │   │   ├── bug_report.md
│   │   │   │   │   │   │   └── feature_request.md
│   │   │   │   │   │   └── pull_request_template.md
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── .travis.yml
│   │   │   │   │   ├── CMake/
│   │   │   │   │   │   ├── Catch2Config.cmake.in
│   │   │   │   │   │   ├── FindGcov.cmake
│   │   │   │   │   │   ├── FindLcov.cmake
│   │   │   │   │   │   ├── Findcodecov.cmake
│   │   │   │   │   │   ├── MiscFunctions.cmake
│   │   │   │   │   │   ├── catch2.pc.in
│   │   │   │   │   │   └── llvm-cov-wrapper
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── CODE_OF_CONDUCT.md
│   │   │   │   │   ├── LICENSE.txt
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── appveyor.yml
│   │   │   │   │   ├── codecov.yml
│   │   │   │   │   ├── conanfile.py
│   │   │   │   │   ├── contrib/
│   │   │   │   │   │   ├── Catch.cmake
│   │   │   │   │   │   ├── CatchAddTests.cmake
│   │   │   │   │   │   ├── ParseAndAddCatchTests.cmake
│   │   │   │   │   │   ├── gdbinit
│   │   │   │   │   │   └── lldbinit
│   │   │   │   │   ├── docs/
│   │   │   │   │   │   ├── Readme.md
│   │   │   │   │   │   ├── assertions.md
│   │   │   │   │   │   ├── benchmarks.md
│   │   │   │   │   │   ├── ci-and-misc.md
│   │   │   │   │   │   ├── cmake-integration.md
│   │   │   │   │   │   ├── command-line.md
│   │   │   │   │   │   ├── commercial-users.md
│   │   │   │   │   │   ├── configuration.md
│   │   │   │   │   │   ├── contributing.md
│   │   │   │   │   │   ├── deprecations.md
│   │   │   │   │   │   ├── event-listeners.md
│   │   │   │   │   │   ├── generators.md
│   │   │   │   │   │   ├── limitations.md
│   │   │   │   │   │   ├── list-of-examples.md
│   │   │   │   │   │   ├── logging.md
│   │   │   │   │   │   ├── matchers.md
│   │   │   │   │   │   ├── opensource-users.md
│   │   │   │   │   │   ├── other-macros.md
│   │   │   │   │   │   ├── own-main.md
│   │   │   │   │   │   ├── release-notes.md
│   │   │   │   │   │   ├── release-process.md
│   │   │   │   │   │   ├── reporters.md
│   │   │   │   │   │   ├── slow-compiles.md
│   │   │   │   │   │   ├── test-cases-and-sections.md
│   │   │   │   │   │   ├── test-fixtures.md
│   │   │   │   │   │   ├── tostring.md
│   │   │   │   │   │   ├── tutorial.md
│   │   │   │   │   │   └── why-catch.md
│   │   │   │   │   ├── examples/
│   │   │   │   │   │   ├── 000-CatchMain.cpp
│   │   │   │   │   │   ├── 010-TestCase.cpp
│   │   │   │   │   │   ├── 020-TestCase-1.cpp
│   │   │   │   │   │   ├── 020-TestCase-2.cpp
│   │   │   │   │   │   ├── 030-Asn-Require-Check.cpp
│   │   │   │   │   │   ├── 100-Fix-Section.cpp
│   │   │   │   │   │   ├── 110-Fix-ClassFixture.cpp
│   │   │   │   │   │   ├── 120-Bdd-ScenarioGivenWhenThen.cpp
│   │   │   │   │   │   ├── 200-Rpt-CatchMain.cpp
│   │   │   │   │   │   ├── 207-Rpt-TeamCityReporter.cpp
│   │   │   │   │   │   ├── 210-Evt-EventListeners.cpp
│   │   │   │   │   │   ├── 231-Cfg-OutputStreams.cpp
│   │   │   │   │   │   ├── 300-Gen-OwnGenerator.cpp
│   │   │   │   │   │   ├── 301-Gen-MapTypeConversion.cpp
│   │   │   │   │   │   ├── 310-Gen-VariablesInGenerators.cpp
│   │   │   │   │   │   ├── 311-Gen-CustomCapture.cpp
│   │   │   │   │   │   └── CMakeLists.txt
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── catch.hpp
│   │   │   │   │   │   ├── catch_with_main.hpp
│   │   │   │   │   │   ├── external/
│   │   │   │   │   │   │   └── clara.hpp
│   │   │   │   │   │   ├── internal/
│   │   │   │   │   │   │   ├── benchmark/
│   │   │   │   │   │   │   │   ├── catch_benchmark.hpp
│   │   │   │   │   │   │   │   ├── catch_benchmarking_all.hpp
│   │   │   │   │   │   │   │   ├── catch_chronometer.hpp
│   │   │   │   │   │   │   │   ├── catch_clock.hpp
│   │   │   │   │   │   │   │   ├── catch_constructor.hpp
│   │   │   │   │   │   │   │   ├── catch_environment.hpp
│   │   │   │   │   │   │   │   ├── catch_estimate.hpp
│   │   │   │   │   │   │   │   ├── catch_execution_plan.hpp
│   │   │   │   │   │   │   │   ├── catch_optimizer.hpp
│   │   │   │   │   │   │   │   ├── catch_outlier_classification.hpp
│   │   │   │   │   │   │   │   ├── catch_sample_analysis.hpp
│   │   │   │   │   │   │   │   └── detail/
│   │   │   │   │   │   │   │       ├── catch_analyse.hpp
│   │   │   │   │   │   │   │       ├── catch_benchmark_function.hpp
│   │   │   │   │   │   │   │       ├── catch_complete_invoke.hpp
│   │   │   │   │   │   │   │       ├── catch_estimate_clock.hpp
│   │   │   │   │   │   │   │       ├── catch_measure.hpp
│   │   │   │   │   │   │   │       ├── catch_repeat.hpp
│   │   │   │   │   │   │   │       ├── catch_run_for_at_least.hpp
│   │   │   │   │   │   │   │       ├── catch_stats.cpp
│   │   │   │   │   │   │   │       ├── catch_stats.hpp
│   │   │   │   │   │   │   │       └── catch_timing.hpp
│   │   │   │   │   │   │   ├── catch_approx.cpp
│   │   │   │   │   │   │   ├── catch_approx.h
│   │   │   │   │   │   │   ├── catch_assertionhandler.cpp
│   │   │   │   │   │   │   ├── catch_assertionhandler.h
│   │   │   │   │   │   │   ├── catch_assertioninfo.h
│   │   │   │   │   │   │   ├── catch_assertionresult.cpp
│   │   │   │   │   │   │   ├── catch_assertionresult.h
│   │   │   │   │   │   │   ├── catch_capture.hpp
│   │   │   │   │   │   │   ├── catch_capture_matchers.cpp
│   │   │   │   │   │   │   ├── catch_capture_matchers.h
│   │   │   │   │   │   │   ├── catch_clara.h
│   │   │   │   │   │   │   ├── catch_commandline.cpp
│   │   │   │   │   │   │   ├── catch_commandline.h
│   │   │   │   │   │   │   ├── catch_common.cpp
│   │   │   │   │   │   │   ├── catch_common.h
│   │   │   │   │   │   │   ├── catch_compiler_capabilities.h
│   │   │   │   │   │   │   ├── catch_config.cpp
│   │   │   │   │   │   │   ├── catch_config.hpp
│   │   │   │   │   │   │   ├── catch_console_colour.cpp
│   │   │   │   │   │   │   ├── catch_console_colour.h
│   │   │   │   │   │   │   ├── catch_context.cpp
│   │   │   │   │   │   │   ├── catch_context.h
│   │   │   │   │   │   │   ├── catch_debug_console.cpp
│   │   │   │   │   │   │   ├── catch_debug_console.h
│   │   │   │   │   │   │   ├── catch_debugger.cpp
│   │   │   │   │   │   │   ├── catch_debugger.h
│   │   │   │   │   │   │   ├── catch_decomposer.cpp
│   │   │   │   │   │   │   ├── catch_decomposer.h
│   │   │   │   │   │   │   ├── catch_default_main.hpp
│   │   │   │   │   │   │   ├── catch_enforce.cpp
│   │   │   │   │   │   │   ├── catch_enforce.h
│   │   │   │   │   │   │   ├── catch_enum_values_registry.cpp
│   │   │   │   │   │   │   ├── catch_enum_values_registry.h
│   │   │   │   │   │   │   ├── catch_errno_guard.cpp
│   │   │   │   │   │   │   ├── catch_errno_guard.h
│   │   │   │   │   │   │   ├── catch_exception_translator_registry.cpp
│   │   │   │   │   │   │   ├── catch_exception_translator_registry.h
│   │   │   │   │   │   │   ├── catch_external_interfaces.h
│   │   │   │   │   │   │   ├── catch_fatal_condition.cpp
│   │   │   │   │   │   │   ├── catch_fatal_condition.h
│   │   │   │   │   │   │   ├── catch_generators.cpp
│   │   │   │   │   │   │   ├── catch_generators.hpp
│   │   │   │   │   │   │   ├── catch_generators_generic.hpp
│   │   │   │   │   │   │   ├── catch_generators_specific.hpp
│   │   │   │   │   │   │   ├── catch_impl.hpp
│   │   │   │   │   │   │   ├── catch_interfaces_capture.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_capture.h
│   │   │   │   │   │   │   ├── catch_interfaces_config.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_config.h
│   │   │   │   │   │   │   ├── catch_interfaces_enum_values_registry.h
│   │   │   │   │   │   │   ├── catch_interfaces_exception.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_exception.h
│   │   │   │   │   │   │   ├── catch_interfaces_generatortracker.h
│   │   │   │   │   │   │   ├── catch_interfaces_registry_hub.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_registry_hub.h
│   │   │   │   │   │   │   ├── catch_interfaces_reporter.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_reporter.h
│   │   │   │   │   │   │   ├── catch_interfaces_runner.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_runner.h
│   │   │   │   │   │   │   ├── catch_interfaces_tag_alias_registry.h
│   │   │   │   │   │   │   ├── catch_interfaces_testcase.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_testcase.h
│   │   │   │   │   │   │   ├── catch_leak_detector.cpp
│   │   │   │   │   │   │   ├── catch_leak_detector.h
│   │   │   │   │   │   │   ├── catch_list.cpp
│   │   │   │   │   │   │   ├── catch_list.h
│   │   │   │   │   │   │   ├── catch_matchers.cpp
│   │   │   │   │   │   │   ├── catch_matchers.h
│   │   │   │   │   │   │   ├── catch_matchers_exception.cpp
│   │   │   │   │   │   │   ├── catch_matchers_exception.hpp
│   │   │   │   │   │   │   ├── catch_matchers_floating.cpp
│   │   │   │   │   │   │   ├── catch_matchers_floating.h
│   │   │   │   │   │   │   ├── catch_matchers_generic.cpp
│   │   │   │   │   │   │   ├── catch_matchers_generic.hpp
│   │   │   │   │   │   │   ├── catch_matchers_string.cpp
│   │   │   │   │   │   │   ├── catch_matchers_string.h
│   │   │   │   │   │   │   ├── catch_matchers_vector.h
│   │   │   │   │   │   │   ├── catch_message.cpp
│   │   │   │   │   │   │   ├── catch_message.h
│   │   │   │   │   │   │   ├── catch_meta.hpp
│   │   │   │   │   │   │   ├── catch_objc.hpp
│   │   │   │   │   │   │   ├── catch_objc_arc.hpp
│   │   │   │   │   │   │   ├── catch_option.hpp
│   │   │   │   │   │   │   ├── catch_output_redirect.cpp
│   │   │   │   │   │   │   ├── catch_output_redirect.h
│   │   │   │   │   │   │   ├── catch_platform.h
│   │   │   │   │   │   │   ├── catch_polyfills.cpp
│   │   │   │   │   │   │   ├── catch_polyfills.hpp
│   │   │   │   │   │   │   ├── catch_preprocessor.hpp
│   │   │   │   │   │   │   ├── catch_random_number_generator.cpp
│   │   │   │   │   │   │   ├── catch_random_number_generator.h
│   │   │   │   │   │   │   ├── catch_reenable_warnings.h
│   │   │   │   │   │   │   ├── catch_registry_hub.cpp
│   │   │   │   │   │   │   ├── catch_reporter_registrars.hpp
│   │   │   │   │   │   │   ├── catch_reporter_registry.cpp
│   │   │   │   │   │   │   ├── catch_reporter_registry.h
│   │   │   │   │   │   │   ├── catch_result_type.cpp
│   │   │   │   │   │   │   ├── catch_result_type.h
│   │   │   │   │   │   │   ├── catch_run_context.cpp
│   │   │   │   │   │   │   ├── catch_run_context.h
│   │   │   │   │   │   │   ├── catch_section.cpp
│   │   │   │   │   │   │   ├── catch_section.h
│   │   │   │   │   │   │   ├── catch_section_info.cpp
│   │   │   │   │   │   │   ├── catch_section_info.h
│   │   │   │   │   │   │   ├── catch_session.cpp
│   │   │   │   │   │   │   ├── catch_session.h
│   │   │   │   │   │   │   ├── catch_singletons.cpp
│   │   │   │   │   │   │   ├── catch_singletons.hpp
│   │   │   │   │   │   │   ├── catch_startup_exception_registry.cpp
│   │   │   │   │   │   │   ├── catch_startup_exception_registry.h
│   │   │   │   │   │   │   ├── catch_stream.cpp
│   │   │   │   │   │   │   ├── catch_stream.h
│   │   │   │   │   │   │   ├── catch_string_manip.cpp
│   │   │   │   │   │   │   ├── catch_string_manip.h
│   │   │   │   │   │   │   ├── catch_stringref.cpp
│   │   │   │   │   │   │   ├── catch_stringref.h
│   │   │   │   │   │   │   ├── catch_suppress_warnings.h
│   │   │   │   │   │   │   ├── catch_tag_alias.cpp
│   │   │   │   │   │   │   ├── catch_tag_alias.h
│   │   │   │   │   │   │   ├── catch_tag_alias_autoregistrar.cpp
│   │   │   │   │   │   │   ├── catch_tag_alias_autoregistrar.h
│   │   │   │   │   │   │   ├── catch_tag_alias_registry.cpp
│   │   │   │   │   │   │   ├── catch_tag_alias_registry.h
│   │   │   │   │   │   │   ├── catch_test_case_info.cpp
│   │   │   │   │   │   │   ├── catch_test_case_info.h
│   │   │   │   │   │   │   ├── catch_test_case_registry_impl.cpp
│   │   │   │   │   │   │   ├── catch_test_case_registry_impl.h
│   │   │   │   │   │   │   ├── catch_test_case_tracker.cpp
│   │   │   │   │   │   │   ├── catch_test_case_tracker.h
│   │   │   │   │   │   │   ├── catch_test_registry.cpp
│   │   │   │   │   │   │   ├── catch_test_registry.h
│   │   │   │   │   │   │   ├── catch_test_spec.cpp
│   │   │   │   │   │   │   ├── catch_test_spec.h
│   │   │   │   │   │   │   ├── catch_test_spec_parser.cpp
│   │   │   │   │   │   │   ├── catch_test_spec_parser.h
│   │   │   │   │   │   │   ├── catch_text.h
│   │   │   │   │   │   │   ├── catch_timer.cpp
│   │   │   │   │   │   │   ├── catch_timer.h
│   │   │   │   │   │   │   ├── catch_to_string.hpp
│   │   │   │   │   │   │   ├── catch_tostring.cpp
│   │   │   │   │   │   │   ├── catch_tostring.h
│   │   │   │   │   │   │   ├── catch_totals.cpp
│   │   │   │   │   │   │   ├── catch_totals.h
│   │   │   │   │   │   │   ├── catch_uncaught_exceptions.cpp
│   │   │   │   │   │   │   ├── catch_uncaught_exceptions.h
│   │   │   │   │   │   │   ├── catch_user_interfaces.h
│   │   │   │   │   │   │   ├── catch_version.cpp
│   │   │   │   │   │   │   ├── catch_version.h
│   │   │   │   │   │   │   ├── catch_wildcard_pattern.cpp
│   │   │   │   │   │   │   ├── catch_wildcard_pattern.h
│   │   │   │   │   │   │   ├── catch_windows_h_proxy.h
│   │   │   │   │   │   │   ├── catch_xmlwriter.cpp
│   │   │   │   │   │   │   └── catch_xmlwriter.h
│   │   │   │   │   │   └── reporters/
│   │   │   │   │   │       ├── catch_reporter_automake.hpp
│   │   │   │   │   │       ├── catch_reporter_bases.cpp
│   │   │   │   │   │       ├── catch_reporter_bases.hpp
│   │   │   │   │   │       ├── catch_reporter_compact.cpp
│   │   │   │   │   │       ├── catch_reporter_compact.h
│   │   │   │   │   │       ├── catch_reporter_console.cpp
│   │   │   │   │   │       ├── catch_reporter_console.h
│   │   │   │   │   │       ├── catch_reporter_junit.cpp
│   │   │   │   │   │       ├── catch_reporter_junit.h
│   │   │   │   │   │       ├── catch_reporter_listening.cpp
│   │   │   │   │   │       ├── catch_reporter_listening.h
│   │   │   │   │   │       ├── catch_reporter_sonarqube.hpp
│   │   │   │   │   │       ├── catch_reporter_tap.hpp
│   │   │   │   │   │       ├── catch_reporter_teamcity.hpp
│   │   │   │   │   │       ├── catch_reporter_xml.cpp
│   │   │   │   │   │       └── catch_reporter_xml.h
│   │   │   │   │   ├── misc/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── appveyorBuildConfigurationScript.bat
│   │   │   │   │   │   ├── appveyorMergeCoverageScript.py
│   │   │   │   │   │   ├── appveyorTestRunScript.bat
│   │   │   │   │   │   ├── coverage-helper.cpp
│   │   │   │   │   │   └── installOpenCppCoverage.ps1
│   │   │   │   │   ├── projects/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── ExtraTests/
│   │   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   │   ├── ToDo.txt
│   │   │   │   │   │   │   ├── X01-PrefixedMacros.cpp
│   │   │   │   │   │   │   ├── X02-DisabledMacros.cpp
│   │   │   │   │   │   │   ├── X03-DisabledExceptions-DefaultHandler.cpp
│   │   │   │   │   │   │   ├── X04-DisabledExceptions-CustomHandler.cpp
│   │   │   │   │   │   │   ├── X10-FallbackStringifier.cpp
│   │   │   │   │   │   │   ├── X11-DisableStringification.cpp
│   │   │   │   │   │   │   ├── X20-BenchmarkingMacros.cpp
│   │   │   │   │   │   │   └── X90-WindowsHeaderInclusion.cpp
│   │   │   │   │   │   ├── SelfTest/
│   │   │   │   │   │   │   ├── Baselines/
│   │   │   │   │   │   │   │   ├── automake.std.approved.txt
│   │   │   │   │   │   │   │   ├── compact.sw.approved.txt
│   │   │   │   │   │   │   │   ├── console.std.approved.txt
│   │   │   │   │   │   │   │   ├── console.sw.approved.txt
│   │   │   │   │   │   │   │   ├── console.swa4.approved.txt
│   │   │   │   │   │   │   │   ├── junit.sw.approved.txt
│   │   │   │   │   │   │   │   ├── sonarqube.sw.approved.txt
│   │   │   │   │   │   │   │   └── xml.sw.approved.txt
│   │   │   │   │   │   │   ├── CompileTimePerfTests/
│   │   │   │   │   │   │   │   ├── 10.tests.cpp
│   │   │   │   │   │   │   │   ├── 100.tests.cpp
│   │   │   │   │   │   │   │   └── All.tests.cpp
│   │   │   │   │   │   │   ├── IntrospectiveTests/
│   │   │   │   │   │   │   │   ├── CmdLine.tests.cpp
│   │   │   │   │   │   │   │   ├── Details.tests.cpp
│   │   │   │   │   │   │   │   ├── GeneratorsImpl.tests.cpp
│   │   │   │   │   │   │   │   ├── InternalBenchmark.tests.cpp
│   │   │   │   │   │   │   │   ├── PartTracker.tests.cpp
│   │   │   │   │   │   │   │   ├── RandomNumberGeneration.tests.cpp
│   │   │   │   │   │   │   │   ├── String.tests.cpp
│   │   │   │   │   │   │   │   ├── StringManip.tests.cpp
│   │   │   │   │   │   │   │   ├── Tag.tests.cpp
│   │   │   │   │   │   │   │   ├── ToString.tests.cpp
│   │   │   │   │   │   │   │   └── Xml.tests.cpp
│   │   │   │   │   │   │   ├── Misc/
│   │   │   │   │   │   │   │   ├── invalid-test-names.input
│   │   │   │   │   │   │   │   ├── plain-old-tests.input
│   │   │   │   │   │   │   │   └── special-characters-in-file.input
│   │   │   │   │   │   │   ├── SurrogateCpps/
│   │   │   │   │   │   │   │   ├── catch_console_colour.cpp
│   │   │   │   │   │   │   │   ├── catch_debugger.cpp
│   │   │   │   │   │   │   │   ├── catch_interfaces_reporter.cpp
│   │   │   │   │   │   │   │   ├── catch_option.cpp
│   │   │   │   │   │   │   │   ├── catch_stream.cpp
│   │   │   │   │   │   │   │   ├── catch_test_case_tracker.cpp
│   │   │   │   │   │   │   │   ├── catch_test_spec.cpp
│   │   │   │   │   │   │   │   └── catch_xmlwriter.cpp
│   │   │   │   │   │   │   ├── TestMain.cpp
│   │   │   │   │   │   │   ├── UsageTests/
│   │   │   │   │   │   │   │   ├── Approx.tests.cpp
│   │   │   │   │   │   │   │   ├── BDD.tests.cpp
│   │   │   │   │   │   │   │   ├── Benchmark.tests.cpp
│   │   │   │   │   │   │   │   ├── Class.tests.cpp
│   │   │   │   │   │   │   │   ├── Compilation.tests.cpp
│   │   │   │   │   │   │   │   ├── Condition.tests.cpp
│   │   │   │   │   │   │   │   ├── Decomposition.tests.cpp
│   │   │   │   │   │   │   │   ├── EnumToString.tests.cpp
│   │   │   │   │   │   │   │   ├── Exception.tests.cpp
│   │   │   │   │   │   │   │   ├── Generators.tests.cpp
│   │   │   │   │   │   │   │   ├── Matchers.tests.cpp
│   │   │   │   │   │   │   │   ├── Message.tests.cpp
│   │   │   │   │   │   │   │   ├── Misc.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringByte.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringChrono.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringGeneral.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringOptional.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringPair.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringTuple.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringVariant.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringVector.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringWhich.tests.cpp
│   │   │   │   │   │   │   │   ├── Tricky.tests.cpp
│   │   │   │   │   │   │   │   └── VariadicMacros.tests.cpp
│   │   │   │   │   │   │   └── WarnAboutNoTests.cmake
│   │   │   │   │   │   └── XCode/
│   │   │   │   │   │       └── OCTest/
│   │   │   │   │   │           ├── OCTest/
│   │   │   │   │   │           │   ├── CatchOCTestCase.h
│   │   │   │   │   │           │   ├── CatchOCTestCase.mm
│   │   │   │   │   │           │   ├── Main.mm
│   │   │   │   │   │           │   ├── OCTest.1
│   │   │   │   │   │           │   ├── OCTest.mm
│   │   │   │   │   │           │   ├── TestObj.h
│   │   │   │   │   │           │   └── TestObj.m
│   │   │   │   │   │           ├── OCTest.xcodeproj/
│   │   │   │   │   │           │   ├── project.pbxproj
│   │   │   │   │   │           │   └── project.xcworkspace/
│   │   │   │   │   │           │       ├── contents.xcworkspacedata
│   │   │   │   │   │           │       └── xcshareddata/
│   │   │   │   │   │           │           └── IDEWorkspaceChecks.plist
│   │   │   │   │   │           └── catch_objc_impl.mm
│   │   │   │   │   ├── scripts/
│   │   │   │   │   │   ├── approvalTests.py
│   │   │   │   │   │   ├── approve.py
│   │   │   │   │   │   ├── benchmarkCompile.py
│   │   │   │   │   │   ├── benchmarkRunner.py
│   │   │   │   │   │   ├── developBuild.py
│   │   │   │   │   │   ├── embed.py
│   │   │   │   │   │   ├── embedClara.py
│   │   │   │   │   │   ├── extractFeaturesFromReleaseNotes.py
│   │   │   │   │   │   ├── fixWhitespace.py
│   │   │   │   │   │   ├── generateSingleHeader.py
│   │   │   │   │   │   ├── majorRelease.py
│   │   │   │   │   │   ├── minorRelease.py
│   │   │   │   │   │   ├── patchRelease.py
│   │   │   │   │   │   ├── releaseCommon.py
│   │   │   │   │   │   ├── releaseNotes.py
│   │   │   │   │   │   ├── scriptCommon.py
│   │   │   │   │   │   ├── updateDocumentToC.py
│   │   │   │   │   │   └── updateWandbox.py
│   │   │   │   │   ├── single_include/
│   │   │   │   │   │   └── catch2/
│   │   │   │   │   │       ├── catch.hpp
│   │   │   │   │   │       ├── catch_reporter_automake.hpp
│   │   │   │   │   │       ├── catch_reporter_sonarqube.hpp
│   │   │   │   │   │       ├── catch_reporter_tap.hpp
│   │   │   │   │   │       └── catch_reporter_teamcity.hpp
│   │   │   │   │   └── third_party/
│   │   │   │   │       └── clara.hpp
│   │   │   │   └── libsdptransform/
│   │   │   │       ├── .gitignore
│   │   │   │       ├── .travis.yml
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── LICENSE
│   │   │   │       ├── README.md
│   │   │   │       ├── doc/
│   │   │   │       │   ├── Grammar.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── include/
│   │   │   │       │   ├── json.hpp
│   │   │   │       │   └── sdptransform.hpp
│   │   │   │       ├── readme-helper/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   └── readme.cpp
│   │   │   │       ├── scripts/
│   │   │   │       │   ├── generate-readme-code.sh
│   │   │   │       │   ├── get-dep.sh
│   │   │   │       │   └── test.sh
│   │   │   │       ├── src/
│   │   │   │       │   ├── grammar.cpp
│   │   │   │       │   ├── parser.cpp
│   │   │   │       │   └── writer.cpp
│   │   │   │       └── test/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── data/
│   │   │   │           │   ├── aes67.sdp
│   │   │   │           │   ├── alac.sdp
│   │   │   │           │   ├── extmap-encrypt.sdp
│   │   │   │           │   ├── hacky.sdp
│   │   │   │           │   ├── icelite.sdp
│   │   │   │           │   ├── invalid.sdp
│   │   │   │           │   ├── jsep.sdp
│   │   │   │           │   ├── jssip.sdp
│   │   │   │           │   ├── multicastttl.sdp
│   │   │   │           │   ├── normal.sdp
│   │   │   │           │   ├── onvif.sdp
│   │   │   │           │   ├── simulcast.sdp
│   │   │   │           │   ├── ssrc.sdp
│   │   │   │           │   ├── st2022-6.sdp
│   │   │   │           │   └── st2110-20.sdp
│   │   │   │           ├── include/
│   │   │   │           │   ├── catch.hpp
│   │   │   │           │   └── helpers.hpp
│   │   │   │           ├── parse.test.cpp
│   │   │   │           └── tests.cpp
│   │   │   ├── gulpfile.js
│   │   │   ├── include/
│   │   │   │   ├── Consumer.hpp
│   │   │   │   ├── DataConsumer.hpp
│   │   │   │   ├── DataProducer.hpp
│   │   │   │   ├── Device.hpp
│   │   │   │   ├── Handler.hpp
│   │   │   │   ├── Logger.hpp
│   │   │   │   ├── MediaSoupClientErrors.hpp
│   │   │   │   ├── PeerConnection.hpp
│   │   │   │   ├── Producer.hpp
│   │   │   │   ├── Transport.hpp
│   │   │   │   ├── Utils.hpp
│   │   │   │   ├── mediasoupclient.hpp
│   │   │   │   ├── ortc.hpp
│   │   │   │   ├── scalabilityMode.hpp
│   │   │   │   ├── sdp/
│   │   │   │   │   ├── MediaSection.hpp
│   │   │   │   │   ├── RemoteSdp.hpp
│   │   │   │   │   └── Utils.hpp
│   │   │   │   └── version.hpp
│   │   │   ├── package.json
│   │   │   ├── scripts/
│   │   │   │   ├── clang-tidy.py
│   │   │   │   ├── get-dep.sh
│   │   │   │   ├── test.sh
│   │   │   │   └── tidy.sh
│   │   │   ├── src/
│   │   │   │   ├── Consumer.cpp
│   │   │   │   ├── DataConsumer.cpp
│   │   │   │   ├── DataProducer.cpp
│   │   │   │   ├── Device.cpp
│   │   │   │   ├── Handler.cpp
│   │   │   │   ├── Logger.cpp
│   │   │   │   ├── PeerConnection.cpp
│   │   │   │   ├── Producer.cpp
│   │   │   │   ├── Transport.cpp
│   │   │   │   ├── mediasoupclient.cpp
│   │   │   │   ├── ortc.cpp
│   │   │   │   ├── scalabilityMode.cpp
│   │   │   │   └── sdp/
│   │   │   │       ├── MediaSection.cpp
│   │   │   │       ├── RemoteSdp.cpp
│   │   │   │       └── Utils.cpp
│   │   │   ├── test/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── Info.plist
│   │   │   │   ├── data/
│   │   │   │   │   ├── audio_video.sdp
│   │   │   │   │   ├── jssip.sdp
│   │   │   │   │   └── webrtc.sdp
│   │   │   │   ├── deps/
│   │   │   │   │   └── libwebrtc/
│   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │       └── pc/
│   │   │   │   │           └── test/
│   │   │   │   │               ├── fake_audio_capture_module.cc
│   │   │   │   │               └── fake_audio_capture_module.h
│   │   │   │   ├── include/
│   │   │   │   │   ├── FakeTransportListener.hpp
│   │   │   │   │   ├── MediaStreamTrackFactory.hpp
│   │   │   │   │   ├── fakeParameters.hpp
│   │   │   │   │   └── helpers.hpp
│   │   │   │   └── src/
│   │   │   │       ├── Device.test.cpp
│   │   │   │       ├── Handler.test.cpp
│   │   │   │       ├── MediaStreamTrackFactory.cpp
│   │   │   │       ├── PeerConnection.test.cpp
│   │   │   │       ├── RemoteSdp.test.cpp
│   │   │   │       ├── SdpUtils.test.cpp
│   │   │   │       ├── fakeParameters.cpp
│   │   │   │       ├── mediasoupclient.test.cpp
│   │   │   │       ├── ortc.test.cpp
│   │   │   │       ├── scalabilityMode.test.cpp
│   │   │   │       └── tests.cpp
│   │   │   └── version.hpp.in
│   │   └── webrtc/
│   │       ├── lib/
│   │       │   ├── .gitattributes
│   │       │   ├── README.md
│   │       │   ├── arm64-v8a/
│   │       │   │   └── libwebrtc.a
│   │       │   ├── armeabi-v7a/
│   │       │   │   └── libwebrtc.a
│   │       │   ├── libwebrtc.jar
│   │       │   ├── x86/
│   │       │   │   └── libwebrtc.a
│   │       │   └── x86_64/
│   │       │       └── libwebrtc.a
│   │       └── src/
│   │           ├── .clang-format
│   │           ├── .git-blame-ignore-revs
│   │           ├── .gitignore
│   │           ├── .gn
│   │           ├── .vpython
│   │           ├── AUTHORS
│   │           ├── BUILD.gn
│   │           ├── CODE_OF_CONDUCT.md
│   │           ├── DEPS
│   │           ├── DIR_METADATA
│   │           ├── ENG_REVIEW_OWNERS
│   │           ├── LICENSE
│   │           ├── OWNERS
│   │           ├── PATENTS
│   │           ├── PRESUBMIT.py
│   │           ├── README.chromium
│   │           ├── README.md
│   │           ├── WATCHLISTS
│   │           ├── api/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── README.md
│   │           │   ├── adaptation/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── resource.cc
│   │           │   │   └── resource.h
│   │           │   ├── array_view.h
│   │           │   ├── array_view_unittest.cc
│   │           │   ├── async_dns_resolver.h
│   │           │   ├── async_resolver_factory.h
│   │           │   ├── audio/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_frame.cc
│   │           │   │   ├── audio_frame.h
│   │           │   │   ├── audio_frame_processor.h
│   │           │   │   ├── audio_mixer.h
│   │           │   │   ├── channel_layout.cc
│   │           │   │   ├── channel_layout.h
│   │           │   │   ├── echo_canceller3_config.cc
│   │           │   │   ├── echo_canceller3_config.h
│   │           │   │   ├── echo_canceller3_config_json.cc
│   │           │   │   ├── echo_canceller3_config_json.h
│   │           │   │   ├── echo_canceller3_factory.cc
│   │           │   │   ├── echo_canceller3_factory.h
│   │           │   │   ├── echo_control.h
│   │           │   │   ├── echo_detector_creator.cc
│   │           │   │   ├── echo_detector_creator.h
│   │           │   │   └── test/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── audio_frame_unittest.cc
│   │           │   │       ├── echo_canceller3_config_json_unittest.cc
│   │           │   │       └── echo_canceller3_config_unittest.cc
│   │           │   ├── audio_codecs/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── L16/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_L16.cc
│   │           │   │   │   ├── audio_decoder_L16.h
│   │           │   │   │   ├── audio_encoder_L16.cc
│   │           │   │   │   └── audio_encoder_L16.h
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_codec_pair_id.cc
│   │           │   │   ├── audio_codec_pair_id.h
│   │           │   │   ├── audio_decoder.cc
│   │           │   │   ├── audio_decoder.h
│   │           │   │   ├── audio_decoder_factory.h
│   │           │   │   ├── audio_decoder_factory_template.h
│   │           │   │   ├── audio_encoder.cc
│   │           │   │   ├── audio_encoder.h
│   │           │   │   ├── audio_encoder_factory.h
│   │           │   │   ├── audio_encoder_factory_template.h
│   │           │   │   ├── audio_format.cc
│   │           │   │   ├── audio_format.h
│   │           │   │   ├── builtin_audio_decoder_factory.cc
│   │           │   │   ├── builtin_audio_decoder_factory.h
│   │           │   │   ├── builtin_audio_encoder_factory.cc
│   │           │   │   ├── builtin_audio_encoder_factory.h
│   │           │   │   ├── g711/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_g711.cc
│   │           │   │   │   ├── audio_decoder_g711.h
│   │           │   │   │   ├── audio_encoder_g711.cc
│   │           │   │   │   └── audio_encoder_g711.h
│   │           │   │   ├── g722/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_g722.cc
│   │           │   │   │   ├── audio_decoder_g722.h
│   │           │   │   │   ├── audio_encoder_g722.cc
│   │           │   │   │   ├── audio_encoder_g722.h
│   │           │   │   │   └── audio_encoder_g722_config.h
│   │           │   │   ├── ilbc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_ilbc.cc
│   │           │   │   │   ├── audio_decoder_ilbc.h
│   │           │   │   │   ├── audio_encoder_ilbc.cc
│   │           │   │   │   ├── audio_encoder_ilbc.h
│   │           │   │   │   └── audio_encoder_ilbc_config.h
│   │           │   │   ├── isac/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_isac.h
│   │           │   │   │   ├── audio_decoder_isac_fix.cc
│   │           │   │   │   ├── audio_decoder_isac_fix.h
│   │           │   │   │   ├── audio_decoder_isac_float.cc
│   │           │   │   │   ├── audio_decoder_isac_float.h
│   │           │   │   │   ├── audio_encoder_isac.h
│   │           │   │   │   ├── audio_encoder_isac_fix.cc
│   │           │   │   │   ├── audio_encoder_isac_fix.h
│   │           │   │   │   ├── audio_encoder_isac_float.cc
│   │           │   │   │   └── audio_encoder_isac_float.h
│   │           │   │   ├── opus/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_multi_channel_opus.cc
│   │           │   │   │   ├── audio_decoder_multi_channel_opus.h
│   │           │   │   │   ├── audio_decoder_multi_channel_opus_config.h
│   │           │   │   │   ├── audio_decoder_opus.cc
│   │           │   │   │   ├── audio_decoder_opus.h
│   │           │   │   │   ├── audio_encoder_multi_channel_opus.cc
│   │           │   │   │   ├── audio_encoder_multi_channel_opus.h
│   │           │   │   │   ├── audio_encoder_multi_channel_opus_config.cc
│   │           │   │   │   ├── audio_encoder_multi_channel_opus_config.h
│   │           │   │   │   ├── audio_encoder_opus.cc
│   │           │   │   │   ├── audio_encoder_opus.h
│   │           │   │   │   ├── audio_encoder_opus_config.cc
│   │           │   │   │   └── audio_encoder_opus_config.h
│   │           │   │   ├── opus_audio_decoder_factory.cc
│   │           │   │   ├── opus_audio_decoder_factory.h
│   │           │   │   ├── opus_audio_encoder_factory.cc
│   │           │   │   ├── opus_audio_encoder_factory.h
│   │           │   │   └── test/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── audio_decoder_factory_template_unittest.cc
│   │           │   │       └── audio_encoder_factory_template_unittest.cc
│   │           │   ├── audio_options.cc
│   │           │   ├── audio_options.h
│   │           │   ├── call/
│   │           │   │   ├── audio_sink.h
│   │           │   │   ├── bitrate_allocation.h
│   │           │   │   ├── call_factory_interface.h
│   │           │   │   ├── transport.cc
│   │           │   │   └── transport.h
│   │           │   ├── candidate.cc
│   │           │   ├── candidate.h
│   │           │   ├── create_peerconnection_factory.cc
│   │           │   ├── create_peerconnection_factory.h
│   │           │   ├── crypto/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── crypto_options.cc
│   │           │   │   ├── crypto_options.h
│   │           │   │   ├── frame_decryptor_interface.h
│   │           │   │   └── frame_encryptor_interface.h
│   │           │   ├── crypto_params.h
│   │           │   ├── data_channel_interface.cc
│   │           │   ├── data_channel_interface.h
│   │           │   ├── dtls_transport_interface.cc
│   │           │   ├── dtls_transport_interface.h
│   │           │   ├── dtmf_sender_interface.h
│   │           │   ├── fec_controller.h
│   │           │   ├── fec_controller_override.h
│   │           │   ├── frame_transformer_interface.h
│   │           │   ├── function_view.h
│   │           │   ├── function_view_unittest.cc
│   │           │   ├── g3doc/
│   │           │   │   ├── index.md
│   │           │   │   └── threading_design.md
│   │           │   ├── ice_transport_factory.cc
│   │           │   ├── ice_transport_factory.h
│   │           │   ├── ice_transport_interface.h
│   │           │   ├── jsep.cc
│   │           │   ├── jsep.h
│   │           │   ├── jsep_ice_candidate.cc
│   │           │   ├── jsep_ice_candidate.h
│   │           │   ├── jsep_session_description.h
│   │           │   ├── media_stream_interface.cc
│   │           │   ├── media_stream_interface.h
│   │           │   ├── media_stream_track.h
│   │           │   ├── media_types.cc
│   │           │   ├── media_types.h
│   │           │   ├── neteq/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── custom_neteq_factory.cc
│   │           │   │   ├── custom_neteq_factory.h
│   │           │   │   ├── default_neteq_controller_factory.cc
│   │           │   │   ├── default_neteq_controller_factory.h
│   │           │   │   ├── neteq.cc
│   │           │   │   ├── neteq.h
│   │           │   │   ├── neteq_controller.h
│   │           │   │   ├── neteq_controller_factory.h
│   │           │   │   ├── neteq_factory.h
│   │           │   │   ├── tick_timer.cc
│   │           │   │   ├── tick_timer.h
│   │           │   │   └── tick_timer_unittest.cc
│   │           │   ├── network_state_predictor.h
│   │           │   ├── notifier.h
│   │           │   ├── numerics/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── samples_stats_counter.cc
│   │           │   │   ├── samples_stats_counter.h
│   │           │   │   └── samples_stats_counter_unittest.cc
│   │           │   ├── packet_socket_factory.h
│   │           │   ├── peer_connection_interface.cc
│   │           │   ├── peer_connection_interface.h
│   │           │   ├── priority.h
│   │           │   ├── ref_counted_base.h
│   │           │   ├── rtc_error.cc
│   │           │   ├── rtc_error.h
│   │           │   ├── rtc_error_unittest.cc
│   │           │   ├── rtc_event_log/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── rtc_event.cc
│   │           │   │   ├── rtc_event.h
│   │           │   │   ├── rtc_event_log.cc
│   │           │   │   ├── rtc_event_log.h
│   │           │   │   ├── rtc_event_log_factory.cc
│   │           │   │   ├── rtc_event_log_factory.h
│   │           │   │   └── rtc_event_log_factory_interface.h
│   │           │   ├── rtc_event_log_output.h
│   │           │   ├── rtc_event_log_output_file.cc
│   │           │   ├── rtc_event_log_output_file.h
│   │           │   ├── rtc_event_log_output_file_unittest.cc
│   │           │   ├── rtp_headers.cc
│   │           │   ├── rtp_headers.h
│   │           │   ├── rtp_packet_info.cc
│   │           │   ├── rtp_packet_info.h
│   │           │   ├── rtp_packet_info_unittest.cc
│   │           │   ├── rtp_packet_infos.h
│   │           │   ├── rtp_packet_infos_unittest.cc
│   │           │   ├── rtp_parameters.cc
│   │           │   ├── rtp_parameters.h
│   │           │   ├── rtp_parameters_unittest.cc
│   │           │   ├── rtp_receiver_interface.cc
│   │           │   ├── rtp_receiver_interface.h
│   │           │   ├── rtp_sender_interface.cc
│   │           │   ├── rtp_sender_interface.h
│   │           │   ├── rtp_transceiver_direction.h
│   │           │   ├── rtp_transceiver_interface.cc
│   │           │   ├── rtp_transceiver_interface.h
│   │           │   ├── scoped_refptr.h
│   │           │   ├── scoped_refptr_unittest.cc
│   │           │   ├── sctp_transport_interface.cc
│   │           │   ├── sctp_transport_interface.h
│   │           │   ├── sequence_checker.h
│   │           │   ├── sequence_checker_unittest.cc
│   │           │   ├── set_local_description_observer_interface.h
│   │           │   ├── set_remote_description_observer_interface.h
│   │           │   ├── stats/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── rtc_stats.h
│   │           │   │   ├── rtc_stats_collector_callback.h
│   │           │   │   ├── rtc_stats_report.h
│   │           │   │   └── rtcstats_objects.h
│   │           │   ├── stats_types.cc
│   │           │   ├── stats_types.h
│   │           │   ├── task_queue/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── default_task_queue_factory.h
│   │           │   │   ├── default_task_queue_factory_gcd.cc
│   │           │   │   ├── default_task_queue_factory_libevent.cc
│   │           │   │   ├── default_task_queue_factory_stdlib.cc
│   │           │   │   ├── default_task_queue_factory_unittest.cc
│   │           │   │   ├── default_task_queue_factory_win.cc
│   │           │   │   ├── queued_task.h
│   │           │   │   ├── task_queue_base.cc
│   │           │   │   ├── task_queue_base.h
│   │           │   │   ├── task_queue_factory.h
│   │           │   │   ├── task_queue_test.cc
│   │           │   │   └── task_queue_test.h
│   │           │   ├── test/
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_quality_analyzer_interface.h
│   │           │   │   ├── audioproc_float.cc
│   │           │   │   ├── audioproc_float.h
│   │           │   │   ├── compile_all_headers.cc
│   │           │   │   ├── create_frame_generator.cc
│   │           │   │   ├── create_frame_generator.h
│   │           │   │   ├── create_network_emulation_manager.cc
│   │           │   │   ├── create_network_emulation_manager.h
│   │           │   │   ├── create_peer_connection_quality_test_frame_generator.cc
│   │           │   │   ├── create_peer_connection_quality_test_frame_generator.h
│   │           │   │   ├── create_peerconnection_quality_test_fixture.cc
│   │           │   │   ├── create_peerconnection_quality_test_fixture.h
│   │           │   │   ├── create_simulcast_test_fixture.cc
│   │           │   │   ├── create_simulcast_test_fixture.h
│   │           │   │   ├── create_time_controller.cc
│   │           │   │   ├── create_time_controller.h
│   │           │   │   ├── create_time_controller_unittest.cc
│   │           │   │   ├── create_video_quality_test_fixture.cc
│   │           │   │   ├── create_video_quality_test_fixture.h
│   │           │   │   ├── create_videocodec_test_fixture.cc
│   │           │   │   ├── create_videocodec_test_fixture.h
│   │           │   │   ├── dummy_peer_connection.h
│   │           │   │   ├── fake_frame_decryptor.cc
│   │           │   │   ├── fake_frame_decryptor.h
│   │           │   │   ├── fake_frame_encryptor.cc
│   │           │   │   ├── fake_frame_encryptor.h
│   │           │   │   ├── frame_generator_interface.cc
│   │           │   │   ├── frame_generator_interface.h
│   │           │   │   ├── mock_async_dns_resolver.h
│   │           │   │   ├── mock_audio_mixer.h
│   │           │   │   ├── mock_audio_sink.h
│   │           │   │   ├── mock_data_channel.h
│   │           │   │   ├── mock_fec_controller_override.h
│   │           │   │   ├── mock_frame_decryptor.h
│   │           │   │   ├── mock_frame_encryptor.h
│   │           │   │   ├── mock_media_stream_interface.h
│   │           │   │   ├── mock_peer_connection_factory_interface.h
│   │           │   │   ├── mock_peerconnectioninterface.h
│   │           │   │   ├── mock_rtp_transceiver.h
│   │           │   │   ├── mock_rtpreceiver.h
│   │           │   │   ├── mock_rtpsender.h
│   │           │   │   ├── mock_transformable_video_frame.h
│   │           │   │   ├── mock_video_bitrate_allocator.h
│   │           │   │   ├── mock_video_bitrate_allocator_factory.h
│   │           │   │   ├── mock_video_decoder.h
│   │           │   │   ├── mock_video_decoder_factory.h
│   │           │   │   ├── mock_video_encoder.h
│   │           │   │   ├── mock_video_encoder_factory.h
│   │           │   │   ├── mock_video_track.h
│   │           │   │   ├── neteq_simulator.cc
│   │           │   │   ├── neteq_simulator.h
│   │           │   │   ├── neteq_simulator_factory.cc
│   │           │   │   ├── neteq_simulator_factory.h
│   │           │   │   ├── network_emulation/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── DEPS
│   │           │   │   │   ├── create_cross_traffic.cc
│   │           │   │   │   ├── create_cross_traffic.h
│   │           │   │   │   ├── cross_traffic.h
│   │           │   │   │   ├── network_emulation_interfaces.cc
│   │           │   │   │   └── network_emulation_interfaces.h
│   │           │   │   ├── network_emulation_manager.cc
│   │           │   │   ├── network_emulation_manager.h
│   │           │   │   ├── peerconnection_quality_test_fixture.h
│   │           │   │   ├── simulated_network.h
│   │           │   │   ├── simulcast_test_fixture.h
│   │           │   │   ├── stats_observer_interface.h
│   │           │   │   ├── test_dependency_factory.cc
│   │           │   │   ├── test_dependency_factory.h
│   │           │   │   ├── time_controller.cc
│   │           │   │   ├── time_controller.h
│   │           │   │   ├── track_id_stream_info_map.h
│   │           │   │   ├── video/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── function_video_decoder_factory.h
│   │           │   │   │   └── function_video_encoder_factory.h
│   │           │   │   ├── video_quality_analyzer_interface.h
│   │           │   │   ├── video_quality_test_fixture.h
│   │           │   │   ├── videocodec_test_fixture.h
│   │           │   │   ├── videocodec_test_stats.cc
│   │           │   │   └── videocodec_test_stats.h
│   │           │   ├── transport/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── bitrate_settings.cc
│   │           │   │   ├── bitrate_settings.h
│   │           │   │   ├── data_channel_transport_interface.h
│   │           │   │   ├── enums.h
│   │           │   │   ├── field_trial_based_config.cc
│   │           │   │   ├── field_trial_based_config.h
│   │           │   │   ├── goog_cc_factory.cc
│   │           │   │   ├── goog_cc_factory.h
│   │           │   │   ├── network_control.h
│   │           │   │   ├── network_types.cc
│   │           │   │   ├── network_types.h
│   │           │   │   ├── rtp/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── dependency_descriptor.cc
│   │           │   │   │   ├── dependency_descriptor.h
│   │           │   │   │   └── rtp_source.h
│   │           │   │   ├── sctp_transport_factory_interface.h
│   │           │   │   ├── stun.cc
│   │           │   │   ├── stun.h
│   │           │   │   ├── stun_unittest.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── create_feedback_generator.cc
│   │           │   │   │   ├── create_feedback_generator.h
│   │           │   │   │   ├── feedback_generator_interface.h
│   │           │   │   │   └── mock_network_control.h
│   │           │   │   └── webrtc_key_value_config.h
│   │           │   ├── turn_customizer.h
│   │           │   ├── uma_metrics.h
│   │           │   ├── units/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── data_rate.cc
│   │           │   │   ├── data_rate.h
│   │           │   │   ├── data_rate_unittest.cc
│   │           │   │   ├── data_size.cc
│   │           │   │   ├── data_size.h
│   │           │   │   ├── data_size_unittest.cc
│   │           │   │   ├── frequency.cc
│   │           │   │   ├── frequency.h
│   │           │   │   ├── frequency_unittest.cc
│   │           │   │   ├── time_delta.cc
│   │           │   │   ├── time_delta.h
│   │           │   │   ├── time_delta_unittest.cc
│   │           │   │   ├── timestamp.cc
│   │           │   │   ├── timestamp.h
│   │           │   │   └── timestamp_unittest.cc
│   │           │   ├── video/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── builtin_video_bitrate_allocator_factory.cc
│   │           │   │   ├── builtin_video_bitrate_allocator_factory.h
│   │           │   │   ├── color_space.cc
│   │           │   │   ├── color_space.h
│   │           │   │   ├── encoded_frame.cc
│   │           │   │   ├── encoded_frame.h
│   │           │   │   ├── encoded_image.cc
│   │           │   │   ├── encoded_image.h
│   │           │   │   ├── hdr_metadata.cc
│   │           │   │   ├── hdr_metadata.h
│   │           │   │   ├── i010_buffer.cc
│   │           │   │   ├── i010_buffer.h
│   │           │   │   ├── i420_buffer.cc
│   │           │   │   ├── i420_buffer.h
│   │           │   │   ├── nv12_buffer.cc
│   │           │   │   ├── nv12_buffer.h
│   │           │   │   ├── recordable_encoded_frame.h
│   │           │   │   ├── render_resolution.h
│   │           │   │   ├── rtp_video_frame_assembler.cc
│   │           │   │   ├── rtp_video_frame_assembler.h
│   │           │   │   ├── rtp_video_frame_assembler_unittests.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── color_space_unittest.cc
│   │           │   │   │   ├── mock_recordable_encoded_frame.h
│   │           │   │   │   ├── nv12_buffer_unittest.cc
│   │           │   │   │   ├── video_adaptation_counters_unittest.cc
│   │           │   │   │   └── video_bitrate_allocation_unittest.cc
│   │           │   │   ├── video_adaptation_counters.cc
│   │           │   │   ├── video_adaptation_counters.h
│   │           │   │   ├── video_adaptation_reason.h
│   │           │   │   ├── video_bitrate_allocation.cc
│   │           │   │   ├── video_bitrate_allocation.h
│   │           │   │   ├── video_bitrate_allocator.cc
│   │           │   │   ├── video_bitrate_allocator.h
│   │           │   │   ├── video_bitrate_allocator_factory.h
│   │           │   │   ├── video_codec_constants.h
│   │           │   │   ├── video_codec_type.h
│   │           │   │   ├── video_content_type.cc
│   │           │   │   ├── video_content_type.h
│   │           │   │   ├── video_frame.cc
│   │           │   │   ├── video_frame.h
│   │           │   │   ├── video_frame_buffer.cc
│   │           │   │   ├── video_frame_buffer.h
│   │           │   │   ├── video_frame_metadata.cc
│   │           │   │   ├── video_frame_metadata.h
│   │           │   │   ├── video_frame_metadata_unittest.cc
│   │           │   │   ├── video_frame_type.h
│   │           │   │   ├── video_layers_allocation.h
│   │           │   │   ├── video_rotation.h
│   │           │   │   ├── video_sink_interface.h
│   │           │   │   ├── video_source_interface.cc
│   │           │   │   ├── video_source_interface.h
│   │           │   │   ├── video_stream_decoder.h
│   │           │   │   ├── video_stream_decoder_create.cc
│   │           │   │   ├── video_stream_decoder_create.h
│   │           │   │   ├── video_stream_decoder_create_unittest.cc
│   │           │   │   ├── video_stream_encoder_interface.h
│   │           │   │   ├── video_stream_encoder_observer.h
│   │           │   │   ├── video_stream_encoder_settings.h
│   │           │   │   ├── video_timing.cc
│   │           │   │   └── video_timing.h
│   │           │   ├── video_codecs/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── bitstream_parser.h
│   │           │   │   ├── builtin_video_decoder_factory.cc
│   │           │   │   ├── builtin_video_decoder_factory.h
│   │           │   │   ├── builtin_video_encoder_factory.cc
│   │           │   │   ├── builtin_video_encoder_factory.h
│   │           │   │   ├── h264_profile_level_id.cc
│   │           │   │   ├── h264_profile_level_id.h
│   │           │   │   ├── sdp_video_format.cc
│   │           │   │   ├── sdp_video_format.h
│   │           │   │   ├── spatial_layer.cc
│   │           │   │   ├── spatial_layer.h
│   │           │   │   ├── test/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── builtin_video_encoder_factory_unittest.cc
│   │           │   │   │   ├── h264_profile_level_id_unittest.cc
│   │           │   │   │   ├── sdp_video_format_unittest.cc
│   │           │   │   │   ├── video_decoder_software_fallback_wrapper_unittest.cc
│   │           │   │   │   └── video_encoder_software_fallback_wrapper_unittest.cc
│   │           │   │   ├── video_codec.cc
│   │           │   │   ├── video_codec.h
│   │           │   │   ├── video_decoder.cc
│   │           │   │   ├── video_decoder.h
│   │           │   │   ├── video_decoder_factory.h
│   │           │   │   ├── video_decoder_software_fallback_wrapper.cc
│   │           │   │   ├── video_decoder_software_fallback_wrapper.h
│   │           │   │   ├── video_encoder.cc
│   │           │   │   ├── video_encoder.h
│   │           │   │   ├── video_encoder_config.cc
│   │           │   │   ├── video_encoder_config.h
│   │           │   │   ├── video_encoder_factory.h
│   │           │   │   ├── video_encoder_software_fallback_wrapper.cc
│   │           │   │   ├── video_encoder_software_fallback_wrapper.h
│   │           │   │   ├── vp8_frame_buffer_controller.h
│   │           │   │   ├── vp8_frame_config.cc
│   │           │   │   ├── vp8_frame_config.h
│   │           │   │   ├── vp8_temporal_layers.cc
│   │           │   │   ├── vp8_temporal_layers.h
│   │           │   │   ├── vp8_temporal_layers_factory.cc
│   │           │   │   ├── vp8_temporal_layers_factory.h
│   │           │   │   ├── vp9_profile.cc
│   │           │   │   └── vp9_profile.h
│   │           │   ├── video_track_source_proxy_factory.h
│   │           │   └── voip/
│   │           │       ├── BUILD.gn
│   │           │       ├── DEPS
│   │           │       ├── test/
│   │           │       │   ├── compile_all_headers.cc
│   │           │       │   ├── mock_voip_engine.h
│   │           │       │   └── voip_engine_factory_unittest.cc
│   │           │       ├── voip_base.h
│   │           │       ├── voip_codec.h
│   │           │       ├── voip_dtmf.h
│   │           │       ├── voip_engine.h
│   │           │       ├── voip_engine_factory.cc
│   │           │       ├── voip_engine_factory.h
│   │           │       ├── voip_network.h
│   │           │       ├── voip_statistics.h
│   │           │       └── voip_volume_control.h
│   │           ├── audio/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── audio_level.cc
│   │           │   ├── audio_level.h
│   │           │   ├── audio_receive_stream.cc
│   │           │   ├── audio_receive_stream.h
│   │           │   ├── audio_receive_stream_unittest.cc
│   │           │   ├── audio_send_stream.cc
│   │           │   ├── audio_send_stream.h
│   │           │   ├── audio_send_stream_tests.cc
│   │           │   ├── audio_send_stream_unittest.cc
│   │           │   ├── audio_state.cc
│   │           │   ├── audio_state.h
│   │           │   ├── audio_state_unittest.cc
│   │           │   ├── audio_transport_impl.cc
│   │           │   ├── audio_transport_impl.h
│   │           │   ├── channel_receive.cc
│   │           │   ├── channel_receive.h
│   │           │   ├── channel_receive_frame_transformer_delegate.cc
│   │           │   ├── channel_receive_frame_transformer_delegate.h
│   │           │   ├── channel_receive_frame_transformer_delegate_unittest.cc
│   │           │   ├── channel_send.cc
│   │           │   ├── channel_send.h
│   │           │   ├── channel_send_frame_transformer_delegate.cc
│   │           │   ├── channel_send_frame_transformer_delegate.h
│   │           │   ├── channel_send_frame_transformer_delegate_unittest.cc
│   │           │   ├── conversion.h
│   │           │   ├── mock_voe_channel_proxy.h
│   │           │   ├── null_audio_poller.cc
│   │           │   ├── null_audio_poller.h
│   │           │   ├── remix_resample.cc
│   │           │   ├── remix_resample.h
│   │           │   ├── remix_resample_unittest.cc
│   │           │   ├── test/
│   │           │   │   ├── audio_bwe_integration_test.cc
│   │           │   │   ├── audio_bwe_integration_test.h
│   │           │   │   ├── audio_end_to_end_test.cc
│   │           │   │   ├── audio_end_to_end_test.h
│   │           │   │   ├── audio_stats_test.cc
│   │           │   │   ├── low_bandwidth_audio_test.cc
│   │           │   │   ├── low_bandwidth_audio_test.py
│   │           │   │   ├── low_bandwidth_audio_test_flags.cc
│   │           │   │   ├── nack_test.cc
│   │           │   │   ├── pc_low_bandwidth_audio_test.cc
│   │           │   │   └── unittests/
│   │           │   │       └── low_bandwidth_audio_test_test.py
│   │           │   ├── utility/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── audio_frame_operations.cc
│   │           │   │   ├── audio_frame_operations.h
│   │           │   │   ├── audio_frame_operations_unittest.cc
│   │           │   │   ├── channel_mixer.cc
│   │           │   │   ├── channel_mixer.h
│   │           │   │   ├── channel_mixer_unittest.cc
│   │           │   │   ├── channel_mixing_matrix.cc
│   │           │   │   ├── channel_mixing_matrix.h
│   │           │   │   └── channel_mixing_matrix_unittest.cc
│   │           │   └── voip/
│   │           │       ├── BUILD.gn
│   │           │       ├── audio_channel.cc
│   │           │       ├── audio_channel.h
│   │           │       ├── audio_egress.cc
│   │           │       ├── audio_egress.h
│   │           │       ├── audio_ingress.cc
│   │           │       ├── audio_ingress.h
│   │           │       ├── test/
│   │           │       │   ├── BUILD.gn
│   │           │       │   ├── audio_channel_unittest.cc
│   │           │       │   ├── audio_egress_unittest.cc
│   │           │       │   ├── audio_ingress_unittest.cc
│   │           │       │   ├── mock_task_queue.h
│   │           │       │   └── voip_core_unittest.cc
│   │           │       ├── voip_core.cc
│   │           │       └── voip_core.h
│   │           ├── build_overrides/
│   │           │   ├── OWNERS
│   │           │   ├── README.md
│   │           │   ├── build.gni
│   │           │   └── gtest.gni
│   │           ├── call/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── adaptation/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── adaptation_constraint.cc
│   │           │   │   ├── adaptation_constraint.h
│   │           │   │   ├── broadcast_resource_listener.cc
│   │           │   │   ├── broadcast_resource_listener.h
│   │           │   │   ├── broadcast_resource_listener_unittest.cc
│   │           │   │   ├── degradation_preference_provider.cc
│   │           │   │   ├── degradation_preference_provider.h
│   │           │   │   ├── encoder_settings.cc
│   │           │   │   ├── encoder_settings.h
│   │           │   │   ├── resource_adaptation_processor.cc
│   │           │   │   ├── resource_adaptation_processor.h
│   │           │   │   ├── resource_adaptation_processor_interface.cc
│   │           │   │   ├── resource_adaptation_processor_interface.h
│   │           │   │   ├── resource_adaptation_processor_unittest.cc
│   │           │   │   ├── resource_unittest.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── fake_adaptation_constraint.cc
│   │           │   │   │   ├── fake_adaptation_constraint.h
│   │           │   │   │   ├── fake_frame_rate_provider.cc
│   │           │   │   │   ├── fake_frame_rate_provider.h
│   │           │   │   │   ├── fake_resource.cc
│   │           │   │   │   ├── fake_resource.h
│   │           │   │   │   ├── fake_video_stream_input_state_provider.cc
│   │           │   │   │   ├── fake_video_stream_input_state_provider.h
│   │           │   │   │   └── mock_resource_listener.h
│   │           │   │   ├── video_source_restrictions.cc
│   │           │   │   ├── video_source_restrictions.h
│   │           │   │   ├── video_source_restrictions_unittest.cc
│   │           │   │   ├── video_stream_adapter.cc
│   │           │   │   ├── video_stream_adapter.h
│   │           │   │   ├── video_stream_adapter_unittest.cc
│   │           │   │   ├── video_stream_input_state.cc
│   │           │   │   ├── video_stream_input_state.h
│   │           │   │   ├── video_stream_input_state_provider.cc
│   │           │   │   ├── video_stream_input_state_provider.h
│   │           │   │   └── video_stream_input_state_provider_unittest.cc
│   │           │   ├── audio_receive_stream.cc
│   │           │   ├── audio_receive_stream.h
│   │           │   ├── audio_send_stream.cc
│   │           │   ├── audio_send_stream.h
│   │           │   ├── audio_sender.h
│   │           │   ├── audio_state.cc
│   │           │   ├── audio_state.h
│   │           │   ├── bitrate_allocator.cc
│   │           │   ├── bitrate_allocator.h
│   │           │   ├── bitrate_allocator_unittest.cc
│   │           │   ├── bitrate_estimator_tests.cc
│   │           │   ├── call.cc
│   │           │   ├── call.h
│   │           │   ├── call_config.cc
│   │           │   ├── call_config.h
│   │           │   ├── call_factory.cc
│   │           │   ├── call_factory.h
│   │           │   ├── call_perf_tests.cc
│   │           │   ├── call_unittest.cc
│   │           │   ├── degraded_call.cc
│   │           │   ├── degraded_call.h
│   │           │   ├── fake_network_pipe.cc
│   │           │   ├── fake_network_pipe.h
│   │           │   ├── fake_network_pipe_unittest.cc
│   │           │   ├── flexfec_receive_stream.cc
│   │           │   ├── flexfec_receive_stream.h
│   │           │   ├── flexfec_receive_stream_impl.cc
│   │           │   ├── flexfec_receive_stream_impl.h
│   │           │   ├── flexfec_receive_stream_unittest.cc
│   │           │   ├── packet_receiver.h
│   │           │   ├── rampup_tests.cc
│   │           │   ├── rampup_tests.h
│   │           │   ├── receive_stream.h
│   │           │   ├── receive_time_calculator.cc
│   │           │   ├── receive_time_calculator.h
│   │           │   ├── receive_time_calculator_unittest.cc
│   │           │   ├── rtp_bitrate_configurator.cc
│   │           │   ├── rtp_bitrate_configurator.h
│   │           │   ├── rtp_bitrate_configurator_unittest.cc
│   │           │   ├── rtp_config.cc
│   │           │   ├── rtp_config.h
│   │           │   ├── rtp_demuxer.cc
│   │           │   ├── rtp_demuxer.h
│   │           │   ├── rtp_demuxer_unittest.cc
│   │           │   ├── rtp_packet_sink_interface.h
│   │           │   ├── rtp_payload_params.cc
│   │           │   ├── rtp_payload_params.h
│   │           │   ├── rtp_payload_params_unittest.cc
│   │           │   ├── rtp_stream_receiver_controller.cc
│   │           │   ├── rtp_stream_receiver_controller.h
│   │           │   ├── rtp_stream_receiver_controller_interface.h
│   │           │   ├── rtp_transport_config.h
│   │           │   ├── rtp_transport_controller_send.cc
│   │           │   ├── rtp_transport_controller_send.h
│   │           │   ├── rtp_transport_controller_send_factory.h
│   │           │   ├── rtp_transport_controller_send_factory_interface.h
│   │           │   ├── rtp_transport_controller_send_interface.h
│   │           │   ├── rtp_video_sender.cc
│   │           │   ├── rtp_video_sender.h
│   │           │   ├── rtp_video_sender_interface.h
│   │           │   ├── rtp_video_sender_unittest.cc
│   │           │   ├── rtx_receive_stream.cc
│   │           │   ├── rtx_receive_stream.h
│   │           │   ├── rtx_receive_stream_unittest.cc
│   │           │   ├── simulated_network.cc
│   │           │   ├── simulated_network.h
│   │           │   ├── simulated_network_unittest.cc
│   │           │   ├── simulated_packet_receiver.h
│   │           │   ├── syncable.cc
│   │           │   ├── syncable.h
│   │           │   ├── test/
│   │           │   │   ├── mock_audio_send_stream.h
│   │           │   │   ├── mock_bitrate_allocator.h
│   │           │   │   ├── mock_rtp_packet_sink_interface.h
│   │           │   │   └── mock_rtp_transport_controller_send.h
│   │           │   ├── version.cc
│   │           │   ├── version.h
│   │           │   ├── video_receive_stream.cc
│   │           │   ├── video_receive_stream.h
│   │           │   ├── video_send_stream.cc
│   │           │   └── video_send_stream.h
│   │           ├── codereview.settings
│   │           ├── common_audio/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── audio_converter.cc
│   │           │   ├── audio_converter.h
│   │           │   ├── audio_converter_unittest.cc
│   │           │   ├── audio_util.cc
│   │           │   ├── audio_util_unittest.cc
│   │           │   ├── channel_buffer.cc
│   │           │   ├── channel_buffer.h
│   │           │   ├── channel_buffer_unittest.cc
│   │           │   ├── fir_filter.h
│   │           │   ├── fir_filter_avx2.cc
│   │           │   ├── fir_filter_avx2.h
│   │           │   ├── fir_filter_c.cc
│   │           │   ├── fir_filter_c.h
│   │           │   ├── fir_filter_factory.cc
│   │           │   ├── fir_filter_factory.h
│   │           │   ├── fir_filter_neon.cc
│   │           │   ├── fir_filter_neon.h
│   │           │   ├── fir_filter_sse.cc
│   │           │   ├── fir_filter_sse.h
│   │           │   ├── fir_filter_unittest.cc
│   │           │   ├── include/
│   │           │   │   └── audio_util.h
│   │           │   ├── mocks/
│   │           │   │   └── mock_smoothing_filter.h
│   │           │   ├── real_fourier.cc
│   │           │   ├── real_fourier.h
│   │           │   ├── real_fourier_ooura.cc
│   │           │   ├── real_fourier_ooura.h
│   │           │   ├── real_fourier_unittest.cc
│   │           │   ├── resampler/
│   │           │   │   ├── include/
│   │           │   │   │   ├── push_resampler.h
│   │           │   │   │   └── resampler.h
│   │           │   │   ├── push_resampler.cc
│   │           │   │   ├── push_resampler_unittest.cc
│   │           │   │   ├── push_sinc_resampler.cc
│   │           │   │   ├── push_sinc_resampler.h
│   │           │   │   ├── push_sinc_resampler_unittest.cc
│   │           │   │   ├── resampler.cc
│   │           │   │   ├── resampler_unittest.cc
│   │           │   │   ├── sinc_resampler.cc
│   │           │   │   ├── sinc_resampler.h
│   │           │   │   ├── sinc_resampler_avx2.cc
│   │           │   │   ├── sinc_resampler_neon.cc
│   │           │   │   ├── sinc_resampler_sse.cc
│   │           │   │   ├── sinc_resampler_unittest.cc
│   │           │   │   ├── sinusoidal_linear_chirp_source.cc
│   │           │   │   └── sinusoidal_linear_chirp_source.h
│   │           │   ├── ring_buffer.c
│   │           │   ├── ring_buffer.h
│   │           │   ├── ring_buffer_unittest.cc
│   │           │   ├── signal_processing/
│   │           │   │   ├── auto_corr_to_refl_coef.c
│   │           │   │   ├── auto_correlation.c
│   │           │   │   ├── complex_bit_reverse.c
│   │           │   │   ├── complex_bit_reverse_arm.S
│   │           │   │   ├── complex_bit_reverse_mips.c
│   │           │   │   ├── complex_fft.c
│   │           │   │   ├── complex_fft_mips.c
│   │           │   │   ├── complex_fft_tables.h
│   │           │   │   ├── copy_set_operations.c
│   │           │   │   ├── cross_correlation.c
│   │           │   │   ├── cross_correlation_mips.c
│   │           │   │   ├── cross_correlation_neon.c
│   │           │   │   ├── division_operations.c
│   │           │   │   ├── dot_product_with_scale.cc
│   │           │   │   ├── dot_product_with_scale.h
│   │           │   │   ├── downsample_fast.c
│   │           │   │   ├── downsample_fast_mips.c
│   │           │   │   ├── downsample_fast_neon.c
│   │           │   │   ├── energy.c
│   │           │   │   ├── filter_ar.c
│   │           │   │   ├── filter_ar_fast_q12.c
│   │           │   │   ├── filter_ar_fast_q12_armv7.S
│   │           │   │   ├── filter_ar_fast_q12_mips.c
│   │           │   │   ├── filter_ma_fast_q12.c
│   │           │   │   ├── get_hanning_window.c
│   │           │   │   ├── get_scaling_square.c
│   │           │   │   ├── ilbc_specific_functions.c
│   │           │   │   ├── include/
│   │           │   │   │   ├── real_fft.h
│   │           │   │   │   ├── signal_processing_library.h
│   │           │   │   │   ├── spl_inl.h
│   │           │   │   │   ├── spl_inl_armv7.h
│   │           │   │   │   └── spl_inl_mips.h
│   │           │   │   ├── levinson_durbin.c
│   │           │   │   ├── lpc_to_refl_coef.c
│   │           │   │   ├── min_max_operations.c
│   │           │   │   ├── min_max_operations_mips.c
│   │           │   │   ├── min_max_operations_neon.c
│   │           │   │   ├── randomization_functions.c
│   │           │   │   ├── real_fft.c
│   │           │   │   ├── real_fft_unittest.cc
│   │           │   │   ├── refl_coef_to_lpc.c
│   │           │   │   ├── resample.c
│   │           │   │   ├── resample_48khz.c
│   │           │   │   ├── resample_by_2.c
│   │           │   │   ├── resample_by_2_internal.c
│   │           │   │   ├── resample_by_2_internal.h
│   │           │   │   ├── resample_by_2_mips.c
│   │           │   │   ├── resample_fractional.c
│   │           │   │   ├── signal_processing_unittest.cc
│   │           │   │   ├── spl_init.c
│   │           │   │   ├── spl_inl.c
│   │           │   │   ├── spl_sqrt.c
│   │           │   │   ├── splitting_filter.c
│   │           │   │   ├── sqrt_of_one_minus_x_squared.c
│   │           │   │   ├── vector_scaling_operations.c
│   │           │   │   └── vector_scaling_operations_mips.c
│   │           │   ├── smoothing_filter.cc
│   │           │   ├── smoothing_filter.h
│   │           │   ├── smoothing_filter_unittest.cc
│   │           │   ├── third_party/
│   │           │   │   ├── ooura/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── LICENSE
│   │           │   │   │   ├── README.chromium
│   │           │   │   │   ├── fft_size_128/
│   │           │   │   │   │   ├── ooura_fft.cc
│   │           │   │   │   │   ├── ooura_fft.h
│   │           │   │   │   │   ├── ooura_fft_mips.cc
│   │           │   │   │   │   ├── ooura_fft_neon.cc
│   │           │   │   │   │   ├── ooura_fft_sse2.cc
│   │           │   │   │   │   ├── ooura_fft_tables_common.h
│   │           │   │   │   │   └── ooura_fft_tables_neon_sse2.h
│   │           │   │   │   └── fft_size_256/
│   │           │   │   │       ├── fft4g.cc
│   │           │   │   │       └── fft4g.h
│   │           │   │   └── spl_sqrt_floor/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── LICENSE
│   │           │   │       ├── README.chromium
│   │           │   │       ├── spl_sqrt_floor.c
│   │           │   │       ├── spl_sqrt_floor.h
│   │           │   │       ├── spl_sqrt_floor_arm.S
│   │           │   │       └── spl_sqrt_floor_mips.c
│   │           │   ├── vad/
│   │           │   │   ├── include/
│   │           │   │   │   ├── vad.h
│   │           │   │   │   └── webrtc_vad.h
│   │           │   │   ├── mock/
│   │           │   │   │   └── mock_vad.h
│   │           │   │   ├── vad.cc
│   │           │   │   ├── vad_core.c
│   │           │   │   ├── vad_core.h
│   │           │   │   ├── vad_core_unittest.cc
│   │           │   │   ├── vad_filterbank.c
│   │           │   │   ├── vad_filterbank.h
│   │           │   │   ├── vad_filterbank_unittest.cc
│   │           │   │   ├── vad_gmm.c
│   │           │   │   ├── vad_gmm.h
│   │           │   │   ├── vad_gmm_unittest.cc
│   │           │   │   ├── vad_sp.c
│   │           │   │   ├── vad_sp.h
│   │           │   │   ├── vad_sp_unittest.cc
│   │           │   │   ├── vad_unittest.cc
│   │           │   │   ├── vad_unittest.h
│   │           │   │   └── webrtc_vad.c
│   │           │   ├── wav_file.cc
│   │           │   ├── wav_file.h
│   │           │   ├── wav_file_unittest.cc
│   │           │   ├── wav_header.cc
│   │           │   ├── wav_header.h
│   │           │   ├── wav_header_unittest.cc
│   │           │   ├── window_generator.cc
│   │           │   ├── window_generator.h
│   │           │   └── window_generator_unittest.cc
│   │           ├── common_video/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── bitrate_adjuster.cc
│   │           │   ├── bitrate_adjuster_unittest.cc
│   │           │   ├── frame_counts.h
│   │           │   ├── frame_rate_estimator.cc
│   │           │   ├── frame_rate_estimator.h
│   │           │   ├── frame_rate_estimator_unittest.cc
│   │           │   ├── generic_frame_descriptor/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── generic_frame_info.cc
│   │           │   │   └── generic_frame_info.h
│   │           │   ├── h264/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── h264_bitstream_parser.cc
│   │           │   │   ├── h264_bitstream_parser.h
│   │           │   │   ├── h264_bitstream_parser_unittest.cc
│   │           │   │   ├── h264_common.cc
│   │           │   │   ├── h264_common.h
│   │           │   │   ├── pps_parser.cc
│   │           │   │   ├── pps_parser.h
│   │           │   │   ├── pps_parser_unittest.cc
│   │           │   │   ├── sps_parser.cc
│   │           │   │   ├── sps_parser.h
│   │           │   │   ├── sps_parser_unittest.cc
│   │           │   │   ├── sps_vui_rewriter.cc
│   │           │   │   ├── sps_vui_rewriter.h
│   │           │   │   └── sps_vui_rewriter_unittest.cc
│   │           │   ├── include/
│   │           │   │   ├── bitrate_adjuster.h
│   │           │   │   ├── incoming_video_stream.h
│   │           │   │   ├── quality_limitation_reason.h
│   │           │   │   ├── video_frame_buffer.h
│   │           │   │   └── video_frame_buffer_pool.h
│   │           │   ├── incoming_video_stream.cc
│   │           │   ├── libyuv/
│   │           │   │   ├── include/
│   │           │   │   │   └── webrtc_libyuv.h
│   │           │   │   ├── libyuv_unittest.cc
│   │           │   │   └── webrtc_libyuv.cc
│   │           │   ├── test/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── utilities.cc
│   │           │   │   └── utilities.h
│   │           │   ├── video_frame_buffer.cc
│   │           │   ├── video_frame_buffer_pool.cc
│   │           │   ├── video_frame_buffer_pool_unittest.cc
│   │           │   ├── video_frame_unittest.cc
│   │           │   ├── video_render_frames.cc
│   │           │   └── video_render_frames.h
│   │           ├── data/
│   │           │   ├── audio_processing/
│   │           │   │   ├── OWNERS
│   │           │   │   └── android/
│   │           │   │       ├── output_data_fixed.pb
│   │           │   │       └── output_data_float.pb
│   │           │   └── voice_engine/
│   │           │       ├── audio_long16big_endian.pcm
│   │           │       ├── audio_long16noise.pcm
│   │           │       ├── audio_long8.pcm
│   │           │       ├── audio_short16.pcm
│   │           │       └── stereo_rtp_files/
│   │           │           ├── HRTF_pcm16wb.rtp
│   │           │           ├── HRTF_pcm16wb_jitter.rtp
│   │           │           ├── README.txt
│   │           │           ├── hrtf_g722_1C_48.rtp
│   │           │           ├── hrtf_g722_1C_48_jitterT2.rtp
│   │           │           ├── stereo_g729.rtp
│   │           │           ├── stereo_g729_jitter.rtp
│   │           │           ├── stereo_pcm16wb.rtp
│   │           │           ├── stereo_pcm16wb_jitter.rtp
│   │           │           ├── stereo_pcmu.rtp
│   │           │           ├── stereo_pcmu_jitter.rtp
│   │           │           ├── stereo_pcmu_vad.rtp
│   │           │           ├── stereo_pcmu_vad_jitter.rtp
│   │           │           └── toggling_stereo_g729_pt18_pt125.rtp
│   │           ├── docs/
│   │           │   ├── OWNERS
│   │           │   ├── bug-reporting.md
│   │           │   ├── faq.md
│   │           │   ├── native-code/
│   │           │   │   ├── android/
│   │           │   │   │   └── index.md
│   │           │   │   ├── development/
│   │           │   │   │   ├── index.md
│   │           │   │   │   └── prerequisite-sw/
│   │           │   │   │       └── index.md
│   │           │   │   ├── index.md
│   │           │   │   ├── ios/
│   │           │   │   │   └── index.md
│   │           │   │   ├── logging.md
│   │           │   │   └── rtp-hdrext/
│   │           │   │       ├── abs-capture-time/
│   │           │   │       │   └── README.md
│   │           │   │       ├── abs-send-time/
│   │           │   │       │   └── README.md
│   │           │   │       ├── color-space/
│   │           │   │       │   └── README.md
│   │           │   │       ├── inband-cn/
│   │           │   │       │   └── README.md
│   │           │   │       ├── index.md
│   │           │   │       ├── playout-delay/
│   │           │   │       │   └── README.md
│   │           │   │       ├── transport-wide-cc-02/
│   │           │   │       │   └── README.md
│   │           │   │       ├── video-content-type/
│   │           │   │       │   └── README.md
│   │           │   │       ├── video-frame-tracking-id/
│   │           │   │       │   └── README.md
│   │           │   │       ├── video-layers-allocation00/
│   │           │   │       │   └── README.md
│   │           │   │       └── video-timing/
│   │           │   │           └── README.md
│   │           │   └── release-notes.md
│   │           ├── examples/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── aarproject/
│   │           │   │   ├── .gitignore
│   │           │   │   ├── .idea/
│   │           │   │   │   ├── encodings.xml
│   │           │   │   │   ├── gradle.xml
│   │           │   │   │   ├── misc.xml
│   │           │   │   │   ├── modules.xml
│   │           │   │   │   └── runConfigurations.xml
│   │           │   │   ├── OWNERS
│   │           │   │   ├── app/
│   │           │   │   │   ├── .gitignore
│   │           │   │   │   ├── build.gradle
│   │           │   │   │   └── proguard-rules.pro
│   │           │   │   ├── build.gradle
│   │           │   │   ├── gradle.properties
│   │           │   │   └── settings.gradle
│   │           │   ├── androidapp/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── OWNERS
│   │           │   │   ├── README
│   │           │   │   ├── ant.properties
│   │           │   │   ├── build.xml
│   │           │   │   ├── project.properties
│   │           │   │   ├── res/
│   │           │   │   │   ├── layout/
│   │           │   │   │   │   ├── activity_call.xml
│   │           │   │   │   │   ├── activity_connect.xml
│   │           │   │   │   │   ├── fragment_call.xml
│   │           │   │   │   │   └── fragment_hud.xml
│   │           │   │   │   ├── menu/
│   │           │   │   │   │   └── connect_menu.xml
│   │           │   │   │   ├── values/
│   │           │   │   │   │   ├── arrays.xml
│   │           │   │   │   │   └── strings.xml
│   │           │   │   │   ├── values-v17/
│   │           │   │   │   │   └── styles.xml
│   │           │   │   │   ├── values-v21/
│   │           │   │   │   │   └── styles.xml
│   │           │   │   │   └── xml/
│   │           │   │   │       └── preferences.xml
│   │           │   │   ├── src/
│   │           │   │   │   └── org/
│   │           │   │   │       └── appspot/
│   │           │   │   │           └── apprtc/
│   │           │   │   │               ├── AppRTCAudioManager.java
│   │           │   │   │               ├── AppRTCBluetoothManager.java
│   │           │   │   │               ├── AppRTCClient.java
│   │           │   │   │               ├── AppRTCProximitySensor.java
│   │           │   │   │               ├── CallActivity.java
│   │           │   │   │               ├── CallFragment.java
│   │           │   │   │               ├── CaptureQualityController.java
│   │           │   │   │               ├── ConnectActivity.java
│   │           │   │   │               ├── CpuMonitor.java
│   │           │   │   │               ├── DirectRTCClient.java
│   │           │   │   │               ├── HudFragment.java
│   │           │   │   │               ├── PeerConnectionClient.java
│   │           │   │   │               ├── RecordedAudioToFileController.java
│   │           │   │   │               ├── RoomParametersFetcher.java
│   │           │   │   │               ├── RtcEventLog.java
│   │           │   │   │               ├── SettingsActivity.java
│   │           │   │   │               ├── SettingsFragment.java
│   │           │   │   │               ├── TCPChannelClient.java
│   │           │   │   │               ├── UnhandledExceptionHandler.java
│   │           │   │   │               ├── WebSocketChannelClient.java
│   │           │   │   │               ├── WebSocketRTCClient.java
│   │           │   │   │               └── util/
│   │           │   │   │                   ├── AppRTCUtils.java
│   │           │   │   │                   └── AsyncHttpURLConnection.java
│   │           │   │   ├── start_loopback_stubbed_camera_saved_video_out.py
│   │           │   │   └── third_party/
│   │           │   │       └── autobanh/
│   │           │   │           ├── BUILD.gn
│   │           │   │           ├── LICENSE
│   │           │   │           ├── LICENSE.md
│   │           │   │           ├── NOTICE
│   │           │   │           └── lib/
│   │           │   │               └── autobanh.jar
│   │           │   ├── androidjunit/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── README
│   │           │   │   └── src/
│   │           │   │       └── org/
│   │           │   │           └── appspot/
│   │           │   │               └── apprtc/
│   │           │   │                   ├── BluetoothManagerTest.java
│   │           │   │                   ├── DirectRTCClientTest.java
│   │           │   │                   └── TCPChannelClientTest.java
│   │           │   ├── androidnativeapi/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── java/
│   │           │   │   │   └── org/
│   │           │   │   │       └── webrtc/
│   │           │   │   │           └── examples/
│   │           │   │   │               └── androidnativeapi/
│   │           │   │   │                   ├── CallClient.java
│   │           │   │   │                   └── MainActivity.java
│   │           │   │   ├── jni/
│   │           │   │   │   ├── android_call_client.cc
│   │           │   │   │   ├── android_call_client.h
│   │           │   │   │   └── onload.cc
│   │           │   │   └── res/
│   │           │   │       ├── layout/
│   │           │   │       │   └── activity_main.xml
│   │           │   │       └── values/
│   │           │   │           └── strings.xml
│   │           │   ├── androidtests/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── OWNERS
│   │           │   │   ├── README
│   │           │   │   ├── ant.properties
│   │           │   │   ├── build.xml
│   │           │   │   ├── gradle_project_test.py
│   │           │   │   ├── project.properties
│   │           │   │   ├── src/
│   │           │   │   │   └── org/
│   │           │   │   │       └── appspot/
│   │           │   │   │           └── apprtc/
│   │           │   │   │               └── test/
│   │           │   │   │                   └── PeerConnectionClientTest.java
│   │           │   │   └── third_party/
│   │           │   │       ├── .gitignore
│   │           │   │       └── README.webrtc
│   │           │   ├── androidvoip/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── java/
│   │           │   │   │   └── org/
│   │           │   │   │       └── webrtc/
│   │           │   │   │           └── examples/
│   │           │   │   │               └── androidvoip/
│   │           │   │   │                   ├── MainActivity.java
│   │           │   │   │                   ├── OnVoipClientTaskCompleted.java
│   │           │   │   │                   └── VoipClient.java
│   │           │   │   ├── jni/
│   │           │   │   │   ├── android_voip_client.cc
│   │           │   │   │   ├── android_voip_client.h
│   │           │   │   │   └── onload.cc
│   │           │   │   └── res/
│   │           │   │       ├── layout/
│   │           │   │       │   └── activity_main.xml
│   │           │   │       └── values/
│   │           │   │           ├── colors.xml
│   │           │   │           └── strings.xml
│   │           │   ├── objc/
│   │           │   │   ├── AppRTCMobile/
│   │           │   │   │   ├── ARDAppClient+Internal.h
│   │           │   │   │   ├── ARDAppClient.h
│   │           │   │   │   ├── ARDAppClient.m
│   │           │   │   │   ├── ARDAppEngineClient.h
│   │           │   │   │   ├── ARDAppEngineClient.m
│   │           │   │   │   ├── ARDCaptureController.h
│   │           │   │   │   ├── ARDCaptureController.m
│   │           │   │   │   ├── ARDExternalSampleCapturer.h
│   │           │   │   │   ├── ARDExternalSampleCapturer.m
│   │           │   │   │   ├── ARDJoinResponse+Internal.h
│   │           │   │   │   ├── ARDJoinResponse.h
│   │           │   │   │   ├── ARDJoinResponse.m
│   │           │   │   │   ├── ARDMessageResponse+Internal.h
│   │           │   │   │   ├── ARDMessageResponse.h
│   │           │   │   │   ├── ARDMessageResponse.m
│   │           │   │   │   ├── ARDRoomServerClient.h
│   │           │   │   │   ├── ARDSettingsModel+Private.h
│   │           │   │   │   ├── ARDSettingsModel.h
│   │           │   │   │   ├── ARDSettingsModel.m
│   │           │   │   │   ├── ARDSettingsStore.h
│   │           │   │   │   ├── ARDSettingsStore.m
│   │           │   │   │   ├── ARDSignalingChannel.h
│   │           │   │   │   ├── ARDSignalingMessage.h
│   │           │   │   │   ├── ARDSignalingMessage.m
│   │           │   │   │   ├── ARDStatsBuilder.h
│   │           │   │   │   ├── ARDStatsBuilder.m
│   │           │   │   │   ├── ARDTURNClient+Internal.h
│   │           │   │   │   ├── ARDTURNClient.h
│   │           │   │   │   ├── ARDTURNClient.m
│   │           │   │   │   ├── ARDWebSocketChannel.h
│   │           │   │   │   ├── ARDWebSocketChannel.m
│   │           │   │   │   ├── RTCIceCandidate+JSON.h
│   │           │   │   │   ├── RTCIceCandidate+JSON.m
│   │           │   │   │   ├── RTCIceServer+JSON.h
│   │           │   │   │   ├── RTCIceServer+JSON.m
│   │           │   │   │   ├── RTCSessionDescription+JSON.h
│   │           │   │   │   ├── RTCSessionDescription+JSON.m
│   │           │   │   │   ├── common/
│   │           │   │   │   │   ├── ARDUtilities.h
│   │           │   │   │   │   └── ARDUtilities.m
│   │           │   │   │   ├── ios/
│   │           │   │   │   │   ├── ARDAppDelegate.h
│   │           │   │   │   │   ├── ARDAppDelegate.m
│   │           │   │   │   │   ├── ARDFileCaptureController.h
│   │           │   │   │   │   ├── ARDFileCaptureController.m
│   │           │   │   │   │   ├── ARDMainView.h
│   │           │   │   │   │   ├── ARDMainView.m
│   │           │   │   │   │   ├── ARDMainViewController.h
│   │           │   │   │   │   ├── ARDMainViewController.m
│   │           │   │   │   │   ├── ARDSettingsViewController.h
│   │           │   │   │   │   ├── ARDSettingsViewController.m
│   │           │   │   │   │   ├── ARDStatsView.h
│   │           │   │   │   │   ├── ARDStatsView.m
│   │           │   │   │   │   ├── ARDVideoCallView.h
│   │           │   │   │   │   ├── ARDVideoCallView.m
│   │           │   │   │   │   ├── ARDVideoCallViewController.h
│   │           │   │   │   │   ├── ARDVideoCallViewController.m
│   │           │   │   │   │   ├── Info.plist
│   │           │   │   │   │   ├── RTCVideoCodecInfo+HumanReadable.h
│   │           │   │   │   │   ├── RTCVideoCodecInfo+HumanReadable.m
│   │           │   │   │   │   ├── UIImage+ARDUtilities.h
│   │           │   │   │   │   ├── UIImage+ARDUtilities.m
│   │           │   │   │   │   ├── broadcast_extension/
│   │           │   │   │   │   │   ├── ARDBroadcastSampleHandler.h
│   │           │   │   │   │   │   ├── ARDBroadcastSampleHandler.m
│   │           │   │   │   │   │   ├── ARDBroadcastSetupViewController.h
│   │           │   │   │   │   │   ├── ARDBroadcastSetupViewController.m
│   │           │   │   │   │   │   ├── BroadcastSetupUIInfo.plist
│   │           │   │   │   │   │   └── BroadcastUploadInfo.plist
│   │           │   │   │   │   └── main.m
│   │           │   │   │   ├── mac/
│   │           │   │   │   │   ├── APPRTCAppDelegate.h
│   │           │   │   │   │   ├── APPRTCAppDelegate.m
│   │           │   │   │   │   ├── APPRTCViewController.h
│   │           │   │   │   │   ├── APPRTCViewController.m
│   │           │   │   │   │   ├── Info.plist
│   │           │   │   │   │   └── main.m
│   │           │   │   │   ├── tests/
│   │           │   │   │   │   ├── ARDAppClient_xctest.mm
│   │           │   │   │   │   ├── ARDFileCaptureController_xctest.mm
│   │           │   │   │   │   ├── ARDSettingsModel_xctest.mm
│   │           │   │   │   │   └── main.mm
│   │           │   │   │   └── third_party/
│   │           │   │   │       └── SocketRocket/
│   │           │   │   │           ├── LICENSE
│   │           │   │   │           ├── SRWebSocket.h
│   │           │   │   │           └── SRWebSocket.m
│   │           │   │   └── README
│   │           │   ├── objcnativeapi/
│   │           │   │   ├── Info.plist
│   │           │   │   └── objc/
│   │           │   │       ├── NADAppDelegate.h
│   │           │   │       ├── NADAppDelegate.m
│   │           │   │       ├── NADViewController.h
│   │           │   │       ├── NADViewController.mm
│   │           │   │       ├── main.m
│   │           │   │       ├── objc_call_client.h
│   │           │   │       └── objc_call_client.mm
│   │           │   ├── peerconnection/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── client/
│   │           │   │   │   ├── conductor.cc
│   │           │   │   │   ├── conductor.h
│   │           │   │   │   ├── defaults.cc
│   │           │   │   │   ├── defaults.h
│   │           │   │   │   ├── flag_defs.h
│   │           │   │   │   ├── linux/
│   │           │   │   │   │   ├── main.cc
│   │           │   │   │   │   ├── main_wnd.cc
│   │           │   │   │   │   └── main_wnd.h
│   │           │   │   │   ├── main.cc
│   │           │   │   │   ├── main_wnd.cc
│   │           │   │   │   ├── main_wnd.h
│   │           │   │   │   ├── peer_connection_client.cc
│   │           │   │   │   └── peer_connection_client.h
│   │           │   │   └── server/
│   │           │   │       ├── data_socket.cc
│   │           │   │       ├── data_socket.h
│   │           │   │       ├── main.cc
│   │           │   │       ├── peer_channel.cc
│   │           │   │       ├── peer_channel.h
│   │           │   │       ├── server_test.html
│   │           │   │       ├── utils.cc
│   │           │   │       └── utils.h
│   │           │   ├── stunprober/
│   │           │   │   └── main.cc
│   │           │   ├── stunserver/
│   │           │   │   └── stunserver_main.cc
│   │           │   ├── turnserver/
│   │           │   │   ├── read_auth_file.cc
│   │           │   │   ├── read_auth_file.h
│   │           │   │   ├── read_auth_file_unittest.cc
│   │           │   │   └── turnserver_main.cc
│   │           │   └── unityplugin/
│   │           │       ├── ANDROID_INSTRUCTION
│   │           │       ├── DEPS
│   │           │       ├── README
│   │           │       ├── class_reference_holder.cc
│   │           │       ├── class_reference_holder.h
│   │           │       ├── java/
│   │           │       │   └── src/
│   │           │       │       └── org/
│   │           │       │           └── webrtc/
│   │           │       │               └── UnityUtility.java
│   │           │       ├── jni_onload.cc
│   │           │       ├── simple_peer_connection.cc
│   │           │       ├── simple_peer_connection.h
│   │           │       ├── unity_plugin_apis.cc
│   │           │       ├── unity_plugin_apis.h
│   │           │       ├── video_observer.cc
│   │           │       └── video_observer.h
│   │           ├── g3doc/
│   │           │   ├── OWNERS
│   │           │   ├── abseil-in-webrtc.md
│   │           │   ├── become_a_committer.md
│   │           │   ├── g3doc.lua
│   │           │   ├── how_to_write_documentation.md
│   │           │   ├── implementation_basics.md
│   │           │   ├── index.md
│   │           │   ├── sitemap.md
│   │           │   ├── style-guide/
│   │           │   │   ├── OWNERS
│   │           │   │   └── h-cc-pairs.md
│   │           │   ├── style-guide.md
│   │           │   └── supported-platforms-and-compilers.md
│   │           ├── g3doc.lua
│   │           ├── license_template.txt
│   │           ├── logging/
│   │           │   ├── BUILD.gn
│   │           │   ├── OWNERS
│   │           │   ├── g3doc/
│   │           │   │   └── rtc_event_log.md
│   │           │   └── rtc_event_log/
│   │           │       ├── DEPS
│   │           │       ├── encoder/
│   │           │       │   ├── blob_encoding.cc
│   │           │       │   ├── blob_encoding.h
│   │           │       │   ├── blob_encoding_unittest.cc
│   │           │       │   ├── delta_encoding.cc
│   │           │       │   ├── delta_encoding.h
│   │           │       │   ├── delta_encoding_unittest.cc
│   │           │       │   ├── rtc_event_log_encoder.h
│   │           │       │   ├── rtc_event_log_encoder_common.cc
│   │           │       │   ├── rtc_event_log_encoder_common.h
│   │           │       │   ├── rtc_event_log_encoder_common_unittest.cc
│   │           │       │   ├── rtc_event_log_encoder_legacy.cc
│   │           │       │   ├── rtc_event_log_encoder_legacy.h
│   │           │       │   ├── rtc_event_log_encoder_new_format.cc
│   │           │       │   ├── rtc_event_log_encoder_new_format.h
│   │           │       │   ├── rtc_event_log_encoder_unittest.cc
│   │           │       │   ├── var_int.cc
│   │           │       │   └── var_int.h
│   │           │       ├── events/
│   │           │       │   ├── rtc_event_alr_state.cc
│   │           │       │   ├── rtc_event_alr_state.h
│   │           │       │   ├── rtc_event_audio_network_adaptation.cc
│   │           │       │   ├── rtc_event_audio_network_adaptation.h
│   │           │       │   ├── rtc_event_audio_playout.cc
│   │           │       │   ├── rtc_event_audio_playout.h
│   │           │       │   ├── rtc_event_audio_receive_stream_config.cc
│   │           │       │   ├── rtc_event_audio_receive_stream_config.h
│   │           │       │   ├── rtc_event_audio_send_stream_config.cc
│   │           │       │   ├── rtc_event_audio_send_stream_config.h
│   │           │       │   ├── rtc_event_bwe_update_delay_based.cc
│   │           │       │   ├── rtc_event_bwe_update_delay_based.h
│   │           │       │   ├── rtc_event_bwe_update_loss_based.cc
│   │           │       │   ├── rtc_event_bwe_update_loss_based.h
│   │           │       │   ├── rtc_event_dtls_transport_state.cc
│   │           │       │   ├── rtc_event_dtls_transport_state.h
│   │           │       │   ├── rtc_event_dtls_writable_state.cc
│   │           │       │   ├── rtc_event_dtls_writable_state.h
│   │           │       │   ├── rtc_event_frame_decoded.cc
│   │           │       │   ├── rtc_event_frame_decoded.h
│   │           │       │   ├── rtc_event_generic_ack_received.cc
│   │           │       │   ├── rtc_event_generic_ack_received.h
│   │           │       │   ├── rtc_event_generic_packet_received.cc
│   │           │       │   ├── rtc_event_generic_packet_received.h
│   │           │       │   ├── rtc_event_generic_packet_sent.cc
│   │           │       │   ├── rtc_event_generic_packet_sent.h
│   │           │       │   ├── rtc_event_ice_candidate_pair.cc
│   │           │       │   ├── rtc_event_ice_candidate_pair.h
│   │           │       │   ├── rtc_event_ice_candidate_pair_config.cc
│   │           │       │   ├── rtc_event_ice_candidate_pair_config.h
│   │           │       │   ├── rtc_event_probe_cluster_created.cc
│   │           │       │   ├── rtc_event_probe_cluster_created.h
│   │           │       │   ├── rtc_event_probe_result_failure.cc
│   │           │       │   ├── rtc_event_probe_result_failure.h
│   │           │       │   ├── rtc_event_probe_result_success.cc
│   │           │       │   ├── rtc_event_probe_result_success.h
│   │           │       │   ├── rtc_event_remote_estimate.h
│   │           │       │   ├── rtc_event_route_change.cc
│   │           │       │   ├── rtc_event_route_change.h
│   │           │       │   ├── rtc_event_rtcp_packet_incoming.cc
│   │           │       │   ├── rtc_event_rtcp_packet_incoming.h
│   │           │       │   ├── rtc_event_rtcp_packet_outgoing.cc
│   │           │       │   ├── rtc_event_rtcp_packet_outgoing.h
│   │           │       │   ├── rtc_event_rtp_packet_incoming.cc
│   │           │       │   ├── rtc_event_rtp_packet_incoming.h
│   │           │       │   ├── rtc_event_rtp_packet_outgoing.cc
│   │           │       │   ├── rtc_event_rtp_packet_outgoing.h
│   │           │       │   ├── rtc_event_video_receive_stream_config.cc
│   │           │       │   ├── rtc_event_video_receive_stream_config.h
│   │           │       │   ├── rtc_event_video_send_stream_config.cc
│   │           │       │   └── rtc_event_video_send_stream_config.h
│   │           │       ├── fake_rtc_event_log.cc
│   │           │       ├── fake_rtc_event_log.h
│   │           │       ├── fake_rtc_event_log_factory.cc
│   │           │       ├── fake_rtc_event_log_factory.h
│   │           │       ├── ice_logger.cc
│   │           │       ├── ice_logger.h
│   │           │       ├── logged_events.cc
│   │           │       ├── logged_events.h
│   │           │       ├── mock/
│   │           │       │   ├── mock_rtc_event_log.cc
│   │           │       │   └── mock_rtc_event_log.h
│   │           │       ├── output/
│   │           │       │   └── rtc_event_log_output_file.h
│   │           │       ├── rtc_event_log.proto
│   │           │       ├── rtc_event_log2.proto
│   │           │       ├── rtc_event_log2rtp_dump.cc
│   │           │       ├── rtc_event_log_impl.cc
│   │           │       ├── rtc_event_log_impl.h
│   │           │       ├── rtc_event_log_parser.cc
│   │           │       ├── rtc_event_log_parser.h
│   │           │       ├── rtc_event_log_unittest.cc
│   │           │       ├── rtc_event_log_unittest_helper.cc
│   │           │       ├── rtc_event_log_unittest_helper.h
│   │           │       ├── rtc_event_processor.cc
│   │           │       ├── rtc_event_processor.h
│   │           │       ├── rtc_event_processor_unittest.cc
│   │           │       ├── rtc_stream_config.cc
│   │           │       └── rtc_stream_config.h
│   │           ├── media/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── base/
│   │           │   │   ├── adapted_video_track_source.cc
│   │           │   │   ├── adapted_video_track_source.h
│   │           │   │   ├── audio_source.h
│   │           │   │   ├── codec.cc
│   │           │   │   ├── codec.h
│   │           │   │   ├── codec_unittest.cc
│   │           │   │   ├── delayable.h
│   │           │   │   ├── fake_frame_source.cc
│   │           │   │   ├── fake_frame_source.h
│   │           │   │   ├── fake_media_engine.cc
│   │           │   │   ├── fake_media_engine.h
│   │           │   │   ├── fake_network_interface.h
│   │           │   │   ├── fake_rtp.cc
│   │           │   │   ├── fake_rtp.h
│   │           │   │   ├── fake_video_renderer.cc
│   │           │   │   ├── fake_video_renderer.h
│   │           │   │   ├── h264_profile_level_id.cc
│   │           │   │   ├── h264_profile_level_id.h
│   │           │   │   ├── media_channel.cc
│   │           │   │   ├── media_channel.h
│   │           │   │   ├── media_config.h
│   │           │   │   ├── media_constants.cc
│   │           │   │   ├── media_constants.h
│   │           │   │   ├── media_engine.cc
│   │           │   │   ├── media_engine.h
│   │           │   │   ├── media_engine_unittest.cc
│   │           │   │   ├── rid_description.cc
│   │           │   │   ├── rid_description.h
│   │           │   │   ├── rtp_utils.cc
│   │           │   │   ├── rtp_utils.h
│   │           │   │   ├── rtp_utils_unittest.cc
│   │           │   │   ├── sdp_video_format_utils.cc
│   │           │   │   ├── sdp_video_format_utils.h
│   │           │   │   ├── sdp_video_format_utils_unittest.cc
│   │           │   │   ├── stream_params.cc
│   │           │   │   ├── stream_params.h
│   │           │   │   ├── stream_params_unittest.cc
│   │           │   │   ├── test_utils.cc
│   │           │   │   ├── test_utils.h
│   │           │   │   ├── turn_utils.cc
│   │           │   │   ├── turn_utils.h
│   │           │   │   ├── turn_utils_unittest.cc
│   │           │   │   ├── video_adapter.cc
│   │           │   │   ├── video_adapter.h
│   │           │   │   ├── video_adapter_unittest.cc
│   │           │   │   ├── video_broadcaster.cc
│   │           │   │   ├── video_broadcaster.h
│   │           │   │   ├── video_broadcaster_unittest.cc
│   │           │   │   ├── video_common.cc
│   │           │   │   ├── video_common.h
│   │           │   │   ├── video_common_unittest.cc
│   │           │   │   ├── video_source_base.cc
│   │           │   │   ├── video_source_base.h
│   │           │   │   └── vp9_profile.h
│   │           │   ├── engine/
│   │           │   │   ├── adm_helpers.cc
│   │           │   │   ├── adm_helpers.h
│   │           │   │   ├── encoder_simulcast_proxy.cc
│   │           │   │   ├── encoder_simulcast_proxy.h
│   │           │   │   ├── encoder_simulcast_proxy_unittest.cc
│   │           │   │   ├── fake_video_codec_factory.cc
│   │           │   │   ├── fake_video_codec_factory.h
│   │           │   │   ├── fake_webrtc_call.cc
│   │           │   │   ├── fake_webrtc_call.h
│   │           │   │   ├── fake_webrtc_video_engine.cc
│   │           │   │   ├── fake_webrtc_video_engine.h
│   │           │   │   ├── internal_decoder_factory.cc
│   │           │   │   ├── internal_decoder_factory.h
│   │           │   │   ├── internal_decoder_factory_unittest.cc
│   │           │   │   ├── internal_encoder_factory.cc
│   │           │   │   ├── internal_encoder_factory.h
│   │           │   │   ├── multiplex_codec_factory.cc
│   │           │   │   ├── multiplex_codec_factory.h
│   │           │   │   ├── multiplex_codec_factory_unittest.cc
│   │           │   │   ├── null_webrtc_video_engine.h
│   │           │   │   ├── null_webrtc_video_engine_unittest.cc
│   │           │   │   ├── payload_type_mapper.cc
│   │           │   │   ├── payload_type_mapper.h
│   │           │   │   ├── payload_type_mapper_unittest.cc
│   │           │   │   ├── simulcast.cc
│   │           │   │   ├── simulcast.h
│   │           │   │   ├── simulcast_encoder_adapter.cc
│   │           │   │   ├── simulcast_encoder_adapter.h
│   │           │   │   ├── simulcast_encoder_adapter_unittest.cc
│   │           │   │   ├── simulcast_unittest.cc
│   │           │   │   ├── unhandled_packets_buffer.cc
│   │           │   │   ├── unhandled_packets_buffer.h
│   │           │   │   ├── unhandled_packets_buffer_unittest.cc
│   │           │   │   ├── webrtc_media_engine.cc
│   │           │   │   ├── webrtc_media_engine.h
│   │           │   │   ├── webrtc_media_engine_defaults.cc
│   │           │   │   ├── webrtc_media_engine_defaults.h
│   │           │   │   ├── webrtc_media_engine_unittest.cc
│   │           │   │   ├── webrtc_video_engine.cc
│   │           │   │   ├── webrtc_video_engine.h
│   │           │   │   ├── webrtc_video_engine_unittest.cc
│   │           │   │   ├── webrtc_voice_engine.cc
│   │           │   │   ├── webrtc_voice_engine.h
│   │           │   │   └── webrtc_voice_engine_unittest.cc
│   │           │   └── sctp/
│   │           │       ├── OWNERS
│   │           │       ├── dcsctp_transport.cc
│   │           │       ├── dcsctp_transport.h
│   │           │       ├── sctp_transport_factory.cc
│   │           │       ├── sctp_transport_factory.h
│   │           │       ├── sctp_transport_internal.h
│   │           │       ├── usrsctp_transport.cc
│   │           │       ├── usrsctp_transport.h
│   │           │       ├── usrsctp_transport_reliability_unittest.cc
│   │           │       └── usrsctp_transport_unittest.cc
│   │           ├── modules/
│   │           │   ├── BUILD.gn
│   │           │   ├── async_audio_processing/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── async_audio_processing.cc
│   │           │   │   └── async_audio_processing.h
│   │           │   ├── audio_coding/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── acm2/
│   │           │   │   │   ├── acm_receive_test.cc
│   │           │   │   │   ├── acm_receive_test.h
│   │           │   │   │   ├── acm_receiver.cc
│   │           │   │   │   ├── acm_receiver.h
│   │           │   │   │   ├── acm_receiver_unittest.cc
│   │           │   │   │   ├── acm_remixing.cc
│   │           │   │   │   ├── acm_remixing.h
│   │           │   │   │   ├── acm_remixing_unittest.cc
│   │           │   │   │   ├── acm_resampler.cc
│   │           │   │   │   ├── acm_resampler.h
│   │           │   │   │   ├── acm_send_test.cc
│   │           │   │   │   ├── acm_send_test.h
│   │           │   │   │   ├── audio_coding_module.cc
│   │           │   │   │   ├── audio_coding_module_unittest.cc
│   │           │   │   │   ├── call_statistics.cc
│   │           │   │   │   ├── call_statistics.h
│   │           │   │   │   └── call_statistics_unittest.cc
│   │           │   │   ├── audio_coding.gni
│   │           │   │   ├── audio_network_adaptor/
│   │           │   │   │   ├── audio_network_adaptor_config.cc
│   │           │   │   │   ├── audio_network_adaptor_impl.cc
│   │           │   │   │   ├── audio_network_adaptor_impl.h
│   │           │   │   │   ├── audio_network_adaptor_impl_unittest.cc
│   │           │   │   │   ├── bitrate_controller.cc
│   │           │   │   │   ├── bitrate_controller.h
│   │           │   │   │   ├── bitrate_controller_unittest.cc
│   │           │   │   │   ├── channel_controller.cc
│   │           │   │   │   ├── channel_controller.h
│   │           │   │   │   ├── channel_controller_unittest.cc
│   │           │   │   │   ├── config.proto
│   │           │   │   │   ├── controller.cc
│   │           │   │   │   ├── controller.h
│   │           │   │   │   ├── controller_manager.cc
│   │           │   │   │   ├── controller_manager.h
│   │           │   │   │   ├── controller_manager_unittest.cc
│   │           │   │   │   ├── debug_dump.proto
│   │           │   │   │   ├── debug_dump_writer.cc
│   │           │   │   │   ├── debug_dump_writer.h
│   │           │   │   │   ├── dtx_controller.cc
│   │           │   │   │   ├── dtx_controller.h
│   │           │   │   │   ├── dtx_controller_unittest.cc
│   │           │   │   │   ├── event_log_writer.cc
│   │           │   │   │   ├── event_log_writer.h
│   │           │   │   │   ├── event_log_writer_unittest.cc
│   │           │   │   │   ├── fec_controller_plr_based.cc
│   │           │   │   │   ├── fec_controller_plr_based.h
│   │           │   │   │   ├── fec_controller_plr_based_unittest.cc
│   │           │   │   │   ├── frame_length_controller.cc
│   │           │   │   │   ├── frame_length_controller.h
│   │           │   │   │   ├── frame_length_controller_unittest.cc
│   │           │   │   │   ├── frame_length_controller_v2.cc
│   │           │   │   │   ├── frame_length_controller_v2.h
│   │           │   │   │   ├── frame_length_controller_v2_unittest.cc
│   │           │   │   │   ├── include/
│   │           │   │   │   │   ├── audio_network_adaptor.h
│   │           │   │   │   │   └── audio_network_adaptor_config.h
│   │           │   │   │   ├── mock/
│   │           │   │   │   │   ├── mock_audio_network_adaptor.h
│   │           │   │   │   │   ├── mock_controller.h
│   │           │   │   │   │   ├── mock_controller_manager.h
│   │           │   │   │   │   └── mock_debug_dump_writer.h
│   │           │   │   │   ├── parse_ana_dump.py
│   │           │   │   │   └── util/
│   │           │   │   │       ├── threshold_curve.h
│   │           │   │   │       └── threshold_curve_unittest.cc
│   │           │   │   ├── codecs/
│   │           │   │   │   ├── audio_decoder.h
│   │           │   │   │   ├── audio_encoder.h
│   │           │   │   │   ├── builtin_audio_decoder_factory_unittest.cc
│   │           │   │   │   ├── builtin_audio_encoder_factory_unittest.cc
│   │           │   │   │   ├── cng/
│   │           │   │   │   │   ├── audio_encoder_cng.cc
│   │           │   │   │   │   ├── audio_encoder_cng.h
│   │           │   │   │   │   ├── audio_encoder_cng_unittest.cc
│   │           │   │   │   │   ├── cng_unittest.cc
│   │           │   │   │   │   ├── webrtc_cng.cc
│   │           │   │   │   │   └── webrtc_cng.h
│   │           │   │   │   ├── g711/
│   │           │   │   │   │   ├── audio_decoder_pcm.cc
│   │           │   │   │   │   ├── audio_decoder_pcm.h
│   │           │   │   │   │   ├── audio_encoder_pcm.cc
│   │           │   │   │   │   ├── audio_encoder_pcm.h
│   │           │   │   │   │   ├── g711_interface.c
│   │           │   │   │   │   ├── g711_interface.h
│   │           │   │   │   │   └── test/
│   │           │   │   │   │       └── testG711.cc
│   │           │   │   │   ├── g722/
│   │           │   │   │   │   ├── audio_decoder_g722.cc
│   │           │   │   │   │   ├── audio_decoder_g722.h
│   │           │   │   │   │   ├── audio_encoder_g722.cc
│   │           │   │   │   │   ├── audio_encoder_g722.h
│   │           │   │   │   │   ├── g722_interface.c
│   │           │   │   │   │   ├── g722_interface.h
│   │           │   │   │   │   └── test/
│   │           │   │   │   │       └── testG722.cc
│   │           │   │   │   ├── ilbc/
│   │           │   │   │   │   ├── abs_quant.c
│   │           │   │   │   │   ├── abs_quant.h
│   │           │   │   │   │   ├── abs_quant_loop.c
│   │           │   │   │   │   ├── abs_quant_loop.h
│   │           │   │   │   │   ├── audio_decoder_ilbc.cc
│   │           │   │   │   │   ├── audio_decoder_ilbc.h
│   │           │   │   │   │   ├── audio_encoder_ilbc.cc
│   │           │   │   │   │   ├── audio_encoder_ilbc.h
│   │           │   │   │   │   ├── augmented_cb_corr.c
│   │           │   │   │   │   ├── augmented_cb_corr.h
│   │           │   │   │   │   ├── bw_expand.c
│   │           │   │   │   │   ├── bw_expand.h
│   │           │   │   │   │   ├── cb_construct.c
│   │           │   │   │   │   ├── cb_construct.h
│   │           │   │   │   │   ├── cb_mem_energy.c
│   │           │   │   │   │   ├── cb_mem_energy.h
│   │           │   │   │   │   ├── cb_mem_energy_augmentation.c
│   │           │   │   │   │   ├── cb_mem_energy_augmentation.h
│   │           │   │   │   │   ├── cb_mem_energy_calc.c
│   │           │   │   │   │   ├── cb_mem_energy_calc.h
│   │           │   │   │   │   ├── cb_search.c
│   │           │   │   │   │   ├── cb_search.h
│   │           │   │   │   │   ├── cb_search_core.c
│   │           │   │   │   │   ├── cb_search_core.h
│   │           │   │   │   │   ├── cb_update_best_index.c
│   │           │   │   │   │   ├── cb_update_best_index.h
│   │           │   │   │   │   ├── chebyshev.c
│   │           │   │   │   │   ├── chebyshev.h
│   │           │   │   │   │   ├── comp_corr.c
│   │           │   │   │   │   ├── comp_corr.h
│   │           │   │   │   │   ├── complexityMeasures.m
│   │           │   │   │   │   ├── constants.c
│   │           │   │   │   │   ├── constants.h
│   │           │   │   │   │   ├── create_augmented_vec.c
│   │           │   │   │   │   ├── create_augmented_vec.h
│   │           │   │   │   │   ├── decode.c
│   │           │   │   │   │   ├── decode.h
│   │           │   │   │   │   ├── decode_residual.c
│   │           │   │   │   │   ├── decode_residual.h
│   │           │   │   │   │   ├── decoder_interpolate_lsf.c
│   │           │   │   │   │   ├── decoder_interpolate_lsf.h
│   │           │   │   │   │   ├── defines.h
│   │           │   │   │   │   ├── do_plc.c
│   │           │   │   │   │   ├── do_plc.h
│   │           │   │   │   │   ├── encode.c
│   │           │   │   │   │   ├── encode.h
│   │           │   │   │   │   ├── energy_inverse.c
│   │           │   │   │   │   ├── energy_inverse.h
│   │           │   │   │   │   ├── enh_upsample.c
│   │           │   │   │   │   ├── enh_upsample.h
│   │           │   │   │   │   ├── enhancer.c
│   │           │   │   │   │   ├── enhancer.h
│   │           │   │   │   │   ├── enhancer_interface.c
│   │           │   │   │   │   ├── enhancer_interface.h
│   │           │   │   │   │   ├── filtered_cb_vecs.c
│   │           │   │   │   │   ├── filtered_cb_vecs.h
│   │           │   │   │   │   ├── frame_classify.c
│   │           │   │   │   │   ├── frame_classify.h
│   │           │   │   │   │   ├── gain_dequant.c
│   │           │   │   │   │   ├── gain_dequant.h
│   │           │   │   │   │   ├── gain_quant.c
│   │           │   │   │   │   ├── gain_quant.h
│   │           │   │   │   │   ├── get_cd_vec.c
│   │           │   │   │   │   ├── get_cd_vec.h
│   │           │   │   │   │   ├── get_lsp_poly.c
│   │           │   │   │   │   ├── get_lsp_poly.h
│   │           │   │   │   │   ├── get_sync_seq.c
│   │           │   │   │   │   ├── get_sync_seq.h
│   │           │   │   │   │   ├── hp_input.c
│   │           │   │   │   │   ├── hp_input.h
│   │           │   │   │   │   ├── hp_output.c
│   │           │   │   │   │   ├── hp_output.h
│   │           │   │   │   │   ├── ilbc.c
│   │           │   │   │   │   ├── ilbc.h
│   │           │   │   │   │   ├── ilbc_unittest.cc
│   │           │   │   │   │   ├── index_conv_dec.c
│   │           │   │   │   │   ├── index_conv_dec.h
│   │           │   │   │   │   ├── index_conv_enc.c
│   │           │   │   │   │   ├── index_conv_enc.h
│   │           │   │   │   │   ├── init_decode.c
│   │           │   │   │   │   ├── init_decode.h
│   │           │   │   │   │   ├── init_encode.c
│   │           │   │   │   │   ├── init_encode.h
│   │           │   │   │   │   ├── interpolate.c
│   │           │   │   │   │   ├── interpolate.h
│   │           │   │   │   │   ├── interpolate_samples.c
│   │           │   │   │   │   ├── interpolate_samples.h
│   │           │   │   │   │   ├── lpc_encode.c
│   │           │   │   │   │   ├── lpc_encode.h
│   │           │   │   │   │   ├── lsf_check.c
│   │           │   │   │   │   ├── lsf_check.h
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_dec.c
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_dec.h
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_enc.c
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_enc.h
│   │           │   │   │   │   ├── lsf_to_lsp.c
│   │           │   │   │   │   ├── lsf_to_lsp.h
│   │           │   │   │   │   ├── lsf_to_poly.c
│   │           │   │   │   │   ├── lsf_to_poly.h
│   │           │   │   │   │   ├── lsp_to_lsf.c
│   │           │   │   │   │   ├── lsp_to_lsf.h
│   │           │   │   │   │   ├── my_corr.c
│   │           │   │   │   │   ├── my_corr.h
│   │           │   │   │   │   ├── nearest_neighbor.c
│   │           │   │   │   │   ├── nearest_neighbor.h
│   │           │   │   │   │   ├── pack_bits.c
│   │           │   │   │   │   ├── pack_bits.h
│   │           │   │   │   │   ├── poly_to_lsf.c
│   │           │   │   │   │   ├── poly_to_lsf.h
│   │           │   │   │   │   ├── poly_to_lsp.c
│   │           │   │   │   │   ├── poly_to_lsp.h
│   │           │   │   │   │   ├── refiner.c
│   │           │   │   │   │   ├── refiner.h
│   │           │   │   │   │   ├── simple_interpolate_lsf.c
│   │           │   │   │   │   ├── simple_interpolate_lsf.h
│   │           │   │   │   │   ├── simple_lpc_analysis.c
│   │           │   │   │   │   ├── simple_lpc_analysis.h
│   │           │   │   │   │   ├── simple_lsf_dequant.c
│   │           │   │   │   │   ├── simple_lsf_dequant.h
│   │           │   │   │   │   ├── simple_lsf_quant.c
│   │           │   │   │   │   ├── simple_lsf_quant.h
│   │           │   │   │   │   ├── smooth.c
│   │           │   │   │   │   ├── smooth.h
│   │           │   │   │   │   ├── smooth_out_data.c
│   │           │   │   │   │   ├── smooth_out_data.h
│   │           │   │   │   │   ├── sort_sq.c
│   │           │   │   │   │   ├── sort_sq.h
│   │           │   │   │   │   ├── split_vq.c
│   │           │   │   │   │   ├── split_vq.h
│   │           │   │   │   │   ├── state_construct.c
│   │           │   │   │   │   ├── state_construct.h
│   │           │   │   │   │   ├── state_search.c
│   │           │   │   │   │   ├── state_search.h
│   │           │   │   │   │   ├── swap_bytes.c
│   │           │   │   │   │   ├── swap_bytes.h
│   │           │   │   │   │   ├── test/
│   │           │   │   │   │   │   ├── empty.cc
│   │           │   │   │   │   │   ├── iLBC_test.c
│   │           │   │   │   │   │   ├── iLBC_testLib.c
│   │           │   │   │   │   │   └── iLBC_testprogram.c
│   │           │   │   │   │   ├── unpack_bits.c
│   │           │   │   │   │   ├── unpack_bits.h
│   │           │   │   │   │   ├── vq3.c
│   │           │   │   │   │   ├── vq3.h
│   │           │   │   │   │   ├── vq4.c
│   │           │   │   │   │   ├── vq4.h
│   │           │   │   │   │   ├── window32_w32.c
│   │           │   │   │   │   ├── window32_w32.h
│   │           │   │   │   │   ├── xcorr_coef.c
│   │           │   │   │   │   └── xcorr_coef.h
│   │           │   │   │   ├── isac/
│   │           │   │   │   │   ├── audio_decoder_isac_t.h
│   │           │   │   │   │   ├── audio_decoder_isac_t_impl.h
│   │           │   │   │   │   ├── audio_encoder_isac_t.h
│   │           │   │   │   │   ├── audio_encoder_isac_t_impl.h
│   │           │   │   │   │   ├── bandwidth_info.h
│   │           │   │   │   │   ├── empty.cc
│   │           │   │   │   │   ├── fix/
│   │           │   │   │   │   │   ├── include/
│   │           │   │   │   │   │   │   ├── audio_decoder_isacfix.h
│   │           │   │   │   │   │   │   ├── audio_encoder_isacfix.h
│   │           │   │   │   │   │   │   └── isacfix.h
│   │           │   │   │   │   │   ├── source/
│   │           │   │   │   │   │   │   ├── arith_routines.c
│   │           │   │   │   │   │   │   ├── arith_routines_hist.c
│   │           │   │   │   │   │   │   ├── arith_routines_logist.c
│   │           │   │   │   │   │   │   ├── arith_routins.h
│   │           │   │   │   │   │   │   ├── audio_decoder_isacfix.cc
│   │           │   │   │   │   │   │   ├── audio_encoder_isacfix.cc
│   │           │   │   │   │   │   │   ├── bandwidth_estimator.c
│   │           │   │   │   │   │   │   ├── bandwidth_estimator.h
│   │           │   │   │   │   │   │   ├── codec.h
│   │           │   │   │   │   │   │   ├── decode.c
│   │           │   │   │   │   │   │   ├── decode_bwe.c
│   │           │   │   │   │   │   │   ├── decode_plc.c
│   │           │   │   │   │   │   │   ├── encode.c
│   │           │   │   │   │   │   │   ├── entropy_coding.c
│   │           │   │   │   │   │   │   ├── entropy_coding.h
│   │           │   │   │   │   │   │   ├── entropy_coding_mips.c
│   │           │   │   │   │   │   │   ├── entropy_coding_neon.c
│   │           │   │   │   │   │   │   ├── fft.c
│   │           │   │   │   │   │   │   ├── fft.h
│   │           │   │   │   │   │   │   ├── filterbank_internal.h
│   │           │   │   │   │   │   │   ├── filterbank_tables.c
│   │           │   │   │   │   │   │   ├── filterbank_tables.h
│   │           │   │   │   │   │   │   ├── filterbanks.c
│   │           │   │   │   │   │   │   ├── filterbanks_mips.c
│   │           │   │   │   │   │   │   ├── filterbanks_neon.c
│   │           │   │   │   │   │   │   ├── filterbanks_unittest.cc
│   │           │   │   │   │   │   │   ├── filters.c
│   │           │   │   │   │   │   │   ├── filters_mips.c
│   │           │   │   │   │   │   │   ├── filters_neon.c
│   │           │   │   │   │   │   │   ├── filters_unittest.cc
│   │           │   │   │   │   │   │   ├── initialize.c
│   │           │   │   │   │   │   │   ├── isac_fix_type.h
│   │           │   │   │   │   │   │   ├── isacfix.c
│   │           │   │   │   │   │   │   ├── lattice.c
│   │           │   │   │   │   │   │   ├── lattice_armv7.S
│   │           │   │   │   │   │   │   ├── lattice_c.c
│   │           │   │   │   │   │   │   ├── lattice_mips.c
│   │           │   │   │   │   │   │   ├── lattice_neon.c
│   │           │   │   │   │   │   │   ├── lpc_masking_model.c
│   │           │   │   │   │   │   │   ├── lpc_masking_model.h
│   │           │   │   │   │   │   │   ├── lpc_masking_model_mips.c
│   │           │   │   │   │   │   │   ├── lpc_masking_model_unittest.cc
│   │           │   │   │   │   │   │   ├── lpc_tables.c
│   │           │   │   │   │   │   │   ├── lpc_tables.h
│   │           │   │   │   │   │   │   ├── pitch_estimator.c
│   │           │   │   │   │   │   │   ├── pitch_estimator.h
│   │           │   │   │   │   │   │   ├── pitch_estimator_c.c
│   │           │   │   │   │   │   │   ├── pitch_estimator_mips.c
│   │           │   │   │   │   │   │   ├── pitch_filter.c
│   │           │   │   │   │   │   │   ├── pitch_filter_armv6.S
│   │           │   │   │   │   │   │   ├── pitch_filter_c.c
│   │           │   │   │   │   │   │   ├── pitch_filter_mips.c
│   │           │   │   │   │   │   │   ├── pitch_gain_tables.c
│   │           │   │   │   │   │   │   ├── pitch_gain_tables.h
│   │           │   │   │   │   │   │   ├── pitch_lag_tables.c
│   │           │   │   │   │   │   │   ├── pitch_lag_tables.h
│   │           │   │   │   │   │   │   ├── settings.h
│   │           │   │   │   │   │   │   ├── spectrum_ar_model_tables.c
│   │           │   │   │   │   │   │   ├── spectrum_ar_model_tables.h
│   │           │   │   │   │   │   │   ├── structs.h
│   │           │   │   │   │   │   │   ├── transform.c
│   │           │   │   │   │   │   │   ├── transform_mips.c
│   │           │   │   │   │   │   │   ├── transform_neon.c
│   │           │   │   │   │   │   │   ├── transform_tables.c
│   │           │   │   │   │   │   │   └── transform_unittest.cc
│   │           │   │   │   │   │   └── test/
│   │           │   │   │   │   │       ├── isac_speed_test.cc
│   │           │   │   │   │   │       └── kenny.cc
│   │           │   │   │   │   ├── isac_webrtc_api_test.cc
│   │           │   │   │   │   └── main/
│   │           │   │   │   │       ├── include/
│   │           │   │   │   │       │   ├── audio_decoder_isac.h
│   │           │   │   │   │       │   ├── audio_encoder_isac.h
│   │           │   │   │   │       │   └── isac.h
│   │           │   │   │   │       ├── source/
│   │           │   │   │   │       │   ├── arith_routines.c
│   │           │   │   │   │       │   ├── arith_routines.h
│   │           │   │   │   │       │   ├── arith_routines_hist.c
│   │           │   │   │   │       │   ├── arith_routines_logist.c
│   │           │   │   │   │       │   ├── audio_decoder_isac.cc
│   │           │   │   │   │       │   ├── audio_encoder_isac.cc
│   │           │   │   │   │       │   ├── audio_encoder_isac_unittest.cc
│   │           │   │   │   │       │   ├── bandwidth_estimator.c
│   │           │   │   │   │       │   ├── bandwidth_estimator.h
│   │           │   │   │   │       │   ├── codec.h
│   │           │   │   │   │       │   ├── crc.c
│   │           │   │   │   │       │   ├── crc.h
│   │           │   │   │   │       │   ├── decode.c
│   │           │   │   │   │       │   ├── decode_bwe.c
│   │           │   │   │   │       │   ├── encode.c
│   │           │   │   │   │       │   ├── encode_lpc_swb.c
│   │           │   │   │   │       │   ├── encode_lpc_swb.h
│   │           │   │   │   │       │   ├── entropy_coding.c
│   │           │   │   │   │       │   ├── entropy_coding.h
│   │           │   │   │   │       │   ├── filter_functions.c
│   │           │   │   │   │       │   ├── filter_functions.h
│   │           │   │   │   │       │   ├── filterbanks.c
│   │           │   │   │   │       │   ├── intialize.c
│   │           │   │   │   │       │   ├── isac.c
│   │           │   │   │   │       │   ├── isac_float_type.h
│   │           │   │   │   │       │   ├── isac_unittest.cc
│   │           │   │   │   │       │   ├── isac_vad.c
│   │           │   │   │   │       │   ├── isac_vad.h
│   │           │   │   │   │       │   ├── lattice.c
│   │           │   │   │   │       │   ├── lpc_analysis.c
│   │           │   │   │   │       │   ├── lpc_analysis.h
│   │           │   │   │   │       │   ├── lpc_gain_swb_tables.c
│   │           │   │   │   │       │   ├── lpc_gain_swb_tables.h
│   │           │   │   │   │       │   ├── lpc_shape_swb12_tables.c
│   │           │   │   │   │       │   ├── lpc_shape_swb12_tables.h
│   │           │   │   │   │       │   ├── lpc_shape_swb16_tables.c
│   │           │   │   │   │       │   ├── lpc_shape_swb16_tables.h
│   │           │   │   │   │       │   ├── lpc_tables.c
│   │           │   │   │   │       │   ├── lpc_tables.h
│   │           │   │   │   │       │   ├── os_specific_inline.h
│   │           │   │   │   │       │   ├── pitch_estimator.c
│   │           │   │   │   │       │   ├── pitch_estimator.h
│   │           │   │   │   │       │   ├── pitch_filter.c
│   │           │   │   │   │       │   ├── pitch_filter.h
│   │           │   │   │   │       │   ├── pitch_gain_tables.c
│   │           │   │   │   │       │   ├── pitch_gain_tables.h
│   │           │   │   │   │       │   ├── pitch_lag_tables.c
│   │           │   │   │   │       │   ├── pitch_lag_tables.h
│   │           │   │   │   │       │   ├── settings.h
│   │           │   │   │   │       │   ├── spectrum_ar_model_tables.c
│   │           │   │   │   │       │   ├── spectrum_ar_model_tables.h
│   │           │   │   │   │       │   ├── structs.h
│   │           │   │   │   │       │   └── transform.c
│   │           │   │   │   │       ├── test/
│   │           │   │   │   │       │   ├── ReleaseTest-API/
│   │           │   │   │   │       │   │   └── ReleaseTest-API.cc
│   │           │   │   │   │       │   ├── SwitchingSampRate/
│   │           │   │   │   │       │   │   └── SwitchingSampRate.cc
│   │           │   │   │   │       │   └── simpleKenny.c
│   │           │   │   │   │       └── util/
│   │           │   │   │   │           ├── utility.c
│   │           │   │   │   │           └── utility.h
│   │           │   │   │   ├── legacy_encoded_audio_frame.cc
│   │           │   │   │   ├── legacy_encoded_audio_frame.h
│   │           │   │   │   ├── legacy_encoded_audio_frame_unittest.cc
│   │           │   │   │   ├── opus/
│   │           │   │   │   │   ├── audio_coder_opus_common.cc
│   │           │   │   │   │   ├── audio_coder_opus_common.h
│   │           │   │   │   │   ├── audio_decoder_multi_channel_opus_impl.cc
│   │           │   │   │   │   ├── audio_decoder_multi_channel_opus_impl.h
│   │           │   │   │   │   ├── audio_decoder_multi_channel_opus_unittest.cc
│   │           │   │   │   │   ├── audio_decoder_opus.cc
│   │           │   │   │   │   ├── audio_decoder_opus.h
│   │           │   │   │   │   ├── audio_encoder_multi_channel_opus_impl.cc
│   │           │   │   │   │   ├── audio_encoder_multi_channel_opus_impl.h
│   │           │   │   │   │   ├── audio_encoder_multi_channel_opus_unittest.cc
│   │           │   │   │   │   ├── audio_encoder_opus.cc
│   │           │   │   │   │   ├── audio_encoder_opus.h
│   │           │   │   │   │   ├── audio_encoder_opus_unittest.cc
│   │           │   │   │   │   ├── opus_bandwidth_unittest.cc
│   │           │   │   │   │   ├── opus_complexity_unittest.cc
│   │           │   │   │   │   ├── opus_fec_test.cc
│   │           │   │   │   │   ├── opus_inst.h
│   │           │   │   │   │   ├── opus_interface.cc
│   │           │   │   │   │   ├── opus_interface.h
│   │           │   │   │   │   ├── opus_speed_test.cc
│   │           │   │   │   │   ├── opus_unittest.cc
│   │           │   │   │   │   └── test/
│   │           │   │   │   │       ├── BUILD.gn
│   │           │   │   │   │       ├── audio_ring_buffer.cc
│   │           │   │   │   │       ├── audio_ring_buffer.h
│   │           │   │   │   │       ├── audio_ring_buffer_unittest.cc
│   │           │   │   │   │       ├── blocker.cc
│   │           │   │   │   │       ├── blocker.h
│   │           │   │   │   │       ├── blocker_unittest.cc
│   │           │   │   │   │       ├── lapped_transform.cc
│   │           │   │   │   │       ├── lapped_transform.h
│   │           │   │   │   │       └── lapped_transform_unittest.cc
│   │           │   │   │   ├── pcm16b/
│   │           │   │   │   │   ├── audio_decoder_pcm16b.cc
│   │           │   │   │   │   ├── audio_decoder_pcm16b.h
│   │           │   │   │   │   ├── audio_encoder_pcm16b.cc
│   │           │   │   │   │   ├── audio_encoder_pcm16b.h
│   │           │   │   │   │   ├── pcm16b.c
│   │           │   │   │   │   ├── pcm16b.h
│   │           │   │   │   │   ├── pcm16b_common.cc
│   │           │   │   │   │   └── pcm16b_common.h
│   │           │   │   │   ├── red/
│   │           │   │   │   │   ├── audio_encoder_copy_red.cc
│   │           │   │   │   │   ├── audio_encoder_copy_red.h
│   │           │   │   │   │   └── audio_encoder_copy_red_unittest.cc
│   │           │   │   │   └── tools/
│   │           │   │   │       ├── audio_codec_speed_test.cc
│   │           │   │   │       └── audio_codec_speed_test.h
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── index.md
│   │           │   │   ├── include/
│   │           │   │   │   ├── audio_coding_module.h
│   │           │   │   │   └── audio_coding_module_typedefs.h
│   │           │   │   ├── neteq/
│   │           │   │   │   ├── accelerate.cc
│   │           │   │   │   ├── accelerate.h
│   │           │   │   │   ├── audio_decoder_unittest.cc
│   │           │   │   │   ├── audio_multi_vector.cc
│   │           │   │   │   ├── audio_multi_vector.h
│   │           │   │   │   ├── audio_multi_vector_unittest.cc
│   │           │   │   │   ├── audio_vector.cc
│   │           │   │   │   ├── audio_vector.h
│   │           │   │   │   ├── audio_vector_unittest.cc
│   │           │   │   │   ├── background_noise.cc
│   │           │   │   │   ├── background_noise.h
│   │           │   │   │   ├── background_noise_unittest.cc
│   │           │   │   │   ├── buffer_level_filter.cc
│   │           │   │   │   ├── buffer_level_filter.h
│   │           │   │   │   ├── buffer_level_filter_unittest.cc
│   │           │   │   │   ├── comfort_noise.cc
│   │           │   │   │   ├── comfort_noise.h
│   │           │   │   │   ├── comfort_noise_unittest.cc
│   │           │   │   │   ├── cross_correlation.cc
│   │           │   │   │   ├── cross_correlation.h
│   │           │   │   │   ├── decision_logic.cc
│   │           │   │   │   ├── decision_logic.h
│   │           │   │   │   ├── decision_logic_unittest.cc
│   │           │   │   │   ├── decoder_database.cc
│   │           │   │   │   ├── decoder_database.h
│   │           │   │   │   ├── decoder_database_unittest.cc
│   │           │   │   │   ├── default_neteq_factory.cc
│   │           │   │   │   ├── default_neteq_factory.h
│   │           │   │   │   ├── delay_manager.cc
│   │           │   │   │   ├── delay_manager.h
│   │           │   │   │   ├── delay_manager_unittest.cc
│   │           │   │   │   ├── dsp_helper.cc
│   │           │   │   │   ├── dsp_helper.h
│   │           │   │   │   ├── dsp_helper_unittest.cc
│   │           │   │   │   ├── dtmf_buffer.cc
│   │           │   │   │   ├── dtmf_buffer.h
│   │           │   │   │   ├── dtmf_buffer_unittest.cc
│   │           │   │   │   ├── dtmf_tone_generator.cc
│   │           │   │   │   ├── dtmf_tone_generator.h
│   │           │   │   │   ├── dtmf_tone_generator_unittest.cc
│   │           │   │   │   ├── expand.cc
│   │           │   │   │   ├── expand.h
│   │           │   │   │   ├── expand_uma_logger.cc
│   │           │   │   │   ├── expand_uma_logger.h
│   │           │   │   │   ├── expand_unittest.cc
│   │           │   │   │   ├── g3doc/
│   │           │   │   │   │   └── index.md
│   │           │   │   │   ├── histogram.cc
│   │           │   │   │   ├── histogram.h
│   │           │   │   │   ├── histogram_unittest.cc
│   │           │   │   │   ├── merge.cc
│   │           │   │   │   ├── merge.h
│   │           │   │   │   ├── merge_unittest.cc
│   │           │   │   │   ├── mock/
│   │           │   │   │   │   ├── mock_buffer_level_filter.h
│   │           │   │   │   │   ├── mock_decoder_database.h
│   │           │   │   │   │   ├── mock_delay_manager.h
│   │           │   │   │   │   ├── mock_dtmf_buffer.h
│   │           │   │   │   │   ├── mock_dtmf_tone_generator.h
│   │           │   │   │   │   ├── mock_expand.h
│   │           │   │   │   │   ├── mock_histogram.h
│   │           │   │   │   │   ├── mock_neteq_controller.h
│   │           │   │   │   │   ├── mock_packet_buffer.h
│   │           │   │   │   │   ├── mock_red_payload_splitter.h
│   │           │   │   │   │   └── mock_statistics_calculator.h
│   │           │   │   │   ├── nack_tracker.cc
│   │           │   │   │   ├── nack_tracker.h
│   │           │   │   │   ├── nack_tracker_unittest.cc
│   │           │   │   │   ├── neteq_decoder_plc_unittest.cc
│   │           │   │   │   ├── neteq_impl.cc
│   │           │   │   │   ├── neteq_impl.h
│   │           │   │   │   ├── neteq_impl_unittest.cc
│   │           │   │   │   ├── neteq_network_stats_unittest.cc
│   │           │   │   │   ├── neteq_stereo_unittest.cc
│   │           │   │   │   ├── neteq_unittest.cc
│   │           │   │   │   ├── neteq_unittest.proto
│   │           │   │   │   ├── normal.cc
│   │           │   │   │   ├── normal.h
│   │           │   │   │   ├── normal_unittest.cc
│   │           │   │   │   ├── packet.cc
│   │           │   │   │   ├── packet.h
│   │           │   │   │   ├── packet_buffer.cc
│   │           │   │   │   ├── packet_buffer.h
│   │           │   │   │   ├── packet_buffer_unittest.cc
│   │           │   │   │   ├── post_decode_vad.cc
│   │           │   │   │   ├── post_decode_vad.h
│   │           │   │   │   ├── post_decode_vad_unittest.cc
│   │           │   │   │   ├── preemptive_expand.cc
│   │           │   │   │   ├── preemptive_expand.h
│   │           │   │   │   ├── random_vector.cc
│   │           │   │   │   ├── random_vector.h
│   │           │   │   │   ├── random_vector_unittest.cc
│   │           │   │   │   ├── red_payload_splitter.cc
│   │           │   │   │   ├── red_payload_splitter.h
│   │           │   │   │   ├── red_payload_splitter_unittest.cc
│   │           │   │   │   ├── statistics_calculator.cc
│   │           │   │   │   ├── statistics_calculator.h
│   │           │   │   │   ├── statistics_calculator_unittest.cc
│   │           │   │   │   ├── sync_buffer.cc
│   │           │   │   │   ├── sync_buffer.h
│   │           │   │   │   ├── sync_buffer_unittest.cc
│   │           │   │   │   ├── test/
│   │           │   │   │   │   ├── delay_tool/
│   │           │   │   │   │   │   ├── parse_delay_file.m
│   │           │   │   │   │   │   └── plot_neteq_delay.m
│   │           │   │   │   │   ├── neteq_decoding_test.cc
│   │           │   │   │   │   ├── neteq_decoding_test.h
│   │           │   │   │   │   ├── neteq_ilbc_quality_test.cc
│   │           │   │   │   │   ├── neteq_isac_quality_test.cc
│   │           │   │   │   │   ├── neteq_opus_quality_test.cc
│   │           │   │   │   │   ├── neteq_pcm16b_quality_test.cc
│   │           │   │   │   │   ├── neteq_pcmu_quality_test.cc
│   │           │   │   │   │   ├── neteq_performance_unittest.cc
│   │           │   │   │   │   ├── neteq_speed_test.cc
│   │           │   │   │   │   ├── result_sink.cc
│   │           │   │   │   │   └── result_sink.h
│   │           │   │   │   ├── time_stretch.cc
│   │           │   │   │   ├── time_stretch.h
│   │           │   │   │   ├── time_stretch_unittest.cc
│   │           │   │   │   ├── timestamp_scaler.cc
│   │           │   │   │   ├── timestamp_scaler.h
│   │           │   │   │   ├── timestamp_scaler_unittest.cc
│   │           │   │   │   └── tools/
│   │           │   │   │       ├── DEPS
│   │           │   │   │       ├── README.md
│   │           │   │   │       ├── audio_checksum.h
│   │           │   │   │       ├── audio_loop.cc
│   │           │   │   │       ├── audio_loop.h
│   │           │   │   │       ├── audio_sink.cc
│   │           │   │   │       ├── audio_sink.h
│   │           │   │   │       ├── constant_pcm_packet_source.cc
│   │           │   │   │       ├── constant_pcm_packet_source.h
│   │           │   │   │       ├── encode_neteq_input.cc
│   │           │   │   │       ├── encode_neteq_input.h
│   │           │   │   │       ├── fake_decode_from_file.cc
│   │           │   │   │       ├── fake_decode_from_file.h
│   │           │   │   │       ├── initial_packet_inserter_neteq_input.cc
│   │           │   │   │       ├── initial_packet_inserter_neteq_input.h
│   │           │   │   │       ├── input_audio_file.cc
│   │           │   │   │       ├── input_audio_file.h
│   │           │   │   │       ├── input_audio_file_unittest.cc
│   │           │   │   │       ├── neteq_delay_analyzer.cc
│   │           │   │   │       ├── neteq_delay_analyzer.h
│   │           │   │   │       ├── neteq_event_log_input.cc
│   │           │   │   │       ├── neteq_event_log_input.h
│   │           │   │   │       ├── neteq_input.cc
│   │           │   │   │       ├── neteq_input.h
│   │           │   │   │       ├── neteq_packet_source_input.cc
│   │           │   │   │       ├── neteq_packet_source_input.h
│   │           │   │   │       ├── neteq_performance_test.cc
│   │           │   │   │       ├── neteq_performance_test.h
│   │           │   │   │       ├── neteq_quality_test.cc
│   │           │   │   │       ├── neteq_quality_test.h
│   │           │   │   │       ├── neteq_replacement_input.cc
│   │           │   │   │       ├── neteq_replacement_input.h
│   │           │   │   │       ├── neteq_rtpplay.cc
│   │           │   │   │       ├── neteq_rtpplay_test.sh
│   │           │   │   │       ├── neteq_stats_getter.cc
│   │           │   │   │       ├── neteq_stats_getter.h
│   │           │   │   │       ├── neteq_stats_plotter.cc
│   │           │   │   │       ├── neteq_stats_plotter.h
│   │           │   │   │       ├── neteq_test.cc
│   │           │   │   │       ├── neteq_test.h
│   │           │   │   │       ├── neteq_test_factory.cc
│   │           │   │   │       ├── neteq_test_factory.h
│   │           │   │   │       ├── output_audio_file.h
│   │           │   │   │       ├── output_wav_file.h
│   │           │   │   │       ├── packet.cc
│   │           │   │   │       ├── packet.h
│   │           │   │   │       ├── packet_source.cc
│   │           │   │   │       ├── packet_source.h
│   │           │   │   │       ├── packet_unittest.cc
│   │           │   │   │       ├── resample_input_audio_file.cc
│   │           │   │   │       ├── resample_input_audio_file.h
│   │           │   │   │       ├── rtc_event_log_source.cc
│   │           │   │   │       ├── rtc_event_log_source.h
│   │           │   │   │       ├── rtp_analyze.cc
│   │           │   │   │       ├── rtp_encode.cc
│   │           │   │   │       ├── rtp_file_source.cc
│   │           │   │   │       ├── rtp_file_source.h
│   │           │   │   │       ├── rtp_generator.cc
│   │           │   │   │       ├── rtp_generator.h
│   │           │   │   │       ├── rtp_jitter.cc
│   │           │   │   │       └── rtpcat.cc
│   │           │   │   └── test/
│   │           │   │       ├── Channel.cc
│   │           │   │       ├── Channel.h
│   │           │   │       ├── EncodeDecodeTest.cc
│   │           │   │       ├── EncodeDecodeTest.h
│   │           │   │       ├── PCMFile.cc
│   │           │   │       ├── PCMFile.h
│   │           │   │       ├── PacketLossTest.cc
│   │           │   │       ├── PacketLossTest.h
│   │           │   │       ├── RTPFile.cc
│   │           │   │       ├── RTPFile.h
│   │           │   │       ├── TestAllCodecs.cc
│   │           │   │       ├── TestAllCodecs.h
│   │           │   │       ├── TestRedFec.cc
│   │           │   │       ├── TestRedFec.h
│   │           │   │       ├── TestStereo.cc
│   │           │   │       ├── TestStereo.h
│   │           │   │       ├── TestVADDTX.cc
│   │           │   │       ├── TestVADDTX.h
│   │           │   │       ├── Tester.cc
│   │           │   │       ├── TwoWayCommunication.cc
│   │           │   │       ├── TwoWayCommunication.h
│   │           │   │       ├── iSACTest.cc
│   │           │   │       ├── iSACTest.h
│   │           │   │       ├── opus_test.cc
│   │           │   │       ├── opus_test.h
│   │           │   │       └── target_delay_unittest.cc
│   │           │   ├── audio_device/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── android/
│   │           │   │   │   ├── aaudio_player.cc
│   │           │   │   │   ├── aaudio_player.h
│   │           │   │   │   ├── aaudio_recorder.cc
│   │           │   │   │   ├── aaudio_recorder.h
│   │           │   │   │   ├── aaudio_wrapper.cc
│   │           │   │   │   ├── aaudio_wrapper.h
│   │           │   │   │   ├── audio_common.h
│   │           │   │   │   ├── audio_device_template.h
│   │           │   │   │   ├── audio_device_unittest.cc
│   │           │   │   │   ├── audio_manager.cc
│   │           │   │   │   ├── audio_manager.h
│   │           │   │   │   ├── audio_manager_unittest.cc
│   │           │   │   │   ├── audio_record_jni.cc
│   │           │   │   │   ├── audio_record_jni.h
│   │           │   │   │   ├── audio_track_jni.cc
│   │           │   │   │   ├── audio_track_jni.h
│   │           │   │   │   ├── build_info.cc
│   │           │   │   │   ├── build_info.h
│   │           │   │   │   ├── ensure_initialized.cc
│   │           │   │   │   ├── ensure_initialized.h
│   │           │   │   │   ├── java/
│   │           │   │   │   │   └── src/
│   │           │   │   │   │       └── org/
│   │           │   │   │   │           └── webrtc/
│   │           │   │   │   │               └── voiceengine/
│   │           │   │   │   │                   ├── BuildInfo.java
│   │           │   │   │   │                   ├── WebRtcAudioEffects.java
│   │           │   │   │   │                   ├── WebRtcAudioManager.java
│   │           │   │   │   │                   ├── WebRtcAudioRecord.java
│   │           │   │   │   │                   ├── WebRtcAudioTrack.java
│   │           │   │   │   │                   └── WebRtcAudioUtils.java
│   │           │   │   │   ├── opensles_common.cc
│   │           │   │   │   ├── opensles_common.h
│   │           │   │   │   ├── opensles_player.cc
│   │           │   │   │   ├── opensles_player.h
│   │           │   │   │   ├── opensles_recorder.cc
│   │           │   │   │   └── opensles_recorder.h
│   │           │   │   ├── audio_device_buffer.cc
│   │           │   │   ├── audio_device_buffer.h
│   │           │   │   ├── audio_device_config.h
│   │           │   │   ├── audio_device_data_observer.cc
│   │           │   │   ├── audio_device_generic.cc
│   │           │   │   ├── audio_device_generic.h
│   │           │   │   ├── audio_device_impl.cc
│   │           │   │   ├── audio_device_impl.h
│   │           │   │   ├── audio_device_name.cc
│   │           │   │   ├── audio_device_name.h
│   │           │   │   ├── audio_device_unittest.cc
│   │           │   │   ├── dummy/
│   │           │   │   │   ├── audio_device_dummy.cc
│   │           │   │   │   ├── audio_device_dummy.h
│   │           │   │   │   ├── file_audio_device.cc
│   │           │   │   │   ├── file_audio_device.h
│   │           │   │   │   ├── file_audio_device_factory.cc
│   │           │   │   │   └── file_audio_device_factory.h
│   │           │   │   ├── fine_audio_buffer.cc
│   │           │   │   ├── fine_audio_buffer.h
│   │           │   │   ├── fine_audio_buffer_unittest.cc
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── audio_device_module.md
│   │           │   │   ├── include/
│   │           │   │   │   ├── audio_device.h
│   │           │   │   │   ├── audio_device_data_observer.h
│   │           │   │   │   ├── audio_device_default.h
│   │           │   │   │   ├── audio_device_defines.h
│   │           │   │   │   ├── audio_device_factory.cc
│   │           │   │   │   ├── audio_device_factory.h
│   │           │   │   │   ├── fake_audio_device.h
│   │           │   │   │   ├── mock_audio_device.h
│   │           │   │   │   ├── mock_audio_transport.h
│   │           │   │   │   ├── test_audio_device.cc
│   │           │   │   │   ├── test_audio_device.h
│   │           │   │   │   └── test_audio_device_unittest.cc
│   │           │   │   ├── linux/
│   │           │   │   │   ├── alsasymboltable_linux.cc
│   │           │   │   │   ├── alsasymboltable_linux.h
│   │           │   │   │   ├── audio_device_alsa_linux.cc
│   │           │   │   │   ├── audio_device_alsa_linux.h
│   │           │   │   │   ├── audio_device_pulse_linux.cc
│   │           │   │   │   ├── audio_device_pulse_linux.h
│   │           │   │   │   ├── audio_mixer_manager_alsa_linux.cc
│   │           │   │   │   ├── audio_mixer_manager_alsa_linux.h
│   │           │   │   │   ├── audio_mixer_manager_pulse_linux.cc
│   │           │   │   │   ├── audio_mixer_manager_pulse_linux.h
│   │           │   │   │   ├── latebindingsymboltable_linux.cc
│   │           │   │   │   ├── latebindingsymboltable_linux.h
│   │           │   │   │   ├── pulseaudiosymboltable_linux.cc
│   │           │   │   │   └── pulseaudiosymboltable_linux.h
│   │           │   │   ├── mac/
│   │           │   │   │   ├── audio_device_mac.cc
│   │           │   │   │   ├── audio_device_mac.h
│   │           │   │   │   ├── audio_mixer_manager_mac.cc
│   │           │   │   │   └── audio_mixer_manager_mac.h
│   │           │   │   ├── mock_audio_device_buffer.h
│   │           │   │   └── win/
│   │           │   │       ├── audio_device_core_win.cc
│   │           │   │       ├── audio_device_core_win.h
│   │           │   │       ├── audio_device_module_win.cc
│   │           │   │       ├── audio_device_module_win.h
│   │           │   │       ├── core_audio_base_win.cc
│   │           │   │       ├── core_audio_base_win.h
│   │           │   │       ├── core_audio_input_win.cc
│   │           │   │       ├── core_audio_input_win.h
│   │           │   │       ├── core_audio_output_win.cc
│   │           │   │       ├── core_audio_output_win.h
│   │           │   │       ├── core_audio_utility_win.cc
│   │           │   │       ├── core_audio_utility_win.h
│   │           │   │       └── core_audio_utility_win_unittest.cc
│   │           │   ├── audio_mixer/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_frame_manipulator.cc
│   │           │   │   ├── audio_frame_manipulator.h
│   │           │   │   ├── audio_frame_manipulator_unittest.cc
│   │           │   │   ├── audio_mixer_impl.cc
│   │           │   │   ├── audio_mixer_impl.h
│   │           │   │   ├── audio_mixer_impl_unittest.cc
│   │           │   │   ├── audio_mixer_test.cc
│   │           │   │   ├── default_output_rate_calculator.cc
│   │           │   │   ├── default_output_rate_calculator.h
│   │           │   │   ├── frame_combiner.cc
│   │           │   │   ├── frame_combiner.h
│   │           │   │   ├── frame_combiner_unittest.cc
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── index.md
│   │           │   │   ├── gain_change_calculator.cc
│   │           │   │   ├── gain_change_calculator.h
│   │           │   │   ├── output_rate_calculator.h
│   │           │   │   ├── sine_wave_generator.cc
│   │           │   │   └── sine_wave_generator.h
│   │           │   ├── audio_processing/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── aec3/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── adaptive_fir_filter.cc
│   │           │   │   │   ├── adaptive_fir_filter.h
│   │           │   │   │   ├── adaptive_fir_filter_avx2.cc
│   │           │   │   │   ├── adaptive_fir_filter_erl.cc
│   │           │   │   │   ├── adaptive_fir_filter_erl.h
│   │           │   │   │   ├── adaptive_fir_filter_erl_avx2.cc
│   │           │   │   │   ├── adaptive_fir_filter_erl_unittest.cc
│   │           │   │   │   ├── adaptive_fir_filter_unittest.cc
│   │           │   │   │   ├── aec3_common.cc
│   │           │   │   │   ├── aec3_common.h
│   │           │   │   │   ├── aec3_fft.cc
│   │           │   │   │   ├── aec3_fft.h
│   │           │   │   │   ├── aec3_fft_unittest.cc
│   │           │   │   │   ├── aec_state.cc
│   │           │   │   │   ├── aec_state.h
│   │           │   │   │   ├── aec_state_unittest.cc
│   │           │   │   │   ├── alignment_mixer.cc
│   │           │   │   │   ├── alignment_mixer.h
│   │           │   │   │   ├── alignment_mixer_unittest.cc
│   │           │   │   │   ├── api_call_jitter_metrics.cc
│   │           │   │   │   ├── api_call_jitter_metrics.h
│   │           │   │   │   ├── api_call_jitter_metrics_unittest.cc
│   │           │   │   │   ├── block_buffer.cc
│   │           │   │   │   ├── block_buffer.h
│   │           │   │   │   ├── block_delay_buffer.cc
│   │           │   │   │   ├── block_delay_buffer.h
│   │           │   │   │   ├── block_delay_buffer_unittest.cc
│   │           │   │   │   ├── block_framer.cc
│   │           │   │   │   ├── block_framer.h
│   │           │   │   │   ├── block_framer_unittest.cc
│   │           │   │   │   ├── block_processor.cc
│   │           │   │   │   ├── block_processor.h
│   │           │   │   │   ├── block_processor_metrics.cc
│   │           │   │   │   ├── block_processor_metrics.h
│   │           │   │   │   ├── block_processor_metrics_unittest.cc
│   │           │   │   │   ├── block_processor_unittest.cc
│   │           │   │   │   ├── clockdrift_detector.cc
│   │           │   │   │   ├── clockdrift_detector.h
│   │           │   │   │   ├── clockdrift_detector_unittest.cc
│   │           │   │   │   ├── coarse_filter_update_gain.cc
│   │           │   │   │   ├── coarse_filter_update_gain.h
│   │           │   │   │   ├── coarse_filter_update_gain_unittest.cc
│   │           │   │   │   ├── comfort_noise_generator.cc
│   │           │   │   │   ├── comfort_noise_generator.h
│   │           │   │   │   ├── comfort_noise_generator_unittest.cc
│   │           │   │   │   ├── decimator.cc
│   │           │   │   │   ├── decimator.h
│   │           │   │   │   ├── decimator_unittest.cc
│   │           │   │   │   ├── delay_estimate.h
│   │           │   │   │   ├── dominant_nearend_detector.cc
│   │           │   │   │   ├── dominant_nearend_detector.h
│   │           │   │   │   ├── downsampled_render_buffer.cc
│   │           │   │   │   ├── downsampled_render_buffer.h
│   │           │   │   │   ├── echo_audibility.cc
│   │           │   │   │   ├── echo_audibility.h
│   │           │   │   │   ├── echo_canceller3.cc
│   │           │   │   │   ├── echo_canceller3.h
│   │           │   │   │   ├── echo_canceller3_unittest.cc
│   │           │   │   │   ├── echo_path_delay_estimator.cc
│   │           │   │   │   ├── echo_path_delay_estimator.h
│   │           │   │   │   ├── echo_path_delay_estimator_unittest.cc
│   │           │   │   │   ├── echo_path_variability.cc
│   │           │   │   │   ├── echo_path_variability.h
│   │           │   │   │   ├── echo_path_variability_unittest.cc
│   │           │   │   │   ├── echo_remover.cc
│   │           │   │   │   ├── echo_remover.h
│   │           │   │   │   ├── echo_remover_metrics.cc
│   │           │   │   │   ├── echo_remover_metrics.h
│   │           │   │   │   ├── echo_remover_metrics_unittest.cc
│   │           │   │   │   ├── echo_remover_unittest.cc
│   │           │   │   │   ├── erl_estimator.cc
│   │           │   │   │   ├── erl_estimator.h
│   │           │   │   │   ├── erl_estimator_unittest.cc
│   │           │   │   │   ├── erle_estimator.cc
│   │           │   │   │   ├── erle_estimator.h
│   │           │   │   │   ├── erle_estimator_unittest.cc
│   │           │   │   │   ├── fft_buffer.cc
│   │           │   │   │   ├── fft_buffer.h
│   │           │   │   │   ├── fft_data.h
│   │           │   │   │   ├── fft_data_avx2.cc
│   │           │   │   │   ├── fft_data_unittest.cc
│   │           │   │   │   ├── filter_analyzer.cc
│   │           │   │   │   ├── filter_analyzer.h
│   │           │   │   │   ├── filter_analyzer_unittest.cc
│   │           │   │   │   ├── frame_blocker.cc
│   │           │   │   │   ├── frame_blocker.h
│   │           │   │   │   ├── frame_blocker_unittest.cc
│   │           │   │   │   ├── fullband_erle_estimator.cc
│   │           │   │   │   ├── fullband_erle_estimator.h
│   │           │   │   │   ├── matched_filter.cc
│   │           │   │   │   ├── matched_filter.h
│   │           │   │   │   ├── matched_filter_avx2.cc
│   │           │   │   │   ├── matched_filter_lag_aggregator.cc
│   │           │   │   │   ├── matched_filter_lag_aggregator.h
│   │           │   │   │   ├── matched_filter_lag_aggregator_unittest.cc
│   │           │   │   │   ├── matched_filter_unittest.cc
│   │           │   │   │   ├── mock/
│   │           │   │   │   │   ├── mock_block_processor.cc
│   │           │   │   │   │   ├── mock_block_processor.h
│   │           │   │   │   │   ├── mock_echo_remover.cc
│   │           │   │   │   │   ├── mock_echo_remover.h
│   │           │   │   │   │   ├── mock_render_delay_buffer.cc
│   │           │   │   │   │   ├── mock_render_delay_buffer.h
│   │           │   │   │   │   ├── mock_render_delay_controller.cc
│   │           │   │   │   │   └── mock_render_delay_controller.h
│   │           │   │   │   ├── moving_average.cc
│   │           │   │   │   ├── moving_average.h
│   │           │   │   │   ├── moving_average_unittest.cc
│   │           │   │   │   ├── nearend_detector.h
│   │           │   │   │   ├── refined_filter_update_gain.cc
│   │           │   │   │   ├── refined_filter_update_gain.h
│   │           │   │   │   ├── refined_filter_update_gain_unittest.cc
│   │           │   │   │   ├── render_buffer.cc
│   │           │   │   │   ├── render_buffer.h
│   │           │   │   │   ├── render_buffer_unittest.cc
│   │           │   │   │   ├── render_delay_buffer.cc
│   │           │   │   │   ├── render_delay_buffer.h
│   │           │   │   │   ├── render_delay_buffer_unittest.cc
│   │           │   │   │   ├── render_delay_controller.cc
│   │           │   │   │   ├── render_delay_controller.h
│   │           │   │   │   ├── render_delay_controller_metrics.cc
│   │           │   │   │   ├── render_delay_controller_metrics.h
│   │           │   │   │   ├── render_delay_controller_metrics_unittest.cc
│   │           │   │   │   ├── render_delay_controller_unittest.cc
│   │           │   │   │   ├── render_signal_analyzer.cc
│   │           │   │   │   ├── render_signal_analyzer.h
│   │           │   │   │   ├── render_signal_analyzer_unittest.cc
│   │           │   │   │   ├── residual_echo_estimator.cc
│   │           │   │   │   ├── residual_echo_estimator.h
│   │           │   │   │   ├── residual_echo_estimator_unittest.cc
│   │           │   │   │   ├── reverb_decay_estimator.cc
│   │           │   │   │   ├── reverb_decay_estimator.h
│   │           │   │   │   ├── reverb_frequency_response.cc
│   │           │   │   │   ├── reverb_frequency_response.h
│   │           │   │   │   ├── reverb_model.cc
│   │           │   │   │   ├── reverb_model.h
│   │           │   │   │   ├── reverb_model_estimator.cc
│   │           │   │   │   ├── reverb_model_estimator.h
│   │           │   │   │   ├── reverb_model_estimator_unittest.cc
│   │           │   │   │   ├── signal_dependent_erle_estimator.cc
│   │           │   │   │   ├── signal_dependent_erle_estimator.h
│   │           │   │   │   ├── signal_dependent_erle_estimator_unittest.cc
│   │           │   │   │   ├── spectrum_buffer.cc
│   │           │   │   │   ├── spectrum_buffer.h
│   │           │   │   │   ├── stationarity_estimator.cc
│   │           │   │   │   ├── stationarity_estimator.h
│   │           │   │   │   ├── subband_erle_estimator.cc
│   │           │   │   │   ├── subband_erle_estimator.h
│   │           │   │   │   ├── subband_nearend_detector.cc
│   │           │   │   │   ├── subband_nearend_detector.h
│   │           │   │   │   ├── subtractor.cc
│   │           │   │   │   ├── subtractor.h
│   │           │   │   │   ├── subtractor_output.cc
│   │           │   │   │   ├── subtractor_output.h
│   │           │   │   │   ├── subtractor_output_analyzer.cc
│   │           │   │   │   ├── subtractor_output_analyzer.h
│   │           │   │   │   ├── subtractor_unittest.cc
│   │           │   │   │   ├── suppression_filter.cc
│   │           │   │   │   ├── suppression_filter.h
│   │           │   │   │   ├── suppression_filter_unittest.cc
│   │           │   │   │   ├── suppression_gain.cc
│   │           │   │   │   ├── suppression_gain.h
│   │           │   │   │   ├── suppression_gain_unittest.cc
│   │           │   │   │   ├── transparent_mode.cc
│   │           │   │   │   ├── transparent_mode.h
│   │           │   │   │   ├── vector_math.h
│   │           │   │   │   ├── vector_math_avx2.cc
│   │           │   │   │   └── vector_math_unittest.cc
│   │           │   │   ├── aec_dump/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── aec_dump_factory.h
│   │           │   │   │   ├── aec_dump_impl.cc
│   │           │   │   │   ├── aec_dump_impl.h
│   │           │   │   │   ├── aec_dump_integration_test.cc
│   │           │   │   │   ├── aec_dump_unittest.cc
│   │           │   │   │   ├── capture_stream_info.cc
│   │           │   │   │   ├── capture_stream_info.h
│   │           │   │   │   ├── mock_aec_dump.cc
│   │           │   │   │   ├── mock_aec_dump.h
│   │           │   │   │   ├── null_aec_dump_factory.cc
│   │           │   │   │   ├── write_to_file_task.cc
│   │           │   │   │   └── write_to_file_task.h
│   │           │   │   ├── aecm/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── aecm_core.cc
│   │           │   │   │   ├── aecm_core.h
│   │           │   │   │   ├── aecm_core_c.cc
│   │           │   │   │   ├── aecm_core_mips.cc
│   │           │   │   │   ├── aecm_core_neon.cc
│   │           │   │   │   ├── aecm_defines.h
│   │           │   │   │   ├── echo_control_mobile.cc
│   │           │   │   │   └── echo_control_mobile.h
│   │           │   │   ├── agc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── agc.cc
│   │           │   │   │   ├── agc.h
│   │           │   │   │   ├── agc_manager_direct.cc
│   │           │   │   │   ├── agc_manager_direct.h
│   │           │   │   │   ├── agc_manager_direct_unittest.cc
│   │           │   │   │   ├── clipping_predictor.cc
│   │           │   │   │   ├── clipping_predictor.h
│   │           │   │   │   ├── clipping_predictor_evaluator.cc
│   │           │   │   │   ├── clipping_predictor_evaluator.h
│   │           │   │   │   ├── clipping_predictor_evaluator_unittest.cc
│   │           │   │   │   ├── clipping_predictor_level_buffer.cc
│   │           │   │   │   ├── clipping_predictor_level_buffer.h
│   │           │   │   │   ├── clipping_predictor_level_buffer_unittest.cc
│   │           │   │   │   ├── clipping_predictor_unittest.cc
│   │           │   │   │   ├── gain_control.h
│   │           │   │   │   ├── gain_map_internal.h
│   │           │   │   │   ├── legacy/
│   │           │   │   │   │   ├── analog_agc.cc
│   │           │   │   │   │   ├── analog_agc.h
│   │           │   │   │   │   ├── digital_agc.cc
│   │           │   │   │   │   ├── digital_agc.h
│   │           │   │   │   │   └── gain_control.h
│   │           │   │   │   ├── loudness_histogram.cc
│   │           │   │   │   ├── loudness_histogram.h
│   │           │   │   │   ├── loudness_histogram_unittest.cc
│   │           │   │   │   ├── mock_agc.h
│   │           │   │   │   ├── utility.cc
│   │           │   │   │   └── utility.h
│   │           │   │   ├── agc2/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── adaptive_agc.cc
│   │           │   │   │   ├── adaptive_agc.h
│   │           │   │   │   ├── adaptive_digital_gain_applier.cc
│   │           │   │   │   ├── adaptive_digital_gain_applier.h
│   │           │   │   │   ├── adaptive_digital_gain_applier_unittest.cc
│   │           │   │   │   ├── adaptive_mode_level_estimator.cc
│   │           │   │   │   ├── adaptive_mode_level_estimator.h
│   │           │   │   │   ├── adaptive_mode_level_estimator_unittest.cc
│   │           │   │   │   ├── agc2_common.h
│   │           │   │   │   ├── agc2_testing_common.cc
│   │           │   │   │   ├── agc2_testing_common.h
│   │           │   │   │   ├── agc2_testing_common_unittest.cc
│   │           │   │   │   ├── biquad_filter.cc
│   │           │   │   │   ├── biquad_filter.h
│   │           │   │   │   ├── biquad_filter_unittest.cc
│   │           │   │   │   ├── compute_interpolated_gain_curve.cc
│   │           │   │   │   ├── compute_interpolated_gain_curve.h
│   │           │   │   │   ├── cpu_features.cc
│   │           │   │   │   ├── cpu_features.h
│   │           │   │   │   ├── down_sampler.cc
│   │           │   │   │   ├── down_sampler.h
│   │           │   │   │   ├── fixed_digital_level_estimator.cc
│   │           │   │   │   ├── fixed_digital_level_estimator.h
│   │           │   │   │   ├── fixed_digital_level_estimator_unittest.cc
│   │           │   │   │   ├── gain_applier.cc
│   │           │   │   │   ├── gain_applier.h
│   │           │   │   │   ├── gain_applier_unittest.cc
│   │           │   │   │   ├── interpolated_gain_curve.cc
│   │           │   │   │   ├── interpolated_gain_curve.h
│   │           │   │   │   ├── interpolated_gain_curve_unittest.cc
│   │           │   │   │   ├── limiter.cc
│   │           │   │   │   ├── limiter.h
│   │           │   │   │   ├── limiter_db_gain_curve.cc
│   │           │   │   │   ├── limiter_db_gain_curve.h
│   │           │   │   │   ├── limiter_db_gain_curve_unittest.cc
│   │           │   │   │   ├── limiter_unittest.cc
│   │           │   │   │   ├── noise_level_estimator.cc
│   │           │   │   │   ├── noise_level_estimator.h
│   │           │   │   │   ├── noise_level_estimator_unittest.cc
│   │           │   │   │   ├── noise_spectrum_estimator.cc
│   │           │   │   │   ├── noise_spectrum_estimator.h
│   │           │   │   │   ├── rnn_vad/
│   │           │   │   │   │   ├── BUILD.gn
│   │           │   │   │   │   ├── DEPS
│   │           │   │   │   │   ├── auto_correlation.cc
│   │           │   │   │   │   ├── auto_correlation.h
│   │           │   │   │   │   ├── auto_correlation_unittest.cc
│   │           │   │   │   │   ├── common.h
│   │           │   │   │   │   ├── features_extraction.cc
│   │           │   │   │   │   ├── features_extraction.h
│   │           │   │   │   │   ├── features_extraction_unittest.cc
│   │           │   │   │   │   ├── lp_residual.cc
│   │           │   │   │   │   ├── lp_residual.h
│   │           │   │   │   │   ├── lp_residual_unittest.cc
│   │           │   │   │   │   ├── pitch_search.cc
│   │           │   │   │   │   ├── pitch_search.h
│   │           │   │   │   │   ├── pitch_search_internal.cc
│   │           │   │   │   │   ├── pitch_search_internal.h
│   │           │   │   │   │   ├── pitch_search_internal_unittest.cc
│   │           │   │   │   │   ├── pitch_search_unittest.cc
│   │           │   │   │   │   ├── ring_buffer.h
│   │           │   │   │   │   ├── ring_buffer_unittest.cc
│   │           │   │   │   │   ├── rnn.cc
│   │           │   │   │   │   ├── rnn.h
│   │           │   │   │   │   ├── rnn_fc.cc
│   │           │   │   │   │   ├── rnn_fc.h
│   │           │   │   │   │   ├── rnn_fc_unittest.cc
│   │           │   │   │   │   ├── rnn_gru.cc
│   │           │   │   │   │   ├── rnn_gru.h
│   │           │   │   │   │   ├── rnn_gru_unittest.cc
│   │           │   │   │   │   ├── rnn_unittest.cc
│   │           │   │   │   │   ├── rnn_vad_tool.cc
│   │           │   │   │   │   ├── rnn_vad_unittest.cc
│   │           │   │   │   │   ├── sequence_buffer.h
│   │           │   │   │   │   ├── sequence_buffer_unittest.cc
│   │           │   │   │   │   ├── spectral_features.cc
│   │           │   │   │   │   ├── spectral_features.h
│   │           │   │   │   │   ├── spectral_features_internal.cc
│   │           │   │   │   │   ├── spectral_features_internal.h
│   │           │   │   │   │   ├── spectral_features_internal_unittest.cc
│   │           │   │   │   │   ├── spectral_features_unittest.cc
│   │           │   │   │   │   ├── symmetric_matrix_buffer.h
│   │           │   │   │   │   ├── symmetric_matrix_buffer_unittest.cc
│   │           │   │   │   │   ├── test_utils.cc
│   │           │   │   │   │   ├── test_utils.h
│   │           │   │   │   │   ├── vector_math.h
│   │           │   │   │   │   ├── vector_math_avx2.cc
│   │           │   │   │   │   └── vector_math_unittest.cc
│   │           │   │   │   ├── saturation_protector.cc
│   │           │   │   │   ├── saturation_protector.h
│   │           │   │   │   ├── saturation_protector_buffer.cc
│   │           │   │   │   ├── saturation_protector_buffer.h
│   │           │   │   │   ├── saturation_protector_buffer_unittest.cc
│   │           │   │   │   ├── saturation_protector_unittest.cc
│   │           │   │   │   ├── signal_classifier.cc
│   │           │   │   │   ├── signal_classifier.h
│   │           │   │   │   ├── signal_classifier_unittest.cc
│   │           │   │   │   ├── vad_with_level.cc
│   │           │   │   │   ├── vad_with_level.h
│   │           │   │   │   ├── vad_with_level_unittest.cc
│   │           │   │   │   ├── vector_float_frame.cc
│   │           │   │   │   └── vector_float_frame.h
│   │           │   │   ├── audio_buffer.cc
│   │           │   │   ├── audio_buffer.h
│   │           │   │   ├── audio_buffer_unittest.cc
│   │           │   │   ├── audio_frame_view_unittest.cc
│   │           │   │   ├── audio_processing_builder_impl.cc
│   │           │   │   ├── audio_processing_impl.cc
│   │           │   │   ├── audio_processing_impl.h
│   │           │   │   ├── audio_processing_impl_locking_unittest.cc
│   │           │   │   ├── audio_processing_impl_unittest.cc
│   │           │   │   ├── audio_processing_performance_unittest.cc
│   │           │   │   ├── audio_processing_unittest.cc
│   │           │   │   ├── capture_levels_adjuster/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_samples_scaler.cc
│   │           │   │   │   ├── audio_samples_scaler.h
│   │           │   │   │   ├── audio_samples_scaler_unittest.cc
│   │           │   │   │   ├── capture_levels_adjuster.cc
│   │           │   │   │   ├── capture_levels_adjuster.h
│   │           │   │   │   └── capture_levels_adjuster_unittest.cc
│   │           │   │   ├── common.h
│   │           │   │   ├── config_unittest.cc
│   │           │   │   ├── debug.proto
│   │           │   │   ├── echo_control_mobile_bit_exact_unittest.cc
│   │           │   │   ├── echo_control_mobile_impl.cc
│   │           │   │   ├── echo_control_mobile_impl.h
│   │           │   │   ├── echo_control_mobile_unittest.cc
│   │           │   │   ├── echo_detector/
│   │           │   │   │   ├── circular_buffer.cc
│   │           │   │   │   ├── circular_buffer.h
│   │           │   │   │   ├── circular_buffer_unittest.cc
│   │           │   │   │   ├── mean_variance_estimator.cc
│   │           │   │   │   ├── mean_variance_estimator.h
│   │           │   │   │   ├── mean_variance_estimator_unittest.cc
│   │           │   │   │   ├── moving_max.cc
│   │           │   │   │   ├── moving_max.h
│   │           │   │   │   ├── moving_max_unittest.cc
│   │           │   │   │   ├── normalized_covariance_estimator.cc
│   │           │   │   │   ├── normalized_covariance_estimator.h
│   │           │   │   │   └── normalized_covariance_estimator_unittest.cc
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── audio_processing_module.md
│   │           │   │   ├── gain_control_impl.cc
│   │           │   │   ├── gain_control_impl.h
│   │           │   │   ├── gain_control_unittest.cc
│   │           │   │   ├── gain_controller2.cc
│   │           │   │   ├── gain_controller2.h
│   │           │   │   ├── gain_controller2_unittest.cc
│   │           │   │   ├── high_pass_filter.cc
│   │           │   │   ├── high_pass_filter.h
│   │           │   │   ├── high_pass_filter_unittest.cc
│   │           │   │   ├── include/
│   │           │   │   │   ├── aec_dump.cc
│   │           │   │   │   ├── aec_dump.h
│   │           │   │   │   ├── audio_frame_proxies.cc
│   │           │   │   │   ├── audio_frame_proxies.h
│   │           │   │   │   ├── audio_frame_view.h
│   │           │   │   │   ├── audio_processing.cc
│   │           │   │   │   ├── audio_processing.h
│   │           │   │   │   ├── audio_processing_statistics.cc
│   │           │   │   │   ├── audio_processing_statistics.h
│   │           │   │   │   ├── config.cc
│   │           │   │   │   ├── config.h
│   │           │   │   │   └── mock_audio_processing.h
│   │           │   │   ├── level_estimator.cc
│   │           │   │   ├── level_estimator.h
│   │           │   │   ├── level_estimator_unittest.cc
│   │           │   │   ├── logging/
│   │           │   │   │   ├── apm_data_dumper.cc
│   │           │   │   │   └── apm_data_dumper.h
│   │           │   │   ├── ns/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── fast_math.cc
│   │           │   │   │   ├── fast_math.h
│   │           │   │   │   ├── histograms.cc
│   │           │   │   │   ├── histograms.h
│   │           │   │   │   ├── noise_estimator.cc
│   │           │   │   │   ├── noise_estimator.h
│   │           │   │   │   ├── noise_suppressor.cc
│   │           │   │   │   ├── noise_suppressor.h
│   │           │   │   │   ├── noise_suppressor_unittest.cc
│   │           │   │   │   ├── ns_common.h
│   │           │   │   │   ├── ns_config.h
│   │           │   │   │   ├── ns_fft.cc
│   │           │   │   │   ├── ns_fft.h
│   │           │   │   │   ├── prior_signal_model.cc
│   │           │   │   │   ├── prior_signal_model.h
│   │           │   │   │   ├── prior_signal_model_estimator.cc
│   │           │   │   │   ├── prior_signal_model_estimator.h
│   │           │   │   │   ├── quantile_noise_estimator.cc
│   │           │   │   │   ├── quantile_noise_estimator.h
│   │           │   │   │   ├── signal_model.cc
│   │           │   │   │   ├── signal_model.h
│   │           │   │   │   ├── signal_model_estimator.cc
│   │           │   │   │   ├── signal_model_estimator.h
│   │           │   │   │   ├── speech_probability_estimator.cc
│   │           │   │   │   ├── speech_probability_estimator.h
│   │           │   │   │   ├── suppression_params.cc
│   │           │   │   │   ├── suppression_params.h
│   │           │   │   │   ├── wiener_filter.cc
│   │           │   │   │   └── wiener_filter.h
│   │           │   │   ├── optionally_built_submodule_creators.cc
│   │           │   │   ├── optionally_built_submodule_creators.h
│   │           │   │   ├── render_queue_item_verifier.h
│   │           │   │   ├── residual_echo_detector.cc
│   │           │   │   ├── residual_echo_detector.h
│   │           │   │   ├── residual_echo_detector_unittest.cc
│   │           │   │   ├── rms_level.cc
│   │           │   │   ├── rms_level.h
│   │           │   │   ├── rms_level_unittest.cc
│   │           │   │   ├── splitting_filter.cc
│   │           │   │   ├── splitting_filter.h
│   │           │   │   ├── splitting_filter_unittest.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── aec_dump_based_simulator.cc
│   │           │   │   │   ├── aec_dump_based_simulator.h
│   │           │   │   │   ├── android/
│   │           │   │   │   │   └── apmtest/
│   │           │   │   │   │       ├── AndroidManifest.xml
│   │           │   │   │   │       ├── default.properties
│   │           │   │   │   │       ├── jni/
│   │           │   │   │   │       │   └── main.c
│   │           │   │   │   │       └── res/
│   │           │   │   │   │           └── values/
│   │           │   │   │   │               └── strings.xml
│   │           │   │   │   ├── api_call_statistics.cc
│   │           │   │   │   ├── api_call_statistics.h
│   │           │   │   │   ├── apmtest.m
│   │           │   │   │   ├── audio_buffer_tools.cc
│   │           │   │   │   ├── audio_buffer_tools.h
│   │           │   │   │   ├── audio_processing_builder_for_testing.cc
│   │           │   │   │   ├── audio_processing_builder_for_testing.h
│   │           │   │   │   ├── audio_processing_simulator.cc
│   │           │   │   │   ├── audio_processing_simulator.h
│   │           │   │   │   ├── audioproc_float_impl.cc
│   │           │   │   │   ├── audioproc_float_impl.h
│   │           │   │   │   ├── bitexactness_tools.cc
│   │           │   │   │   ├── bitexactness_tools.h
│   │           │   │   │   ├── conversational_speech/
│   │           │   │   │   │   ├── BUILD.gn
│   │           │   │   │   │   ├── OWNERS
│   │           │   │   │   │   ├── README.md
│   │           │   │   │   │   ├── config.cc
│   │           │   │   │   │   ├── config.h
│   │           │   │   │   │   ├── generator.cc
│   │           │   │   │   │   ├── generator_unittest.cc
│   │           │   │   │   │   ├── mock_wavreader.cc
│   │           │   │   │   │   ├── mock_wavreader.h
│   │           │   │   │   │   ├── mock_wavreader_factory.cc
│   │           │   │   │   │   ├── mock_wavreader_factory.h
│   │           │   │   │   │   ├── multiend_call.cc
│   │           │   │   │   │   ├── multiend_call.h
│   │           │   │   │   │   ├── simulator.cc
│   │           │   │   │   │   ├── simulator.h
│   │           │   │   │   │   ├── timing.cc
│   │           │   │   │   │   ├── timing.h
│   │           │   │   │   │   ├── wavreader_abstract_factory.h
│   │           │   │   │   │   ├── wavreader_factory.cc
│   │           │   │   │   │   ├── wavreader_factory.h
│   │           │   │   │   │   └── wavreader_interface.h
│   │           │   │   │   ├── debug_dump_replayer.cc
│   │           │   │   │   ├── debug_dump_replayer.h
│   │           │   │   │   ├── debug_dump_test.cc
│   │           │   │   │   ├── echo_canceller_test_tools.cc
│   │           │   │   │   ├── echo_canceller_test_tools.h
│   │           │   │   │   ├── echo_canceller_test_tools_unittest.cc
│   │           │   │   │   ├── echo_control_mock.h
│   │           │   │   │   ├── fake_recording_device.cc
│   │           │   │   │   ├── fake_recording_device.h
│   │           │   │   │   ├── fake_recording_device_unittest.cc
│   │           │   │   │   ├── performance_timer.cc
│   │           │   │   │   ├── performance_timer.h
│   │           │   │   │   ├── protobuf_utils.cc
│   │           │   │   │   ├── protobuf_utils.h
│   │           │   │   │   ├── py_quality_assessment/
│   │           │   │   │   │   ├── BUILD.gn
│   │           │   │   │   │   ├── OWNERS
│   │           │   │   │   │   ├── README.md
│   │           │   │   │   │   ├── apm_configs/
│   │           │   │   │   │   │   └── default.json
│   │           │   │   │   │   ├── apm_quality_assessment.py
│   │           │   │   │   │   ├── apm_quality_assessment.sh
│   │           │   │   │   │   ├── apm_quality_assessment_boxplot.py
│   │           │   │   │   │   ├── apm_quality_assessment_export.py
│   │           │   │   │   │   ├── apm_quality_assessment_gencfgs.py
│   │           │   │   │   │   ├── apm_quality_assessment_optimize.py
│   │           │   │   │   │   ├── apm_quality_assessment_unittest.py
│   │           │   │   │   │   ├── output/
│   │           │   │   │   │   │   └── README.md
│   │           │   │   │   │   └── quality_assessment/
│   │           │   │   │   │       ├── __init__.py
│   │           │   │   │   │       ├── annotations.py
│   │           │   │   │   │       ├── annotations_unittest.py
│   │           │   │   │   │       ├── apm_configs/
│   │           │   │   │   │       │   └── default.json
│   │           │   │   │   │       ├── apm_vad.cc
│   │           │   │   │   │       ├── audioproc_wrapper.py
│   │           │   │   │   │       ├── collect_data.py
│   │           │   │   │   │       ├── data_access.py
│   │           │   │   │   │       ├── echo_path_simulation.py
│   │           │   │   │   │       ├── echo_path_simulation_factory.py
│   │           │   │   │   │       ├── echo_path_simulation_unittest.py
│   │           │   │   │   │       ├── eval_scores.py
│   │           │   │   │   │       ├── eval_scores_factory.py
│   │           │   │   │   │       ├── eval_scores_unittest.py
│   │           │   │   │   │       ├── evaluation.py
│   │           │   │   │   │       ├── exceptions.py
│   │           │   │   │   │       ├── export.py
│   │           │   │   │   │       ├── export_unittest.py
│   │           │   │   │   │       ├── external_vad.py
│   │           │   │   │   │       ├── fake_external_vad.py
│   │           │   │   │   │       ├── fake_polqa.cc
│   │           │   │   │   │       ├── input_mixer.py
│   │           │   │   │   │       ├── input_mixer_unittest.py
│   │           │   │   │   │       ├── input_signal_creator.py
│   │           │   │   │   │       ├── results.css
│   │           │   │   │   │       ├── results.js
│   │           │   │   │   │       ├── signal_processing.py
│   │           │   │   │   │       ├── signal_processing_unittest.py
│   │           │   │   │   │       ├── simulation.py
│   │           │   │   │   │       ├── simulation_unittest.py
│   │           │   │   │   │       ├── sound_level.cc
│   │           │   │   │   │       ├── test_data_generation.py
│   │           │   │   │   │       ├── test_data_generation_factory.py
│   │           │   │   │   │       ├── test_data_generation_unittest.py
│   │           │   │   │   │       └── vad.cc
│   │           │   │   │   ├── runtime_setting_util.cc
│   │           │   │   │   ├── runtime_setting_util.h
│   │           │   │   │   ├── simulator_buffers.cc
│   │           │   │   │   ├── simulator_buffers.h
│   │           │   │   │   ├── test_utils.cc
│   │           │   │   │   ├── test_utils.h
│   │           │   │   │   ├── unittest.proto
│   │           │   │   │   ├── wav_based_simulator.cc
│   │           │   │   │   └── wav_based_simulator.h
│   │           │   │   ├── three_band_filter_bank.cc
│   │           │   │   ├── three_band_filter_bank.h
│   │           │   │   ├── transient/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── click_annotate.cc
│   │           │   │   │   ├── common.h
│   │           │   │   │   ├── daubechies_8_wavelet_coeffs.h
│   │           │   │   │   ├── dyadic_decimator.h
│   │           │   │   │   ├── dyadic_decimator_unittest.cc
│   │           │   │   │   ├── file_utils.cc
│   │           │   │   │   ├── file_utils.h
│   │           │   │   │   ├── file_utils_unittest.cc
│   │           │   │   │   ├── moving_moments.cc
│   │           │   │   │   ├── moving_moments.h
│   │           │   │   │   ├── moving_moments_unittest.cc
│   │           │   │   │   ├── test/
│   │           │   │   │   │   ├── plotDetection.m
│   │           │   │   │   │   ├── readDetection.m
│   │           │   │   │   │   └── readPCM.m
│   │           │   │   │   ├── transient_detector.cc
│   │           │   │   │   ├── transient_detector.h
│   │           │   │   │   ├── transient_detector_unittest.cc
│   │           │   │   │   ├── transient_suppression_test.cc
│   │           │   │   │   ├── transient_suppressor.h
│   │           │   │   │   ├── transient_suppressor_impl.cc
│   │           │   │   │   ├── transient_suppressor_impl.h
│   │           │   │   │   ├── transient_suppressor_unittest.cc
│   │           │   │   │   ├── windows_private.h
│   │           │   │   │   ├── wpd_node.cc
│   │           │   │   │   ├── wpd_node.h
│   │           │   │   │   ├── wpd_node_unittest.cc
│   │           │   │   │   ├── wpd_tree.cc
│   │           │   │   │   ├── wpd_tree.h
│   │           │   │   │   └── wpd_tree_unittest.cc
│   │           │   │   ├── typing_detection.cc
│   │           │   │   ├── typing_detection.h
│   │           │   │   ├── utility/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── DEPS
│   │           │   │   │   ├── cascaded_biquad_filter.cc
│   │           │   │   │   ├── cascaded_biquad_filter.h
│   │           │   │   │   ├── cascaded_biquad_filter_unittest.cc
│   │           │   │   │   ├── delay_estimator.cc
│   │           │   │   │   ├── delay_estimator.h
│   │           │   │   │   ├── delay_estimator_internal.h
│   │           │   │   │   ├── delay_estimator_unittest.cc
│   │           │   │   │   ├── delay_estimator_wrapper.cc
│   │           │   │   │   ├── delay_estimator_wrapper.h
│   │           │   │   │   ├── pffft_wrapper.cc
│   │           │   │   │   ├── pffft_wrapper.h
│   │           │   │   │   └── pffft_wrapper_unittest.cc
│   │           │   │   ├── vad/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── common.h
│   │           │   │   │   ├── gmm.cc
│   │           │   │   │   ├── gmm.h
│   │           │   │   │   ├── gmm_unittest.cc
│   │           │   │   │   ├── noise_gmm_tables.h
│   │           │   │   │   ├── pitch_based_vad.cc
│   │           │   │   │   ├── pitch_based_vad.h
│   │           │   │   │   ├── pitch_based_vad_unittest.cc
│   │           │   │   │   ├── pitch_internal.cc
│   │           │   │   │   ├── pitch_internal.h
│   │           │   │   │   ├── pitch_internal_unittest.cc
│   │           │   │   │   ├── pole_zero_filter.cc
│   │           │   │   │   ├── pole_zero_filter.h
│   │           │   │   │   ├── pole_zero_filter_unittest.cc
│   │           │   │   │   ├── standalone_vad.cc
│   │           │   │   │   ├── standalone_vad.h
│   │           │   │   │   ├── standalone_vad_unittest.cc
│   │           │   │   │   ├── vad_audio_proc.cc
│   │           │   │   │   ├── vad_audio_proc.h
│   │           │   │   │   ├── vad_audio_proc_internal.h
│   │           │   │   │   ├── vad_audio_proc_unittest.cc
│   │           │   │   │   ├── vad_circular_buffer.cc
│   │           │   │   │   ├── vad_circular_buffer.h
│   │           │   │   │   ├── vad_circular_buffer_unittest.cc
│   │           │   │   │   ├── voice_activity_detector.cc
│   │           │   │   │   ├── voice_activity_detector.h
│   │           │   │   │   ├── voice_activity_detector_unittest.cc
│   │           │   │   │   └── voice_gmm_tables.h
│   │           │   │   ├── voice_detection.cc
│   │           │   │   ├── voice_detection.h
│   │           │   │   └── voice_detection_unittest.cc
│   │           │   ├── congestion_controller/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── goog_cc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── acknowledged_bitrate_estimator.cc
│   │           │   │   │   ├── acknowledged_bitrate_estimator.h
│   │           │   │   │   ├── acknowledged_bitrate_estimator_interface.cc
│   │           │   │   │   ├── acknowledged_bitrate_estimator_interface.h
│   │           │   │   │   ├── acknowledged_bitrate_estimator_unittest.cc
│   │           │   │   │   ├── alr_detector.cc
│   │           │   │   │   ├── alr_detector.h
│   │           │   │   │   ├── alr_detector_unittest.cc
│   │           │   │   │   ├── bitrate_estimator.cc
│   │           │   │   │   ├── bitrate_estimator.h
│   │           │   │   │   ├── congestion_window_pushback_controller.cc
│   │           │   │   │   ├── congestion_window_pushback_controller.h
│   │           │   │   │   ├── congestion_window_pushback_controller_unittest.cc
│   │           │   │   │   ├── delay_based_bwe.cc
│   │           │   │   │   ├── delay_based_bwe.h
│   │           │   │   │   ├── delay_based_bwe_unittest.cc
│   │           │   │   │   ├── delay_based_bwe_unittest_helper.cc
│   │           │   │   │   ├── delay_based_bwe_unittest_helper.h
│   │           │   │   │   ├── delay_increase_detector_interface.h
│   │           │   │   │   ├── goog_cc_network_control.cc
│   │           │   │   │   ├── goog_cc_network_control.h
│   │           │   │   │   ├── goog_cc_network_control_unittest.cc
│   │           │   │   │   ├── inter_arrival_delta.cc
│   │           │   │   │   ├── inter_arrival_delta.h
│   │           │   │   │   ├── link_capacity_estimator.cc
│   │           │   │   │   ├── link_capacity_estimator.h
│   │           │   │   │   ├── loss_based_bandwidth_estimation.cc
│   │           │   │   │   ├── loss_based_bandwidth_estimation.h
│   │           │   │   │   ├── loss_based_bwe_v2.cc
│   │           │   │   │   ├── loss_based_bwe_v2.h
│   │           │   │   │   ├── loss_based_bwe_v2_test.cc
│   │           │   │   │   ├── probe_bitrate_estimator.cc
│   │           │   │   │   ├── probe_bitrate_estimator.h
│   │           │   │   │   ├── probe_bitrate_estimator_unittest.cc
│   │           │   │   │   ├── probe_controller.cc
│   │           │   │   │   ├── probe_controller.h
│   │           │   │   │   ├── probe_controller_unittest.cc
│   │           │   │   │   ├── robust_throughput_estimator.cc
│   │           │   │   │   ├── robust_throughput_estimator.h
│   │           │   │   │   ├── robust_throughput_estimator_unittest.cc
│   │           │   │   │   ├── send_side_bandwidth_estimation.cc
│   │           │   │   │   ├── send_side_bandwidth_estimation.h
│   │           │   │   │   ├── send_side_bandwidth_estimation_unittest.cc
│   │           │   │   │   ├── test/
│   │           │   │   │   │   ├── goog_cc_printer.cc
│   │           │   │   │   │   └── goog_cc_printer.h
│   │           │   │   │   ├── trendline_estimator.cc
│   │           │   │   │   ├── trendline_estimator.h
│   │           │   │   │   └── trendline_estimator_unittest.cc
│   │           │   │   ├── include/
│   │           │   │   │   └── receive_side_congestion_controller.h
│   │           │   │   ├── pcc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── bitrate_controller.cc
│   │           │   │   │   ├── bitrate_controller.h
│   │           │   │   │   ├── bitrate_controller_unittest.cc
│   │           │   │   │   ├── monitor_interval.cc
│   │           │   │   │   ├── monitor_interval.h
│   │           │   │   │   ├── monitor_interval_unittest.cc
│   │           │   │   │   ├── pcc_factory.cc
│   │           │   │   │   ├── pcc_factory.h
│   │           │   │   │   ├── pcc_network_controller.cc
│   │           │   │   │   ├── pcc_network_controller.h
│   │           │   │   │   ├── pcc_network_controller_unittest.cc
│   │           │   │   │   ├── rtt_tracker.cc
│   │           │   │   │   ├── rtt_tracker.h
│   │           │   │   │   ├── rtt_tracker_unittest.cc
│   │           │   │   │   ├── utility_function.cc
│   │           │   │   │   ├── utility_function.h
│   │           │   │   │   └── utility_function_unittest.cc
│   │           │   │   ├── receive_side_congestion_controller.cc
│   │           │   │   ├── receive_side_congestion_controller_unittest.cc
│   │           │   │   ├── remb_throttler.cc
│   │           │   │   ├── remb_throttler.h
│   │           │   │   ├── remb_throttler_unittest.cc
│   │           │   │   └── rtp/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── control_handler.cc
│   │           │   │       ├── control_handler.h
│   │           │   │       ├── transport_feedback_adapter.cc
│   │           │   │       ├── transport_feedback_adapter.h
│   │           │   │       ├── transport_feedback_adapter_unittest.cc
│   │           │   │       ├── transport_feedback_demuxer.cc
│   │           │   │       ├── transport_feedback_demuxer.h
│   │           │   │       └── transport_feedback_demuxer_unittest.cc
│   │           │   ├── desktop_capture/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── blank_detector_desktop_capturer_wrapper.cc
│   │           │   │   ├── blank_detector_desktop_capturer_wrapper.h
│   │           │   │   ├── blank_detector_desktop_capturer_wrapper_unittest.cc
│   │           │   │   ├── cropped_desktop_frame.cc
│   │           │   │   ├── cropped_desktop_frame.h
│   │           │   │   ├── cropped_desktop_frame_unittest.cc
│   │           │   │   ├── cropping_window_capturer.cc
│   │           │   │   ├── cropping_window_capturer.h
│   │           │   │   ├── cropping_window_capturer_win.cc
│   │           │   │   ├── desktop_and_cursor_composer.cc
│   │           │   │   ├── desktop_and_cursor_composer.h
│   │           │   │   ├── desktop_and_cursor_composer_unittest.cc
│   │           │   │   ├── desktop_capture_metrics_helper.cc
│   │           │   │   ├── desktop_capture_metrics_helper.h
│   │           │   │   ├── desktop_capture_options.cc
│   │           │   │   ├── desktop_capture_options.h
│   │           │   │   ├── desktop_capture_types.h
│   │           │   │   ├── desktop_capturer.cc
│   │           │   │   ├── desktop_capturer.h
│   │           │   │   ├── desktop_capturer_differ_wrapper.cc
│   │           │   │   ├── desktop_capturer_differ_wrapper.h
│   │           │   │   ├── desktop_capturer_differ_wrapper_unittest.cc
│   │           │   │   ├── desktop_capturer_wrapper.cc
│   │           │   │   ├── desktop_capturer_wrapper.h
│   │           │   │   ├── desktop_frame.cc
│   │           │   │   ├── desktop_frame.h
│   │           │   │   ├── desktop_frame_generator.cc
│   │           │   │   ├── desktop_frame_generator.h
│   │           │   │   ├── desktop_frame_rotation.cc
│   │           │   │   ├── desktop_frame_rotation.h
│   │           │   │   ├── desktop_frame_rotation_unittest.cc
│   │           │   │   ├── desktop_frame_unittest.cc
│   │           │   │   ├── desktop_frame_win.cc
│   │           │   │   ├── desktop_frame_win.h
│   │           │   │   ├── desktop_geometry.cc
│   │           │   │   ├── desktop_geometry.h
│   │           │   │   ├── desktop_geometry_unittest.cc
│   │           │   │   ├── desktop_region.cc
│   │           │   │   ├── desktop_region.h
│   │           │   │   ├── desktop_region_unittest.cc
│   │           │   │   ├── differ_block.cc
│   │           │   │   ├── differ_block.h
│   │           │   │   ├── differ_block_unittest.cc
│   │           │   │   ├── differ_vector_sse2.cc
│   │           │   │   ├── differ_vector_sse2.h
│   │           │   │   ├── fake_desktop_capturer.cc
│   │           │   │   ├── fake_desktop_capturer.h
│   │           │   │   ├── fallback_desktop_capturer_wrapper.cc
│   │           │   │   ├── fallback_desktop_capturer_wrapper.h
│   │           │   │   ├── fallback_desktop_capturer_wrapper_unittest.cc
│   │           │   │   ├── full_screen_application_handler.cc
│   │           │   │   ├── full_screen_application_handler.h
│   │           │   │   ├── full_screen_window_detector.cc
│   │           │   │   ├── full_screen_window_detector.h
│   │           │   │   ├── linux/
│   │           │   │   │   ├── base_capturer_pipewire.cc
│   │           │   │   │   ├── base_capturer_pipewire.h
│   │           │   │   │   ├── mouse_cursor_monitor_x11.cc
│   │           │   │   │   ├── mouse_cursor_monitor_x11.h
│   │           │   │   │   ├── pipewire02.sigs
│   │           │   │   │   ├── pipewire03.sigs
│   │           │   │   │   ├── pipewire_stub_header.fragment
│   │           │   │   │   ├── screen_capturer_x11.cc
│   │           │   │   │   ├── screen_capturer_x11.h
│   │           │   │   │   ├── shared_x_display.cc
│   │           │   │   │   ├── shared_x_display.h
│   │           │   │   │   ├── window_capturer_x11.cc
│   │           │   │   │   ├── window_capturer_x11.h
│   │           │   │   │   ├── window_finder_x11.cc
│   │           │   │   │   ├── window_finder_x11.h
│   │           │   │   │   ├── window_list_utils.cc
│   │           │   │   │   ├── window_list_utils.h
│   │           │   │   │   ├── x_atom_cache.cc
│   │           │   │   │   ├── x_atom_cache.h
│   │           │   │   │   ├── x_error_trap.cc
│   │           │   │   │   ├── x_error_trap.h
│   │           │   │   │   ├── x_server_pixel_buffer.cc
│   │           │   │   │   ├── x_server_pixel_buffer.h
│   │           │   │   │   ├── x_window_property.cc
│   │           │   │   │   └── x_window_property.h
│   │           │   │   ├── mac/
│   │           │   │   │   ├── desktop_configuration.h
│   │           │   │   │   ├── desktop_configuration.mm
│   │           │   │   │   ├── desktop_configuration_monitor.cc
│   │           │   │   │   ├── desktop_configuration_monitor.h
│   │           │   │   │   ├── desktop_frame_cgimage.h
│   │           │   │   │   ├── desktop_frame_cgimage.mm
│   │           │   │   │   ├── desktop_frame_iosurface.h
│   │           │   │   │   ├── desktop_frame_iosurface.mm
│   │           │   │   │   ├── desktop_frame_provider.h
│   │           │   │   │   ├── desktop_frame_provider.mm
│   │           │   │   │   ├── full_screen_mac_application_handler.cc
│   │           │   │   │   ├── full_screen_mac_application_handler.h
│   │           │   │   │   ├── screen_capturer_mac.h
│   │           │   │   │   ├── screen_capturer_mac.mm
│   │           │   │   │   ├── window_list_utils.cc
│   │           │   │   │   └── window_list_utils.h
│   │           │   │   ├── mock_desktop_capturer_callback.cc
│   │           │   │   ├── mock_desktop_capturer_callback.h
│   │           │   │   ├── mouse_cursor.cc
│   │           │   │   ├── mouse_cursor.h
│   │           │   │   ├── mouse_cursor_monitor.h
│   │           │   │   ├── mouse_cursor_monitor_linux.cc
│   │           │   │   ├── mouse_cursor_monitor_mac.mm
│   │           │   │   ├── mouse_cursor_monitor_null.cc
│   │           │   │   ├── mouse_cursor_monitor_unittest.cc
│   │           │   │   ├── mouse_cursor_monitor_win.cc
│   │           │   │   ├── resolution_tracker.cc
│   │           │   │   ├── resolution_tracker.h
│   │           │   │   ├── rgba_color.cc
│   │           │   │   ├── rgba_color.h
│   │           │   │   ├── rgba_color_unittest.cc
│   │           │   │   ├── screen_capture_frame_queue.h
│   │           │   │   ├── screen_capturer_darwin.mm
│   │           │   │   ├── screen_capturer_helper.cc
│   │           │   │   ├── screen_capturer_helper.h
│   │           │   │   ├── screen_capturer_helper_unittest.cc
│   │           │   │   ├── screen_capturer_integration_test.cc
│   │           │   │   ├── screen_capturer_linux.cc
│   │           │   │   ├── screen_capturer_mac_unittest.cc
│   │           │   │   ├── screen_capturer_null.cc
│   │           │   │   ├── screen_capturer_unittest.cc
│   │           │   │   ├── screen_capturer_win.cc
│   │           │   │   ├── screen_drawer.cc
│   │           │   │   ├── screen_drawer.h
│   │           │   │   ├── screen_drawer_linux.cc
│   │           │   │   ├── screen_drawer_lock_posix.cc
│   │           │   │   ├── screen_drawer_lock_posix.h
│   │           │   │   ├── screen_drawer_mac.cc
│   │           │   │   ├── screen_drawer_unittest.cc
│   │           │   │   ├── screen_drawer_win.cc
│   │           │   │   ├── shared_desktop_frame.cc
│   │           │   │   ├── shared_desktop_frame.h
│   │           │   │   ├── shared_memory.cc
│   │           │   │   ├── shared_memory.h
│   │           │   │   ├── test_utils.cc
│   │           │   │   ├── test_utils.h
│   │           │   │   ├── test_utils_unittest.cc
│   │           │   │   ├── win/
│   │           │   │   │   ├── cursor.cc
│   │           │   │   │   ├── cursor.h
│   │           │   │   │   ├── cursor_test_data/
│   │           │   │   │   │   ├── 1_24bpp.cur
│   │           │   │   │   │   ├── 1_32bpp.cur
│   │           │   │   │   │   ├── 1_8bpp.cur
│   │           │   │   │   │   ├── 2_1bpp.cur
│   │           │   │   │   │   ├── 2_32bpp.cur
│   │           │   │   │   │   ├── 3_32bpp.cur
│   │           │   │   │   │   └── 3_4bpp.cur
│   │           │   │   │   ├── cursor_unittest.cc
│   │           │   │   │   ├── cursor_unittest_resources.h
│   │           │   │   │   ├── cursor_unittest_resources.rc
│   │           │   │   │   ├── d3d_device.cc
│   │           │   │   │   ├── d3d_device.h
│   │           │   │   │   ├── desktop.cc
│   │           │   │   │   ├── desktop.h
│   │           │   │   │   ├── desktop_capture_utils.cc
│   │           │   │   │   ├── desktop_capture_utils.h
│   │           │   │   │   ├── display_configuration_monitor.cc
│   │           │   │   │   ├── display_configuration_monitor.h
│   │           │   │   │   ├── dxgi_adapter_duplicator.cc
│   │           │   │   │   ├── dxgi_adapter_duplicator.h
│   │           │   │   │   ├── dxgi_context.cc
│   │           │   │   │   ├── dxgi_context.h
│   │           │   │   │   ├── dxgi_duplicator_controller.cc
│   │           │   │   │   ├── dxgi_duplicator_controller.h
│   │           │   │   │   ├── dxgi_frame.cc
│   │           │   │   │   ├── dxgi_frame.h
│   │           │   │   │   ├── dxgi_output_duplicator.cc
│   │           │   │   │   ├── dxgi_output_duplicator.h
│   │           │   │   │   ├── dxgi_texture.cc
│   │           │   │   │   ├── dxgi_texture.h
│   │           │   │   │   ├── dxgi_texture_mapping.cc
│   │           │   │   │   ├── dxgi_texture_mapping.h
│   │           │   │   │   ├── dxgi_texture_staging.cc
│   │           │   │   │   ├── dxgi_texture_staging.h
│   │           │   │   │   ├── full_screen_win_application_handler.cc
│   │           │   │   │   ├── full_screen_win_application_handler.h
│   │           │   │   │   ├── scoped_gdi_object.h
│   │           │   │   │   ├── scoped_thread_desktop.cc
│   │           │   │   │   ├── scoped_thread_desktop.h
│   │           │   │   │   ├── screen_capture_utils.cc
│   │           │   │   │   ├── screen_capture_utils.h
│   │           │   │   │   ├── screen_capture_utils_unittest.cc
│   │           │   │   │   ├── screen_capturer_win_directx.cc
│   │           │   │   │   ├── screen_capturer_win_directx.h
│   │           │   │   │   ├── screen_capturer_win_directx_unittest.cc
│   │           │   │   │   ├── screen_capturer_win_gdi.cc
│   │           │   │   │   ├── screen_capturer_win_gdi.h
│   │           │   │   │   ├── screen_capturer_win_magnifier.cc
│   │           │   │   │   ├── screen_capturer_win_magnifier.h
│   │           │   │   │   ├── selected_window_context.cc
│   │           │   │   │   ├── selected_window_context.h
│   │           │   │   │   ├── test_support/
│   │           │   │   │   │   ├── test_window.cc
│   │           │   │   │   │   └── test_window.h
│   │           │   │   │   ├── wgc_capture_session.cc
│   │           │   │   │   ├── wgc_capture_session.h
│   │           │   │   │   ├── wgc_capture_source.cc
│   │           │   │   │   ├── wgc_capture_source.h
│   │           │   │   │   ├── wgc_capture_source_unittest.cc
│   │           │   │   │   ├── wgc_capturer_win.cc
│   │  

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
webrtc.jar filter=lfs diff=lfs merge=lfs -text
libwebrtc.a filter=lfs diff=lfs merge=lfs -text


================================================
FILE: .gitignore
================================================

# Created by https://www.gitignore.io/api/macos,android,androidstudio
# Edit at https://www.gitignore.io/?templates=macos,android,androidstudio

### Android ###
# Built application files
*.apk
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/
release/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
# google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/

### Android Patch ###
gen-external-apklibs
output.json

### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### AndroidStudio ###
# Covers files to be ignored for android development using Android Studio.

# Built application files

# Files for the ART/Dalvik VM

# Java class files

# Generated files

# Gradle files
.gradle

# Signing files
.signing/

# Local configuration file (sdk path, etc)

# Proguard folder generated by Eclipse

# Log Files

# Android Studio
/*/build/
/*/local.properties
/*/out
/*/*/build
/*/*/production
*.ipr
*~
*.swp

# Android Patch

# External native build folder generated in Android Studio 2.2 and later

# NDK
obj/

# IntelliJ IDEA
*.iws
/out/

# User-specific configurations
.idea/caches/
.idea/libraries/
.idea/shelf/
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
.idea/jsLibraryMappings.xml
.idea/datasources.xml
.idea/dataSources.ids
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml

# OS-specific files
.DS_Store?
ehthumbs.db
Thumbs.db

# Legacy Eclipse project files
.classpath
.project
.cproject
.settings/

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.war
*.ear

# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*

## Plugin-specific files:

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Mongo Explorer plugin
.idea/mongoSettings.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

### AndroidStudio Patch ###

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.gitignore.io/api/macos,android,androidstudio

# VisualStudioCode files
.vscode/


================================================
FILE: .idea/codeStyles/Project.xml
================================================
<component name="ProjectCodeStyleConfiguration">
  <code_scheme name="Project" version="173">
    <codeStyleSettings language="XML">
      <arrangement>
        <rules>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>xmlns:android</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>xmlns:.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
              <order>BY_NAME</order>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*:id</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*:name</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>name</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>style</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
                </AND>
              </match>
              <order>BY_NAME</order>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
                </AND>
              </match>
              <order>ANDROID_ATTRIBUTE_ORDER</order>
            </rule>
          </section>
          <section>
            <rule>
              <match>
                <AND>
                  <NAME>.*</NAME>
                  <XML_ATTRIBUTE />
                  <XML_NAMESPACE>.*</XML_NAMESPACE>
                </AND>
              </match>
              <order>BY_NAME</order>
            </rule>
          </section>
        </rules>
      </arrangement>
    </codeStyleSettings>
  </code_scheme>
</component>

================================================
FILE: .idea/codeStyles/codeStyleConfig.xml
================================================
<component name="ProjectCodeStyleConfiguration">
  <state>
    <option name="PREFERRED_PROJECT_CODE_STYLE" value="GoogleStyle" />
  </state>
</component>

================================================
FILE: .idea/google-java-format.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GoogleJavaFormatSettings">
    <option name="enabled" value="true" />
  </component>
</project>

================================================
FILE: .idea/jarRepositories.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RemoteRepositoriesConfiguration">
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Maven Central repository" />
      <option name="url" value="https://repo1.maven.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="Google" />
      <option name="name" value="Google" />
      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="MavenRepo" />
      <option name="name" value="MavenRepo" />
      <option name="url" value="https://repo.maven.apache.org/maven2/" />
    </remote-repository>
  </component>
</project>

================================================
FILE: .travis.yml
================================================
language: android

jdk:
  - oraclejdk8

env:
  global:
    - ADB_INSTALL_TIMEOUT=8
    - ABI=armeabi-v7a
    # use google_apis flavor if no default flavor emulator
    - EMU_FLAVOR=default
    # PATH order is incredibly important. e.g. the 'emulator' script exists in more than one place!
    - ANDROID_HOME=/usr/local/android-sdk
    - TOOLS=${ANDROID_HOME}/tools
    - PATH=${ANDROID_HOME}:${ANDROID_HOME}/emulator:${TOOLS}:${TOOLS}/bin:${ANDROID_HOME}/platform-tools:${PATH}
  matrix:
    # only runs locally. Create+Start once from AndroidStudio to init sdcard. Then only from command-line w/-engine classic
    # - API=15
    # - API=16 AUDIO=-no-audio
    # - API=17
    # API18 has started being flaky
    # - API=18
    # Kernel/emulator mismatch failure probably fixible with -engine classic
    # - API=19
    # API 20 was Android Wear only
    # - API=21 ABI=x86_64
    # - API=22 ABI=x86_64
    # - API=23 ABI=x86_64
    # - API=24 ABI=x86_64
    # - API=25 ABI=x86_64
    #-  API=26 ABI=x86_64 # Fails with unrecognized tests? orchestrator change or something?
    - API=27 ABI=x86_64
    # Slowness/timing issues / Fails with unresponsive adb command / so unrecognized API for adb
    # - API=28 ABI=x86_64
    # Fails I think because of perf + timeouts. 10 minute wait not enough, fixable
    # - API=Q ABI=x86_64

# This block currently does not work, but it used to. API=28/Q are probably fixable
# but we don't need allow_failures to be on in master to work through them
#matrix:
#  fast_finish: true # We can report success without waiting for these
#  allow_failures:
#     - API=28 ABI=x86_64
#     #- env: API=28 ABI=x86_64 # allowing failure to see how it works flake-wise

android:
  components:
    # installing tools to start, then use `sdkmanager` below to get the rest
    - tools

licenses:
  - 'android-sdk-preview-license-.+'
  - 'android-sdk-license-.+'
  - 'google-gdk-license-.+'

# Emulator Management: Create, Start and Wait
install:
  - echo 'count=0' > /home/travis/.android/repositories.cfg # Avoid harmless sdkmanager warning
  - echo y | sdkmanager "platform-tools" >/dev/null
  - echo y | sdkmanager "tools" >/dev/null # A second time per Travis docs, gets latest versions
  - echo y | sdkmanager "build-tools;28.0.3" >/dev/null # Implicit gradle dependency - gradle drives changes
  - echo y | sdkmanager "platforms;android-$API" >/dev/null # We need the API of the emulator we will run
  - echo y | sdkmanager "platforms;android-28" >/dev/null # We need the API of the current compileSdkVersion from gradle.properties
  - echo y | sdkmanager --channel=4 "emulator" # Experiment with canary, specifying 28.0.3 (prior version) did not work
  - echo y | sdkmanager "extras;android;m2repository" >/dev/null
  - echo y | sdkmanager "system-images;android-$API;$EMU_FLAVOR;$ABI" #>/dev/null # install our emulator
  - echo no | avdmanager create avd --force -n test -k "system-images;android-$API;$EMU_FLAVOR;$ABI" -c 10M
  - emulator -verbose -avd test -no-accel -no-snapshot -no-window $AUDIO -camera-back none -camera-front none -selinux permissive -qemu -m 2048 &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &

script:
  - ./gradlew connectedAndroidTest

before_cache:
  - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock

cache:
  directories:
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 Haiyang Wu

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

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 OR COPYRIGHT HOLDERS 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.


================================================
FILE: README.md
================================================
# mediasoup-client-android

[![Codacy Badge](https://api.codacy.com/project/badge/Grade/0e44257c6bcf47df9163e88fa7d5125a)](https://app.codacy.com/gh/haiyangwu/mediasoup-client-android?utm_source=github.com&utm_medium=referral&utm_content=haiyangwu/mediasoup-client-android&utm_campaign=Badge_Grade_Settings)

[![maven][shield-mediasoup-client-android]][maven-mediasoup-client-android]

mediasoup android client side library https://mediasoup.org

## Getting Started

### Setting up the dependency

Include `mediasoup-client-android`  into your project, for example, as a Gradle compile dependency:

```groovy
implementation 'io.github.haiyangwu:mediasoup-client:3.4.0'
```
### Example

* Initialize `MediasoupClient`
```Java
MediasoupClient.initialize(getApplicationContext());
```

* Create `Device` and load `routerRtpCapabilities`

```Java
Device mMediasoupDevice = new Device();
// ...
// routerRtpCapabilities, the response of request `getRouterRtpCapabilities` from mediasoup-demo server
mMediasoupDevice.load(routerRtpCapabilities, null)
```

* Create `SendTransport` and produce `MediaStreamTrack`
```Java
// ...
// res, the response of request `createWebRtcTransport` from mediasoup-demo server
JSONObject info = new JSONObject(res);
String id = info.optString("id");
String iceParameters = info.optString("iceParameters");
String iceCandidates = info.optString("iceCandidates");
String dtlsParameters = info.optString("dtlsParameters");
String sctpParameters = info.optString("sctpParameters");

SendTransport mSendTransport =
  mMediasoupDevice.createSendTransport(
  sendTransportListener, id, iceParameters, iceCandidates, dtlsParameters);
// ...
// mLocalVideoTrack, created by `org.webrtc.PeerConnectionFactory`
Producer mCamProducer =
  mSendTransport.produce(
  producer -> {
    Logger.e(TAG, "onTransportClose(), camProducer");
  },
  mLocalVideoTrack, null, null, null);
```

* Create `RecvTransport` and consume `MediaStreamTrack`
```Java
// ...
// res, the response of request `createWebRtcTransport` from mediasoup-demo server
JSONObject info = new JSONObject(res);
String id = info.optString("id");
String iceParameters = info.optString("iceParameters");
String iceCandidates = info.optString("iceCandidates");
String dtlsParameters = info.optString("dtlsParameters");
String sctpParameters = info.optString("sctpParameters");

RecvTransport mRecvTransport =
  mMediasoupDevice.createRecvTransport(
  recvTransportListener, id, iceParameters, iceCandidates, dtlsParameters);

// ...
// request, the request `newConsumer` from mediasoup-demo server
JSONObject data = request.getData();
String peerId = data.optString("peerId");
String producerId = data.optString("producerId");
String id = data.optString("id");
String kind = data.optString("kind");
String rtpParameters = data.optString("rtpParameters");
String type = data.optString("type");
String appData = data.optString("appData");
Consumer consumer =
  mRecvTransport.consume(
  c -> {
    Logger.w(TAG, "onTransportClose for consume");
  },
  id, producerId, kind, rtpParameters, appData);
```
## Dependencies

* [libmediasoupclient][libmediasoupclient] mediasoup client side C++ library which supported by mediasoup team
* [webrtc-android-build][webrtc-android-build] my personal `webrtc` android prebuilt static library which may be compiled with some patch 


## Demo Project

[mediasoup-demo-android][mediasoup-demo-android]


## Bugs and Feedback

For bugs, feature requests, and discussion please use [GitHub Issues][issues].

## Author
Haiyang Wu([@haiyangwu](https://github.com/haiyangwu/) at Github)

## License
[MIT](./LICENSE)



[maven-mediasoup-client-android]: https://ossindex.sonatype.org/component/pkg:maven/io.github.haiyangwu/mediasoup-client
[shield-mediasoup-client-android]: https://img.shields.io/maven-central/v/io.github.haiyangwu/mediasoup-client


[libmediasoupclient]: https://github.com/versatica/libmediasoupclient
[webrtc-android-build]: https://github.com/haiyangwu/webrtc-android-build

[mediasoup-demo-android]: https://github.com/haiyangwu/mediasoup-demo-android
[issues]: https://github.com/haiyangwu/mediasoup-client-android/issues


================================================
FILE: build.gradle
================================================
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}


================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
#Fri Oct 14 15:05:29 CEST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME


================================================
FILE: gradle.properties
================================================
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

POM_VERSION=3.4.0
POM_GROUP=io.github.haiyangwu
POM_DESCRIPTION=mediasoup android client side library
POM_URL=https://github.com/haiyangwu/mediasoup-client-android
POM_SCM_URL=https://github.com/haiyangwu/mediasoup-client-android
POM_SCM_CONNECTION=scm:git@github.com:haiyangwu/mediasoup-client-android.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:haiyangwu/mediasoup-client-android.git
POM_LICENCE_NAME=MIT License
POM_LICENCE_URL=https://opensource.org/licenses/mit-license.php
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=haiyangwu
POM_DEVELOPER_NAME=HaiyangWu
POM_DEVELOPER_EMAIL=wuhaiyang1213@gmail.com




================================================
FILE: gradlew
================================================
#!/usr/bin/env sh

##############################################################################
##
##  Gradle start up script for UN*X
##
##############################################################################

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
    else
        PRG=`dirname "$PRG"`"/$link"
    fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn () {
    echo "$*"
}

die () {
    echo
    echo "$*"
    echo
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
  CYGWIN* )
    cygwin=true
    ;;
  Darwin* )
    darwin=true
    ;;
  MINGW* )
    msys=true
    ;;
  NONSTOP* )
    nonstop=true
    ;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD="$JAVA_HOME/jre/sh/java"
    else
        JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ $? -eq 0 ] ; then
        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
            MAX_FD="$MAX_FD_LIMIT"
        fi
        ulimit -n $MAX_FD
        if [ $? -ne 0 ] ; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
    JAVACMD=`cygpath --unix "$JAVACMD"`

    # We build the pattern for arguments to be converted via cygpath
    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
    SEP=""
    for dir in $ROOTDIRSRAW ; do
        ROOTDIRS="$ROOTDIRS$SEP$dir"
        SEP="|"
    done
    OURCYGPATTERN="(^($ROOTDIRS))"
    # Add a user-defined pattern to the cygpath arguments
    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
    fi
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    i=0
    for arg in "$@" ; do
        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option

        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
        else
            eval `echo args$i`="\"$arg\""
        fi
        i=$((i+1))
    done
    case $i in
        (0) set -- ;;
        (1) set -- "$args0" ;;
        (2) set -- "$args0" "$args1" ;;
        (3) set -- "$args0" "$args1" "$args2" ;;
        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
    esac
fi

# Escape application args
save () {
    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
    echo " "
}
APP_ARGS=$(save "$@")

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"

# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
  cd "$(dirname "$0")"
fi

exec "$JAVACMD" "$@"


================================================
FILE: gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega


================================================
FILE: mediasoup-client/.clang-format
================================================
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces: Custom
BraceWrapping:
  AfterClass: true
  AfterControlStatement: true
  AfterEnum: true
  AfterFunction: true
  AfterNamespace: true
  AfterStruct: true
  AfterUnion: true
  BeforeCatch: true
  BeforeElse: true
  IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakStringLiterals: false
ColumnLimit: 100
CommentPragmas: 'NOLINT'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: true
IncludeCategories:
  - Regex:    '^"(json|sdptransform)(.|/)'
    Priority: 2
  - Regex:    '^"(api|media_base|rtc_base)(.|/)'
    Priority: 3
  - Regex:    '"*"'
    Priority: 1
  - Regex:    '<*>'
    Priority: 4
IncludeIsMainRegex: '$'
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
PenaltyBreakBeforeFirstCallParameter: 5
PenaltyBreakComment: 100
PenaltyBreakFirstLessLess: 200
PenaltyBreakString: 20
PenaltyExcessCharacter: 10
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 2
UseTab: ForIndentation


================================================
FILE: mediasoup-client/.gitignore
================================================
/build
/.cxx


================================================
FILE: mediasoup-client/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.5)

project(mediasoupclient_so LANGUAGES CXX)

# Set version number.
set(mediasoup_client_so_VERSION_MAJOR 3)
set(mediasoup_client_so_VERSION_MINOR 0)
set(mediasoup_client_so_VERSION_PATCH 8)

# C++ standard requirements.
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(
	SOURCE_DIR
	${mediasoupclient_so_SOURCE_DIR}/src/main/jni/
)

set(
	SOURCE_FILES
	${SOURCE_DIR}/jni_generator_helper.cpp
	${SOURCE_DIR}/jni_onload.cpp
	${SOURCE_DIR}/scoped_java_ref.cpp
	${SOURCE_DIR}/java_types.cpp
	${SOURCE_DIR}/consumer_jni.cpp
	${SOURCE_DIR}/data_consumer_jni.cpp
	${SOURCE_DIR}/data_producer_jni.cpp
	${SOURCE_DIR}/device_jni.cpp
	${SOURCE_DIR}/logger_jni.cpp
	${SOURCE_DIR}/mediasoup_client_jni.cpp
	${SOURCE_DIR}/peerconnection_jni.cpp
	${SOURCE_DIR}/producer_jni.cpp
	${SOURCE_DIR}/transport_jni.cpp
)

# TODO(haiyang wu): add condition
list(APPEND SOURCE_FILES ${PROJECT_SOURCE_DIR}/src/androidTest/jni/parameters_jni.cpp)
list(APPEND SOURCE_FILES ${PROJECT_SOURCE_DIR}/deps/libmediasoupclient/test/src/fakeParameters.cpp)

# Create target.
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})

if(${MEDIASOUPCLIENT_LOG_TRACE})
	target_compile_definitions(${PROJECT_NAME}
		PRIVATE MSC_LOG_TRACE=1
	)
endif()

if(${MEDIASOUPCLIENT_LOG_DEV})
	target_compile_definitions(${PROJECT_NAME}
		PRIVATE MSC_LOG_DEV=1
	)
endif()

# Source Dependencies. override LIBWEBRTC_BINARY_PATH
# TODO(HaiyangWu) add libwebrtc.a without change CMakeLists in libmediasoupclient
# set(LIBWEBRTC_BINARY_PATH ${LIBWEBRTC_BINARY_ANDROID_PATH}/${ANDROID_ABI} CACHE STRING "libwebrtc binary path" FORCE)
add_subdirectory("deps/libmediasoupclient")

# Add some compile flags to our source files.
set_source_files_properties(${SOURCE_FILES}
	PROPERTIES COMPILE_FLAGS -Wall -Wextra -Wpedantic)

include_directories(SYSTEM "${LIBWEBRTC_INCLUDE_PATH}/third_party/abseil-cpp")

# Private (implementation) header files.
target_include_directories(${PROJECT_NAME} PUBLIC
	"${SOURCE_DIR}/"
	"${SOURCE_DIR}/include"
	"${PROJECT_SOURCE_DIR}/deps/libmediasoupclient/include"
	"${PROJECT_SOURCE_DIR}/deps/libmediasoupclient/test/include"
	"${PROJECT_SOURCE_DIR}/deps/libmediasoupclient/deps/libsdptransform/include"
	"${LIBWEBRTC_INCLUDE_PATH}"
	"${LIBWEBRTC_INCLUDE_PATH}/third_party/abseil-cpp"
)

# Compile definitions for libwebrtc.
target_compile_definitions(${PROJECT_NAME} PUBLIC
	$<$<NOT:$<PLATFORM_ID:Windows>>:WEBRTC_POSIX>
	$<$<PLATFORM_ID:Windows>:WEBRTC_WIN>
	$<$<PLATFORM_ID:Windows>:NOMINMAX>
	$<$<PLATFORM_ID:Windows>:WIN32_LEAN_AND_MEAN>
	$<$<PLATFORM_ID:Darwin>:WEBRTC_MAC>
)

# Public (interface) dependencies.
target_link_libraries(${PROJECT_NAME} PUBLIC
	android
	log
	OpenSLES
	mediasoupclient
)


================================================
FILE: mediasoup-client/build.gradle
================================================
plugins {
    id 'com.android.library'
    id 'signing'
    id 'maven-publish'
}

// Source of webrtc.
def WEBRTC_INC_PATH = "${projectDir}/deps/webrtc/src"
// Precompiled static libs and jar for webrtc android.
def WEBRTC_LIB_PATH = "${projectDir}/deps/webrtc/lib"

android {
    compileSdkVersion 31
    ndkVersion '22.0.7026061'

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 31
        versionCode 340
        versionName '3.4.0'

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        externalNativeBuild {
            cmake {
                // Passes optional arguments to CMake.
                arguments "-DLIBWEBRTC_INCLUDE_PATH=" + WEBRTC_INC_PATH,
                        "-DLIBWEBRTC_BINARY_PATH=" + WEBRTC_LIB_PATH,
                        "-DMEDIASOUPCLIENT_BUILD_TESTS=false",
                        "-DSDPTRANSFORM_BUILD_TESTS=OFF",
                        "-DSDPTRANSFORM_BUILD_READMEHELPER=OFF",
                        "-DMEDIASOUPCLIENT_LOG_TRACE=ON",
                        "-DMEDIASOUPCLIENT_LOG_DEV=ON"
            }
        }

        ndk {
            // Specifies the ABI configurations of your native
            // libraries Gradle should build and package with your APK.
            abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    externalNativeBuild {
        cmake {
            // Provides a relative path to your CMake build script.
            path "CMakeLists.txt"
        }
    }

    publishing {
        singleVariant("release") {
            withSourcesJar()
            withJavadocJar()
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    api fileTree(dir: WEBRTC_LIB_PATH, include: ['libwebrtc.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

def getReleaseRepositoryUrl() {
    return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
            : "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
}

def getSnapshotRepositoryUrl() {
    return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
            : "https://s01.oss.sonatype.org/content/repositories/snapshots/"
}

def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}

afterEvaluate {
publishing {
    publications {
        aar(MavenPublication) {
            from components.release
            pom {
                name = POM_NAME
                version = POM_VERSION
                groupId = POM_GROUP
                packaging = POM_PACKAGING
                artifactId = POM_ARTIFACT_ID
                description = POM_DESCRIPTION
                url = POM_URL

                scm {
                    url = POM_SCM_URL
                    connection = POM_SCM_CONNECTION
                    developerConnection = POM_SCM_DEV_CONNECTION
                }

                licenses {
                    license {
                        name = POM_LICENCE_NAME
                        url = POM_LICENCE_URL
                        distribution = POM_LICENCE_DIST
                    }
                }

                developers {
                    developer {
                        id = POM_DEVELOPER_ID
                        name = POM_DEVELOPER_NAME
                        email = POM_DEVELOPER_EMAIL
                    }
                }
            }
        }
    }
    repositories {
        maven {
            url = POM_VERSION.endsWith("SNAPSHOT") ? getSnapshotRepositoryUrl() : getReleaseRepositoryUrl()
            credentials {
                username = getRepositoryUsername()
                password = getRepositoryPassword()
            }
        }
    }
}

signing {
    sign javaDocReleaseJar
    sign sourceReleaseJar
    sign publishing.publications.aar
}
}


================================================
FILE: mediasoup-client/deps/libmediasoupclient/.clang-format
================================================
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces: Custom
BraceWrapping:
  AfterClass: true
  AfterControlStatement: true
  AfterEnum: true
  AfterFunction: true
  AfterNamespace: true
  AfterStruct: true
  AfterUnion: true
  AfterCaseLabel: true
  AfterExternBlock: true
  BeforeCatch: true
  BeforeElse: true
  IndentBraces: false
BreakBeforeBraces: Allman
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakStringLiterals: false
ColumnLimit: 100
CommentPragmas: 'NOLINT'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: true
IncludeCategories:
  - Regex:    '^"(sdp)/'
    Priority: 2
  - Regex:    '"*"'
    Priority: 1
  - Regex:    '^<(json|sdptransform)(.|/)'
    Priority: 3
  - Regex:    '^<(api|media|rtc_base|pc)(.|/)'
    Priority: 4
  - Regex:    '<*>'
    Priority: 5
IncludeIsMainRegex: '$'
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
PenaltyBreakBeforeFirstCallParameter: 5
PenaltyBreakComment: 100
PenaltyBreakFirstLessLess: 200
PenaltyBreakString: 20
PenaltyExcessCharacter: 10
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 2
UseTab: ForIndentation


================================================
FILE: mediasoup-client/deps/libmediasoupclient/.clang-tidy
================================================
---
Checks: '*,-boost-use-to-string,-cert-*,-clang-analyzer-osx.*,-clang-analyzer-optin.osx.*,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-union-access,-cppcoreguidelines-special-member-functions,-google-readability-*,-llvm-include-order,-readability-else-after-return,-readability-implicit-bool-cast,-modernize-pass-by-value,-cppcoreguidelines-no-malloc,-modernize-make-unique,-google-default-arguments,-hicpp-uppercase-literal-suffix,-readability-uppercase-literal-suffix,-hicpp-braces-around-statements,-hicpp-vararg,-hicpp-no-array-decay,-cppcoreguidelines-avoid-c-arrays,-hicpp-avoid-c-arrays,-modernize-avoid-c-arrays,-fuchsia-default-arguments-calls,-readability-implicit-bool-conversion,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-init-variables,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-cppcoreguidelines-owning-memory,-hicpp-special-member-functions,-google-runtime-references,-fuchsia-default-arguments-declarations,-cppcoreguidelines-non-private-member-variables-in-classes,-misc-non-private-member-variables-in-classes,-hicpp-signed-bitwise'

HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
User: mediasoup
CheckOptions:
  - key:             cppcoreguidelines-pro-bounds-constant-array-index.GslHeader
    value:           ''
  - key:             cppcoreguidelines-pro-bounds-constant-array-index.IncludeStyle
    value:           '0'
  - key:             misc-assert-side-effect.AssertMacros
    value:           assert
  - key:             misc-assert-side-effect.CheckFunctionCalls
    value:           '0'
  - key:             misc-throw-by-value-catch-by-reference.CheckThrowTemporaries
    value:           '1'
  - key:             modernize-loop-convert.MaxCopySize
    value:           '16'
  - key:             modernize-loop-convert.MinConfidence
    value:           reasonable
  - key:             modernize-loop-convert.NamingStyle
    value:           CamelCase
  - key:             modernize-replace-auto-ptr.IncludeStyle
    value:           llvm
  - key:             modernize-use-nullptr.NullMacros
    value:           'NULL'
  - key:             readability-braces-around-statements.ShortStatementLines
    value:           '3'
  - key:             readability-function-size.BranchThreshold
    value:           '4294967295'
  - key:             readability-function-size.LineThreshold
    value:           '4294967295'
  - key:             readability-function-size.StatementThreshold
    value:           '800'
  - key:             readability-identifier-naming.AbstractClassCase
    value:           CamelCase
  - key:             readability-identifier-naming.AbstractClassPrefix
    value:           ''
  - key:             readability-identifier-naming.AbstractClassSuffix
    value:           ''
  - key:             readability-identifier-naming.ClassCase
    value:           CamelCase
  - key:             readability-identifier-naming.ClassConstantCase
    value:           camelBack
  - key:             readability-identifier-naming.ClassConstantPrefix
    value:           ''
  - key:             readability-identifier-naming.ClassConstantSuffix
    value:           ''
  - key:             readability-identifier-naming.ClassMemberCase
    value:           camelBack
  - key:             readability-identifier-naming.ClassMemberPrefix
    value:           ''
  - key:             readability-identifier-naming.ClassMemberSuffix
    value:           ''
  - key:             readability-identifier-naming.ClassMethodCase
    value:           CamelCase
  - key:             readability-identifier-naming.ClassMethodPrefix
    value:           ''
  - key:             readability-identifier-naming.ClassMethodSuffix
    value:           ''
  - key:             readability-identifier-naming.ClassPrefix
    value:           ''
  - key:             readability-identifier-naming.ClassSuffix
    value:           ''
  - key:             readability-identifier-naming.ConstantCase
    value:           UPPER_CASE
  - key:             readability-identifier-naming.ConstantMemberCase
    value:           camelBack
  - key:             readability-identifier-naming.ConstantMemberPrefix
    value:           ''
  - key:             readability-identifier-naming.ConstantMemberSuffix
    value:           ''
  - key:             readability-identifier-naming.ConstantParameterCase
    value:           camelBack
  - key:             readability-identifier-naming.ConstantParameterPrefix
    value:           ''
  - key:             readability-identifier-naming.ConstantParameterSuffix
    value:           ''
  - key:             readability-identifier-naming.ConstantPrefix
    value:           ''
  - key:             readability-identifier-naming.ConstantSuffix
    value:           ''
  - key:             readability-identifier-naming.ConstexprFunctionCase
    value:           camelBack
  - key:             readability-identifier-naming.ConstexprFunctionPrefix
    value:           ''
  - key:             readability-identifier-naming.ConstexprFunctionSuffix
    value:           ''
  - key:             readability-identifier-naming.ConstexprMethodCase
    value:           camelBack
  - key:             readability-identifier-naming.ConstexprMethodPrefix
    value:           ''
  - key:             readability-identifier-naming.ConstexprMethodSuffix
    value:           ''
  - key:             readability-identifier-naming.ConstexprVariableCase
    value:           CamelCase
  - key:             readability-identifier-naming.ConstexprVariablePrefix
    value:           ''
  - key:             readability-identifier-naming.ConstexprVariableSuffix
    value:           ''
  - key:             readability-identifier-naming.EnumCase
    value:           aNy_Case
  - key:             readability-identifier-naming.EnumConstantCase
    value:           aNy_Case
  - key:             readability-identifier-naming.EnumConstantPrefix
    value:           ''
  - key:             readability-identifier-naming.EnumConstantSuffix
    value:           ''
  - key:             readability-identifier-naming.EnumPrefix
    value:           ''
  - key:             readability-identifier-naming.EnumSuffix
    value:           ''
  - key:             readability-identifier-naming.FunctionCase
    value:           camelBack
  - key:             readability-identifier-naming.FunctionPrefix
    value:           ''
  - key:             readability-identifier-naming.FunctionSuffix
    value:           ''
  - key:             readability-identifier-naming.GlobalConstantCase
    value:           CamelCase
  - key:             readability-identifier-naming.GlobalConstantPrefix
    value:           ''
  - key:             readability-identifier-naming.GlobalConstantSuffix
    value:           ''
  - key:             readability-identifier-naming.GlobalFunctionCase
    value:           CamelCase
  - key:             readability-identifier-naming.GlobalFunctionPrefix
    value:           ''
  - key:             readability-identifier-naming.GlobalFunctionSuffix
    value:           ''
  - key:             readability-identifier-naming.GlobalVariableCase
    value:           CamelCase
  - key:             readability-identifier-naming.GlobalVariablePrefix
    value:           ''
  - key:             readability-identifier-naming.GlobalVariableSuffix
    value:           ''
  - key:             readability-identifier-naming.IgnoreFailedSplit
    value:           '0'
  - key:             readability-identifier-naming.InlineNamespaceCase
    value:           aNy_Case
  - key:             readability-identifier-naming.InlineNamespacePrefix
    value:           ''
  - key:             readability-identifier-naming.InlineNamespaceSuffix
    value:           ''
  - key:             readability-identifier-naming.LocalConstantCase
    value:           camelBack
  - key:             readability-identifier-naming.LocalConstantPrefix
    value:           ''
  - key:             readability-identifier-naming.LocalConstantSuffix
    value:           ''
  - key:             readability-identifier-naming.LocalVariableCase
    value:           camelBack
  - key:             readability-identifier-naming.LocalVariablePrefix
    value:           ''
  - key:             readability-identifier-naming.LocalVariableSuffix
    value:           ''
  - key:             readability-identifier-naming.MemberCase
    value:           camelBack
  - key:             readability-identifier-naming.MemberPrefix
    value:           ''
  - key:             readability-identifier-naming.MemberSuffix
    value:           ''
  - key:             readability-identifier-naming.MethodCase
    value:           CamelCase
  - key:             readability-identifier-naming.MethodPrefix
    value:           ''
  - key:             readability-identifier-naming.MethodSuffix
    value:           ''
  - key:             readability-identifier-naming.NamespaceCase
    value:           aNy_Case
  - key:             readability-identifier-naming.NamespacePrefix
    value:           ''
  - key:             readability-identifier-naming.NamespaceSuffix
    value:           ''
  - key:             readability-identifier-naming.ParameterCase
    value:           camelBack
  - key:             readability-identifier-naming.ParameterPackCase
    value:           camelBack
  - key:             readability-identifier-naming.ParameterPackPrefix
    value:           ''
  - key:             readability-identifier-naming.ParameterPackSuffix
    value:           ''
  - key:             readability-identifier-naming.ParameterPrefix
    value:           ''
  - key:             readability-identifier-naming.ParameterSuffix
    value:           ''
  - key:             readability-identifier-naming.PrivateMemberCase
    value:           camelBack
  - key:             readability-identifier-naming.PrivateMemberPrefix
    value:           ''
  - key:             readability-identifier-naming.PrivateMemberSuffix
    value:           ''
  - key:             readability-identifier-naming.PrivateMethodCase
    value:           CamelCase
  - key:             readability-identifier-naming.PrivateMethodPrefix
    value:           ''
  - key:             readability-identifier-naming.PrivateMethodSuffix
    value:           ''
  - key:             readability-identifier-naming.ProtectedMemberCase
    value:           camelBack
  - key:             readability-identifier-naming.ProtectedMemberPrefix
    value:           ''
  - key:             readability-identifier-naming.ProtectedMemberSuffix
    value:           ''
  - key:             readability-identifier-naming.ProtectedMethodCase
    value:           CamelCase
  - key:             readability-identifier-naming.ProtectedMethodPrefix
    value:           ''
  - key:             readability-identifier-naming.ProtectedMethodSuffix
    value:           ''
  - key:             readability-identifier-naming.PublicMemberCase
    value:           camelBack
  - key:             readability-identifier-naming.PublicMemberPrefix
    value:           ''
  - key:             readability-identifier-naming.PublicMemberSuffix
    value:           ''
  - key:             readability-identifier-naming.PublicMethodCase
    value:           CamelCase
  - key:             readability-identifier-naming.PublicMethodPrefix
    value:           ''
  - key:             readability-identifier-naming.PublicMethodSuffix
    value:           ''
  - key:             readability-identifier-naming.StaticConstantCase
    value:           CamelCase
  - key:             readability-identifier-naming.StaticConstantPrefix
    value:           ''
  - key:             readability-identifier-naming.StaticConstantSuffix
    value:           ''
  - key:             readability-identifier-naming.StaticVariableCase
    value:           camelBack
  - key:             readability-identifier-naming.StaticVariablePrefix
    value:           ''
  - key:             readability-identifier-naming.StaticVariableSuffix
    value:           ''
  - key:             readability-identifier-naming.StructCase
    value:           CamelCase
  - key:             readability-identifier-naming.StructPrefix
    value:           ''
  - key:             readability-identifier-naming.StructSuffix
    value:           ''
  - key:             readability-identifier-naming.TemplateParameterCase
    value:           CamelCase
  - key:             readability-identifier-naming.TemplateParameterPrefix
    value:           ''
  - key:             readability-identifier-naming.TemplateParameterSuffix
    value:           ''
  - key:             readability-identifier-naming.TemplateTemplateParameterCase
    value:           CamelCase
  - key:             readability-identifier-naming.TemplateTemplateParameterPrefix
    value:           ''
  - key:             readability-identifier-naming.TemplateTemplateParameterSuffix
    value:           ''
  - key:             readability-identifier-naming.TypeTemplateParameterCase
    value:           CamelCase
  - key:             readability-identifier-naming.TypeTemplateParameterPrefix
    value:           ''
  - key:             readability-identifier-naming.TypeTemplateParameterSuffix
    value:           ''
  - key:             readability-identifier-naming.TypedefCase
    value:           CamelCase
  - key:             readability-identifier-naming.TypedefPrefix
    value:           ''
  - key:             readability-identifier-naming.TypedefSuffix
    value:           ''
  - key:             readability-identifier-naming.UnionCase
    value:           CamelCase
  - key:             readability-identifier-naming.UnionPrefix
    value:           ''
  - key:             readability-identifier-naming.UnionSuffix
    value:           ''
  - key:             readability-identifier-naming.ValueTemplateParameterCase
    value:           camelBack
  - key:             readability-identifier-naming.ValueTemplateParameterPrefix
    value:           ''
  - key:             readability-identifier-naming.ValueTemplateParameterSuffix
    value:           ''
  - key:             readability-identifier-naming.VariableCase
    value:           camelBack
  - key:             readability-identifier-naming.VariablePrefix
    value:           ''
  - key:             readability-identifier-naming.VariableSuffix
    value:           ''
  - key:             readability-identifier-naming.VirtualMethodCase
    value:           CamelCase
  - key:             readability-identifier-naming.VirtualMethodPrefix
    value:           ''
  - key:             readability-identifier-naming.VirtualMethodSuffix
    value:           ''
  - key:             readability-simplify-boolean-expr.ChainedConditionalAssignment
    value:           '1'
  - key:             readability-simplify-boolean-expr.ChainedConditionalReturn
    value:           '1'
...


================================================
FILE: mediasoup-client/deps/libmediasoupclient/.github/FUNDING.yml
================================================
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: mediasoup
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with a single custom sponsorship URL


================================================
FILE: mediasoup-client/deps/libmediasoupclient/.gitignore
================================================
/build/
/node_modules/

compile_commands.json

# Vim temporal files.
*.swp
*.swo


================================================
FILE: mediasoup-client/deps/libmediasoupclient/.npmrc
================================================
package-lock=false


================================================
FILE: mediasoup-client/deps/libmediasoupclient/CHANGELOG.md
================================================
# Changelog


### NOT RELEASED


### 3.4.0

* 'maxaveragebitrate' support for Opus. Thanks @PeterCang.
*  Enable VP9 SVC (#131). Thanks @harvestsure.
*  Reuse closed m= sections in remote SDP offer (#99).
*  Allow forcing local DTLS role (#133).
*  Add cbr config option for opus (#138). Thanks @GEverding.

### 3.3.0

* Update to libwebrtc M94/4606.

### 3.2.0

* Do not auto generate the stream ID for the receiving dataChannel,
  but provide it via API. Fixes #126.


### 3.1.5

* Fix profile-id codec parameter by converting parsed value into integer. Fixes #115


### 3.1.4

* Convert `RecvTransport::Listener` to a subclass. Thanks @maxweisel.
* Fix ambiguous cast error when compiling with MSVC. Thanks @maxweisel.


### 3.1.3

* Fix H264 `profile-level-id` value in SDP answer.
  - Same as in https://github.com/versatica/mediasoup-client/issues/148


### 3.1.2

* Fix memory leak (#105). Thanks @ploverlake.


### 3.1.1

* Update `libsdptransform` dep to 1.2.8.


### 3.1.0

* DataChannel support.


================================================
FILE: mediasoup-client/deps/libmediasoupclient/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.5)

project(mediasoupclient LANGUAGES CXX)

# Set version number.
set(mediasoupclient_VERSION_MAJOR 3)
set(mediasoupclient_VERSION_MINOR 4)
set(mediasoupclient_VERSION_PATCH 0)

# Configure a header file to pass the version.
configure_file (
	"${PROJECT_SOURCE_DIR}/version.hpp.in"
	"${PROJECT_SOURCE_DIR}/include/version.hpp"
)

# C++ standard requirements.
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Project options.
option(MEDIASOUPCLIENT_BUILD_TESTS "Build unit tests" OFF)
option(MEDIASOUPCLIENT_LOG_TRACE   "Enable MSC_LOG_TRACE (See Logger.hpp)" OFF)
option(MEDIASOUPCLIENT_LOG_DEV     "Enable MSC_LOG_DEV (See Logger.hpp)" OFF)

# Project configuration.
set(LIBWEBRTC_INCLUDE_PATH "" CACHE STRING "libwebrtc include path")
set(LIBWEBRTC_BINARY_PATH "" CACHE STRING "libwebrtc binary path")

if(NOT LIBWEBRTC_INCLUDE_PATH)
	message(FATAL_ERROR "LIBWEBRTC_INCLUDE_PATH not provided")
endif()

if(NOT LIBWEBRTC_BINARY_PATH)
	message(FATAL_ERROR "LIBWEBRTC_BINARY_PATH not provided")
endif()

message("\n=========== libmediasoupclient Build Configuration ===========\n")
message(STATUS "MEDIASOUPCLIENT_BUILD_TESTS : " ${MEDIASOUPCLIENT_BUILD_TESTS})
message(STATUS "MEDIASOUPCLIENT_LOG_TRACE   : " ${MEDIASOUPCLIENT_LOG_TRACE})
message(STATUS "MEDIASOUPCLIENT_LOG_DEV     : " ${MEDIASOUPCLIENT_LOG_DEV})
message(STATUS "LIBWEBRTC_INCLUDE_PATH      : " ${LIBWEBRTC_INCLUDE_PATH})
message(STATUS "LIBWEBRTC_BINARY_PATH       : " ${LIBWEBRTC_BINARY_PATH})
message("")

# GCC >= 4.9 is required due to std::regex use.
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
	if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
		message(FATAL_ERROR "GCC version must be at least 4.9!")
	endif()
endif()

if (${MEDIASOUPCLIENT_BUILD_TESTS})
	add_subdirectory(test)
endif()

set(HEADER_FILES
	include/mediasoupclient.hpp
)

set(
	SOURCE_FILES
	src/Consumer.cpp
	src/DataConsumer.cpp
	src/DataProducer.cpp
	src/Device.cpp
	src/Handler.cpp
	src/Logger.cpp
	src/PeerConnection.cpp
	src/Producer.cpp
	src/Transport.cpp
	src/mediasoupclient.cpp
	src/ortc.cpp
	src/scalabilityMode.cpp
	src/sdp/MediaSection.cpp
	src/sdp/RemoteSdp.cpp
	src/sdp/Utils.cpp
	include/Consumer.hpp
	include/Device.hpp
	include/Handler.hpp
	include/Logger.hpp
	include/MediaSoupClientErrors.hpp
	include/PeerConnection.hpp
	include/Producer.hpp
	include/Transport.hpp
	include/mediasoupclient.hpp
	include/ortc.hpp
	include/scalabilityMode.hpp
	include/sdp/MediaSection.hpp
	include/sdp/RemoteSdp.hpp
	include/sdp/Utils.hpp
)

# Create target.
add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES})

if(${MEDIASOUPCLIENT_LOG_TRACE})
	target_compile_definitions(${PROJECT_NAME}
		PRIVATE MSC_LOG_TRACE=1
	)
endif()

if(${MEDIASOUPCLIENT_LOG_DEV})
	target_compile_definitions(${PROJECT_NAME}
		PRIVATE MSC_LOG_DEV=1
	)
endif()

# Source Dependencies.
add_subdirectory(deps/libsdptransform "${CMAKE_CURRENT_BINARY_DIR}/libsdptransform")

# Add some compile flags to our source files.
if(MSVC)
	set_source_files_properties(${SOURCE_FILES}
		PROPERTIES COMPILE_FLAGS "/W3")
else()
	set_source_files_properties(${SOURCE_FILES}
		PROPERTIES COMPILE_FLAGS -Wall -Wextra -Wpedantic)
endif()

# Private (implementation) header files.
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/include)

# Public (interface) headers from dependencies.
target_include_directories(${PROJECT_NAME} PUBLIC
	"${PROJECT_SOURCE_DIR}/deps/libsdptransform/include"
	"${LIBWEBRTC_INCLUDE_PATH}"
	"${LIBWEBRTC_INCLUDE_PATH}/third_party/abseil-cpp"
)

# Public (interface) dependencies.
if("${ANDROID_ABI}" STREQUAL "")
	target_link_libraries(${PROJECT_NAME} PUBLIC
		sdptransform
		${LIBWEBRTC_BINARY_PATH}/libwebrtc${CMAKE_STATIC_LIBRARY_SUFFIX}
	)
else()
	# Add '-whole-archive' to keep symbols from peerconnection_jni.
	# https://stackoverflow.com/a/5687860/2085408
	SET (webrtc -Wl,--whole-archive ${LIBWEBRTC_BINARY_PATH}/${ANDROID_ABI}/libwebrtc${CMAKE_STATIC_LIBRARY_SUFFIX}  -Wl,--no-whole-archive)

	target_link_libraries(${PROJECT_NAME} PUBLIC
			sdptransform
			${webrtc}
			)
endif()

# Compile definitions for libwebrtc.
target_compile_definitions(${PROJECT_NAME} PUBLIC
	$<$<NOT:$<PLATFORM_ID:Windows>>:WEBRTC_POSIX>
	$<$<PLATFORM_ID:Windows>:WEBRTC_WIN>
	$<$<PLATFORM_ID:Windows>:NOMINMAX>
	$<$<PLATFORM_ID:Windows>:WIN32_LEAN_AND_MEAN>
	$<$<PLATFORM_ID:Darwin>:WEBRTC_MAC>
)

install(TARGETS mediasoupclient DESTINATION lib)
install(FILES ${HEADER_FILES} DESTINATION include/mediasoupclient)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/LICENSE
================================================
ISC License

Copyright © 2019, José Luis Millán <jmillan@aliax.net>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


================================================
FILE: mediasoup-client/deps/libmediasoupclient/README.md
================================================
# libmediasoupclient

C++ client side library for building [mediasoup][mediasoup-website] based applications built on top of Google's libwebrtc C++ library.



## Website and Documentation

* [mediasoup.org][mediasoup-website]


## Support Forum

* [mediasoup.discourse.group][mediasoup-discourse]


## Authors

* José Luis Millán [[website](https://jssip.net)|[github](https://github.com/jmillan/)]
* Iñaki Baz Castillo [[website](https://inakibaz.me)|[github](https://github.com/ibc/)]



## License

[ISC](./LICENSE)




[mediasoup-website]: https://mediasoup.org
[mediasoup-discourse]: https://mediasoup.discourse.group


================================================
FILE: mediasoup-client/deps/libmediasoupclient/TODO.md
================================================
# libmediasoupclient TODO

* To compile tests, libwebrtc must be built with arg `rtc_enable_tests=true` in `gn gen` command.


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/build.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import re
from cpt.packager import ConanMultiPackager
from cpt.ci_manager import CIManager
from cpt.printer import Printer


class BuilderSettings(object):
    @property
    def username(self):
        """ Set catchorg as package's owner
        """
        return os.getenv("CONAN_USERNAME", "catchorg")

    @property
    def login_username(self):
        """ Set Bintray login username
        """
        return os.getenv("CONAN_LOGIN_USERNAME", "horenmar")

    @property
    def upload(self):
        """ Set Catch2 repository to be used on upload.
            The upload server address could be customized by env var
            CONAN_UPLOAD. If not defined, the method will check the branch name.
            Only master or CONAN_STABLE_BRANCH_PATTERN will be accepted.
            The master branch will be pushed to testing channel, because it does
            not match the stable pattern. Otherwise it will upload to stable
            channel.
        """
        return os.getenv("CONAN_UPLOAD", "https://api.bintray.com/conan/catchorg/Catch2")

    @property
    def upload_only_when_stable(self):
        """ Force to upload when running over tag branch
        """
        return os.getenv("CONAN_UPLOAD_ONLY_WHEN_STABLE", "True").lower() in ["true", "1", "yes"]

    @property
    def stable_branch_pattern(self):
        """ Only upload the package the branch name is like a tag
        """
        return os.getenv("CONAN_STABLE_BRANCH_PATTERN", r"v\d+\.\d+\.\d+")

    @property
    def reference(self):
        """ Read project version from branch create Conan reference
        """
        return os.getenv("CONAN_REFERENCE", "Catch2/{}".format(self._version))

    @property
    def channel(self):
        """ Default Conan package channel when not stable
        """
        return os.getenv("CONAN_CHANNEL", "testing")

    @property
    def _version(self):
        """ Get version name from cmake file
        """
        pattern = re.compile(r"project\(Catch2 LANGUAGES CXX VERSION (\d+\.\d+\.\d+)\)")
        version = "latest"
        with open("CMakeLists.txt") as file:
            for line in file:
                result = pattern.search(line)
                if result:
                    version = result.group(1)
        return version

    @property
    def _branch(self):
        """ Get branch name from CI manager
        """
        printer = Printer(None)
        ci_manager = CIManager(printer)
        return ci_manager.get_branch()


if __name__ == "__main__":
    settings = BuilderSettings()
    builder = ConanMultiPackager(
        reference=settings.reference,
        channel=settings.channel,
        upload=settings.upload,
        upload_only_when_stable=settings.upload_only_when_stable,
        stable_branch_pattern=settings.stable_branch_pattern,
        login_username=settings.login_username,
        username=settings.username,
        test_folder=os.path.join(".conan", "test_package"))
    builder.add()
    builder.run()


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.2.0)
project(test_package CXX)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

find_package(Catch2 REQUIRED CONFIG)

add_executable(${PROJECT_NAME} test_package.cpp)
target_link_libraries(${PROJECT_NAME} CONAN_PKG::Catch2)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 11)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/conanfile.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from conans import ConanFile, CMake
import os


class TestPackageConan(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    generators = "cmake"

    def build(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.build()

    def test(self):
        assert os.path.isfile(os.path.join(self.deps_cpp_info["Catch2"].rootpath, "licenses", "LICENSE.txt"))
        bin_path = os.path.join("bin", "test_package")
        self.run("%s -s" % bin_path, run_environment=True)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/test_package.cpp
================================================
#define CATCH_CONFIG_MAIN

#include <catch2/catch.hpp>

int Factorial( int number ) {
    return number <= 1 ? 1 : Factorial( number - 1 ) * number;
}

TEST_CASE( "Factorial Tests", "[single-file]" ) {
    REQUIRE( Factorial(0) == 1 );
    REQUIRE( Factorial(1) == 1 );
    REQUIRE( Factorial(2) == 2 );
    REQUIRE( Factorial(3) == 6 );
    REQUIRE( Factorial(10) == 3628800 );
}

================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.gitattributes
================================================
# This sets the default behaviour, overriding core.autocrlf
* text=auto

# All source files should have unix line-endings in the repository,
# but convert to native line-endings on checkout
*.cpp text
*.h text
*.hpp text

# Windows specific files should retain windows line-endings
*.sln text eol=crlf

# Keep executable scripts with LFs so they can be run after being
# checked out on Windows
*.py text eol=lf


# Keep the single include header with LFs to make sure it is uploaded,
# hashed etc with LF
single_include/**/*.hpp eol=lf
# Also keep the LICENCE file with LFs for the same reason
LICENCE.txt eol=lf


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.github/FUNDING.yml
================================================
patreon: horenmar


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create an issue that documents a bug
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Reproduction steps**
Steps to reproduce the bug.
<!-- Usually this means a small and self-contained piece of code that uses Catch and specifying compiler flags if relevant. -->


**Platform information:**
<!-- Fill in any extra information that might be important for your issue. -->
 - OS: **Windows NT**
 - Compiler+version: **GCC v2.9.5**
 - Catch version: **v1.2.3**


**Additional context**
Add any other context about the problem here.


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Create an issue that requests a feature or other improvement
title: ''
labels: ''
assignees: ''

---

**Description**
Describe the feature/change you request and why do you want it.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.github/pull_request_template.md
================================================
<!--
Please do not submit pull requests changing the `version.hpp`
or the single-include `catch.hpp` file, these are changed
only when a new release is made.

Before submitting a PR you should probably read the contributor documentation
at docs/contributing.md. It will tell you how to properly test your changes.
-->


## Description
<!--
Describe the what and the why of your pull request. Remember that these two
are usually a bit different. As an example, if you have made various changes
to decrease the number of new strings allocated, that's what. The why probably
was that you have a large set of tests and found that this speeds them up.
-->

## GitHub Issues
<!-- 
If this PR was motivated by some existing issues, reference them here.

If it is a simple bug-fix, please also add a line like 'Closes #123'
to your commit message, so that it is automatically closed.
If it is not, don't, as it might take several iterations for a feature
to be done properly. If in doubt, leave it open and reference it in the
PR itself, so that maintainers can decide.
-->


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.gitignore
================================================
*.build
*.pbxuser
*.mode1v3
*.ncb
*.suo
Debug
Release
*.user
*.xcuserstate
.DS_Store
xcuserdata
CatchSelfTest.xcscheme
Breakpoints.xcbkptlist
projects/VS2010/TestCatch/_UpgradeReport_Files/
projects/VS2010/TestCatch/TestCatch/TestCatch.vcxproj.filters
projects/VisualStudio/TestCatch/UpgradeLog.XML
projects/CMake/.idea
projects/CMake/cmake-build-debug
UpgradeLog.XML
Resources/DWARF
projects/Generated
*.pyc
DerivedData
*.xccheckout
Build
.idea
.vs
cmake-build-*
benchmark-dir
.conan/test_package/build


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.travis.yml
================================================
language: cpp

branches:
  except:
  - /dev-appveyor.*/

common_sources: &all_sources
  - ubuntu-toolchain-r-test
  - llvm-toolchain-trusty
  - llvm-toolchain-trusty-3.9
  - llvm-toolchain-trusty-4.0
  - llvm-toolchain-xenial-5.0
  - llvm-toolchain-xenial-6.0

matrix:
  include:

    # 1/ Linux Clang Builds
    - os: linux
      compiler: clang
      addons:
        apt:
          sources: *all_sources
          packages: ['clang-3.5']
      env: COMPILER='clang++-3.5'

    - os: linux
      compiler: clang
      addons:
        apt:
          sources: *all_sources
          packages: ['clang-3.6']
      env: COMPILER='clang++-3.6'

    # Clang 3.7 is intentionally skipped as we cannot get it easily on
    # TravisCI container

    - os: linux
      compiler: clang
      addons:
        apt:
          sources: *all_sources
          packages: ['lcov', 'clang-3.8']
      env: COMPILER='clang++-3.8'

    - os: linux
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-3.9']
      env: COMPILER='clang++-3.9'

    - os: linux
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-4.0']
      env: COMPILER='clang++-4.0'

    - os: linux
      dist: xenial
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-5.0']
      env: COMPILER='clang++-5.0'

    - os: linux
      dist: xenial
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-6.0']
      env: COMPILER='clang++-6.0'

    # 2/ Linux GCC Builds
    - os: linux
      compiler: gcc
      addons:
        apt:
         sources: *all_sources
         packages: ['g++-4.8']
      env: COMPILER='g++-4.8'

    - os: linux
      compiler: gcc
      addons:
        apt:
          sources: *all_sources
          packages: ['g++-4.9']
      env: COMPILER='g++-4.9'

    - os: linux
      compiler: gcc
      addons:
        apt:
          sources: *all_sources
          packages: ['g++-5']
      env: COMPILER='g++-5'

    - os: linux
      compiler: gcc
      addons: &gcc6
        apt:
          sources: *all_sources
          packages: ['g++-6']
      env: COMPILER='g++-6'

    - os: linux
      compiler: gcc
      addons: &gcc7
        apt:
          sources: *all_sources
          packages: ['g++-7']
      env: COMPILER='g++-7'

    - os: linux
      compiler: gcc
      addons: &gcc8
        apt:
          sources: *all_sources
          packages: ['g++-8']
      env: COMPILER='g++-8'

    # 3b/ Linux C++14 Clang builds
    # Note that we need newer libstdc++ for C++14 support
    - os: linux
      compiler: clang
      addons:
          apt:
              packages: ['clang-3.8', 'libstdc++-6-dev']
              sources:
                  - ubuntu-toolchain-r-test
                  - llvm-toolchain-trusty
      env: COMPILER='clang++-3.8' CPP14=1

    - os: linux
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-3.9', 'libstdc++-6-dev']
      env: COMPILER='clang++-3.9' CPP14=1

    - os: linux
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-4.0', 'libstdc++-6-dev']
      env: COMPILER='clang++-4.0' CPP14=1

    - os: linux
      dist: xenial
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-5.0', 'libstdc++-6-dev']
      env: COMPILER='clang++-5.0' CPP14=1

    - os: linux
      dist: xenial
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-6.0', 'libstdc++-6-dev']
      env: COMPILER='clang++-6.0' CPP14=1


    # 4a/ Linux C++14 GCC builds
    - os: linux
      compiler: gcc
      addons: *gcc6
      env: COMPILER='g++-6' CPP14=1

    - os: linux
      compiler: gcc
      addons: *gcc7
      env: COMPILER='g++-7' CPP14=1

    - os: linux
      compiler: gcc
      addons: *gcc8
      env: COMPILER='g++-8' CPP14=1

    # 5/ OSX Clang Builds
    - os: osx
      osx_image: xcode7.3
      compiler: clang
      env: COMPILER='clang++'

    - os: osx
      osx_image: xcode8
      compiler: clang
      env: COMPILER='clang++'

    - os: osx
      osx_image: xcode9
      compiler: clang
      env: COMPILER='clang++'

    - os: osx
      osx_image: xcode9.1
      compiler: clang
      env: COMPILER='clang++'

    - os: osx
      osx_image: xcode9.1
      compiler: clang
      env: COMPILER='clang++' CPP14=1

    # 6/ Special builds -- examples, coverage, valgrind, etc.
    - os: linux
      compiler: gcc
      addons:
        apt:
          sources: *all_sources
          packages: ['lcov', 'g++-7']
      env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1

    - os: linux
      compiler: clang
      addons:
        apt:
          packages: ['clang-3.8', 'lcov']
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty
      env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1

    - os: linux
      compiler: gcc
      addons:
        apt:
          sources: *all_sources
          packages: ['valgrind', 'lcov', 'g++-7']
      env: COMPILER='g++-7' CPP14=1 VALGRIND=1

    - os: osx
      osx_image: xcode9.1
      compiler: clang
      env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1

    # 7/ C++17 builds
    - os: linux
      compiler: gcc
      addons: *gcc7
      env: COMPILER='g++-7' CPP17=1

    - os: linux
      compiler: gcc
      addons: *gcc7
      env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1

    - os: linux
      dist: xenial
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-6.0', 'libstdc++-8-dev']
      env: COMPILER='clang++-6.0' CPP17=1

    - os: linux
      dist: xenial
      compiler: clang
      addons:
          apt:
              sources: *all_sources
              packages: ['clang-6.0', 'libstdc++-8-dev']
      env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1

    # 8/ Conan
    - language: python
      python:
        - "3.7"
      dist: xenial
      install:
        - pip install conan-package-tools
      env:
        - CONAN_GCC_VERSIONS=8
        - CONAN_DOCKER_IMAGE=conanio/gcc8
      script:
        - python .conan/build.py

install:
  - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
  - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
  - |
    if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
      CMAKE_URL="http://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz"
      mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
      export PATH=${DEPS_DIR}/cmake/bin:${PATH}
    elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
        which cmake || brew install cmake;
    fi

before_script:
  - export CXX=${COMPILER}
  - cd ${TRAVIS_BUILD_DIR}
  # Regenerate single header file, so it is tested in the examples...
  - python scripts/generateSingleHeader.py

  - |
    if [[ ${CPP17} -eq 1 ]]; then
      export CPP_STANDARD=17
    elif [[ ${CPP14} -eq 1 ]]; then
      export CPP_STANDARD=14
    else
      export CPP_STANDARD=11
    fi

    # Use Debug builds for running Valgrind and building examples
  - cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE} -DCATCH_BUILD_EXTRA_TESTS=${EXTRAS} -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
    # Don't bother with release build for coverage build
  - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF


script:
  - cd Build-Debug
  - make -j 2
  - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
    # Coverage collection does not work for OS X atm
  - |
    if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
      make gcov
      make lcov
      bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
    fi
  - # Go to release build
  - cd ../Build-Release
  - make -j 2
  - CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/Catch2Config.cmake.in
================================================
@PACKAGE_INIT@


# Avoid repeatedly including the targets
if(NOT TARGET Catch2::Catch2)
    # Provide path for scripts
    list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")

    include(${CMAKE_CURRENT_LIST_DIR}/Catch2Targets.cmake)
endif()


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/FindGcov.cmake
================================================
# This file is part of CMake-codecov.
#
# Copyright (c)
#   2015-2017 RWTH Aachen University, Federal Republic of Germany
#
# See the LICENSE file in the package base directory for details
#
# Written by Alexander Haase, alexander.haase@rwth-aachen.de
#


# include required Modules
include(FindPackageHandleStandardArgs)


# Search for gcov binary.
set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
set(CMAKE_REQUIRED_QUIET ${codecov_FIND_QUIETLY})

get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach (LANG ${ENABLED_LANGUAGES})
	# Gcov evaluation is dependent on the used compiler. Check gcov support for
	# each compiler that is used. If gcov binary was already found for this
	# compiler, do not try to find it again.
	if (NOT GCOV_${CMAKE_${LANG}_COMPILER_ID}_BIN)
		get_filename_component(COMPILER_PATH "${CMAKE_${LANG}_COMPILER}" PATH)

		if ("${CMAKE_${LANG}_COMPILER_ID}" STREQUAL "GNU")
			# Some distributions like OSX (homebrew) ship gcov with the compiler
			# version appended as gcov-x. To find this binary we'll build the
			# suggested binary name with the compiler version.
			string(REGEX MATCH "^[0-9]+" GCC_VERSION
				"${CMAKE_${LANG}_COMPILER_VERSION}")

			find_program(GCOV_BIN NAMES gcov-${GCC_VERSION} gcov
				HINTS ${COMPILER_PATH})

		elseif ("${CMAKE_${LANG}_COMPILER_ID}" STREQUAL "Clang")
			# Some distributions like Debian ship llvm-cov with the compiler
			# version appended as llvm-cov-x.y. To find this binary we'll build
			# the suggested binary name with the compiler version.
			string(REGEX MATCH "^[0-9]+.[0-9]+" LLVM_VERSION
				"${CMAKE_${LANG}_COMPILER_VERSION}")

			# llvm-cov prior version 3.5 seems to be not working with coverage
			# evaluation tools, but these versions are compatible with the gcc
			# gcov tool.
			if(LLVM_VERSION VERSION_GREATER 3.4)
				find_program(LLVM_COV_BIN NAMES "llvm-cov-${LLVM_VERSION}"
					"llvm-cov" HINTS ${COMPILER_PATH})
				mark_as_advanced(LLVM_COV_BIN)

				if (LLVM_COV_BIN)
					find_program(LLVM_COV_WRAPPER "llvm-cov-wrapper" PATHS
						${CMAKE_MODULE_PATH})
					if (LLVM_COV_WRAPPER)
						set(GCOV_BIN "${LLVM_COV_WRAPPER}" CACHE FILEPATH "")

						# set additional parameters
						set(GCOV_${CMAKE_${LANG}_COMPILER_ID}_ENV
							"LLVM_COV_BIN=${LLVM_COV_BIN}" CACHE STRING
							"Environment variables for llvm-cov-wrapper.")
						mark_as_advanced(GCOV_${CMAKE_${LANG}_COMPILER_ID}_ENV)
					endif ()
				endif ()
			endif ()

			if (NOT GCOV_BIN)
				# Fall back to gcov binary if llvm-cov was not found or is
				# incompatible. This is the default on OSX, but may crash on
				# recent Linux versions.
				find_program(GCOV_BIN gcov HINTS ${COMPILER_PATH})
			endif ()
		endif ()


		if (GCOV_BIN)
			set(GCOV_${CMAKE_${LANG}_COMPILER_ID}_BIN "${GCOV_BIN}" CACHE STRING
				"${LANG} gcov binary.")

			if (NOT CMAKE_REQUIRED_QUIET)
				message("-- Found gcov evaluation for "
				"${CMAKE_${LANG}_COMPILER_ID}: ${GCOV_BIN}")
			endif()

			unset(GCOV_BIN CACHE)
		endif ()
	endif ()
endforeach ()




# Add a new global target for all gcov targets. This target could be used to
# generate the gcov files for the whole project instead of calling <TARGET>-gcov
# for each target.
if (NOT TARGET gcov)
	add_custom_target(gcov)
endif (NOT TARGET gcov)



# This function will add gcov evaluation for target <TNAME>. Only sources of
# this target will be evaluated and no dependencies will be added. It will call
# Gcov on any source file of <TNAME> once and store the gcov file in the same
# directory.
function (add_gcov_target TNAME)
	set(TDIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TNAME}.dir)

	# We don't have to check, if the target has support for coverage, thus this
	# will be checked by add_coverage_target in Findcoverage.cmake. Instead we
	# have to determine which gcov binary to use.
	get_target_property(TSOURCES ${TNAME} SOURCES)
	set(SOURCES "")
	set(TCOMPILER "")
	foreach (FILE ${TSOURCES})
		codecov_path_of_source(${FILE} FILE)
		if (NOT "${FILE}" STREQUAL "")
			codecov_lang_of_source(${FILE} LANG)
			if (NOT "${LANG}" STREQUAL "")
				list(APPEND SOURCES "${FILE}")
				set(TCOMPILER ${CMAKE_${LANG}_COMPILER_ID})
			endif ()
		endif ()
	endforeach ()

	# If no gcov binary was found, coverage data can't be evaluated.
	if (NOT GCOV_${TCOMPILER}_BIN)
		message(WARNING "No coverage evaluation binary found for ${TCOMPILER}.")
		return()
	endif ()

	set(GCOV_BIN "${GCOV_${TCOMPILER}_BIN}")
	set(GCOV_ENV "${GCOV_${TCOMPILER}_ENV}")


	set(BUFFER "")
	foreach(FILE ${SOURCES})
		get_filename_component(FILE_PATH "${TDIR}/${FILE}" PATH)

		# call gcov
		add_custom_command(OUTPUT ${TDIR}/${FILE}.gcov
			COMMAND ${GCOV_ENV} ${GCOV_BIN} ${TDIR}/${FILE}.gcno > /dev/null
			DEPENDS ${TNAME} ${TDIR}/${FILE}.gcno
			WORKING_DIRECTORY ${FILE_PATH}
		)

		list(APPEND BUFFER ${TDIR}/${FILE}.gcov)
	endforeach()


	# add target for gcov evaluation of <TNAME>
	add_custom_target(${TNAME}-gcov DEPENDS ${BUFFER})

	# add evaluation target to the global gcov target.
	add_dependencies(gcov ${TNAME}-gcov)
endfunction (add_gcov_target)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/FindLcov.cmake
================================================
# This file is part of CMake-codecov.
#
# Copyright (c)
#   2015-2017 RWTH Aachen University, Federal Republic of Germany
#
# See the LICENSE file in the package base directory for details
#
# Written by Alexander Haase, alexander.haase@rwth-aachen.de
#


# configuration
set(LCOV_DATA_PATH "${CMAKE_BINARY_DIR}/lcov/data")
set(LCOV_DATA_PATH_INIT "${LCOV_DATA_PATH}/init")
set(LCOV_DATA_PATH_CAPTURE "${LCOV_DATA_PATH}/capture")
set(LCOV_HTML_PATH "${CMAKE_BINARY_DIR}/lcov/html")




# Search for Gcov which is used by Lcov.
find_package(Gcov)




# This function will add lcov evaluation for target <TNAME>. Only sources of
# this target will be evaluated and no dependencies will be added. It will call
# geninfo on any source file of <TNAME> once and store the info file in the same
# directory.
#
# Note: This function is only a wrapper to define this function always, even if
#   coverage is not supported by the compiler or disabled. This function must
#   be defined here, because the module will be exited, if there is no coverage
#   support by the compiler or it is disabled by the user.
function (add_lcov_target TNAME)
	if (LCOV_FOUND)
		# capture initial coverage data
		lcov_capture_initial_tgt(${TNAME})

		# capture coverage data after execution
		lcov_capture_tgt(${TNAME})
	endif ()
endfunction (add_lcov_target)




# include required Modules
include(FindPackageHandleStandardArgs)

# Search for required lcov binaries.
find_program(LCOV_BIN lcov)
find_program(GENINFO_BIN geninfo)
find_program(GENHTML_BIN genhtml)
find_package_handle_standard_args(lcov
	REQUIRED_VARS LCOV_BIN GENINFO_BIN GENHTML_BIN
)

# enable genhtml C++ demangeling, if c++filt is found.
set(GENHTML_CPPFILT_FLAG "")
find_program(CPPFILT_BIN c++filt)
if (NOT CPPFILT_BIN STREQUAL "")
	set(GENHTML_CPPFILT_FLAG "--demangle-cpp")
endif (NOT CPPFILT_BIN STREQUAL "")

# enable no-external flag for lcov, if available.
if (GENINFO_BIN AND NOT DEFINED GENINFO_EXTERN_FLAG)
	set(FLAG "")
	execute_process(COMMAND ${GENINFO_BIN} --help OUTPUT_VARIABLE GENINFO_HELP)
	string(REGEX MATCH "external" GENINFO_RES "${GENINFO_HELP}")
	if (GENINFO_RES)
		set(FLAG "--no-external")
	endif ()

	set(GENINFO_EXTERN_FLAG "${FLAG}"
		CACHE STRING "Geninfo flag to exclude system sources.")
endif ()

# If Lcov was not found, exit module now.
if (NOT LCOV_FOUND)
	return()
endif (NOT LCOV_FOUND)




# Create directories to be used.
file(MAKE_DIRECTORY ${LCOV_DATA_PATH_INIT})
file(MAKE_DIRECTORY ${LCOV_DATA_PATH_CAPTURE})

set(LCOV_REMOVE_PATTERNS "")

# This function will merge lcov files to a single target file. Additional lcov
# flags may be set with setting LCOV_EXTRA_FLAGS before calling this function.
function (lcov_merge_files OUTFILE ...)
	# Remove ${OUTFILE} from ${ARGV} and generate lcov parameters with files.
	list(REMOVE_AT ARGV 0)

	# Generate merged file.
	string(REPLACE "${CMAKE_BINARY_DIR}/" "" FILE_REL "${OUTFILE}")
	add_custom_command(OUTPUT "${OUTFILE}.raw"
		COMMAND cat ${ARGV} > ${OUTFILE}.raw
		DEPENDS ${ARGV}
		COMMENT "Generating ${FILE_REL}"
	)

	add_custom_command(OUTPUT "${OUTFILE}"
		COMMAND ${LCOV_BIN} --quiet -a ${OUTFILE}.raw --output-file ${OUTFILE}
			--base-directory ${PROJECT_SOURCE_DIR} ${LCOV_EXTRA_FLAGS}
		COMMAND ${LCOV_BIN} --quiet -r ${OUTFILE} ${LCOV_REMOVE_PATTERNS}
			--output-file ${OUTFILE} ${LCOV_EXTRA_FLAGS}
		DEPENDS ${OUTFILE}.raw
		COMMENT "Post-processing ${FILE_REL}"
	)
endfunction ()




# Add a new global target to generate initial coverage reports for all targets.
# This target will be used to generate the global initial info file, which is
# used to gather even empty report data.
if (NOT TARGET lcov-capture-init)
	add_custom_target(lcov-capture-init)
	set(LCOV_CAPTURE_INIT_FILES "" CACHE INTERNAL "")
endif (NOT TARGET lcov-capture-init)


# This function will add initial capture of coverage data for target <TNAME>,
# which is needed to get also data for objects, which were not loaded at
# execution time. It will call geninfo for every source file of <TNAME> once and
# store the info file in the same directory.
function (lcov_capture_initial_tgt TNAME)
	# We don't have to check, if the target has support for coverage, thus this
	# will be checked by add_coverage_target in Findcoverage.cmake. Instead we
	# have to determine which gcov binary to use.
	get_target_property(TSOURCES ${TNAME} SOURCES)
	set(SOURCES "")
	set(TCOMPILER "")
	foreach (FILE ${TSOURCES})
		codecov_path_of_source(${FILE} FILE)
		if (NOT "${FILE}" STREQUAL "")
			codecov_lang_of_source(${FILE} LANG)
			if (NOT "${LANG}" STREQUAL "")
				list(APPEND SOURCES "${FILE}")
				set(TCOMPILER ${CMAKE_${LANG}_COMPILER_ID})
			endif ()
		endif ()
	endforeach ()

	# If no gcov binary was found, coverage data can't be evaluated.
	if (NOT GCOV_${TCOMPILER}_BIN)
		message(WARNING "No coverage evaluation binary found for ${TCOMPILER}.")
		return()
	endif ()

	set(GCOV_BIN "${GCOV_${TCOMPILER}_BIN}")
	set(GCOV_ENV "${GCOV_${TCOMPILER}_ENV}")


	set(TDIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TNAME}.dir)
	set(GENINFO_FILES "")
	foreach(FILE ${SOURCES})
		# generate empty coverage files
		set(OUTFILE "${TDIR}/${FILE}.info.init")
		list(APPEND GENINFO_FILES ${OUTFILE})

		add_custom_command(OUTPUT ${OUTFILE} COMMAND ${GCOV_ENV} ${GENINFO_BIN}
				--quiet --base-directory ${PROJECT_SOURCE_DIR} --initial
				--gcov-tool ${GCOV_BIN} --output-filename ${OUTFILE}
				${GENINFO_EXTERN_FLAG} ${TDIR}/${FILE}.gcno
			DEPENDS ${TNAME}
			COMMENT "Capturing initial coverage data for ${FILE}"
		)
	endforeach()

	# Concatenate all files generated by geninfo to a single file per target.
	set(OUTFILE "${LCOV_DATA_PATH_INIT}/${TNAME}.info")
	set(LCOV_EXTRA_FLAGS "--initial")
	lcov_merge_files("${OUTFILE}" ${GENINFO_FILES})
	add_custom_target(${TNAME}-capture-init ALL DEPENDS ${OUTFILE})

	# add geninfo file generation to global lcov-geninfo target
	add_dependencies(lcov-capture-init ${TNAME}-capture-init)
	set(LCOV_CAPTURE_INIT_FILES "${LCOV_CAPTURE_INIT_FILES}"
		"${OUTFILE}" CACHE INTERNAL ""
	)
endfunction (lcov_capture_initial_tgt)


# This function will generate the global info file for all targets. It has to be
# called after all other CMake functions in the root CMakeLists.txt file, to get
# a full list of all targets that generate coverage data.
function (lcov_capture_initial)
	# Skip this function (and do not create the following targets), if there are
	# no input files.
	if ("${LCOV_CAPTURE_INIT_FILES}" STREQUAL "")
		return()
	endif ()

	# Add a new target to merge the files of all targets.
	set(OUTFILE "${LCOV_DATA_PATH_INIT}/all_targets.info")
	lcov_merge_files("${OUTFILE}" ${LCOV_CAPTURE_INIT_FILES})
	add_custom_target(lcov-geninfo-init ALL	DEPENDS ${OUTFILE}
		lcov-capture-init
	)
endfunction (lcov_capture_initial)




# Add a new global target to generate coverage reports for all targets. This
# target will be used to generate the global info file.
if (NOT TARGET lcov-capture)
	add_custom_target(lcov-capture)
	set(LCOV_CAPTURE_FILES "" CACHE INTERNAL "")
endif (NOT TARGET lcov-capture)


# This function will add capture of coverage data for target <TNAME>, which is
# needed to get also data for objects, which were not loaded at execution time.
# It will call geninfo for every source file of <TNAME> once and store the info
# file in the same directory.
function (lcov_capture_tgt TNAME)
	# We don't have to check, if the target has support for coverage, thus this
	# will be checked by add_coverage_target in Findcoverage.cmake. Instead we
	# have to determine which gcov binary to use.
	get_target_property(TSOURCES ${TNAME} SOURCES)
	set(SOURCES "")
	set(TCOMPILER "")
	foreach (FILE ${TSOURCES})
		codecov_path_of_source(${FILE} FILE)
		if (NOT "${FILE}" STREQUAL "")
			codecov_lang_of_source(${FILE} LANG)
			if (NOT "${LANG}" STREQUAL "")
				list(APPEND SOURCES "${FILE}")
				set(TCOMPILER ${CMAKE_${LANG}_COMPILER_ID})
			endif ()
		endif ()
	endforeach ()

	# If no gcov binary was found, coverage data can't be evaluated.
	if (NOT GCOV_${TCOMPILER}_BIN)
		message(WARNING "No coverage evaluation binary found for ${TCOMPILER}.")
		return()
	endif ()

	set(GCOV_BIN "${GCOV_${TCOMPILER}_BIN}")
	set(GCOV_ENV "${GCOV_${TCOMPILER}_ENV}")


	set(TDIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TNAME}.dir)
	set(GENINFO_FILES "")
	foreach(FILE ${SOURCES})
		# Generate coverage files. If no .gcda file was generated during
		# execution, the empty coverage file will be used instead.
		set(OUTFILE "${TDIR}/${FILE}.info")
		list(APPEND GENINFO_FILES ${OUTFILE})

		add_custom_command(OUTPUT ${OUTFILE}
			COMMAND test -f "${TDIR}/${FILE}.gcda"
				&& ${GCOV_ENV} ${GENINFO_BIN} --quiet --base-directory
					${PROJECT_SOURCE_DIR} --gcov-tool ${GCOV_BIN}
					--output-filename ${OUTFILE} ${GENINFO_EXTERN_FLAG}
					${TDIR}/${FILE}.gcda
				|| cp ${OUTFILE}.init ${OUTFILE}
			DEPENDS ${TNAME} ${TNAME}-capture-init
			COMMENT "Capturing coverage data for ${FILE}"
		)
	endforeach()

	# Concatenate all files generated by geninfo to a single file per target.
	set(OUTFILE "${LCOV_DATA_PATH_CAPTURE}/${TNAME}.info")
	lcov_merge_files("${OUTFILE}" ${GENINFO_FILES})
	add_custom_target(${TNAME}-geninfo DEPENDS ${OUTFILE})

	# add geninfo file generation to global lcov-capture target
	add_dependencies(lcov-capture ${TNAME}-geninfo)
	set(LCOV_CAPTURE_FILES "${LCOV_CAPTURE_FILES}" "${OUTFILE}" CACHE INTERNAL
		""
	)

	# Add target for generating html output for this target only.
	file(MAKE_DIRECTORY ${LCOV_HTML_PATH}/${TNAME})
	add_custom_target(${TNAME}-genhtml
		COMMAND ${GENHTML_BIN} --quiet --sort --prefix ${PROJECT_SOURCE_DIR}
			--baseline-file ${LCOV_DATA_PATH_INIT}/${TNAME}.info
			--output-directory ${LCOV_HTML_PATH}/${TNAME}
			--title "${CMAKE_PROJECT_NAME} - target ${TNAME}"
			${GENHTML_CPPFILT_FLAG} ${OUTFILE}
		DEPENDS ${TNAME}-geninfo ${TNAME}-capture-init
	)
endfunction (lcov_capture_tgt)


# This function will generate the global info file for all targets. It has to be
# called after all other CMake functions in the root CMakeLists.txt file, to get
# a full list of all targets that generate coverage data.
function (lcov_capture)
	# Skip this function (and do not create the following targets), if there are
	# no input files.
	if ("${LCOV_CAPTURE_FILES}" STREQUAL "")
		return()
	endif ()

	# Add a new target to merge the files of all targets.
	set(OUTFILE "${LCOV_DATA_PATH_CAPTURE}/all_targets.info")
	lcov_merge_files("${OUTFILE}" ${LCOV_CAPTURE_FILES})
	add_custom_target(lcov-geninfo DEPENDS ${OUTFILE} lcov-capture)

	# Add a new global target for all lcov targets. This target could be used to
	# generate the lcov html output for the whole project instead of calling
	# <TARGET>-geninfo and <TARGET>-genhtml for each target. It will also be
	# used to generate a html site for all project data together instead of one
	# for each target.
	if (NOT TARGET lcov)
		file(MAKE_DIRECTORY ${LCOV_HTML_PATH}/all_targets)
		add_custom_target(lcov
			COMMAND ${GENHTML_BIN} --quiet --sort
				--baseline-file ${LCOV_DATA_PATH_INIT}/all_targets.info
				--output-directory ${LCOV_HTML_PATH}/all_targets
				--title "${CMAKE_PROJECT_NAME}" --prefix "${PROJECT_SOURCE_DIR}"
				${GENHTML_CPPFILT_FLAG} ${OUTFILE}
			DEPENDS lcov-geninfo-init lcov-geninfo
		)
	endif ()
endfunction (lcov_capture)




# Add a new global target to generate the lcov html report for the whole project
# instead of calling <TARGET>-genhtml for each target (to create an own report
# for each target). Instead of the lcov target it does not require geninfo for
# all targets, so you have to call <TARGET>-geninfo to generate the info files
# the targets you'd like to have in your report or lcov-geninfo for generating
# info files for all targets before calling lcov-genhtml.
file(MAKE_DIRECTORY ${LCOV_HTML_PATH}/selected_targets)
if (NOT TARGET lcov-genhtml)
	add_custom_target(lcov-genhtml
		COMMAND ${GENHTML_BIN}
			--quiet
			--output-directory ${LCOV_HTML_PATH}/selected_targets
			--title \"${CMAKE_PROJECT_NAME} - targets  `find
				${LCOV_DATA_PATH_CAPTURE} -name \"*.info\" ! -name
				\"all_targets.info\" -exec basename {} .info \\\;`\"
			--prefix ${PROJECT_SOURCE_DIR}
			--sort
			${GENHTML_CPPFILT_FLAG}
			`find ${LCOV_DATA_PATH_CAPTURE} -name \"*.info\" ! -name
				\"all_targets.info\"`
	)
endif (NOT TARGET lcov-genhtml)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/Findcodecov.cmake
================================================
# This file is part of CMake-codecov.
#
# Copyright (c)
#   2015-2017 RWTH Aachen University, Federal Republic of Germany
#
# See the LICENSE file in the package base directory for details
#
# Written by Alexander Haase, alexander.haase@rwth-aachen.de
#


# Add an option to choose, if coverage should be enabled or not. If enabled
# marked targets will be build with coverage support and appropriate targets
# will be added. If disabled coverage will be ignored for *ALL* targets.
option(ENABLE_COVERAGE "Enable coverage build." OFF)

set(COVERAGE_FLAG_CANDIDATES
	# gcc and clang
	"-O0 -g -fprofile-arcs -ftest-coverage"

	# gcc and clang fallback
	"-O0 -g --coverage"
)


# Add coverage support for target ${TNAME} and register target for coverage
# evaluation. If coverage is disabled or not supported, this function will
# simply do nothing.
#
# Note: This function is only a wrapper to define this function always, even if
#   coverage is not supported by the compiler or disabled. This function must
#   be defined here, because the module will be exited, if there is no coverage
#   support by the compiler or it is disabled by the user.
function (add_coverage TNAME)
	# only add coverage for target, if coverage is support and enabled.
	if (ENABLE_COVERAGE)
		foreach (TNAME ${ARGV})
			add_coverage_target(${TNAME})
		endforeach ()
	endif ()
endfunction (add_coverage)


# Add global target to gather coverage information after all targets have been
# added. Other evaluation functions could be added here, after checks for the
# specific module have been passed.
#
# Note: This function is only a wrapper to define this function always, even if
#   coverage is not supported by the compiler or disabled. This function must
#   be defined here, because the module will be exited, if there is no coverage
#   support by the compiler or it is disabled by the user.
function (coverage_evaluate)
	# add lcov evaluation
	if (LCOV_FOUND)
		lcov_capture_initial()
		lcov_capture()
	endif (LCOV_FOUND)
endfunction ()


# Exit this module, if coverage is disabled. add_coverage is defined before this
# return, so this module can be exited now safely without breaking any build-
# scripts.
if (NOT ENABLE_COVERAGE)
	return()
endif ()




# Find the reuired flags foreach language.
set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
set(CMAKE_REQUIRED_QUIET ${codecov_FIND_QUIETLY})

get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach (LANG ${ENABLED_LANGUAGES})
	# Coverage flags are not dependent on language, but the used compiler. So
	# instead of searching flags foreach language, search flags foreach compiler
	# used.
	set(COMPILER ${CMAKE_${LANG}_COMPILER_ID})
	if (NOT COVERAGE_${COMPILER}_FLAGS)
		foreach (FLAG ${COVERAGE_FLAG_CANDIDATES})
			if(NOT CMAKE_REQUIRED_QUIET)
				message(STATUS "Try ${COMPILER} code coverage flag = [${FLAG}]")
			endif()

			set(CMAKE_REQUIRED_FLAGS "${FLAG}")
			unset(COVERAGE_FLAG_DETECTED CACHE)

			if (${LANG} STREQUAL "C")
				include(CheckCCompilerFlag)
				check_c_compiler_flag("${FLAG}" COVERAGE_FLAG_DETECTED)

			elseif (${LANG} STREQUAL "CXX")
				include(CheckCXXCompilerFlag)
				check_cxx_compiler_flag("${FLAG}" COVERAGE_FLAG_DETECTED)

			elseif (${LANG} STREQUAL "Fortran")
				# CheckFortranCompilerFlag was introduced in CMake 3.x. To be
				# compatible with older Cmake versions, we will check if this
				# module is present before we use it. Otherwise we will define
				# Fortran coverage support as not available.
				include(CheckFortranCompilerFlag OPTIONAL
					RESULT_VARIABLE INCLUDED)
				if (INCLUDED)
					check_fortran_compiler_flag("${FLAG}"
						COVERAGE_FLAG_DETECTED)
				elseif (NOT CMAKE_REQUIRED_QUIET)
					message("-- Performing Test COVERAGE_FLAG_DETECTED")
					message("-- Performing Test COVERAGE_FLAG_DETECTED - Failed"
						" (Check not supported)")
				endif ()
			endif()

			if (COVERAGE_FLAG_DETECTED)
				set(COVERAGE_${COMPILER}_FLAGS "${FLAG}"
					CACHE STRING "${COMPILER} flags for code coverage.")
				mark_as_advanced(COVERAGE_${COMPILER}_FLAGS)
				break()
			else ()
				message(WARNING "Code coverage is not available for ${COMPILER}"
				        " compiler. Targets using this compiler will be "
				        "compiled without it.")
			endif ()
		endforeach ()
	endif ()
endforeach ()

set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})




# Helper function to get the language of a source file.
function (codecov_lang_of_source FILE RETURN_VAR)
	get_filename_component(FILE_EXT "${FILE}" EXT)
	string(TOLOWER "${FILE_EXT}" FILE_EXT)
	string(SUBSTRING "${FILE_EXT}" 1 -1 FILE_EXT)

	get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
	foreach (LANG ${ENABLED_LANGUAGES})
		list(FIND CMAKE_${LANG}_SOURCE_FILE_EXTENSIONS "${FILE_EXT}" TEMP)
		if (NOT ${TEMP} EQUAL -1)
			set(${RETURN_VAR} "${LANG}" PARENT_SCOPE)
			return()
		endif ()
	endforeach()

	set(${RETURN_VAR} "" PARENT_SCOPE)
endfunction ()


# Helper function to get the relative path of the source file destination path.
# This path is needed by FindGcov and FindLcov cmake files to locate the
# captured data.
function (codecov_path_of_source FILE RETURN_VAR)
	string(REGEX MATCH "TARGET_OBJECTS:([^ >]+)" _source ${FILE})

	# If expression was found, SOURCEFILE is a generator-expression for an
	# object library. Currently we found no way to call this function automatic
	# for the referenced target, so it must be called in the directoryso of the
	# object library definition.
	if (NOT "${_source}" STREQUAL "")
		set(${RETURN_VAR} "" PARENT_SCOPE)
		return()
	endif ()


	string(REPLACE "${CMAKE_CURRENT_BINARY_DIR}/" "" FILE "${FILE}")
	if(IS_ABSOLUTE ${FILE})
		file(RELATIVE_PATH FILE ${CMAKE_CURRENT_SOURCE_DIR} ${FILE})
	endif()

	# get the right path for file
	string(REPLACE ".." "__" PATH "${FILE}")

	set(${RETURN_VAR} "${PATH}" PARENT_SCOPE)
endfunction()




# Add coverage support for target ${TNAME} and register target for coverage
# evaluation.
function(add_coverage_target TNAME)
	# Check if all sources for target use the same compiler. If a target uses
	# e.g. C and Fortran mixed and uses different compilers (e.g. clang and
	# gfortran) this can trigger huge problems, because different compilers may
	# use different implementations for code coverage.
	get_target_property(TSOURCES ${TNAME} SOURCES)
	set(TARGET_COMPILER "")
	set(ADDITIONAL_FILES "")
	foreach (FILE ${TSOURCES})
		# If expression was found, FILE is a generator-expression for an object
		# library. Object libraries will be ignored.
		string(REGEX MATCH "TARGET_OBJECTS:([^ >]+)" _file ${FILE})
		if ("${_file}" STREQUAL "")
			codecov_lang_of_source(${FILE} LANG)
			if (LANG)
				list(APPEND TARGET_COMPILER ${CMAKE_${LANG}_COMPILER_ID})

				list(APPEND ADDITIONAL_FILES "${FILE}.gcno")
				list(APPEND ADDITIONAL_FILES "${FILE}.gcda")
			endif ()
		endif ()
	endforeach ()

	list(REMOVE_DUPLICATES TARGET_COMPILER)
	list(LENGTH TARGET_COMPILER NUM_COMPILERS)

	if (NUM_COMPILERS GREATER 1)
		message(WARNING "Can't use code coverage for target ${TNAME}, because "
		        "it will be compiled by incompatible compilers. Target will be "
		        "compiled without code coverage.")
		return()

	elseif (NUM_COMPILERS EQUAL 0)
		message(WARNING "Can't use code coverage for target ${TNAME}, because "
		        "it uses an unknown compiler. Target will be compiled without "
		        "code coverage.")
		return()

	elseif (NOT DEFINED "COVERAGE_${TARGET_COMPILER}_FLAGS")
		# A warning has been printed before, so just return if flags for this
		# compiler aren't available.
		return()
	endif()


	# enable coverage for target
	set_property(TARGET ${TNAME} APPEND_STRING
		PROPERTY COMPILE_FLAGS " ${COVERAGE_${TARGET_COMPILER}_FLAGS}")
	set_property(TARGET ${TNAME} APPEND_STRING
		PROPERTY LINK_FLAGS " ${COVERAGE_${TARGET_COMPILER}_FLAGS}")


	# Add gcov files generated by compiler to clean target.
	set(CLEAN_FILES "")
	foreach (FILE ${ADDITIONAL_FILES})
		codecov_path_of_source(${FILE} FILE)
		list(APPEND CLEAN_FILES "CMakeFiles/${TNAME}.dir/${FILE}")
	endforeach()

	set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
		"${CLEAN_FILES}")


	add_gcov_target(${TNAME})
	add_lcov_target(${TNAME})
endfunction(add_coverage_target)




# Include modules for parsing the collected data and output it in a readable
# format (like gcov and lcov).
find_package(Gcov)
find_package(Lcov)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/MiscFunctions.cmake
================================================
#checks that the given hard-coded list contains all headers + sources in the given folder
function(CheckFileList LIST_VAR FOLDER)
  set(MESSAGE " should be added to the variable ${LIST_VAR}")
  set(MESSAGE "${MESSAGE} in ${CMAKE_CURRENT_LIST_FILE}\n")
  file(GLOB GLOBBED_LIST "${FOLDER}/*.cpp"
                         "${FOLDER}/*.hpp"
                         "${FOLDER}/*.h")
  list(REMOVE_ITEM GLOBBED_LIST ${${LIST_VAR}})
  foreach(EXTRA_ITEM ${GLOBBED_LIST})
    string(REPLACE "${CATCH_DIR}/" "" RELATIVE_FILE_NAME "${EXTRA_ITEM}")
    message(AUTHOR_WARNING "The file \"${RELATIVE_FILE_NAME}\"${MESSAGE}")
  endforeach()
endfunction()

function(CheckFileListRec LIST_VAR FOLDER)
  set(MESSAGE " should be added to the variable ${LIST_VAR}")
  set(MESSAGE "${MESSAGE} in ${CMAKE_CURRENT_LIST_FILE}\n")
  file(GLOB_RECURSE GLOBBED_LIST "${FOLDER}/*.cpp"
                                 "${FOLDER}/*.hpp"
                                 "${FOLDER}/*.h")
  list(REMOVE_ITEM GLOBBED_LIST ${${LIST_VAR}})
  foreach(EXTRA_ITEM ${GLOBBED_LIST})
    string(REPLACE "${CATCH_DIR}/" "" RELATIVE_FILE_NAME "${EXTRA_ITEM}")
    message(AUTHOR_WARNING "The file \"${RELATIVE_FILE_NAME}\"${MESSAGE}")
  endforeach()
endfunction()


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/catch2.pc.in
================================================
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@

Name: Catch2
Description: A modern, C++-native, header-only, test framework for C++11
URL: https://github.com/catchorg/Catch2
Version: @Catch2_VERSION@
Cflags: -I${includedir}


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/llvm-cov-wrapper
================================================
#!/bin/sh

# This file is part of CMake-codecov.
#
# Copyright (c)
#   2015-2017 RWTH Aachen University, Federal Republic of Germany
#
# See the LICENSE file in the package base directory for details
#
# Written by Alexander Haase, alexander.haase@rwth-aachen.de
#

if [ -z "$LLVM_COV_BIN" ]
then
	echo "LLVM_COV_BIN not set!" >& 2
	exit 1
fi


# Get LLVM version to find out.
LLVM_VERSION=$($LLVM_COV_BIN -version | grep -i "LLVM version" \
	| sed "s/^\([A-Za-z ]*\)\([0-9]\).\([0-9]\).*$/\2.\3/g")

if [ "$1" = "-v" ]
then
	echo "llvm-cov-wrapper $LLVM_VERSION"
	exit 0
fi


if [ -n "$LLVM_VERSION" ]
then
	MAJOR=$(echo $LLVM_VERSION | cut -d'.' -f1)
	MINOR=$(echo $LLVM_VERSION | cut -d'.' -f2)

	if [ $MAJOR -eq 3 ] && [ $MINOR -le 4 ]
	then
		if [ -f "$1" ]
		then
			filename=$(basename "$1")
			extension="${filename##*.}"

			case "$extension" in
				"gcno") exec $LLVM_COV_BIN --gcno="$1" ;;
				"gcda") exec $LLVM_COV_BIN --gcda="$1" ;;
			esac
		fi
	fi

	if [ $MAJOR -eq 3 ] && [ $MINOR -le 5 ]
	then
		exec $LLVM_COV_BIN $@
	fi
fi

exec $LLVM_COV_BIN gcov $@


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.5)

# detect if Catch is being bundled,
# disable testsuite in that case
if(NOT DEFINED PROJECT_NAME)
  set(NOT_SUBPROJECT ON)
endif()

# Catch2's build breaks if done in-tree. You probably should not build
# things in tree anyway, but we can allow projects that include Catch2
# as a subproject to build in-tree as long as it is not in our tree.
if (CMAKE_BINARY_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
    message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
endif()


project(Catch2 LANGUAGES CXX VERSION 2.11.1)

# Provide path for scripts
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(CTest)

option(CATCH_USE_VALGRIND "Perform SelfTests with Valgrind" OFF)
option(CATCH_BUILD_TESTING "Build SelfTest project" ON)
option(CATCH_BUILD_EXAMPLES "Build documentation examples" OFF)
option(CATCH_BUILD_EXTRA_TESTS "Build extra tests" OFF)
option(CATCH_ENABLE_COVERAGE "Generate coverage for codecov.io" OFF)
option(CATCH_ENABLE_WERROR "Enable all warnings as errors" ON)
option(CATCH_INSTALL_DOCS "Install documentation alongside library" ON)
option(CATCH_INSTALL_HELPERS "Install contrib alongside library" ON)


set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# define some folders
set(CATCH_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(SELF_TEST_DIR ${CATCH_DIR}/projects/SelfTest)
set(BENCHMARK_DIR ${CATCH_DIR}/projects/Benchmark)
set(HEADER_DIR ${CATCH_DIR}/include)

if(USE_WMAIN)
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:wmainCRTStartup")
endif()

if (BUILD_TESTING AND CATCH_BUILD_TESTING AND NOT_SUBPROJECT)
    find_package(PythonInterp)
    if (NOT PYTHONINTERP_FOUND)
        message(FATAL_ERROR "Python not found, but required for tests")
    endif()
    add_subdirectory(projects)
endif()

if(CATCH_BUILD_EXAMPLES)
    add_subdirectory(examples)
endif()

if(CATCH_BUILD_EXTRA_TESTS)
    add_subdirectory(projects/ExtraTests)
endif()

# add catch as a 'linkable' target
add_library(Catch2 INTERFACE)



# depend on some obvious c++11 features so the dependency is transitively added dependents
target_compile_features(Catch2
  INTERFACE
    cxx_alignas
    cxx_alignof
    cxx_attributes
    cxx_auto_type
    cxx_constexpr
    cxx_defaulted_functions
    cxx_deleted_functions
    cxx_final
    cxx_lambdas
    cxx_noexcept
    cxx_override
    cxx_range_for
    cxx_rvalue_references
    cxx_static_assert
    cxx_strong_enums
    cxx_trailing_return_types
    cxx_unicode_literals
    cxx_user_literals
    cxx_variadic_macros
)

target_include_directories(Catch2
  INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/single_include>
    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

if (ANDROID)
    target_link_libraries(Catch2 INTERFACE log)
endif()

# provide a namespaced alias for clients to 'link' against if catch is included as a sub-project
add_library(Catch2::Catch2 ALIAS Catch2)

# Only perform the installation steps when Catch is not being used as
# a subproject via `add_subdirectory`, or the destinations will break,
# see https://github.com/catchorg/Catch2/issues/1373
if (NOT_SUBPROJECT)
    set(CATCH_CMAKE_CONFIG_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Catch2")

    configure_package_config_file(
        ${CMAKE_CURRENT_LIST_DIR}/CMake/Catch2Config.cmake.in
        ${CMAKE_CURRENT_BINARY_DIR}/Catch2Config.cmake
        INSTALL_DESTINATION
          ${CATCH_CMAKE_CONFIG_DESTINATION}
    )


    # create and install an export set for catch target as Catch2::Catch
    install(
      TARGETS
        Catch2
      EXPORT
        Catch2Targets
      DESTINATION
        ${CMAKE_INSTALL_LIBDIR}
    )


    install(
      EXPORT
        Catch2Targets
      NAMESPACE
        Catch2::
      DESTINATION
        ${CATCH_CMAKE_CONFIG_DESTINATION}
    )

    # By default, FooConfigVersion is tied to architecture that it was
    # generated on. Because Catch2 is header-only, it is arch-independent
    # and thus Catch2ConfigVersion should not be tied to the architecture
    # it was generated on.
    #
    # CMake does not provide a direct customization point for this in
    # `write_basic_package_version_file`, but it can be accomplished
    # indirectly by temporarily redefining `CMAKE_SIZEOF_VOID_P` to an
    # empty string. Note that just undefining the variable could be
    # insufficient in cases where the variable was already in CMake cache
    set(CATCH2_CMAKE_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
    set(CMAKE_SIZEOF_VOID_P "")
    write_basic_package_version_file(
      "${CMAKE_CURRENT_BINARY_DIR}/Catch2ConfigVersion.cmake"
      COMPATIBILITY
        SameMajorVersion
    )
    set(CMAKE_SIZEOF_VOID_P ${CATCH2_CMAKE_SIZEOF_VOID_P})

    install(
      DIRECTORY
        "single_include/"
      DESTINATION
        "${CMAKE_INSTALL_INCLUDEDIR}"
    )

    install(
      FILES
        "${CMAKE_CURRENT_BINARY_DIR}/Catch2Config.cmake"
        "${CMAKE_CURRENT_BINARY_DIR}/Catch2ConfigVersion.cmake"
      DESTINATION
        ${CATCH_CMAKE_CONFIG_DESTINATION}
    )

    # Install documentation
    if(CATCH_INSTALL_DOCS)
      install(
        DIRECTORY
          docs/
        DESTINATION
          "${CMAKE_INSTALL_DOCDIR}"
      )
    endif()

    if(CATCH_INSTALL_HELPERS)
    # Install CMake scripts
    install(
      FILES
        "contrib/ParseAndAddCatchTests.cmake"
        "contrib/Catch.cmake"
        "contrib/CatchAddTests.cmake"
      DESTINATION
        ${CATCH_CMAKE_CONFIG_DESTINATION}
    )

    # Install debugger helpers
    install(
      FILES
        "contrib/gdbinit"
        "contrib/lldbinit"
      DESTINATION
        ${CMAKE_INSTALL_DATAROOTDIR}/Catch2
    )
    endif()

    ## Provide some pkg-config integration
    set(PKGCONFIG_INSTALL_DIR
        "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig"
        CACHE PATH "Path where catch2.pc is installed"
    )
    configure_file(
      ${CMAKE_CURRENT_SOURCE_DIR}/CMake/catch2.pc.in
      ${CMAKE_CURRENT_BINARY_DIR}/catch2.pc
      @ONLY
    )
    install(
      FILES
        "${CMAKE_CURRENT_BINARY_DIR}/catch2.pc"
      DESTINATION
        ${PKGCONFIG_INSTALL_DIR}
    )

    # CPack/CMake started taking the package version from project version 3.12
    # So we need to set the version manually for older CMake versions
    if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
        set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    endif()

    set(CPACK_PACKAGE_CONTACT "https://github.com/catchorg/Catch2/")


    include( CPack )

endif(NOT_SUBPROJECT)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at github@philnash.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/LICENSE.txt
================================================
Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/README.md
================================================
<a id="top"></a>
![catch logo](artwork/catch2-logo-small.png)

[![Github Releases](https://img.shields.io/github/release/catchorg/catch2.svg)](https://github.com/catchorg/catch2/releases)
[![Build Status](https://travis-ci.org/catchorg/Catch2.svg?branch=master)](https://travis-ci.org/catchorg/Catch2)
[![Build status](https://ci.appveyor.com/api/projects/status/github/catchorg/Catch2?svg=true)](https://ci.appveyor.com/project/catchorg/catch2)
[![codecov](https://codecov.io/gh/catchorg/Catch2/branch/master/graph/badge.svg)](https://codecov.io/gh/catchorg/Catch2)
[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/Fj98nizVNqgaWH3i)
[![Join the chat in Discord: https://discord.gg/4CWS9zD](https://img.shields.io/badge/Discord-Chat!-brightgreen.svg)](https://discord.gg/4CWS9zD)


<a href="https://github.com/catchorg/Catch2/releases/download/v2.11.1/catch.hpp">The latest version of the single header can be downloaded directly using this link</a>

## Catch2 is released!

If you've been using an earlier version of Catch, please see the
Breaking Changes section of [the release notes](https://github.com/catchorg/Catch2/releases/tag/v2.0.1)
before moving to Catch2. You might also like to read [this blog post](https://levelofindirection.com/blog/catch2-released.html) for more details.

## What's the Catch?

Catch2 is a multi-paradigm test framework for C++. which also supports
Objective-C (and maybe C).
It is primarily distributed as a single header file, although certain
extensions may require additional headers.

## How to use it
This documentation comprises these three parts:

* [Why do we need yet another C++ Test Framework?](docs/why-catch.md#top)
* [Tutorial](docs/tutorial.md#top) - getting started
* [Reference section](docs/Readme.md#top) - all the details

## More
* Issues and bugs can be raised on the [Issue tracker on GitHub](https://github.com/catchorg/Catch2/issues)
* For discussion or questions please use [the dedicated Google Groups forum](https://groups.google.com/forum/?fromgroups#!forum/catch-forum) or our [Discord](https://discord.gg/4CWS9zD)
* See [who else is using Catch2](docs/opensource-users.md#top)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/appveyor.yml
================================================
# version string format -- This will be overwritten later anyway
version: "{build}"

# We need a more up to date pip because Python 2.7 is EOL soon
init:
  - set PATH=C:\Python35\Scripts;%PATH%


branches:
  except:
    - /dev-travis.+/

os:
  - Visual Studio 2017
  - Visual Studio 2015

environment:
    matrix:
        - additional_flags: "/permissive- /std:c++latest"
          wmain: 0

        - additional_flags: ""
          wmain: 0

        - additional_flags: "/D_UNICODE /DUNICODE"
          wmain: 1
          coverage: 0

        # Have a coverage dimension
        - additional_flags: ""
          wmain: 0
          coverage: 1

        # Have an examples dimension
        - additional_flags: ""
          wmain: 0
          examples: 1


matrix:
    exclude:
        - os: Visual Studio 2015
          additional_flags: "/permissive- /std:c++latest"

        - os: Visual Studio 2015
          additional_flags: "/D_UNICODE /DUNICODE"

        # Exclude unwanted coverage configurations
        - coverage: 1
          platform: Win32

        - coverage: 1
          os: Visual Studio 2015

        - coverage: 1
          configuration: Release

        # Exclude unwanted examples configurations
        - examples: 1
          platform: Win32

        - examples: 1
          os: Visual Studio 2015

        - examples: 1
          configuration: Release


install:
  - ps: if (($env:CONFIGURATION) -eq "Debug" -And ($env:coverage) -eq "1" ) { pip --disable-pip-version-check install codecov }
  - ps: if (($env:CONFIGURATION) -eq "Debug" -And ($env:coverage) -eq "1" ) { .\misc\installOpenCppCoverage.ps1 }

# Win32 and x64 are CMake-compatible solution platform names.
# This allows us to pass %PLATFORM% to CMake -A.
platform:
  - Win32
  - x64

# build Configurations, i.e. Debug, Release, etc.
configuration:
  - Debug
  - Release

#Cmake will autodetect the compiler, but we set the arch
before_build:
  - set CXXFLAGS=%additional_flags%
  # Indirection because appveyor doesn't handle multiline batch scripts properly
  # https://stackoverflow.com/questions/37627248/how-to-split-a-command-over-multiple-lines-in-appveyor-yml/37647169#37647169
  # https://help.appveyor.com/discussions/questions/3888-multi-line-cmd-or-powershell-warning-ignore
  - cmd: .\misc\appveyorBuildConfigurationScript.bat


# build with MSBuild
build:
  project: Build\Catch2.sln             # path to Visual Studio solution or project
  parallel: true                        # enable MSBuild parallel builds
  verbosity: normal                     # MSBuild verbosity level {quiet|minimal|normal|detailed}

test_script:
  - set CTEST_OUTPUT_ON_FAILURE=1
  - cmd: .\misc\appveyorTestRunScript.bat


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/codecov.yml
================================================
coverage:
  precision: 2
  round: nearest
  range: "60...90"
  status:
    project:
      default:
        threshold: 2%
    patch:
      default:
        target: 80%
  ignore:
    - "projects/SelfTest"
    - "**/catch_reporter_tap.hpp"
    - "**/catch_reporter_automake.hpp"
    - "**/catch_reporter_teamcity.hpp"
    - "**/catch_reporter_sonarqube.hpp"
    - "**/external/clara.hpp"


codecov:
  branch: master

comment:
  layout: "diff"


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/conanfile.py
================================================
#!/usr/bin/env python
from conans import ConanFile, CMake


class CatchConan(ConanFile):
    name = "Catch2"
    description = "A modern, C++-native, header-only, framework for unit-tests, TDD and BDD"
    topics = ("conan", "catch2", "header-only", "unit-test", "tdd", "bdd")
    url = "https://github.com/catchorg/Catch2"
    homepage = url
    license = "BSL-1.0"
    exports = "LICENSE.txt"
    exports_sources = ("single_include/*", "CMakeLists.txt", "CMake/*", "contrib/*")
    generators = "cmake"

    def package(self):
        cmake = CMake(self)
        cmake.definitions["BUILD_TESTING"] = "OFF"
        cmake.definitions["CATCH_INSTALL_DOCS"] = "OFF"
        cmake.definitions["CATCH_INSTALL_HELPERS"] = "ON"
        cmake.configure(build_folder='build')
        cmake.install()

        self.copy(pattern="LICENSE.txt", dst="licenses")

    def package_id(self):
        self.info.header_only()


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/Catch.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
Catch
-----

This module defines a function to help use the Catch test framework.

The :command:`catch_discover_tests` discovers tests by asking the compiled test
executable to enumerate its tests.  This does not require CMake to be re-run
when tests change.  However, it may not work in a cross-compiling environment,
and setting test properties is less convenient.

This command is intended to replace use of :command:`add_test` to register
tests, and will create a separate CTest test for each Catch test case.  Note
that this is in some cases less efficient, as common set-up and tear-down logic
cannot be shared by multiple test cases executing in the same instance.
However, it provides more fine-grained pass/fail information to CTest, which is
usually considered as more beneficial.  By default, the CTest test name is the
same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.

.. command:: catch_discover_tests

  Automatically add tests with CTest by querying the compiled test executable
  for available tests::

    catch_discover_tests(target
                         [TEST_SPEC arg1...]
                         [EXTRA_ARGS arg1...]
                         [WORKING_DIRECTORY dir]
                         [TEST_PREFIX prefix]
                         [TEST_SUFFIX suffix]
                         [PROPERTIES name1 value1...]
                         [TEST_LIST var]
    )

  ``catch_discover_tests`` sets up a post-build command on the test executable
  that generates the list of tests by parsing the output from running the test
  with the ``--list-test-names-only`` argument.  This ensures that the full
  list of tests is obtained.  Since test discovery occurs at build time, it is
  not necessary to re-run CMake when the list of tests changes.
  However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
  in order to function in a cross-compiling environment.

  Additionally, setting properties on tests is somewhat less convenient, since
  the tests are not available at CMake time.  Additional test properties may be
  assigned to the set of tests as a whole using the ``PROPERTIES`` option.  If
  more fine-grained test control is needed, custom content may be provided
  through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
  directory property.  The set of discovered tests is made accessible to such a
  script via the ``<target>_TESTS`` variable.

  The options are:

  ``target``
    Specifies the Catch executable, which must be a known CMake executable
    target.  CMake will substitute the location of the built executable when
    running the test.

  ``TEST_SPEC arg1...``
    Specifies test cases, wildcarded test cases, tags and tag expressions to
    pass to the Catch executable with the ``--list-test-names-only`` argument.

  ``EXTRA_ARGS arg1...``
    Any extra arguments to pass on the command line to each test case.

  ``WORKING_DIRECTORY dir``
    Specifies the directory in which to run the discovered test cases.  If this
    option is not provided, the current binary directory is used.

  ``TEST_PREFIX prefix``
    Specifies a ``prefix`` to be prepended to the name of each discovered test
    case.  This can be useful when the same test executable is being used in
    multiple calls to ``catch_discover_tests()`` but with different
    ``TEST_SPEC`` or ``EXTRA_ARGS``.

  ``TEST_SUFFIX suffix``
    Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
    every discovered test case.  Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
    be specified.

  ``PROPERTIES name1 value1...``
    Specifies additional properties to be set on all tests discovered by this
    invocation of ``catch_discover_tests``.

  ``TEST_LIST var``
    Make the list of tests available in the variable ``var``, rather than the
    default ``<target>_TESTS``.  This can be useful when the same test
    executable is being used in multiple calls to ``catch_discover_tests()``.
    Note that this variable is only available in CTest.

#]=======================================================================]

#------------------------------------------------------------------------------
function(catch_discover_tests TARGET)
  cmake_parse_arguments(
    ""
    ""
    "TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST"
    "TEST_SPEC;EXTRA_ARGS;PROPERTIES"
    ${ARGN}
  )

  if(NOT _WORKING_DIRECTORY)
    set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
  endif()
  if(NOT _TEST_LIST)
    set(_TEST_LIST ${TARGET}_TESTS)
  endif()

  ## Generate a unique name based on the extra arguments
  string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}")
  string(SUBSTRING ${args_hash} 0 7 args_hash)

  # Define rule to generate test list for aforementioned test executable
  set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake")
  set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake")
  get_property(crosscompiling_emulator
    TARGET ${TARGET}
    PROPERTY CROSSCOMPILING_EMULATOR
  )
  add_custom_command(
    TARGET ${TARGET} POST_BUILD
    BYPRODUCTS "${ctest_tests_file}"
    COMMAND "${CMAKE_COMMAND}"
            -D "TEST_TARGET=${TARGET}"
            -D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
            -D "TEST_EXECUTOR=${crosscompiling_emulator}"
            -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
            -D "TEST_SPEC=${_TEST_SPEC}"
            -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
            -D "TEST_PROPERTIES=${_PROPERTIES}"
            -D "TEST_PREFIX=${_TEST_PREFIX}"
            -D "TEST_SUFFIX=${_TEST_SUFFIX}"
            -D "TEST_LIST=${_TEST_LIST}"
            -D "CTEST_FILE=${ctest_tests_file}"
            -P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
    VERBATIM
  )

  file(WRITE "${ctest_include_file}"
    "if(EXISTS \"${ctest_tests_file}\")\n"
    "  include(\"${ctest_tests_file}\")\n"
    "else()\n"
    "  add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n"
    "endif()\n"
  )

  if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0") 
    # Add discovered tests to directory TEST_INCLUDE_FILES
    set_property(DIRECTORY
      APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
    )
  else()
    # Add discovered tests as directory TEST_INCLUDE_FILE if possible
    get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET)
    if (NOT ${test_include_file_set})
      set_property(DIRECTORY
        PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}"
      )
    else()
      message(FATAL_ERROR
        "Cannot set more than one TEST_INCLUDE_FILE"
      )
    endif()
  endif()

endfunction()

###############################################################################

set(_CATCH_DISCOVER_TESTS_SCRIPT
  ${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake
)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/CatchAddTests.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

set(prefix "${TEST_PREFIX}")
set(suffix "${TEST_SUFFIX}")
set(spec ${TEST_SPEC})
set(extra_args ${TEST_EXTRA_ARGS})
set(properties ${TEST_PROPERTIES})
set(script)
set(suite)
set(tests)

function(add_command NAME)
  set(_args "")
  foreach(_arg ${ARGN})
    if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
      set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
    else()
      set(_args "${_args} ${_arg}")
    endif()
  endforeach()
  set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
endfunction()

# Run test executable to get list of available tests
if(NOT EXISTS "${TEST_EXECUTABLE}")
  message(FATAL_ERROR
    "Specified test executable '${TEST_EXECUTABLE}' does not exist"
  )
endif()
execute_process(
  COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-test-names-only
  OUTPUT_VARIABLE output
  RESULT_VARIABLE result
)
# Catch --list-test-names-only reports the number of tests, so 0 is... surprising
if(${result} EQUAL 0)
  message(WARNING
    "Test executable '${TEST_EXECUTABLE}' contains no tests!\n"
  )
elseif(${result} LESS 0)
  message(FATAL_ERROR
    "Error running test executable '${TEST_EXECUTABLE}':\n"
    "  Result: ${result}\n"
    "  Output: ${output}\n"
  )
endif()

string(REPLACE "\n" ";" output "${output}")

# Parse output
foreach(line ${output})
  set(test ${line})
  # Escape characters in test case names that would be parsed by Catch2
  set(test_name ${test})
  foreach(char , [ ])
    string(REPLACE ${char} "\\${char}" test_name ${test_name})
  endforeach(char)
  # ...and add to script
  add_command(add_test
    "${prefix}${test}${suffix}"
    ${TEST_EXECUTOR}
    "${TEST_EXECUTABLE}"
    "${test_name}"
    ${extra_args}
  )
  add_command(set_tests_properties
    "${prefix}${test}${suffix}"
    PROPERTIES
    WORKING_DIRECTORY "${TEST_WORKING_DIR}"
    ${properties}
  )
  list(APPEND tests "${prefix}${test}${suffix}")
endforeach()

# Create a list of all discovered tests, which users may use to e.g. set
# properties on the tests
add_command(set ${TEST_LIST} ${tests})

# Write CTest script
file(WRITE "${CTEST_FILE}" "${script}")


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/ParseAndAddCatchTests.cmake
================================================
#==================================================================================================#
#  supported macros                                                                                #
#    - TEST_CASE,                                                                                  #
#    - SCENARIO,                                                                                   #
#    - TEST_CASE_METHOD,                                                                           #
#    - CATCH_TEST_CASE,                                                                            #
#    - CATCH_SCENARIO,                                                                             #
#    - CATCH_TEST_CASE_METHOD.                                                                     #
#                                                                                                  #
#  Usage                                                                                           #
# 1. make sure this module is in the path or add this otherwise:                                   #
#    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/")              #
# 2. make sure that you've enabled testing option for the project by the call:                     #
#    enable_testing()                                                                              #
# 3. add the lines to the script for testing target (sample CMakeLists.txt):                       #
#        project(testing_target)                                                                   #
#        set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/")          #
#        enable_testing()                                                                          #
#                                                                                                  #
#        find_path(CATCH_INCLUDE_DIR "catch.hpp")                                                  #
#        include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR})                          #
#                                                                                                  #
#        file(GLOB SOURCE_FILES "*.cpp")                                                           #
#        add_executable(${PROJECT_NAME} ${SOURCE_FILES})                                           #
#                                                                                                  #
#        include(ParseAndAddCatchTests)                                                            #
#        ParseAndAddCatchTests(${PROJECT_NAME})                                                    #
#                                                                                                  #
# The following variables affect the behavior of the script:                                       #
#                                                                                                  #
#    PARSE_CATCH_TESTS_VERBOSE (Default OFF)                                                       #
#    -- enables debug messages                                                                     #
#    PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF)                                               #
#    -- excludes tests marked with [!hide], [.] or [.foo] tags                                     #
#    PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON)                                       #
#    -- adds fixture class name to the test name                                                   #
#    PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON)                                        #
#    -- adds cmake target name to the test name                                                    #
#    PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF)                                      #
#    -- causes CMake to rerun when file with tests changes so that new tests will be discovered    #
#                                                                                                  #
# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way    #
# a test should be run. For instance to use test MPI, one can write                                #
#     set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC})                 #
# just before calling this ParseAndAddCatchTests function                                          #
#                                                                                                  #
# The AdditionalCatchParameters optional variable can be used to pass extra argument to the test   #
# command. For example, to include successful tests in the output, one can write                   #
#     set(AdditionalCatchParameters --success)                                                     #
#                                                                                                  #
# After the script, the ParseAndAddCatchTests_TESTS property for the target, and for each source   #
# file in the target is set, and contains the list of the tests extracted from that target, or     #
# from that file. This is useful, for example to add further labels or properties to the tests.    #
#                                                                                                  #
#==================================================================================================#

if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
  message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer")
endif()

option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF)
option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF)
option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON)
option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON)
option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF)

function(ParseAndAddCatchTests_PrintDebugMessage)
    if(PARSE_CATCH_TESTS_VERBOSE)
            message(STATUS "ParseAndAddCatchTests: ${ARGV}")
    endif()
endfunction()

# This removes the contents between
#  - block comments (i.e. /* ... */)
#  - full line comments (i.e. // ... )
# contents have been read into '${CppCode}'.
# !keep partial line comments
function(ParseAndAddCatchTests_RemoveComments CppCode)
  string(ASCII 2 CMakeBeginBlockComment)
  string(ASCII 3 CMakeEndBlockComment)
  string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
  string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
  string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
  string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")

  set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
endfunction()

# Worker function
function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
    # If SourceFile is an object library, do not scan it (as it is not a file). Exit without giving a warning about a missing file.
    if(SourceFile MATCHES "\\\$<TARGET_OBJECTS:.+>")
        ParseAndAddCatchTests_PrintDebugMessage("Detected OBJECT library: ${SourceFile} this will not be scanned for tests.")
        return()
    endif()
    # According to CMake docs EXISTS behavior is well-defined only for full paths.
    get_filename_component(SourceFile ${SourceFile} ABSOLUTE)
    if(NOT EXISTS ${SourceFile})
        message(WARNING "Cannot find source file: ${SourceFile}")
        return()
    endif()
    ParseAndAddCatchTests_PrintDebugMessage("parsing ${SourceFile}")
    file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME)

    # Remove block and fullline comments
    ParseAndAddCatchTests_RemoveComments(Contents)

    # Find definition of test names
    string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")

    if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
      ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
      set_property(
        DIRECTORY
        APPEND
        PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile}
      )
    endif()

    foreach(TestName ${Tests})
        # Strip newlines
        string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")

        # Get test type and fixture if applicable
        string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
        string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
        string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")

        # Get string parts of test definition
        string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}")

        # Strip wrapping quotation marks
        string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}")
        string(REPLACE "\";\"" ";" TestStrings "${TestStrings}")

        # Validate that a test name and tags have been provided
        list(LENGTH TestStrings TestStringsLength)
        if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1)
            message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}")
        endif()

        # Assign name and tags
        list(GET TestStrings 0 Name)
        if("${TestType}" STREQUAL "SCENARIO")
            set(Name "Scenario: ${Name}")
        endif()
        if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture)
            set(CTestName "${TestFixture}:${Name}")
        else()
            set(CTestName "${Name}")
        endif()
        if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME)
            set(CTestName "${TestTarget}:${CTestName}")
        endif()
        # add target to labels to enable running all tests added from this target
        set(Labels ${TestTarget})
        if(TestStringsLength EQUAL 2)
            list(GET TestStrings 1 Tags)
            string(TOLOWER "${Tags}" Tags)
            # remove target from labels if the test is hidden
            if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*")
                list(REMOVE_ITEM Labels ${TestTarget})
            endif()
            string(REPLACE "]" ";" Tags "${Tags}")
            string(REPLACE "[" "" Tags "${Tags}")
        else()
          # unset tags variable from previous loop
          unset(Tags)
        endif()

        list(APPEND Labels ${Tags})

        set(HiddenTagFound OFF)
        foreach(label ${Labels})
            string(REGEX MATCH "^!hide|^\\." result ${label})
            if(result)
                set(HiddenTagFound ON)
                break()
            endif(result)
        endforeach(label)
        if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9")
            ParseAndAddCatchTests_PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label")
        else()
            ParseAndAddCatchTests_PrintDebugMessage("Adding test \"${CTestName}\"")
            if(Labels)
                ParseAndAddCatchTests_PrintDebugMessage("Setting labels to ${Labels}")
            endif()

            # Escape commas in the test spec
            string(REPLACE "," "\\," Name ${Name})

            # Add the test and set its properties
            add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} $<TARGET_FILE:${TestTarget}> ${Name} ${AdditionalCatchParameters})
            # Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
            if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8")
                ParseAndAddCatchTests_PrintDebugMessage("Setting DISABLED test property")
                set_tests_properties("\"${CTestName}\"" PROPERTIES DISABLED ON)
            else()
                set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
                                                        LABELS "${Labels}")
            endif()
            set_property(
              TARGET ${TestTarget}
              APPEND
              PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"")
            set_property(
              SOURCE ${SourceFile}
              APPEND
              PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"")
        endif()


    endforeach()
endfunction()

# entry point
function(ParseAndAddCatchTests TestTarget)
    ParseAndAddCatchTests_PrintDebugMessage("Started parsing ${TestTarget}")
    get_target_property(SourceFiles ${TestTarget} SOURCES)
    ParseAndAddCatchTests_PrintDebugMessage("Found the following sources: ${SourceFiles}")
    foreach(SourceFile ${SourceFiles})
        ParseAndAddCatchTests_ParseFile(${SourceFile} ${TestTarget})
    endforeach()
    ParseAndAddCatchTests_PrintDebugMessage("Finished parsing ${TestTarget}")
endfunction()


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/gdbinit
================================================
#
# This file provides a way to skip stepping into Catch code when debugging with gdb.
#
# With the gdb "skip" command you can tell gdb to skip files or functions during debugging.
# see https://xaizek.github.io/2016-05-26/skipping-standard-library-in-gdb/ for an example
#
# Basically the following line tells gdb to skip all functions containing the
# regexp "Catch", which matches the complete Catch namespace.
# If you want to skip just some parts of the Catch code you can modify the
# regexp accordingly.
# 
# If you want to permanently skip stepping into Catch code copy the following
# line into your ~/.gdbinit file
# 

skip -rfu Catch


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/lldbinit
================================================
#
# This file provides a way to skip stepping into Catch code when debugging with lldb.
#
# With the setting "target.process.thread.step-avoid-regexp" you can tell lldb
# to skip functions matching the regexp
#
# Basically the following line tells lldb to skip all functions containing the
# regexp "Catch", which matches the complete Catch namespace.
# If you want to skip just some parts of the Catch code you can modify the
# regexp accordingly.
#
# If you want to permanently skip stepping into Catch code copy the following
# line into your ~/.lldbinit file
#

settings set target.process.thread.step-avoid-regexp Catch

================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/docs/Readme.md
================================================
<a id="top"></a>
# Reference

To get the most out of Catch2, start with the [tutorial](tutorial.md#top).
Once you're up and running consider the following reference material.

Writing tests:
* [Assertion macros](assertions.md#top)
* [Matchers](matchers.md#top)
* [Logging macros](logging.md#top)
* [Test cases and sections](test-cases-and-sections.md#top)
* [Test fixtures](test-fixtures.md#top)
* [Reporters](reporters.md#top)
* [Event Listeners](event-listeners.md#top)
* [Data Generators](generators.md#top)
* [Other macros](other-macros.md#top)
* [Micro benchmarking](benchmarks.md#top)

Fine tuning:
* [Supplying your own main()](own-main.md#top)
* [Compile-time configuration](configuration.md#top)
* [String Conversions](tostring.md#top)

Running:
* [Command line](command-line.md#top)

Odds and ends:
* [CMake integration](cmake-integration.md#top)
* [CI and other miscellaneous pieces](ci-and-misc.md#top)

FAQ:
* [Why are my tests slow to compile?](slow-compiles.md#top)
* [Known limitations](limitations.md#top)
 
Other:
* [Why Catch?](why-catch.md#top)
* [Open Source Projects using Catch](opensource-users.md#top)
* [Contributing](contributing.md#top)
* [Release Notes](release-notes.md#top)
* [Deprecations and incoming changes](deprecations.md#top)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/docs/assertions.md
================================================
<a id="top"></a>
# Assertion Macros

**Contents**<br>
[Natural Expressions](#natural-expressions)<br>
[Exceptions](#exceptions)<br>
[Matcher expressions](#matcher-expressions)<br>
[Thread Safety](#thread-safety)<br>
[Expressions with commas](#expressions-with-commas)<br>

Most test frameworks have a large collection of assertion macros to capture all possible conditional forms (```_EQUALS```, ```_NOTEQUALS```, ```_GREATER_THAN``` etc).

Catch is different. Because it decomposes natural C-style conditional expressions most of these forms are reduced to one or two that you will use all the time. That said there is a rich set of auxiliary macros as well. We'll describe all of these here.

Most of these macros come in two forms:

## Natural Expressions

The ```REQUIRE``` family of macros tests an expression and aborts the test case if it fails.
The ```CHECK``` family are equivalent but execution continues in the same test case even if the assertion fails. This is useful if you have a series of essentially orthogonal assertions and it is useful to see all the results rather than stopping at the first failure.

* **REQUIRE(** _expression_ **)** and  
* **CHECK(** _expression_ **)**

Evaluates the expression and records the result. If an exception is thrown, it is caught, reported, and counted as a failure. These are the macros you will use most of the time.

Examples:
```
CHECK( str == "string value" );
CHECK( thisReturnsTrue() );
REQUIRE( i == 42 );
```

* **REQUIRE_FALSE(** _expression_ **)** and  
* **CHECK_FALSE(** _expression_ **)**

Evaluates the expression and records the _logical NOT_ of the result. If an exception is thrown it is caught, reported, and counted as a failure.
(these forms exist as a workaround for the fact that ! prefixed expressions cannot be decomposed).

Example:
```
REQUIRE_FALSE( thisReturnsFalse() );
```

Do note that "overly complex" expressions cannot be decomposed and thus will not compile. This is done partly for practical reasons (to keep the underlying expression template machinery to minimum) and partly for philosophical reasons (assertions should be simple and deterministic).

Examples:
* `CHECK(a == 1 && b == 2);`
This expression is too complex because of the `&&` operator. If you want to check that 2 or more properties hold, you can either put the expression into parenthesis, which stops decomposition from working, or you need to decompose the expression into two assertions: `CHECK( a == 1 ); CHECK( b == 2);`
* `CHECK( a == 2 || b == 1 );`
This expression is too complex because of the `||` operator. If you want to check that one of several properties hold, you can put the expression into parenthesis (unlike with `&&`, expression decomposition into several `CHECK`s is not possible).


### Floating point comparisons

When comparing floating point numbers - especially if at least one of them has been computed - great care must be taken to allow for rounding errors and inexact representations.

Catch provides a way to perform tolerant comparisons of floating point values through use of a wrapper class called `Approx`. `Approx` can be used on either side of a comparison expression. It overloads the comparisons operators to take a tolerance into account. Here's a simple example:

```cpp
REQUIRE( performComputation() == Approx( 2.1 ) );
```

Catch also provides a user-defined literal for `Approx`; `_a`. It resides in
the `Catch::literals` namespace and can be used like so:
```cpp
using namespace Catch::literals;
REQUIRE( performComputation() == 2.1_a );
```

`Approx` is constructed with defaults that should cover most simple cases.
For the more complex cases, `Approx` provides 3 customization points:

* __epsilon__ - epsilon serves to set the coefficient by which a result
can differ from `Approx`'s value before it is rejected.
_By default set to `std::numeric_limits<float>::epsilon()*100`._
* __margin__ - margin serves to set the the absolute value by which
a result can differ from `Approx`'s value before it is rejected.
_By default set to `0.0`._
* __scale__ - scale is used to change the magnitude of `Approx` for relative check.
_By default set to `0.0`._

#### epsilon example
```cpp
Approx target = Approx(100).epsilon(0.01);
100.0 == target; // Obviously true
200.0 == target; // Obviously still false
100.5 == target; // True, because we set target to allow up to 1% difference
```

#### margin example
```cpp
Approx target = Approx(100).margin(5);
100.0 == target; // Obviously true
200.0 == target; // Obviously still false
104.0 == target; // True, because we set target to allow absolute difference of at most 5
```

#### scale
Scale can be useful if the computation leading to the result worked
on different scale than is used by the results. Since allowed difference
between Approx's value and compared value is based primarily on Approx's value
(the allowed difference is computed as
`(Approx::scale + Approx::value) * epsilon`), the resulting comparison could
need rescaling to be correct.


## Exceptions

* **REQUIRE_NOTHROW(** _expression_ **)** and  
* **CHECK_NOTHROW(** _expression_ **)**

Expects that no exception is thrown during evaluation of the expression.

* **REQUIRE_THROWS(** _expression_ **)** and  
* **CHECK_THROWS(** _expression_ **)**

Expects that an exception (of any type) is be thrown during evaluation of the expression.

* **REQUIRE_THROWS_AS(** _expression_, _exception type_ **)** and  
* **CHECK_THROWS_AS(** _expression_, _exception type_ **)**

Expects that an exception of the _specified type_ is thrown during evaluation of the expression. Note that the _exception type_ is extended with `const&` and you should not include it yourself.

* **REQUIRE_THROWS_WITH(** _expression_, _string or string matcher_ **)** and  
* **CHECK_THROWS_WITH(** _expression_, _string or string matcher_ **)**

Expects that an exception is thrown that, when converted to a string, matches the _string_ or _string matcher_ provided (see next section for Matchers).

e.g.
```cpp
REQUIRE_THROWS_WITH( openThePodBayDoors(), Contains( "afraid" ) && Contains( "can't do that" ) );
REQUIRE_THROWS_WITH( dismantleHal(), "My mind is going" );
```

* **REQUIRE_THROWS_MATCHES(** _expression_, _exception type_, _matcher for given exception type_ **)** and
* **CHECK_THROWS_MATCHES(** _expression_, _exception type_, _matcher for given exception type_ **)**

Expects that exception of _exception type_ is thrown and it matches provided matcher (see the [documentation for Matchers](matchers.md#top)).


_Please note that the `THROW` family of assertions expects to be passed a single expression, not a statement or series of statements. If you want to check a more complicated sequence of operations, you can use a C++11 lambda function._

```cpp
REQUIRE_NOTHROW([&](){
    int i = 1;
    int j = 2;
    auto k = i + j;
    if (k == 3) {
        throw 1;
    }
}());
```



## Matcher expressions

To support Matchers a slightly different form is used. Matchers have [their own documentation](matchers.md#top).

* **REQUIRE_THAT(** _lhs_, _matcher expression_ **)** and  
* **CHECK_THAT(** _lhs_, _matcher expression_ **)**  

Matchers can be composed using `&&`, `||` and `!` operators.

## Thread Safety

Currently assertions in Catch are not thread safe.
For more details, along with workarounds, see the section on [the limitations page](limitations.md#thread-safe-assertions).

## Expressions with commas

Because the preprocessor parses code using different rules than the
compiler, multiple-argument assertions (e.g. `REQUIRE_THROWS_AS`) have
problems with commas inside the provided expressions. As an example
`REQUIRE_THROWS_AS(std::pair<int, int>(1, 2), std::invalid_argument);`
will fail to compile, because the preprocessor sees 3 arguments provided,
but the macro accepts only 2. There are two possible workarounds.

1) Use typedef:
```cpp
using int_pair = std::pair<int, int>;
REQUIRE_THROWS_AS(int_pair(1, 2), std::invalid_argument);
```

This solution is always applicable, but makes the meaning of the code
less clear.

2) Parenthesize the expression:
```cpp
TEST_CASE_METHOD((Fixture<int, int>), "foo", "[bar]") {
    SUCCEED();
}
```

This solution is not always applicable, because it might require extra
changes on the Catch's side to work.

---

[Home](Readme.md#top)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/docs/benchmarks.md
================================================
<a id="top"></a>
# Authoring benchmarks

> [Introduced](https://github.com/catchorg/Catch2/issues/1616) in Catch 2.9.0.

_Note that benchmarking support is disabled by default and to enable it,
you need to define `CATCH_CONFIG_ENABLE_BENCHMARKING`. For more details,
see the [compile-time configuration documentation](configuration.md#top)._

Writing benchmarks is not easy. Catch simplifies certain aspects but you'll
always need to take care about various aspects. Understanding a few things about
the way Catch runs your code will be very helpful when writing your benchmarks.

First off, let's go over some terminology that will be used throughout this
guide.

- *User code*: user code is the code that the user provides to be measured.
- *Run*: one run is one execution of the user code.
- *Sample*: one sample is one data point obtained by measuring the time it takes
  to perform a certain number of runs. One sample can consist of more than one
  run if the clock available does not have enough resolution to accurately
  measure a single run. All samples for a given benchmark execution are obtained
  with the same number of runs.

## Execution procedure

Now I can explain how a benchmark is executed in Catch. There are three main
steps, though the first does not need to be repeated for every benchmark.

1. *Environmental probe*: before any benchmarks can be executed, the clock's
resolution is estimated. A few other environmental artifacts are also estimated
at this point, like the cost of calling the clock function, but they almost
never have any impact in the results.

2. *Estimation*: the user code is executed a few times to obtain an estimate of
the amount of runs that should be in each sample. This also has the potential
effect of bringing relevant code and data into the caches before the actual
measurement starts.

3. *Measurement*: all the samples are collected sequentially by performing the
number of runs estimated in the previous step for each sample.

This already gives us one important rule for writing benchmarks for Catch: the
benchmarks must be repeatable. The user code will be executed several times, and
the number of times it will be executed during the estimation step cannot be
known beforehand since it depends on the time it takes to execute the code.
User code that cannot be executed repeatedly will lead to bogus results or
crashes.

## Benchmark specification

Benchmarks can be specified anywhere inside a Catch test case.
There is a simple and a slightly more advanced version of the `BENCHMARK` macro.

Let's have a look how a naive Fibonacci implementation could be benchmarked:
```c++
std::uint64_t Fibonacci(std::uint64_t number) {
    return number < 2 ? 1 : Fibonacci(number - 1) + Fibonacci(number - 2);
}
```
Now the most straight forward way to benchmark this function, is just adding a `BENCHMARK` macro to our test case:
```c++
TEST_CASE("Fibonacci") {
    CHECK(Fibonacci(0) == 1);
    // some more asserts..
    CHECK(Fibonacci(5) == 8);
    // some more asserts..

    // now let's benchmark:
    BENCHMARK("Fibonacci 20") {
        return Fibonacci(20);
    };

    BENCHMARK("Fibonacci 25") {
        return Fibonacci(25);
    };

    BENCHMARK("Fibonacci 30") {
        return Fibonacci(30);
    };

    BENCHMARK("Fibonacci 35") {
        return Fibonacci(35);
    };
}
```
There's a few things to note:
- As `BENCHMARK` expands to a lambda expression it is necessary to add a semicolon after
 the closing brace (as opposed to the first experimental version).
- The `return` is a handy way to avoid the compiler optimizing away the benchmark code.

Running this already runs the benchmarks and outputs something similar to:
```
-------------------------------------------------------------------------------
Fibonacci
-------------------------------------------------------------------------------
C:\path\to\Catch2\Benchmark.tests.cpp(10)
...............................................................................
benchmark name                                  samples       iterations    estimated
                                                mean          low mean      high mean
                                                std dev       low std dev   high std dev
-------------------------------------------------------------------------------
Fibonacci 20                                            100       416439   83.2878 ms
                                                       2 ns         2 ns         2 ns
                                                       0 ns         0 ns         0 ns

Fibonacci 25                                            100       400776   80.1552 ms
                                                       3 ns         3 ns         3 ns
                                                       0 ns         0 ns         0 ns

Fibonacci 30                                            100       396873   79.3746 ms
                                                      17 ns        17 ns        17 ns
                                                       0 ns         0 ns         0 ns

Fibonacci 35                                            100       145169   87.1014 ms
                                                     468 ns       464 ns       473 ns
                                                      21 ns        15 ns        34 ns
```

### Advanced benchmarking
The simplest use case shown above, takes no arguments and just runs the user code that needs to be measured.
However, if using the `BENCHMARK_ADVANCED` macro and adding a `Catch::Benchmark::Chronometer` argument after
the macro, some advanced features are available. The contents of the simple benchmarks are invoked once per run,
while the blocks of the advanced benchmarks are invoked exactly twice:
once during the estimation phase, and another time during the execution phase.

```c++
BENCHMARK("simple"){ return long_computation(); };

BENCHMARK_ADVANCED("advanced")(Catch::Benchmark::Chronometer meter) {
    set_up();
    meter.measure([] { return long_computation(); });
};
```

These advanced benchmarks no longer consist entirely of user code to be measured.
In these cases, the code to be measured is provided via the
`Catch::Benchmark::Chronometer::measure` member function. This allows you to set up any
kind of state that might be required for the benchmark but is not to be included
in the measurements, like making a vector of random integers to feed to a
sorting algorithm.

A single call to `Catch::Benchmark::Chronometer::measure` performs the actual measurements
by invoking the callable object passed in as many times as necessary. Anything
that needs to be done outside the measurement can be done outside the call to
`measure`.

The callable object passed in to `measure` can optionally accept an `int`
parameter.

```c++
meter.measure([](int i) { return long_computation(i); });
```

If it accepts an `int` parameter, the sequence number of each run will be passed
in, starting with 0. This is useful if you want to measure some mutating code,
for example. The number of runs can be known beforehand by calling
`Catch::Benchmark::Chronometer::runs`; with this one can set up a different instance to be
mutated by each run.

```c++
std::vector<std::string> v(meter.runs());
std::fill(v.begin(), v.end(), test_string());
meter.measure([&v](int i) { in_place_escape(v[i]); });
```

Note that it is not possible to simply use the same instance for different runs
and resetting it between each run since that would pollute the measurements with
the resetting code.

It is also possible to just provide an argument name to the simple `BENCHMARK` macro to get
the same semantics as providing a callable to `meter.measure` with `int` argument:

```c++
BENCHMARK("indexed", i){ return long_computation(i); };
```

### Constructors and destructors

All of these tools give you a lot mileage, but there are two things that still
need special handling: constructors and destructors. The problem is that if you
use automatic objects they get destroyed by the end of the scope, so you end up
measuring the time for construction and destruction together. And if you use
dynamic allocation instead, you end up including the time to allocate memory in
the measurements.

To solve this conundrum, Catch provides class templates that let you manually
construct and destroy objects without dynamic allocation and in a way that lets
you measure construction and destruction separately.

```c++
BENCHMARK_ADVANCED("construct")(Catch::Benchmark::Chronometer meter) {
    std::vector<Catch::Benchmark::storage_for<std::string>> storage(meter.runs());
    meter.measure([&](int i) { storage[i].construct("thing"); });
};

BENCHMARK_ADVANCED("destroy")(Catch::Benchmark::Chronometer meter) {
    std::vector<Catch::Benchmark::destructable_object<std::string>> storage(meter.runs());
    for(auto&& o : storage)
        o.construct("thing");
    meter.measure([&](int i) { storage[i].destruct(); });
};
```

`Catch::Benchmark::storage_for<T>` objects are just pieces of raw storage suitable for `T`
objects. You can use the `Catch::Benchmark::storage_for::construct` member function to call a constructor and
create an object in that storage. So if you want to measure the time it takes
for a certain constructor to run, you can just measure the time it takes to run
this function.

When the lifetime of a `Catch::Benchmark::storage_for<T>` object ends, if an actual object was
constructed there it will be automatically destroyed, so nothing leaks.

If you want to measure a destructor, though, we need to use
`Catch::Benchmark::destructable_object<T>`. These objects are similar to
`Catch::Benchmark::storage_for<T>` in that construction of the `T` object is manual, but
it does not destroy anything automatically. Instead, you are required to call
the `Catch::Benchmark::destructable_object::destruct` member function, which is what you
can use to measure the destruction time.

### The optimizer

Sometimes the optimizer will optimize away the very code that you want to
measure. There are several ways to use results that will prevent the optimiser
from removing them. You can use the `volatile` keyword, or you can output the
value to standard output or to a file, both of which force the program to
actually generate the value somehow.

Catch adds a third option. The values returned by any function provided as user
code are guaranteed to be evaluated and not optimised out. This means that if
your user code consists of computing a certain value, you don't need to bother
with using `volatile` or forcing output. Just `return` it from the function.
That helps with keeping the code in a natural fashion.

Here's an example:

```c++
// may measure nothing at all by skipping the long calculation since its
// result is not used
BENCHMARK("no return"){ long_calculation(); };

// the result of long_calculation() is guaranteed to be computed somehow
BENCHMARK("with return"){ return long_calculation(); };
```

However, there's no other form of control over the optimizer whatsoever. It is
up to you to write a benchmark that actually measures what you want and doesn't
just measure the time to do a whole bunch of nothing.

To sum up, there are two simple rules: whatever you would do in handwritten code
to control optimization still works in Catch; and Catch makes return values
from user code into observable effects that can't be optimized away.

<i>Adapted from nonius' documentation.</i>


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/docs/ci-and-misc.md
================================================
<a id="top"></a>
# CI and other odd pieces

**Contents**<br>
[Continuous Integration systems](#continuous-integration-systems)<br>
[Other reporters](#other-reporters)<br>
[Low-level tools](#low-level-tools)<br>
[CMake](#cmake)<br>

This page talks about how Catch integrates with Continuous Integration 
Build Systems may refer to low-level tools, like CMake, or larger systems that run on servers, like Jenkins or TeamCity. This page will talk about both.

## Continuous Integration systems

Probably the most important aspect to using Catch with a build server is the use of different reporters. Catch comes bundled with three reporters that should cover the majority of build servers out there - although adding more for better integration with some is always a possibility (currently we also offer TeamCity, TAP, Automake and SonarQube reporters).

Two of these reporters are built in (XML and JUnit) and the third (TeamCity) is included as a separate header. It's possible that the other two may be split out in the future too - as that would make the core of Catch smaller for those that don't need them.

### XML Reporter
```-r xml``` 

The XML Reporter writes in an XML format that is specific to Catch. 

The advantage of this format is that it corresponds well to the way Catch works (especially the more unusual features, such as nested sections) and is a fully streaming format - that is it writes output as it goes, without having to store up all its results before it can start writing.

The disadvantage is that, being specific to Catch, no existing build servers understand the format natively. It can be used as input to an XSLT transformation that could convert it to, say, HTML - although this loses the streaming advantage, of course.

### JUnit Reporter
```-r junit```

The JUnit Reporter writes in an XML format that mimics the JUnit ANT schema.

The advantage of this format is that the JUnit Ant schema is widely understood by most build servers and so can usually be consumed with no additional work.

The disadvantage is that this schema was designed to correspond to how JUnit works - and there is a significant mismatch with how Catch works. Additionally the format is not streamable (because opening elements hold counts of failed and passing tests as attributes) - so the whole test run must complete before it can be written.

## Other reporters
Other reporters are not part of the single-header distribution and need
to be downloaded and included separately. All reporters are stored in
`single_include` directory in the git repository, and are named
`catch_reporter_*.hpp`. For example, to use the TeamCity reporter you
need to download `single_include/catch_reporter_teamcity.hpp` and include
it after Catch itself.

```cpp
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include "catch_reporter_teamcity.hpp"
```

### TeamCity Reporter
```-r teamcity```

The TeamCity Reporter writes TeamCity service messages to stdout. In order to be able to use this reporter an additional header must also be included.

Being specific to TeamCity this is the best reporter to use with it - but it is completely unsuitable for any other purpose. It is a streaming format (it writes as it goes) - although test results don't appear in the TeamCity interface until the completion of a suite (usually the whole test run).

### Automake Reporter
```-r automake```

The Automake Reporter writes out the [meta tags](https://www.gnu.org/software/automake/manual/html_node/Log-files-generation-and-test-results-recording.html#Log-files-generation-and-test-results-recording) expected by automake via `make check`.

### TAP (Test Anything Protocol) Reporter
```-r tap```

Because of the incremental nature of Catch's test suites and ability to run specific tests, our implementation of TAP reporter writes out the number of tests in a suite last.

### SonarQube Reporter
```-r sonarqube```
[SonarQube Generic Test Data](https://docs.sonarqube.org/latest/analysis/generic-test/) XML format for tests metrics.

## Low-level tools

### Precompiled headers (PCHs)

Catch offers prototypal support for being included in precompiled headers, but because of its single-header nature it does need some actions by the user:
* The precompiled header needs to define `CATCH_CONFIG_ALL_PARTS`
* The implementation file needs to
  * undefine `TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED`
  * define `CATCH_CONFIG_IMPL_ONLY`
  * define `CATCH_CONFIG_MAIN` or `CATCH_CONFIG_RUNNER`
  * include "catch.hpp" again


### CodeCoverage module (GCOV, LCOV...)

If you are using GCOV tool to get testing coverage of your code, and are not sure how to integrate it with CMake and Catch, there should be an external example over at https://github.com/fkromer/catch_cmake_coverage


### pkg-config

Catch2 provides a rudimentary pkg-config integration, by registering itself
under the name `catch2`. This means that after Catch2 is installed, you
can use `pkg-config` to get its include path: `pkg-config --cflags catch2`.

### gdb and lldb scripts

Catch2's `contrib` folder also contains two simple debugger scripts,
`gdbinit` for `gdb` and `lldbinit` for `lldb`. If loaded into their
respective debugger, these will tell it to step over Catch2's internals
when stepping through code.


## CMake

[As it has been getting kinda long, the documentation of Catch2's
integration with CMake has been moved to its own page.](cmake-integration.md#top)


---

[Home](Readme.md#top)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/docs/cmake-integration.md
================================================
<a id="top"></a>
# CMake integration

**Contents**<br>
[CMake target](#cmake-target)<br>
[Automatic test registration](#automatic-test-registration)<br>
[CMake project options](#cmake-project-options)<br>
[Installing Catch2 from git repository](#installing-catch2-from-git-repository)<br>

Because we use CMake to build Catch2, we also provide a couple of
integration points for our users.

1) Catch2 exports a (namespaced) CMake target
2) Catch2's repository contains CMake scripts for automatic registration
of `TEST_CASE`s in CTest

## CMake target

Catch2's CMake build exports an interface target `Catch2::Catch2`. Linking
against it will add the proper include path and all necessary capabilities
to the resulting binary.

This means that if Catch2 has been installed on the system, it should be
enough to do:
```cmake
find_package(Catch2 REQUIRED)
target_link_libraries(tests Catch2::Catch2)
```


This target is also provided when Catch2 is used as a subdirectory.
Assuming that Catch2 has been cloned to `lib/Catch2`:
```cmake
add_subdirectory(lib/Catch2)
target_link_libraries(tests Catch2::Catch2)
```

## Automatic test registration

Catch2's repository also contains two CMake scripts that help users
with automatically registering their `TEST_CASE`s with CTest. They
can be found in the `contrib` folder, and are

1) `Catch.cmake` (and its dependency `CatchAddTests.cmake`)
2) `ParseAndAddCatchTests.cmake`

If Catch2 has been installed in system, both of these can be used after
doing `find_package(Catch2 REQUIRED)`. Otherwise you need to add them
to your CMake module path.

### `Catch.cmake` and `CatchAddTests.cmake`

`Catch.cmake` provides function `catch_discover_tests` to get tests from
a target. This function works by running the resulting executable with
`--list-test-names-only` flag, and then parsing the output to find all
existing tests.

#### Usage
```cmake
cmake_minimum_required(VERSION 3.5)

project(baz LANGUAGES CXX VERSION 0.0.1)

find_package(Catch2 REQUIRED)
add_executable(foo test.cpp)
target_link_libraries(foo Catch2::Catch2)

include(CTest)
include(Catch)
catch_discover_tests(foo)
```


#### Customization
`catch_discover_tests` can be given several extra argumets:
```cmake
catch_discover_tests(target
                     [TEST_SPEC arg1...]
                     [EXTRA_ARGS arg1...]
                     [WORKING_DIRECTORY dir]
                     [TEST_PREFIX prefix]
                     [TEST_SUFFIX suffix]
                     [PROPERTIES name1 value1...]
                     [TEST_LIST var]
)
```

* `TEST_SPEC arg1...`

Specifies test cases, wildcarded test cases, tags and tag expressions to
pass to the Catch executable alongside the `--list-test-names-only` flag.


* `EXTRA_ARGS arg1...`

Any extra arguments to pass on the command line to each test case.


* `WORKING_DIRECTORY dir`

Specifies the directory in which to run the discovered test cases.  If this
option is not provided, the current binary directory is used.


* `TEST_PREFIX prefix`

Specifies a _prefix_ to be added to the name of each discovered test case.
This can be useful when the same test executable is being used in multiple
calls to `catch_discover_tests()`, with different `TEST_SPEC` or `EXTRA_ARGS`.


* `TEST_SUFFIX suffix`

Same as `TEST_PREFIX`, except it specific the _suffix_ for the test names.
Both `TEST_PREFIX` and `TEST_SUFFIX` can be specified at the same time.


* `PROPERTIES name1 value1...`

Specifies additional properties to be set on all tests discovered by this
invocation of `catch_discover_tests`.


* `TEST_LIST var`

Make the list of tests available in the variable `var`, rather than the
default `<target>_TESTS`.  This can be useful when the same test
executable is being used in multiple calls to `catch_discover_tests()`.
Note that this variable is only available in CTest.


### `ParseAndAddCatchTests.cmake`

`ParseAndAddCatchTests` works by parsing all implementation files
associated with the provided target, and registering them via CTest's
`add_test`. This approach has some limitations, such as the fact that
commented-out tests will be registered anyway.


#### Usage

```cmake
cmake_minimum_required(VERSION 3.5)

project(baz LANGUAGES CXX VERSION 0.0.1)

find_package(Catch2 REQUIRED)
add_executable(foo test.cpp)
target_link_libraries(foo Catch2::Catch2)

include(CTest)
include(ParseAndAddCatchTests)
ParseAndAddCatchTests(foo)
```


#### Customization

`ParseAndAddCatchTests` provides some customization points:
* `PARSE_CATCH_TESTS_VERBOSE` -- When `ON`, the script prints debug
messages. Defaults to `OFF`.
* `PARSE_CATCH_TESTS_NO_HIDDEN_TESTS` -- When `ON`, hidden tests (tests
tagged with any of `[!hide]`, `[.]` or `[.foo]`) will not be registered.
Defaults to `OFF`.
* `PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME` -- When `ON`, adds fixture
class name to the test name in CTest. Defaults to `ON`.
* `PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME` -- When `ON`, adds target
name to the test name in CTest. Defaults to `ON`.
* `PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS` -- When `ON`, adds test
file to `CMAKE_CONFIGURE_DEPENDS`. This means that the CMake configuration
step will be re-ran when the test files change, letting new tests be
automatically discovered. Defaults to `OFF`.


Optionally, one can specify a launching command to run tests by setting the
variable `OptionalCatchTestLauncher` before calling `ParseAndAddCatchTests`. For
instance to run some tests using `MPI` and other sequentially, one can write
```cmake
set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC})
ParseAndAddCatchTests(mpi_foo)
unset(OptionalCatchTestLauncher)
ParseAndAddCatchTests(bar)
```

## CMake project options

Catch2's CMake project also provides some options for other projects
that consume it. These are

* `CATCH_BUILD_TESTING` -- When `ON`, Catch2's SelfTest project will be
built. Defaults to `ON`. Note that Catch2 also obeys `BUILD_TESTING` CMake
variable, so _both_ of them need to be `ON` for the SelfTest to be built,
and either of them can be set to `OFF` to disable building SelfTest.
* `CATCH_BUILD_EXAMPLES` -- When `ON`, Catch2's usage examples will be
built. Defaults to `OFF`.
* `CATCH_INSTALL_DOCS` -- When `ON`, Catch2's documentation will be
included in the installation. Defaults to `ON`.
* `CATCH_INSTALL_HELPERS` -- When `ON`, Catch2's contrib folder will be
included in the installation. Defaults to `ON`.
* `BUILD_TESTING` -- When `ON` and the project is not used as a subproject,
Catch2's test binary will be built. Defaults to `ON`.


## Installing Catch2 from git repository

If you cannot install Catch2 from a package manager (e.g. Ubuntu 16.04
provides catch only in version 1.2.0) you might want to install it from
the repository instead. Assuming you have enough rights, you can just
install it to the default location, like so:
```
$ git clone https://github.com/catchorg/Catch2.git
$ cd Catch2
$ cmake -Bbuild -H. -DBUILD_TESTING=OFF
$ sudo cmake --build build/ --target install
```

If you do not have superuser rights, you will also need to specify
[CMAKE_INSTALL_PREFIX](https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html)
when configuring the build, and then modify your calls to
[find_package](https://cmake.org/cmake/help/latest/command/find_package.html)
accordingly.


---

[Home](Readme.md#top)


================================================
FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/docs/command-line.md
================================================
<a id="top"></a>
# Command line

**Contents**<br>
[Specifying which tests to run](#specifying-which-tests-to-run)<br>
[Choosing a reporter to use](#choosing-a-reporter-to-use)<br>
[Breaking into the debugger](#breaking-into-the-debugger)<br>
[Showing results for successful tests](#showing-results-for-successful-tests)<br>
[Aborting after a certain number of failures](#aborting-after-a-certain-number-of-failures)<br>
[Listing available tests, tags or reporters](#listing-available-tests-tags-or-reporters)<br>
[Sending output to a file](#sending-output-to-a-file)<br>
[Naming a test run](#naming-a-test-run)<br>
[Eliding assertions expected to throw](#eliding-assertions-expected-to-throw)<br>
[Make whitespace visible](#make-whitespace-visible)<br>
[Warnings](#warnings)<br>
[Reporting timings](#reporting-timings)<br>
[Load test names to run from a file](#load-test-names-to-run-from-a-file)<br>
[Just test names](#just-test-names)<br>
[Specify the order test cases are run](#specify-the-order-test-cases-are-run)<br>
[Specify a seed for the Random Number Generator](#specify-a-seed-for-the-random-number-generator)<br>
[Identify framework and version according to the libIdentify standard](#identify-framework-and-version-according-to-the-libidentify-standard)<br>
[Wait for key before continuing](#wait-for-key-before-continuing)<br>
[Specify the number of benchmark samples to collect](#specify-the-number-of-benchmark-samples-to-collect)<br>
[Specify the number of resamples for bootstrapping](#specify-the-number-of-resamples-for-bootstrapping)<br>
[Specify the confidence-interval for bootstrapping](#specify-the-confidence-interval-for-bootstrapping)<br>
[Disable statistical analysis of collected benchmark samples](#disable-statistical-analysis-of-collected-benchmark-samples)<br>
[Usage](#usage)<br>
[Specify the section to run](#specify-the-section-to-run)<br>
[Filenames as tags](#filenames-as-tags)<br>
[Override output colouring](#override-output-colouring)<br>

Catch works quite nicely without any command line options at all - but for those times when you want greater control the following options are available.
Click one of the following links to take you straight to that option - or scroll on to browse the available options.

<a href="#specifying-which-tests-to-run">               `    <test-spec> ...`</a><br />
<a href="#usage">                                       `    -h, -?, --help`</a><br />
<a href="#listing-available-tests-tags-or-reporters">   `    -l, --list-tests`</a><br />
<a href="#listing-available-tests-tags-or-reporters">   `    -t, --list-tags`</a><br />
<a href="#showing-results-for-successful-tests">        `    -s, --success`</a><br />
<a href="#breaking-into-the-debugger">                  `    -b, --break`</a><br />
<a href="#eliding-assertions-expected-to-throw">        `    -e, --nothrow`</a><br />
<a href="#invisibles">                                  `    -i, --invisibles`</a><br />
<a href="#sending-output-to-a-file">                    `    -o, --out`</a><br />
<a href="#choosing-a-reporter-to-use">                  `    -r, --reporter`</a><br />
<a href="#naming-a-test-run">                           `    -n, --name`</a><br />
<a href="#aborting-after-a-certain-number-of-failures"> `    -a, --abort`</a><br />
<a href="#aborting-after-a-certain-number-of-failures"> `    -x, --abortx`</a><br />
<a href="#warnings">                                    `    -w, --warn`</a><br />
<a href="#reporting-timings">                           `    -d, --durations`</a><br />
<a href="#input-file">                                  `    -f, --input-file`</a><br />
<a href="#run-section">                                 `    -c, --section`</a><br />
<a href="#filenames-as-tags">                           `    -#, --filenames-as-tags`</a><br />


</br>

<a href="#list-test-names-only">                        `    --list-test-names-only`</a><br />
<a href="#listing-available-tests-tags-or-reporters">   `    --list-reporters`</a><br />
<a href="#order">                                       `    --order`</a><br />
<a href="#rng-seed">                                    `    --rng-seed`</a><br />
<a href="#libidentify">                                 `    --libidentify`</a><br />
<a href="#wait-for-keypress">                           `    --wait-for-keypress`</a><br />
<a href="#benchmark-samples">                           `    --benchmark-samples`</a><br />
<a href="#benchmark-resamples">                         `    --benchmark-resamples`</a><br />
<a href="#benchmark-confidence-interval">               `    --benchmark-confidence-interval`</a><br />
<a href="#benchmark-no-analysis">                       `    --benchmark-no-analysis`</a><br />
<a href="#use-colour">                                  `    --use-colour`</a><br />

</br>



<a id="specifying-which-tests-to-run"></a>
## Specifying which tests to run

<pre>&lt;test-spec> ...</pre>

Test cases, wildcarded test cases, tags and tag expressions are all passed directly as arguments. Tags are distinguished by being enclosed in square brackets.

If no test specs are supplied then all test cases, except "hidden" tests, are run.
A test is hidden by giving it any tag starting with (or just) a period (```.```) - or, in the deprecated case, tagged ```[hide]``` or given name starting with `'./'`. To specify hidden tests from the command line ```[.]``` or ```[hide]``` can be used *regardless of how they were declared*.

Specs must be enclosed in quotes if they contain spaces. If they do not contain spaces the quotes are optional.

Wildcards consist of the `*` character at the beginning and/or end of test case names and can substitute for any number of any characters (including none).

Test specs are case insensitive.

If a spec is prefixed with `exclude:` or the `~` character then the pattern matches an exclusion. This means that tests matching the pattern are excluded from the set - even if a prior inclusion spec included them. Subsequent inclusion specs will take precedence, however.
Inclusions and exclusions are evaluated in left-to-right order.

Test case examples:

<pre>thisTestOnly            Matches the test case called, 'thisTestOnly'
"this test only"        Matches the test case called, 'this test only'
these*                  Matches all cases starting with 'these'
exclude:notThis         Matches all tests except, 'notThis'
~notThis                Matches all tests except, 'notThis'
~*private*              Matches all tests except those that contain 'private'
a* ~ab* abc             Matches all tests that start with 'a', except those that
                        start with 'ab', except 'abc', which is included
-# [#somefile]          Matches all tests from the file 'somefile.cpp'
</pre>

Names within square brackets are interpreted as tags.
A series of tags form an AND expression whereas a comma-separated sequence forms an OR expression. e.g.:

<pre>[one][two],[three]</pre>
This matches all tests tagged `[one]` and `[two]`, as well as all tests tagged `[three]`

Test names containing special characters, such as `,` or `[` can specify them on the command line using `\`.
`\` also escapes itself.

<a id="choosing-a-reporter-to-use"></a>
## Choosing a reporter to use

<pre>-r, --reporter &lt;reporter></pre>

A reporter is an object that formats and structures the output of running tests, and potentially summarises the results. By default a console reporter is used that writes, IDE friendly, textual output. Catch comes bundled with some alternative reporters, but more can be added in client code.<br />
The bundled reporters are:

<pre>-r console
-r compact
-r xml
-r junit
</pre>

The JUnit reporter is an xml format that follows the structure of the JUnit XML Report ANT task, as consumed by a number of third-party tools, including Continuous Integration servers such as Hudson. If not otherwise needed, the standard XML reporter is preferred as this is a streaming reporter, whereas the Junit reporter needs to hold all its results until the end so it can write the overall results into attributes of the root node.

<a id="breaking-into-the-debugger"></a>
## Breaking into the debugger
<pre>-b, --break</pre>

Under most debuggers Catch2 is capable of automatically breaking on a test
failure. This allows the user to see the current state of 
Download .txt
Showing preview only (675K chars total). Download the full file or copy to clipboard to get everything.
gitextract_hfbrqaaj/

├── .gitattributes
├── .gitignore
├── .idea/
│   ├── codeStyles/
│   │   ├── Project.xml
│   │   └── codeStyleConfig.xml
│   ├── google-java-format.xml
│   └── jarRepositories.xml
├── .travis.yml
├── LICENSE
├── README.md
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── mediasoup-client/
│   ├── .clang-format
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── build.gradle
│   ├── deps/
│   │   ├── libmediasoupclient/
│   │   │   ├── .clang-format
│   │   │   ├── .clang-tidy
│   │   │   ├── .github/
│   │   │   │   └── FUNDING.yml
│   │   │   ├── .gitignore
│   │   │   ├── .npmrc
│   │   │   ├── CHANGELOG.md
│   │   │   ├── CMakeLists.txt
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── TODO.md
│   │   │   ├── deps/
│   │   │   │   ├── catch/
│   │   │   │   │   ├── .conan/
│   │   │   │   │   │   ├── build.py
│   │   │   │   │   │   └── test_package/
│   │   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │   │       ├── conanfile.py
│   │   │   │   │   │       └── test_package.cpp
│   │   │   │   │   ├── .gitattributes
│   │   │   │   │   ├── .github/
│   │   │   │   │   │   ├── FUNDING.yml
│   │   │   │   │   │   ├── ISSUE_TEMPLATE/
│   │   │   │   │   │   │   ├── bug_report.md
│   │   │   │   │   │   │   └── feature_request.md
│   │   │   │   │   │   └── pull_request_template.md
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── .travis.yml
│   │   │   │   │   ├── CMake/
│   │   │   │   │   │   ├── Catch2Config.cmake.in
│   │   │   │   │   │   ├── FindGcov.cmake
│   │   │   │   │   │   ├── FindLcov.cmake
│   │   │   │   │   │   ├── Findcodecov.cmake
│   │   │   │   │   │   ├── MiscFunctions.cmake
│   │   │   │   │   │   ├── catch2.pc.in
│   │   │   │   │   │   └── llvm-cov-wrapper
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── CODE_OF_CONDUCT.md
│   │   │   │   │   ├── LICENSE.txt
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── appveyor.yml
│   │   │   │   │   ├── codecov.yml
│   │   │   │   │   ├── conanfile.py
│   │   │   │   │   ├── contrib/
│   │   │   │   │   │   ├── Catch.cmake
│   │   │   │   │   │   ├── CatchAddTests.cmake
│   │   │   │   │   │   ├── ParseAndAddCatchTests.cmake
│   │   │   │   │   │   ├── gdbinit
│   │   │   │   │   │   └── lldbinit
│   │   │   │   │   ├── docs/
│   │   │   │   │   │   ├── Readme.md
│   │   │   │   │   │   ├── assertions.md
│   │   │   │   │   │   ├── benchmarks.md
│   │   │   │   │   │   ├── ci-and-misc.md
│   │   │   │   │   │   ├── cmake-integration.md
│   │   │   │   │   │   ├── command-line.md
│   │   │   │   │   │   ├── commercial-users.md
│   │   │   │   │   │   ├── configuration.md
│   │   │   │   │   │   ├── contributing.md
│   │   │   │   │   │   ├── deprecations.md
│   │   │   │   │   │   ├── event-listeners.md
│   │   │   │   │   │   ├── generators.md
│   │   │   │   │   │   ├── limitations.md
│   │   │   │   │   │   ├── list-of-examples.md
│   │   │   │   │   │   ├── logging.md
│   │   │   │   │   │   ├── matchers.md
│   │   │   │   │   │   ├── opensource-users.md
│   │   │   │   │   │   ├── other-macros.md
│   │   │   │   │   │   ├── own-main.md
│   │   │   │   │   │   ├── release-notes.md
│   │   │   │   │   │   ├── release-process.md
│   │   │   │   │   │   ├── reporters.md
│   │   │   │   │   │   ├── slow-compiles.md
│   │   │   │   │   │   ├── test-cases-and-sections.md
│   │   │   │   │   │   ├── test-fixtures.md
│   │   │   │   │   │   ├── tostring.md
│   │   │   │   │   │   ├── tutorial.md
│   │   │   │   │   │   └── why-catch.md
│   │   │   │   │   ├── examples/
│   │   │   │   │   │   ├── 000-CatchMain.cpp
│   │   │   │   │   │   ├── 010-TestCase.cpp
│   │   │   │   │   │   ├── 020-TestCase-1.cpp
│   │   │   │   │   │   ├── 020-TestCase-2.cpp
│   │   │   │   │   │   ├── 030-Asn-Require-Check.cpp
│   │   │   │   │   │   ├── 100-Fix-Section.cpp
│   │   │   │   │   │   ├── 110-Fix-ClassFixture.cpp
│   │   │   │   │   │   ├── 120-Bdd-ScenarioGivenWhenThen.cpp
│   │   │   │   │   │   ├── 200-Rpt-CatchMain.cpp
│   │   │   │   │   │   ├── 207-Rpt-TeamCityReporter.cpp
│   │   │   │   │   │   ├── 210-Evt-EventListeners.cpp
│   │   │   │   │   │   ├── 231-Cfg-OutputStreams.cpp
│   │   │   │   │   │   ├── 300-Gen-OwnGenerator.cpp
│   │   │   │   │   │   ├── 301-Gen-MapTypeConversion.cpp
│   │   │   │   │   │   ├── 310-Gen-VariablesInGenerators.cpp
│   │   │   │   │   │   ├── 311-Gen-CustomCapture.cpp
│   │   │   │   │   │   └── CMakeLists.txt
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── catch.hpp
│   │   │   │   │   │   ├── catch_with_main.hpp
│   │   │   │   │   │   ├── external/
│   │   │   │   │   │   │   └── clara.hpp
│   │   │   │   │   │   ├── internal/
│   │   │   │   │   │   │   ├── benchmark/
│   │   │   │   │   │   │   │   ├── catch_benchmark.hpp
│   │   │   │   │   │   │   │   ├── catch_benchmarking_all.hpp
│   │   │   │   │   │   │   │   ├── catch_chronometer.hpp
│   │   │   │   │   │   │   │   ├── catch_clock.hpp
│   │   │   │   │   │   │   │   ├── catch_constructor.hpp
│   │   │   │   │   │   │   │   ├── catch_environment.hpp
│   │   │   │   │   │   │   │   ├── catch_estimate.hpp
│   │   │   │   │   │   │   │   ├── catch_execution_plan.hpp
│   │   │   │   │   │   │   │   ├── catch_optimizer.hpp
│   │   │   │   │   │   │   │   ├── catch_outlier_classification.hpp
│   │   │   │   │   │   │   │   ├── catch_sample_analysis.hpp
│   │   │   │   │   │   │   │   └── detail/
│   │   │   │   │   │   │   │       ├── catch_analyse.hpp
│   │   │   │   │   │   │   │       ├── catch_benchmark_function.hpp
│   │   │   │   │   │   │   │       ├── catch_complete_invoke.hpp
│   │   │   │   │   │   │   │       ├── catch_estimate_clock.hpp
│   │   │   │   │   │   │   │       ├── catch_measure.hpp
│   │   │   │   │   │   │   │       ├── catch_repeat.hpp
│   │   │   │   │   │   │   │       ├── catch_run_for_at_least.hpp
│   │   │   │   │   │   │   │       ├── catch_stats.cpp
│   │   │   │   │   │   │   │       ├── catch_stats.hpp
│   │   │   │   │   │   │   │       └── catch_timing.hpp
│   │   │   │   │   │   │   ├── catch_approx.cpp
│   │   │   │   │   │   │   ├── catch_approx.h
│   │   │   │   │   │   │   ├── catch_assertionhandler.cpp
│   │   │   │   │   │   │   ├── catch_assertionhandler.h
│   │   │   │   │   │   │   ├── catch_assertioninfo.h
│   │   │   │   │   │   │   ├── catch_assertionresult.cpp
│   │   │   │   │   │   │   ├── catch_assertionresult.h
│   │   │   │   │   │   │   ├── catch_capture.hpp
│   │   │   │   │   │   │   ├── catch_capture_matchers.cpp
│   │   │   │   │   │   │   ├── catch_capture_matchers.h
│   │   │   │   │   │   │   ├── catch_clara.h
│   │   │   │   │   │   │   ├── catch_commandline.cpp
│   │   │   │   │   │   │   ├── catch_commandline.h
│   │   │   │   │   │   │   ├── catch_common.cpp
│   │   │   │   │   │   │   ├── catch_common.h
│   │   │   │   │   │   │   ├── catch_compiler_capabilities.h
│   │   │   │   │   │   │   ├── catch_config.cpp
│   │   │   │   │   │   │   ├── catch_config.hpp
│   │   │   │   │   │   │   ├── catch_console_colour.cpp
│   │   │   │   │   │   │   ├── catch_console_colour.h
│   │   │   │   │   │   │   ├── catch_context.cpp
│   │   │   │   │   │   │   ├── catch_context.h
│   │   │   │   │   │   │   ├── catch_debug_console.cpp
│   │   │   │   │   │   │   ├── catch_debug_console.h
│   │   │   │   │   │   │   ├── catch_debugger.cpp
│   │   │   │   │   │   │   ├── catch_debugger.h
│   │   │   │   │   │   │   ├── catch_decomposer.cpp
│   │   │   │   │   │   │   ├── catch_decomposer.h
│   │   │   │   │   │   │   ├── catch_default_main.hpp
│   │   │   │   │   │   │   ├── catch_enforce.cpp
│   │   │   │   │   │   │   ├── catch_enforce.h
│   │   │   │   │   │   │   ├── catch_enum_values_registry.cpp
│   │   │   │   │   │   │   ├── catch_enum_values_registry.h
│   │   │   │   │   │   │   ├── catch_errno_guard.cpp
│   │   │   │   │   │   │   ├── catch_errno_guard.h
│   │   │   │   │   │   │   ├── catch_exception_translator_registry.cpp
│   │   │   │   │   │   │   ├── catch_exception_translator_registry.h
│   │   │   │   │   │   │   ├── catch_external_interfaces.h
│   │   │   │   │   │   │   ├── catch_fatal_condition.cpp
│   │   │   │   │   │   │   ├── catch_fatal_condition.h
│   │   │   │   │   │   │   ├── catch_generators.cpp
│   │   │   │   │   │   │   ├── catch_generators.hpp
│   │   │   │   │   │   │   ├── catch_generators_generic.hpp
│   │   │   │   │   │   │   ├── catch_generators_specific.hpp
│   │   │   │   │   │   │   ├── catch_impl.hpp
│   │   │   │   │   │   │   ├── catch_interfaces_capture.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_capture.h
│   │   │   │   │   │   │   ├── catch_interfaces_config.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_config.h
│   │   │   │   │   │   │   ├── catch_interfaces_enum_values_registry.h
│   │   │   │   │   │   │   ├── catch_interfaces_exception.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_exception.h
│   │   │   │   │   │   │   ├── catch_interfaces_generatortracker.h
│   │   │   │   │   │   │   ├── catch_interfaces_registry_hub.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_registry_hub.h
│   │   │   │   │   │   │   ├── catch_interfaces_reporter.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_reporter.h
│   │   │   │   │   │   │   ├── catch_interfaces_runner.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_runner.h
│   │   │   │   │   │   │   ├── catch_interfaces_tag_alias_registry.h
│   │   │   │   │   │   │   ├── catch_interfaces_testcase.cpp
│   │   │   │   │   │   │   ├── catch_interfaces_testcase.h
│   │   │   │   │   │   │   ├── catch_leak_detector.cpp
│   │   │   │   │   │   │   ├── catch_leak_detector.h
│   │   │   │   │   │   │   ├── catch_list.cpp
│   │   │   │   │   │   │   ├── catch_list.h
│   │   │   │   │   │   │   ├── catch_matchers.cpp
│   │   │   │   │   │   │   ├── catch_matchers.h
│   │   │   │   │   │   │   ├── catch_matchers_exception.cpp
│   │   │   │   │   │   │   ├── catch_matchers_exception.hpp
│   │   │   │   │   │   │   ├── catch_matchers_floating.cpp
│   │   │   │   │   │   │   ├── catch_matchers_floating.h
│   │   │   │   │   │   │   ├── catch_matchers_generic.cpp
│   │   │   │   │   │   │   ├── catch_matchers_generic.hpp
│   │   │   │   │   │   │   ├── catch_matchers_string.cpp
│   │   │   │   │   │   │   ├── catch_matchers_string.h
│   │   │   │   │   │   │   ├── catch_matchers_vector.h
│   │   │   │   │   │   │   ├── catch_message.cpp
│   │   │   │   │   │   │   ├── catch_message.h
│   │   │   │   │   │   │   ├── catch_meta.hpp
│   │   │   │   │   │   │   ├── catch_objc.hpp
│   │   │   │   │   │   │   ├── catch_objc_arc.hpp
│   │   │   │   │   │   │   ├── catch_option.hpp
│   │   │   │   │   │   │   ├── catch_output_redirect.cpp
│   │   │   │   │   │   │   ├── catch_output_redirect.h
│   │   │   │   │   │   │   ├── catch_platform.h
│   │   │   │   │   │   │   ├── catch_polyfills.cpp
│   │   │   │   │   │   │   ├── catch_polyfills.hpp
│   │   │   │   │   │   │   ├── catch_preprocessor.hpp
│   │   │   │   │   │   │   ├── catch_random_number_generator.cpp
│   │   │   │   │   │   │   ├── catch_random_number_generator.h
│   │   │   │   │   │   │   ├── catch_reenable_warnings.h
│   │   │   │   │   │   │   ├── catch_registry_hub.cpp
│   │   │   │   │   │   │   ├── catch_reporter_registrars.hpp
│   │   │   │   │   │   │   ├── catch_reporter_registry.cpp
│   │   │   │   │   │   │   ├── catch_reporter_registry.h
│   │   │   │   │   │   │   ├── catch_result_type.cpp
│   │   │   │   │   │   │   ├── catch_result_type.h
│   │   │   │   │   │   │   ├── catch_run_context.cpp
│   │   │   │   │   │   │   ├── catch_run_context.h
│   │   │   │   │   │   │   ├── catch_section.cpp
│   │   │   │   │   │   │   ├── catch_section.h
│   │   │   │   │   │   │   ├── catch_section_info.cpp
│   │   │   │   │   │   │   ├── catch_section_info.h
│   │   │   │   │   │   │   ├── catch_session.cpp
│   │   │   │   │   │   │   ├── catch_session.h
│   │   │   │   │   │   │   ├── catch_singletons.cpp
│   │   │   │   │   │   │   ├── catch_singletons.hpp
│   │   │   │   │   │   │   ├── catch_startup_exception_registry.cpp
│   │   │   │   │   │   │   ├── catch_startup_exception_registry.h
│   │   │   │   │   │   │   ├── catch_stream.cpp
│   │   │   │   │   │   │   ├── catch_stream.h
│   │   │   │   │   │   │   ├── catch_string_manip.cpp
│   │   │   │   │   │   │   ├── catch_string_manip.h
│   │   │   │   │   │   │   ├── catch_stringref.cpp
│   │   │   │   │   │   │   ├── catch_stringref.h
│   │   │   │   │   │   │   ├── catch_suppress_warnings.h
│   │   │   │   │   │   │   ├── catch_tag_alias.cpp
│   │   │   │   │   │   │   ├── catch_tag_alias.h
│   │   │   │   │   │   │   ├── catch_tag_alias_autoregistrar.cpp
│   │   │   │   │   │   │   ├── catch_tag_alias_autoregistrar.h
│   │   │   │   │   │   │   ├── catch_tag_alias_registry.cpp
│   │   │   │   │   │   │   ├── catch_tag_alias_registry.h
│   │   │   │   │   │   │   ├── catch_test_case_info.cpp
│   │   │   │   │   │   │   ├── catch_test_case_info.h
│   │   │   │   │   │   │   ├── catch_test_case_registry_impl.cpp
│   │   │   │   │   │   │   ├── catch_test_case_registry_impl.h
│   │   │   │   │   │   │   ├── catch_test_case_tracker.cpp
│   │   │   │   │   │   │   ├── catch_test_case_tracker.h
│   │   │   │   │   │   │   ├── catch_test_registry.cpp
│   │   │   │   │   │   │   ├── catch_test_registry.h
│   │   │   │   │   │   │   ├── catch_test_spec.cpp
│   │   │   │   │   │   │   ├── catch_test_spec.h
│   │   │   │   │   │   │   ├── catch_test_spec_parser.cpp
│   │   │   │   │   │   │   ├── catch_test_spec_parser.h
│   │   │   │   │   │   │   ├── catch_text.h
│   │   │   │   │   │   │   ├── catch_timer.cpp
│   │   │   │   │   │   │   ├── catch_timer.h
│   │   │   │   │   │   │   ├── catch_to_string.hpp
│   │   │   │   │   │   │   ├── catch_tostring.cpp
│   │   │   │   │   │   │   ├── catch_tostring.h
│   │   │   │   │   │   │   ├── catch_totals.cpp
│   │   │   │   │   │   │   ├── catch_totals.h
│   │   │   │   │   │   │   ├── catch_uncaught_exceptions.cpp
│   │   │   │   │   │   │   ├── catch_uncaught_exceptions.h
│   │   │   │   │   │   │   ├── catch_user_interfaces.h
│   │   │   │   │   │   │   ├── catch_version.cpp
│   │   │   │   │   │   │   ├── catch_version.h
│   │   │   │   │   │   │   ├── catch_wildcard_pattern.cpp
│   │   │   │   │   │   │   ├── catch_wildcard_pattern.h
│   │   │   │   │   │   │   ├── catch_windows_h_proxy.h
│   │   │   │   │   │   │   ├── catch_xmlwriter.cpp
│   │   │   │   │   │   │   └── catch_xmlwriter.h
│   │   │   │   │   │   └── reporters/
│   │   │   │   │   │       ├── catch_reporter_automake.hpp
│   │   │   │   │   │       ├── catch_reporter_bases.cpp
│   │   │   │   │   │       ├── catch_reporter_bases.hpp
│   │   │   │   │   │       ├── catch_reporter_compact.cpp
│   │   │   │   │   │       ├── catch_reporter_compact.h
│   │   │   │   │   │       ├── catch_reporter_console.cpp
│   │   │   │   │   │       ├── catch_reporter_console.h
│   │   │   │   │   │       ├── catch_reporter_junit.cpp
│   │   │   │   │   │       ├── catch_reporter_junit.h
│   │   │   │   │   │       ├── catch_reporter_listening.cpp
│   │   │   │   │   │       ├── catch_reporter_listening.h
│   │   │   │   │   │       ├── catch_reporter_sonarqube.hpp
│   │   │   │   │   │       ├── catch_reporter_tap.hpp
│   │   │   │   │   │       ├── catch_reporter_teamcity.hpp
│   │   │   │   │   │       ├── catch_reporter_xml.cpp
│   │   │   │   │   │       └── catch_reporter_xml.h
│   │   │   │   │   ├── misc/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── appveyorBuildConfigurationScript.bat
│   │   │   │   │   │   ├── appveyorMergeCoverageScript.py
│   │   │   │   │   │   ├── appveyorTestRunScript.bat
│   │   │   │   │   │   ├── coverage-helper.cpp
│   │   │   │   │   │   └── installOpenCppCoverage.ps1
│   │   │   │   │   ├── projects/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── ExtraTests/
│   │   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   │   ├── ToDo.txt
│   │   │   │   │   │   │   ├── X01-PrefixedMacros.cpp
│   │   │   │   │   │   │   ├── X02-DisabledMacros.cpp
│   │   │   │   │   │   │   ├── X03-DisabledExceptions-DefaultHandler.cpp
│   │   │   │   │   │   │   ├── X04-DisabledExceptions-CustomHandler.cpp
│   │   │   │   │   │   │   ├── X10-FallbackStringifier.cpp
│   │   │   │   │   │   │   ├── X11-DisableStringification.cpp
│   │   │   │   │   │   │   ├── X20-BenchmarkingMacros.cpp
│   │   │   │   │   │   │   └── X90-WindowsHeaderInclusion.cpp
│   │   │   │   │   │   ├── SelfTest/
│   │   │   │   │   │   │   ├── Baselines/
│   │   │   │   │   │   │   │   ├── automake.std.approved.txt
│   │   │   │   │   │   │   │   ├── compact.sw.approved.txt
│   │   │   │   │   │   │   │   ├── console.std.approved.txt
│   │   │   │   │   │   │   │   ├── console.sw.approved.txt
│   │   │   │   │   │   │   │   ├── console.swa4.approved.txt
│   │   │   │   │   │   │   │   ├── junit.sw.approved.txt
│   │   │   │   │   │   │   │   ├── sonarqube.sw.approved.txt
│   │   │   │   │   │   │   │   └── xml.sw.approved.txt
│   │   │   │   │   │   │   ├── CompileTimePerfTests/
│   │   │   │   │   │   │   │   ├── 10.tests.cpp
│   │   │   │   │   │   │   │   ├── 100.tests.cpp
│   │   │   │   │   │   │   │   └── All.tests.cpp
│   │   │   │   │   │   │   ├── IntrospectiveTests/
│   │   │   │   │   │   │   │   ├── CmdLine.tests.cpp
│   │   │   │   │   │   │   │   ├── Details.tests.cpp
│   │   │   │   │   │   │   │   ├── GeneratorsImpl.tests.cpp
│   │   │   │   │   │   │   │   ├── InternalBenchmark.tests.cpp
│   │   │   │   │   │   │   │   ├── PartTracker.tests.cpp
│   │   │   │   │   │   │   │   ├── RandomNumberGeneration.tests.cpp
│   │   │   │   │   │   │   │   ├── String.tests.cpp
│   │   │   │   │   │   │   │   ├── StringManip.tests.cpp
│   │   │   │   │   │   │   │   ├── Tag.tests.cpp
│   │   │   │   │   │   │   │   ├── ToString.tests.cpp
│   │   │   │   │   │   │   │   └── Xml.tests.cpp
│   │   │   │   │   │   │   ├── Misc/
│   │   │   │   │   │   │   │   ├── invalid-test-names.input
│   │   │   │   │   │   │   │   ├── plain-old-tests.input
│   │   │   │   │   │   │   │   └── special-characters-in-file.input
│   │   │   │   │   │   │   ├── SurrogateCpps/
│   │   │   │   │   │   │   │   ├── catch_console_colour.cpp
│   │   │   │   │   │   │   │   ├── catch_debugger.cpp
│   │   │   │   │   │   │   │   ├── catch_interfaces_reporter.cpp
│   │   │   │   │   │   │   │   ├── catch_option.cpp
│   │   │   │   │   │   │   │   ├── catch_stream.cpp
│   │   │   │   │   │   │   │   ├── catch_test_case_tracker.cpp
│   │   │   │   │   │   │   │   ├── catch_test_spec.cpp
│   │   │   │   │   │   │   │   └── catch_xmlwriter.cpp
│   │   │   │   │   │   │   ├── TestMain.cpp
│   │   │   │   │   │   │   ├── UsageTests/
│   │   │   │   │   │   │   │   ├── Approx.tests.cpp
│   │   │   │   │   │   │   │   ├── BDD.tests.cpp
│   │   │   │   │   │   │   │   ├── Benchmark.tests.cpp
│   │   │   │   │   │   │   │   ├── Class.tests.cpp
│   │   │   │   │   │   │   │   ├── Compilation.tests.cpp
│   │   │   │   │   │   │   │   ├── Condition.tests.cpp
│   │   │   │   │   │   │   │   ├── Decomposition.tests.cpp
│   │   │   │   │   │   │   │   ├── EnumToString.tests.cpp
│   │   │   │   │   │   │   │   ├── Exception.tests.cpp
│   │   │   │   │   │   │   │   ├── Generators.tests.cpp
│   │   │   │   │   │   │   │   ├── Matchers.tests.cpp
│   │   │   │   │   │   │   │   ├── Message.tests.cpp
│   │   │   │   │   │   │   │   ├── Misc.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringByte.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringChrono.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringGeneral.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringOptional.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringPair.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringTuple.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringVariant.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringVector.tests.cpp
│   │   │   │   │   │   │   │   ├── ToStringWhich.tests.cpp
│   │   │   │   │   │   │   │   ├── Tricky.tests.cpp
│   │   │   │   │   │   │   │   └── VariadicMacros.tests.cpp
│   │   │   │   │   │   │   └── WarnAboutNoTests.cmake
│   │   │   │   │   │   └── XCode/
│   │   │   │   │   │       └── OCTest/
│   │   │   │   │   │           ├── OCTest/
│   │   │   │   │   │           │   ├── CatchOCTestCase.h
│   │   │   │   │   │           │   ├── CatchOCTestCase.mm
│   │   │   │   │   │           │   ├── Main.mm
│   │   │   │   │   │           │   ├── OCTest.1
│   │   │   │   │   │           │   ├── OCTest.mm
│   │   │   │   │   │           │   ├── TestObj.h
│   │   │   │   │   │           │   └── TestObj.m
│   │   │   │   │   │           ├── OCTest.xcodeproj/
│   │   │   │   │   │           │   ├── project.pbxproj
│   │   │   │   │   │           │   └── project.xcworkspace/
│   │   │   │   │   │           │       ├── contents.xcworkspacedata
│   │   │   │   │   │           │       └── xcshareddata/
│   │   │   │   │   │           │           └── IDEWorkspaceChecks.plist
│   │   │   │   │   │           └── catch_objc_impl.mm
│   │   │   │   │   ├── scripts/
│   │   │   │   │   │   ├── approvalTests.py
│   │   │   │   │   │   ├── approve.py
│   │   │   │   │   │   ├── benchmarkCompile.py
│   │   │   │   │   │   ├── benchmarkRunner.py
│   │   │   │   │   │   ├── developBuild.py
│   │   │   │   │   │   ├── embed.py
│   │   │   │   │   │   ├── embedClara.py
│   │   │   │   │   │   ├── extractFeaturesFromReleaseNotes.py
│   │   │   │   │   │   ├── fixWhitespace.py
│   │   │   │   │   │   ├── generateSingleHeader.py
│   │   │   │   │   │   ├── majorRelease.py
│   │   │   │   │   │   ├── minorRelease.py
│   │   │   │   │   │   ├── patchRelease.py
│   │   │   │   │   │   ├── releaseCommon.py
│   │   │   │   │   │   ├── releaseNotes.py
│   │   │   │   │   │   ├── scriptCommon.py
│   │   │   │   │   │   ├── updateDocumentToC.py
│   │   │   │   │   │   └── updateWandbox.py
│   │   │   │   │   ├── single_include/
│   │   │   │   │   │   └── catch2/
│   │   │   │   │   │       ├── catch.hpp
│   │   │   │   │   │       ├── catch_reporter_automake.hpp
│   │   │   │   │   │       ├── catch_reporter_sonarqube.hpp
│   │   │   │   │   │       ├── catch_reporter_tap.hpp
│   │   │   │   │   │       └── catch_reporter_teamcity.hpp
│   │   │   │   │   └── third_party/
│   │   │   │   │       └── clara.hpp
│   │   │   │   └── libsdptransform/
│   │   │   │       ├── .gitignore
│   │   │   │       ├── .travis.yml
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── LICENSE
│   │   │   │       ├── README.md
│   │   │   │       ├── doc/
│   │   │   │       │   ├── Grammar.md
│   │   │   │       │   └── index.md
│   │   │   │       ├── include/
│   │   │   │       │   ├── json.hpp
│   │   │   │       │   └── sdptransform.hpp
│   │   │   │       ├── readme-helper/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   └── readme.cpp
│   │   │   │       ├── scripts/
│   │   │   │       │   ├── generate-readme-code.sh
│   │   │   │       │   ├── get-dep.sh
│   │   │   │       │   └── test.sh
│   │   │   │       ├── src/
│   │   │   │       │   ├── grammar.cpp
│   │   │   │       │   ├── parser.cpp
│   │   │   │       │   └── writer.cpp
│   │   │   │       └── test/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── data/
│   │   │   │           │   ├── aes67.sdp
│   │   │   │           │   ├── alac.sdp
│   │   │   │           │   ├── extmap-encrypt.sdp
│   │   │   │           │   ├── hacky.sdp
│   │   │   │           │   ├── icelite.sdp
│   │   │   │           │   ├── invalid.sdp
│   │   │   │           │   ├── jsep.sdp
│   │   │   │           │   ├── jssip.sdp
│   │   │   │           │   ├── multicastttl.sdp
│   │   │   │           │   ├── normal.sdp
│   │   │   │           │   ├── onvif.sdp
│   │   │   │           │   ├── simulcast.sdp
│   │   │   │           │   ├── ssrc.sdp
│   │   │   │           │   ├── st2022-6.sdp
│   │   │   │           │   └── st2110-20.sdp
│   │   │   │           ├── include/
│   │   │   │           │   ├── catch.hpp
│   │   │   │           │   └── helpers.hpp
│   │   │   │           ├── parse.test.cpp
│   │   │   │           └── tests.cpp
│   │   │   ├── gulpfile.js
│   │   │   ├── include/
│   │   │   │   ├── Consumer.hpp
│   │   │   │   ├── DataConsumer.hpp
│   │   │   │   ├── DataProducer.hpp
│   │   │   │   ├── Device.hpp
│   │   │   │   ├── Handler.hpp
│   │   │   │   ├── Logger.hpp
│   │   │   │   ├── MediaSoupClientErrors.hpp
│   │   │   │   ├── PeerConnection.hpp
│   │   │   │   ├── Producer.hpp
│   │   │   │   ├── Transport.hpp
│   │   │   │   ├── Utils.hpp
│   │   │   │   ├── mediasoupclient.hpp
│   │   │   │   ├── ortc.hpp
│   │   │   │   ├── scalabilityMode.hpp
│   │   │   │   ├── sdp/
│   │   │   │   │   ├── MediaSection.hpp
│   │   │   │   │   ├── RemoteSdp.hpp
│   │   │   │   │   └── Utils.hpp
│   │   │   │   └── version.hpp
│   │   │   ├── package.json
│   │   │   ├── scripts/
│   │   │   │   ├── clang-tidy.py
│   │   │   │   ├── get-dep.sh
│   │   │   │   ├── test.sh
│   │   │   │   └── tidy.sh
│   │   │   ├── src/
│   │   │   │   ├── Consumer.cpp
│   │   │   │   ├── DataConsumer.cpp
│   │   │   │   ├── DataProducer.cpp
│   │   │   │   ├── Device.cpp
│   │   │   │   ├── Handler.cpp
│   │   │   │   ├── Logger.cpp
│   │   │   │   ├── PeerConnection.cpp
│   │   │   │   ├── Producer.cpp
│   │   │   │   ├── Transport.cpp
│   │   │   │   ├── mediasoupclient.cpp
│   │   │   │   ├── ortc.cpp
│   │   │   │   ├── scalabilityMode.cpp
│   │   │   │   └── sdp/
│   │   │   │       ├── MediaSection.cpp
│   │   │   │       ├── RemoteSdp.cpp
│   │   │   │       └── Utils.cpp
│   │   │   ├── test/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── Info.plist
│   │   │   │   ├── data/
│   │   │   │   │   ├── audio_video.sdp
│   │   │   │   │   ├── jssip.sdp
│   │   │   │   │   └── webrtc.sdp
│   │   │   │   ├── deps/
│   │   │   │   │   └── libwebrtc/
│   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │       └── pc/
│   │   │   │   │           └── test/
│   │   │   │   │               ├── fake_audio_capture_module.cc
│   │   │   │   │               └── fake_audio_capture_module.h
│   │   │   │   ├── include/
│   │   │   │   │   ├── FakeTransportListener.hpp
│   │   │   │   │   ├── MediaStreamTrackFactory.hpp
│   │   │   │   │   ├── fakeParameters.hpp
│   │   │   │   │   └── helpers.hpp
│   │   │   │   └── src/
│   │   │   │       ├── Device.test.cpp
│   │   │   │       ├── Handler.test.cpp
│   │   │   │       ├── MediaStreamTrackFactory.cpp
│   │   │   │       ├── PeerConnection.test.cpp
│   │   │   │       ├── RemoteSdp.test.cpp
│   │   │   │       ├── SdpUtils.test.cpp
│   │   │   │       ├── fakeParameters.cpp
│   │   │   │       ├── mediasoupclient.test.cpp
│   │   │   │       ├── ortc.test.cpp
│   │   │   │       ├── scalabilityMode.test.cpp
│   │   │   │       └── tests.cpp
│   │   │   └── version.hpp.in
│   │   └── webrtc/
│   │       ├── lib/
│   │       │   ├── .gitattributes
│   │       │   ├── README.md
│   │       │   ├── arm64-v8a/
│   │       │   │   └── libwebrtc.a
│   │       │   ├── armeabi-v7a/
│   │       │   │   └── libwebrtc.a
│   │       │   ├── libwebrtc.jar
│   │       │   ├── x86/
│   │       │   │   └── libwebrtc.a
│   │       │   └── x86_64/
│   │       │       └── libwebrtc.a
│   │       └── src/
│   │           ├── .clang-format
│   │           ├── .git-blame-ignore-revs
│   │           ├── .gitignore
│   │           ├── .gn
│   │           ├── .vpython
│   │           ├── AUTHORS
│   │           ├── BUILD.gn
│   │           ├── CODE_OF_CONDUCT.md
│   │           ├── DEPS
│   │           ├── DIR_METADATA
│   │           ├── ENG_REVIEW_OWNERS
│   │           ├── LICENSE
│   │           ├── OWNERS
│   │           ├── PATENTS
│   │           ├── PRESUBMIT.py
│   │           ├── README.chromium
│   │           ├── README.md
│   │           ├── WATCHLISTS
│   │           ├── api/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── README.md
│   │           │   ├── adaptation/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── resource.cc
│   │           │   │   └── resource.h
│   │           │   ├── array_view.h
│   │           │   ├── array_view_unittest.cc
│   │           │   ├── async_dns_resolver.h
│   │           │   ├── async_resolver_factory.h
│   │           │   ├── audio/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_frame.cc
│   │           │   │   ├── audio_frame.h
│   │           │   │   ├── audio_frame_processor.h
│   │           │   │   ├── audio_mixer.h
│   │           │   │   ├── channel_layout.cc
│   │           │   │   ├── channel_layout.h
│   │           │   │   ├── echo_canceller3_config.cc
│   │           │   │   ├── echo_canceller3_config.h
│   │           │   │   ├── echo_canceller3_config_json.cc
│   │           │   │   ├── echo_canceller3_config_json.h
│   │           │   │   ├── echo_canceller3_factory.cc
│   │           │   │   ├── echo_canceller3_factory.h
│   │           │   │   ├── echo_control.h
│   │           │   │   ├── echo_detector_creator.cc
│   │           │   │   ├── echo_detector_creator.h
│   │           │   │   └── test/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── audio_frame_unittest.cc
│   │           │   │       ├── echo_canceller3_config_json_unittest.cc
│   │           │   │       └── echo_canceller3_config_unittest.cc
│   │           │   ├── audio_codecs/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── L16/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_L16.cc
│   │           │   │   │   ├── audio_decoder_L16.h
│   │           │   │   │   ├── audio_encoder_L16.cc
│   │           │   │   │   └── audio_encoder_L16.h
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_codec_pair_id.cc
│   │           │   │   ├── audio_codec_pair_id.h
│   │           │   │   ├── audio_decoder.cc
│   │           │   │   ├── audio_decoder.h
│   │           │   │   ├── audio_decoder_factory.h
│   │           │   │   ├── audio_decoder_factory_template.h
│   │           │   │   ├── audio_encoder.cc
│   │           │   │   ├── audio_encoder.h
│   │           │   │   ├── audio_encoder_factory.h
│   │           │   │   ├── audio_encoder_factory_template.h
│   │           │   │   ├── audio_format.cc
│   │           │   │   ├── audio_format.h
│   │           │   │   ├── builtin_audio_decoder_factory.cc
│   │           │   │   ├── builtin_audio_decoder_factory.h
│   │           │   │   ├── builtin_audio_encoder_factory.cc
│   │           │   │   ├── builtin_audio_encoder_factory.h
│   │           │   │   ├── g711/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_g711.cc
│   │           │   │   │   ├── audio_decoder_g711.h
│   │           │   │   │   ├── audio_encoder_g711.cc
│   │           │   │   │   └── audio_encoder_g711.h
│   │           │   │   ├── g722/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_g722.cc
│   │           │   │   │   ├── audio_decoder_g722.h
│   │           │   │   │   ├── audio_encoder_g722.cc
│   │           │   │   │   ├── audio_encoder_g722.h
│   │           │   │   │   └── audio_encoder_g722_config.h
│   │           │   │   ├── ilbc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_ilbc.cc
│   │           │   │   │   ├── audio_decoder_ilbc.h
│   │           │   │   │   ├── audio_encoder_ilbc.cc
│   │           │   │   │   ├── audio_encoder_ilbc.h
│   │           │   │   │   └── audio_encoder_ilbc_config.h
│   │           │   │   ├── isac/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_isac.h
│   │           │   │   │   ├── audio_decoder_isac_fix.cc
│   │           │   │   │   ├── audio_decoder_isac_fix.h
│   │           │   │   │   ├── audio_decoder_isac_float.cc
│   │           │   │   │   ├── audio_decoder_isac_float.h
│   │           │   │   │   ├── audio_encoder_isac.h
│   │           │   │   │   ├── audio_encoder_isac_fix.cc
│   │           │   │   │   ├── audio_encoder_isac_fix.h
│   │           │   │   │   ├── audio_encoder_isac_float.cc
│   │           │   │   │   └── audio_encoder_isac_float.h
│   │           │   │   ├── opus/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_decoder_multi_channel_opus.cc
│   │           │   │   │   ├── audio_decoder_multi_channel_opus.h
│   │           │   │   │   ├── audio_decoder_multi_channel_opus_config.h
│   │           │   │   │   ├── audio_decoder_opus.cc
│   │           │   │   │   ├── audio_decoder_opus.h
│   │           │   │   │   ├── audio_encoder_multi_channel_opus.cc
│   │           │   │   │   ├── audio_encoder_multi_channel_opus.h
│   │           │   │   │   ├── audio_encoder_multi_channel_opus_config.cc
│   │           │   │   │   ├── audio_encoder_multi_channel_opus_config.h
│   │           │   │   │   ├── audio_encoder_opus.cc
│   │           │   │   │   ├── audio_encoder_opus.h
│   │           │   │   │   ├── audio_encoder_opus_config.cc
│   │           │   │   │   └── audio_encoder_opus_config.h
│   │           │   │   ├── opus_audio_decoder_factory.cc
│   │           │   │   ├── opus_audio_decoder_factory.h
│   │           │   │   ├── opus_audio_encoder_factory.cc
│   │           │   │   ├── opus_audio_encoder_factory.h
│   │           │   │   └── test/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── audio_decoder_factory_template_unittest.cc
│   │           │   │       └── audio_encoder_factory_template_unittest.cc
│   │           │   ├── audio_options.cc
│   │           │   ├── audio_options.h
│   │           │   ├── call/
│   │           │   │   ├── audio_sink.h
│   │           │   │   ├── bitrate_allocation.h
│   │           │   │   ├── call_factory_interface.h
│   │           │   │   ├── transport.cc
│   │           │   │   └── transport.h
│   │           │   ├── candidate.cc
│   │           │   ├── candidate.h
│   │           │   ├── create_peerconnection_factory.cc
│   │           │   ├── create_peerconnection_factory.h
│   │           │   ├── crypto/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── crypto_options.cc
│   │           │   │   ├── crypto_options.h
│   │           │   │   ├── frame_decryptor_interface.h
│   │           │   │   └── frame_encryptor_interface.h
│   │           │   ├── crypto_params.h
│   │           │   ├── data_channel_interface.cc
│   │           │   ├── data_channel_interface.h
│   │           │   ├── dtls_transport_interface.cc
│   │           │   ├── dtls_transport_interface.h
│   │           │   ├── dtmf_sender_interface.h
│   │           │   ├── fec_controller.h
│   │           │   ├── fec_controller_override.h
│   │           │   ├── frame_transformer_interface.h
│   │           │   ├── function_view.h
│   │           │   ├── function_view_unittest.cc
│   │           │   ├── g3doc/
│   │           │   │   ├── index.md
│   │           │   │   └── threading_design.md
│   │           │   ├── ice_transport_factory.cc
│   │           │   ├── ice_transport_factory.h
│   │           │   ├── ice_transport_interface.h
│   │           │   ├── jsep.cc
│   │           │   ├── jsep.h
│   │           │   ├── jsep_ice_candidate.cc
│   │           │   ├── jsep_ice_candidate.h
│   │           │   ├── jsep_session_description.h
│   │           │   ├── media_stream_interface.cc
│   │           │   ├── media_stream_interface.h
│   │           │   ├── media_stream_track.h
│   │           │   ├── media_types.cc
│   │           │   ├── media_types.h
│   │           │   ├── neteq/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── custom_neteq_factory.cc
│   │           │   │   ├── custom_neteq_factory.h
│   │           │   │   ├── default_neteq_controller_factory.cc
│   │           │   │   ├── default_neteq_controller_factory.h
│   │           │   │   ├── neteq.cc
│   │           │   │   ├── neteq.h
│   │           │   │   ├── neteq_controller.h
│   │           │   │   ├── neteq_controller_factory.h
│   │           │   │   ├── neteq_factory.h
│   │           │   │   ├── tick_timer.cc
│   │           │   │   ├── tick_timer.h
│   │           │   │   └── tick_timer_unittest.cc
│   │           │   ├── network_state_predictor.h
│   │           │   ├── notifier.h
│   │           │   ├── numerics/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── samples_stats_counter.cc
│   │           │   │   ├── samples_stats_counter.h
│   │           │   │   └── samples_stats_counter_unittest.cc
│   │           │   ├── packet_socket_factory.h
│   │           │   ├── peer_connection_interface.cc
│   │           │   ├── peer_connection_interface.h
│   │           │   ├── priority.h
│   │           │   ├── ref_counted_base.h
│   │           │   ├── rtc_error.cc
│   │           │   ├── rtc_error.h
│   │           │   ├── rtc_error_unittest.cc
│   │           │   ├── rtc_event_log/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── rtc_event.cc
│   │           │   │   ├── rtc_event.h
│   │           │   │   ├── rtc_event_log.cc
│   │           │   │   ├── rtc_event_log.h
│   │           │   │   ├── rtc_event_log_factory.cc
│   │           │   │   ├── rtc_event_log_factory.h
│   │           │   │   └── rtc_event_log_factory_interface.h
│   │           │   ├── rtc_event_log_output.h
│   │           │   ├── rtc_event_log_output_file.cc
│   │           │   ├── rtc_event_log_output_file.h
│   │           │   ├── rtc_event_log_output_file_unittest.cc
│   │           │   ├── rtp_headers.cc
│   │           │   ├── rtp_headers.h
│   │           │   ├── rtp_packet_info.cc
│   │           │   ├── rtp_packet_info.h
│   │           │   ├── rtp_packet_info_unittest.cc
│   │           │   ├── rtp_packet_infos.h
│   │           │   ├── rtp_packet_infos_unittest.cc
│   │           │   ├── rtp_parameters.cc
│   │           │   ├── rtp_parameters.h
│   │           │   ├── rtp_parameters_unittest.cc
│   │           │   ├── rtp_receiver_interface.cc
│   │           │   ├── rtp_receiver_interface.h
│   │           │   ├── rtp_sender_interface.cc
│   │           │   ├── rtp_sender_interface.h
│   │           │   ├── rtp_transceiver_direction.h
│   │           │   ├── rtp_transceiver_interface.cc
│   │           │   ├── rtp_transceiver_interface.h
│   │           │   ├── scoped_refptr.h
│   │           │   ├── scoped_refptr_unittest.cc
│   │           │   ├── sctp_transport_interface.cc
│   │           │   ├── sctp_transport_interface.h
│   │           │   ├── sequence_checker.h
│   │           │   ├── sequence_checker_unittest.cc
│   │           │   ├── set_local_description_observer_interface.h
│   │           │   ├── set_remote_description_observer_interface.h
│   │           │   ├── stats/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── rtc_stats.h
│   │           │   │   ├── rtc_stats_collector_callback.h
│   │           │   │   ├── rtc_stats_report.h
│   │           │   │   └── rtcstats_objects.h
│   │           │   ├── stats_types.cc
│   │           │   ├── stats_types.h
│   │           │   ├── task_queue/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── default_task_queue_factory.h
│   │           │   │   ├── default_task_queue_factory_gcd.cc
│   │           │   │   ├── default_task_queue_factory_libevent.cc
│   │           │   │   ├── default_task_queue_factory_stdlib.cc
│   │           │   │   ├── default_task_queue_factory_unittest.cc
│   │           │   │   ├── default_task_queue_factory_win.cc
│   │           │   │   ├── queued_task.h
│   │           │   │   ├── task_queue_base.cc
│   │           │   │   ├── task_queue_base.h
│   │           │   │   ├── task_queue_factory.h
│   │           │   │   ├── task_queue_test.cc
│   │           │   │   └── task_queue_test.h
│   │           │   ├── test/
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_quality_analyzer_interface.h
│   │           │   │   ├── audioproc_float.cc
│   │           │   │   ├── audioproc_float.h
│   │           │   │   ├── compile_all_headers.cc
│   │           │   │   ├── create_frame_generator.cc
│   │           │   │   ├── create_frame_generator.h
│   │           │   │   ├── create_network_emulation_manager.cc
│   │           │   │   ├── create_network_emulation_manager.h
│   │           │   │   ├── create_peer_connection_quality_test_frame_generator.cc
│   │           │   │   ├── create_peer_connection_quality_test_frame_generator.h
│   │           │   │   ├── create_peerconnection_quality_test_fixture.cc
│   │           │   │   ├── create_peerconnection_quality_test_fixture.h
│   │           │   │   ├── create_simulcast_test_fixture.cc
│   │           │   │   ├── create_simulcast_test_fixture.h
│   │           │   │   ├── create_time_controller.cc
│   │           │   │   ├── create_time_controller.h
│   │           │   │   ├── create_time_controller_unittest.cc
│   │           │   │   ├── create_video_quality_test_fixture.cc
│   │           │   │   ├── create_video_quality_test_fixture.h
│   │           │   │   ├── create_videocodec_test_fixture.cc
│   │           │   │   ├── create_videocodec_test_fixture.h
│   │           │   │   ├── dummy_peer_connection.h
│   │           │   │   ├── fake_frame_decryptor.cc
│   │           │   │   ├── fake_frame_decryptor.h
│   │           │   │   ├── fake_frame_encryptor.cc
│   │           │   │   ├── fake_frame_encryptor.h
│   │           │   │   ├── frame_generator_interface.cc
│   │           │   │   ├── frame_generator_interface.h
│   │           │   │   ├── mock_async_dns_resolver.h
│   │           │   │   ├── mock_audio_mixer.h
│   │           │   │   ├── mock_audio_sink.h
│   │           │   │   ├── mock_data_channel.h
│   │           │   │   ├── mock_fec_controller_override.h
│   │           │   │   ├── mock_frame_decryptor.h
│   │           │   │   ├── mock_frame_encryptor.h
│   │           │   │   ├── mock_media_stream_interface.h
│   │           │   │   ├── mock_peer_connection_factory_interface.h
│   │           │   │   ├── mock_peerconnectioninterface.h
│   │           │   │   ├── mock_rtp_transceiver.h
│   │           │   │   ├── mock_rtpreceiver.h
│   │           │   │   ├── mock_rtpsender.h
│   │           │   │   ├── mock_transformable_video_frame.h
│   │           │   │   ├── mock_video_bitrate_allocator.h
│   │           │   │   ├── mock_video_bitrate_allocator_factory.h
│   │           │   │   ├── mock_video_decoder.h
│   │           │   │   ├── mock_video_decoder_factory.h
│   │           │   │   ├── mock_video_encoder.h
│   │           │   │   ├── mock_video_encoder_factory.h
│   │           │   │   ├── mock_video_track.h
│   │           │   │   ├── neteq_simulator.cc
│   │           │   │   ├── neteq_simulator.h
│   │           │   │   ├── neteq_simulator_factory.cc
│   │           │   │   ├── neteq_simulator_factory.h
│   │           │   │   ├── network_emulation/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── DEPS
│   │           │   │   │   ├── create_cross_traffic.cc
│   │           │   │   │   ├── create_cross_traffic.h
│   │           │   │   │   ├── cross_traffic.h
│   │           │   │   │   ├── network_emulation_interfaces.cc
│   │           │   │   │   └── network_emulation_interfaces.h
│   │           │   │   ├── network_emulation_manager.cc
│   │           │   │   ├── network_emulation_manager.h
│   │           │   │   ├── peerconnection_quality_test_fixture.h
│   │           │   │   ├── simulated_network.h
│   │           │   │   ├── simulcast_test_fixture.h
│   │           │   │   ├── stats_observer_interface.h
│   │           │   │   ├── test_dependency_factory.cc
│   │           │   │   ├── test_dependency_factory.h
│   │           │   │   ├── time_controller.cc
│   │           │   │   ├── time_controller.h
│   │           │   │   ├── track_id_stream_info_map.h
│   │           │   │   ├── video/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── function_video_decoder_factory.h
│   │           │   │   │   └── function_video_encoder_factory.h
│   │           │   │   ├── video_quality_analyzer_interface.h
│   │           │   │   ├── video_quality_test_fixture.h
│   │           │   │   ├── videocodec_test_fixture.h
│   │           │   │   ├── videocodec_test_stats.cc
│   │           │   │   └── videocodec_test_stats.h
│   │           │   ├── transport/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── bitrate_settings.cc
│   │           │   │   ├── bitrate_settings.h
│   │           │   │   ├── data_channel_transport_interface.h
│   │           │   │   ├── enums.h
│   │           │   │   ├── field_trial_based_config.cc
│   │           │   │   ├── field_trial_based_config.h
│   │           │   │   ├── goog_cc_factory.cc
│   │           │   │   ├── goog_cc_factory.h
│   │           │   │   ├── network_control.h
│   │           │   │   ├── network_types.cc
│   │           │   │   ├── network_types.h
│   │           │   │   ├── rtp/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── dependency_descriptor.cc
│   │           │   │   │   ├── dependency_descriptor.h
│   │           │   │   │   └── rtp_source.h
│   │           │   │   ├── sctp_transport_factory_interface.h
│   │           │   │   ├── stun.cc
│   │           │   │   ├── stun.h
│   │           │   │   ├── stun_unittest.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── create_feedback_generator.cc
│   │           │   │   │   ├── create_feedback_generator.h
│   │           │   │   │   ├── feedback_generator_interface.h
│   │           │   │   │   └── mock_network_control.h
│   │           │   │   └── webrtc_key_value_config.h
│   │           │   ├── turn_customizer.h
│   │           │   ├── uma_metrics.h
│   │           │   ├── units/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── data_rate.cc
│   │           │   │   ├── data_rate.h
│   │           │   │   ├── data_rate_unittest.cc
│   │           │   │   ├── data_size.cc
│   │           │   │   ├── data_size.h
│   │           │   │   ├── data_size_unittest.cc
│   │           │   │   ├── frequency.cc
│   │           │   │   ├── frequency.h
│   │           │   │   ├── frequency_unittest.cc
│   │           │   │   ├── time_delta.cc
│   │           │   │   ├── time_delta.h
│   │           │   │   ├── time_delta_unittest.cc
│   │           │   │   ├── timestamp.cc
│   │           │   │   ├── timestamp.h
│   │           │   │   └── timestamp_unittest.cc
│   │           │   ├── video/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── builtin_video_bitrate_allocator_factory.cc
│   │           │   │   ├── builtin_video_bitrate_allocator_factory.h
│   │           │   │   ├── color_space.cc
│   │           │   │   ├── color_space.h
│   │           │   │   ├── encoded_frame.cc
│   │           │   │   ├── encoded_frame.h
│   │           │   │   ├── encoded_image.cc
│   │           │   │   ├── encoded_image.h
│   │           │   │   ├── hdr_metadata.cc
│   │           │   │   ├── hdr_metadata.h
│   │           │   │   ├── i010_buffer.cc
│   │           │   │   ├── i010_buffer.h
│   │           │   │   ├── i420_buffer.cc
│   │           │   │   ├── i420_buffer.h
│   │           │   │   ├── nv12_buffer.cc
│   │           │   │   ├── nv12_buffer.h
│   │           │   │   ├── recordable_encoded_frame.h
│   │           │   │   ├── render_resolution.h
│   │           │   │   ├── rtp_video_frame_assembler.cc
│   │           │   │   ├── rtp_video_frame_assembler.h
│   │           │   │   ├── rtp_video_frame_assembler_unittests.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── color_space_unittest.cc
│   │           │   │   │   ├── mock_recordable_encoded_frame.h
│   │           │   │   │   ├── nv12_buffer_unittest.cc
│   │           │   │   │   ├── video_adaptation_counters_unittest.cc
│   │           │   │   │   └── video_bitrate_allocation_unittest.cc
│   │           │   │   ├── video_adaptation_counters.cc
│   │           │   │   ├── video_adaptation_counters.h
│   │           │   │   ├── video_adaptation_reason.h
│   │           │   │   ├── video_bitrate_allocation.cc
│   │           │   │   ├── video_bitrate_allocation.h
│   │           │   │   ├── video_bitrate_allocator.cc
│   │           │   │   ├── video_bitrate_allocator.h
│   │           │   │   ├── video_bitrate_allocator_factory.h
│   │           │   │   ├── video_codec_constants.h
│   │           │   │   ├── video_codec_type.h
│   │           │   │   ├── video_content_type.cc
│   │           │   │   ├── video_content_type.h
│   │           │   │   ├── video_frame.cc
│   │           │   │   ├── video_frame.h
│   │           │   │   ├── video_frame_buffer.cc
│   │           │   │   ├── video_frame_buffer.h
│   │           │   │   ├── video_frame_metadata.cc
│   │           │   │   ├── video_frame_metadata.h
│   │           │   │   ├── video_frame_metadata_unittest.cc
│   │           │   │   ├── video_frame_type.h
│   │           │   │   ├── video_layers_allocation.h
│   │           │   │   ├── video_rotation.h
│   │           │   │   ├── video_sink_interface.h
│   │           │   │   ├── video_source_interface.cc
│   │           │   │   ├── video_source_interface.h
│   │           │   │   ├── video_stream_decoder.h
│   │           │   │   ├── video_stream_decoder_create.cc
│   │           │   │   ├── video_stream_decoder_create.h
│   │           │   │   ├── video_stream_decoder_create_unittest.cc
│   │           │   │   ├── video_stream_encoder_interface.h
│   │           │   │   ├── video_stream_encoder_observer.h
│   │           │   │   ├── video_stream_encoder_settings.h
│   │           │   │   ├── video_timing.cc
│   │           │   │   └── video_timing.h
│   │           │   ├── video_codecs/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── bitstream_parser.h
│   │           │   │   ├── builtin_video_decoder_factory.cc
│   │           │   │   ├── builtin_video_decoder_factory.h
│   │           │   │   ├── builtin_video_encoder_factory.cc
│   │           │   │   ├── builtin_video_encoder_factory.h
│   │           │   │   ├── h264_profile_level_id.cc
│   │           │   │   ├── h264_profile_level_id.h
│   │           │   │   ├── sdp_video_format.cc
│   │           │   │   ├── sdp_video_format.h
│   │           │   │   ├── spatial_layer.cc
│   │           │   │   ├── spatial_layer.h
│   │           │   │   ├── test/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── builtin_video_encoder_factory_unittest.cc
│   │           │   │   │   ├── h264_profile_level_id_unittest.cc
│   │           │   │   │   ├── sdp_video_format_unittest.cc
│   │           │   │   │   ├── video_decoder_software_fallback_wrapper_unittest.cc
│   │           │   │   │   └── video_encoder_software_fallback_wrapper_unittest.cc
│   │           │   │   ├── video_codec.cc
│   │           │   │   ├── video_codec.h
│   │           │   │   ├── video_decoder.cc
│   │           │   │   ├── video_decoder.h
│   │           │   │   ├── video_decoder_factory.h
│   │           │   │   ├── video_decoder_software_fallback_wrapper.cc
│   │           │   │   ├── video_decoder_software_fallback_wrapper.h
│   │           │   │   ├── video_encoder.cc
│   │           │   │   ├── video_encoder.h
│   │           │   │   ├── video_encoder_config.cc
│   │           │   │   ├── video_encoder_config.h
│   │           │   │   ├── video_encoder_factory.h
│   │           │   │   ├── video_encoder_software_fallback_wrapper.cc
│   │           │   │   ├── video_encoder_software_fallback_wrapper.h
│   │           │   │   ├── vp8_frame_buffer_controller.h
│   │           │   │   ├── vp8_frame_config.cc
│   │           │   │   ├── vp8_frame_config.h
│   │           │   │   ├── vp8_temporal_layers.cc
│   │           │   │   ├── vp8_temporal_layers.h
│   │           │   │   ├── vp8_temporal_layers_factory.cc
│   │           │   │   ├── vp8_temporal_layers_factory.h
│   │           │   │   ├── vp9_profile.cc
│   │           │   │   └── vp9_profile.h
│   │           │   ├── video_track_source_proxy_factory.h
│   │           │   └── voip/
│   │           │       ├── BUILD.gn
│   │           │       ├── DEPS
│   │           │       ├── test/
│   │           │       │   ├── compile_all_headers.cc
│   │           │       │   ├── mock_voip_engine.h
│   │           │       │   └── voip_engine_factory_unittest.cc
│   │           │       ├── voip_base.h
│   │           │       ├── voip_codec.h
│   │           │       ├── voip_dtmf.h
│   │           │       ├── voip_engine.h
│   │           │       ├── voip_engine_factory.cc
│   │           │       ├── voip_engine_factory.h
│   │           │       ├── voip_network.h
│   │           │       ├── voip_statistics.h
│   │           │       └── voip_volume_control.h
│   │           ├── audio/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── audio_level.cc
│   │           │   ├── audio_level.h
│   │           │   ├── audio_receive_stream.cc
│   │           │   ├── audio_receive_stream.h
│   │           │   ├── audio_receive_stream_unittest.cc
│   │           │   ├── audio_send_stream.cc
│   │           │   ├── audio_send_stream.h
│   │           │   ├── audio_send_stream_tests.cc
│   │           │   ├── audio_send_stream_unittest.cc
│   │           │   ├── audio_state.cc
│   │           │   ├── audio_state.h
│   │           │   ├── audio_state_unittest.cc
│   │           │   ├── audio_transport_impl.cc
│   │           │   ├── audio_transport_impl.h
│   │           │   ├── channel_receive.cc
│   │           │   ├── channel_receive.h
│   │           │   ├── channel_receive_frame_transformer_delegate.cc
│   │           │   ├── channel_receive_frame_transformer_delegate.h
│   │           │   ├── channel_receive_frame_transformer_delegate_unittest.cc
│   │           │   ├── channel_send.cc
│   │           │   ├── channel_send.h
│   │           │   ├── channel_send_frame_transformer_delegate.cc
│   │           │   ├── channel_send_frame_transformer_delegate.h
│   │           │   ├── channel_send_frame_transformer_delegate_unittest.cc
│   │           │   ├── conversion.h
│   │           │   ├── mock_voe_channel_proxy.h
│   │           │   ├── null_audio_poller.cc
│   │           │   ├── null_audio_poller.h
│   │           │   ├── remix_resample.cc
│   │           │   ├── remix_resample.h
│   │           │   ├── remix_resample_unittest.cc
│   │           │   ├── test/
│   │           │   │   ├── audio_bwe_integration_test.cc
│   │           │   │   ├── audio_bwe_integration_test.h
│   │           │   │   ├── audio_end_to_end_test.cc
│   │           │   │   ├── audio_end_to_end_test.h
│   │           │   │   ├── audio_stats_test.cc
│   │           │   │   ├── low_bandwidth_audio_test.cc
│   │           │   │   ├── low_bandwidth_audio_test.py
│   │           │   │   ├── low_bandwidth_audio_test_flags.cc
│   │           │   │   ├── nack_test.cc
│   │           │   │   ├── pc_low_bandwidth_audio_test.cc
│   │           │   │   └── unittests/
│   │           │   │       └── low_bandwidth_audio_test_test.py
│   │           │   ├── utility/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── audio_frame_operations.cc
│   │           │   │   ├── audio_frame_operations.h
│   │           │   │   ├── audio_frame_operations_unittest.cc
│   │           │   │   ├── channel_mixer.cc
│   │           │   │   ├── channel_mixer.h
│   │           │   │   ├── channel_mixer_unittest.cc
│   │           │   │   ├── channel_mixing_matrix.cc
│   │           │   │   ├── channel_mixing_matrix.h
│   │           │   │   └── channel_mixing_matrix_unittest.cc
│   │           │   └── voip/
│   │           │       ├── BUILD.gn
│   │           │       ├── audio_channel.cc
│   │           │       ├── audio_channel.h
│   │           │       ├── audio_egress.cc
│   │           │       ├── audio_egress.h
│   │           │       ├── audio_ingress.cc
│   │           │       ├── audio_ingress.h
│   │           │       ├── test/
│   │           │       │   ├── BUILD.gn
│   │           │       │   ├── audio_channel_unittest.cc
│   │           │       │   ├── audio_egress_unittest.cc
│   │           │       │   ├── audio_ingress_unittest.cc
│   │           │       │   ├── mock_task_queue.h
│   │           │       │   └── voip_core_unittest.cc
│   │           │       ├── voip_core.cc
│   │           │       └── voip_core.h
│   │           ├── build_overrides/
│   │           │   ├── OWNERS
│   │           │   ├── README.md
│   │           │   ├── build.gni
│   │           │   └── gtest.gni
│   │           ├── call/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── adaptation/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── adaptation_constraint.cc
│   │           │   │   ├── adaptation_constraint.h
│   │           │   │   ├── broadcast_resource_listener.cc
│   │           │   │   ├── broadcast_resource_listener.h
│   │           │   │   ├── broadcast_resource_listener_unittest.cc
│   │           │   │   ├── degradation_preference_provider.cc
│   │           │   │   ├── degradation_preference_provider.h
│   │           │   │   ├── encoder_settings.cc
│   │           │   │   ├── encoder_settings.h
│   │           │   │   ├── resource_adaptation_processor.cc
│   │           │   │   ├── resource_adaptation_processor.h
│   │           │   │   ├── resource_adaptation_processor_interface.cc
│   │           │   │   ├── resource_adaptation_processor_interface.h
│   │           │   │   ├── resource_adaptation_processor_unittest.cc
│   │           │   │   ├── resource_unittest.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── fake_adaptation_constraint.cc
│   │           │   │   │   ├── fake_adaptation_constraint.h
│   │           │   │   │   ├── fake_frame_rate_provider.cc
│   │           │   │   │   ├── fake_frame_rate_provider.h
│   │           │   │   │   ├── fake_resource.cc
│   │           │   │   │   ├── fake_resource.h
│   │           │   │   │   ├── fake_video_stream_input_state_provider.cc
│   │           │   │   │   ├── fake_video_stream_input_state_provider.h
│   │           │   │   │   └── mock_resource_listener.h
│   │           │   │   ├── video_source_restrictions.cc
│   │           │   │   ├── video_source_restrictions.h
│   │           │   │   ├── video_source_restrictions_unittest.cc
│   │           │   │   ├── video_stream_adapter.cc
│   │           │   │   ├── video_stream_adapter.h
│   │           │   │   ├── video_stream_adapter_unittest.cc
│   │           │   │   ├── video_stream_input_state.cc
│   │           │   │   ├── video_stream_input_state.h
│   │           │   │   ├── video_stream_input_state_provider.cc
│   │           │   │   ├── video_stream_input_state_provider.h
│   │           │   │   └── video_stream_input_state_provider_unittest.cc
│   │           │   ├── audio_receive_stream.cc
│   │           │   ├── audio_receive_stream.h
│   │           │   ├── audio_send_stream.cc
│   │           │   ├── audio_send_stream.h
│   │           │   ├── audio_sender.h
│   │           │   ├── audio_state.cc
│   │           │   ├── audio_state.h
│   │           │   ├── bitrate_allocator.cc
│   │           │   ├── bitrate_allocator.h
│   │           │   ├── bitrate_allocator_unittest.cc
│   │           │   ├── bitrate_estimator_tests.cc
│   │           │   ├── call.cc
│   │           │   ├── call.h
│   │           │   ├── call_config.cc
│   │           │   ├── call_config.h
│   │           │   ├── call_factory.cc
│   │           │   ├── call_factory.h
│   │           │   ├── call_perf_tests.cc
│   │           │   ├── call_unittest.cc
│   │           │   ├── degraded_call.cc
│   │           │   ├── degraded_call.h
│   │           │   ├── fake_network_pipe.cc
│   │           │   ├── fake_network_pipe.h
│   │           │   ├── fake_network_pipe_unittest.cc
│   │           │   ├── flexfec_receive_stream.cc
│   │           │   ├── flexfec_receive_stream.h
│   │           │   ├── flexfec_receive_stream_impl.cc
│   │           │   ├── flexfec_receive_stream_impl.h
│   │           │   ├── flexfec_receive_stream_unittest.cc
│   │           │   ├── packet_receiver.h
│   │           │   ├── rampup_tests.cc
│   │           │   ├── rampup_tests.h
│   │           │   ├── receive_stream.h
│   │           │   ├── receive_time_calculator.cc
│   │           │   ├── receive_time_calculator.h
│   │           │   ├── receive_time_calculator_unittest.cc
│   │           │   ├── rtp_bitrate_configurator.cc
│   │           │   ├── rtp_bitrate_configurator.h
│   │           │   ├── rtp_bitrate_configurator_unittest.cc
│   │           │   ├── rtp_config.cc
│   │           │   ├── rtp_config.h
│   │           │   ├── rtp_demuxer.cc
│   │           │   ├── rtp_demuxer.h
│   │           │   ├── rtp_demuxer_unittest.cc
│   │           │   ├── rtp_packet_sink_interface.h
│   │           │   ├── rtp_payload_params.cc
│   │           │   ├── rtp_payload_params.h
│   │           │   ├── rtp_payload_params_unittest.cc
│   │           │   ├── rtp_stream_receiver_controller.cc
│   │           │   ├── rtp_stream_receiver_controller.h
│   │           │   ├── rtp_stream_receiver_controller_interface.h
│   │           │   ├── rtp_transport_config.h
│   │           │   ├── rtp_transport_controller_send.cc
│   │           │   ├── rtp_transport_controller_send.h
│   │           │   ├── rtp_transport_controller_send_factory.h
│   │           │   ├── rtp_transport_controller_send_factory_interface.h
│   │           │   ├── rtp_transport_controller_send_interface.h
│   │           │   ├── rtp_video_sender.cc
│   │           │   ├── rtp_video_sender.h
│   │           │   ├── rtp_video_sender_interface.h
│   │           │   ├── rtp_video_sender_unittest.cc
│   │           │   ├── rtx_receive_stream.cc
│   │           │   ├── rtx_receive_stream.h
│   │           │   ├── rtx_receive_stream_unittest.cc
│   │           │   ├── simulated_network.cc
│   │           │   ├── simulated_network.h
│   │           │   ├── simulated_network_unittest.cc
│   │           │   ├── simulated_packet_receiver.h
│   │           │   ├── syncable.cc
│   │           │   ├── syncable.h
│   │           │   ├── test/
│   │           │   │   ├── mock_audio_send_stream.h
│   │           │   │   ├── mock_bitrate_allocator.h
│   │           │   │   ├── mock_rtp_packet_sink_interface.h
│   │           │   │   └── mock_rtp_transport_controller_send.h
│   │           │   ├── version.cc
│   │           │   ├── version.h
│   │           │   ├── video_receive_stream.cc
│   │           │   ├── video_receive_stream.h
│   │           │   ├── video_send_stream.cc
│   │           │   └── video_send_stream.h
│   │           ├── codereview.settings
│   │           ├── common_audio/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── audio_converter.cc
│   │           │   ├── audio_converter.h
│   │           │   ├── audio_converter_unittest.cc
│   │           │   ├── audio_util.cc
│   │           │   ├── audio_util_unittest.cc
│   │           │   ├── channel_buffer.cc
│   │           │   ├── channel_buffer.h
│   │           │   ├── channel_buffer_unittest.cc
│   │           │   ├── fir_filter.h
│   │           │   ├── fir_filter_avx2.cc
│   │           │   ├── fir_filter_avx2.h
│   │           │   ├── fir_filter_c.cc
│   │           │   ├── fir_filter_c.h
│   │           │   ├── fir_filter_factory.cc
│   │           │   ├── fir_filter_factory.h
│   │           │   ├── fir_filter_neon.cc
│   │           │   ├── fir_filter_neon.h
│   │           │   ├── fir_filter_sse.cc
│   │           │   ├── fir_filter_sse.h
│   │           │   ├── fir_filter_unittest.cc
│   │           │   ├── include/
│   │           │   │   └── audio_util.h
│   │           │   ├── mocks/
│   │           │   │   └── mock_smoothing_filter.h
│   │           │   ├── real_fourier.cc
│   │           │   ├── real_fourier.h
│   │           │   ├── real_fourier_ooura.cc
│   │           │   ├── real_fourier_ooura.h
│   │           │   ├── real_fourier_unittest.cc
│   │           │   ├── resampler/
│   │           │   │   ├── include/
│   │           │   │   │   ├── push_resampler.h
│   │           │   │   │   └── resampler.h
│   │           │   │   ├── push_resampler.cc
│   │           │   │   ├── push_resampler_unittest.cc
│   │           │   │   ├── push_sinc_resampler.cc
│   │           │   │   ├── push_sinc_resampler.h
│   │           │   │   ├── push_sinc_resampler_unittest.cc
│   │           │   │   ├── resampler.cc
│   │           │   │   ├── resampler_unittest.cc
│   │           │   │   ├── sinc_resampler.cc
│   │           │   │   ├── sinc_resampler.h
│   │           │   │   ├── sinc_resampler_avx2.cc
│   │           │   │   ├── sinc_resampler_neon.cc
│   │           │   │   ├── sinc_resampler_sse.cc
│   │           │   │   ├── sinc_resampler_unittest.cc
│   │           │   │   ├── sinusoidal_linear_chirp_source.cc
│   │           │   │   └── sinusoidal_linear_chirp_source.h
│   │           │   ├── ring_buffer.c
│   │           │   ├── ring_buffer.h
│   │           │   ├── ring_buffer_unittest.cc
│   │           │   ├── signal_processing/
│   │           │   │   ├── auto_corr_to_refl_coef.c
│   │           │   │   ├── auto_correlation.c
│   │           │   │   ├── complex_bit_reverse.c
│   │           │   │   ├── complex_bit_reverse_arm.S
│   │           │   │   ├── complex_bit_reverse_mips.c
│   │           │   │   ├── complex_fft.c
│   │           │   │   ├── complex_fft_mips.c
│   │           │   │   ├── complex_fft_tables.h
│   │           │   │   ├── copy_set_operations.c
│   │           │   │   ├── cross_correlation.c
│   │           │   │   ├── cross_correlation_mips.c
│   │           │   │   ├── cross_correlation_neon.c
│   │           │   │   ├── division_operations.c
│   │           │   │   ├── dot_product_with_scale.cc
│   │           │   │   ├── dot_product_with_scale.h
│   │           │   │   ├── downsample_fast.c
│   │           │   │   ├── downsample_fast_mips.c
│   │           │   │   ├── downsample_fast_neon.c
│   │           │   │   ├── energy.c
│   │           │   │   ├── filter_ar.c
│   │           │   │   ├── filter_ar_fast_q12.c
│   │           │   │   ├── filter_ar_fast_q12_armv7.S
│   │           │   │   ├── filter_ar_fast_q12_mips.c
│   │           │   │   ├── filter_ma_fast_q12.c
│   │           │   │   ├── get_hanning_window.c
│   │           │   │   ├── get_scaling_square.c
│   │           │   │   ├── ilbc_specific_functions.c
│   │           │   │   ├── include/
│   │           │   │   │   ├── real_fft.h
│   │           │   │   │   ├── signal_processing_library.h
│   │           │   │   │   ├── spl_inl.h
│   │           │   │   │   ├── spl_inl_armv7.h
│   │           │   │   │   └── spl_inl_mips.h
│   │           │   │   ├── levinson_durbin.c
│   │           │   │   ├── lpc_to_refl_coef.c
│   │           │   │   ├── min_max_operations.c
│   │           │   │   ├── min_max_operations_mips.c
│   │           │   │   ├── min_max_operations_neon.c
│   │           │   │   ├── randomization_functions.c
│   │           │   │   ├── real_fft.c
│   │           │   │   ├── real_fft_unittest.cc
│   │           │   │   ├── refl_coef_to_lpc.c
│   │           │   │   ├── resample.c
│   │           │   │   ├── resample_48khz.c
│   │           │   │   ├── resample_by_2.c
│   │           │   │   ├── resample_by_2_internal.c
│   │           │   │   ├── resample_by_2_internal.h
│   │           │   │   ├── resample_by_2_mips.c
│   │           │   │   ├── resample_fractional.c
│   │           │   │   ├── signal_processing_unittest.cc
│   │           │   │   ├── spl_init.c
│   │           │   │   ├── spl_inl.c
│   │           │   │   ├── spl_sqrt.c
│   │           │   │   ├── splitting_filter.c
│   │           │   │   ├── sqrt_of_one_minus_x_squared.c
│   │           │   │   ├── vector_scaling_operations.c
│   │           │   │   └── vector_scaling_operations_mips.c
│   │           │   ├── smoothing_filter.cc
│   │           │   ├── smoothing_filter.h
│   │           │   ├── smoothing_filter_unittest.cc
│   │           │   ├── third_party/
│   │           │   │   ├── ooura/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── LICENSE
│   │           │   │   │   ├── README.chromium
│   │           │   │   │   ├── fft_size_128/
│   │           │   │   │   │   ├── ooura_fft.cc
│   │           │   │   │   │   ├── ooura_fft.h
│   │           │   │   │   │   ├── ooura_fft_mips.cc
│   │           │   │   │   │   ├── ooura_fft_neon.cc
│   │           │   │   │   │   ├── ooura_fft_sse2.cc
│   │           │   │   │   │   ├── ooura_fft_tables_common.h
│   │           │   │   │   │   └── ooura_fft_tables_neon_sse2.h
│   │           │   │   │   └── fft_size_256/
│   │           │   │   │       ├── fft4g.cc
│   │           │   │   │       └── fft4g.h
│   │           │   │   └── spl_sqrt_floor/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── LICENSE
│   │           │   │       ├── README.chromium
│   │           │   │       ├── spl_sqrt_floor.c
│   │           │   │       ├── spl_sqrt_floor.h
│   │           │   │       ├── spl_sqrt_floor_arm.S
│   │           │   │       └── spl_sqrt_floor_mips.c
│   │           │   ├── vad/
│   │           │   │   ├── include/
│   │           │   │   │   ├── vad.h
│   │           │   │   │   └── webrtc_vad.h
│   │           │   │   ├── mock/
│   │           │   │   │   └── mock_vad.h
│   │           │   │   ├── vad.cc
│   │           │   │   ├── vad_core.c
│   │           │   │   ├── vad_core.h
│   │           │   │   ├── vad_core_unittest.cc
│   │           │   │   ├── vad_filterbank.c
│   │           │   │   ├── vad_filterbank.h
│   │           │   │   ├── vad_filterbank_unittest.cc
│   │           │   │   ├── vad_gmm.c
│   │           │   │   ├── vad_gmm.h
│   │           │   │   ├── vad_gmm_unittest.cc
│   │           │   │   ├── vad_sp.c
│   │           │   │   ├── vad_sp.h
│   │           │   │   ├── vad_sp_unittest.cc
│   │           │   │   ├── vad_unittest.cc
│   │           │   │   ├── vad_unittest.h
│   │           │   │   └── webrtc_vad.c
│   │           │   ├── wav_file.cc
│   │           │   ├── wav_file.h
│   │           │   ├── wav_file_unittest.cc
│   │           │   ├── wav_header.cc
│   │           │   ├── wav_header.h
│   │           │   ├── wav_header_unittest.cc
│   │           │   ├── window_generator.cc
│   │           │   ├── window_generator.h
│   │           │   └── window_generator_unittest.cc
│   │           ├── common_video/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── bitrate_adjuster.cc
│   │           │   ├── bitrate_adjuster_unittest.cc
│   │           │   ├── frame_counts.h
│   │           │   ├── frame_rate_estimator.cc
│   │           │   ├── frame_rate_estimator.h
│   │           │   ├── frame_rate_estimator_unittest.cc
│   │           │   ├── generic_frame_descriptor/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── OWNERS
│   │           │   │   ├── generic_frame_info.cc
│   │           │   │   └── generic_frame_info.h
│   │           │   ├── h264/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── h264_bitstream_parser.cc
│   │           │   │   ├── h264_bitstream_parser.h
│   │           │   │   ├── h264_bitstream_parser_unittest.cc
│   │           │   │   ├── h264_common.cc
│   │           │   │   ├── h264_common.h
│   │           │   │   ├── pps_parser.cc
│   │           │   │   ├── pps_parser.h
│   │           │   │   ├── pps_parser_unittest.cc
│   │           │   │   ├── sps_parser.cc
│   │           │   │   ├── sps_parser.h
│   │           │   │   ├── sps_parser_unittest.cc
│   │           │   │   ├── sps_vui_rewriter.cc
│   │           │   │   ├── sps_vui_rewriter.h
│   │           │   │   └── sps_vui_rewriter_unittest.cc
│   │           │   ├── include/
│   │           │   │   ├── bitrate_adjuster.h
│   │           │   │   ├── incoming_video_stream.h
│   │           │   │   ├── quality_limitation_reason.h
│   │           │   │   ├── video_frame_buffer.h
│   │           │   │   └── video_frame_buffer_pool.h
│   │           │   ├── incoming_video_stream.cc
│   │           │   ├── libyuv/
│   │           │   │   ├── include/
│   │           │   │   │   └── webrtc_libyuv.h
│   │           │   │   ├── libyuv_unittest.cc
│   │           │   │   └── webrtc_libyuv.cc
│   │           │   ├── test/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── utilities.cc
│   │           │   │   └── utilities.h
│   │           │   ├── video_frame_buffer.cc
│   │           │   ├── video_frame_buffer_pool.cc
│   │           │   ├── video_frame_buffer_pool_unittest.cc
│   │           │   ├── video_frame_unittest.cc
│   │           │   ├── video_render_frames.cc
│   │           │   └── video_render_frames.h
│   │           ├── data/
│   │           │   ├── audio_processing/
│   │           │   │   ├── OWNERS
│   │           │   │   └── android/
│   │           │   │       ├── output_data_fixed.pb
│   │           │   │       └── output_data_float.pb
│   │           │   └── voice_engine/
│   │           │       ├── audio_long16big_endian.pcm
│   │           │       ├── audio_long16noise.pcm
│   │           │       ├── audio_long8.pcm
│   │           │       ├── audio_short16.pcm
│   │           │       └── stereo_rtp_files/
│   │           │           ├── HRTF_pcm16wb.rtp
│   │           │           ├── HRTF_pcm16wb_jitter.rtp
│   │           │           ├── README.txt
│   │           │           ├── hrtf_g722_1C_48.rtp
│   │           │           ├── hrtf_g722_1C_48_jitterT2.rtp
│   │           │           ├── stereo_g729.rtp
│   │           │           ├── stereo_g729_jitter.rtp
│   │           │           ├── stereo_pcm16wb.rtp
│   │           │           ├── stereo_pcm16wb_jitter.rtp
│   │           │           ├── stereo_pcmu.rtp
│   │           │           ├── stereo_pcmu_jitter.rtp
│   │           │           ├── stereo_pcmu_vad.rtp
│   │           │           ├── stereo_pcmu_vad_jitter.rtp
│   │           │           └── toggling_stereo_g729_pt18_pt125.rtp
│   │           ├── docs/
│   │           │   ├── OWNERS
│   │           │   ├── bug-reporting.md
│   │           │   ├── faq.md
│   │           │   ├── native-code/
│   │           │   │   ├── android/
│   │           │   │   │   └── index.md
│   │           │   │   ├── development/
│   │           │   │   │   ├── index.md
│   │           │   │   │   └── prerequisite-sw/
│   │           │   │   │       └── index.md
│   │           │   │   ├── index.md
│   │           │   │   ├── ios/
│   │           │   │   │   └── index.md
│   │           │   │   ├── logging.md
│   │           │   │   └── rtp-hdrext/
│   │           │   │       ├── abs-capture-time/
│   │           │   │       │   └── README.md
│   │           │   │       ├── abs-send-time/
│   │           │   │       │   └── README.md
│   │           │   │       ├── color-space/
│   │           │   │       │   └── README.md
│   │           │   │       ├── inband-cn/
│   │           │   │       │   └── README.md
│   │           │   │       ├── index.md
│   │           │   │       ├── playout-delay/
│   │           │   │       │   └── README.md
│   │           │   │       ├── transport-wide-cc-02/
│   │           │   │       │   └── README.md
│   │           │   │       ├── video-content-type/
│   │           │   │       │   └── README.md
│   │           │   │       ├── video-frame-tracking-id/
│   │           │   │       │   └── README.md
│   │           │   │       ├── video-layers-allocation00/
│   │           │   │       │   └── README.md
│   │           │   │       └── video-timing/
│   │           │   │           └── README.md
│   │           │   └── release-notes.md
│   │           ├── examples/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── aarproject/
│   │           │   │   ├── .gitignore
│   │           │   │   ├── .idea/
│   │           │   │   │   ├── encodings.xml
│   │           │   │   │   ├── gradle.xml
│   │           │   │   │   ├── misc.xml
│   │           │   │   │   ├── modules.xml
│   │           │   │   │   └── runConfigurations.xml
│   │           │   │   ├── OWNERS
│   │           │   │   ├── app/
│   │           │   │   │   ├── .gitignore
│   │           │   │   │   ├── build.gradle
│   │           │   │   │   └── proguard-rules.pro
│   │           │   │   ├── build.gradle
│   │           │   │   ├── gradle.properties
│   │           │   │   └── settings.gradle
│   │           │   ├── androidapp/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── OWNERS
│   │           │   │   ├── README
│   │           │   │   ├── ant.properties
│   │           │   │   ├── build.xml
│   │           │   │   ├── project.properties
│   │           │   │   ├── res/
│   │           │   │   │   ├── layout/
│   │           │   │   │   │   ├── activity_call.xml
│   │           │   │   │   │   ├── activity_connect.xml
│   │           │   │   │   │   ├── fragment_call.xml
│   │           │   │   │   │   └── fragment_hud.xml
│   │           │   │   │   ├── menu/
│   │           │   │   │   │   └── connect_menu.xml
│   │           │   │   │   ├── values/
│   │           │   │   │   │   ├── arrays.xml
│   │           │   │   │   │   └── strings.xml
│   │           │   │   │   ├── values-v17/
│   │           │   │   │   │   └── styles.xml
│   │           │   │   │   ├── values-v21/
│   │           │   │   │   │   └── styles.xml
│   │           │   │   │   └── xml/
│   │           │   │   │       └── preferences.xml
│   │           │   │   ├── src/
│   │           │   │   │   └── org/
│   │           │   │   │       └── appspot/
│   │           │   │   │           └── apprtc/
│   │           │   │   │               ├── AppRTCAudioManager.java
│   │           │   │   │               ├── AppRTCBluetoothManager.java
│   │           │   │   │               ├── AppRTCClient.java
│   │           │   │   │               ├── AppRTCProximitySensor.java
│   │           │   │   │               ├── CallActivity.java
│   │           │   │   │               ├── CallFragment.java
│   │           │   │   │               ├── CaptureQualityController.java
│   │           │   │   │               ├── ConnectActivity.java
│   │           │   │   │               ├── CpuMonitor.java
│   │           │   │   │               ├── DirectRTCClient.java
│   │           │   │   │               ├── HudFragment.java
│   │           │   │   │               ├── PeerConnectionClient.java
│   │           │   │   │               ├── RecordedAudioToFileController.java
│   │           │   │   │               ├── RoomParametersFetcher.java
│   │           │   │   │               ├── RtcEventLog.java
│   │           │   │   │               ├── SettingsActivity.java
│   │           │   │   │               ├── SettingsFragment.java
│   │           │   │   │               ├── TCPChannelClient.java
│   │           │   │   │               ├── UnhandledExceptionHandler.java
│   │           │   │   │               ├── WebSocketChannelClient.java
│   │           │   │   │               ├── WebSocketRTCClient.java
│   │           │   │   │               └── util/
│   │           │   │   │                   ├── AppRTCUtils.java
│   │           │   │   │                   └── AsyncHttpURLConnection.java
│   │           │   │   ├── start_loopback_stubbed_camera_saved_video_out.py
│   │           │   │   └── third_party/
│   │           │   │       └── autobanh/
│   │           │   │           ├── BUILD.gn
│   │           │   │           ├── LICENSE
│   │           │   │           ├── LICENSE.md
│   │           │   │           ├── NOTICE
│   │           │   │           └── lib/
│   │           │   │               └── autobanh.jar
│   │           │   ├── androidjunit/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── README
│   │           │   │   └── src/
│   │           │   │       └── org/
│   │           │   │           └── appspot/
│   │           │   │               └── apprtc/
│   │           │   │                   ├── BluetoothManagerTest.java
│   │           │   │                   ├── DirectRTCClientTest.java
│   │           │   │                   └── TCPChannelClientTest.java
│   │           │   ├── androidnativeapi/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── java/
│   │           │   │   │   └── org/
│   │           │   │   │       └── webrtc/
│   │           │   │   │           └── examples/
│   │           │   │   │               └── androidnativeapi/
│   │           │   │   │                   ├── CallClient.java
│   │           │   │   │                   └── MainActivity.java
│   │           │   │   ├── jni/
│   │           │   │   │   ├── android_call_client.cc
│   │           │   │   │   ├── android_call_client.h
│   │           │   │   │   └── onload.cc
│   │           │   │   └── res/
│   │           │   │       ├── layout/
│   │           │   │       │   └── activity_main.xml
│   │           │   │       └── values/
│   │           │   │           └── strings.xml
│   │           │   ├── androidtests/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── OWNERS
│   │           │   │   ├── README
│   │           │   │   ├── ant.properties
│   │           │   │   ├── build.xml
│   │           │   │   ├── gradle_project_test.py
│   │           │   │   ├── project.properties
│   │           │   │   ├── src/
│   │           │   │   │   └── org/
│   │           │   │   │       └── appspot/
│   │           │   │   │           └── apprtc/
│   │           │   │   │               └── test/
│   │           │   │   │                   └── PeerConnectionClientTest.java
│   │           │   │   └── third_party/
│   │           │   │       ├── .gitignore
│   │           │   │       └── README.webrtc
│   │           │   ├── androidvoip/
│   │           │   │   ├── AndroidManifest.xml
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── java/
│   │           │   │   │   └── org/
│   │           │   │   │       └── webrtc/
│   │           │   │   │           └── examples/
│   │           │   │   │               └── androidvoip/
│   │           │   │   │                   ├── MainActivity.java
│   │           │   │   │                   ├── OnVoipClientTaskCompleted.java
│   │           │   │   │                   └── VoipClient.java
│   │           │   │   ├── jni/
│   │           │   │   │   ├── android_voip_client.cc
│   │           │   │   │   ├── android_voip_client.h
│   │           │   │   │   └── onload.cc
│   │           │   │   └── res/
│   │           │   │       ├── layout/
│   │           │   │       │   └── activity_main.xml
│   │           │   │       └── values/
│   │           │   │           ├── colors.xml
│   │           │   │           └── strings.xml
│   │           │   ├── objc/
│   │           │   │   ├── AppRTCMobile/
│   │           │   │   │   ├── ARDAppClient+Internal.h
│   │           │   │   │   ├── ARDAppClient.h
│   │           │   │   │   ├── ARDAppClient.m
│   │           │   │   │   ├── ARDAppEngineClient.h
│   │           │   │   │   ├── ARDAppEngineClient.m
│   │           │   │   │   ├── ARDCaptureController.h
│   │           │   │   │   ├── ARDCaptureController.m
│   │           │   │   │   ├── ARDExternalSampleCapturer.h
│   │           │   │   │   ├── ARDExternalSampleCapturer.m
│   │           │   │   │   ├── ARDJoinResponse+Internal.h
│   │           │   │   │   ├── ARDJoinResponse.h
│   │           │   │   │   ├── ARDJoinResponse.m
│   │           │   │   │   ├── ARDMessageResponse+Internal.h
│   │           │   │   │   ├── ARDMessageResponse.h
│   │           │   │   │   ├── ARDMessageResponse.m
│   │           │   │   │   ├── ARDRoomServerClient.h
│   │           │   │   │   ├── ARDSettingsModel+Private.h
│   │           │   │   │   ├── ARDSettingsModel.h
│   │           │   │   │   ├── ARDSettingsModel.m
│   │           │   │   │   ├── ARDSettingsStore.h
│   │           │   │   │   ├── ARDSettingsStore.m
│   │           │   │   │   ├── ARDSignalingChannel.h
│   │           │   │   │   ├── ARDSignalingMessage.h
│   │           │   │   │   ├── ARDSignalingMessage.m
│   │           │   │   │   ├── ARDStatsBuilder.h
│   │           │   │   │   ├── ARDStatsBuilder.m
│   │           │   │   │   ├── ARDTURNClient+Internal.h
│   │           │   │   │   ├── ARDTURNClient.h
│   │           │   │   │   ├── ARDTURNClient.m
│   │           │   │   │   ├── ARDWebSocketChannel.h
│   │           │   │   │   ├── ARDWebSocketChannel.m
│   │           │   │   │   ├── RTCIceCandidate+JSON.h
│   │           │   │   │   ├── RTCIceCandidate+JSON.m
│   │           │   │   │   ├── RTCIceServer+JSON.h
│   │           │   │   │   ├── RTCIceServer+JSON.m
│   │           │   │   │   ├── RTCSessionDescription+JSON.h
│   │           │   │   │   ├── RTCSessionDescription+JSON.m
│   │           │   │   │   ├── common/
│   │           │   │   │   │   ├── ARDUtilities.h
│   │           │   │   │   │   └── ARDUtilities.m
│   │           │   │   │   ├── ios/
│   │           │   │   │   │   ├── ARDAppDelegate.h
│   │           │   │   │   │   ├── ARDAppDelegate.m
│   │           │   │   │   │   ├── ARDFileCaptureController.h
│   │           │   │   │   │   ├── ARDFileCaptureController.m
│   │           │   │   │   │   ├── ARDMainView.h
│   │           │   │   │   │   ├── ARDMainView.m
│   │           │   │   │   │   ├── ARDMainViewController.h
│   │           │   │   │   │   ├── ARDMainViewController.m
│   │           │   │   │   │   ├── ARDSettingsViewController.h
│   │           │   │   │   │   ├── ARDSettingsViewController.m
│   │           │   │   │   │   ├── ARDStatsView.h
│   │           │   │   │   │   ├── ARDStatsView.m
│   │           │   │   │   │   ├── ARDVideoCallView.h
│   │           │   │   │   │   ├── ARDVideoCallView.m
│   │           │   │   │   │   ├── ARDVideoCallViewController.h
│   │           │   │   │   │   ├── ARDVideoCallViewController.m
│   │           │   │   │   │   ├── Info.plist
│   │           │   │   │   │   ├── RTCVideoCodecInfo+HumanReadable.h
│   │           │   │   │   │   ├── RTCVideoCodecInfo+HumanReadable.m
│   │           │   │   │   │   ├── UIImage+ARDUtilities.h
│   │           │   │   │   │   ├── UIImage+ARDUtilities.m
│   │           │   │   │   │   ├── broadcast_extension/
│   │           │   │   │   │   │   ├── ARDBroadcastSampleHandler.h
│   │           │   │   │   │   │   ├── ARDBroadcastSampleHandler.m
│   │           │   │   │   │   │   ├── ARDBroadcastSetupViewController.h
│   │           │   │   │   │   │   ├── ARDBroadcastSetupViewController.m
│   │           │   │   │   │   │   ├── BroadcastSetupUIInfo.plist
│   │           │   │   │   │   │   └── BroadcastUploadInfo.plist
│   │           │   │   │   │   └── main.m
│   │           │   │   │   ├── mac/
│   │           │   │   │   │   ├── APPRTCAppDelegate.h
│   │           │   │   │   │   ├── APPRTCAppDelegate.m
│   │           │   │   │   │   ├── APPRTCViewController.h
│   │           │   │   │   │   ├── APPRTCViewController.m
│   │           │   │   │   │   ├── Info.plist
│   │           │   │   │   │   └── main.m
│   │           │   │   │   ├── tests/
│   │           │   │   │   │   ├── ARDAppClient_xctest.mm
│   │           │   │   │   │   ├── ARDFileCaptureController_xctest.mm
│   │           │   │   │   │   ├── ARDSettingsModel_xctest.mm
│   │           │   │   │   │   └── main.mm
│   │           │   │   │   └── third_party/
│   │           │   │   │       └── SocketRocket/
│   │           │   │   │           ├── LICENSE
│   │           │   │   │           ├── SRWebSocket.h
│   │           │   │   │           └── SRWebSocket.m
│   │           │   │   └── README
│   │           │   ├── objcnativeapi/
│   │           │   │   ├── Info.plist
│   │           │   │   └── objc/
│   │           │   │       ├── NADAppDelegate.h
│   │           │   │       ├── NADAppDelegate.m
│   │           │   │       ├── NADViewController.h
│   │           │   │       ├── NADViewController.mm
│   │           │   │       ├── main.m
│   │           │   │       ├── objc_call_client.h
│   │           │   │       └── objc_call_client.mm
│   │           │   ├── peerconnection/
│   │           │   │   ├── OWNERS
│   │           │   │   ├── client/
│   │           │   │   │   ├── conductor.cc
│   │           │   │   │   ├── conductor.h
│   │           │   │   │   ├── defaults.cc
│   │           │   │   │   ├── defaults.h
│   │           │   │   │   ├── flag_defs.h
│   │           │   │   │   ├── linux/
│   │           │   │   │   │   ├── main.cc
│   │           │   │   │   │   ├── main_wnd.cc
│   │           │   │   │   │   └── main_wnd.h
│   │           │   │   │   ├── main.cc
│   │           │   │   │   ├── main_wnd.cc
│   │           │   │   │   ├── main_wnd.h
│   │           │   │   │   ├── peer_connection_client.cc
│   │           │   │   │   └── peer_connection_client.h
│   │           │   │   └── server/
│   │           │   │       ├── data_socket.cc
│   │           │   │       ├── data_socket.h
│   │           │   │       ├── main.cc
│   │           │   │       ├── peer_channel.cc
│   │           │   │       ├── peer_channel.h
│   │           │   │       ├── server_test.html
│   │           │   │       ├── utils.cc
│   │           │   │       └── utils.h
│   │           │   ├── stunprober/
│   │           │   │   └── main.cc
│   │           │   ├── stunserver/
│   │           │   │   └── stunserver_main.cc
│   │           │   ├── turnserver/
│   │           │   │   ├── read_auth_file.cc
│   │           │   │   ├── read_auth_file.h
│   │           │   │   ├── read_auth_file_unittest.cc
│   │           │   │   └── turnserver_main.cc
│   │           │   └── unityplugin/
│   │           │       ├── ANDROID_INSTRUCTION
│   │           │       ├── DEPS
│   │           │       ├── README
│   │           │       ├── class_reference_holder.cc
│   │           │       ├── class_reference_holder.h
│   │           │       ├── java/
│   │           │       │   └── src/
│   │           │       │       └── org/
│   │           │       │           └── webrtc/
│   │           │       │               └── UnityUtility.java
│   │           │       ├── jni_onload.cc
│   │           │       ├── simple_peer_connection.cc
│   │           │       ├── simple_peer_connection.h
│   │           │       ├── unity_plugin_apis.cc
│   │           │       ├── unity_plugin_apis.h
│   │           │       ├── video_observer.cc
│   │           │       └── video_observer.h
│   │           ├── g3doc/
│   │           │   ├── OWNERS
│   │           │   ├── abseil-in-webrtc.md
│   │           │   ├── become_a_committer.md
│   │           │   ├── g3doc.lua
│   │           │   ├── how_to_write_documentation.md
│   │           │   ├── implementation_basics.md
│   │           │   ├── index.md
│   │           │   ├── sitemap.md
│   │           │   ├── style-guide/
│   │           │   │   ├── OWNERS
│   │           │   │   └── h-cc-pairs.md
│   │           │   ├── style-guide.md
│   │           │   └── supported-platforms-and-compilers.md
│   │           ├── g3doc.lua
│   │           ├── license_template.txt
│   │           ├── logging/
│   │           │   ├── BUILD.gn
│   │           │   ├── OWNERS
│   │           │   ├── g3doc/
│   │           │   │   └── rtc_event_log.md
│   │           │   └── rtc_event_log/
│   │           │       ├── DEPS
│   │           │       ├── encoder/
│   │           │       │   ├── blob_encoding.cc
│   │           │       │   ├── blob_encoding.h
│   │           │       │   ├── blob_encoding_unittest.cc
│   │           │       │   ├── delta_encoding.cc
│   │           │       │   ├── delta_encoding.h
│   │           │       │   ├── delta_encoding_unittest.cc
│   │           │       │   ├── rtc_event_log_encoder.h
│   │           │       │   ├── rtc_event_log_encoder_common.cc
│   │           │       │   ├── rtc_event_log_encoder_common.h
│   │           │       │   ├── rtc_event_log_encoder_common_unittest.cc
│   │           │       │   ├── rtc_event_log_encoder_legacy.cc
│   │           │       │   ├── rtc_event_log_encoder_legacy.h
│   │           │       │   ├── rtc_event_log_encoder_new_format.cc
│   │           │       │   ├── rtc_event_log_encoder_new_format.h
│   │           │       │   ├── rtc_event_log_encoder_unittest.cc
│   │           │       │   ├── var_int.cc
│   │           │       │   └── var_int.h
│   │           │       ├── events/
│   │           │       │   ├── rtc_event_alr_state.cc
│   │           │       │   ├── rtc_event_alr_state.h
│   │           │       │   ├── rtc_event_audio_network_adaptation.cc
│   │           │       │   ├── rtc_event_audio_network_adaptation.h
│   │           │       │   ├── rtc_event_audio_playout.cc
│   │           │       │   ├── rtc_event_audio_playout.h
│   │           │       │   ├── rtc_event_audio_receive_stream_config.cc
│   │           │       │   ├── rtc_event_audio_receive_stream_config.h
│   │           │       │   ├── rtc_event_audio_send_stream_config.cc
│   │           │       │   ├── rtc_event_audio_send_stream_config.h
│   │           │       │   ├── rtc_event_bwe_update_delay_based.cc
│   │           │       │   ├── rtc_event_bwe_update_delay_based.h
│   │           │       │   ├── rtc_event_bwe_update_loss_based.cc
│   │           │       │   ├── rtc_event_bwe_update_loss_based.h
│   │           │       │   ├── rtc_event_dtls_transport_state.cc
│   │           │       │   ├── rtc_event_dtls_transport_state.h
│   │           │       │   ├── rtc_event_dtls_writable_state.cc
│   │           │       │   ├── rtc_event_dtls_writable_state.h
│   │           │       │   ├── rtc_event_frame_decoded.cc
│   │           │       │   ├── rtc_event_frame_decoded.h
│   │           │       │   ├── rtc_event_generic_ack_received.cc
│   │           │       │   ├── rtc_event_generic_ack_received.h
│   │           │       │   ├── rtc_event_generic_packet_received.cc
│   │           │       │   ├── rtc_event_generic_packet_received.h
│   │           │       │   ├── rtc_event_generic_packet_sent.cc
│   │           │       │   ├── rtc_event_generic_packet_sent.h
│   │           │       │   ├── rtc_event_ice_candidate_pair.cc
│   │           │       │   ├── rtc_event_ice_candidate_pair.h
│   │           │       │   ├── rtc_event_ice_candidate_pair_config.cc
│   │           │       │   ├── rtc_event_ice_candidate_pair_config.h
│   │           │       │   ├── rtc_event_probe_cluster_created.cc
│   │           │       │   ├── rtc_event_probe_cluster_created.h
│   │           │       │   ├── rtc_event_probe_result_failure.cc
│   │           │       │   ├── rtc_event_probe_result_failure.h
│   │           │       │   ├── rtc_event_probe_result_success.cc
│   │           │       │   ├── rtc_event_probe_result_success.h
│   │           │       │   ├── rtc_event_remote_estimate.h
│   │           │       │   ├── rtc_event_route_change.cc
│   │           │       │   ├── rtc_event_route_change.h
│   │           │       │   ├── rtc_event_rtcp_packet_incoming.cc
│   │           │       │   ├── rtc_event_rtcp_packet_incoming.h
│   │           │       │   ├── rtc_event_rtcp_packet_outgoing.cc
│   │           │       │   ├── rtc_event_rtcp_packet_outgoing.h
│   │           │       │   ├── rtc_event_rtp_packet_incoming.cc
│   │           │       │   ├── rtc_event_rtp_packet_incoming.h
│   │           │       │   ├── rtc_event_rtp_packet_outgoing.cc
│   │           │       │   ├── rtc_event_rtp_packet_outgoing.h
│   │           │       │   ├── rtc_event_video_receive_stream_config.cc
│   │           │       │   ├── rtc_event_video_receive_stream_config.h
│   │           │       │   ├── rtc_event_video_send_stream_config.cc
│   │           │       │   └── rtc_event_video_send_stream_config.h
│   │           │       ├── fake_rtc_event_log.cc
│   │           │       ├── fake_rtc_event_log.h
│   │           │       ├── fake_rtc_event_log_factory.cc
│   │           │       ├── fake_rtc_event_log_factory.h
│   │           │       ├── ice_logger.cc
│   │           │       ├── ice_logger.h
│   │           │       ├── logged_events.cc
│   │           │       ├── logged_events.h
│   │           │       ├── mock/
│   │           │       │   ├── mock_rtc_event_log.cc
│   │           │       │   └── mock_rtc_event_log.h
│   │           │       ├── output/
│   │           │       │   └── rtc_event_log_output_file.h
│   │           │       ├── rtc_event_log.proto
│   │           │       ├── rtc_event_log2.proto
│   │           │       ├── rtc_event_log2rtp_dump.cc
│   │           │       ├── rtc_event_log_impl.cc
│   │           │       ├── rtc_event_log_impl.h
│   │           │       ├── rtc_event_log_parser.cc
│   │           │       ├── rtc_event_log_parser.h
│   │           │       ├── rtc_event_log_unittest.cc
│   │           │       ├── rtc_event_log_unittest_helper.cc
│   │           │       ├── rtc_event_log_unittest_helper.h
│   │           │       ├── rtc_event_processor.cc
│   │           │       ├── rtc_event_processor.h
│   │           │       ├── rtc_event_processor_unittest.cc
│   │           │       ├── rtc_stream_config.cc
│   │           │       └── rtc_stream_config.h
│   │           ├── media/
│   │           │   ├── BUILD.gn
│   │           │   ├── DEPS
│   │           │   ├── OWNERS
│   │           │   ├── base/
│   │           │   │   ├── adapted_video_track_source.cc
│   │           │   │   ├── adapted_video_track_source.h
│   │           │   │   ├── audio_source.h
│   │           │   │   ├── codec.cc
│   │           │   │   ├── codec.h
│   │           │   │   ├── codec_unittest.cc
│   │           │   │   ├── delayable.h
│   │           │   │   ├── fake_frame_source.cc
│   │           │   │   ├── fake_frame_source.h
│   │           │   │   ├── fake_media_engine.cc
│   │           │   │   ├── fake_media_engine.h
│   │           │   │   ├── fake_network_interface.h
│   │           │   │   ├── fake_rtp.cc
│   │           │   │   ├── fake_rtp.h
│   │           │   │   ├── fake_video_renderer.cc
│   │           │   │   ├── fake_video_renderer.h
│   │           │   │   ├── h264_profile_level_id.cc
│   │           │   │   ├── h264_profile_level_id.h
│   │           │   │   ├── media_channel.cc
│   │           │   │   ├── media_channel.h
│   │           │   │   ├── media_config.h
│   │           │   │   ├── media_constants.cc
│   │           │   │   ├── media_constants.h
│   │           │   │   ├── media_engine.cc
│   │           │   │   ├── media_engine.h
│   │           │   │   ├── media_engine_unittest.cc
│   │           │   │   ├── rid_description.cc
│   │           │   │   ├── rid_description.h
│   │           │   │   ├── rtp_utils.cc
│   │           │   │   ├── rtp_utils.h
│   │           │   │   ├── rtp_utils_unittest.cc
│   │           │   │   ├── sdp_video_format_utils.cc
│   │           │   │   ├── sdp_video_format_utils.h
│   │           │   │   ├── sdp_video_format_utils_unittest.cc
│   │           │   │   ├── stream_params.cc
│   │           │   │   ├── stream_params.h
│   │           │   │   ├── stream_params_unittest.cc
│   │           │   │   ├── test_utils.cc
│   │           │   │   ├── test_utils.h
│   │           │   │   ├── turn_utils.cc
│   │           │   │   ├── turn_utils.h
│   │           │   │   ├── turn_utils_unittest.cc
│   │           │   │   ├── video_adapter.cc
│   │           │   │   ├── video_adapter.h
│   │           │   │   ├── video_adapter_unittest.cc
│   │           │   │   ├── video_broadcaster.cc
│   │           │   │   ├── video_broadcaster.h
│   │           │   │   ├── video_broadcaster_unittest.cc
│   │           │   │   ├── video_common.cc
│   │           │   │   ├── video_common.h
│   │           │   │   ├── video_common_unittest.cc
│   │           │   │   ├── video_source_base.cc
│   │           │   │   ├── video_source_base.h
│   │           │   │   └── vp9_profile.h
│   │           │   ├── engine/
│   │           │   │   ├── adm_helpers.cc
│   │           │   │   ├── adm_helpers.h
│   │           │   │   ├── encoder_simulcast_proxy.cc
│   │           │   │   ├── encoder_simulcast_proxy.h
│   │           │   │   ├── encoder_simulcast_proxy_unittest.cc
│   │           │   │   ├── fake_video_codec_factory.cc
│   │           │   │   ├── fake_video_codec_factory.h
│   │           │   │   ├── fake_webrtc_call.cc
│   │           │   │   ├── fake_webrtc_call.h
│   │           │   │   ├── fake_webrtc_video_engine.cc
│   │           │   │   ├── fake_webrtc_video_engine.h
│   │           │   │   ├── internal_decoder_factory.cc
│   │           │   │   ├── internal_decoder_factory.h
│   │           │   │   ├── internal_decoder_factory_unittest.cc
│   │           │   │   ├── internal_encoder_factory.cc
│   │           │   │   ├── internal_encoder_factory.h
│   │           │   │   ├── multiplex_codec_factory.cc
│   │           │   │   ├── multiplex_codec_factory.h
│   │           │   │   ├── multiplex_codec_factory_unittest.cc
│   │           │   │   ├── null_webrtc_video_engine.h
│   │           │   │   ├── null_webrtc_video_engine_unittest.cc
│   │           │   │   ├── payload_type_mapper.cc
│   │           │   │   ├── payload_type_mapper.h
│   │           │   │   ├── payload_type_mapper_unittest.cc
│   │           │   │   ├── simulcast.cc
│   │           │   │   ├── simulcast.h
│   │           │   │   ├── simulcast_encoder_adapter.cc
│   │           │   │   ├── simulcast_encoder_adapter.h
│   │           │   │   ├── simulcast_encoder_adapter_unittest.cc
│   │           │   │   ├── simulcast_unittest.cc
│   │           │   │   ├── unhandled_packets_buffer.cc
│   │           │   │   ├── unhandled_packets_buffer.h
│   │           │   │   ├── unhandled_packets_buffer_unittest.cc
│   │           │   │   ├── webrtc_media_engine.cc
│   │           │   │   ├── webrtc_media_engine.h
│   │           │   │   ├── webrtc_media_engine_defaults.cc
│   │           │   │   ├── webrtc_media_engine_defaults.h
│   │           │   │   ├── webrtc_media_engine_unittest.cc
│   │           │   │   ├── webrtc_video_engine.cc
│   │           │   │   ├── webrtc_video_engine.h
│   │           │   │   ├── webrtc_video_engine_unittest.cc
│   │           │   │   ├── webrtc_voice_engine.cc
│   │           │   │   ├── webrtc_voice_engine.h
│   │           │   │   └── webrtc_voice_engine_unittest.cc
│   │           │   └── sctp/
│   │           │       ├── OWNERS
│   │           │       ├── dcsctp_transport.cc
│   │           │       ├── dcsctp_transport.h
│   │           │       ├── sctp_transport_factory.cc
│   │           │       ├── sctp_transport_factory.h
│   │           │       ├── sctp_transport_internal.h
│   │           │       ├── usrsctp_transport.cc
│   │           │       ├── usrsctp_transport.h
│   │           │       ├── usrsctp_transport_reliability_unittest.cc
│   │           │       └── usrsctp_transport_unittest.cc
│   │           ├── modules/
│   │           │   ├── BUILD.gn
│   │           │   ├── async_audio_processing/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── async_audio_processing.cc
│   │           │   │   └── async_audio_processing.h
│   │           │   ├── audio_coding/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── acm2/
│   │           │   │   │   ├── acm_receive_test.cc
│   │           │   │   │   ├── acm_receive_test.h
│   │           │   │   │   ├── acm_receiver.cc
│   │           │   │   │   ├── acm_receiver.h
│   │           │   │   │   ├── acm_receiver_unittest.cc
│   │           │   │   │   ├── acm_remixing.cc
│   │           │   │   │   ├── acm_remixing.h
│   │           │   │   │   ├── acm_remixing_unittest.cc
│   │           │   │   │   ├── acm_resampler.cc
│   │           │   │   │   ├── acm_resampler.h
│   │           │   │   │   ├── acm_send_test.cc
│   │           │   │   │   ├── acm_send_test.h
│   │           │   │   │   ├── audio_coding_module.cc
│   │           │   │   │   ├── audio_coding_module_unittest.cc
│   │           │   │   │   ├── call_statistics.cc
│   │           │   │   │   ├── call_statistics.h
│   │           │   │   │   └── call_statistics_unittest.cc
│   │           │   │   ├── audio_coding.gni
│   │           │   │   ├── audio_network_adaptor/
│   │           │   │   │   ├── audio_network_adaptor_config.cc
│   │           │   │   │   ├── audio_network_adaptor_impl.cc
│   │           │   │   │   ├── audio_network_adaptor_impl.h
│   │           │   │   │   ├── audio_network_adaptor_impl_unittest.cc
│   │           │   │   │   ├── bitrate_controller.cc
│   │           │   │   │   ├── bitrate_controller.h
│   │           │   │   │   ├── bitrate_controller_unittest.cc
│   │           │   │   │   ├── channel_controller.cc
│   │           │   │   │   ├── channel_controller.h
│   │           │   │   │   ├── channel_controller_unittest.cc
│   │           │   │   │   ├── config.proto
│   │           │   │   │   ├── controller.cc
│   │           │   │   │   ├── controller.h
│   │           │   │   │   ├── controller_manager.cc
│   │           │   │   │   ├── controller_manager.h
│   │           │   │   │   ├── controller_manager_unittest.cc
│   │           │   │   │   ├── debug_dump.proto
│   │           │   │   │   ├── debug_dump_writer.cc
│   │           │   │   │   ├── debug_dump_writer.h
│   │           │   │   │   ├── dtx_controller.cc
│   │           │   │   │   ├── dtx_controller.h
│   │           │   │   │   ├── dtx_controller_unittest.cc
│   │           │   │   │   ├── event_log_writer.cc
│   │           │   │   │   ├── event_log_writer.h
│   │           │   │   │   ├── event_log_writer_unittest.cc
│   │           │   │   │   ├── fec_controller_plr_based.cc
│   │           │   │   │   ├── fec_controller_plr_based.h
│   │           │   │   │   ├── fec_controller_plr_based_unittest.cc
│   │           │   │   │   ├── frame_length_controller.cc
│   │           │   │   │   ├── frame_length_controller.h
│   │           │   │   │   ├── frame_length_controller_unittest.cc
│   │           │   │   │   ├── frame_length_controller_v2.cc
│   │           │   │   │   ├── frame_length_controller_v2.h
│   │           │   │   │   ├── frame_length_controller_v2_unittest.cc
│   │           │   │   │   ├── include/
│   │           │   │   │   │   ├── audio_network_adaptor.h
│   │           │   │   │   │   └── audio_network_adaptor_config.h
│   │           │   │   │   ├── mock/
│   │           │   │   │   │   ├── mock_audio_network_adaptor.h
│   │           │   │   │   │   ├── mock_controller.h
│   │           │   │   │   │   ├── mock_controller_manager.h
│   │           │   │   │   │   └── mock_debug_dump_writer.h
│   │           │   │   │   ├── parse_ana_dump.py
│   │           │   │   │   └── util/
│   │           │   │   │       ├── threshold_curve.h
│   │           │   │   │       └── threshold_curve_unittest.cc
│   │           │   │   ├── codecs/
│   │           │   │   │   ├── audio_decoder.h
│   │           │   │   │   ├── audio_encoder.h
│   │           │   │   │   ├── builtin_audio_decoder_factory_unittest.cc
│   │           │   │   │   ├── builtin_audio_encoder_factory_unittest.cc
│   │           │   │   │   ├── cng/
│   │           │   │   │   │   ├── audio_encoder_cng.cc
│   │           │   │   │   │   ├── audio_encoder_cng.h
│   │           │   │   │   │   ├── audio_encoder_cng_unittest.cc
│   │           │   │   │   │   ├── cng_unittest.cc
│   │           │   │   │   │   ├── webrtc_cng.cc
│   │           │   │   │   │   └── webrtc_cng.h
│   │           │   │   │   ├── g711/
│   │           │   │   │   │   ├── audio_decoder_pcm.cc
│   │           │   │   │   │   ├── audio_decoder_pcm.h
│   │           │   │   │   │   ├── audio_encoder_pcm.cc
│   │           │   │   │   │   ├── audio_encoder_pcm.h
│   │           │   │   │   │   ├── g711_interface.c
│   │           │   │   │   │   ├── g711_interface.h
│   │           │   │   │   │   └── test/
│   │           │   │   │   │       └── testG711.cc
│   │           │   │   │   ├── g722/
│   │           │   │   │   │   ├── audio_decoder_g722.cc
│   │           │   │   │   │   ├── audio_decoder_g722.h
│   │           │   │   │   │   ├── audio_encoder_g722.cc
│   │           │   │   │   │   ├── audio_encoder_g722.h
│   │           │   │   │   │   ├── g722_interface.c
│   │           │   │   │   │   ├── g722_interface.h
│   │           │   │   │   │   └── test/
│   │           │   │   │   │       └── testG722.cc
│   │           │   │   │   ├── ilbc/
│   │           │   │   │   │   ├── abs_quant.c
│   │           │   │   │   │   ├── abs_quant.h
│   │           │   │   │   │   ├── abs_quant_loop.c
│   │           │   │   │   │   ├── abs_quant_loop.h
│   │           │   │   │   │   ├── audio_decoder_ilbc.cc
│   │           │   │   │   │   ├── audio_decoder_ilbc.h
│   │           │   │   │   │   ├── audio_encoder_ilbc.cc
│   │           │   │   │   │   ├── audio_encoder_ilbc.h
│   │           │   │   │   │   ├── augmented_cb_corr.c
│   │           │   │   │   │   ├── augmented_cb_corr.h
│   │           │   │   │   │   ├── bw_expand.c
│   │           │   │   │   │   ├── bw_expand.h
│   │           │   │   │   │   ├── cb_construct.c
│   │           │   │   │   │   ├── cb_construct.h
│   │           │   │   │   │   ├── cb_mem_energy.c
│   │           │   │   │   │   ├── cb_mem_energy.h
│   │           │   │   │   │   ├── cb_mem_energy_augmentation.c
│   │           │   │   │   │   ├── cb_mem_energy_augmentation.h
│   │           │   │   │   │   ├── cb_mem_energy_calc.c
│   │           │   │   │   │   ├── cb_mem_energy_calc.h
│   │           │   │   │   │   ├── cb_search.c
│   │           │   │   │   │   ├── cb_search.h
│   │           │   │   │   │   ├── cb_search_core.c
│   │           │   │   │   │   ├── cb_search_core.h
│   │           │   │   │   │   ├── cb_update_best_index.c
│   │           │   │   │   │   ├── cb_update_best_index.h
│   │           │   │   │   │   ├── chebyshev.c
│   │           │   │   │   │   ├── chebyshev.h
│   │           │   │   │   │   ├── comp_corr.c
│   │           │   │   │   │   ├── comp_corr.h
│   │           │   │   │   │   ├── complexityMeasures.m
│   │           │   │   │   │   ├── constants.c
│   │           │   │   │   │   ├── constants.h
│   │           │   │   │   │   ├── create_augmented_vec.c
│   │           │   │   │   │   ├── create_augmented_vec.h
│   │           │   │   │   │   ├── decode.c
│   │           │   │   │   │   ├── decode.h
│   │           │   │   │   │   ├── decode_residual.c
│   │           │   │   │   │   ├── decode_residual.h
│   │           │   │   │   │   ├── decoder_interpolate_lsf.c
│   │           │   │   │   │   ├── decoder_interpolate_lsf.h
│   │           │   │   │   │   ├── defines.h
│   │           │   │   │   │   ├── do_plc.c
│   │           │   │   │   │   ├── do_plc.h
│   │           │   │   │   │   ├── encode.c
│   │           │   │   │   │   ├── encode.h
│   │           │   │   │   │   ├── energy_inverse.c
│   │           │   │   │   │   ├── energy_inverse.h
│   │           │   │   │   │   ├── enh_upsample.c
│   │           │   │   │   │   ├── enh_upsample.h
│   │           │   │   │   │   ├── enhancer.c
│   │           │   │   │   │   ├── enhancer.h
│   │           │   │   │   │   ├── enhancer_interface.c
│   │           │   │   │   │   ├── enhancer_interface.h
│   │           │   │   │   │   ├── filtered_cb_vecs.c
│   │           │   │   │   │   ├── filtered_cb_vecs.h
│   │           │   │   │   │   ├── frame_classify.c
│   │           │   │   │   │   ├── frame_classify.h
│   │           │   │   │   │   ├── gain_dequant.c
│   │           │   │   │   │   ├── gain_dequant.h
│   │           │   │   │   │   ├── gain_quant.c
│   │           │   │   │   │   ├── gain_quant.h
│   │           │   │   │   │   ├── get_cd_vec.c
│   │           │   │   │   │   ├── get_cd_vec.h
│   │           │   │   │   │   ├── get_lsp_poly.c
│   │           │   │   │   │   ├── get_lsp_poly.h
│   │           │   │   │   │   ├── get_sync_seq.c
│   │           │   │   │   │   ├── get_sync_seq.h
│   │           │   │   │   │   ├── hp_input.c
│   │           │   │   │   │   ├── hp_input.h
│   │           │   │   │   │   ├── hp_output.c
│   │           │   │   │   │   ├── hp_output.h
│   │           │   │   │   │   ├── ilbc.c
│   │           │   │   │   │   ├── ilbc.h
│   │           │   │   │   │   ├── ilbc_unittest.cc
│   │           │   │   │   │   ├── index_conv_dec.c
│   │           │   │   │   │   ├── index_conv_dec.h
│   │           │   │   │   │   ├── index_conv_enc.c
│   │           │   │   │   │   ├── index_conv_enc.h
│   │           │   │   │   │   ├── init_decode.c
│   │           │   │   │   │   ├── init_decode.h
│   │           │   │   │   │   ├── init_encode.c
│   │           │   │   │   │   ├── init_encode.h
│   │           │   │   │   │   ├── interpolate.c
│   │           │   │   │   │   ├── interpolate.h
│   │           │   │   │   │   ├── interpolate_samples.c
│   │           │   │   │   │   ├── interpolate_samples.h
│   │           │   │   │   │   ├── lpc_encode.c
│   │           │   │   │   │   ├── lpc_encode.h
│   │           │   │   │   │   ├── lsf_check.c
│   │           │   │   │   │   ├── lsf_check.h
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_dec.c
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_dec.h
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_enc.c
│   │           │   │   │   │   ├── lsf_interpolate_to_poly_enc.h
│   │           │   │   │   │   ├── lsf_to_lsp.c
│   │           │   │   │   │   ├── lsf_to_lsp.h
│   │           │   │   │   │   ├── lsf_to_poly.c
│   │           │   │   │   │   ├── lsf_to_poly.h
│   │           │   │   │   │   ├── lsp_to_lsf.c
│   │           │   │   │   │   ├── lsp_to_lsf.h
│   │           │   │   │   │   ├── my_corr.c
│   │           │   │   │   │   ├── my_corr.h
│   │           │   │   │   │   ├── nearest_neighbor.c
│   │           │   │   │   │   ├── nearest_neighbor.h
│   │           │   │   │   │   ├── pack_bits.c
│   │           │   │   │   │   ├── pack_bits.h
│   │           │   │   │   │   ├── poly_to_lsf.c
│   │           │   │   │   │   ├── poly_to_lsf.h
│   │           │   │   │   │   ├── poly_to_lsp.c
│   │           │   │   │   │   ├── poly_to_lsp.h
│   │           │   │   │   │   ├── refiner.c
│   │           │   │   │   │   ├── refiner.h
│   │           │   │   │   │   ├── simple_interpolate_lsf.c
│   │           │   │   │   │   ├── simple_interpolate_lsf.h
│   │           │   │   │   │   ├── simple_lpc_analysis.c
│   │           │   │   │   │   ├── simple_lpc_analysis.h
│   │           │   │   │   │   ├── simple_lsf_dequant.c
│   │           │   │   │   │   ├── simple_lsf_dequant.h
│   │           │   │   │   │   ├── simple_lsf_quant.c
│   │           │   │   │   │   ├── simple_lsf_quant.h
│   │           │   │   │   │   ├── smooth.c
│   │           │   │   │   │   ├── smooth.h
│   │           │   │   │   │   ├── smooth_out_data.c
│   │           │   │   │   │   ├── smooth_out_data.h
│   │           │   │   │   │   ├── sort_sq.c
│   │           │   │   │   │   ├── sort_sq.h
│   │           │   │   │   │   ├── split_vq.c
│   │           │   │   │   │   ├── split_vq.h
│   │           │   │   │   │   ├── state_construct.c
│   │           │   │   │   │   ├── state_construct.h
│   │           │   │   │   │   ├── state_search.c
│   │           │   │   │   │   ├── state_search.h
│   │           │   │   │   │   ├── swap_bytes.c
│   │           │   │   │   │   ├── swap_bytes.h
│   │           │   │   │   │   ├── test/
│   │           │   │   │   │   │   ├── empty.cc
│   │           │   │   │   │   │   ├── iLBC_test.c
│   │           │   │   │   │   │   ├── iLBC_testLib.c
│   │           │   │   │   │   │   └── iLBC_testprogram.c
│   │           │   │   │   │   ├── unpack_bits.c
│   │           │   │   │   │   ├── unpack_bits.h
│   │           │   │   │   │   ├── vq3.c
│   │           │   │   │   │   ├── vq3.h
│   │           │   │   │   │   ├── vq4.c
│   │           │   │   │   │   ├── vq4.h
│   │           │   │   │   │   ├── window32_w32.c
│   │           │   │   │   │   ├── window32_w32.h
│   │           │   │   │   │   ├── xcorr_coef.c
│   │           │   │   │   │   └── xcorr_coef.h
│   │           │   │   │   ├── isac/
│   │           │   │   │   │   ├── audio_decoder_isac_t.h
│   │           │   │   │   │   ├── audio_decoder_isac_t_impl.h
│   │           │   │   │   │   ├── audio_encoder_isac_t.h
│   │           │   │   │   │   ├── audio_encoder_isac_t_impl.h
│   │           │   │   │   │   ├── bandwidth_info.h
│   │           │   │   │   │   ├── empty.cc
│   │           │   │   │   │   ├── fix/
│   │           │   │   │   │   │   ├── include/
│   │           │   │   │   │   │   │   ├── audio_decoder_isacfix.h
│   │           │   │   │   │   │   │   ├── audio_encoder_isacfix.h
│   │           │   │   │   │   │   │   └── isacfix.h
│   │           │   │   │   │   │   ├── source/
│   │           │   │   │   │   │   │   ├── arith_routines.c
│   │           │   │   │   │   │   │   ├── arith_routines_hist.c
│   │           │   │   │   │   │   │   ├── arith_routines_logist.c
│   │           │   │   │   │   │   │   ├── arith_routins.h
│   │           │   │   │   │   │   │   ├── audio_decoder_isacfix.cc
│   │           │   │   │   │   │   │   ├── audio_encoder_isacfix.cc
│   │           │   │   │   │   │   │   ├── bandwidth_estimator.c
│   │           │   │   │   │   │   │   ├── bandwidth_estimator.h
│   │           │   │   │   │   │   │   ├── codec.h
│   │           │   │   │   │   │   │   ├── decode.c
│   │           │   │   │   │   │   │   ├── decode_bwe.c
│   │           │   │   │   │   │   │   ├── decode_plc.c
│   │           │   │   │   │   │   │   ├── encode.c
│   │           │   │   │   │   │   │   ├── entropy_coding.c
│   │           │   │   │   │   │   │   ├── entropy_coding.h
│   │           │   │   │   │   │   │   ├── entropy_coding_mips.c
│   │           │   │   │   │   │   │   ├── entropy_coding_neon.c
│   │           │   │   │   │   │   │   ├── fft.c
│   │           │   │   │   │   │   │   ├── fft.h
│   │           │   │   │   │   │   │   ├── filterbank_internal.h
│   │           │   │   │   │   │   │   ├── filterbank_tables.c
│   │           │   │   │   │   │   │   ├── filterbank_tables.h
│   │           │   │   │   │   │   │   ├── filterbanks.c
│   │           │   │   │   │   │   │   ├── filterbanks_mips.c
│   │           │   │   │   │   │   │   ├── filterbanks_neon.c
│   │           │   │   │   │   │   │   ├── filterbanks_unittest.cc
│   │           │   │   │   │   │   │   ├── filters.c
│   │           │   │   │   │   │   │   ├── filters_mips.c
│   │           │   │   │   │   │   │   ├── filters_neon.c
│   │           │   │   │   │   │   │   ├── filters_unittest.cc
│   │           │   │   │   │   │   │   ├── initialize.c
│   │           │   │   │   │   │   │   ├── isac_fix_type.h
│   │           │   │   │   │   │   │   ├── isacfix.c
│   │           │   │   │   │   │   │   ├── lattice.c
│   │           │   │   │   │   │   │   ├── lattice_armv7.S
│   │           │   │   │   │   │   │   ├── lattice_c.c
│   │           │   │   │   │   │   │   ├── lattice_mips.c
│   │           │   │   │   │   │   │   ├── lattice_neon.c
│   │           │   │   │   │   │   │   ├── lpc_masking_model.c
│   │           │   │   │   │   │   │   ├── lpc_masking_model.h
│   │           │   │   │   │   │   │   ├── lpc_masking_model_mips.c
│   │           │   │   │   │   │   │   ├── lpc_masking_model_unittest.cc
│   │           │   │   │   │   │   │   ├── lpc_tables.c
│   │           │   │   │   │   │   │   ├── lpc_tables.h
│   │           │   │   │   │   │   │   ├── pitch_estimator.c
│   │           │   │   │   │   │   │   ├── pitch_estimator.h
│   │           │   │   │   │   │   │   ├── pitch_estimator_c.c
│   │           │   │   │   │   │   │   ├── pitch_estimator_mips.c
│   │           │   │   │   │   │   │   ├── pitch_filter.c
│   │           │   │   │   │   │   │   ├── pitch_filter_armv6.S
│   │           │   │   │   │   │   │   ├── pitch_filter_c.c
│   │           │   │   │   │   │   │   ├── pitch_filter_mips.c
│   │           │   │   │   │   │   │   ├── pitch_gain_tables.c
│   │           │   │   │   │   │   │   ├── pitch_gain_tables.h
│   │           │   │   │   │   │   │   ├── pitch_lag_tables.c
│   │           │   │   │   │   │   │   ├── pitch_lag_tables.h
│   │           │   │   │   │   │   │   ├── settings.h
│   │           │   │   │   │   │   │   ├── spectrum_ar_model_tables.c
│   │           │   │   │   │   │   │   ├── spectrum_ar_model_tables.h
│   │           │   │   │   │   │   │   ├── structs.h
│   │           │   │   │   │   │   │   ├── transform.c
│   │           │   │   │   │   │   │   ├── transform_mips.c
│   │           │   │   │   │   │   │   ├── transform_neon.c
│   │           │   │   │   │   │   │   ├── transform_tables.c
│   │           │   │   │   │   │   │   └── transform_unittest.cc
│   │           │   │   │   │   │   └── test/
│   │           │   │   │   │   │       ├── isac_speed_test.cc
│   │           │   │   │   │   │       └── kenny.cc
│   │           │   │   │   │   ├── isac_webrtc_api_test.cc
│   │           │   │   │   │   └── main/
│   │           │   │   │   │       ├── include/
│   │           │   │   │   │       │   ├── audio_decoder_isac.h
│   │           │   │   │   │       │   ├── audio_encoder_isac.h
│   │           │   │   │   │       │   └── isac.h
│   │           │   │   │   │       ├── source/
│   │           │   │   │   │       │   ├── arith_routines.c
│   │           │   │   │   │       │   ├── arith_routines.h
│   │           │   │   │   │       │   ├── arith_routines_hist.c
│   │           │   │   │   │       │   ├── arith_routines_logist.c
│   │           │   │   │   │       │   ├── audio_decoder_isac.cc
│   │           │   │   │   │       │   ├── audio_encoder_isac.cc
│   │           │   │   │   │       │   ├── audio_encoder_isac_unittest.cc
│   │           │   │   │   │       │   ├── bandwidth_estimator.c
│   │           │   │   │   │       │   ├── bandwidth_estimator.h
│   │           │   │   │   │       │   ├── codec.h
│   │           │   │   │   │       │   ├── crc.c
│   │           │   │   │   │       │   ├── crc.h
│   │           │   │   │   │       │   ├── decode.c
│   │           │   │   │   │       │   ├── decode_bwe.c
│   │           │   │   │   │       │   ├── encode.c
│   │           │   │   │   │       │   ├── encode_lpc_swb.c
│   │           │   │   │   │       │   ├── encode_lpc_swb.h
│   │           │   │   │   │       │   ├── entropy_coding.c
│   │           │   │   │   │       │   ├── entropy_coding.h
│   │           │   │   │   │       │   ├── filter_functions.c
│   │           │   │   │   │       │   ├── filter_functions.h
│   │           │   │   │   │       │   ├── filterbanks.c
│   │           │   │   │   │       │   ├── intialize.c
│   │           │   │   │   │       │   ├── isac.c
│   │           │   │   │   │       │   ├── isac_float_type.h
│   │           │   │   │   │       │   ├── isac_unittest.cc
│   │           │   │   │   │       │   ├── isac_vad.c
│   │           │   │   │   │       │   ├── isac_vad.h
│   │           │   │   │   │       │   ├── lattice.c
│   │           │   │   │   │       │   ├── lpc_analysis.c
│   │           │   │   │   │       │   ├── lpc_analysis.h
│   │           │   │   │   │       │   ├── lpc_gain_swb_tables.c
│   │           │   │   │   │       │   ├── lpc_gain_swb_tables.h
│   │           │   │   │   │       │   ├── lpc_shape_swb12_tables.c
│   │           │   │   │   │       │   ├── lpc_shape_swb12_tables.h
│   │           │   │   │   │       │   ├── lpc_shape_swb16_tables.c
│   │           │   │   │   │       │   ├── lpc_shape_swb16_tables.h
│   │           │   │   │   │       │   ├── lpc_tables.c
│   │           │   │   │   │       │   ├── lpc_tables.h
│   │           │   │   │   │       │   ├── os_specific_inline.h
│   │           │   │   │   │       │   ├── pitch_estimator.c
│   │           │   │   │   │       │   ├── pitch_estimator.h
│   │           │   │   │   │       │   ├── pitch_filter.c
│   │           │   │   │   │       │   ├── pitch_filter.h
│   │           │   │   │   │       │   ├── pitch_gain_tables.c
│   │           │   │   │   │       │   ├── pitch_gain_tables.h
│   │           │   │   │   │       │   ├── pitch_lag_tables.c
│   │           │   │   │   │       │   ├── pitch_lag_tables.h
│   │           │   │   │   │       │   ├── settings.h
│   │           │   │   │   │       │   ├── spectrum_ar_model_tables.c
│   │           │   │   │   │       │   ├── spectrum_ar_model_tables.h
│   │           │   │   │   │       │   ├── structs.h
│   │           │   │   │   │       │   └── transform.c
│   │           │   │   │   │       ├── test/
│   │           │   │   │   │       │   ├── ReleaseTest-API/
│   │           │   │   │   │       │   │   └── ReleaseTest-API.cc
│   │           │   │   │   │       │   ├── SwitchingSampRate/
│   │           │   │   │   │       │   │   └── SwitchingSampRate.cc
│   │           │   │   │   │       │   └── simpleKenny.c
│   │           │   │   │   │       └── util/
│   │           │   │   │   │           ├── utility.c
│   │           │   │   │   │           └── utility.h
│   │           │   │   │   ├── legacy_encoded_audio_frame.cc
│   │           │   │   │   ├── legacy_encoded_audio_frame.h
│   │           │   │   │   ├── legacy_encoded_audio_frame_unittest.cc
│   │           │   │   │   ├── opus/
│   │           │   │   │   │   ├── audio_coder_opus_common.cc
│   │           │   │   │   │   ├── audio_coder_opus_common.h
│   │           │   │   │   │   ├── audio_decoder_multi_channel_opus_impl.cc
│   │           │   │   │   │   ├── audio_decoder_multi_channel_opus_impl.h
│   │           │   │   │   │   ├── audio_decoder_multi_channel_opus_unittest.cc
│   │           │   │   │   │   ├── audio_decoder_opus.cc
│   │           │   │   │   │   ├── audio_decoder_opus.h
│   │           │   │   │   │   ├── audio_encoder_multi_channel_opus_impl.cc
│   │           │   │   │   │   ├── audio_encoder_multi_channel_opus_impl.h
│   │           │   │   │   │   ├── audio_encoder_multi_channel_opus_unittest.cc
│   │           │   │   │   │   ├── audio_encoder_opus.cc
│   │           │   │   │   │   ├── audio_encoder_opus.h
│   │           │   │   │   │   ├── audio_encoder_opus_unittest.cc
│   │           │   │   │   │   ├── opus_bandwidth_unittest.cc
│   │           │   │   │   │   ├── opus_complexity_unittest.cc
│   │           │   │   │   │   ├── opus_fec_test.cc
│   │           │   │   │   │   ├── opus_inst.h
│   │           │   │   │   │   ├── opus_interface.cc
│   │           │   │   │   │   ├── opus_interface.h
│   │           │   │   │   │   ├── opus_speed_test.cc
│   │           │   │   │   │   ├── opus_unittest.cc
│   │           │   │   │   │   └── test/
│   │           │   │   │   │       ├── BUILD.gn
│   │           │   │   │   │       ├── audio_ring_buffer.cc
│   │           │   │   │   │       ├── audio_ring_buffer.h
│   │           │   │   │   │       ├── audio_ring_buffer_unittest.cc
│   │           │   │   │   │       ├── blocker.cc
│   │           │   │   │   │       ├── blocker.h
│   │           │   │   │   │       ├── blocker_unittest.cc
│   │           │   │   │   │       ├── lapped_transform.cc
│   │           │   │   │   │       ├── lapped_transform.h
│   │           │   │   │   │       └── lapped_transform_unittest.cc
│   │           │   │   │   ├── pcm16b/
│   │           │   │   │   │   ├── audio_decoder_pcm16b.cc
│   │           │   │   │   │   ├── audio_decoder_pcm16b.h
│   │           │   │   │   │   ├── audio_encoder_pcm16b.cc
│   │           │   │   │   │   ├── audio_encoder_pcm16b.h
│   │           │   │   │   │   ├── pcm16b.c
│   │           │   │   │   │   ├── pcm16b.h
│   │           │   │   │   │   ├── pcm16b_common.cc
│   │           │   │   │   │   └── pcm16b_common.h
│   │           │   │   │   ├── red/
│   │           │   │   │   │   ├── audio_encoder_copy_red.cc
│   │           │   │   │   │   ├── audio_encoder_copy_red.h
│   │           │   │   │   │   └── audio_encoder_copy_red_unittest.cc
│   │           │   │   │   └── tools/
│   │           │   │   │       ├── audio_codec_speed_test.cc
│   │           │   │   │       └── audio_codec_speed_test.h
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── index.md
│   │           │   │   ├── include/
│   │           │   │   │   ├── audio_coding_module.h
│   │           │   │   │   └── audio_coding_module_typedefs.h
│   │           │   │   ├── neteq/
│   │           │   │   │   ├── accelerate.cc
│   │           │   │   │   ├── accelerate.h
│   │           │   │   │   ├── audio_decoder_unittest.cc
│   │           │   │   │   ├── audio_multi_vector.cc
│   │           │   │   │   ├── audio_multi_vector.h
│   │           │   │   │   ├── audio_multi_vector_unittest.cc
│   │           │   │   │   ├── audio_vector.cc
│   │           │   │   │   ├── audio_vector.h
│   │           │   │   │   ├── audio_vector_unittest.cc
│   │           │   │   │   ├── background_noise.cc
│   │           │   │   │   ├── background_noise.h
│   │           │   │   │   ├── background_noise_unittest.cc
│   │           │   │   │   ├── buffer_level_filter.cc
│   │           │   │   │   ├── buffer_level_filter.h
│   │           │   │   │   ├── buffer_level_filter_unittest.cc
│   │           │   │   │   ├── comfort_noise.cc
│   │           │   │   │   ├── comfort_noise.h
│   │           │   │   │   ├── comfort_noise_unittest.cc
│   │           │   │   │   ├── cross_correlation.cc
│   │           │   │   │   ├── cross_correlation.h
│   │           │   │   │   ├── decision_logic.cc
│   │           │   │   │   ├── decision_logic.h
│   │           │   │   │   ├── decision_logic_unittest.cc
│   │           │   │   │   ├── decoder_database.cc
│   │           │   │   │   ├── decoder_database.h
│   │           │   │   │   ├── decoder_database_unittest.cc
│   │           │   │   │   ├── default_neteq_factory.cc
│   │           │   │   │   ├── default_neteq_factory.h
│   │           │   │   │   ├── delay_manager.cc
│   │           │   │   │   ├── delay_manager.h
│   │           │   │   │   ├── delay_manager_unittest.cc
│   │           │   │   │   ├── dsp_helper.cc
│   │           │   │   │   ├── dsp_helper.h
│   │           │   │   │   ├── dsp_helper_unittest.cc
│   │           │   │   │   ├── dtmf_buffer.cc
│   │           │   │   │   ├── dtmf_buffer.h
│   │           │   │   │   ├── dtmf_buffer_unittest.cc
│   │           │   │   │   ├── dtmf_tone_generator.cc
│   │           │   │   │   ├── dtmf_tone_generator.h
│   │           │   │   │   ├── dtmf_tone_generator_unittest.cc
│   │           │   │   │   ├── expand.cc
│   │           │   │   │   ├── expand.h
│   │           │   │   │   ├── expand_uma_logger.cc
│   │           │   │   │   ├── expand_uma_logger.h
│   │           │   │   │   ├── expand_unittest.cc
│   │           │   │   │   ├── g3doc/
│   │           │   │   │   │   └── index.md
│   │           │   │   │   ├── histogram.cc
│   │           │   │   │   ├── histogram.h
│   │           │   │   │   ├── histogram_unittest.cc
│   │           │   │   │   ├── merge.cc
│   │           │   │   │   ├── merge.h
│   │           │   │   │   ├── merge_unittest.cc
│   │           │   │   │   ├── mock/
│   │           │   │   │   │   ├── mock_buffer_level_filter.h
│   │           │   │   │   │   ├── mock_decoder_database.h
│   │           │   │   │   │   ├── mock_delay_manager.h
│   │           │   │   │   │   ├── mock_dtmf_buffer.h
│   │           │   │   │   │   ├── mock_dtmf_tone_generator.h
│   │           │   │   │   │   ├── mock_expand.h
│   │           │   │   │   │   ├── mock_histogram.h
│   │           │   │   │   │   ├── mock_neteq_controller.h
│   │           │   │   │   │   ├── mock_packet_buffer.h
│   │           │   │   │   │   ├── mock_red_payload_splitter.h
│   │           │   │   │   │   └── mock_statistics_calculator.h
│   │           │   │   │   ├── nack_tracker.cc
│   │           │   │   │   ├── nack_tracker.h
│   │           │   │   │   ├── nack_tracker_unittest.cc
│   │           │   │   │   ├── neteq_decoder_plc_unittest.cc
│   │           │   │   │   ├── neteq_impl.cc
│   │           │   │   │   ├── neteq_impl.h
│   │           │   │   │   ├── neteq_impl_unittest.cc
│   │           │   │   │   ├── neteq_network_stats_unittest.cc
│   │           │   │   │   ├── neteq_stereo_unittest.cc
│   │           │   │   │   ├── neteq_unittest.cc
│   │           │   │   │   ├── neteq_unittest.proto
│   │           │   │   │   ├── normal.cc
│   │           │   │   │   ├── normal.h
│   │           │   │   │   ├── normal_unittest.cc
│   │           │   │   │   ├── packet.cc
│   │           │   │   │   ├── packet.h
│   │           │   │   │   ├── packet_buffer.cc
│   │           │   │   │   ├── packet_buffer.h
│   │           │   │   │   ├── packet_buffer_unittest.cc
│   │           │   │   │   ├── post_decode_vad.cc
│   │           │   │   │   ├── post_decode_vad.h
│   │           │   │   │   ├── post_decode_vad_unittest.cc
│   │           │   │   │   ├── preemptive_expand.cc
│   │           │   │   │   ├── preemptive_expand.h
│   │           │   │   │   ├── random_vector.cc
│   │           │   │   │   ├── random_vector.h
│   │           │   │   │   ├── random_vector_unittest.cc
│   │           │   │   │   ├── red_payload_splitter.cc
│   │           │   │   │   ├── red_payload_splitter.h
│   │           │   │   │   ├── red_payload_splitter_unittest.cc
│   │           │   │   │   ├── statistics_calculator.cc
│   │           │   │   │   ├── statistics_calculator.h
│   │           │   │   │   ├── statistics_calculator_unittest.cc
│   │           │   │   │   ├── sync_buffer.cc
│   │           │   │   │   ├── sync_buffer.h
│   │           │   │   │   ├── sync_buffer_unittest.cc
│   │           │   │   │   ├── test/
│   │           │   │   │   │   ├── delay_tool/
│   │           │   │   │   │   │   ├── parse_delay_file.m
│   │           │   │   │   │   │   └── plot_neteq_delay.m
│   │           │   │   │   │   ├── neteq_decoding_test.cc
│   │           │   │   │   │   ├── neteq_decoding_test.h
│   │           │   │   │   │   ├── neteq_ilbc_quality_test.cc
│   │           │   │   │   │   ├── neteq_isac_quality_test.cc
│   │           │   │   │   │   ├── neteq_opus_quality_test.cc
│   │           │   │   │   │   ├── neteq_pcm16b_quality_test.cc
│   │           │   │   │   │   ├── neteq_pcmu_quality_test.cc
│   │           │   │   │   │   ├── neteq_performance_unittest.cc
│   │           │   │   │   │   ├── neteq_speed_test.cc
│   │           │   │   │   │   ├── result_sink.cc
│   │           │   │   │   │   └── result_sink.h
│   │           │   │   │   ├── time_stretch.cc
│   │           │   │   │   ├── time_stretch.h
│   │           │   │   │   ├── time_stretch_unittest.cc
│   │           │   │   │   ├── timestamp_scaler.cc
│   │           │   │   │   ├── timestamp_scaler.h
│   │           │   │   │   ├── timestamp_scaler_unittest.cc
│   │           │   │   │   └── tools/
│   │           │   │   │       ├── DEPS
│   │           │   │   │       ├── README.md
│   │           │   │   │       ├── audio_checksum.h
│   │           │   │   │       ├── audio_loop.cc
│   │           │   │   │       ├── audio_loop.h
│   │           │   │   │       ├── audio_sink.cc
│   │           │   │   │       ├── audio_sink.h
│   │           │   │   │       ├── constant_pcm_packet_source.cc
│   │           │   │   │       ├── constant_pcm_packet_source.h
│   │           │   │   │       ├── encode_neteq_input.cc
│   │           │   │   │       ├── encode_neteq_input.h
│   │           │   │   │       ├── fake_decode_from_file.cc
│   │           │   │   │       ├── fake_decode_from_file.h
│   │           │   │   │       ├── initial_packet_inserter_neteq_input.cc
│   │           │   │   │       ├── initial_packet_inserter_neteq_input.h
│   │           │   │   │       ├── input_audio_file.cc
│   │           │   │   │       ├── input_audio_file.h
│   │           │   │   │       ├── input_audio_file_unittest.cc
│   │           │   │   │       ├── neteq_delay_analyzer.cc
│   │           │   │   │       ├── neteq_delay_analyzer.h
│   │           │   │   │       ├── neteq_event_log_input.cc
│   │           │   │   │       ├── neteq_event_log_input.h
│   │           │   │   │       ├── neteq_input.cc
│   │           │   │   │       ├── neteq_input.h
│   │           │   │   │       ├── neteq_packet_source_input.cc
│   │           │   │   │       ├── neteq_packet_source_input.h
│   │           │   │   │       ├── neteq_performance_test.cc
│   │           │   │   │       ├── neteq_performance_test.h
│   │           │   │   │       ├── neteq_quality_test.cc
│   │           │   │   │       ├── neteq_quality_test.h
│   │           │   │   │       ├── neteq_replacement_input.cc
│   │           │   │   │       ├── neteq_replacement_input.h
│   │           │   │   │       ├── neteq_rtpplay.cc
│   │           │   │   │       ├── neteq_rtpplay_test.sh
│   │           │   │   │       ├── neteq_stats_getter.cc
│   │           │   │   │       ├── neteq_stats_getter.h
│   │           │   │   │       ├── neteq_stats_plotter.cc
│   │           │   │   │       ├── neteq_stats_plotter.h
│   │           │   │   │       ├── neteq_test.cc
│   │           │   │   │       ├── neteq_test.h
│   │           │   │   │       ├── neteq_test_factory.cc
│   │           │   │   │       ├── neteq_test_factory.h
│   │           │   │   │       ├── output_audio_file.h
│   │           │   │   │       ├── output_wav_file.h
│   │           │   │   │       ├── packet.cc
│   │           │   │   │       ├── packet.h
│   │           │   │   │       ├── packet_source.cc
│   │           │   │   │       ├── packet_source.h
│   │           │   │   │       ├── packet_unittest.cc
│   │           │   │   │       ├── resample_input_audio_file.cc
│   │           │   │   │       ├── resample_input_audio_file.h
│   │           │   │   │       ├── rtc_event_log_source.cc
│   │           │   │   │       ├── rtc_event_log_source.h
│   │           │   │   │       ├── rtp_analyze.cc
│   │           │   │   │       ├── rtp_encode.cc
│   │           │   │   │       ├── rtp_file_source.cc
│   │           │   │   │       ├── rtp_file_source.h
│   │           │   │   │       ├── rtp_generator.cc
│   │           │   │   │       ├── rtp_generator.h
│   │           │   │   │       ├── rtp_jitter.cc
│   │           │   │   │       └── rtpcat.cc
│   │           │   │   └── test/
│   │           │   │       ├── Channel.cc
│   │           │   │       ├── Channel.h
│   │           │   │       ├── EncodeDecodeTest.cc
│   │           │   │       ├── EncodeDecodeTest.h
│   │           │   │       ├── PCMFile.cc
│   │           │   │       ├── PCMFile.h
│   │           │   │       ├── PacketLossTest.cc
│   │           │   │       ├── PacketLossTest.h
│   │           │   │       ├── RTPFile.cc
│   │           │   │       ├── RTPFile.h
│   │           │   │       ├── TestAllCodecs.cc
│   │           │   │       ├── TestAllCodecs.h
│   │           │   │       ├── TestRedFec.cc
│   │           │   │       ├── TestRedFec.h
│   │           │   │       ├── TestStereo.cc
│   │           │   │       ├── TestStereo.h
│   │           │   │       ├── TestVADDTX.cc
│   │           │   │       ├── TestVADDTX.h
│   │           │   │       ├── Tester.cc
│   │           │   │       ├── TwoWayCommunication.cc
│   │           │   │       ├── TwoWayCommunication.h
│   │           │   │       ├── iSACTest.cc
│   │           │   │       ├── iSACTest.h
│   │           │   │       ├── opus_test.cc
│   │           │   │       ├── opus_test.h
│   │           │   │       └── target_delay_unittest.cc
│   │           │   ├── audio_device/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── android/
│   │           │   │   │   ├── aaudio_player.cc
│   │           │   │   │   ├── aaudio_player.h
│   │           │   │   │   ├── aaudio_recorder.cc
│   │           │   │   │   ├── aaudio_recorder.h
│   │           │   │   │   ├── aaudio_wrapper.cc
│   │           │   │   │   ├── aaudio_wrapper.h
│   │           │   │   │   ├── audio_common.h
│   │           │   │   │   ├── audio_device_template.h
│   │           │   │   │   ├── audio_device_unittest.cc
│   │           │   │   │   ├── audio_manager.cc
│   │           │   │   │   ├── audio_manager.h
│   │           │   │   │   ├── audio_manager_unittest.cc
│   │           │   │   │   ├── audio_record_jni.cc
│   │           │   │   │   ├── audio_record_jni.h
│   │           │   │   │   ├── audio_track_jni.cc
│   │           │   │   │   ├── audio_track_jni.h
│   │           │   │   │   ├── build_info.cc
│   │           │   │   │   ├── build_info.h
│   │           │   │   │   ├── ensure_initialized.cc
│   │           │   │   │   ├── ensure_initialized.h
│   │           │   │   │   ├── java/
│   │           │   │   │   │   └── src/
│   │           │   │   │   │       └── org/
│   │           │   │   │   │           └── webrtc/
│   │           │   │   │   │               └── voiceengine/
│   │           │   │   │   │                   ├── BuildInfo.java
│   │           │   │   │   │                   ├── WebRtcAudioEffects.java
│   │           │   │   │   │                   ├── WebRtcAudioManager.java
│   │           │   │   │   │                   ├── WebRtcAudioRecord.java
│   │           │   │   │   │                   ├── WebRtcAudioTrack.java
│   │           │   │   │   │                   └── WebRtcAudioUtils.java
│   │           │   │   │   ├── opensles_common.cc
│   │           │   │   │   ├── opensles_common.h
│   │           │   │   │   ├── opensles_player.cc
│   │           │   │   │   ├── opensles_player.h
│   │           │   │   │   ├── opensles_recorder.cc
│   │           │   │   │   └── opensles_recorder.h
│   │           │   │   ├── audio_device_buffer.cc
│   │           │   │   ├── audio_device_buffer.h
│   │           │   │   ├── audio_device_config.h
│   │           │   │   ├── audio_device_data_observer.cc
│   │           │   │   ├── audio_device_generic.cc
│   │           │   │   ├── audio_device_generic.h
│   │           │   │   ├── audio_device_impl.cc
│   │           │   │   ├── audio_device_impl.h
│   │           │   │   ├── audio_device_name.cc
│   │           │   │   ├── audio_device_name.h
│   │           │   │   ├── audio_device_unittest.cc
│   │           │   │   ├── dummy/
│   │           │   │   │   ├── audio_device_dummy.cc
│   │           │   │   │   ├── audio_device_dummy.h
│   │           │   │   │   ├── file_audio_device.cc
│   │           │   │   │   ├── file_audio_device.h
│   │           │   │   │   ├── file_audio_device_factory.cc
│   │           │   │   │   └── file_audio_device_factory.h
│   │           │   │   ├── fine_audio_buffer.cc
│   │           │   │   ├── fine_audio_buffer.h
│   │           │   │   ├── fine_audio_buffer_unittest.cc
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── audio_device_module.md
│   │           │   │   ├── include/
│   │           │   │   │   ├── audio_device.h
│   │           │   │   │   ├── audio_device_data_observer.h
│   │           │   │   │   ├── audio_device_default.h
│   │           │   │   │   ├── audio_device_defines.h
│   │           │   │   │   ├── audio_device_factory.cc
│   │           │   │   │   ├── audio_device_factory.h
│   │           │   │   │   ├── fake_audio_device.h
│   │           │   │   │   ├── mock_audio_device.h
│   │           │   │   │   ├── mock_audio_transport.h
│   │           │   │   │   ├── test_audio_device.cc
│   │           │   │   │   ├── test_audio_device.h
│   │           │   │   │   └── test_audio_device_unittest.cc
│   │           │   │   ├── linux/
│   │           │   │   │   ├── alsasymboltable_linux.cc
│   │           │   │   │   ├── alsasymboltable_linux.h
│   │           │   │   │   ├── audio_device_alsa_linux.cc
│   │           │   │   │   ├── audio_device_alsa_linux.h
│   │           │   │   │   ├── audio_device_pulse_linux.cc
│   │           │   │   │   ├── audio_device_pulse_linux.h
│   │           │   │   │   ├── audio_mixer_manager_alsa_linux.cc
│   │           │   │   │   ├── audio_mixer_manager_alsa_linux.h
│   │           │   │   │   ├── audio_mixer_manager_pulse_linux.cc
│   │           │   │   │   ├── audio_mixer_manager_pulse_linux.h
│   │           │   │   │   ├── latebindingsymboltable_linux.cc
│   │           │   │   │   ├── latebindingsymboltable_linux.h
│   │           │   │   │   ├── pulseaudiosymboltable_linux.cc
│   │           │   │   │   └── pulseaudiosymboltable_linux.h
│   │           │   │   ├── mac/
│   │           │   │   │   ├── audio_device_mac.cc
│   │           │   │   │   ├── audio_device_mac.h
│   │           │   │   │   ├── audio_mixer_manager_mac.cc
│   │           │   │   │   └── audio_mixer_manager_mac.h
│   │           │   │   ├── mock_audio_device_buffer.h
│   │           │   │   └── win/
│   │           │   │       ├── audio_device_core_win.cc
│   │           │   │       ├── audio_device_core_win.h
│   │           │   │       ├── audio_device_module_win.cc
│   │           │   │       ├── audio_device_module_win.h
│   │           │   │       ├── core_audio_base_win.cc
│   │           │   │       ├── core_audio_base_win.h
│   │           │   │       ├── core_audio_input_win.cc
│   │           │   │       ├── core_audio_input_win.h
│   │           │   │       ├── core_audio_output_win.cc
│   │           │   │       ├── core_audio_output_win.h
│   │           │   │       ├── core_audio_utility_win.cc
│   │           │   │       ├── core_audio_utility_win.h
│   │           │   │       └── core_audio_utility_win_unittest.cc
│   │           │   ├── audio_mixer/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── audio_frame_manipulator.cc
│   │           │   │   ├── audio_frame_manipulator.h
│   │           │   │   ├── audio_frame_manipulator_unittest.cc
│   │           │   │   ├── audio_mixer_impl.cc
│   │           │   │   ├── audio_mixer_impl.h
│   │           │   │   ├── audio_mixer_impl_unittest.cc
│   │           │   │   ├── audio_mixer_test.cc
│   │           │   │   ├── default_output_rate_calculator.cc
│   │           │   │   ├── default_output_rate_calculator.h
│   │           │   │   ├── frame_combiner.cc
│   │           │   │   ├── frame_combiner.h
│   │           │   │   ├── frame_combiner_unittest.cc
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── index.md
│   │           │   │   ├── gain_change_calculator.cc
│   │           │   │   ├── gain_change_calculator.h
│   │           │   │   ├── output_rate_calculator.h
│   │           │   │   ├── sine_wave_generator.cc
│   │           │   │   └── sine_wave_generator.h
│   │           │   ├── audio_processing/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── aec3/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── adaptive_fir_filter.cc
│   │           │   │   │   ├── adaptive_fir_filter.h
│   │           │   │   │   ├── adaptive_fir_filter_avx2.cc
│   │           │   │   │   ├── adaptive_fir_filter_erl.cc
│   │           │   │   │   ├── adaptive_fir_filter_erl.h
│   │           │   │   │   ├── adaptive_fir_filter_erl_avx2.cc
│   │           │   │   │   ├── adaptive_fir_filter_erl_unittest.cc
│   │           │   │   │   ├── adaptive_fir_filter_unittest.cc
│   │           │   │   │   ├── aec3_common.cc
│   │           │   │   │   ├── aec3_common.h
│   │           │   │   │   ├── aec3_fft.cc
│   │           │   │   │   ├── aec3_fft.h
│   │           │   │   │   ├── aec3_fft_unittest.cc
│   │           │   │   │   ├── aec_state.cc
│   │           │   │   │   ├── aec_state.h
│   │           │   │   │   ├── aec_state_unittest.cc
│   │           │   │   │   ├── alignment_mixer.cc
│   │           │   │   │   ├── alignment_mixer.h
│   │           │   │   │   ├── alignment_mixer_unittest.cc
│   │           │   │   │   ├── api_call_jitter_metrics.cc
│   │           │   │   │   ├── api_call_jitter_metrics.h
│   │           │   │   │   ├── api_call_jitter_metrics_unittest.cc
│   │           │   │   │   ├── block_buffer.cc
│   │           │   │   │   ├── block_buffer.h
│   │           │   │   │   ├── block_delay_buffer.cc
│   │           │   │   │   ├── block_delay_buffer.h
│   │           │   │   │   ├── block_delay_buffer_unittest.cc
│   │           │   │   │   ├── block_framer.cc
│   │           │   │   │   ├── block_framer.h
│   │           │   │   │   ├── block_framer_unittest.cc
│   │           │   │   │   ├── block_processor.cc
│   │           │   │   │   ├── block_processor.h
│   │           │   │   │   ├── block_processor_metrics.cc
│   │           │   │   │   ├── block_processor_metrics.h
│   │           │   │   │   ├── block_processor_metrics_unittest.cc
│   │           │   │   │   ├── block_processor_unittest.cc
│   │           │   │   │   ├── clockdrift_detector.cc
│   │           │   │   │   ├── clockdrift_detector.h
│   │           │   │   │   ├── clockdrift_detector_unittest.cc
│   │           │   │   │   ├── coarse_filter_update_gain.cc
│   │           │   │   │   ├── coarse_filter_update_gain.h
│   │           │   │   │   ├── coarse_filter_update_gain_unittest.cc
│   │           │   │   │   ├── comfort_noise_generator.cc
│   │           │   │   │   ├── comfort_noise_generator.h
│   │           │   │   │   ├── comfort_noise_generator_unittest.cc
│   │           │   │   │   ├── decimator.cc
│   │           │   │   │   ├── decimator.h
│   │           │   │   │   ├── decimator_unittest.cc
│   │           │   │   │   ├── delay_estimate.h
│   │           │   │   │   ├── dominant_nearend_detector.cc
│   │           │   │   │   ├── dominant_nearend_detector.h
│   │           │   │   │   ├── downsampled_render_buffer.cc
│   │           │   │   │   ├── downsampled_render_buffer.h
│   │           │   │   │   ├── echo_audibility.cc
│   │           │   │   │   ├── echo_audibility.h
│   │           │   │   │   ├── echo_canceller3.cc
│   │           │   │   │   ├── echo_canceller3.h
│   │           │   │   │   ├── echo_canceller3_unittest.cc
│   │           │   │   │   ├── echo_path_delay_estimator.cc
│   │           │   │   │   ├── echo_path_delay_estimator.h
│   │           │   │   │   ├── echo_path_delay_estimator_unittest.cc
│   │           │   │   │   ├── echo_path_variability.cc
│   │           │   │   │   ├── echo_path_variability.h
│   │           │   │   │   ├── echo_path_variability_unittest.cc
│   │           │   │   │   ├── echo_remover.cc
│   │           │   │   │   ├── echo_remover.h
│   │           │   │   │   ├── echo_remover_metrics.cc
│   │           │   │   │   ├── echo_remover_metrics.h
│   │           │   │   │   ├── echo_remover_metrics_unittest.cc
│   │           │   │   │   ├── echo_remover_unittest.cc
│   │           │   │   │   ├── erl_estimator.cc
│   │           │   │   │   ├── erl_estimator.h
│   │           │   │   │   ├── erl_estimator_unittest.cc
│   │           │   │   │   ├── erle_estimator.cc
│   │           │   │   │   ├── erle_estimator.h
│   │           │   │   │   ├── erle_estimator_unittest.cc
│   │           │   │   │   ├── fft_buffer.cc
│   │           │   │   │   ├── fft_buffer.h
│   │           │   │   │   ├── fft_data.h
│   │           │   │   │   ├── fft_data_avx2.cc
│   │           │   │   │   ├── fft_data_unittest.cc
│   │           │   │   │   ├── filter_analyzer.cc
│   │           │   │   │   ├── filter_analyzer.h
│   │           │   │   │   ├── filter_analyzer_unittest.cc
│   │           │   │   │   ├── frame_blocker.cc
│   │           │   │   │   ├── frame_blocker.h
│   │           │   │   │   ├── frame_blocker_unittest.cc
│   │           │   │   │   ├── fullband_erle_estimator.cc
│   │           │   │   │   ├── fullband_erle_estimator.h
│   │           │   │   │   ├── matched_filter.cc
│   │           │   │   │   ├── matched_filter.h
│   │           │   │   │   ├── matched_filter_avx2.cc
│   │           │   │   │   ├── matched_filter_lag_aggregator.cc
│   │           │   │   │   ├── matched_filter_lag_aggregator.h
│   │           │   │   │   ├── matched_filter_lag_aggregator_unittest.cc
│   │           │   │   │   ├── matched_filter_unittest.cc
│   │           │   │   │   ├── mock/
│   │           │   │   │   │   ├── mock_block_processor.cc
│   │           │   │   │   │   ├── mock_block_processor.h
│   │           │   │   │   │   ├── mock_echo_remover.cc
│   │           │   │   │   │   ├── mock_echo_remover.h
│   │           │   │   │   │   ├── mock_render_delay_buffer.cc
│   │           │   │   │   │   ├── mock_render_delay_buffer.h
│   │           │   │   │   │   ├── mock_render_delay_controller.cc
│   │           │   │   │   │   └── mock_render_delay_controller.h
│   │           │   │   │   ├── moving_average.cc
│   │           │   │   │   ├── moving_average.h
│   │           │   │   │   ├── moving_average_unittest.cc
│   │           │   │   │   ├── nearend_detector.h
│   │           │   │   │   ├── refined_filter_update_gain.cc
│   │           │   │   │   ├── refined_filter_update_gain.h
│   │           │   │   │   ├── refined_filter_update_gain_unittest.cc
│   │           │   │   │   ├── render_buffer.cc
│   │           │   │   │   ├── render_buffer.h
│   │           │   │   │   ├── render_buffer_unittest.cc
│   │           │   │   │   ├── render_delay_buffer.cc
│   │           │   │   │   ├── render_delay_buffer.h
│   │           │   │   │   ├── render_delay_buffer_unittest.cc
│   │           │   │   │   ├── render_delay_controller.cc
│   │           │   │   │   ├── render_delay_controller.h
│   │           │   │   │   ├── render_delay_controller_metrics.cc
│   │           │   │   │   ├── render_delay_controller_metrics.h
│   │           │   │   │   ├── render_delay_controller_metrics_unittest.cc
│   │           │   │   │   ├── render_delay_controller_unittest.cc
│   │           │   │   │   ├── render_signal_analyzer.cc
│   │           │   │   │   ├── render_signal_analyzer.h
│   │           │   │   │   ├── render_signal_analyzer_unittest.cc
│   │           │   │   │   ├── residual_echo_estimator.cc
│   │           │   │   │   ├── residual_echo_estimator.h
│   │           │   │   │   ├── residual_echo_estimator_unittest.cc
│   │           │   │   │   ├── reverb_decay_estimator.cc
│   │           │   │   │   ├── reverb_decay_estimator.h
│   │           │   │   │   ├── reverb_frequency_response.cc
│   │           │   │   │   ├── reverb_frequency_response.h
│   │           │   │   │   ├── reverb_model.cc
│   │           │   │   │   ├── reverb_model.h
│   │           │   │   │   ├── reverb_model_estimator.cc
│   │           │   │   │   ├── reverb_model_estimator.h
│   │           │   │   │   ├── reverb_model_estimator_unittest.cc
│   │           │   │   │   ├── signal_dependent_erle_estimator.cc
│   │           │   │   │   ├── signal_dependent_erle_estimator.h
│   │           │   │   │   ├── signal_dependent_erle_estimator_unittest.cc
│   │           │   │   │   ├── spectrum_buffer.cc
│   │           │   │   │   ├── spectrum_buffer.h
│   │           │   │   │   ├── stationarity_estimator.cc
│   │           │   │   │   ├── stationarity_estimator.h
│   │           │   │   │   ├── subband_erle_estimator.cc
│   │           │   │   │   ├── subband_erle_estimator.h
│   │           │   │   │   ├── subband_nearend_detector.cc
│   │           │   │   │   ├── subband_nearend_detector.h
│   │           │   │   │   ├── subtractor.cc
│   │           │   │   │   ├── subtractor.h
│   │           │   │   │   ├── subtractor_output.cc
│   │           │   │   │   ├── subtractor_output.h
│   │           │   │   │   ├── subtractor_output_analyzer.cc
│   │           │   │   │   ├── subtractor_output_analyzer.h
│   │           │   │   │   ├── subtractor_unittest.cc
│   │           │   │   │   ├── suppression_filter.cc
│   │           │   │   │   ├── suppression_filter.h
│   │           │   │   │   ├── suppression_filter_unittest.cc
│   │           │   │   │   ├── suppression_gain.cc
│   │           │   │   │   ├── suppression_gain.h
│   │           │   │   │   ├── suppression_gain_unittest.cc
│   │           │   │   │   ├── transparent_mode.cc
│   │           │   │   │   ├── transparent_mode.h
│   │           │   │   │   ├── vector_math.h
│   │           │   │   │   ├── vector_math_avx2.cc
│   │           │   │   │   └── vector_math_unittest.cc
│   │           │   │   ├── aec_dump/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── aec_dump_factory.h
│   │           │   │   │   ├── aec_dump_impl.cc
│   │           │   │   │   ├── aec_dump_impl.h
│   │           │   │   │   ├── aec_dump_integration_test.cc
│   │           │   │   │   ├── aec_dump_unittest.cc
│   │           │   │   │   ├── capture_stream_info.cc
│   │           │   │   │   ├── capture_stream_info.h
│   │           │   │   │   ├── mock_aec_dump.cc
│   │           │   │   │   ├── mock_aec_dump.h
│   │           │   │   │   ├── null_aec_dump_factory.cc
│   │           │   │   │   ├── write_to_file_task.cc
│   │           │   │   │   └── write_to_file_task.h
│   │           │   │   ├── aecm/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── aecm_core.cc
│   │           │   │   │   ├── aecm_core.h
│   │           │   │   │   ├── aecm_core_c.cc
│   │           │   │   │   ├── aecm_core_mips.cc
│   │           │   │   │   ├── aecm_core_neon.cc
│   │           │   │   │   ├── aecm_defines.h
│   │           │   │   │   ├── echo_control_mobile.cc
│   │           │   │   │   └── echo_control_mobile.h
│   │           │   │   ├── agc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── agc.cc
│   │           │   │   │   ├── agc.h
│   │           │   │   │   ├── agc_manager_direct.cc
│   │           │   │   │   ├── agc_manager_direct.h
│   │           │   │   │   ├── agc_manager_direct_unittest.cc
│   │           │   │   │   ├── clipping_predictor.cc
│   │           │   │   │   ├── clipping_predictor.h
│   │           │   │   │   ├── clipping_predictor_evaluator.cc
│   │           │   │   │   ├── clipping_predictor_evaluator.h
│   │           │   │   │   ├── clipping_predictor_evaluator_unittest.cc
│   │           │   │   │   ├── clipping_predictor_level_buffer.cc
│   │           │   │   │   ├── clipping_predictor_level_buffer.h
│   │           │   │   │   ├── clipping_predictor_level_buffer_unittest.cc
│   │           │   │   │   ├── clipping_predictor_unittest.cc
│   │           │   │   │   ├── gain_control.h
│   │           │   │   │   ├── gain_map_internal.h
│   │           │   │   │   ├── legacy/
│   │           │   │   │   │   ├── analog_agc.cc
│   │           │   │   │   │   ├── analog_agc.h
│   │           │   │   │   │   ├── digital_agc.cc
│   │           │   │   │   │   ├── digital_agc.h
│   │           │   │   │   │   └── gain_control.h
│   │           │   │   │   ├── loudness_histogram.cc
│   │           │   │   │   ├── loudness_histogram.h
│   │           │   │   │   ├── loudness_histogram_unittest.cc
│   │           │   │   │   ├── mock_agc.h
│   │           │   │   │   ├── utility.cc
│   │           │   │   │   └── utility.h
│   │           │   │   ├── agc2/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── adaptive_agc.cc
│   │           │   │   │   ├── adaptive_agc.h
│   │           │   │   │   ├── adaptive_digital_gain_applier.cc
│   │           │   │   │   ├── adaptive_digital_gain_applier.h
│   │           │   │   │   ├── adaptive_digital_gain_applier_unittest.cc
│   │           │   │   │   ├── adaptive_mode_level_estimator.cc
│   │           │   │   │   ├── adaptive_mode_level_estimator.h
│   │           │   │   │   ├── adaptive_mode_level_estimator_unittest.cc
│   │           │   │   │   ├── agc2_common.h
│   │           │   │   │   ├── agc2_testing_common.cc
│   │           │   │   │   ├── agc2_testing_common.h
│   │           │   │   │   ├── agc2_testing_common_unittest.cc
│   │           │   │   │   ├── biquad_filter.cc
│   │           │   │   │   ├── biquad_filter.h
│   │           │   │   │   ├── biquad_filter_unittest.cc
│   │           │   │   │   ├── compute_interpolated_gain_curve.cc
│   │           │   │   │   ├── compute_interpolated_gain_curve.h
│   │           │   │   │   ├── cpu_features.cc
│   │           │   │   │   ├── cpu_features.h
│   │           │   │   │   ├── down_sampler.cc
│   │           │   │   │   ├── down_sampler.h
│   │           │   │   │   ├── fixed_digital_level_estimator.cc
│   │           │   │   │   ├── fixed_digital_level_estimator.h
│   │           │   │   │   ├── fixed_digital_level_estimator_unittest.cc
│   │           │   │   │   ├── gain_applier.cc
│   │           │   │   │   ├── gain_applier.h
│   │           │   │   │   ├── gain_applier_unittest.cc
│   │           │   │   │   ├── interpolated_gain_curve.cc
│   │           │   │   │   ├── interpolated_gain_curve.h
│   │           │   │   │   ├── interpolated_gain_curve_unittest.cc
│   │           │   │   │   ├── limiter.cc
│   │           │   │   │   ├── limiter.h
│   │           │   │   │   ├── limiter_db_gain_curve.cc
│   │           │   │   │   ├── limiter_db_gain_curve.h
│   │           │   │   │   ├── limiter_db_gain_curve_unittest.cc
│   │           │   │   │   ├── limiter_unittest.cc
│   │           │   │   │   ├── noise_level_estimator.cc
│   │           │   │   │   ├── noise_level_estimator.h
│   │           │   │   │   ├── noise_level_estimator_unittest.cc
│   │           │   │   │   ├── noise_spectrum_estimator.cc
│   │           │   │   │   ├── noise_spectrum_estimator.h
│   │           │   │   │   ├── rnn_vad/
│   │           │   │   │   │   ├── BUILD.gn
│   │           │   │   │   │   ├── DEPS
│   │           │   │   │   │   ├── auto_correlation.cc
│   │           │   │   │   │   ├── auto_correlation.h
│   │           │   │   │   │   ├── auto_correlation_unittest.cc
│   │           │   │   │   │   ├── common.h
│   │           │   │   │   │   ├── features_extraction.cc
│   │           │   │   │   │   ├── features_extraction.h
│   │           │   │   │   │   ├── features_extraction_unittest.cc
│   │           │   │   │   │   ├── lp_residual.cc
│   │           │   │   │   │   ├── lp_residual.h
│   │           │   │   │   │   ├── lp_residual_unittest.cc
│   │           │   │   │   │   ├── pitch_search.cc
│   │           │   │   │   │   ├── pitch_search.h
│   │           │   │   │   │   ├── pitch_search_internal.cc
│   │           │   │   │   │   ├── pitch_search_internal.h
│   │           │   │   │   │   ├── pitch_search_internal_unittest.cc
│   │           │   │   │   │   ├── pitch_search_unittest.cc
│   │           │   │   │   │   ├── ring_buffer.h
│   │           │   │   │   │   ├── ring_buffer_unittest.cc
│   │           │   │   │   │   ├── rnn.cc
│   │           │   │   │   │   ├── rnn.h
│   │           │   │   │   │   ├── rnn_fc.cc
│   │           │   │   │   │   ├── rnn_fc.h
│   │           │   │   │   │   ├── rnn_fc_unittest.cc
│   │           │   │   │   │   ├── rnn_gru.cc
│   │           │   │   │   │   ├── rnn_gru.h
│   │           │   │   │   │   ├── rnn_gru_unittest.cc
│   │           │   │   │   │   ├── rnn_unittest.cc
│   │           │   │   │   │   ├── rnn_vad_tool.cc
│   │           │   │   │   │   ├── rnn_vad_unittest.cc
│   │           │   │   │   │   ├── sequence_buffer.h
│   │           │   │   │   │   ├── sequence_buffer_unittest.cc
│   │           │   │   │   │   ├── spectral_features.cc
│   │           │   │   │   │   ├── spectral_features.h
│   │           │   │   │   │   ├── spectral_features_internal.cc
│   │           │   │   │   │   ├── spectral_features_internal.h
│   │           │   │   │   │   ├── spectral_features_internal_unittest.cc
│   │           │   │   │   │   ├── spectral_features_unittest.cc
│   │           │   │   │   │   ├── symmetric_matrix_buffer.h
│   │           │   │   │   │   ├── symmetric_matrix_buffer_unittest.cc
│   │           │   │   │   │   ├── test_utils.cc
│   │           │   │   │   │   ├── test_utils.h
│   │           │   │   │   │   ├── vector_math.h
│   │           │   │   │   │   ├── vector_math_avx2.cc
│   │           │   │   │   │   └── vector_math_unittest.cc
│   │           │   │   │   ├── saturation_protector.cc
│   │           │   │   │   ├── saturation_protector.h
│   │           │   │   │   ├── saturation_protector_buffer.cc
│   │           │   │   │   ├── saturation_protector_buffer.h
│   │           │   │   │   ├── saturation_protector_buffer_unittest.cc
│   │           │   │   │   ├── saturation_protector_unittest.cc
│   │           │   │   │   ├── signal_classifier.cc
│   │           │   │   │   ├── signal_classifier.h
│   │           │   │   │   ├── signal_classifier_unittest.cc
│   │           │   │   │   ├── vad_with_level.cc
│   │           │   │   │   ├── vad_with_level.h
│   │           │   │   │   ├── vad_with_level_unittest.cc
│   │           │   │   │   ├── vector_float_frame.cc
│   │           │   │   │   └── vector_float_frame.h
│   │           │   │   ├── audio_buffer.cc
│   │           │   │   ├── audio_buffer.h
│   │           │   │   ├── audio_buffer_unittest.cc
│   │           │   │   ├── audio_frame_view_unittest.cc
│   │           │   │   ├── audio_processing_builder_impl.cc
│   │           │   │   ├── audio_processing_impl.cc
│   │           │   │   ├── audio_processing_impl.h
│   │           │   │   ├── audio_processing_impl_locking_unittest.cc
│   │           │   │   ├── audio_processing_impl_unittest.cc
│   │           │   │   ├── audio_processing_performance_unittest.cc
│   │           │   │   ├── audio_processing_unittest.cc
│   │           │   │   ├── capture_levels_adjuster/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── audio_samples_scaler.cc
│   │           │   │   │   ├── audio_samples_scaler.h
│   │           │   │   │   ├── audio_samples_scaler_unittest.cc
│   │           │   │   │   ├── capture_levels_adjuster.cc
│   │           │   │   │   ├── capture_levels_adjuster.h
│   │           │   │   │   └── capture_levels_adjuster_unittest.cc
│   │           │   │   ├── common.h
│   │           │   │   ├── config_unittest.cc
│   │           │   │   ├── debug.proto
│   │           │   │   ├── echo_control_mobile_bit_exact_unittest.cc
│   │           │   │   ├── echo_control_mobile_impl.cc
│   │           │   │   ├── echo_control_mobile_impl.h
│   │           │   │   ├── echo_control_mobile_unittest.cc
│   │           │   │   ├── echo_detector/
│   │           │   │   │   ├── circular_buffer.cc
│   │           │   │   │   ├── circular_buffer.h
│   │           │   │   │   ├── circular_buffer_unittest.cc
│   │           │   │   │   ├── mean_variance_estimator.cc
│   │           │   │   │   ├── mean_variance_estimator.h
│   │           │   │   │   ├── mean_variance_estimator_unittest.cc
│   │           │   │   │   ├── moving_max.cc
│   │           │   │   │   ├── moving_max.h
│   │           │   │   │   ├── moving_max_unittest.cc
│   │           │   │   │   ├── normalized_covariance_estimator.cc
│   │           │   │   │   ├── normalized_covariance_estimator.h
│   │           │   │   │   └── normalized_covariance_estimator_unittest.cc
│   │           │   │   ├── g3doc/
│   │           │   │   │   └── audio_processing_module.md
│   │           │   │   ├── gain_control_impl.cc
│   │           │   │   ├── gain_control_impl.h
│   │           │   │   ├── gain_control_unittest.cc
│   │           │   │   ├── gain_controller2.cc
│   │           │   │   ├── gain_controller2.h
│   │           │   │   ├── gain_controller2_unittest.cc
│   │           │   │   ├── high_pass_filter.cc
│   │           │   │   ├── high_pass_filter.h
│   │           │   │   ├── high_pass_filter_unittest.cc
│   │           │   │   ├── include/
│   │           │   │   │   ├── aec_dump.cc
│   │           │   │   │   ├── aec_dump.h
│   │           │   │   │   ├── audio_frame_proxies.cc
│   │           │   │   │   ├── audio_frame_proxies.h
│   │           │   │   │   ├── audio_frame_view.h
│   │           │   │   │   ├── audio_processing.cc
│   │           │   │   │   ├── audio_processing.h
│   │           │   │   │   ├── audio_processing_statistics.cc
│   │           │   │   │   ├── audio_processing_statistics.h
│   │           │   │   │   ├── config.cc
│   │           │   │   │   ├── config.h
│   │           │   │   │   └── mock_audio_processing.h
│   │           │   │   ├── level_estimator.cc
│   │           │   │   ├── level_estimator.h
│   │           │   │   ├── level_estimator_unittest.cc
│   │           │   │   ├── logging/
│   │           │   │   │   ├── apm_data_dumper.cc
│   │           │   │   │   └── apm_data_dumper.h
│   │           │   │   ├── ns/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── fast_math.cc
│   │           │   │   │   ├── fast_math.h
│   │           │   │   │   ├── histograms.cc
│   │           │   │   │   ├── histograms.h
│   │           │   │   │   ├── noise_estimator.cc
│   │           │   │   │   ├── noise_estimator.h
│   │           │   │   │   ├── noise_suppressor.cc
│   │           │   │   │   ├── noise_suppressor.h
│   │           │   │   │   ├── noise_suppressor_unittest.cc
│   │           │   │   │   ├── ns_common.h
│   │           │   │   │   ├── ns_config.h
│   │           │   │   │   ├── ns_fft.cc
│   │           │   │   │   ├── ns_fft.h
│   │           │   │   │   ├── prior_signal_model.cc
│   │           │   │   │   ├── prior_signal_model.h
│   │           │   │   │   ├── prior_signal_model_estimator.cc
│   │           │   │   │   ├── prior_signal_model_estimator.h
│   │           │   │   │   ├── quantile_noise_estimator.cc
│   │           │   │   │   ├── quantile_noise_estimator.h
│   │           │   │   │   ├── signal_model.cc
│   │           │   │   │   ├── signal_model.h
│   │           │   │   │   ├── signal_model_estimator.cc
│   │           │   │   │   ├── signal_model_estimator.h
│   │           │   │   │   ├── speech_probability_estimator.cc
│   │           │   │   │   ├── speech_probability_estimator.h
│   │           │   │   │   ├── suppression_params.cc
│   │           │   │   │   ├── suppression_params.h
│   │           │   │   │   ├── wiener_filter.cc
│   │           │   │   │   └── wiener_filter.h
│   │           │   │   ├── optionally_built_submodule_creators.cc
│   │           │   │   ├── optionally_built_submodule_creators.h
│   │           │   │   ├── render_queue_item_verifier.h
│   │           │   │   ├── residual_echo_detector.cc
│   │           │   │   ├── residual_echo_detector.h
│   │           │   │   ├── residual_echo_detector_unittest.cc
│   │           │   │   ├── rms_level.cc
│   │           │   │   ├── rms_level.h
│   │           │   │   ├── rms_level_unittest.cc
│   │           │   │   ├── splitting_filter.cc
│   │           │   │   ├── splitting_filter.h
│   │           │   │   ├── splitting_filter_unittest.cc
│   │           │   │   ├── test/
│   │           │   │   │   ├── aec_dump_based_simulator.cc
│   │           │   │   │   ├── aec_dump_based_simulator.h
│   │           │   │   │   ├── android/
│   │           │   │   │   │   └── apmtest/
│   │           │   │   │   │       ├── AndroidManifest.xml
│   │           │   │   │   │       ├── default.properties
│   │           │   │   │   │       ├── jni/
│   │           │   │   │   │       │   └── main.c
│   │           │   │   │   │       └── res/
│   │           │   │   │   │           └── values/
│   │           │   │   │   │               └── strings.xml
│   │           │   │   │   ├── api_call_statistics.cc
│   │           │   │   │   ├── api_call_statistics.h
│   │           │   │   │   ├── apmtest.m
│   │           │   │   │   ├── audio_buffer_tools.cc
│   │           │   │   │   ├── audio_buffer_tools.h
│   │           │   │   │   ├── audio_processing_builder_for_testing.cc
│   │           │   │   │   ├── audio_processing_builder_for_testing.h
│   │           │   │   │   ├── audio_processing_simulator.cc
│   │           │   │   │   ├── audio_processing_simulator.h
│   │           │   │   │   ├── audioproc_float_impl.cc
│   │           │   │   │   ├── audioproc_float_impl.h
│   │           │   │   │   ├── bitexactness_tools.cc
│   │           │   │   │   ├── bitexactness_tools.h
│   │           │   │   │   ├── conversational_speech/
│   │           │   │   │   │   ├── BUILD.gn
│   │           │   │   │   │   ├── OWNERS
│   │           │   │   │   │   ├── README.md
│   │           │   │   │   │   ├── config.cc
│   │           │   │   │   │   ├── config.h
│   │           │   │   │   │   ├── generator.cc
│   │           │   │   │   │   ├── generator_unittest.cc
│   │           │   │   │   │   ├── mock_wavreader.cc
│   │           │   │   │   │   ├── mock_wavreader.h
│   │           │   │   │   │   ├── mock_wavreader_factory.cc
│   │           │   │   │   │   ├── mock_wavreader_factory.h
│   │           │   │   │   │   ├── multiend_call.cc
│   │           │   │   │   │   ├── multiend_call.h
│   │           │   │   │   │   ├── simulator.cc
│   │           │   │   │   │   ├── simulator.h
│   │           │   │   │   │   ├── timing.cc
│   │           │   │   │   │   ├── timing.h
│   │           │   │   │   │   ├── wavreader_abstract_factory.h
│   │           │   │   │   │   ├── wavreader_factory.cc
│   │           │   │   │   │   ├── wavreader_factory.h
│   │           │   │   │   │   └── wavreader_interface.h
│   │           │   │   │   ├── debug_dump_replayer.cc
│   │           │   │   │   ├── debug_dump_replayer.h
│   │           │   │   │   ├── debug_dump_test.cc
│   │           │   │   │   ├── echo_canceller_test_tools.cc
│   │           │   │   │   ├── echo_canceller_test_tools.h
│   │           │   │   │   ├── echo_canceller_test_tools_unittest.cc
│   │           │   │   │   ├── echo_control_mock.h
│   │           │   │   │   ├── fake_recording_device.cc
│   │           │   │   │   ├── fake_recording_device.h
│   │           │   │   │   ├── fake_recording_device_unittest.cc
│   │           │   │   │   ├── performance_timer.cc
│   │           │   │   │   ├── performance_timer.h
│   │           │   │   │   ├── protobuf_utils.cc
│   │           │   │   │   ├── protobuf_utils.h
│   │           │   │   │   ├── py_quality_assessment/
│   │           │   │   │   │   ├── BUILD.gn
│   │           │   │   │   │   ├── OWNERS
│   │           │   │   │   │   ├── README.md
│   │           │   │   │   │   ├── apm_configs/
│   │           │   │   │   │   │   └── default.json
│   │           │   │   │   │   ├── apm_quality_assessment.py
│   │           │   │   │   │   ├── apm_quality_assessment.sh
│   │           │   │   │   │   ├── apm_quality_assessment_boxplot.py
│   │           │   │   │   │   ├── apm_quality_assessment_export.py
│   │           │   │   │   │   ├── apm_quality_assessment_gencfgs.py
│   │           │   │   │   │   ├── apm_quality_assessment_optimize.py
│   │           │   │   │   │   ├── apm_quality_assessment_unittest.py
│   │           │   │   │   │   ├── output/
│   │           │   │   │   │   │   └── README.md
│   │           │   │   │   │   └── quality_assessment/
│   │           │   │   │   │       ├── __init__.py
│   │           │   │   │   │       ├── annotations.py
│   │           │   │   │   │       ├── annotations_unittest.py
│   │           │   │   │   │       ├── apm_configs/
│   │           │   │   │   │       │   └── default.json
│   │           │   │   │   │       ├── apm_vad.cc
│   │           │   │   │   │       ├── audioproc_wrapper.py
│   │           │   │   │   │       ├── collect_data.py
│   │           │   │   │   │       ├── data_access.py
│   │           │   │   │   │       ├── echo_path_simulation.py
│   │           │   │   │   │       ├── echo_path_simulation_factory.py
│   │           │   │   │   │       ├── echo_path_simulation_unittest.py
│   │           │   │   │   │       ├── eval_scores.py
│   │           │   │   │   │       ├── eval_scores_factory.py
│   │           │   │   │   │       ├── eval_scores_unittest.py
│   │           │   │   │   │       ├── evaluation.py
│   │           │   │   │   │       ├── exceptions.py
│   │           │   │   │   │       ├── export.py
│   │           │   │   │   │       ├── export_unittest.py
│   │           │   │   │   │       ├── external_vad.py
│   │           │   │   │   │       ├── fake_external_vad.py
│   │           │   │   │   │       ├── fake_polqa.cc
│   │           │   │   │   │       ├── input_mixer.py
│   │           │   │   │   │       ├── input_mixer_unittest.py
│   │           │   │   │   │       ├── input_signal_creator.py
│   │           │   │   │   │       ├── results.css
│   │           │   │   │   │       ├── results.js
│   │           │   │   │   │       ├── signal_processing.py
│   │           │   │   │   │       ├── signal_processing_unittest.py
│   │           │   │   │   │       ├── simulation.py
│   │           │   │   │   │       ├── simulation_unittest.py
│   │           │   │   │   │       ├── sound_level.cc
│   │           │   │   │   │       ├── test_data_generation.py
│   │           │   │   │   │       ├── test_data_generation_factory.py
│   │           │   │   │   │       ├── test_data_generation_unittest.py
│   │           │   │   │   │       └── vad.cc
│   │           │   │   │   ├── runtime_setting_util.cc
│   │           │   │   │   ├── runtime_setting_util.h
│   │           │   │   │   ├── simulator_buffers.cc
│   │           │   │   │   ├── simulator_buffers.h
│   │           │   │   │   ├── test_utils.cc
│   │           │   │   │   ├── test_utils.h
│   │           │   │   │   ├── unittest.proto
│   │           │   │   │   ├── wav_based_simulator.cc
│   │           │   │   │   └── wav_based_simulator.h
│   │           │   │   ├── three_band_filter_bank.cc
│   │           │   │   ├── three_band_filter_bank.h
│   │           │   │   ├── transient/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── click_annotate.cc
│   │           │   │   │   ├── common.h
│   │           │   │   │   ├── daubechies_8_wavelet_coeffs.h
│   │           │   │   │   ├── dyadic_decimator.h
│   │           │   │   │   ├── dyadic_decimator_unittest.cc
│   │           │   │   │   ├── file_utils.cc
│   │           │   │   │   ├── file_utils.h
│   │           │   │   │   ├── file_utils_unittest.cc
│   │           │   │   │   ├── moving_moments.cc
│   │           │   │   │   ├── moving_moments.h
│   │           │   │   │   ├── moving_moments_unittest.cc
│   │           │   │   │   ├── test/
│   │           │   │   │   │   ├── plotDetection.m
│   │           │   │   │   │   ├── readDetection.m
│   │           │   │   │   │   └── readPCM.m
│   │           │   │   │   ├── transient_detector.cc
│   │           │   │   │   ├── transient_detector.h
│   │           │   │   │   ├── transient_detector_unittest.cc
│   │           │   │   │   ├── transient_suppression_test.cc
│   │           │   │   │   ├── transient_suppressor.h
│   │           │   │   │   ├── transient_suppressor_impl.cc
│   │           │   │   │   ├── transient_suppressor_impl.h
│   │           │   │   │   ├── transient_suppressor_unittest.cc
│   │           │   │   │   ├── windows_private.h
│   │           │   │   │   ├── wpd_node.cc
│   │           │   │   │   ├── wpd_node.h
│   │           │   │   │   ├── wpd_node_unittest.cc
│   │           │   │   │   ├── wpd_tree.cc
│   │           │   │   │   ├── wpd_tree.h
│   │           │   │   │   └── wpd_tree_unittest.cc
│   │           │   │   ├── typing_detection.cc
│   │           │   │   ├── typing_detection.h
│   │           │   │   ├── utility/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── DEPS
│   │           │   │   │   ├── cascaded_biquad_filter.cc
│   │           │   │   │   ├── cascaded_biquad_filter.h
│   │           │   │   │   ├── cascaded_biquad_filter_unittest.cc
│   │           │   │   │   ├── delay_estimator.cc
│   │           │   │   │   ├── delay_estimator.h
│   │           │   │   │   ├── delay_estimator_internal.h
│   │           │   │   │   ├── delay_estimator_unittest.cc
│   │           │   │   │   ├── delay_estimator_wrapper.cc
│   │           │   │   │   ├── delay_estimator_wrapper.h
│   │           │   │   │   ├── pffft_wrapper.cc
│   │           │   │   │   ├── pffft_wrapper.h
│   │           │   │   │   └── pffft_wrapper_unittest.cc
│   │           │   │   ├── vad/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── common.h
│   │           │   │   │   ├── gmm.cc
│   │           │   │   │   ├── gmm.h
│   │           │   │   │   ├── gmm_unittest.cc
│   │           │   │   │   ├── noise_gmm_tables.h
│   │           │   │   │   ├── pitch_based_vad.cc
│   │           │   │   │   ├── pitch_based_vad.h
│   │           │   │   │   ├── pitch_based_vad_unittest.cc
│   │           │   │   │   ├── pitch_internal.cc
│   │           │   │   │   ├── pitch_internal.h
│   │           │   │   │   ├── pitch_internal_unittest.cc
│   │           │   │   │   ├── pole_zero_filter.cc
│   │           │   │   │   ├── pole_zero_filter.h
│   │           │   │   │   ├── pole_zero_filter_unittest.cc
│   │           │   │   │   ├── standalone_vad.cc
│   │           │   │   │   ├── standalone_vad.h
│   │           │   │   │   ├── standalone_vad_unittest.cc
│   │           │   │   │   ├── vad_audio_proc.cc
│   │           │   │   │   ├── vad_audio_proc.h
│   │           │   │   │   ├── vad_audio_proc_internal.h
│   │           │   │   │   ├── vad_audio_proc_unittest.cc
│   │           │   │   │   ├── vad_circular_buffer.cc
│   │           │   │   │   ├── vad_circular_buffer.h
│   │           │   │   │   ├── vad_circular_buffer_unittest.cc
│   │           │   │   │   ├── voice_activity_detector.cc
│   │           │   │   │   ├── voice_activity_detector.h
│   │           │   │   │   ├── voice_activity_detector_unittest.cc
│   │           │   │   │   └── voice_gmm_tables.h
│   │           │   │   ├── voice_detection.cc
│   │           │   │   ├── voice_detection.h
│   │           │   │   └── voice_detection_unittest.cc
│   │           │   ├── congestion_controller/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── goog_cc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── acknowledged_bitrate_estimator.cc
│   │           │   │   │   ├── acknowledged_bitrate_estimator.h
│   │           │   │   │   ├── acknowledged_bitrate_estimator_interface.cc
│   │           │   │   │   ├── acknowledged_bitrate_estimator_interface.h
│   │           │   │   │   ├── acknowledged_bitrate_estimator_unittest.cc
│   │           │   │   │   ├── alr_detector.cc
│   │           │   │   │   ├── alr_detector.h
│   │           │   │   │   ├── alr_detector_unittest.cc
│   │           │   │   │   ├── bitrate_estimator.cc
│   │           │   │   │   ├── bitrate_estimator.h
│   │           │   │   │   ├── congestion_window_pushback_controller.cc
│   │           │   │   │   ├── congestion_window_pushback_controller.h
│   │           │   │   │   ├── congestion_window_pushback_controller_unittest.cc
│   │           │   │   │   ├── delay_based_bwe.cc
│   │           │   │   │   ├── delay_based_bwe.h
│   │           │   │   │   ├── delay_based_bwe_unittest.cc
│   │           │   │   │   ├── delay_based_bwe_unittest_helper.cc
│   │           │   │   │   ├── delay_based_bwe_unittest_helper.h
│   │           │   │   │   ├── delay_increase_detector_interface.h
│   │           │   │   │   ├── goog_cc_network_control.cc
│   │           │   │   │   ├── goog_cc_network_control.h
│   │           │   │   │   ├── goog_cc_network_control_unittest.cc
│   │           │   │   │   ├── inter_arrival_delta.cc
│   │           │   │   │   ├── inter_arrival_delta.h
│   │           │   │   │   ├── link_capacity_estimator.cc
│   │           │   │   │   ├── link_capacity_estimator.h
│   │           │   │   │   ├── loss_based_bandwidth_estimation.cc
│   │           │   │   │   ├── loss_based_bandwidth_estimation.h
│   │           │   │   │   ├── loss_based_bwe_v2.cc
│   │           │   │   │   ├── loss_based_bwe_v2.h
│   │           │   │   │   ├── loss_based_bwe_v2_test.cc
│   │           │   │   │   ├── probe_bitrate_estimator.cc
│   │           │   │   │   ├── probe_bitrate_estimator.h
│   │           │   │   │   ├── probe_bitrate_estimator_unittest.cc
│   │           │   │   │   ├── probe_controller.cc
│   │           │   │   │   ├── probe_controller.h
│   │           │   │   │   ├── probe_controller_unittest.cc
│   │           │   │   │   ├── robust_throughput_estimator.cc
│   │           │   │   │   ├── robust_throughput_estimator.h
│   │           │   │   │   ├── robust_throughput_estimator_unittest.cc
│   │           │   │   │   ├── send_side_bandwidth_estimation.cc
│   │           │   │   │   ├── send_side_bandwidth_estimation.h
│   │           │   │   │   ├── send_side_bandwidth_estimation_unittest.cc
│   │           │   │   │   ├── test/
│   │           │   │   │   │   ├── goog_cc_printer.cc
│   │           │   │   │   │   └── goog_cc_printer.h
│   │           │   │   │   ├── trendline_estimator.cc
│   │           │   │   │   ├── trendline_estimator.h
│   │           │   │   │   └── trendline_estimator_unittest.cc
│   │           │   │   ├── include/
│   │           │   │   │   └── receive_side_congestion_controller.h
│   │           │   │   ├── pcc/
│   │           │   │   │   ├── BUILD.gn
│   │           │   │   │   ├── bitrate_controller.cc
│   │           │   │   │   ├── bitrate_controller.h
│   │           │   │   │   ├── bitrate_controller_unittest.cc
│   │           │   │   │   ├── monitor_interval.cc
│   │           │   │   │   ├── monitor_interval.h
│   │           │   │   │   ├── monitor_interval_unittest.cc
│   │           │   │   │   ├── pcc_factory.cc
│   │           │   │   │   ├── pcc_factory.h
│   │           │   │   │   ├── pcc_network_controller.cc
│   │           │   │   │   ├── pcc_network_controller.h
│   │           │   │   │   ├── pcc_network_controller_unittest.cc
│   │           │   │   │   ├── rtt_tracker.cc
│   │           │   │   │   ├── rtt_tracker.h
│   │           │   │   │   ├── rtt_tracker_unittest.cc
│   │           │   │   │   ├── utility_function.cc
│   │           │   │   │   ├── utility_function.h
│   │           │   │   │   └── utility_function_unittest.cc
│   │           │   │   ├── receive_side_congestion_controller.cc
│   │           │   │   ├── receive_side_congestion_controller_unittest.cc
│   │           │   │   ├── remb_throttler.cc
│   │           │   │   ├── remb_throttler.h
│   │           │   │   ├── remb_throttler_unittest.cc
│   │           │   │   └── rtp/
│   │           │   │       ├── BUILD.gn
│   │           │   │       ├── control_handler.cc
│   │           │   │       ├── control_handler.h
│   │           │   │       ├── transport_feedback_adapter.cc
│   │           │   │       ├── transport_feedback_adapter.h
│   │           │   │       ├── transport_feedback_adapter_unittest.cc
│   │           │   │       ├── transport_feedback_demuxer.cc
│   │           │   │       ├── transport_feedback_demuxer.h
│   │           │   │       └── transport_feedback_demuxer_unittest.cc
│   │           │   ├── desktop_capture/
│   │           │   │   ├── BUILD.gn
│   │           │   │   ├── DEPS
│   │           │   │   ├── OWNERS
│   │           │   │   ├── blank_detector_desktop_capturer_wrapper.cc
│   │           │   │   ├── blank_detector_desktop_capturer_wrapper.h
│   │           │   │   ├── blank_detector_desktop_capturer_wrapper_unittest.cc
│   │           │   │   ├── cropped_desktop_frame.cc
│   │           │   │   ├── cropped_desktop_frame.h
│   │           │   │   ├── cropped_desktop_frame_unittest.cc
│   │           │   │   ├── cropping_window_capturer.cc
│   │           │   │   ├── cropping_window_capturer.h
│   │           │   │   ├── cropping_window_capturer_win.cc
│   │           │   │   ├── desktop_and_cursor_composer.cc
│   │           │   │   ├── desktop_and_cursor_composer.h
│   │           │   │   ├── desktop_and_cursor_composer_unittest.cc
│   │           │   │   ├── desktop_capture_metrics_helper.cc
│   │           │   │   ├── desktop_capture_metrics_helper.h
│   │           │   │   ├── desktop_capture_options.cc
│   │           │   │   ├── desktop_capture_options.h
│   │           │   │   ├── desktop_capture_types.h
│   │           │   │   ├── desktop_capturer.cc
│   │           │   │   ├── desktop_capturer.h
│   │           │   │   ├── desktop_capturer_differ_wrapper.cc
│   │           │   │   ├── desktop_capturer_differ_wrapper.h
│   │           │   │   ├── desktop_capturer_differ_wrapper_unittest.cc
│   │           │   │   ├── desktop_capturer_wrapper.cc
│   │           │   │   ├── desktop_capturer_wrapper.h
│   │           │   │   ├── desktop_frame.cc
│   │           │   │   ├── desktop_frame.h
│   │           │   │   ├── desktop_frame_generator.cc
│   │           │   │   ├── desktop_frame_generator.h
│   │           │   │   ├── desktop_frame_rotation.cc
│   │           │   │   ├── desktop_frame_rotation.h
│   │           │   │   ├── desktop_frame_rotation_unittest.cc
│   │           │   │   ├── desktop_frame_unittest.cc
│   │           │   │   ├── desktop_frame_win.cc
│   │           │   │   ├── desktop_frame_win.h
│   │           │   │   ├── desktop_geometry.cc
│   │           │   │   ├── desktop_geometry.h
│   │           │   │   ├── desktop_geometry_unittest.cc
│   │           │   │   ├── desktop_region.cc
│   │           │   │   ├── desktop_region.h
│   │           │   │   ├── desktop_region_unittest.cc
│   │           │   │   ├── differ_block.cc
│   │           │   │   ├── differ_block.h
│   │           │   │   ├── differ_block_unittest.cc
│   │           │   │   ├── differ_vector_sse2.cc
│   │           │   │   ├── differ_vector_sse2.h
│   │           │   │   ├── fake_desktop_capturer.cc
│   │           │   │   ├── fake_desktop_capturer.h
│   │           │   │   ├── fallback_desktop_capturer_wrapper.cc
│   │           │   │   ├── fallback_desktop_capturer_wrapper.h
│   │           │   │   ├── fallback_desktop_capturer_wrapper_unittest.cc
│   │           │   │   ├── full_screen_application_handler.cc
│   │           │   │   ├── full_screen_application_handler.h
│   │           │   │   ├── full_screen_window_detector.cc
│   │           │   │   ├── full_screen_window_detector.h
│   │           │   │   ├── linux/
│   │           │   │   │   ├── base_capturer_pipewire.cc
│   │           │   │   │   ├── base_capturer_pipewire.h
│   │           │   │   │   ├── mouse_cursor_monitor_x11.cc
│   │           │   │   │   ├── mouse_cursor_monitor_x11.h
│   │           │   │   │   ├── pipewire02.sigs
│   │           │   │   │   ├── pipewire03.sigs
│   │           │   │   │   ├── pipewire_stub_header.fragment
│   │           │   │   │   ├── screen_capturer_x11.cc
│   │           │   │   │   ├── screen_capturer_x11.h
│   │           │   │   │   ├── shared_x_display.cc
│   │           │   │   │   ├── shared_x_display.h
│   │           │   │   │   ├── window_capturer_x11.cc
│   │           │   │   │   ├── window_capturer_x11.h
│   │           │   │   │   ├── window_finder_x11.cc
│   │           │   │   │   ├── window_finder_x11.h
│   │           │   │   │   ├── window_list_utils.cc
│   │           │   │   │   ├── window_list_utils.h
│   │           │   │   │   ├── x_atom_cache.cc
│   │           │   │   │   ├── x_atom_cache.h
│   │           │   │   │   ├── x_error_trap.cc
│   │           │   │   │   ├── x_error_trap.h
│   │           │   │   │   ├── x_server_pixel_buffer.cc
│   │           │   │   │   ├── x_server_pixel_buffer.h
│   │           │   │   │   ├── x_window_property.cc
│   │           │   │   │   └── x_window_property.h
│   │           │   │   ├── mac/
│   │           │   │   │   ├── desktop_configuration.h
│   │           │   │   │   ├── desktop_configuration.mm
│   │           │   │   │   ├── desktop_configuration_monitor.cc
│   │           │   │   │   ├── desktop_configuration_monitor.h
│   │           │   │   │   ├── desktop_frame_cgimage.h
│   │           │   │   │   ├── desktop_frame_cgimage.mm
│   │           │   │   │   ├── desktop_frame_iosurface.h
│   │           │   │   │   ├── desktop_frame_iosurface.mm
│   │           │   │   │   ├── desktop_frame_provider.h
│   │           │   │   │   ├── desktop_frame_provider.mm
│   │           │   │   │   ├── full_screen_mac_application_handler.cc
│   │           │   │   │   ├── full_screen_mac_application_handler.h
│   │           │   │   │   ├── screen_capturer_mac.h
│   │           │   │   │   ├── screen_capturer_mac.mm
│   │           │   │   │   ├── window_list_utils.cc
│   │           │   │   │   └── window_list_utils.h
│   │           │   │   ├── mock_desktop_capturer_callback.cc
│   │           │   │   ├── mock_desktop_capturer_callback.h
│   │           │   │   ├── mouse_cursor.cc
│   │           │   │   ├── mouse_cursor.h
│   │           │   │   ├── mouse_cursor_monitor.h
│   │           │   │   ├── mouse_cursor_monitor_linux.cc
│   │           │   │   ├── mouse_cursor_monitor_mac.mm
│   │           │   │   ├── mouse_cursor_monitor_null.cc
│   │           │   │   ├── mouse_cursor_monitor_unittest.cc
│   │           │   │   ├── mouse_cursor_monitor_win.cc
│   │           │   │   ├── resolution_tracker.cc
│   │           │   │   ├── resolution_tracker.h
│   │           │   │   ├── rgba_color.cc
│   │           │   │   ├── rgba_color.h
│   │           │   │   ├── rgba_color_unittest.cc
│   │           │   │   ├── screen_capture_frame_queue.h
│   │           │   │   ├── screen_capturer_darwin.mm
│   │           │   │   ├── screen_capturer_helper.cc
│   │           │   │   ├── screen_capturer_helper.h
│   │           │   │   ├── screen_capturer_helper_unittest.cc
│   │           │   │   ├── screen_capturer_integration_test.cc
│   │           │   │   ├── screen_capturer_linux.cc
│   │           │   │   ├── screen_capturer_mac_unittest.cc
│   │           │   │   ├── screen_capturer_null.cc
│   │           │   │   ├── screen_capturer_unittest.cc
│   │           │   │   ├── screen_capturer_win.cc
│   │           │   │   ├── screen_drawer.cc
│   │           │   │   ├── screen_drawer.h
│   │           │   │   ├── screen_drawer_linux.cc
│   │           │   │   ├── screen_drawer_lock_posix.cc
│   │           │   │   ├── screen_drawer_lock_posix.h
│   │           │   │   ├── screen_drawer_mac.cc
│   │           │   │   ├── screen_drawer_unittest.cc
│   │           │   │   ├── screen_drawer_win.cc
│   │           │   │   ├── shared_desktop_frame.cc
│   │           │   │   ├── shared_desktop_frame.h
│   │           │   │   ├── shared_memory.cc
│   │           │   │   ├── shared_memory.h
│   │           │   │   ├── test_utils.cc
│   │           │   │   ├── test_utils.h
│   │           │   │   ├── test_utils_unittest.cc
│   │           │   │   ├── win/
│   │           │   │   │   ├── cursor.cc
│   │           │   │   │   ├── cursor.h
│   │           │   │   │   ├── cursor_test_data/
│   │           │   │   │   │   ├── 1_24bpp.cur
│   │           │   │   │   │   ├── 1_32bpp.cur
│   │           │   │   │   │   ├── 1_8bpp.cur
│   │           │   │   │   │   ├── 2_1bpp.cur
│   │           │   │   │   │   ├── 2_32bpp.cur
│   │           │   │   │   │   ├── 3_32bpp.cur
│   │           │   │   │   │   └── 3_4bpp.cur
│   │           │   │   │   ├── cursor_unittest.cc
│   │           │   │   │   ├── cursor_unittest_resources.h
│   │           │   │   │   ├── cursor_unittest_resources.rc
│   │           │   │   │   ├── d3d_device.cc
│   │           │   │   │   ├── d3d_device.h
│   │           │   │   │   ├── desktop.cc
│   │           │   │   │   ├── desktop.h
│   │           │   │   │   ├── desktop_capture_utils.cc
│   │           │   │   │   ├── desktop_capture_utils.h
│   │           │   │   │   ├── display_configuration_monitor.cc
│   │           │   │   │   ├── display_configuration_monitor.h
│   │           │   │   │   ├── dxgi_adapter_duplicator.cc
│   │           │   │   │   ├── dxgi_adapter_duplicator.h
│   │           │   │   │   ├── dxgi_context.cc
│   │           │   │   │   ├── dxgi_context.h
│   │           │   │   │   ├── dxgi_duplicator_controller.cc
│   │           │   │   │   ├── dxgi_duplicator_controller.h
│   │           │   │   │   ├── dxgi_frame.cc
│   │           │   │   │   ├── dxgi_frame.h
│   │           │   │   │   ├── dxgi_output_duplicator.cc
│   │           │   │   │   ├── dxgi_output_duplicator.h
│   │           │   │   │   ├── dxgi_texture.cc
│   │           │   │   │   ├── dxgi_texture.h
│   │           │   │   │   ├── dxgi_texture_mapping.cc
│   │           │   │   │   ├── dxgi_texture_mapping.h
│   │           │   │   │   ├── dxgi_texture_staging.cc
│   │           │   │   │   ├── dxgi_texture_staging.h
│   │           │   │   │   ├── full_screen_win_application_handler.cc
│   │           │   │   │   ├── full_screen_win_application_handler.h
│   │           │   │   │   ├── scoped_gdi_object.h
│   │           │   │   │   ├── scoped_thread_desktop.cc
│   │           │   │   │   ├── scoped_thread_desktop.h
│   │           │   │   │   ├── screen_capture_utils.cc
│   │           │   │   │   ├── screen_capture_utils.h
│   │           │   │   │   ├── screen_capture_utils_unittest.cc
│   │           │   │   │   ├── screen_capturer_win_directx.cc
│   │           │   │   │   ├── screen_capturer_win_directx.h
│   │           │   │   │   ├── screen_capturer_win_directx_unittest.cc
│   │           │   │   │   ├── screen_capturer_win_gdi.cc
│   │           │   │   │   ├── screen_capturer_win_gdi.h
│   │           │   │   │   ├── screen_capturer_win_magnifier.cc
│   │           │   │   │   ├── screen_capturer_win_magnifier.h
│   │           │   │   │   ├── selected_window_context.cc
│   │           │   │   │   ├── selected_window_context.h
│   │           │   │   │   ├── test_support/
│   │           │   │   │   │   ├── test_window.cc
│   │           │   │   │   │   └── test_window.h
│   │           │   │   │   ├── wgc_capture_session.cc
│   │           │   │   │   ├── wgc_capture_session.h
│   │           │   │   │   ├── wgc_capture_source.cc
│   │           │   │   │   ├── wgc_capture_source.h
│   │           │   │   │   ├── wgc_capture_source_unittest.cc
│   │           │   │   │   ├── wgc_capturer_win.cc
│   │           │   │   │   ├── wgc_capturer_win.h
│   │           │   │   │   ├── wgc_capturer_win_unittest.cc
│   │           │   │   │   ├── 
Copy disabled (too large) Download .txt
Showing preview only (729,059K chars total). Download the full file to get everything.
SYMBOL INDEX (47161 symbols across 6332 files)

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/build.py
  class BuilderSettings (line 11) | class BuilderSettings(object):
    method username (line 13) | def username(self):
    method login_username (line 19) | def login_username(self):
    method upload (line 25) | def upload(self):
    method upload_only_when_stable (line 37) | def upload_only_when_stable(self):
    method stable_branch_pattern (line 43) | def stable_branch_pattern(self):
    method reference (line 49) | def reference(self):
    method channel (line 55) | def channel(self):
    method _version (line 61) | def _version(self):
    method _branch (line 74) | def _branch(self):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/conanfile.py
  class TestPackageConan (line 7) | class TestPackageConan(ConanFile):
    method build (line 11) | def build(self):
    method test (line 16) | def test(self):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/test_package.cpp
  function Factorial (line 5) | int Factorial( int number ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/conanfile.py
  class CatchConan (line 5) | class CatchConan(ConanFile):
    method package (line 16) | def package(self):
    method package_id (line 26) | def package_id(self):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/010-TestCase.cpp
  function Factorial (line 8) | int Factorial( int number ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/020-TestCase-2.cpp
  function Factorial (line 7) | int Factorial( int number ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/030-Asn-Require-Check.cpp
  function one (line 15) | std::string one() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/110-Fix-ClassFixture.cpp
  class DBConnection (line 11) | class DBConnection
    method DBConnection (line 14) | static DBConnection createConnection( std::string const & /*dbName*/ ) {
    method executeSQL (line 18) | bool executeSQL( std::string const & /*query*/, int const /*id*/, std:...
  class UniqueTestsFixture (line 26) | class UniqueTestsFixture
    method UniqueTestsFixture (line 29) | UniqueTestsFixture()
    method getID (line 33) | int getID() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/207-Rpt-TeamCityReporter.cpp
  type MyException (line 77) | struct MyException: public std::runtime_error
    method MyException (line 79) | MyException( char const * text )
  type MyExceptionMatcher (line 88) | struct MyExceptionMatcher : Catch::MatcherBase< std::runtime_error >
    method MyExceptionMatcher (line 92) | MyExceptionMatcher( char const * text )
    method match (line 98) | bool match( std::runtime_error const & arg ) const override
    method describe (line 103) | std::string describe() const override

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/210-Evt-EventListeners.cpp
  function ws (line 20) | std::string ws(int const level) {
  function print (line 37) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 51) | void print( std::ostream& os, int const level, Catch::MessageInfo const&...
  function print (line 58) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 73) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 88) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 103) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 115) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 149) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 173) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 188) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 201) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 217) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 235) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 261) | void print( std::ostream& os, int const level, std::string const& title,...
  function print (line 286) | void print( std::ostream& os, int const level, std::string const& title,...
  type MyListener (line 300) | struct MyListener : Catch::TestEventListenerBase {
    method testRunStarting (line 308) | void testRunStarting( Catch::TestRunInfo const& testRunInfo ) override {
    method testRunEnded (line 316) | void testRunEnded( Catch::TestRunStats const& testRunStats ) override {
    method skipTest (line 324) | void skipTest( Catch::TestCaseInfo const& testInfo ) override {
    method testCaseStarting (line 332) | void testCaseStarting( Catch::TestCaseInfo const& testInfo ) override {
    method testCaseEnded (line 340) | void testCaseEnded( Catch::TestCaseStats const& testCaseStats ) overri...
    method sectionStarting (line 346) | void sectionStarting( Catch::SectionInfo const& sectionInfo ) override {
    method sectionEnded (line 352) | void sectionEnded( Catch::SectionStats const& sectionStats ) override {
    method assertionStarting (line 358) | void assertionStarting( Catch::AssertionInfo const& assertionInfo ) ov...
    method assertionEnded (line 363) | bool assertionEnded( Catch::AssertionStats const& assertionStats ) ove...
  type Fixture (line 405) | struct Fixture {
    method fortytwo (line 406) | int fortytwo() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/231-Cfg-OutputStreams.cpp
  class out_buff (line 14) | class out_buff : public std::stringbuf {
    method out_buff (line 17) | out_buff(std::FILE* stream):m_stream(stream) {}
    method sync (line 19) | int sync() {
  type Catch (line 39) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/300-Gen-OwnGenerator.cpp
  class RandomIntGenerator (line 12) | class RandomIntGenerator : public Catch::Generators::IGenerator<int> {
    method RandomIntGenerator (line 18) | RandomIntGenerator(int low, int high):
    method next (line 26) | bool next() override {
  function random (line 40) | Catch::Generators::GeneratorWrapper<int> random(int low, int high) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/examples/301-Gen-MapTypeConversion.cpp
  class LineGenerator (line 14) | class LineGenerator : public Catch::Generators::IGenerator<std::string> {
    method LineGenerator (line 18) | LineGenerator() {
    method next (line 27) | bool next() override {
  function lines (line 39) | Catch::Generators::GeneratorWrapper<std::string> lines(std::string /* ig...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/external/clara.hpp
  type Catch (line 55) | namespace Catch {
    type clara (line 56) | namespace clara {
      type TextFlow (line 57) | namespace TextFlow {
        function isWhitespace (line 59) | inline auto isWhitespace(char c) -> bool {
        function isBreakableBefore (line 63) | inline auto isBreakableBefore(char c) -> bool {
        function isBreakableAfter (line 67) | inline auto isBreakableAfter(char c) -> bool {
        class Columns (line 72) | class Columns
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
        class Column (line 74) | class Column {
          class iterator (line 81) | class iterator {
            method iterator (line 92) | iterator(Column const& column, size_t stringIndex)
            method line (line 96) | auto line() const -> std::string const& { return m_column.m_st...
            method isBoundary (line 98) | auto isBoundary(size_t at) const -> bool {
            method calcLength (line 108) | void calcLength() {
            method indent (line 138) | auto indent() const -> size_t {
            method addIndentAndSuffix (line 143) | auto addIndentAndSuffix(std::string const &plain) const -> std...
            method iterator (line 154) | explicit iterator(Column const& column) : m_column(column) {
          method Column (line 202) | explicit Column(std::string const& text) { m_strings.push_back(t...
          method width (line 204) | auto width(size_t newWidth) -> Column& {
          method indent (line 209) | auto indent(size_t newIndent) -> Column& {
          method initialIndent (line 213) | auto initialIndent(size_t newIndent) -> Column& {
          method width (line 218) | auto width() const -> size_t { return m_width; }
          method begin (line 219) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 220) | auto end() const -> iterator { return { *this, m_strings.size() ...
          method friend (line 222) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 236) | auto toString() const -> std::string {
        class Spacer (line 243) | class Spacer : public Column {
          method Spacer (line 246) | explicit Spacer(size_t spaceWidth) : Column("") {
        class Columns (line 251) | class Columns {
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
      type detail (line 387) | namespace detail {
        type UnaryLambdaTraits (line 391) | struct UnaryLambdaTraits : UnaryLambdaTraits<decltype( &L::operato...
        type UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> (line 399) | struct UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> {
        class TokenStream (line 405) | class TokenStream
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class Args (line 408) | class Args {
          method Args (line 414) | Args( int argc, char const* const* argv )
          method Args (line 418) | Args( std::initializer_list<std::string> args )
          method exeName (line 423) | auto exeName() const -> std::string {
        type TokenType (line 430) | enum class TokenType {
        type Token (line 433) | struct Token {
        function isOptPrefix (line 438) | inline auto isOptPrefix( char c ) -> bool {
        class TokenStream (line 447) | class TokenStream {
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class ResultBase (line 520) | class ResultBase {
          type Type (line 522) | enum Type {
          method ResultBase (line 527) | ResultBase( Type type ) : m_type( type ) {}
        class ResultValueBase (line 536) | class ResultValueBase : public ResultBase {
          method value (line 538) | auto value() const -> T const & {
          method ResultValueBase (line 544) | ResultValueBase( Type type ) : ResultBase( type ) {}
          method ResultValueBase (line 546) | ResultValueBase( ResultValueBase const &other ) : ResultBase( ot...
          method ResultValueBase (line 551) | ResultValueBase( Type, T const &value ) : ResultBase( Ok ) {
        class ResultValueBase<void> (line 575) | class ResultValueBase<void> : public ResultBase {
        class BasicResult (line 581) | class BasicResult : public ResultValueBase<T> {
          method BasicResult (line 584) | explicit BasicResult( BasicResult<U> const &other )
          method ok (line 592) | static auto ok( U const &value ) -> BasicResult { return { Resul...
          method ok (line 593) | static auto ok() -> BasicResult { return { ResultBase::Ok }; }
          method logicError (line 594) | static auto logicError( std::string const &message ) -> BasicRes...
          method runtimeError (line 595) | static auto runtimeError( std::string const &message ) -> BasicR...
          method type (line 598) | auto type() const -> ResultBase::Type { return m_type; }
          method errorMessage (line 599) | auto errorMessage() const -> std::string { return m_errorMessage; }
          method enforceOk (line 602) | void enforceOk() const override {
          method BasicResult (line 614) | BasicResult( ResultBase::Type type, std::string const &message )
        type ParseResultType (line 625) | enum class ParseResultType {
        class ParseState (line 629) | class ParseState {
          method ParseState (line 632) | ParseState( ParseResultType type, TokenStream const &remainingTo...
          method type (line 637) | auto type() const -> ParseResultType { return m_type; }
          method remainingTokens (line 638) | auto remainingTokens() const -> TokenStream { return m_remaining...
        type HelpColumns (line 649) | struct HelpColumns {
        function convertInto (line 655) | inline auto convertInto( std::string const &source, T& target ) ->...
        function convertInto (line 664) | inline auto convertInto( std::string const &source, std::string& t...
        function convertInto (line 668) | inline auto convertInto( std::string const &source, bool &target )...
        function convertInto (line 681) | inline auto convertInto( std::string const &source, CLARA_CONFIG_O...
        type NonCopyable (line 690) | struct NonCopyable {
          method NonCopyable (line 691) | NonCopyable() = default;
          method NonCopyable (line 692) | NonCopyable( NonCopyable const & ) = delete;
          method NonCopyable (line 693) | NonCopyable( NonCopyable && ) = delete;
          method NonCopyable (line 694) | NonCopyable &operator=( NonCopyable const & ) = delete;
          method NonCopyable (line 695) | NonCopyable &operator=( NonCopyable && ) = delete;
        type BoundRef (line 698) | struct BoundRef : NonCopyable {
          method isContainer (line 700) | virtual auto isContainer() const -> bool { return false; }
          method isFlag (line 701) | virtual auto isFlag() const -> bool { return false; }
        type BoundValueRefBase (line 703) | struct BoundValueRefBase : BoundRef {
        type BoundFlagRefBase (line 706) | struct BoundFlagRefBase : BoundRef {
          method isFlag (line 708) | virtual auto isFlag() const -> bool { return true; }
        type BoundValueRef (line 712) | struct BoundValueRef : BoundValueRefBase {
          method BoundValueRef (line 715) | explicit BoundValueRef( T &ref ) : m_ref( ref ) {}
          method setValue (line 717) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundValueRef<std::vector<T>> (line 723) | struct BoundValueRef<std::vector<T>> : BoundValueRefBase {
          method BoundValueRef (line 726) | explicit BoundValueRef( std::vector<T> &ref ) : m_ref( ref ) {}
          method isContainer (line 728) | auto isContainer() const -> bool override { return true; }
          method setValue (line 730) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagRef (line 739) | struct BoundFlagRef : BoundFlagRefBase {
          method BoundFlagRef (line 742) | explicit BoundFlagRef( bool &ref ) : m_ref( ref ) {}
          method setFlag (line 744) | auto setFlag( bool flag ) -> ParserResult override {
        type LambdaInvoker (line 751) | struct LambdaInvoker {
          method invoke (line 755) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        type LambdaInvoker<void> (line 761) | struct LambdaInvoker<void> {
          method invoke (line 763) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        function invokeLambda (line 770) | inline auto invokeLambda( L const &lambda, std::string const &arg ...
        type BoundLambda (line 780) | struct BoundLambda : BoundValueRefBase {
          method BoundLambda (line 784) | explicit BoundLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setValue (line 786) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagLambda (line 792) | struct BoundFlagLambda : BoundFlagRefBase {
          method BoundFlagLambda (line 798) | explicit BoundFlagLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setFlag (line 800) | auto setFlag( bool flag ) -> ParserResult override {
        type Optionality (line 805) | enum class Optionality { Optional, Required }
        type Parser (line 807) | struct Parser
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
        class ParserBase (line 809) | class ParserBase {
          method validate (line 812) | virtual auto validate() const -> Result { return Result::ok(); }
          method cardinality (line 814) | virtual auto cardinality() const -> size_t { return 1; }
          method parse (line 816) | auto parse( Args const &args ) const -> InternalParseResult {
        class ComposableParserImpl (line 822) | class ComposableParserImpl : public ParserBase {
        class ParserRefImpl (line 833) | class ParserRefImpl : public ComposableParserImpl<DerivedT> {
          method ParserRefImpl (line 840) | explicit ParserRefImpl( std::shared_ptr<BoundRef> const &ref ) :...
          method ParserRefImpl (line 844) | ParserRefImpl( T &ref, std::string const &hint )
          method ParserRefImpl (line 850) | ParserRefImpl( LambdaT const &ref, std::string const &hint )
          method optional (line 860) | auto optional() -> DerivedT & {
          method required (line 865) | auto required() -> DerivedT & {
          method isOptional (line 870) | auto isOptional() const -> bool {
          method cardinality (line 874) | auto cardinality() const -> size_t override {
          method hint (line 881) | auto hint() const -> std::string { return m_hint; }
        class ExeName (line 884) | class ExeName : public ComposableParserImpl<ExeName> {
          method makeRef (line 889) | static auto makeRef(LambdaT const &lambda) -> std::shared_ptr<Bo...
          method ExeName (line 894) | ExeName() : m_name( std::make_shared<std::string>( "<executable>...
          method ExeName (line 896) | explicit ExeName( std::string &ref ) : ExeName() {
          method ExeName (line 901) | explicit ExeName( LambdaT const& lambda ) : ExeName() {
          method parse (line 906) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method name (line 910) | auto name() const -> std::string { return *m_name; }
          method set (line 911) | auto set( std::string const& newName ) -> ParserResult {
        class Arg (line 926) | class Arg : public ParserRefImpl<Arg> {
          method parse (line 930) | auto parse( std::string const &, TokenStream const &tokens ) con...
        function normaliseOpt (line 951) | inline auto normaliseOpt( std::string const &optName ) -> std::str...
        class Opt (line 960) | class Opt : public ParserRefImpl<Opt> {
          method Opt (line 966) | explicit Opt( LambdaT const &ref ) : ParserRefImpl( std::make_sh...
          method Opt (line 968) | explicit Opt( bool &ref ) : ParserRefImpl( std::make_shared<Boun...
          method Opt (line 971) | Opt( LambdaT const &ref, std::string const &hint ) : ParserRefIm...
          method Opt (line 974) | Opt( T &ref, std::string const &hint ) : ParserRefImpl( ref, hin...
          method getHelpColumns (line 981) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method isMatch (line 996) | auto isMatch( std::string const &optToken ) const -> bool {
          method parse (line 1007) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method validate (line 1043) | auto validate() const -> Result override {
        type Help (line 1061) | struct Help : Opt {
          method Help (line 1062) | Help( bool &showHelpFlag )
        type Parser (line 1076) | struct Parser : ParserBase {
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
    type clara (line 386) | namespace clara {
      type TextFlow (line 57) | namespace TextFlow {
        function isWhitespace (line 59) | inline auto isWhitespace(char c) -> bool {
        function isBreakableBefore (line 63) | inline auto isBreakableBefore(char c) -> bool {
        function isBreakableAfter (line 67) | inline auto isBreakableAfter(char c) -> bool {
        class Columns (line 72) | class Columns
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
        class Column (line 74) | class Column {
          class iterator (line 81) | class iterator {
            method iterator (line 92) | iterator(Column const& column, size_t stringIndex)
            method line (line 96) | auto line() const -> std::string const& { return m_column.m_st...
            method isBoundary (line 98) | auto isBoundary(size_t at) const -> bool {
            method calcLength (line 108) | void calcLength() {
            method indent (line 138) | auto indent() const -> size_t {
            method addIndentAndSuffix (line 143) | auto addIndentAndSuffix(std::string const &plain) const -> std...
            method iterator (line 154) | explicit iterator(Column const& column) : m_column(column) {
          method Column (line 202) | explicit Column(std::string const& text) { m_strings.push_back(t...
          method width (line 204) | auto width(size_t newWidth) -> Column& {
          method indent (line 209) | auto indent(size_t newIndent) -> Column& {
          method initialIndent (line 213) | auto initialIndent(size_t newIndent) -> Column& {
          method width (line 218) | auto width() const -> size_t { return m_width; }
          method begin (line 219) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 220) | auto end() const -> iterator { return { *this, m_strings.size() ...
          method friend (line 222) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 236) | auto toString() const -> std::string {
        class Spacer (line 243) | class Spacer : public Column {
          method Spacer (line 246) | explicit Spacer(size_t spaceWidth) : Column("") {
        class Columns (line 251) | class Columns {
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
      type detail (line 387) | namespace detail {
        type UnaryLambdaTraits (line 391) | struct UnaryLambdaTraits : UnaryLambdaTraits<decltype( &L::operato...
        type UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> (line 399) | struct UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> {
        class TokenStream (line 405) | class TokenStream
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class Args (line 408) | class Args {
          method Args (line 414) | Args( int argc, char const* const* argv )
          method Args (line 418) | Args( std::initializer_list<std::string> args )
          method exeName (line 423) | auto exeName() const -> std::string {
        type TokenType (line 430) | enum class TokenType {
        type Token (line 433) | struct Token {
        function isOptPrefix (line 438) | inline auto isOptPrefix( char c ) -> bool {
        class TokenStream (line 447) | class TokenStream {
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class ResultBase (line 520) | class ResultBase {
          type Type (line 522) | enum Type {
          method ResultBase (line 527) | ResultBase( Type type ) : m_type( type ) {}
        class ResultValueBase (line 536) | class ResultValueBase : public ResultBase {
          method value (line 538) | auto value() const -> T const & {
          method ResultValueBase (line 544) | ResultValueBase( Type type ) : ResultBase( type ) {}
          method ResultValueBase (line 546) | ResultValueBase( ResultValueBase const &other ) : ResultBase( ot...
          method ResultValueBase (line 551) | ResultValueBase( Type, T const &value ) : ResultBase( Ok ) {
        class ResultValueBase<void> (line 575) | class ResultValueBase<void> : public ResultBase {
        class BasicResult (line 581) | class BasicResult : public ResultValueBase<T> {
          method BasicResult (line 584) | explicit BasicResult( BasicResult<U> const &other )
          method ok (line 592) | static auto ok( U const &value ) -> BasicResult { return { Resul...
          method ok (line 593) | static auto ok() -> BasicResult { return { ResultBase::Ok }; }
          method logicError (line 594) | static auto logicError( std::string const &message ) -> BasicRes...
          method runtimeError (line 595) | static auto runtimeError( std::string const &message ) -> BasicR...
          method type (line 598) | auto type() const -> ResultBase::Type { return m_type; }
          method errorMessage (line 599) | auto errorMessage() const -> std::string { return m_errorMessage; }
          method enforceOk (line 602) | void enforceOk() const override {
          method BasicResult (line 614) | BasicResult( ResultBase::Type type, std::string const &message )
        type ParseResultType (line 625) | enum class ParseResultType {
        class ParseState (line 629) | class ParseState {
          method ParseState (line 632) | ParseState( ParseResultType type, TokenStream const &remainingTo...
          method type (line 637) | auto type() const -> ParseResultType { return m_type; }
          method remainingTokens (line 638) | auto remainingTokens() const -> TokenStream { return m_remaining...
        type HelpColumns (line 649) | struct HelpColumns {
        function convertInto (line 655) | inline auto convertInto( std::string const &source, T& target ) ->...
        function convertInto (line 664) | inline auto convertInto( std::string const &source, std::string& t...
        function convertInto (line 668) | inline auto convertInto( std::string const &source, bool &target )...
        function convertInto (line 681) | inline auto convertInto( std::string const &source, CLARA_CONFIG_O...
        type NonCopyable (line 690) | struct NonCopyable {
          method NonCopyable (line 691) | NonCopyable() = default;
          method NonCopyable (line 692) | NonCopyable( NonCopyable const & ) = delete;
          method NonCopyable (line 693) | NonCopyable( NonCopyable && ) = delete;
          method NonCopyable (line 694) | NonCopyable &operator=( NonCopyable const & ) = delete;
          method NonCopyable (line 695) | NonCopyable &operator=( NonCopyable && ) = delete;
        type BoundRef (line 698) | struct BoundRef : NonCopyable {
          method isContainer (line 700) | virtual auto isContainer() const -> bool { return false; }
          method isFlag (line 701) | virtual auto isFlag() const -> bool { return false; }
        type BoundValueRefBase (line 703) | struct BoundValueRefBase : BoundRef {
        type BoundFlagRefBase (line 706) | struct BoundFlagRefBase : BoundRef {
          method isFlag (line 708) | virtual auto isFlag() const -> bool { return true; }
        type BoundValueRef (line 712) | struct BoundValueRef : BoundValueRefBase {
          method BoundValueRef (line 715) | explicit BoundValueRef( T &ref ) : m_ref( ref ) {}
          method setValue (line 717) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundValueRef<std::vector<T>> (line 723) | struct BoundValueRef<std::vector<T>> : BoundValueRefBase {
          method BoundValueRef (line 726) | explicit BoundValueRef( std::vector<T> &ref ) : m_ref( ref ) {}
          method isContainer (line 728) | auto isContainer() const -> bool override { return true; }
          method setValue (line 730) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagRef (line 739) | struct BoundFlagRef : BoundFlagRefBase {
          method BoundFlagRef (line 742) | explicit BoundFlagRef( bool &ref ) : m_ref( ref ) {}
          method setFlag (line 744) | auto setFlag( bool flag ) -> ParserResult override {
        type LambdaInvoker (line 751) | struct LambdaInvoker {
          method invoke (line 755) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        type LambdaInvoker<void> (line 761) | struct LambdaInvoker<void> {
          method invoke (line 763) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        function invokeLambda (line 770) | inline auto invokeLambda( L const &lambda, std::string const &arg ...
        type BoundLambda (line 780) | struct BoundLambda : BoundValueRefBase {
          method BoundLambda (line 784) | explicit BoundLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setValue (line 786) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagLambda (line 792) | struct BoundFlagLambda : BoundFlagRefBase {
          method BoundFlagLambda (line 798) | explicit BoundFlagLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setFlag (line 800) | auto setFlag( bool flag ) -> ParserResult override {
        type Optionality (line 805) | enum class Optionality { Optional, Required }
        type Parser (line 807) | struct Parser
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
        class ParserBase (line 809) | class ParserBase {
          method validate (line 812) | virtual auto validate() const -> Result { return Result::ok(); }
          method cardinality (line 814) | virtual auto cardinality() const -> size_t { return 1; }
          method parse (line 816) | auto parse( Args const &args ) const -> InternalParseResult {
        class ComposableParserImpl (line 822) | class ComposableParserImpl : public ParserBase {
        class ParserRefImpl (line 833) | class ParserRefImpl : public ComposableParserImpl<DerivedT> {
          method ParserRefImpl (line 840) | explicit ParserRefImpl( std::shared_ptr<BoundRef> const &ref ) :...
          method ParserRefImpl (line 844) | ParserRefImpl( T &ref, std::string const &hint )
          method ParserRefImpl (line 850) | ParserRefImpl( LambdaT const &ref, std::string const &hint )
          method optional (line 860) | auto optional() -> DerivedT & {
          method required (line 865) | auto required() -> DerivedT & {
          method isOptional (line 870) | auto isOptional() const -> bool {
          method cardinality (line 874) | auto cardinality() const -> size_t override {
          method hint (line 881) | auto hint() const -> std::string { return m_hint; }
        class ExeName (line 884) | class ExeName : public ComposableParserImpl<ExeName> {
          method makeRef (line 889) | static auto makeRef(LambdaT const &lambda) -> std::shared_ptr<Bo...
          method ExeName (line 894) | ExeName() : m_name( std::make_shared<std::string>( "<executable>...
          method ExeName (line 896) | explicit ExeName( std::string &ref ) : ExeName() {
          method ExeName (line 901) | explicit ExeName( LambdaT const& lambda ) : ExeName() {
          method parse (line 906) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method name (line 910) | auto name() const -> std::string { return *m_name; }
          method set (line 911) | auto set( std::string const& newName ) -> ParserResult {
        class Arg (line 926) | class Arg : public ParserRefImpl<Arg> {
          method parse (line 930) | auto parse( std::string const &, TokenStream const &tokens ) con...
        function normaliseOpt (line 951) | inline auto normaliseOpt( std::string const &optName ) -> std::str...
        class Opt (line 960) | class Opt : public ParserRefImpl<Opt> {
          method Opt (line 966) | explicit Opt( LambdaT const &ref ) : ParserRefImpl( std::make_sh...
          method Opt (line 968) | explicit Opt( bool &ref ) : ParserRefImpl( std::make_shared<Boun...
          method Opt (line 971) | Opt( LambdaT const &ref, std::string const &hint ) : ParserRefIm...
          method Opt (line 974) | Opt( T &ref, std::string const &hint ) : ParserRefImpl( ref, hin...
          method getHelpColumns (line 981) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method isMatch (line 996) | auto isMatch( std::string const &optToken ) const -> bool {
          method parse (line 1007) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method validate (line 1043) | auto validate() const -> Result override {
        type Help (line 1061) | struct Help : Opt {
          method Help (line 1062) | Help( bool &showHelpFlag )
        type Parser (line 1076) | struct Parser : ParserBase {
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
  type Catch (line 386) | namespace Catch { namespace clara {
    type clara (line 56) | namespace clara {
      type TextFlow (line 57) | namespace TextFlow {
        function isWhitespace (line 59) | inline auto isWhitespace(char c) -> bool {
        function isBreakableBefore (line 63) | inline auto isBreakableBefore(char c) -> bool {
        function isBreakableAfter (line 67) | inline auto isBreakableAfter(char c) -> bool {
        class Columns (line 72) | class Columns
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
        class Column (line 74) | class Column {
          class iterator (line 81) | class iterator {
            method iterator (line 92) | iterator(Column const& column, size_t stringIndex)
            method line (line 96) | auto line() const -> std::string const& { return m_column.m_st...
            method isBoundary (line 98) | auto isBoundary(size_t at) const -> bool {
            method calcLength (line 108) | void calcLength() {
            method indent (line 138) | auto indent() const -> size_t {
            method addIndentAndSuffix (line 143) | auto addIndentAndSuffix(std::string const &plain) const -> std...
            method iterator (line 154) | explicit iterator(Column const& column) : m_column(column) {
          method Column (line 202) | explicit Column(std::string const& text) { m_strings.push_back(t...
          method width (line 204) | auto width(size_t newWidth) -> Column& {
          method indent (line 209) | auto indent(size_t newIndent) -> Column& {
          method initialIndent (line 213) | auto initialIndent(size_t newIndent) -> Column& {
          method width (line 218) | auto width() const -> size_t { return m_width; }
          method begin (line 219) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 220) | auto end() const -> iterator { return { *this, m_strings.size() ...
          method friend (line 222) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 236) | auto toString() const -> std::string {
        class Spacer (line 243) | class Spacer : public Column {
          method Spacer (line 246) | explicit Spacer(size_t spaceWidth) : Column("") {
        class Columns (line 251) | class Columns {
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
      type detail (line 387) | namespace detail {
        type UnaryLambdaTraits (line 391) | struct UnaryLambdaTraits : UnaryLambdaTraits<decltype( &L::operato...
        type UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> (line 399) | struct UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> {
        class TokenStream (line 405) | class TokenStream
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class Args (line 408) | class Args {
          method Args (line 414) | Args( int argc, char const* const* argv )
          method Args (line 418) | Args( std::initializer_list<std::string> args )
          method exeName (line 423) | auto exeName() const -> std::string {
        type TokenType (line 430) | enum class TokenType {
        type Token (line 433) | struct Token {
        function isOptPrefix (line 438) | inline auto isOptPrefix( char c ) -> bool {
        class TokenStream (line 447) | class TokenStream {
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class ResultBase (line 520) | class ResultBase {
          type Type (line 522) | enum Type {
          method ResultBase (line 527) | ResultBase( Type type ) : m_type( type ) {}
        class ResultValueBase (line 536) | class ResultValueBase : public ResultBase {
          method value (line 538) | auto value() const -> T const & {
          method ResultValueBase (line 544) | ResultValueBase( Type type ) : ResultBase( type ) {}
          method ResultValueBase (line 546) | ResultValueBase( ResultValueBase const &other ) : ResultBase( ot...
          method ResultValueBase (line 551) | ResultValueBase( Type, T const &value ) : ResultBase( Ok ) {
        class ResultValueBase<void> (line 575) | class ResultValueBase<void> : public ResultBase {
        class BasicResult (line 581) | class BasicResult : public ResultValueBase<T> {
          method BasicResult (line 584) | explicit BasicResult( BasicResult<U> const &other )
          method ok (line 592) | static auto ok( U const &value ) -> BasicResult { return { Resul...
          method ok (line 593) | static auto ok() -> BasicResult { return { ResultBase::Ok }; }
          method logicError (line 594) | static auto logicError( std::string const &message ) -> BasicRes...
          method runtimeError (line 595) | static auto runtimeError( std::string const &message ) -> BasicR...
          method type (line 598) | auto type() const -> ResultBase::Type { return m_type; }
          method errorMessage (line 599) | auto errorMessage() const -> std::string { return m_errorMessage; }
          method enforceOk (line 602) | void enforceOk() const override {
          method BasicResult (line 614) | BasicResult( ResultBase::Type type, std::string const &message )
        type ParseResultType (line 625) | enum class ParseResultType {
        class ParseState (line 629) | class ParseState {
          method ParseState (line 632) | ParseState( ParseResultType type, TokenStream const &remainingTo...
          method type (line 637) | auto type() const -> ParseResultType { return m_type; }
          method remainingTokens (line 638) | auto remainingTokens() const -> TokenStream { return m_remaining...
        type HelpColumns (line 649) | struct HelpColumns {
        function convertInto (line 655) | inline auto convertInto( std::string const &source, T& target ) ->...
        function convertInto (line 664) | inline auto convertInto( std::string const &source, std::string& t...
        function convertInto (line 668) | inline auto convertInto( std::string const &source, bool &target )...
        function convertInto (line 681) | inline auto convertInto( std::string const &source, CLARA_CONFIG_O...
        type NonCopyable (line 690) | struct NonCopyable {
          method NonCopyable (line 691) | NonCopyable() = default;
          method NonCopyable (line 692) | NonCopyable( NonCopyable const & ) = delete;
          method NonCopyable (line 693) | NonCopyable( NonCopyable && ) = delete;
          method NonCopyable (line 694) | NonCopyable &operator=( NonCopyable const & ) = delete;
          method NonCopyable (line 695) | NonCopyable &operator=( NonCopyable && ) = delete;
        type BoundRef (line 698) | struct BoundRef : NonCopyable {
          method isContainer (line 700) | virtual auto isContainer() const -> bool { return false; }
          method isFlag (line 701) | virtual auto isFlag() const -> bool { return false; }
        type BoundValueRefBase (line 703) | struct BoundValueRefBase : BoundRef {
        type BoundFlagRefBase (line 706) | struct BoundFlagRefBase : BoundRef {
          method isFlag (line 708) | virtual auto isFlag() const -> bool { return true; }
        type BoundValueRef (line 712) | struct BoundValueRef : BoundValueRefBase {
          method BoundValueRef (line 715) | explicit BoundValueRef( T &ref ) : m_ref( ref ) {}
          method setValue (line 717) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundValueRef<std::vector<T>> (line 723) | struct BoundValueRef<std::vector<T>> : BoundValueRefBase {
          method BoundValueRef (line 726) | explicit BoundValueRef( std::vector<T> &ref ) : m_ref( ref ) {}
          method isContainer (line 728) | auto isContainer() const -> bool override { return true; }
          method setValue (line 730) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagRef (line 739) | struct BoundFlagRef : BoundFlagRefBase {
          method BoundFlagRef (line 742) | explicit BoundFlagRef( bool &ref ) : m_ref( ref ) {}
          method setFlag (line 744) | auto setFlag( bool flag ) -> ParserResult override {
        type LambdaInvoker (line 751) | struct LambdaInvoker {
          method invoke (line 755) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        type LambdaInvoker<void> (line 761) | struct LambdaInvoker<void> {
          method invoke (line 763) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        function invokeLambda (line 770) | inline auto invokeLambda( L const &lambda, std::string const &arg ...
        type BoundLambda (line 780) | struct BoundLambda : BoundValueRefBase {
          method BoundLambda (line 784) | explicit BoundLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setValue (line 786) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagLambda (line 792) | struct BoundFlagLambda : BoundFlagRefBase {
          method BoundFlagLambda (line 798) | explicit BoundFlagLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setFlag (line 800) | auto setFlag( bool flag ) -> ParserResult override {
        type Optionality (line 805) | enum class Optionality { Optional, Required }
        type Parser (line 807) | struct Parser
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
        class ParserBase (line 809) | class ParserBase {
          method validate (line 812) | virtual auto validate() const -> Result { return Result::ok(); }
          method cardinality (line 814) | virtual auto cardinality() const -> size_t { return 1; }
          method parse (line 816) | auto parse( Args const &args ) const -> InternalParseResult {
        class ComposableParserImpl (line 822) | class ComposableParserImpl : public ParserBase {
        class ParserRefImpl (line 833) | class ParserRefImpl : public ComposableParserImpl<DerivedT> {
          method ParserRefImpl (line 840) | explicit ParserRefImpl( std::shared_ptr<BoundRef> const &ref ) :...
          method ParserRefImpl (line 844) | ParserRefImpl( T &ref, std::string const &hint )
          method ParserRefImpl (line 850) | ParserRefImpl( LambdaT const &ref, std::string const &hint )
          method optional (line 860) | auto optional() -> DerivedT & {
          method required (line 865) | auto required() -> DerivedT & {
          method isOptional (line 870) | auto isOptional() const -> bool {
          method cardinality (line 874) | auto cardinality() const -> size_t override {
          method hint (line 881) | auto hint() const -> std::string { return m_hint; }
        class ExeName (line 884) | class ExeName : public ComposableParserImpl<ExeName> {
          method makeRef (line 889) | static auto makeRef(LambdaT const &lambda) -> std::shared_ptr<Bo...
          method ExeName (line 894) | ExeName() : m_name( std::make_shared<std::string>( "<executable>...
          method ExeName (line 896) | explicit ExeName( std::string &ref ) : ExeName() {
          method ExeName (line 901) | explicit ExeName( LambdaT const& lambda ) : ExeName() {
          method parse (line 906) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method name (line 910) | auto name() const -> std::string { return *m_name; }
          method set (line 911) | auto set( std::string const& newName ) -> ParserResult {
        class Arg (line 926) | class Arg : public ParserRefImpl<Arg> {
          method parse (line 930) | auto parse( std::string const &, TokenStream const &tokens ) con...
        function normaliseOpt (line 951) | inline auto normaliseOpt( std::string const &optName ) -> std::str...
        class Opt (line 960) | class Opt : public ParserRefImpl<Opt> {
          method Opt (line 966) | explicit Opt( LambdaT const &ref ) : ParserRefImpl( std::make_sh...
          method Opt (line 968) | explicit Opt( bool &ref ) : ParserRefImpl( std::make_shared<Boun...
          method Opt (line 971) | Opt( LambdaT const &ref, std::string const &hint ) : ParserRefIm...
          method Opt (line 974) | Opt( T &ref, std::string const &hint ) : ParserRefImpl( ref, hin...
          method getHelpColumns (line 981) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method isMatch (line 996) | auto isMatch( std::string const &optToken ) const -> bool {
          method parse (line 1007) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method validate (line 1043) | auto validate() const -> Result override {
        type Help (line 1061) | struct Help : Opt {
          method Help (line 1062) | Help( bool &showHelpFlag )
        type Parser (line 1076) | struct Parser : ParserBase {
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
    type clara (line 386) | namespace clara {
      type TextFlow (line 57) | namespace TextFlow {
        function isWhitespace (line 59) | inline auto isWhitespace(char c) -> bool {
        function isBreakableBefore (line 63) | inline auto isBreakableBefore(char c) -> bool {
        function isBreakableAfter (line 67) | inline auto isBreakableAfter(char c) -> bool {
        class Columns (line 72) | class Columns
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
        class Column (line 74) | class Column {
          class iterator (line 81) | class iterator {
            method iterator (line 92) | iterator(Column const& column, size_t stringIndex)
            method line (line 96) | auto line() const -> std::string const& { return m_column.m_st...
            method isBoundary (line 98) | auto isBoundary(size_t at) const -> bool {
            method calcLength (line 108) | void calcLength() {
            method indent (line 138) | auto indent() const -> size_t {
            method addIndentAndSuffix (line 143) | auto addIndentAndSuffix(std::string const &plain) const -> std...
            method iterator (line 154) | explicit iterator(Column const& column) : m_column(column) {
          method Column (line 202) | explicit Column(std::string const& text) { m_strings.push_back(t...
          method width (line 204) | auto width(size_t newWidth) -> Column& {
          method indent (line 209) | auto indent(size_t newIndent) -> Column& {
          method initialIndent (line 213) | auto initialIndent(size_t newIndent) -> Column& {
          method width (line 218) | auto width() const -> size_t { return m_width; }
          method begin (line 219) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 220) | auto end() const -> iterator { return { *this, m_strings.size() ...
          method friend (line 222) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 236) | auto toString() const -> std::string {
        class Spacer (line 243) | class Spacer : public Column {
          method Spacer (line 246) | explicit Spacer(size_t spaceWidth) : Column("") {
        class Columns (line 251) | class Columns {
          class iterator (line 256) | class iterator {
            type EndTag (line 258) | struct EndTag {}
            method iterator (line 264) | iterator(Columns const& columns, EndTag)
            method iterator (line 280) | explicit iterator(Columns const& columns)
          method begin (line 328) | auto begin() const -> iterator { return iterator(*this); }
          method end (line 329) | auto end() const -> iterator { return { *this, iterator::EndTag(...
          method friend (line 341) | inline friend std::ostream& operator << (std::ostream& os, Colum...
          method toString (line 354) | auto toString() const -> std::string {
      type detail (line 387) | namespace detail {
        type UnaryLambdaTraits (line 391) | struct UnaryLambdaTraits : UnaryLambdaTraits<decltype( &L::operato...
        type UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> (line 399) | struct UnaryLambdaTraits<ReturnT( ClassT::* )( ArgT ) const> {
        class TokenStream (line 405) | class TokenStream
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class Args (line 408) | class Args {
          method Args (line 414) | Args( int argc, char const* const* argv )
          method Args (line 418) | Args( std::initializer_list<std::string> args )
          method exeName (line 423) | auto exeName() const -> std::string {
        type TokenType (line 430) | enum class TokenType {
        type Token (line 433) | struct Token {
        function isOptPrefix (line 438) | inline auto isOptPrefix( char c ) -> bool {
        class TokenStream (line 447) | class TokenStream {
          method loadBuffer (line 453) | void loadBuffer() {
          method TokenStream (line 485) | explicit TokenStream( Args const &args ) : TokenStream( args.m_a...
          method TokenStream (line 487) | TokenStream( Iterator it, Iterator itEnd ) : it( it ), itEnd( it...
          method count (line 495) | auto count() const -> size_t { return m_tokenBuffer.size() + (it...
        class ResultBase (line 520) | class ResultBase {
          type Type (line 522) | enum Type {
          method ResultBase (line 527) | ResultBase( Type type ) : m_type( type ) {}
        class ResultValueBase (line 536) | class ResultValueBase : public ResultBase {
          method value (line 538) | auto value() const -> T const & {
          method ResultValueBase (line 544) | ResultValueBase( Type type ) : ResultBase( type ) {}
          method ResultValueBase (line 546) | ResultValueBase( ResultValueBase const &other ) : ResultBase( ot...
          method ResultValueBase (line 551) | ResultValueBase( Type, T const &value ) : ResultBase( Ok ) {
        class ResultValueBase<void> (line 575) | class ResultValueBase<void> : public ResultBase {
        class BasicResult (line 581) | class BasicResult : public ResultValueBase<T> {
          method BasicResult (line 584) | explicit BasicResult( BasicResult<U> const &other )
          method ok (line 592) | static auto ok( U const &value ) -> BasicResult { return { Resul...
          method ok (line 593) | static auto ok() -> BasicResult { return { ResultBase::Ok }; }
          method logicError (line 594) | static auto logicError( std::string const &message ) -> BasicRes...
          method runtimeError (line 595) | static auto runtimeError( std::string const &message ) -> BasicR...
          method type (line 598) | auto type() const -> ResultBase::Type { return m_type; }
          method errorMessage (line 599) | auto errorMessage() const -> std::string { return m_errorMessage; }
          method enforceOk (line 602) | void enforceOk() const override {
          method BasicResult (line 614) | BasicResult( ResultBase::Type type, std::string const &message )
        type ParseResultType (line 625) | enum class ParseResultType {
        class ParseState (line 629) | class ParseState {
          method ParseState (line 632) | ParseState( ParseResultType type, TokenStream const &remainingTo...
          method type (line 637) | auto type() const -> ParseResultType { return m_type; }
          method remainingTokens (line 638) | auto remainingTokens() const -> TokenStream { return m_remaining...
        type HelpColumns (line 649) | struct HelpColumns {
        function convertInto (line 655) | inline auto convertInto( std::string const &source, T& target ) ->...
        function convertInto (line 664) | inline auto convertInto( std::string const &source, std::string& t...
        function convertInto (line 668) | inline auto convertInto( std::string const &source, bool &target )...
        function convertInto (line 681) | inline auto convertInto( std::string const &source, CLARA_CONFIG_O...
        type NonCopyable (line 690) | struct NonCopyable {
          method NonCopyable (line 691) | NonCopyable() = default;
          method NonCopyable (line 692) | NonCopyable( NonCopyable const & ) = delete;
          method NonCopyable (line 693) | NonCopyable( NonCopyable && ) = delete;
          method NonCopyable (line 694) | NonCopyable &operator=( NonCopyable const & ) = delete;
          method NonCopyable (line 695) | NonCopyable &operator=( NonCopyable && ) = delete;
        type BoundRef (line 698) | struct BoundRef : NonCopyable {
          method isContainer (line 700) | virtual auto isContainer() const -> bool { return false; }
          method isFlag (line 701) | virtual auto isFlag() const -> bool { return false; }
        type BoundValueRefBase (line 703) | struct BoundValueRefBase : BoundRef {
        type BoundFlagRefBase (line 706) | struct BoundFlagRefBase : BoundRef {
          method isFlag (line 708) | virtual auto isFlag() const -> bool { return true; }
        type BoundValueRef (line 712) | struct BoundValueRef : BoundValueRefBase {
          method BoundValueRef (line 715) | explicit BoundValueRef( T &ref ) : m_ref( ref ) {}
          method setValue (line 717) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundValueRef<std::vector<T>> (line 723) | struct BoundValueRef<std::vector<T>> : BoundValueRefBase {
          method BoundValueRef (line 726) | explicit BoundValueRef( std::vector<T> &ref ) : m_ref( ref ) {}
          method isContainer (line 728) | auto isContainer() const -> bool override { return true; }
          method setValue (line 730) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagRef (line 739) | struct BoundFlagRef : BoundFlagRefBase {
          method BoundFlagRef (line 742) | explicit BoundFlagRef( bool &ref ) : m_ref( ref ) {}
          method setFlag (line 744) | auto setFlag( bool flag ) -> ParserResult override {
        type LambdaInvoker (line 751) | struct LambdaInvoker {
          method invoke (line 755) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        type LambdaInvoker<void> (line 761) | struct LambdaInvoker<void> {
          method invoke (line 763) | static auto invoke( L const &lambda, ArgType const &arg ) -> Par...
        function invokeLambda (line 770) | inline auto invokeLambda( L const &lambda, std::string const &arg ...
        type BoundLambda (line 780) | struct BoundLambda : BoundValueRefBase {
          method BoundLambda (line 784) | explicit BoundLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setValue (line 786) | auto setValue( std::string const &arg ) -> ParserResult override {
        type BoundFlagLambda (line 792) | struct BoundFlagLambda : BoundFlagRefBase {
          method BoundFlagLambda (line 798) | explicit BoundFlagLambda( L const &lambda ) : m_lambda( lambda ) {}
          method setFlag (line 800) | auto setFlag( bool flag ) -> ParserResult override {
        type Optionality (line 805) | enum class Optionality { Optional, Required }
        type Parser (line 807) | struct Parser
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
        class ParserBase (line 809) | class ParserBase {
          method validate (line 812) | virtual auto validate() const -> Result { return Result::ok(); }
          method cardinality (line 814) | virtual auto cardinality() const -> size_t { return 1; }
          method parse (line 816) | auto parse( Args const &args ) const -> InternalParseResult {
        class ComposableParserImpl (line 822) | class ComposableParserImpl : public ParserBase {
        class ParserRefImpl (line 833) | class ParserRefImpl : public ComposableParserImpl<DerivedT> {
          method ParserRefImpl (line 840) | explicit ParserRefImpl( std::shared_ptr<BoundRef> const &ref ) :...
          method ParserRefImpl (line 844) | ParserRefImpl( T &ref, std::string const &hint )
          method ParserRefImpl (line 850) | ParserRefImpl( LambdaT const &ref, std::string const &hint )
          method optional (line 860) | auto optional() -> DerivedT & {
          method required (line 865) | auto required() -> DerivedT & {
          method isOptional (line 870) | auto isOptional() const -> bool {
          method cardinality (line 874) | auto cardinality() const -> size_t override {
          method hint (line 881) | auto hint() const -> std::string { return m_hint; }
        class ExeName (line 884) | class ExeName : public ComposableParserImpl<ExeName> {
          method makeRef (line 889) | static auto makeRef(LambdaT const &lambda) -> std::shared_ptr<Bo...
          method ExeName (line 894) | ExeName() : m_name( std::make_shared<std::string>( "<executable>...
          method ExeName (line 896) | explicit ExeName( std::string &ref ) : ExeName() {
          method ExeName (line 901) | explicit ExeName( LambdaT const& lambda ) : ExeName() {
          method parse (line 906) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method name (line 910) | auto name() const -> std::string { return *m_name; }
          method set (line 911) | auto set( std::string const& newName ) -> ParserResult {
        class Arg (line 926) | class Arg : public ParserRefImpl<Arg> {
          method parse (line 930) | auto parse( std::string const &, TokenStream const &tokens ) con...
        function normaliseOpt (line 951) | inline auto normaliseOpt( std::string const &optName ) -> std::str...
        class Opt (line 960) | class Opt : public ParserRefImpl<Opt> {
          method Opt (line 966) | explicit Opt( LambdaT const &ref ) : ParserRefImpl( std::make_sh...
          method Opt (line 968) | explicit Opt( bool &ref ) : ParserRefImpl( std::make_shared<Boun...
          method Opt (line 971) | Opt( LambdaT const &ref, std::string const &hint ) : ParserRefIm...
          method Opt (line 974) | Opt( T &ref, std::string const &hint ) : ParserRefImpl( ref, hin...
          method getHelpColumns (line 981) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method isMatch (line 996) | auto isMatch( std::string const &optToken ) const -> bool {
          method parse (line 1007) | auto parse( std::string const&, TokenStream const &tokens ) cons...
          method validate (line 1043) | auto validate() const -> Result override {
        type Help (line 1061) | struct Help : Opt {
          method Help (line 1062) | Help( bool &showHelpFlag )
        type Parser (line 1076) | struct Parser : ParserBase {
          method getHelpColumns (line 1114) | auto getHelpColumns() const -> std::vector<HelpColumns> {
          method writeToStream (line 1123) | void writeToStream( std::ostream &os ) const {
          method validate (line 1169) | auto validate() const -> Result override {
          method parse (line 1185) | auto parse( std::string const& exeName, TokenStream const &token...
  type UnaryLambdaTraits<ReturnT( ClassT::* )( Args... ) const> (line 394) | struct UnaryLambdaTraits<ReturnT( ClassT::* )( Args... ) const> {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_benchmark.hpp
  type Catch (line 34) | namespace Catch {
    type Benchmark (line 35) | namespace Benchmark {
      type Benchmark (line 36) | struct Benchmark {
        method Benchmark (line 37) | Benchmark(std::string &&name)
        method Benchmark (line 41) | Benchmark(std::string &&name, FUN &&func)
        method prepare (line 45) | ExecutionPlan<FloatDuration<Clock>> prepare(const IConfig &cfg, En...
        method run (line 54) | void run() {
        method CATCH_CATCH_ALL (line 85) | CATCH_CATCH_ALL{

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_chronometer.hpp
  type Catch (line 19) | namespace Catch {
    type Benchmark (line 20) | namespace Benchmark {
      type Detail (line 21) | namespace Detail {
        type ChronometerConcept (line 22) | struct ChronometerConcept {
        type ChronometerModel (line 28) | struct ChronometerModel final : public ChronometerConcept {
          method start (line 29) | void start() override { started = Clock::now(); }
          method finish (line 30) | void finish() override { finished = Clock::now(); }
          method elapsed (line 32) | ClockDuration<Clock> elapsed() const { return finished - started; }
      type Chronometer (line 39) | struct Chronometer {
        method measure (line 42) | void measure(Fun&& fun) { measure(std::forward<Fun>(fun), is_calla...
        method runs (line 44) | int runs() const { return k; }
        method Chronometer (line 46) | Chronometer(Detail::ChronometerConcept& meter, int k)
        method measure (line 52) | void measure(Fun&& fun, std::false_type) {
        method measure (line 57) | void measure(Fun&& fun, std::true_type) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_clock.hpp
  type Catch (line 17) | namespace Catch {
    type Benchmark (line 18) | namespace Benchmark {
      type now (line 30) | struct now {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_constructor.hpp
  type Catch (line 16) | namespace Catch {
    type Benchmark (line 17) | namespace Benchmark {
      type Detail (line 18) | namespace Detail {
        type ObjectStorage (line 20) | struct ObjectStorage
          method ObjectStorage (line 24) | ObjectStorage() : data() {}
          method ObjectStorage (line 26) | ObjectStorage(const ObjectStorage& other)
          method ObjectStorage (line 31) | ObjectStorage(ObjectStorage&& other)
          method construct (line 39) | void construct(Args&&... args)
          method destruct (line 45) | typename std::enable_if<AllowManualDestruction>::type destruct()
          method destruct_on_exit (line 53) | void destruct_on_exit(typename std::enable_if<Destruct, U>::type...
          method destruct_on_exit (line 56) | void destruct_on_exit(typename std::enable_if<!Destruct, U>::typ...
          method T (line 58) | T& stored_object() {
          method T (line 62) | T const& stored_object() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_environment.hpp
  type Catch (line 17) | namespace Catch {
    type Benchmark (line 18) | namespace Benchmark {
      type EnvironmentEstimate (line 20) | struct EnvironmentEstimate {
      type Environment (line 30) | struct Environment {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_estimate.hpp
  type Catch (line 14) | namespace Catch {
    type Benchmark (line 15) | namespace Benchmark {
      type Estimate (line 17) | struct Estimate {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_execution_plan.hpp
  type Catch (line 23) | namespace Catch {
    type Benchmark (line 24) | namespace Benchmark {
      type ExecutionPlan (line 26) | struct ExecutionPlan {
        method run (line 39) | std::vector<FloatDuration<Clock>> run(const IConfig &cfg, Environm...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_optimizer.hpp
  type Catch (line 18) | namespace Catch {
    type Benchmark (line 19) | namespace Benchmark {
      function keep_memory (line 22) | inline void keep_memory(T* p) {
      function keep_memory (line 25) | inline void keep_memory() {
      type Detail (line 29) | namespace Detail {
        function optimizer_barrier (line 30) | inline void optimizer_barrier() { keep_memory(); }
        function optimizer_barrier (line 44) | inline void optimizer_barrier() {
      function keep_memory (line 36) | inline void keep_memory(T* p) {
      type Detail (line 43) | namespace Detail {
        function optimizer_barrier (line 30) | inline void optimizer_barrier() { keep_memory(); }
        function optimizer_barrier (line 44) | inline void optimizer_barrier() {
      function deoptimize_value (line 52) | inline void deoptimize_value(T&& x) {
      function invoke_deoptimized (line 57) | inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> typename ...
      function invoke_deoptimized (line 62) | inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> typename ...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_outlier_classification.hpp
  type Catch (line 13) | namespace Catch {
    type Benchmark (line 14) | namespace Benchmark {
      type OutlierClassification (line 15) | struct OutlierClassification {
        method total (line 22) | int total() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_sample_analysis.hpp
  type Catch (line 23) | namespace Catch {
    type Benchmark (line 24) | namespace Benchmark {
      type SampleAnalysis (line 26) | struct SampleAnalysis {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_analyse.hpp
  type Catch (line 22) | namespace Catch {
    type Benchmark (line 23) | namespace Benchmark {
      type Detail (line 24) | namespace Detail {
        function analyse (line 26) | SampleAnalysis<Duration> analyse(const IConfig &cfg, Environment<D...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_benchmark_function.hpp
  type Catch (line 23) | namespace Catch {
    type Benchmark (line 24) | namespace Benchmark {
      type Detail (line 25) | namespace Detail {
        type is_related (line 29) | struct is_related
        type BenchmarkFunction (line 39) | struct BenchmarkFunction {
          type callable (line 41) | struct callable {
          type model (line 47) | struct model : public callable {
            method model (line 48) | model(Fun&& fun) : fun(std::move(fun)) {}
            method model (line 49) | model(Fun const& fun) : fun(fun) {}
            method call (line 53) | void call(Chronometer meter) const override {
            method call (line 56) | void call(Chronometer meter, std::true_type) const {
            method call (line 59) | void call(Chronometer meter, std::false_type) const {
          type do_nothing (line 66) | struct do_nothing { void operator()() const {} }
          method BenchmarkFunction (line 69) | BenchmarkFunction(model<T>* c) : f(c) {}
          method BenchmarkFunction (line 72) | BenchmarkFunction()
          method BenchmarkFunction (line 77) | BenchmarkFunction(Fun&& fun)
          method BenchmarkFunction (line 80) | BenchmarkFunction(BenchmarkFunction&& that)
          method BenchmarkFunction (line 83) | BenchmarkFunction(BenchmarkFunction const& that)
          method BenchmarkFunction (line 86) | BenchmarkFunction& operator=(BenchmarkFunction&& that) {
          method BenchmarkFunction (line 91) | BenchmarkFunction& operator=(BenchmarkFunction const& that) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_complete_invoke.hpp
  type Catch (line 19) | namespace Catch {
    type Benchmark (line 20) | namespace Benchmark {
      type Detail (line 21) | namespace Detail {
        type CompleteType (line 23) | struct CompleteType { using type = T; }
        type CompleteType<void> (line 25) | struct CompleteType<void> { struct type {}; }
          type type (line 25) | struct type {}
        type CompleteInvoker (line 31) | struct CompleteInvoker {
          method Result (line 33) | static Result invoke(Fun&& fun, Args&&... args) {
        type CompleteInvoker<void> (line 38) | struct CompleteInvoker<void> {
          method invoke (line 40) | static CompleteType_t<void> invoke(Fun&& fun, Args&&... args) {
        function complete_invoke (line 50) | CompleteType_t<ResultOf_t<Fun(Args...)>> complete_invoke(Fun&& fun...
      function user_code (line 58) | Detail::CompleteType_t<Detail::ResultOf_t<Fun()>> user_code(Fun&& fu...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_estimate_clock.hpp
  type Catch (line 27) | namespace Catch {
    type Benchmark (line 28) | namespace Benchmark {
      type Detail (line 29) | namespace Detail {
        function resolution (line 31) | std::vector<double> resolution(int k) {
        function warmup (line 56) | int warmup() {
        function estimate_clock_resolution (line 61) | EnvironmentEstimate<FloatDuration<Clock>> estimate_clock_resolutio...
        function estimate_clock_cost (line 70) | EnvironmentEstimate<FloatDuration<Clock>> estimate_clock_cost(Floa...
        function measure_environment (line 96) | Environment<FloatDuration<Clock>> measure_environment() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_measure.hpp
  type Catch (line 20) | namespace Catch {
    type Benchmark (line 21) | namespace Benchmark {
      type Detail (line 22) | namespace Detail {
        function measure (line 24) | TimingOf<Clock, Fun(Args...)> measure(Fun&& fun, Args&&... args) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_repeat.hpp
  type Catch (line 17) | namespace Catch {
    type Benchmark (line 18) | namespace Benchmark {
      type Detail (line 19) | namespace Detail {
        type repeater (line 21) | struct repeater {
        function repeat (line 30) | repeater<typename std::decay<Fun>::type> repeat(Fun&& fun) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_run_for_at_least.hpp
  type Catch (line 24) | namespace Catch {
    type Benchmark (line 25) | namespace Benchmark {
      type Detail (line 26) | namespace Detail {
        function measure_one (line 28) | TimingOf<Clock, Fun(int)> measure_one(Fun&& fun, int iters, std::f...
        function measure_one (line 32) | TimingOf<Clock, Fun(Chronometer)> measure_one(Fun&& fun, int iters...
        type optimized_away_error (line 42) | struct optimized_away_error : std::exception {
        function run_for_at_least (line 49) | TimingOf<Clock, Fun(run_for_at_least_argument_t<Clock, Fun>)> run_...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_stats.cpp
  function erf_inv (line 26) | double erf_inv(double x) {
  function standard_deviation (line 101) | double standard_deviation(std::vector<double>::iterator first, std::vect...
  type Catch (line 112) | namespace Catch {
    type Benchmark (line 113) | namespace Benchmark {
      type Detail (line 114) | namespace Detail {
        function weighted_average_quantile (line 116) | double weighted_average_quantile(int k, int q, std::vector<double>...
        function erfc_inv (line 130) | double erfc_inv(double x) {
        function normal_quantile (line 134) | double normal_quantile(double p) {
        function outlier_variance (line 151) | double outlier_variance(Estimate<double> mean, Estimate<double> st...
        function bootstrap_analysis (line 178) | bootstrap_analysis analyse_samples(double confidence_level, int n_...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_stats.hpp
  type Catch (line 27) | namespace Catch {
    type Benchmark (line 28) | namespace Benchmark {
      type Detail (line 29) | namespace Detail {
        function OutlierClassification (line 35) | OutlierClassification classify_outliers(Iterator first, Iterator l...
        function mean (line 59) | double mean(Iterator first, Iterator last) {
        function sample (line 66) | sample resample(URng& rng, int resamples, Iterator first, Iterator...
        function sample (line 83) | sample jackknife(Estimator&& estimator, Iterator first, Iterator l...
        function normal_cdf (line 97) | inline double normal_cdf(double x) {
        function bootstrap (line 106) | Estimate<double> bootstrap(double confidence_level, Iterator first...
        type bootstrap_analysis (line 147) | struct bootstrap_analysis {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_timing.hpp
  type Catch (line 20) | namespace Catch {
    type Benchmark (line 21) | namespace Benchmark {
      type Timing (line 23) | struct Timing {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_approx.cpp
  function marginComparison (line 19) | bool marginComparison(double lhs, double rhs, double margin) {
  type Catch (line 25) | namespace Catch {
    type Detail (line 26) | namespace Detail {
      function Approx (line 35) | Approx Approx::custom() {
      function Approx (line 39) | Approx Approx::operator-() const {
    type literals (line 75) | namespace literals {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_approx.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionhandler.cpp
  type Catch (line 19) | namespace Catch {
    function handleExceptionMatchExpr (line 117) | void handleExceptionMatchExpr( AssertionHandler& handler, std::string ...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionhandler.h
  type TestFailureException (line 17) | struct TestFailureException{}
  type AssertionResultData (line 18) | struct AssertionResultData
  type IResultCapture (line 19) | struct IResultCapture
  function class (line 22) | class LazyExpression {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertioninfo.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionresult.cpp
  type Catch (line 11) | namespace Catch {
    function SourceLineInfo (line 96) | SourceLineInfo AssertionResult::getSourceInfo() const {
    function StringRef (line 100) | StringRef AssertionResult::getTestMacroName() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionresult.h
  function namespace (line 18) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_capture_matchers.cpp
  type Catch (line 11) | namespace Catch {
    function handleExceptionMatchExpr (line 18) | void handleExceptionMatchExpr( AssertionHandler& handler, StringMatche...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_capture_matchers.h
  function streamReconstructedExpression (line 35) | void streamReconstructedExpression( std::ostream &os ) const override {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_commandline.cpp
  type Catch (line 19) | namespace Catch {
    function makeCommandLineParser (line 21) | clara::Parser makeCommandLineParser( ConfigData& config ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_commandline.h
  function namespace (line 14) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_common.cpp
  type Catch (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_common.h
  type Catch_global_namespace_dummy (line 26) | struct Catch_global_namespace_dummy {}
  function namespace (line 29) | namespace Catch {
  type StreamEndStop (line 79) | struct StreamEndStop {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_config.cpp
  type Catch (line 12) | namespace Catch {
    function TestSpec (line 54) | TestSpec const& Config::testSpec() const { return m_testSpec; }
    function Verbosity (line 73) | Verbosity Config::verbosity() const                { return m_data.ver...
    function IStream (line 80) | IStream const* Config::openStream() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_config.hpp
  type Catch (line 25) | namespace Catch {
    type IStream (line 27) | struct IStream
    type ConfigData (line 29) | struct ConfigData {
    class Config (line 72) | class Config : public IConfig {
      method Config (line 75) | Config() = default;

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_console_colour.cpp
  type Catch (line 28) | namespace Catch {
    type IColourImpl (line 31) | struct IColourImpl {
    type NoColourImpl (line 36) | struct NoColourImpl : IColourImpl {
      method use (line 37) | void use( Colour::Code ) {}
      method IColourImpl (line 39) | static IColourImpl* instance() {
    class Win32ColourImpl (line 62) | class Win32ColourImpl : public IColourImpl {
      method Win32ColourImpl (line 64) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
      method use (line 72) | void use( Colour::Code _colourCode ) override {
      method setTextAttribute (line 97) | void setTextAttribute( WORD _textAttribute ) {
    function IColourImpl (line 105) | IColourImpl* platformColourInstance() {
    class PosixColourImpl (line 133) | class PosixColourImpl : public IColourImpl {
      method use (line 135) | void use( Colour::Code _colourCode ) override {
      method IColourImpl (line 156) | static IColourImpl* instance() {
      method setColour (line 162) | void setColour( const char* _escapeCode ) {
    function useColourOnPlatform (line 168) | bool useColourOnPlatform() {
    function IColourImpl (line 180) | IColourImpl* platformColourInstance() {
    function IColourImpl (line 202) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
    function Colour (line 215) | Colour& Colour::operator=( Colour&& rhs ) noexcept {
  type Catch (line 59) | namespace Catch {
    type IColourImpl (line 31) | struct IColourImpl {
    type NoColourImpl (line 36) | struct NoColourImpl : IColourImpl {
      method use (line 37) | void use( Colour::Code ) {}
      method IColourImpl (line 39) | static IColourImpl* instance() {
    class Win32ColourImpl (line 62) | class Win32ColourImpl : public IColourImpl {
      method Win32ColourImpl (line 64) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
      method use (line 72) | void use( Colour::Code _colourCode ) override {
      method setTextAttribute (line 97) | void setTextAttribute( WORD _textAttribute ) {
    function IColourImpl (line 105) | IColourImpl* platformColourInstance() {
    class PosixColourImpl (line 133) | class PosixColourImpl : public IColourImpl {
      method use (line 135) | void use( Colour::Code _colourCode ) override {
      method IColourImpl (line 156) | static IColourImpl* instance() {
      method setColour (line 162) | void setColour( const char* _escapeCode ) {
    function useColourOnPlatform (line 168) | bool useColourOnPlatform() {
    function IColourImpl (line 180) | IColourImpl* platformColourInstance() {
    function IColourImpl (line 202) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
    function Colour (line 215) | Colour& Colour::operator=( Colour&& rhs ) noexcept {
  type Catch (line 126) | namespace Catch {
    type IColourImpl (line 31) | struct IColourImpl {
    type NoColourImpl (line 36) | struct NoColourImpl : IColourImpl {
      method use (line 37) | void use( Colour::Code ) {}
      method IColourImpl (line 39) | static IColourImpl* instance() {
    class Win32ColourImpl (line 62) | class Win32ColourImpl : public IColourImpl {
      method Win32ColourImpl (line 64) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
      method use (line 72) | void use( Colour::Code _colourCode ) override {
      method setTextAttribute (line 97) | void setTextAttribute( WORD _textAttribute ) {
    function IColourImpl (line 105) | IColourImpl* platformColourInstance() {
    class PosixColourImpl (line 133) | class PosixColourImpl : public IColourImpl {
      method use (line 135) | void use( Colour::Code _colourCode ) override {
      method IColourImpl (line 156) | static IColourImpl* instance() {
      method setColour (line 162) | void setColour( const char* _escapeCode ) {
    function useColourOnPlatform (line 168) | bool useColourOnPlatform() {
    function IColourImpl (line 180) | IColourImpl* platformColourInstance() {
    function IColourImpl (line 202) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
    function Colour (line 215) | Colour& Colour::operator=( Colour&& rhs ) noexcept {
  type Catch (line 200) | namespace Catch {
    type IColourImpl (line 31) | struct IColourImpl {
    type NoColourImpl (line 36) | struct NoColourImpl : IColourImpl {
      method use (line 37) | void use( Colour::Code ) {}
      method IColourImpl (line 39) | static IColourImpl* instance() {
    class Win32ColourImpl (line 62) | class Win32ColourImpl : public IColourImpl {
      method Win32ColourImpl (line 64) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
      method use (line 72) | void use( Colour::Code _colourCode ) override {
      method setTextAttribute (line 97) | void setTextAttribute( WORD _textAttribute ) {
    function IColourImpl (line 105) | IColourImpl* platformColourInstance() {
    class PosixColourImpl (line 133) | class PosixColourImpl : public IColourImpl {
      method use (line 135) | void use( Colour::Code _colourCode ) override {
      method IColourImpl (line 156) | static IColourImpl* instance() {
      method setColour (line 162) | void setColour( const char* _escapeCode ) {
    function useColourOnPlatform (line 168) | bool useColourOnPlatform() {
    function IColourImpl (line 180) | IColourImpl* platformColourInstance() {
    function IColourImpl (line 202) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
    function Colour (line 215) | Colour& Colour::operator=( Colour&& rhs ) noexcept {
  type Catch (line 208) | namespace Catch {
    type IColourImpl (line 31) | struct IColourImpl {
    type NoColourImpl (line 36) | struct NoColourImpl : IColourImpl {
      method use (line 37) | void use( Colour::Code ) {}
      method IColourImpl (line 39) | static IColourImpl* instance() {
    class Win32ColourImpl (line 62) | class Win32ColourImpl : public IColourImpl {
      method Win32ColourImpl (line 64) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
      method use (line 72) | void use( Colour::Code _colourCode ) override {
      method setTextAttribute (line 97) | void setTextAttribute( WORD _textAttribute ) {
    function IColourImpl (line 105) | IColourImpl* platformColourInstance() {
    class PosixColourImpl (line 133) | class PosixColourImpl : public IColourImpl {
      method use (line 135) | void use( Colour::Code _colourCode ) override {
      method IColourImpl (line 156) | static IColourImpl* instance() {
      method setColour (line 162) | void setColour( const char* _escapeCode ) {
    function useColourOnPlatform (line 168) | bool useColourOnPlatform() {
    function IColourImpl (line 180) | IColourImpl* platformColourInstance() {
    function IColourImpl (line 202) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
    function Colour (line 215) | Colour& Colour::operator=( Colour&& rhs ) noexcept {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_console_colour.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_context.cpp
  type Catch (line 12) | namespace Catch {
    class Context (line 14) | class Context : public IMutableContext, NonCopyable {
      method IResultCapture (line 17) | IResultCapture* getResultCapture() override {
      method IRunner (line 20) | IRunner* getRunner() override {
      method IConfigPtr (line 24) | IConfigPtr const& getConfig() const override {
      method setResultCapture (line 31) | void setResultCapture( IResultCapture* resultCapture ) override {
      method setRunner (line 34) | void setRunner( IRunner* runner ) override {
      method setConfig (line 37) | void setConfig( IConfigPtr const& config ) override {
    function cleanUpContext (line 56) | void cleanUpContext() {
    function SimplePcg32 (line 65) | SimplePcg32& rng() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_context.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debug_console.cpp
  type Catch (line 18) | namespace Catch {
    function writeToDebugConsole (line 19) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 27) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 35) | void writeToDebugConsole( std::string const& text ) {
  type Catch (line 26) | namespace Catch {
    function writeToDebugConsole (line 19) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 27) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 35) | void writeToDebugConsole( std::string const& text ) {
  type Catch (line 34) | namespace Catch {
    function writeToDebugConsole (line 19) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 27) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 35) | void writeToDebugConsole( std::string const& text ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debug_console.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debugger.cpp
  type Catch (line 30) | namespace Catch {
    function isDebuggerActive (line 37) | bool isDebuggerActive(){
    function isDebuggerActive (line 68) | bool isDebuggerActive() {
    function isDebuggerActive (line 87) | bool isDebuggerActive(){
    function isDebuggerActive (line 108) | bool isDebuggerActive() {
    function isDebuggerActive (line 115) | bool isDebuggerActive() {
    function isDebuggerActive (line 121) | bool isDebuggerActive() { return false; }
  type Catch (line 79) | namespace Catch{
    function isDebuggerActive (line 37) | bool isDebuggerActive(){
    function isDebuggerActive (line 68) | bool isDebuggerActive() {
    function isDebuggerActive (line 87) | bool isDebuggerActive(){
    function isDebuggerActive (line 108) | bool isDebuggerActive() {
    function isDebuggerActive (line 115) | bool isDebuggerActive() {
    function isDebuggerActive (line 121) | bool isDebuggerActive() { return false; }
  type Catch (line 107) | namespace Catch {
    function isDebuggerActive (line 37) | bool isDebuggerActive(){
    function isDebuggerActive (line 68) | bool isDebuggerActive() {
    function isDebuggerActive (line 87) | bool isDebuggerActive(){
    function isDebuggerActive (line 108) | bool isDebuggerActive() {
    function isDebuggerActive (line 115) | bool isDebuggerActive() {
    function isDebuggerActive (line 121) | bool isDebuggerActive() { return false; }
  type Catch (line 114) | namespace Catch {
    function isDebuggerActive (line 37) | bool isDebuggerActive(){
    function isDebuggerActive (line 68) | bool isDebuggerActive() {
    function isDebuggerActive (line 87) | bool isDebuggerActive(){
    function isDebuggerActive (line 108) | bool isDebuggerActive() {
    function isDebuggerActive (line 115) | bool isDebuggerActive() {
    function isDebuggerActive (line 121) | bool isDebuggerActive() { return false; }
  type Catch (line 120) | namespace Catch {
    function isDebuggerActive (line 37) | bool isDebuggerActive(){
    function isDebuggerActive (line 68) | bool isDebuggerActive() {
    function isDebuggerActive (line 87) | bool isDebuggerActive(){
    function isDebuggerActive (line 108) | bool isDebuggerActive() {
    function isDebuggerActive (line 115) | bool isDebuggerActive() {
    function isDebuggerActive (line 121) | bool isDebuggerActive() { return false; }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debugger.h
  function namespace (line 14) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_decomposer.cpp
  type Catch (line 12) | namespace Catch {
    function formatReconstructedExpression (line 16) | void formatReconstructedExpression( std::ostream &os, std::string cons...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_decomposer.h
  function namespace (line 26) | namespace Catch {
  function operator (line 230) | struct Decomposer {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_default_main.hpp
  function main (line 20) | int main (int argc, char * argv[]) {
  function main (line 29) | int main (int argc, char * const argv[]) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enforce.cpp
  type Catch (line 13) | namespace Catch {
    function throw_exception (line 15) | [[noreturn]]
    function throw_logic_error (line 23) | [[noreturn]]
    function throw_domain_error (line 28) | [[noreturn]]
    function throw_runtime_error (line 33) | [[noreturn]]

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enforce.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enum_values_registry.cpp
  type Catch (line 15) | namespace Catch {
    type Detail (line 19) | namespace Detail {
      function StringRef (line 24) | StringRef extractInstanceName(StringRef enumInstance) {
      function parseEnums (line 34) | std::vector<StringRef> parseEnums( StringRef enums ) {
      function StringRef (line 46) | StringRef EnumInfo::lookup( int value ) const {
      function makeEnumInfo (line 54) | std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRe...
      function EnumInfo (line 68) | EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enum_values_registry.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_errno_guard.cpp
  type Catch (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_errno_guard.h
  function namespace (line 10) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_exception_translator_registry.cpp
  type Catch (line 18) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_exception_translator_registry.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_fatal_condition.cpp
  function reportFatal (line 24) | void reportFatal( char const * const message ) {
  type Catch (line 33) | namespace Catch {
    type SignalDefs (line 34) | struct SignalDefs { DWORD id; const char* name; }
    function LONG (line 46) | LONG CALLBACK FatalConditionHandler::handleVectoredException(PEXCEPTIO...
    type SignalDefs (line 93) | struct SignalDefs {
    type sigaction (line 132) | struct sigaction
    type sigaction (line 159) | struct sigaction
  type Catch (line 91) | namespace Catch {
    type SignalDefs (line 34) | struct SignalDefs { DWORD id; const char* name; }
    function LONG (line 46) | LONG CALLBACK FatalConditionHandler::handleVectoredException(PEXCEPTIO...
    type SignalDefs (line 93) | struct SignalDefs {
    type sigaction (line 132) | struct sigaction
    type sigaction (line 159) | struct sigaction
  type Catch (line 168) | namespace Catch {
    type SignalDefs (line 34) | struct SignalDefs { DWORD id; const char* name; }
    function LONG (line 46) | LONG CALLBACK FatalConditionHandler::handleVectoredException(PEXCEPTIO...
    type SignalDefs (line 93) | struct SignalDefs {
    type sigaction (line 132) | struct sigaction
    type sigaction (line 159) | struct sigaction

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_fatal_condition.h
  function namespace (line 19) | namespace Catch {
  function namespace (line 40) | namespace Catch {
  function namespace (line 61) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators.cpp
  type Catch (line 15) | namespace Catch {
    type Generators (line 23) | namespace Generators {
      function acquireGeneratorTracker (line 27) | auto acquireGeneratorTracker( SourceLineInfo const& lineInfo ) -> IG...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators.hpp
  type Catch (line 21) | namespace Catch {
    class GeneratorException (line 23) | class GeneratorException : public std::exception {
      method GeneratorException (line 27) | GeneratorException(const char* msg):
    type Generators (line 34) | namespace Generators {
      type pf (line 37) | namespace pf{
        function make_unique (line 39) | std::unique_ptr<T> make_unique( Args&&... args ) {
      type IGenerator (line 45) | struct IGenerator : GeneratorUntypedBase {
      class SingleValueGenerator (line 57) | class SingleValueGenerator final : public IGenerator<T> {
        method SingleValueGenerator (line 60) | SingleValueGenerator(T&& value) : m_value(std::move(value)) {}
        method T (line 62) | T const& get() const override {
        method next (line 65) | bool next() override {
      class FixedValuesGenerator (line 71) | class FixedValuesGenerator final : public IGenerator<T> {
        method FixedValuesGenerator (line 78) | FixedValuesGenerator( std::initializer_list<T> values ) : m_values...
        method T (line 80) | T const& get() const override {
        method next (line 83) | bool next() override {
      class GeneratorWrapper (line 90) | class GeneratorWrapper final {
        method GeneratorWrapper (line 93) | GeneratorWrapper(std::unique_ptr<IGenerator<T>> generator):
        method T (line 96) | T const& get() const {
        method next (line 99) | bool next() {
      function value (line 105) | GeneratorWrapper<T> value(T&& value) {
      function values (line 109) | GeneratorWrapper<T> values(std::initializer_list<T> values) {
      class Generators (line 114) | class Generators : public IGenerator<T> {
        method populate (line 118) | void populate(GeneratorWrapper<T>&& generator) {
        method populate (line 121) | void populate(T&& val) {
        method populate (line 125) | void populate(U&& val) {
        method populate (line 129) | void populate(U&& valueOrGenerator, Gs &&... moreGenerators) {
        method Generators (line 136) | Generators(Gs &&... moreGenerators) {
        method T (line 141) | T const& get() const override {
        method next (line 145) | bool next() override {
      function table (line 159) | GeneratorWrapper<std::tuple<Ts...>> table( std::initializer_list<std...
      type as (line 165) | struct as {}
      function makeGenerators (line 168) | auto makeGenerators( GeneratorWrapper<T>&& generator, Gs &&... moreG...
      function makeGenerators (line 172) | auto makeGenerators( GeneratorWrapper<T>&& generator ) -> Generators...
      function makeGenerators (line 176) | auto makeGenerators( T&& val, Gs &&... moreGenerators ) -> Generator...
      function makeGenerators (line 180) | auto makeGenerators( as<T>, U&& val, Gs &&... moreGenerators ) -> Ge...
      function generate (line 190) | auto generate( SourceLineInfo const& lineInfo, L const& generatorExp...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators_generic.hpp
  type Catch (line 13) | namespace Catch {
    type Generators (line 14) | namespace Generators {
      class TakeGenerator (line 17) | class TakeGenerator : public IGenerator<T> {
        method TakeGenerator (line 22) | TakeGenerator(size_t target, GeneratorWrapper<T>&& generator):
        method T (line 28) | T const& get() const override {
        method next (line 31) | bool next() override {
      function take (line 48) | GeneratorWrapper<T> take(size_t target, GeneratorWrapper<T>&& genera...
      class FilterGenerator (line 54) | class FilterGenerator : public IGenerator<T> {
        method FilterGenerator (line 59) | FilterGenerator(P&& pred, GeneratorWrapper<T>&& generator):
        method T (line 73) | T const& get() const override {
        method next (line 77) | bool next() override {
      function filter (line 89) | GeneratorWrapper<T> filter(Predicate&& pred, GeneratorWrapper<T>&& g...
      class RepeatGenerator (line 94) | class RepeatGenerator : public IGenerator<T> {
        method RepeatGenerator (line 104) | RepeatGenerator(size_t repeats, GeneratorWrapper<T>&& generator):
        method T (line 111) | T const& get() const override {
        method next (line 119) | bool next() override {
      function repeat (line 145) | GeneratorWrapper<T> repeat(size_t repeats, GeneratorWrapper<T>&& gen...
      class MapGenerator (line 150) | class MapGenerator : public IGenerator<T> {
        method MapGenerator (line 158) | MapGenerator(F2&& function, GeneratorWrapper<U>&& generator) :
        method T (line 164) | T const& get() const override {
        method next (line 167) | bool next() override {
      function map (line 177) | GeneratorWrapper<T> map(Func&& function, GeneratorWrapper<U>&& gener...
      function map (line 184) | GeneratorWrapper<T> map(Func&& function, GeneratorWrapper<U>&& gener...
      class ChunkGenerator (line 191) | class ChunkGenerator final : public IGenerator<std::vector<T>> {
        method ChunkGenerator (line 197) | ChunkGenerator(size_t size, GeneratorWrapper<T> generator) :
        method next (line 214) | bool next() override {
      function chunk (line 227) | GeneratorWrapper<std::vector<T>> chunk(size_t size, GeneratorWrapper...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators_specific.hpp
  type Catch (line 17) | namespace Catch {
    type Generators (line 18) | namespace Generators {
      class RandomFloatingGenerator (line 21) | class RandomFloatingGenerator final : public IGenerator<Float> {
        method RandomFloatingGenerator (line 27) | RandomFloatingGenerator(Float a, Float b):
        method Float (line 33) | Float const& get() const override {
        method next (line 36) | bool next() override {
      class RandomIntegerGenerator (line 43) | class RandomIntegerGenerator final : public IGenerator<Integer> {
        method RandomIntegerGenerator (line 49) | RandomIntegerGenerator(Integer a, Integer b):
        method Integer (line 55) | Integer const& get() const override {
        method next (line 58) | bool next() override {
      function random (line 67) | typename std::enable_if<std::is_integral<T>::value && !std::is_same<...
      function random (line 76) | typename std::enable_if<std::is_floating_point<T>::value,
      class RangeGenerator (line 86) | class RangeGenerator final : public IGenerator<T> {
        method RangeGenerator (line 93) | RangeGenerator(T const& start, T const& end, T const& step):
        method RangeGenerator (line 104) | RangeGenerator(T const& start, T const& end):
        method T (line 108) | T const& get() const override {
        method next (line 112) | bool next() override {
      function range (line 119) | GeneratorWrapper<T> range(T const& start, T const& end, T const& ste...
      function range (line 125) | GeneratorWrapper<T> range(T const& start, T const& end) {
      class IteratorGenerator (line 132) | class IteratorGenerator final : public IGenerator<T> {
        method IteratorGenerator (line 141) | IteratorGenerator(InputIterator first, InputSentinel last):m_elems...
        method T (line 147) | T const& get() const override {
        method next (line 151) | bool next() override {
      function from_range (line 160) | GeneratorWrapper<ResultType> from_range(InputIterator from, InputSen...
      function from_range (line 166) | GeneratorWrapper<ResultType> from_range(Container const& cnt) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_impl.hpp
  type Catch (line 25) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_capture.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_capture.h
  function namespace (line 17) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_config.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_config.h
  type class (line 21) | enum class
  type WarnAbout (line 27) | struct WarnAbout { enum What {
  type ShowDurations (line 33) | struct ShowDurations { enum OrNot {
  type RunTests (line 38) | struct RunTests { enum InWhatOrder {
  type UseColour (line 43) | struct UseColour { enum YesOrNo {
  type WaitForKeypress (line 48) | struct WaitForKeypress { enum When {
  type IConfig (line 57) | struct IConfig

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_enum_values_registry.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_exception.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_exception.h
  function namespace (line 22) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_generatortracker.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_registry_hub.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_registry_hub.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_reporter.cpp
  type Catch (line 11) | namespace Catch {
    function IConfigPtr (line 20) | IConfigPtr ReporterConfig::fullConfig() const { return m_fullConfig; }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_reporter.h
  function namespace (line 34) | namespace Catch {
  function reset (line 61) | void reset() {
  type TestRunInfo (line 68) | struct TestRunInfo {
  type GroupInfo (line 72) | struct GroupInfo {
  type AssertionStats (line 82) | struct AssertionStats {
  type SectionStats (line 98) | struct SectionStats {
  type TestCaseStats (line 115) | struct TestCaseStats {
  type TestGroupStats (line 135) | struct TestGroupStats {
  type TestRunStats (line 152) | struct TestRunStats {
  type BenchmarkInfo (line 169) | struct BenchmarkInfo {
  type IStreamingReporter (line 206) | struct IStreamingReporter {
  type IReporterFactory (line 251) | struct IReporterFactory {
  type IReporterRegistry (line 258) | struct IReporterRegistry {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_runner.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_runner.h
  function namespace (line 11) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_tag_alias_registry.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_testcase.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_testcase.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_leak_detector.cpp
  type Catch (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_leak_detector.h
  function namespace (line 10) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_list.cpp
  type Catch (line 28) | namespace Catch {
    function listTests (line 30) | std::size_t listTests( Config const& config ) {
    function listTestsNamesOnly (line 64) | std::size_t listTestsNamesOnly( Config const& config ) {
    function listTags (line 102) | std::size_t listTags( Config const& config ) {
    function listReporters (line 137) | std::size_t listReporters() {
    function list (line 159) | Option<std::size_t> list( std::shared_ptr<Config> const& config ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_list.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers.cpp
  type Catch (line 10) | namespace Catch {
    type Matchers (line 11) | namespace Matchers {
      type Impl (line 12) | namespace Impl {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers.h
  function namespace (line 18) | namespace Impl {
  function match (line 71) | bool match( ArgT const& arg ) const override {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_exception.cpp
  type Catch (line 11) | namespace Catch {
    type Matchers (line 12) | namespace Matchers {
      type Exception (line 13) | namespace Exception {
      function Message (line 24) | Exception::ExceptionMessageMatcher Message(std::string const& messag...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_exception.hpp
  type Catch (line 12) | namespace Catch {
    type Matchers (line 13) | namespace Matchers {
      type Exception (line 14) | namespace Exception {
        class ExceptionMessageMatcher (line 16) | class ExceptionMessageMatcher : public MatcherBase<std::exception> {
          method ExceptionMessageMatcher (line 20) | ExceptionMessageMatcher(std::string const& message):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_floating.cpp
  type Catch (line 25) | namespace Catch {
    function convert (line 28) | int32_t convert(float f) {
    function convert (line 35) | int64_t convert(double d) {
    function almostEqualUlps (line 43) | bool almostEqualUlps(FP lhs, FP rhs, uint64_t maxUlpDiff) {
    function nextafter (line 72) | float nextafter(float x, float y) {
    function nextafter (line 76) | double nextafter(double x, double y) {
    function nextafter (line 80) | long double nextafter(long double x, long double y) {
    function FP (line 93) | FP step(FP start, FP direction, uint64_t steps) {
    function marginComparison (line 106) | bool marginComparison(double lhs, double rhs, double margin) {
    function write (line 111) | void write(std::ostream& out, FloatingPoint num) {
    type Matchers (line 119) | namespace Matchers {
      type Floating (line 120) | namespace Floating {
        type FloatingPointKind (line 122) | enum class FloatingPointKind : uint8_t {
      function WithinULP (line 224) | Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlp...
      function WithinULP (line 228) | Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpD...
      function WithinAbs (line 232) | Floating::WithinAbsMatcher WithinAbs(double target, double margin) {
      function WithinRel (line 236) | Floating::WithinRelMatcher WithinRel(double target, double eps) {
      function WithinRel (line 240) | Floating::WithinRelMatcher WithinRel(double target) {
      function WithinRel (line 244) | Floating::WithinRelMatcher WithinRel(float target, float eps) {
      function WithinRel (line 248) | Floating::WithinRelMatcher WithinRel(float target) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_floating.h
  function namespace (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_generic.hpp
  type Catch (line 16) | namespace Catch {
    type Matchers (line 17) | namespace Matchers {
      type Generic (line 18) | namespace Generic {
        type Detail (line 20) | namespace Detail {
        class PredicateMatcher (line 25) | class PredicateMatcher : public MatcherBase<T> {
          method PredicateMatcher (line 30) | PredicateMatcher(std::function<bool(T const&)> const& elem, std:...
          method match (line 35) | bool match( T const& item ) const override {
          method describe (line 39) | std::string describe() const override {
      function Predicate (line 51) | Generic::PredicateMatcher<T> Predicate(std::function<bool(T const&)>...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_string.cpp
  type Catch (line 15) | namespace Catch {
    type Matchers (line 16) | namespace Matchers {
      type StdString (line 18) | namespace StdString {
      function Equals (line 100) | StdString::EqualsMatcher Equals( std::string const& str, CaseSensiti...
      function Contains (line 103) | StdString::ContainsMatcher Contains( std::string const& str, CaseSen...
      function EndsWith (line 106) | StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSen...
      function StartsWith (line 109) | StdString::StartsWithMatcher StartsWith( std::string const& str, Cas...
      function Matches (line 113) | StdString::RegexMatcher Matches(std::string const& regex, CaseSensit...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_string.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_vector.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_message.cpp
  type Catch (line 17) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_message.h
  function namespace (line 20) | namespace Catch {
  function MessageStream (line 50) | struct MessageBuilder : MessageStream {
  function class (line 64) | class ScopedMessage {
  function class (line 75) | class Capturer {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_meta.hpp
  type Catch (line 14) | namespace Catch {
    type always_false (line 16) | struct always_false : std::false_type {}
    type true_given (line 18) | struct true_given : std::true_type {}
    type is_callable_tester (line 19) | struct is_callable_tester {
    type is_callable (line 27) | struct is_callable
  type is_callable<Fun(Args...)> (line 30) | struct is_callable<Fun(Args...)> : decltype(is_callable_tester::test<Fun...
  type mpl_ (line 46) | namespace mpl_{
    type na (line 47) | struct na

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_objc.hpp
  function end (line 34) | end

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_objc_arc.hpp
  function arcSafeRelease (line 23) | inline void arcSafeRelease( NSObject* obj ) {
  function id (line 26) | inline id performOptionalSelector( id obj, SEL sel ) {
  function arcSafeRelease (line 34) | inline void arcSafeRelease( NSObject* ){}
  function id (line 35) | inline id performOptionalSelector( id obj, SEL sel ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_option.hpp
  type Catch (line 11) | namespace Catch {
    class Option (line 15) | class Option {
      method Option (line 17) | Option() : nullableValue( nullptr ) {}
      method Option (line 18) | Option( T const& _value )
      method Option (line 21) | Option( Option const& _other )
      method Option (line 29) | Option& operator= ( Option const& _other ) {
      method Option (line 37) | Option& operator = ( T const& _value ) {
      method reset (line 43) | void reset() {
      method T (line 49) | T& operator*() { return *nullableValue; }
      method T (line 50) | T const& operator*() const { return *nullableValue; }
      method T (line 51) | T* operator->() { return nullableValue; }
      method T (line 52) | const T* operator->() const { return nullableValue; }
      method T (line 54) | T valueOr( T const& defaultValue ) const {
      method some (line 58) | bool some() const { return nullableValue != nullptr; }
      method none (line 59) | bool none() const { return nullableValue == nullptr; }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_output_redirect.cpp
  type Catch (line 29) | namespace Catch {
    function FILE (line 98) | FILE* TempFile::getFile() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_output_redirect.h
  function class (line 19) | class RedirectedStream {
  function class (line 29) | class RedirectedStdOut {
  function class (line 40) | class RedirectedStdErr {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_polyfills.cpp
  type Catch (line 12) | namespace Catch {
    function isnan (line 15) | bool isnan(float f) {
    function isnan (line 18) | bool isnan(double d) {
    function isnan (line 23) | bool isnan(float f) {
    function isnan (line 26) | bool isnan(double d) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_polyfills.hpp
  type Catch (line 10) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_random_number_generator.cpp
  type Catch (line 13) | namespace Catch {
    function rotate_right (line 22) | uint32_t rotate_right(uint32_t val, uint32_t count) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_random_number_generator.h
  function namespace (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_registry_hub.cpp
  type Catch (line 20) | namespace Catch {
    class RegistryHub (line 24) | class RegistryHub : public IRegistryHub, public IMutableRegistryHub,
      method RegistryHub (line 28) | RegistryHub() = default;
      method IReporterRegistry (line 29) | IReporterRegistry const& getReporterRegistry() const override {
      method ITestCaseRegistry (line 32) | ITestCaseRegistry const& getTestCaseRegistry() const override {
      method IExceptionTranslatorRegistry (line 35) | IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry()...
      method ITagAliasRegistry (line 38) | ITagAliasRegistry const& getTagAliasRegistry() const override {
      method StartupExceptionRegistry (line 41) | StartupExceptionRegistry const& getStartupExceptionRegistry() const ...
      method registerReporter (line 46) | void registerReporter( std::string const& name, IReporterFactoryPtr ...
      method registerListener (line 49) | void registerListener( IReporterFactoryPtr const& factory ) override {
      method registerTest (line 52) | void registerTest( TestCase const& testInfo ) override {
      method registerTranslator (line 55) | void registerTranslator( const IExceptionTranslator* translator ) ov...
      method registerTagAlias (line 58) | void registerTagAlias( std::string const& alias, std::string const& ...
      method registerStartupException (line 61) | void registerStartupException() noexcept override {
      method IMutableEnumValuesRegistry (line 64) | IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() override {
    function IRegistryHub (line 80) | IRegistryHub const& getRegistryHub() {
    function IMutableRegistryHub (line 83) | IMutableRegistryHub& getMutableRegistryHub() {
    function cleanUp (line 86) | void cleanUp() {
    function translateActiveException (line 90) | std::string translateActiveException() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_reporter_registrars.hpp
  type Catch (line 14) | namespace Catch {
    class ReporterRegistrar (line 17) | class ReporterRegistrar {
      class ReporterFactory (line 19) | class ReporterFactory : public IReporterFactory {
        method IStreamingReporterPtr (line 21) | IStreamingReporterPtr create( ReporterConfig const& config ) const...
        method getDescription (line 25) | std::string getDescription() const override {
      method ReporterRegistrar (line 32) | explicit ReporterRegistrar( std::string const& name ) {
    class ListenerRegistrar (line 38) | class ListenerRegistrar {
      class ListenerFactory (line 40) | class ListenerFactory : public IReporterFactory {
        method IStreamingReporterPtr (line 42) | IStreamingReporterPtr create( ReporterConfig const& config ) const...
        method getDescription (line 45) | std::string getDescription() const override {
      method ListenerRegistrar (line 52) | ListenerRegistrar() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_reporter_registry.cpp
  type Catch (line 9) | namespace Catch {
    function IStreamingReporterPtr (line 13) | IStreamingReporterPtr ReporterRegistry::create( std::string const& nam...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_reporter_registry.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_result_type.cpp
  type Catch (line 11) | namespace Catch {
    function isOk (line 13) | bool isOk( ResultWas::OfType resultType ) {
    function isJustInfo (line 16) | bool isJustInfo( int flags ) {
    function shouldContinueOnFailure (line 24) | bool shouldContinueOnFailure( int flags )    { return ( flags & Result...
    function shouldSuppressFailure (line 25) | bool shouldSuppressFailure( int flags )      { return ( flags & Result...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_result_type.h
  function namespace (line 11) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_run_context.cpp
  type Catch (line 13) | namespace Catch {
    type Generators (line 15) | namespace Generators {
      type GeneratorTracker (line 16) | struct GeneratorTracker : TestCaseTracking::TrackerBase, IGeneratorT...
        method GeneratorTracker (line 19) | GeneratorTracker( TestCaseTracking::NameAndLocation const& nameAnd...
        method GeneratorTracker (line 24) | static GeneratorTracker& acquire( TrackerContext& ctx, TestCaseTra...
        method isGeneratorTracker (line 46) | bool isGeneratorTracker() const override { return true; }
        method hasGenerator (line 47) | auto hasGenerator() const -> bool override {
        method close (line 50) | void close() override {
        method getGenerator (line 60) | auto getGenerator() const -> GeneratorBasePtr const& override {
        method setGenerator (line 63) | void setGenerator( GeneratorBasePtr&& generator ) override {
    function Totals (line 96) | Totals RunContext::runTest(TestCase const& testCase) {
    function IConfigPtr (line 137) | IConfigPtr RunContext::config() const {
    function IStreamingReporter (line 141) | IStreamingReporter& RunContext::reporter() const {
    function AssertionResult (line 267) | const AssertionResult * RunContext::getLastResult() const {
  function CATCH_CATCH_ANON (line 357) | CATCH_CATCH_ANON (TestFailureException&) {
  function IResultCapture (line 503) | IResultCapture& getResultCapture() {
  function seedRng (line 510) | void seedRng(IConfig const& config) {
  function rngSeed (line 517) | unsigned int rngSeed() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_run_context.h
  function namespace (line 28) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_section.cpp
  type Catch (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_section.h
  function namespace (line 18) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_section_info.cpp
  type Catch (line 10) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_section_info.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_session.cpp
  type Catch (line 31) | namespace Catch {
    function IStreamingReporterPtr (line 36) | IStreamingReporterPtr createReporter(std::string const& reporterName, ...
    function IStreamingReporterPtr (line 43) | IStreamingReporterPtr makeReporter(std::shared_ptr<Config> const& conf...
    class TestGroup (line 63) | class TestGroup {
      method TestGroup (line 65) | explicit TestGroup(std::shared_ptr<Config> const& config)
      method Totals (line 83) | Totals execute() {
    function applyFilenamesAsTags (line 119) | void applyFilenamesAsTags(Catch::IConfig const& config) {
  function ConfigData (line 265) | ConfigData& Session::configData() {
  function Config (line 268) | Config& Session::config() {
  function catch (line 306) | catch( std::exception& ex ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_session.h
  function namespace (line 17) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_singletons.cpp
  type Catch (line 12) | namespace Catch {
    function getSingletons (line 15) | static auto getSingletons() -> std::vector<ISingleton*>*& {
    function addSingleton (line 25) | void addSingleton(ISingleton* singleton ) {
    function cleanupSingletons (line 28) | void cleanupSingletons() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_singletons.hpp
  type Catch (line 10) | namespace Catch {
    type ISingleton (line 12) | struct ISingleton {
    class Singleton (line 22) | class Singleton : SingletonImplT, public ISingleton {
      method getInternal (line 24) | static auto getInternal() -> Singleton* {
      method get (line 34) | static auto get() -> InterfaceT const& {
      method getMutable (line 37) | static auto getMutable() -> MutableInterfaceT& {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_startup_exception_registry.cpp
  type Catch (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_startup_exception_registry.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_stream.cpp
  type Catch (line 24) | namespace Catch {
    type Detail (line 28) | namespace Detail { namespace {
      class StreamBufImpl (line 30) | class StreamBufImpl : public std::streambuf {
        method StreamBufImpl (line 35) | StreamBufImpl() {
        method overflow (line 44) | int overflow( int c ) override {
        method sync (line 56) | int sync() override {
      type OutputDebugWriter (line 67) | struct OutputDebugWriter {
      class FileStream (line 76) | class FileStream : public IStream {
        method FileStream (line 79) | FileStream( StringRef filename ) {
      class CoutStream (line 92) | class CoutStream : public IStream {
        method CoutStream (line 97) | CoutStream() : m_os( Catch::cout().rdbuf() ) {}
      class DebugOutStream (line 106) | class DebugOutStream : public IStream {
        method DebugOutStream (line 110) | DebugOutStream()
    function makeStream (line 125) | auto makeStream( StringRef const &filename ) -> IStream const* {
    type StringStreams (line 140) | struct StringStreams {
      method add (line 145) | auto add() -> std::size_t {
      method release (line 157) | void release( std::size_t index ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_stream.h
  function namespace (line 18) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_string_manip.cpp
  type Catch (line 17) | namespace Catch {
    function toLowerCh (line 20) | char toLowerCh(char c) {
    function startsWith (line 25) | bool startsWith( std::string const& s, std::string const& prefix ) {
    function startsWith (line 28) | bool startsWith( std::string const& s, char prefix ) {
    function endsWith (line 31) | bool endsWith( std::string const& s, std::string const& suffix ) {
    function endsWith (line 34) | bool endsWith( std::string const& s, char suffix ) {
    function contains (line 37) | bool contains( std::string const& s, std::string const& infix ) {
    function toLowerInPlace (line 40) | void toLowerInPlace( std::string& s ) {
    function toLower (line 43) | std::string toLower( std::string const& s ) {
    function trim (line 48) | std::string trim( std::string const& str ) {
    function StringRef (line 56) | StringRef trim(StringRef ref) {
    function replaceInPlace (line 68) | bool replaceInPlace( std::string& str, std::string const& replaceThis,...
    function splitStringRef (line 82) | std::vector<StringRef> splitStringRef( StringRef str, char delimiter ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_string_manip.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_stringref.cpp
  type Catch (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_stringref.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tag_alias.cpp
  type Catch (line 3) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tag_alias.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tag_alias_autoregistrar.cpp
  type Catch (line 5) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tag_alias_autoregistrar.h
  function namespace (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tag_alias_registry.cpp
  type Catch (line 17) | namespace Catch {
    function TagAlias (line 21) | TagAlias const* TagAliasRegistry::find( std::string const& alias ) con...
    function ITagAliasRegistry (line 54) | ITagAliasRegistry const& ITagAliasRegistry::get() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tag_alias_registry.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_case_info.cpp
  type Catch (line 20) | namespace Catch {
    function parseSpecialTag (line 23) | TestCaseInfo::SpecialProperties parseSpecialTag( std::string const& ta...
    function isReservedTag (line 40) | bool isReservedTag( std::string const& tag ) {
    function enforceNotReservedTag (line 43) | void enforceNotReservedTag( std::string const& tag, SourceLineInfo con...
    function TestCase (line 51) | TestCase makeTestCase(  ITestInvoker* _testCase,
    function setTags (line 99) | void setTags( TestCaseInfo& testCaseInfo, std::vector<std::string> tag...
    function TestCase (line 160) | TestCase TestCase::withName( std::string const& _newName ) const {
    function TestCaseInfo (line 180) | TestCaseInfo const& TestCase::getTestCaseInfo() const

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_case_info.h
  type ITestInvoker (line 25) | struct ITestInvoker
  type TestCaseInfo (line 27) | struct TestCaseInfo {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_case_registry_impl.cpp
  type Catch (line 20) | namespace Catch {
    function sortTests (line 22) | std::vector<TestCase> sortTests( IConfig const& config, std::vector<Te...
    function isThrowSafe (line 41) | bool isThrowSafe( TestCase const& testCase, IConfig const& config ) {
    function matchTest (line 45) | bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IC...
    function enforceNoDuplicateTestCases (line 49) | void enforceNoDuplicateTestCases( std::vector<TestCase> const& functio...
    function filterTests (line 60) | std::vector<TestCase> filterTests( std::vector<TestCase> const& testCa...
    function extractClassName (line 108) | std::string extractClassName( StringRef const& classOrQualifiedMethodN...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_case_registry_impl.h
  function namespace (line 20) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_case_tracker.cpp
  type Catch (line 24) | namespace Catch {
    type TestCaseTracking (line 25) | namespace TestCaseTracking {
      function ITracker (line 36) | ITracker& TrackerContext::startRun() {
      function ITracker (line 60) | ITracker& TrackerContext::currentTracker() {
      function NameAndLocation (line 74) | NameAndLocation const& TrackerBase::nameAndLocation() const {
      function ITrackerPtr (line 95) | ITrackerPtr TrackerBase::findChild( NameAndLocation const& nameAndLo...
      function ITracker (line 106) | ITracker& TrackerBase::parent() {
      function SectionTracker (line 202) | SectionTracker& SectionTracker::acquire( TrackerContext& ctx, NameAn...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_case_tracker.h
  type NameAndLocation (line 21) | struct NameAndLocation {
  type ITracker (line 28) | struct ITracker
  type ITracker (line 32) | struct ITracker {
  function class (line 60) | class TrackerContext {
  type CycleState (line 87) | enum CycleState {
  function NameAndLocation (line 106) | NameAndLocation const& nameAndLocation() const override;

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_registry.cpp
  type Catch (line 13) | namespace Catch {
    function makeTestInvoker (line 15) | auto makeTestInvoker( void(*testAsFunction)() ) noexcept -> ITestInvok...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_registry.h
  function namespace (line 18) | namespace Catch {
  type NameAndTags (line 39) | struct NameAndTags {
  function NonCopyable (line 45) | struct AutoReg : NonCopyable {
  function CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION (line 111) | CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
  function namespace (line 153) | namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
  function namespace (line 198) | namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName) {                     ...
  function namespace (line 246) | namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
  function namespace (line 277) | namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){ \

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_spec.cpp
  type Catch (line 17) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_spec.h
  type IConfig (line 25) | struct IConfig
  function class (line 28) | class Pattern {
  function class (line 39) | class NamePattern : public Pattern {
  function class (line 47) | class TagPattern : public Pattern {
  function class (line 55) | class ExcludedPattern : public Pattern {
  type Filter (line 63) | struct Filter {
  type FilterMatch (line 71) | struct FilterMatch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_spec_parser.cpp
  type Catch (line 11) | namespace Catch {
    function TestSpecParser (line 15) | TestSpecParser& TestSpecParser::parse( std::string const& arg ) {
    function TestSpec (line 33) | TestSpec TestSpecParser::testSpec() {
    function TestSpec (line 234) | TestSpec parseTestSpec( std::string const& arg ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_test_spec_parser.h
  function namespace (line 20) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_text.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_timer.cpp
  type Catch (line 15) | namespace Catch {
    function getCurrentNanosecondsSinceEpoch (line 17) | auto getCurrentNanosecondsSinceEpoch() -> uint64_t {
    function estimateClockResolution (line 22) | auto estimateClockResolution() -> uint64_t {
    function getEstimatedClockResolution (line 52) | auto getEstimatedClockResolution() -> uint64_t {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_timer.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_to_string.hpp
  type Catch (line 15) | namespace Catch {
    function to_string (line 17) | std::string to_string(T const& t) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tostring.cpp
  type Catch (line 28) | namespace Catch {
    type Detail (line 30) | namespace Detail {
      type Endianness (line 37) | struct Endianness {
        type Arch (line 38) | enum Arch { Big, Little }
        method Arch (line 40) | static Arch which() {
      function rawMemoryToString (line 50) | std::string rawMemoryToString( const void *object, std::size_t size ) {
    function fpToString (line 69) | std::string fpToString( T value, int precision ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_tostring.h
  function namespace (line 33) | namespace Catch {
  function type (line 113) | type
  function namespace (line 123) | namespace Detail {
  function string (line 149) | struct StringMaker<std::string> {
  function string_view (line 155) | struct StringMaker<std::string_view> {
  type StringMaker (line 161) | struct StringMaker
  function char (line 165) | struct StringMaker<char *> {
  function wstring (line 171) | struct StringMaker<std::wstring> {
  function wstring_view (line 177) | struct StringMaker<std::wstring_view> {
  type StringMaker (line 183) | struct StringMaker
  function wchar_t (line 187) | struct StringMaker<wchar_t *> {
  function string (line 196) | string convert(char const* str) {
  function string (line 202) | string convert(signed char const* str) {
  function string (line 208) | string convert(unsigned char const* str) {
  function byte (line 215) | struct StringMaker<std::byte> {
  function int (line 220) | struct StringMaker<int> {
  function long (line 224) | struct StringMaker<long> {
  type StringMaker (line 228) | struct StringMaker
  function unsigned (line 232) | struct StringMaker<unsigned int> {
  function unsigned (line 236) | struct StringMaker<unsigned long> {
  type StringMaker (line 240) | struct StringMaker
  function bool (line 245) | struct StringMaker<bool> {
  function char (line 250) | struct StringMaker<char> {
  function signed (line 254) | struct StringMaker<signed char> {
  function unsigned (line 258) | struct StringMaker<unsigned char> {
  type StringMaker (line 263) | struct StringMaker
  function float (line 268) | struct StringMaker<float> {
  function double (line 274) | struct StringMaker<double> {
  function namespace (line 311) | namespace Detail {
  function NSString (line 328) | struct StringMaker<NSString*> {
  function NSObject (line 336) | struct StringMaker<NSObject*> {
  function namespace (line 342) | namespace Detail {
  function namespace (line 367) | namespace Catch {
  function namespace (line 385) | namespace Catch {
  function namespace (line 404) | namespace Catch {
  function namespace (line 445) | namespace Catch {
  function namespace (line 471) | namespace Catch {
  function string (line 526) | string convert(T const(&arr)[SZ]) {
  function namespace (line 541) | namespace Catch {
  function std (line 620) | static std::string convert(std::chrono::time_point<Clock, Duration> cons...
  function std (line 627) | static std::string convert(std::chrono::time_point<std::chrono::system_c...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_totals.cpp
  type Catch (line 10) | namespace Catch {
    function Counts (line 12) | Counts Counts::operator - ( Counts const& other ) const {
    function Counts (line 20) | Counts& Counts::operator += ( Counts const& other ) {
    function Totals (line 37) | Totals Totals::operator - ( Totals const& other ) const {
    function Totals (line 44) | Totals& Totals::operator += ( Totals const& other ) {
    function Totals (line 50) | Totals Totals::delta( Totals const& prevTotals ) const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_totals.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_uncaught_exceptions.cpp
  type Catch (line 13) | namespace Catch {
    function uncaught_exceptions (line 14) | bool uncaught_exceptions() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_uncaught_exceptions.h
  function namespace (line 11) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_user_interfaces.h
  function namespace (line 14) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_version.cpp
  type Catch (line 12) | namespace Catch {
    function Version (line 39) | Version const& libraryVersion() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_version.h
  function namespace (line 13) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_wildcard_pattern.cpp
  type Catch (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_wildcard_pattern.h
  function namespace (line 14) | namespace Catch

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_xmlwriter.cpp
  type Catch (line 17) | namespace Catch {
    function trailingBytes (line 21) | size_t trailingBytes(unsigned char c) {
    function headerValue (line 34) | uint32_t headerValue(unsigned char c) {
    function hexEscapeChar (line 47) | void hexEscapeChar(std::ostream& os, unsigned char c) {
    function shouldNewline (line 55) | bool shouldNewline(XmlFormatting fmt) {
    function shouldIndent (line 59) | bool shouldIndent(XmlFormatting fmt) {
    function XmlFormatting (line 65) | XmlFormatting operator | (XmlFormatting lhs, XmlFormatting rhs) {
    function XmlFormatting (line 72) | XmlFormatting operator & (XmlFormatting lhs, XmlFormatting rhs) {
    function XmlWriter (line 231) | XmlWriter& XmlWriter::startElement( std::string const& name, XmlFormat...
    function XmlWriter (line 251) | XmlWriter& XmlWriter::endElement(XmlFormatting fmt) {
    function XmlWriter (line 270) | XmlWriter& XmlWriter::writeAttribute( std::string const& name, std::st...
    function XmlWriter (line 276) | XmlWriter& XmlWriter::writeAttribute( std::string const& name, bool at...
    function XmlWriter (line 281) | XmlWriter& XmlWriter::writeText( std::string const& text, XmlFormattin...
    function XmlWriter (line 294) | XmlWriter& XmlWriter::writeComment( std::string const& text, XmlFormat...
    function XmlWriter (line 308) | XmlWriter& XmlWriter::writeBlankLine() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_xmlwriter.h
  function XmlFormatting (line 17) | enum class XmlFormatting {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_automake.hpp
  type Catch (line 17) | namespace Catch {
    type AutomakeReporter (line 19) | struct AutomakeReporter : StreamingReporterBase<AutomakeReporter> {
      method AutomakeReporter (line 20) | AutomakeReporter( ReporterConfig const& _config )
      method getDescription (line 26) | static std::string getDescription() {
      method assertionStarting (line 30) | void assertionStarting( AssertionInfo const& ) override {}
      method assertionEnded (line 32) | bool assertionEnded( AssertionStats const& /*_assertionStats*/ ) ove...
      method testCaseEnded (line 34) | void testCaseEnded( TestCaseStats const& _testCaseStats ) override {
      method skipTest (line 48) | void skipTest( TestCaseInfo const& testInfo ) override {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_bases.cpp
  type Catch (line 19) | namespace Catch {
    function prepareExpandedExpression (line 20) | void prepareExpandedExpression(AssertionResult& result) {
    function getFormattedDuration (line 26) | std::string getFormattedDuration( double duration ) {
    function serializeFilters (line 44) | std::string serializeFilters( std::vector<std::string> const& containe...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_bases.hpp
  type Catch (line 22) | namespace Catch {
    type StreamingReporterBase (line 31) | struct StreamingReporterBase : IStreamingReporter {
      method StreamingReporterBase (line 33) | StreamingReporterBase( ReporterConfig const& _config )
      method ReporterPreferences (line 42) | ReporterPreferences getPreferences() const override {
      method getSupportedVerbosities (line 46) | static std::set<Verbosity> getSupportedVerbosities() {
      method noMatchingTestCases (line 52) | void noMatchingTestCases(std::string const&) override {}
      method reportInvalidArguments (line 54) | void reportInvalidArguments(std::string const&) override {}
      method testRunStarting (line 56) | void testRunStarting(TestRunInfo const& _testRunInfo) override {
      method testGroupStarting (line 60) | void testGroupStarting(GroupInfo const& _groupInfo) override {
      method testCaseStarting (line 64) | void testCaseStarting(TestCaseInfo const& _testInfo) override  {
      method sectionStarting (line 67) | void sectionStarting(SectionInfo const& _sectionInfo) override {
      method sectionEnded (line 71) | void sectionEnded(SectionStats const& /* _sectionStats */) override {
      method testCaseEnded (line 74) | void testCaseEnded(TestCaseStats const& /* _testCaseStats */) overri...
      method testGroupEnded (line 77) | void testGroupEnded(TestGroupStats const& /* _testGroupStats */) ove...
      method testRunEnded (line 80) | void testRunEnded(TestRunStats const& /* _testRunStats */) override {
      method skipTest (line 86) | void skipTest(TestCaseInfo const&) override {
    type CumulativeReporterBase (line 103) | struct CumulativeReporterBase : IStreamingReporter {
      type Node (line 105) | struct Node {
        method Node (line 106) | explicit Node( T const& _value ) : value( _value ) {}
      type SectionNode (line 113) | struct SectionNode {
        method SectionNode (line 114) | explicit SectionNode(SectionStats const& _stats) : stats(_stats) {}
      type BySectionInfo (line 133) | struct BySectionInfo {
        method BySectionInfo (line 134) | BySectionInfo( SectionInfo const& other ) : m_other( other ) {}
        method BySectionInfo (line 135) | BySectionInfo( BySectionInfo const& other ) : m_other( other.m_oth...
      method CumulativeReporterBase (line 151) | CumulativeReporterBase( ReporterConfig const& _config )
      method ReporterPreferences (line 161) | ReporterPreferences getPreferences() const override {
      method getSupportedVerbosities (line 165) | static std::set<Verbosity> getSupportedVerbosities() {
      method testRunStarting (line 169) | void testRunStarting( TestRunInfo const& ) override {}
      method testGroupStarting (line 170) | void testGroupStarting( GroupInfo const& ) override {}
      method testCaseStarting (line 172) | void testCaseStarting( TestCaseInfo const& ) override {}
      method sectionStarting (line 174) | void sectionStarting( SectionInfo const& sectionInfo ) override {
      method assertionStarting (line 199) | void assertionStarting(AssertionInfo const&) override {}
      method assertionEnded (line 201) | bool assertionEnded(AssertionStats const& assertionStats) override {
      method sectionEnded (line 213) | void sectionEnded(SectionStats const& sectionStats) override {
      method testCaseEnded (line 219) | void testCaseEnded(TestCaseStats const& testCaseStats) override {
      method testGroupEnded (line 230) | void testGroupEnded(TestGroupStats const& testGroupStats) override {
      method testRunEnded (line 235) | void testRunEnded(TestRunStats const& testRunStats) override {
      method skipTest (line 243) | void skipTest(TestCaseInfo const&) override {}
    type TestEventListenerBase (line 271) | struct TestEventListenerBase : StreamingReporterBase<TestEventListener...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_compact.cpp
  function dimColour (line 24) | Catch::Colour::Code dimColour() { return Catch::Colour::FileName; }
  function bothOrAll (line 26) | std::string bothOrAll( std::size_t count ) {
  type Catch (line 34) | namespace Catch {
    function printTotals (line 42) | void printTotals(std::ostream& out, const Totals& totals) {
    class AssertionPrinter (line 75) | class AssertionPrinter {
      method AssertionPrinter (line 77) | AssertionPrinter& operator= (AssertionPrinter const&) = delete;
      method AssertionPrinter (line 78) | AssertionPrinter(AssertionPrinter const&) = delete;
      method AssertionPrinter (line 79) | AssertionPrinter(std::ostream& _stream, AssertionStats const& _stats...
      method print (line 86) | void print() {
      method printSourceInfo (line 155) | void printSourceInfo() const {
      method printResultType (line 160) | void printResultType(Colour::Code colour, std::string const& passOrF...
      method printIssue (line 170) | void printIssue(std::string const& issue) const {
      method printExpressionWas (line 174) | void printExpressionWas() {
      method printOriginalExpression (line 185) | void printOriginalExpression() const {
      method printReconstructedExpression (line 191) | void printReconstructedExpression() const {
      method printMessage (line 201) | void printMessage() {
      method printRemainingMessages (line 208) | void printRemainingMessages(Colour::Code colour = dimColour()) {
    function ReporterPreferences (line 248) | ReporterPreferences CompactReporter::getPreferences() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_compact.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_console.cpp
  type Catch (line 34) | namespace Catch {
    class ConsoleAssertionPrinter (line 39) | class ConsoleAssertionPrinter {
      method ConsoleAssertionPrinter (line 41) | ConsoleAssertionPrinter& operator= (ConsoleAssertionPrinter const&) ...
      method ConsoleAssertionPrinter (line 42) | ConsoleAssertionPrinter(ConsoleAssertionPrinter const&) = delete;
      method ConsoleAssertionPrinter (line 43) | ConsoleAssertionPrinter(std::ostream& _stream, AssertionStats const&...
      method print (line 117) | void print() const {
      method printResultType (line 130) | void printResultType() const {
      method printOriginalExpression (line 136) | void printOriginalExpression() const {
      method printReconstructedExpression (line 144) | void printReconstructedExpression() const {
      method printMessage (line 151) | void printMessage() const {
      method printSourceInfo (line 160) | void printSourceInfo() const {
    function makeRatio (line 176) | std::size_t makeRatio(std::size_t number, std::size_t total) {
    type ColumnInfo (line 190) | struct ColumnInfo {
      type Justification (line 191) | enum Justification { Left, Right }
    type ColumnBreak (line 196) | struct ColumnBreak {}
    type RowBreak (line 197) | struct RowBreak {}
    class Duration (line 199) | class Duration {
      type Unit (line 200) | enum class Unit {
      method Duration (line 217) | explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
      method Duration (line 221) | explicit Duration(uint64_t inNanoseconds, Unit units = Unit::Auto)
      method value (line 239) | auto value() const -> double {
      method unitsAsString (line 253) | auto unitsAsString() const -> std::string {
    class TablePrinter (line 276) | class TablePrinter {
      method TablePrinter (line 284) | TablePrinter( std::ostream& os, std::vector<ColumnInfo> columnInfos )
      method columnInfos (line 288) | auto columnInfos() const -> std::vector<ColumnInfo> const& {
      method open (line 292) | void open() {
      method close (line 308) | void close() {
      method TablePrinter (line 317) | TablePrinter& operator << (TablePrinter& tp, T const& value) {
      method TablePrinter (line 322) | TablePrinter& operator << (TablePrinter& tp, ColumnBreak) {
      method TablePrinter (line 344) | TablePrinter& operator << (TablePrinter& tp, RowBreak) {
    type SummaryColumn (line 589) | struct SummaryColumn {
      method SummaryColumn (line 591) | SummaryColumn( std::string _label, Colour::Code _colour )
      method SummaryColumn (line 594) | SummaryColumn addRow( std::size_t count ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_console.h
  function namespace (line 21) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_junit.cpp
  type Catch (line 22) | namespace Catch {
    function getCurrentTimestamp (line 25) | std::string getCurrentTimestamp() {
    function fileNameTag (line 51) | std::string fileNameTag(const std::vector<std::string> &tags) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_junit.h
  function namespace (line 15) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_listening.cpp
  type Catch (line 12) | namespace Catch {
    function ReporterPreferences (line 29) | ReporterPreferences ListeningReporter::getPreferences() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_listening.h
  function namespace (line 12) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_sonarqube.hpp
  type Catch (line 20) | namespace Catch {
    type SonarQubeReporter (line 22) | struct SonarQubeReporter : CumulativeReporterBase<SonarQubeReporter> {
      method SonarQubeReporter (line 24) | SonarQubeReporter(ReporterConfig const& config)
      method getDescription (line 33) | static std::string getDescription() {
      method getSupportedVerbosities (line 37) | static std::set<Verbosity> getSupportedVerbosities() {
      method noMatchingTestCases (line 41) | void noMatchingTestCases(std::string const& /*spec*/) override {}
      method testRunStarting (line 43) | void testRunStarting(TestRunInfo const& testRunInfo) override {
      method testGroupEnded (line 49) | void testGroupEnded(TestGroupStats const& testGroupStats) override {
      method testRunEndedCumulative (line 54) | void testRunEndedCumulative() override {
      method writeGroup (line 58) | void writeGroup(TestGroupNode const& groupNode) {
      method writeTestFile (line 67) | void writeTestFile(const char* filename, TestGroupNode::ChildNodes c...
      method writeTestCase (line 75) | void writeTestCase(TestCaseNode const& testCaseNode) {
      method writeSection (line 83) | void writeSection(std::string const& rootName, SectionNode const& se...
      method writeAssertions (line 100) | void writeAssertions(SectionNode const& sectionNode, bool okToFail) {
      method writeAssertion (line 105) | void writeAssertion(AssertionStats const& stats, bool okToFail) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_tap.hpp
  type Catch (line 20) | namespace Catch {
    type TAPReporter (line 22) | struct TAPReporter : StreamingReporterBase<TAPReporter> {
      method getDescription (line 28) | static std::string getDescription() {
      method ReporterPreferences (line 32) | ReporterPreferences getPreferences() const override {
      method noMatchingTestCases (line 36) | void noMatchingTestCases( std::string const& spec ) override {
      method assertionStarting (line 40) | void assertionStarting( AssertionInfo const& ) override {}
      method assertionEnded (line 42) | bool assertionEnded( AssertionStats const& _assertionStats ) override {
      method testRunEnded (line 53) | void testRunEnded( TestRunStats const& _testRunStats ) override {
      class AssertionPrinter (line 61) | class AssertionPrinter {
        method AssertionPrinter (line 63) | AssertionPrinter& operator= ( AssertionPrinter const& ) = delete;
        method AssertionPrinter (line 64) | AssertionPrinter( AssertionPrinter const& ) = delete;
        method AssertionPrinter (line 65) | AssertionPrinter( std::ostream& _stream, AssertionStats const& _st...
        method print (line 74) | void print() {
        method dimColour (line 145) | static Colour::Code dimColour() { return Colour::FileName; }
        method printSourceInfo (line 150) | void printSourceInfo() const {
        method printResultType (line 155) | void printResultType( std::string const& passOrFail ) const {
        method printIssue (line 161) | void printIssue( std::string const& issue ) const {
        method printExpressionWas (line 165) | void printExpressionWas() {
        method printOriginalExpression (line 176) | void printOriginalExpression() const {
        method printReconstructedExpression (line 182) | void printReconstructedExpression() const {
        method printMessage (line 194) | void printMessage() {
        method printRemainingMessages (line 201) | void printRemainingMessages( Colour::Code colour = dimColour() ) {
      method printTotals (line 236) | void printTotals( const Totals& totals ) const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_teamcity.hpp
  type Catch (line 24) | namespace Catch {
    type TeamCityReporter (line 26) | struct TeamCityReporter : StreamingReporterBase<TeamCityReporter> {
      method TeamCityReporter (line 27) | TeamCityReporter( ReporterConfig const& _config )
      method escape (line 33) | static std::string escape( std::string const& str ) {
      method getDescription (line 45) | static std::string getDescription() {
      method skipTest (line 49) | void skipTest( TestCaseInfo const& /* testInfo */ ) override {
      method noMatchingTestCases (line 52) | void noMatchingTestCases( std::string const& /* spec */ ) override {}
      method testGroupStarting (line 54) | void testGroupStarting( GroupInfo const& groupInfo ) override {
      method testGroupEnded (line 59) | void testGroupEnded( TestGroupStats const& testGroupStats ) override {
      method assertionStarting (line 66) | void assertionStarting( AssertionInfo const& ) override {}
      method assertionEnded (line 68) | bool assertionEnded( AssertionStats const& assertionStats ) override {
      method sectionStarting (line 140) | void sectionStarting( SectionInfo const& sectionInfo ) override {
      method testCaseStarting (line 145) | void testCaseStarting( TestCaseInfo const& testInfo ) override {
      method testCaseEnded (line 153) | void testCaseEnded( TestCaseStats const& testCaseStats ) override {
      method printSectionHeader (line 170) | void printSectionHeader( std::ostream& os ) {
      method printHeaderString (line 192) | static void printHeaderString( std::ostream& os, std::string const& ...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_xml.cpp
  type Catch (line 21) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/include/reporters/catch_reporter_xml.h
  function namespace (line 16) | namespace Catch {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/misc/coverage-helper.cpp
  function escape_arg (line 12) | std::string escape_arg(const std::string& arg) {
  function create_empty_file (line 46) | void create_empty_file(std::string const& path) {
  function starts_with (line 54) | bool starts_with(std::string const& str, std::string const& pref) {
  function parse_log_file_arg (line 58) | int parse_log_file_arg(std::string const& arg) {
  function catch_path (line 71) | std::string catch_path(std::string path) {
  function windowsify_path (line 84) | std::string windowsify_path(std::string path) {
  function exec_cmd (line 93) | int exec_cmd(std::string const& cmd, int log_num, std::string const& pat...
  function main (line 125) | int main(int argc, char** argv) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/ExtraTests/X01-PrefixedMacros.cpp
  function this_throws (line 13) | [[noreturn]]
  function this_doesnt_throw (line 17) | void this_doesnt_throw() {}
  function CATCH_ANON_TEST_CASE (line 65) | CATCH_ANON_TEST_CASE() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/ExtraTests/X02-DisabledMacros.cpp
  type foo (line 15) | struct foo {
    method foo (line 16) | foo(){
    method print (line 19) | void print() const {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/ExtraTests/X04-DisabledExceptions-CustomHandler.cpp
  type Catch (line 6) | namespace Catch {
    function throw_exception (line 7) | [[noreturn]]

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/ExtraTests/X10-FallbackStringifier.cpp
  function fallbackStringifier (line 8) | std::string fallbackStringifier(T const&) {
  type foo (line 15) | struct foo {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/ExtraTests/X11-DisableStringification.cpp
  type Hidden (line 10) | struct Hidden {}

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/ExtraTests/X20-BenchmarkingMacros.cpp
  function factorial (line 8) | std::uint64_t factorial(std::uint64_t number) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/IntrospectiveTests/CmdLine.tests.cpp
  function fakeTestCase (line 18) | inline Catch::TestCase fakeTestCase(const char* name, const char* desc =...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/IntrospectiveTests/GeneratorsImpl.tests.cpp
  type non_copyable (line 277) | struct non_copyable {
    method non_copyable (line 278) | non_copyable() = default;
    method non_copyable (line 279) | non_copyable(non_copyable const&) = delete;
    method non_copyable (line 280) | non_copyable& operator=(non_copyable const&) = delete;
  class TestGen (line 285) | class TestGen : public Catch::Generators::IGenerator<int> {
    method TestGen (line 289) | TestGen(non_copyable const& nc):
    method next (line 293) | bool next() override {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/IntrospectiveTests/InternalBenchmark.tests.cpp
  type manual_clock (line 12) | struct manual_clock {
    method time_point (line 20) | static time_point now() {
    method advance (line 24) | static void advance(int ticks = 1) {
    method rep (line 29) | static rep& tick() {
  type counting_clock (line 35) | struct counting_clock {
    method time_point (line 43) | static time_point now() {
    method set_rate (line 48) | static void set_rate(rep new_rate) { rate() = new_rate; }
    method rep (line 51) | static rep& rate() {
  type TestChronometerModel (line 57) | struct TestChronometerModel : Catch::Benchmark::Detail::ChronometerConce...
    method start (line 61) | void start() override { ++started; }
    method finish (line 62) | void finish() override { ++finished; }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/IntrospectiveTests/PartTracker.tests.cpp
  function makeNAL (line 16) | Catch::TestCaseTracking::NameAndLocation makeNAL( std::string const& nam...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/IntrospectiveTests/ToString.tests.cpp
  type EnumClass3 (line 5) | enum class EnumClass3 { Value1, Value2, Value3, Value4 }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp
  function encode (line 6) | inline std::string encode( std::string const& str, Catch::XmlEncode::For...

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/TestMain.cpp
  type TestListener (line 30) | struct TestListener : Catch::TestEventListenerBase {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Approx.tests.cpp
  type ApproxTests (line 13) | namespace ApproxTests {
    function divide (line 18) | inline double divide( double a, double b ) {
    class StrongDoubleTypedef (line 22) | class StrongDoubleTypedef {
      method StrongDoubleTypedef (line 26) | explicit StrongDoubleTypedef(double d) : d_(d) {}

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/BDD.tests.cpp
  type BDDTests (line 11) | namespace BDDTests {
    function itDoesThis (line 16) | inline bool itDoesThis() { return true; }
    function itDoesThat (line 18) | inline bool itDoesThat() { return true; }
    type Fixture (line 23) | struct Fixture {
      method Fixture (line 24) | Fixture()
      method counter (line 28) | int counter() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Benchmark.tests.cpp
  function Fibonacci (line 7) | std::uint64_t Fibonacci(std::uint64_t number) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Class.tests.cpp
  type ClassTests (line 12) | namespace ClassTests {
    class TestClass (line 17) | class TestClass
      method TestClass (line 22) | TestClass()
      method succeedingCase (line 26) | void succeedingCase()
      method failingCase (line 30) | void failingCase()
    type Fixture (line 36) | struct Fixture
      method Fixture (line 38) | Fixture() : m_a( 1 ) {}
    type Template_Fixture (line 44) | struct Template_Fixture {
      method Template_Fixture (line 45) | Template_Fixture(): m_a(1) {}
    type Template_Fixture_2 (line 51) | struct Template_Fixture_2 {
      method Template_Fixture_2 (line 52) | Template_Fixture_2() {}
    type Template_Foo (line 58) | struct Template_Foo {
      method size (line 59) | size_t size() { return 0; }
    type Template_Foo_2 (line 63) | struct Template_Foo_2 {
      method size (line 64) | size_t size() { return V; }
    type Nttp_Fixture (line 68) | struct Nttp_Fixture{
    type Inner (line 108) | namespace Inner

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Compilation.tests.cpp
  type foo (line 14) | namespace foo {
    type helper_1403 (line 15) | struct helper_1403 {
  type bar (line 20) | namespace bar {
    type TypeList (line 22) | struct TypeList {}
  type CompilationTests (line 37) | namespace CompilationTests {
    type logic_t (line 44) | struct logic_t {
      method logic_t (line 45) | logic_t operator< (logic_t) const { return {}; }
      method logic_t (line 46) | logic_t operator<=(logic_t) const { return {}; }
      method logic_t (line 47) | logic_t operator> (logic_t) const { return {}; }
      method logic_t (line 48) | logic_t operator>=(logic_t) const { return {}; }
      method logic_t (line 49) | logic_t operator==(logic_t) const { return {}; }
      method logic_t (line 50) | logic_t operator!=(logic_t) const { return {}; }
    type foo (line 56) | struct foo {
    type Y (line 65) | struct Y {
    function throws_int (line 69) | void throws_int(bool b) {
    function templated_tests (line 76) | bool templated_tests(T t) {
    type A (line 89) | struct A {
    type B (line 94) | struct B : private A {
    type Fixture_1245 (line 117) | struct Fixture_1245 {}
    type TestClass (line 200) | struct TestClass {
    type utility (line 204) | namespace utility {
      function synchronizing_callback (line 205) | inline static void synchronizing_callback( void * ) { }
    type Y (line 214) | struct Y {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Condition.tests.cpp
  type ConditionTests (line 23) | namespace ConditionTests {
    type TestData (line 28) | struct TestData {
    type TestDef (line 35) | struct TestDef {
      method TestDef (line 36) | TestDef& operator + ( const std::string& ) {
      method TestDef (line 39) | TestDef& operator[]( const std::string& ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Decomposition.tests.cpp
  type truthy (line 14) | struct truthy {
    method truthy (line 15) | truthy(bool b):m_value(b){}

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/EnumToString.tests.cpp
  type Enum1 (line 6) | enum Enum1 { Enum1Value0, Enum1Value1 }
  type Enum2 (line 9) | enum Enum2 { Enum2Value0, Enum2Value1 }
  type EnumClass1 (line 32) | enum class EnumClass1 { EnumClass1Value0, EnumClass1Value1 }
  type EnumClass2 (line 35) | enum class EnumClass2 { EnumClass2Value0, EnumClass2Value1 }
  type EnumClass3 (line 68) | enum class EnumClass3 { Value1, Value2, Value3, Value4 }
  type Bikeshed (line 84) | namespace Bikeshed {
    type Colours (line 85) | enum class Colours { Red, Green, Blue }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Exception.tests.cpp
  type ExceptionTests (line 24) | namespace ExceptionTests {
    function thisThrows (line 29) | int thisThrows() {
    function thisDoesntThrow (line 34) | int thisDoesntThrow() {
    class CustomException (line 38) | class CustomException {
      method CustomException (line 40) | explicit CustomException( const std::string& msg )
      method getMessage (line 44) | std::string getMessage() const {
    class CustomStdException (line 52) | class CustomStdException : public std::exception {
      method CustomStdException (line 54) | explicit CustomStdException( const std::string& msg )
      method getMessage (line 59) | std::string getMessage() const {
    function throwCustom (line 67) | [[noreturn]] void throwCustom() {
    function CATCH_TRANSLATE_EXCEPTION (line 126) | CATCH_TRANSLATE_EXCEPTION( CustomException& ex ) {
    function CATCH_TRANSLATE_EXCEPTION (line 130) | CATCH_TRANSLATE_EXCEPTION( CustomStdException& ex ) {
    function CATCH_TRANSLATE_EXCEPTION (line 134) | CATCH_TRANSLATE_EXCEPTION( double& ex ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Generators.tests.cpp
  type Data (line 74) | struct Data { std::string str; size_t len; }
  function eatCucumbers (line 99) | static auto eatCucumbers( int start, int eat ) -> int { return start-eat; }
  function make_data (line 219) | std::vector<int> make_data() {
  function make_data_counted (line 222) | std::vector<int> make_data_counted() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Matchers.tests.cpp
  type MatchersTests (line 20) | namespace MatchersTests {
    function alwaysTrue (line 35) | inline bool alwaysTrue(int) { return true; }
    function alwaysFalse (line 36) | inline bool alwaysFalse(int) { return false; }
    type SpecialException (line 45) | struct SpecialException : std::exception {
      method SpecialException (line 46) | SpecialException(int i_) : i(i_) {}
    type DerivedException (line 55) | struct DerivedException : std::exception {
    function doesNotThrow (line 61) | void doesNotThrow() {}
    function throwsSpecialException (line 63) | [[noreturn]]
    function throwsAsInt (line 68) | [[noreturn]]
    function throwsDerivedException (line 73) | [[noreturn]]
    class ExceptionMatcher (line 78) | class ExceptionMatcher : public Catch::MatcherBase<SpecialException> {
      method ExceptionMatcher (line 81) | ExceptionMatcher(int i) : m_expected(i) {}
      method match (line 83) | bool match(SpecialException const &se) const override {
      method describe (line 87) | std::string describe() const override {
    function nextafter (line 99) | float nextafter(float from, float to)
    function nextafter (line 104) | double nextafter(double from, double to)

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Message.tests.cpp
  function unscoped_info (line 143) | static void unscoped_info( T msg ) {
  type helper_1436 (line 229) | struct helper_1436 {
    method helper_1436 (line 230) | helper_1436(T1 t1_, T2 t2_):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Misc.tests.cpp
  type MiscTests (line 23) | namespace MiscTests {
    function testCheckedIf (line 31) | inline bool testCheckedIf( bool flag )  {
    function testCheckedElse (line 37) | inline bool testCheckedElse( bool flag ) {
    function Factorial (line 44) | inline unsigned int Factorial( unsigned int number )  {
    function f (line 48) | static int f() {
    function manuallyRegisteredTestFunction (line 52) | inline void manuallyRegisteredTestFunction() {
    type AutoTestReg (line 56) | struct AutoTestReg {
      method AutoTestReg (line 57) | AutoTestReg() {
    type Bar (line 73) | struct Bar {
      method size (line 74) | size_t size() { return S; }
    type NonDefaultConstructibleType (line 376) | struct NonDefaultConstructibleType {
      method NonDefaultConstructibleType (line 377) | NonDefaultConstructibleType() = delete;
    type NonCopyableAndNonMovableType (line 386) | struct NonCopyableAndNonMovableType {
      method NonCopyableAndNonMovableType (line 387) | NonCopyableAndNonMovableType() = default;
      method NonCopyableAndNonMovableType (line 389) | NonCopyableAndNonMovableType(NonCopyableAndNonMovableType const &) =...
      method NonCopyableAndNonMovableType (line 390) | NonCopyableAndNonMovableType(NonCopyableAndNonMovableType &&) = delete;

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/ToStringGeneral.tests.cpp
  type WhatException (line 167) | struct WhatException : std::exception {
  type OperatorException (line 174) | struct OperatorException : std::exception {
  type StringMakerException (line 183) | struct StringMakerException : std::exception {
  type Catch (line 189) | namespace Catch {
    type StringMaker<StringMakerException> (line 191) | struct StringMaker<StringMakerException> {
      method convert (line 192) | static std::string convert(StringMakerException const&) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/ToStringVariant.tests.cpp
  type MyType1 (line 10) | struct MyType1 {
    method MyType1 (line 11) | MyType1() = default;
    method MyType1 (line 12) | [[noreturn]] MyType1(MyType1 const&) { throw 1; }
    method MyType1 (line 13) | MyType1& operator=(MyType1 const&) { throw 3; }
  type MyType2 (line 15) | struct MyType2 {
    method MyType2 (line 16) | MyType2() = default;
    method MyType2 (line 17) | [[noreturn]] MyType2(MyType2 const&) { throw 2; }
    method MyType2 (line 18) | MyType2& operator=(MyType2 const&) { throw 4; }

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/ToStringVector.tests.cpp
  type minimal_allocator (line 29) | struct minimal_allocator {
    method minimal_allocator (line 33) | minimal_allocator() = default;
    method minimal_allocator (line 35) | minimal_allocator(const minimal_allocator<U>&) {}
    method T (line 38) | T *allocate( size_type n ) {
    method deallocate (line 41) | void deallocate( T *p, size_type /*n*/ ) {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/ToStringWhich.tests.cpp
  function fallbackStringifier (line 11) | std::string fallbackStringifier(T const&) {
  type has_operator (line 29) | struct has_operator { }
  type has_maker (line 30) | struct has_maker {}
  type has_maker_and_operator (line 31) | struct has_maker_and_operator {}
  type has_neither (line 32) | struct has_neither {}
  type has_template_operator (line 33) | struct has_template_operator {}
  function StreamT (line 46) | StreamT& operator<<(StreamT& os, const has_template_operator&) {
  type Catch (line 53) | namespace Catch {
    type StringMaker<has_maker> (line 55) | struct StringMaker<has_maker> {
      method convert (line 56) | static std::string convert( const has_maker& ) {
    type StringMaker<has_maker_and_operator> (line 61) | struct StringMaker<has_maker_and_operator> {
      method convert (line 62) | static std::string convert( const has_maker_and_operator& ) {
    type StringMaker<stringmaker_range> (line 160) | struct StringMaker<stringmaker_range> {
      method convert (line 161) | static std::string convert(stringmaker_range const&) {
    type is_range<disabled_range> (line 183) | struct is_range<disabled_range> {
  type int_iterator (line 118) | struct int_iterator {
    method int_iterator (line 125) | int_iterator() = default;
    method int_iterator (line 126) | int_iterator(int i) :val(i) {}
    method value_type (line 128) | value_type operator*() const { return val; }
    method int_iterator (line 131) | int_iterator operator++() { ++val; return *this; }
    method int_iterator (line 132) | int_iterator operator++(int) {
  type streamable_range (line 141) | struct streamable_range {
    method int_iterator (line 142) | int_iterator begin() const { return int_iterator{ 1 }; }
    method int_iterator (line 143) | int_iterator end() const { return {}; }
  type stringmaker_range (line 151) | struct stringmaker_range {
    method int_iterator (line 152) | int_iterator begin() const { return int_iterator{ 1 }; }
    method int_iterator (line 153) | int_iterator end() const { return {}; }
  type Catch (line 158) | namespace Catch {
    type StringMaker<has_maker> (line 55) | struct StringMaker<has_maker> {
      method convert (line 56) | static std::string convert( const has_maker& ) {
    type StringMaker<has_maker_and_operator> (line 61) | struct StringMaker<has_maker_and_operator> {
      method convert (line 62) | static std::string convert( const has_maker_and_operator& ) {
    type StringMaker<stringmaker_range> (line 160) | struct StringMaker<stringmaker_range> {
      method convert (line 161) | static std::string convert(stringmaker_range const&) {
    type is_range<disabled_range> (line 183) | struct is_range<disabled_range> {
  type just_range (line 169) | struct just_range {
    method int_iterator (line 170) | int_iterator begin() const { return int_iterator{ 1 }; }
    method int_iterator (line 171) | int_iterator end() const { return {}; }
  type disabled_range (line 174) | struct disabled_range {
    method int_iterator (line 175) | int_iterator begin() const { return int_iterator{ 1 }; }
    method int_iterator (line 176) | int_iterator end() const { return {}; }
  type Catch (line 181) | namespace Catch {
    type StringMaker<has_maker> (line 55) | struct StringMaker<has_maker> {
      method convert (line 56) | static std::string convert( const has_maker& ) {
    type StringMaker<has_maker_and_operator> (line 61) | struct StringMaker<has_maker_and_operator> {
      method convert (line 62) | static std::string convert( const has_maker_and_operator& ) {
    type StringMaker<stringmaker_range> (line 160) | struct StringMaker<stringmaker_range> {
      method convert (line 161) | static std::string convert(stringmaker_range const&) {
    type is_range<disabled_range> (line 183) | struct is_range<disabled_range> {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/Tricky.tests.cpp
  type Opaque (line 52) | struct Opaque
  type A (line 102) | namespace A {
    type X (line 103) | struct X
      method X (line 105) | X() : a(4), b(2), c(7) {}
      method X (line 106) | X(int v) : a(v), b(2), c(7) {}
  type B (line 113) | namespace B {
    type Y (line 114) | struct Y
      method Y (line 116) | Y() : a(4), b(2), c(7) {}
      method Y (line 117) | Y(int v) : a(v), b(2), c(7) {}
  type ObjectWithConversions (line 149) | namespace ObjectWithConversions
    type Object (line 151) | struct Object
  type EnumBitFieldTests (line 168) | namespace EnumBitFieldTests
    type Bits (line 170) | enum Bits : uint32_t {
  type Obj (line 187) | struct Obj
    method Obj (line 189) | Obj():prop(&p){}
  type is_true (line 209) | struct is_true
  type Boolable (line 256) | struct Boolable
    method Boolable (line 258) | explicit Boolable( bool value ) : m_value( value ) {}
  type Awkward (line 299) | struct Awkward
  function foo (line 311) | inline void foo() {}
  type S (line 325) | struct S
    method f (line 327) | void f() {}
  class ClassName (line 339) | class ClassName {}
  type constructor_throws (line 367) | struct constructor_throws {
    method constructor_throws (line 368) | [[noreturn]] constructor_throws() {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/SelfTest/UsageTests/VariadicMacros.tests.cpp
  function TEST_CASE (line 12) | TEST_CASE()

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/XCode/OCTest/OCTest/CatchOCTestCase.h
  function interface (line 18) | interface TestFixture : NSObject <OcFixture>

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/projects/XCode/OCTest/OCTest/TestObj.h
  function interface (line 16) | interface TestObj : NSObject {

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/approvalTests.py
  function diffFiles (line 82) | def diffFiles(fileA, fileB):
  function normalizeFilepath (line 95) | def normalizeFilepath(line):
  function filterLine (line 111) | def filterLine(line, isCompact):
  function approve (line 152) | def approve(baseName, args):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/approve.py
  function approveFile (line 19) | def approveFile( approvedFile, unapprovedFile ):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/benchmarkCompile.py
  function median (line 8) | def median(lst):
  function mean (line 16) | def mean(lst):
  function create_temp_dir (line 43) | def create_temp_dir():
  function copy_catch (line 48) | def copy_catch(path_to_catch):
  function create_catch_main (line 51) | def create_catch_main():
  function compile_main (line 55) | def compile_main():
  function compile_files (line 61) | def compile_files():
  function link_files (line 68) | def link_files():
  function benchmark (line 75) | def benchmark(func):
  function char_range (line 79) | def char_range(start, end):
  function generate_sections (line 83) | def generate_sections(fd):
  function generate_file (line 90) | def generate_file(file_no):
  function generate_files (line 101) | def generate_files():

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/benchmarkRunner.py
  function get_commit_hash (line 9) | def get_commit_hash():
  function parse_file (line 22) | def parse_file(file):
  function run_benchmarks (line 36) | def run_benchmarks(binary):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/embed.py
  class LineMapper (line 20) | class LineMapper:
    method __init__ (line 21) | def __init__( self, idMap, outerNamespace ):
    method mapLine (line 27) | def mapLine( self, lineNo, line ):
    method mapFile (line 56) | def mapFile(self, filenameIn, filenameOut ):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/extractFeaturesFromReleaseNotes.py
  function create_introduced_in_text (line 29) | def create_introduced_in_text(version, bug_number = None):
  function link_to_changes_in_release (line 38) | def link_to_changes_in_release(release, releases):
  function write_recent_release_notes_with_introduced_text (line 56) | def write_recent_release_notes_with_introduced_text():

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/fixWhitespace.py
  function isSourceFile (line 7) | def isSourceFile( path ):
  function fixAllFilesInDir (line 10) | def fixAllFilesInDir( dir ):
  function fixFile (line 22) | def fixFile( path ):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/generateSingleHeader.py
  function generate (line 14) | def generate(v):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/releaseCommon.py
  class Version (line 19) | class Version:
    method __init__ (line 20) | def __init__(self):
    method nonDevelopRelease (line 33) | def nonDevelopRelease(self):
    method developBuild (line 37) | def developBuild(self):
    method incrementBuildNumber (line 42) | def incrementBuildNumber(self):
    method incrementPatchNumber (line 46) | def incrementPatchNumber(self):
    method incrementMinorVersion (line 50) | def incrementMinorVersion(self):
    method incrementMajorVersion (line 55) | def incrementMajorVersion(self):
    method getVersionString (line 61) | def getVersionString(self):
    method updateVersionFile (line 67) | def updateVersionFile(self):
  function updateReadmeFile (line 81) | def updateReadmeFile(version):
  function updateCmakeFile (line 102) | def updateCmakeFile(version):
  function updateVersionDefine (line 112) | def updateVersionDefine(version):
  function updateVersionPlaceholder (line 127) | def updateVersionPlaceholder(filename, version):
  function updateDocumentationVersionPlaceholders (line 137) | def updateDocumentationVersionPlaceholders(version):
  function performUpdates (line 146) | def performUpdates(version):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/releaseNotes.py
  function getIssueTitle (line 27) | def getIssueTitle( issueNumber ):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/scriptCommon.py
  function getBuildExecutable (line 8) | def getBuildExecutable():
  function runAndCapture (line 17) | def runAndCapture( args ):

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/updateDocumentToC.py
  function readLines (line 42) | def readLines(in_file):
  function removeLines (line 49) | def removeLines(lines, remove=('[[back to top]', '<a class="mk-toclify"')):
  function removeToC (line 62) | def removeToC(lines):
  function dashifyHeadline (line 77) | def dashifyHeadline(line):
  function tagAndCollect (line 111) | def tagAndCollect(lines, id_tag=True, back_links=False, exclude_h=None):
  function positioningHeadlines (line 179) | def positioningHeadlines(headlines):
  function createToc (line 193) | def createToc(headlines, hyperlink=True, top_link=False, no_toc_header=F...
  function buildMarkdown (line 227) | def buildMarkdown(toc_headlines, body, spacer=0, placeholder=None):
  function outputMarkdown (line 261) | def outputMarkdown(markdown_cont, output_file):
  function markdownToclify (line 270) | def markdownToclify(
  function isReleaseNotes (line 357) | def isReleaseNotes(f):
  function excludeHeadingsFor (line 360) | def excludeHeadingsFor(f):
  function updateSingleDocumentToC (line 363) | def updateSingleDocumentToC(input_file, min_toc_len, verbose=False):
  function updateDocumentToC (line 391) | def updateDocumentToC(paths, min_toc_len, verbose):
  function updateDocumentToCMain (line 400) | def updateDocumentToCMain():

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/scripts/updateWandbox.py
  function upload (line 9) | def upload(options):
  function uploadFiles (line 31) | def uploadFiles():

FILE: mediasoup-client/deps/libmediasoupclient/deps/catch/single_include/catch2/catch.hpp
  type Catch (line 95) | namespace Catch {
    type CaseSensitive (line 466) | struct CaseSensitive { enum Choice {
      type Choice (line 466) | enum Choice {
    class NonCopyable (line 471) | class NonCopyable {
      method NonCopyable (line 472) | NonCopyable( NonCopyable const& )              = delete;
      method NonCopyable (line 473) | NonCopyable( NonCopyable && )                  = delete;
      method NonCopyable (line 474) | NonCopyable& operator = ( NonCopyable const& ) = delete;
      method NonCopyable (line 475) | NonCopyable& operator = ( NonCopyable && )     = delete;
    type SourceLineInfo (line 482) | struct SourceLineInfo {
      method SourceLineInfo (line 484) | SourceLineInfo() = delete;
      method SourceLineInfo (line 485) | SourceLineInfo( char const* _file, std::size_t _line ) noexcept
      method SourceLineInfo (line 490) | SourceLineInfo( SourceLineInfo const& other )            = default;
      method SourceLineInfo (line 491) | SourceLineInfo& operator = ( SourceLineInfo const& )     = default;
      method SourceLineInfo (line 492) | SourceLineInfo( SourceLineInfo&& )              noexcept = default;
      method SourceLineInfo (line 493) | SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default;
      method empty (line 495) | bool empty() const noexcept { return file[0] == '\0'; }
    type StreamEndStop (line 514) | struct StreamEndStop {
    function T (line 518) | T const& operator + ( T const& value, StreamEndStop ) {
    type RegistrarForTagAliases (line 529) | struct RegistrarForTagAliases {
    class TestSpec (line 550) | class TestSpec
      class Pattern (line 5055) | class Pattern {
      class NamePattern (line 5066) | class NamePattern : public Pattern {
      class TagPattern (line 5074) | class TagPattern : public Pattern {
      class ExcludedPattern (line 5082) | class ExcludedPattern : public Pattern {
      type Filter (line 5090) | struct Filter {
      type FilterMatch (line 5098) | struct FilterMatch {
    type ITestInvoker (line 552) | struct ITestInvoker {
    class TestCase (line 557) | class TestCase
    type IConfig (line 558) | struct IConfig
    type ITestCaseRegistry (line 560) | struct ITestCaseRegistry {
    class StringRef (line 586) | class StringRef {
      method StringRef (line 598) | constexpr StringRef() noexcept = default;
      method StringRef (line 602) | constexpr StringRef( char const* rawChars, size_type size ) noexcept
      method StringRef (line 607) | StringRef( std::string const& stdString ) noexcept
      method empty (line 628) | constexpr auto empty() const noexcept -> bool {
      method size (line 631) | constexpr auto size() const noexcept -> size_type {
      method isNullTerminated (line 648) | constexpr auto isNullTerminated() const noexcept -> bool {
      method const_iterator (line 653) | constexpr const_iterator begin() const { return m_start; }
      method const_iterator (line 654) | constexpr const_iterator end() const { return m_start + m_size; }
    type always_false (line 905) | struct always_false : std::false_type {}
    type true_given (line 907) | struct true_given : std::true_type {}
    type is_callable_tester (line 908) | struct is_callable_tester {
    type is_callable (line 916) | struct is_callable
    class TestInvokerAsMethod (line 942) | class TestInvokerAsMethod : public ITestInvoker {
      method TestInvokerAsMethod (line 945) | TestInvokerAsMethod( void (C::*testAsMethod)() ) noexcept : m_testAs...
      method invoke (line 947) | void invoke() const override {
    function makeTestInvoker (line 956) | auto makeTestInvoker( void (C::*testAsMethod)() ) noexcept -> ITestInv...
    type NameAndTags (line 960) | struct NameAndTags {
    type AutoReg (line 966) | struct AutoReg : NonCopyable {
    type ResultWas (line 1333) | struct ResultWas { enum OfType {
      type OfType (line 1333) | enum OfType {
    type ResultDisposition (line 1357) | struct ResultDisposition { enum Flags {
      type Flags (line 1357) | enum Flags {
    function isFalseTest (line 1368) | inline bool isFalseTest( int flags ) { return ( flags & ResultDisposit...
    type AssertionInfo (line 1376) | struct AssertionInfo
    class StringRef (line 1411) | class StringRef
      method StringRef (line 598) | constexpr StringRef() noexcept = default;
      method StringRef (line 602) | constexpr StringRef( char const* rawChars, size_type size ) noexcept
      method StringRef (line 607) | StringRef( std::string const& stdString ) noexcept
      method empty (line 628) | constexpr auto empty() const noexcept -> bool {
      method size (line 631) | constexpr auto size() const noexcept -> size_type {
      method isNullTerminated (line 648) | constexpr auto isNullTerminated() const noexcept -> bool {
      method const_iterator (line 653) | constexpr const_iterator begin() const { return m_start; }
      method const_iterator (line 654) | constexpr const_iterator end() const { return m_start + m_size; }
    type IStream (line 1413) | struct IStream {
    class ReusableStringStream (line 1420) | class ReusableStringStream : NonCopyable {
      method get (line 1434) | auto get() -> std::ostream& { return *m_oss; }
    type Detail (line 1445) | namespace Detail {
      type EnumInfo (line 1446) | struct EnumInfo {
      function rawMemoryToString (line 1539) | std::string rawMemoryToString( const T& object ) {
      class IsStreamInsertable (line 1544) | class IsStreamInsertable {
      function convertUnstreamable (line 1560) | typename std::enable_if<
      function convertUnstreamable (line 1566) | typename std::enable_if<
      function convertUnstreamable (line 1573) | typename std::enable_if<
      function stringify (line 1624) | std::string stringify(const T& e) {
      function convertUnknownEnumToString (line 1629) | std::string convertUnknownEnumToString( E e ) {
      function rangeToString (line 1809) | std::string rangeToString(InputIterator first, InputIterator last) {
      function stringify (line 1839) | inline std::string stringify( NSString* nsstring ) {
      type TupleElementPrinter (line 1907) | struct TupleElementPrinter {
        method print (line 1908) | static void print(const Tuple& tuple, std::ostream& os) {
      type TupleElementPrinter<Tuple, N, false> (line 1919) | struct TupleElementPrinter<Tuple, N, false> {
        method print (line 1920) | static void print(const Tuple&, std::ostream&) {}
      class Approx (line 3035) | class Approx {
        method Approx (line 3053) | Approx operator()( T const& value ) {
        method Approx (line 3062) | explicit Approx( T const& value ): Approx(static_cast<double>(value))
        method Approx (line 3107) | Approx& epsilon( T const& newEpsilon ) {
        method Approx (line 3114) | Approx& margin( T const& newMargin ) {
        method Approx (line 312
Copy disabled (too large) Download .json
Condensed preview — 9141 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (62,912K chars).
[
  {
    "path": ".gitattributes",
    "chars": 95,
    "preview": "webrtc.jar filter=lfs diff=lfs merge=lfs -text\nlibwebrtc.a filter=lfs diff=lfs merge=lfs -text\n"
  },
  {
    "path": ".gitignore",
    "chars": 3679,
    "preview": "\n# Created by https://www.gitignore.io/api/macos,android,androidstudio\n# Edit at https://www.gitignore.io/?templates=mac"
  },
  {
    "path": ".idea/codeStyles/Project.xml",
    "chars": 3203,
    "preview": "<component name=\"ProjectCodeStyleConfiguration\">\n  <code_scheme name=\"Project\" version=\"173\">\n    <codeStyleSettings lan"
  },
  {
    "path": ".idea/codeStyles/codeStyleConfig.xml",
    "chars": 153,
    "preview": "<component name=\"ProjectCodeStyleConfiguration\">\n  <state>\n    <option name=\"PREFERRED_PROJECT_CODE_STYLE\" value=\"Google"
  },
  {
    "path": ".idea/google-java-format.xml",
    "chars": 175,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"GoogleJavaFormatSettings\">\n    <option n"
  },
  {
    "path": ".idea/jarRepositories.xml",
    "chars": 787,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"RemoteRepositoriesConfiguration\">\n    <r"
  },
  {
    "path": ".travis.yml",
    "chars": 3365,
    "preview": "language: android\n\njdk:\n  - oraclejdk8\n\nenv:\n  global:\n    - ADB_INSTALL_TIMEOUT=8\n    - ABI=armeabi-v7a\n    # use googl"
  },
  {
    "path": "LICENSE",
    "chars": 1067,
    "preview": "MIT License\n\nCopyright (c) 2020 Haiyang Wu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
  },
  {
    "path": "README.md",
    "chars": 4150,
    "preview": "# mediasoup-client-android\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/0e44257c6bcf47df9163e88fa7d5125a"
  },
  {
    "path": "build.gradle",
    "chars": 541,
    "preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\nbuildscript {\n    re"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "chars": 231,
    "preview": "#Fri Oct 14 15:05:29 CEST 2022\ndistributionBase=GRADLE_USER_HOME\ndistributionUrl=https\\://services.gradle.org/distributi"
  },
  {
    "path": "gradle.properties",
    "chars": 1385,
    "preview": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will ov"
  },
  {
    "path": "gradlew",
    "chars": 5296,
    "preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n##  Gradle start up"
  },
  {
    "path": "gradlew.bat",
    "chars": 2260,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
  },
  {
    "path": "mediasoup-client/.clang-format",
    "chars": 2407,
    "preview": "Language: Cpp\nAccessModifierOffset: -2\nAlignAfterOpenBracket: AlwaysBreak\nAlignConsecutiveAssignments: true\nAlignConsecu"
  },
  {
    "path": "mediasoup-client/.gitignore",
    "chars": 13,
    "preview": "/build\n/.cxx\n"
  },
  {
    "path": "mediasoup-client/CMakeLists.txt",
    "chars": 2728,
    "preview": "cmake_minimum_required(VERSION 3.5)\n\nproject(mediasoupclient_so LANGUAGES CXX)\n\n# Set version number.\nset(mediasoup_clie"
  },
  {
    "path": "mediasoup-client/build.gradle",
    "chars": 4440,
    "preview": "plugins {\n    id 'com.android.library'\n    id 'signing'\n    id 'maven-publish'\n}\n\n// Source of webrtc.\ndef WEBRTC_INC_PA"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/.clang-format",
    "chars": 2518,
    "preview": "Language: Cpp\nAccessModifierOffset: -2\nAlignAfterOpenBracket: AlwaysBreak\nAlignConsecutiveAssignments: true\nAlignConsecu"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/.clang-tidy",
    "chars": 15257,
    "preview": "---\nChecks: '*,-boost-use-to-string,-cert-*,-clang-analyzer-osx.*,-clang-analyzer-optin.osx.*,-cppcoreguidelines-pro-bou"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/.github/FUNDING.yml",
    "chars": 647,
    "preview": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [u"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/.gitignore",
    "chars": 81,
    "preview": "/build/\n/node_modules/\n\ncompile_commands.json\n\n# Vim temporal files.\n*.swp\n*.swo\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/.npmrc",
    "chars": 19,
    "preview": "package-lock=false\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/CHANGELOG.md",
    "chars": 1007,
    "preview": "# Changelog\n\n\n### NOT RELEASED\n\n\n### 3.4.0\n\n* 'maxaveragebitrate' support for Opus. Thanks @PeterCang.\n*  Enable VP9 SVC"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/CMakeLists.txt",
    "chars": 4509,
    "preview": "cmake_minimum_required(VERSION 3.5)\n\nproject(mediasoupclient LANGUAGES CXX)\n\n# Set version number.\nset(mediasoupclient_V"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/LICENSE",
    "chars": 766,
    "preview": "ISC License\n\nCopyright © 2019, José Luis Millán <jmillan@aliax.net>\n\nPermission to use, copy, modify, and/or distribute "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/README.md",
    "chars": 624,
    "preview": "# libmediasoupclient\n\nC++ client side library for building [mediasoup][mediasoup-website] based applications built on to"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/TODO.md",
    "chars": 125,
    "preview": "# libmediasoupclient TODO\n\n* To compile tests, libwebrtc must be built with arg `rtc_enable_tests=true` in `gn gen` comm"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/build.py",
    "chars": 3044,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport os\nimport re\nfrom cpt.packager import ConanMultiPackager\nfrom cpt."
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/CMakeLists.txt",
    "chars": 353,
    "preview": "cmake_minimum_required(VERSION 3.2.0)\nproject(test_package CXX)\n\ninclude(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)\nconan"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/conanfile.py",
    "chars": 551,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom conans import ConanFile, CMake\nimport os\n\n\nclass TestPackageConan(Con"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.conan/test_package/test_package.cpp",
    "chars": 380,
    "preview": "#define CATCH_CONFIG_MAIN\n\n#include <catch2/catch.hpp>\n\nint Factorial( int number ) {\n    return number <= 1 ? 1 : Facto"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.gitattributes",
    "chars": 613,
    "preview": "# This sets the default behaviour, overriding core.autocrlf\n* text=auto\n\n# All source files should have unix line-ending"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.github/FUNDING.yml",
    "chars": 18,
    "preview": "patreon: horenmar\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 711,
    "preview": "---\nname: Bug report\nabout: Create an issue that documents a bug\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 308,
    "preview": "---\nname: Feature request\nabout: Create an issue that requests a feature or other improvement\ntitle: ''\nlabels: ''\nassig"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.github/pull_request_template.md",
    "chars": 1066,
    "preview": "<!--\nPlease do not submit pull requests changing the `version.hpp`\nor the single-include `catch.hpp` file, these are cha"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.gitignore",
    "chars": 504,
    "preview": "*.build\n*.pbxuser\n*.mode1v3\n*.ncb\n*.suo\nDebug\nRelease\n*.user\n*.xcuserstate\n.DS_Store\nxcuserdata\nCatchSelfTest.xcscheme\nB"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/.travis.yml",
    "chars": 8416,
    "preview": "language: cpp\n\nbranches:\n  except:\n  - /dev-appveyor.*/\n\ncommon_sources: &all_sources\n  - ubuntu-toolchain-r-test\n  - ll"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/Catch2Config.cmake.in",
    "chars": 250,
    "preview": "@PACKAGE_INIT@\n\n\n# Avoid repeatedly including the targets\nif(NOT TARGET Catch2::Catch2)\n    # Provide path for scripts\n "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/FindGcov.cmake",
    "chars": 5086,
    "preview": "# This file is part of CMake-codecov.\n#\n# Copyright (c)\n#   2015-2017 RWTH Aachen University, Federal Republic of German"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/FindLcov.cmake",
    "chars": 12328,
    "preview": "# This file is part of CMake-codecov.\n#\n# Copyright (c)\n#   2015-2017 RWTH Aachen University, Federal Republic of German"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/Findcodecov.cmake",
    "chars": 8419,
    "preview": "# This file is part of CMake-codecov.\n#\n# Copyright (c)\n#   2015-2017 RWTH Aachen University, Federal Republic of German"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/MiscFunctions.cmake",
    "chars": 1226,
    "preview": "#checks that the given hard-coded list contains all headers + sources in the given folder\nfunction(CheckFileList LIST_VA"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/catch2.pc.in",
    "chars": 220,
    "preview": "includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@\n\nName: Catch2\nDescription: A modern, C++-native, header-only, test framework "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMake/llvm-cov-wrapper",
    "chars": 1071,
    "preview": "#!/bin/sh\n\n# This file is part of CMake-codecov.\n#\n# Copyright (c)\n#   2015-2017 RWTH Aachen University, Federal Republi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CMakeLists.txt",
    "chars": 6608,
    "preview": "cmake_minimum_required(VERSION 3.5)\n\n# detect if Catch is being bundled,\n# disable testsuite in that case\nif(NOT DEFINED"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/CODE_OF_CONDUCT.md",
    "chars": 3215,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/LICENSE.txt",
    "chars": 1338,
    "preview": "Boost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/README.md",
    "chars": 2190,
    "preview": "<a id=\"top\"></a>\n![catch logo](artwork/catch2-logo-small.png)\n\n[![Github Releases](https://img.shields.io/github/release"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/appveyor.yml",
    "chars": 2702,
    "preview": "# version string format -- This will be overwritten later anyway\nversion: \"{build}\"\n\n# We need a more up to date pip bec"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/codecov.yml",
    "chars": 440,
    "preview": "coverage:\n  precision: 2\n  round: nearest\n  range: \"60...90\"\n  status:\n    project:\n      default:\n        threshold: 2%"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/conanfile.py",
    "chars": 909,
    "preview": "#!/usr/bin/env python\nfrom conans import ConanFile, CMake\n\n\nclass CatchConan(ConanFile):\n    name = \"Catch2\"\n    descrip"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/Catch.cmake",
    "chars": 7060,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file Copyright.txt or https://cmake.org/l"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/CatchAddTests.cmake",
    "chars": 2242,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file Copyright.txt or https://cmake.org/l"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/ParseAndAddCatchTests.cmake",
    "chars": 13337,
    "preview": "#==================================================================================================#\n#  supported macros"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/gdbinit",
    "chars": 645,
    "preview": "#\n# This file provides a way to skip stepping into Catch code when debugging with gdb.\n#\n# With the gdb \"skip\" command y"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/contrib/lldbinit",
    "chars": 624,
    "preview": "#\n# This file provides a way to skip stepping into Catch code when debugging with lldb.\n#\n# With the setting \"target.pro"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/Readme.md",
    "chars": 1264,
    "preview": "<a id=\"top\"></a>\n# Reference\n\nTo get the most out of Catch2, start with the [tutorial](tutorial.md#top).\nOnce you're up "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/assertions.md",
    "chars": 8308,
    "preview": "<a id=\"top\"></a>\n# Assertion Macros\n\n**Contents**<br>\n[Natural Expressions](#natural-expressions)<br>\n[Exceptions](#exce"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/benchmarks.md",
    "chars": 11499,
    "preview": "<a id=\"top\"></a>\n# Authoring benchmarks\n\n> [Introduced](https://github.com/catchorg/Catch2/issues/1616) in Catch 2.9.0.\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/ci-and-misc.md",
    "chars": 5466,
    "preview": "<a id=\"top\"></a>\n# CI and other odd pieces\n\n**Contents**<br>\n[Continuous Integration systems](#continuous-integration-sy"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/cmake-integration.md",
    "chars": 7359,
    "preview": "<a id=\"top\"></a>\n# CMake integration\n\n**Contents**<br>\n[CMake target](#cmake-target)<br>\n[Automatic test registration](#"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/command-line.md",
    "chars": 19864,
    "preview": "<a id=\"top\"></a>\n# Command line\n\n**Contents**<br>\n[Specifying which tests to run](#specifying-which-tests-to-run)<br>\n[C"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/commercial-users.md",
    "chars": 1035,
    "preview": "<a id=\"top\"></a>\n# Commercial users of Catch\n\nAs well as [Open Source](opensource-users.md#top) users Catch is widely us"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/configuration.md",
    "chars": 13912,
    "preview": "<a id=\"top\"></a>\n# Compile-time configuration\n\n**Contents**<br>\n[main()/ implementation](#main-implementation)<br>\n[Repo"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/contributing.md",
    "chars": 7538,
    "preview": "<a id=\"top\"></a>\n# Contributing to Catch\n\n**Contents**<br>\n[Branches](#branches)<br>\n[Directory structure](#directory-st"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/deprecations.md",
    "chars": 3679,
    "preview": "<a id=\"top\"></a>\n# Deprecations and incoming changes\n\nThis page documents current deprecations and upcoming planned chan"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/event-listeners.md",
    "chars": 2810,
    "preview": "<a id=\"top\"></a>\n# Event Listeners\n\nA `Listener` is a class you can register with Catch that will then be passed events,"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/generators.md",
    "chars": 6615,
    "preview": "<a id=\"top\"></a>\n# Data Generators\n\n> Introduced in Catch 2.6.0.\n\nData generators (also known as _data driven/parametriz"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/limitations.md",
    "chars": 7211,
    "preview": "<a id=\"top\"></a>\n# Known limitations\n\nOver time, some limitations of Catch2 emerged. Some of these are due\nto implementa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/list-of-examples.md",
    "chars": 2854,
    "preview": "<a id=\"top\"></a>\n# List of examples\n\n## Already available\n\n- Catch main: [Catch-provided main](../examples/000-CatchMain"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/logging.md",
    "chars": 4952,
    "preview": "<a id=\"top\"></a>\n# Logging macros\n\nAdditional messages can be logged during a test case. Note that the messages logged w"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/matchers.md",
    "chars": 8097,
    "preview": "<a id=\"top\"></a>\n# Matchers\n\nMatchers are an alternative way to do assertions which are easily extensible and composable"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/opensource-users.md",
    "chars": 5757,
    "preview": "<a id=\"top\"></a>\n# Open Source projects using Catch\n\nCatch is great for open source. With its [liberal license](../LICEN"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/other-macros.md",
    "chars": 4014,
    "preview": "<a id=\"top\"></a>\n# Other macros\n\nThis page serves as a reference for macros that are not documented\nelsewhere. For now, "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/own-main.md",
    "chars": 4300,
    "preview": "<a id=\"top\"></a>\n# Supplying main() yourself\n\n**Contents**<br>\n[Let Catch take full control of args and config](#let-cat"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/release-notes.md",
    "chars": 48304,
    "preview": "<a id=\"top\"></a>\n\n# Release notes\n**Contents**<br>\n[2.11.0](#2110)<br>\n[2.10.2](#2102)<br>\n[2.10.1](#2101)<br>\n[2.10.0]("
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/release-process.md",
    "chars": 3326,
    "preview": "<a id=\"top\"></a>\n# How to release\n\nWhen enough changes have accumulated, it is time to release new version of Catch. Thi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/reporters.md",
    "chars": 2863,
    "preview": "<a id=\"top\"></a>\n# Reporters\n\nCatch has a modular reporting system and comes bundled with a handful of useful reporters "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/slow-compiles.md",
    "chars": 4219,
    "preview": "<a id=\"top\"></a>\n# Why do my tests take so long to compile?\n\n**Contents**<br>\n[Short answer](#short-answer)<br>\n[Long an"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/test-cases-and-sections.md",
    "chars": 13228,
    "preview": "<a id=\"top\"></a>\n# Test cases and sections\n\n**Contents**<br>\n[Tags](#tags)<br>\n[Tag aliases](#tag-aliases)<br>\n[BDD-styl"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/test-fixtures.md",
    "chars": 5281,
    "preview": "<a id=\"top\"></a>\n# Test fixtures\n\n## Defining test fixtures\n\nAlthough Catch allows you to group tests together as sectio"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/tostring.md",
    "chars": 4775,
    "preview": "<a id=\"top\"></a>\n# String conversions\n\n**Contents**<br>\n[operator << overload for std::ostream](#operator--overload-for-"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/tutorial.md",
    "chars": 14794,
    "preview": "<a id=\"top\"></a>\n# Tutorial\n\n**Contents**<br>\n[Getting Catch2](#getting-catch2)<br>\n[Where to put it?](#where-to-put-it)"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/docs/why-catch.md",
    "chars": 2513,
    "preview": "<a id=\"top\"></a>\n# Why do we need yet another C++ test framework?\n\nGood question. For C++ there are quite a number of es"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/000-CatchMain.cpp",
    "chars": 488,
    "preview": "// 000-CatchMain.cpp\n\n// In a Catch project with multiple files, dedicate one file to compile the\n// source code of Catc"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/010-TestCase.cpp",
    "chars": 1323,
    "preview": "// 010-TestCase.cpp\n\n// Let Catch provide main():\n#define CATCH_CONFIG_MAIN\n\n#include <catch2/catch.hpp>\n\nint Factorial("
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/020-TestCase-1.cpp",
    "chars": 1232,
    "preview": "// 020-TestCase-1.cpp\n\n// In a Catch project with multiple files, dedicate one file to compile the\n// source code of Cat"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/020-TestCase-2.cpp",
    "chars": 1168,
    "preview": "// 020-TestCase-2.cpp\n\n// main() provided by Catch in file 020-TestCase-1.cpp.\n\n#include <catch2/catch.hpp>\n\nint Factori"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/030-Asn-Require-Check.cpp",
    "chars": 2791,
    "preview": "// 030-Asn-Require-Check.cpp\n\n// Catch has two natural expression assertion macro's:\n// - REQUIRE() stops at first failu"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/100-Fix-Section.cpp",
    "chars": 2513,
    "preview": "// 100-Fix-Section.cpp\n\n// Catch has two ways to express fixtures:\n// - Sections (this file)\n// - Traditional class-base"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/110-Fix-ClassFixture.cpp",
    "chars": 1963,
    "preview": "// 110-Fix-ClassFixture.cpp\n\n// Catch has two ways to express fixtures:\n// - Sections\n// - Traditional class-based fixtu"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/120-Bdd-ScenarioGivenWhenThen.cpp",
    "chars": 3040,
    "preview": "// 120-Bdd-ScenarioGivenWhenThen.cpp\n\n// main() provided in 000-CatchMain.cpp\n\n#include <catch2/catch.hpp>\n\nSCENARIO( \"v"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/200-Rpt-CatchMain.cpp",
    "chars": 884,
    "preview": "// 200-Rpt-CatchMain.cpp\n\n// In a Catch project with multiple files, dedicate one file to compile the\n// source code of "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/207-Rpt-TeamCityReporter.cpp",
    "chars": 5701,
    "preview": "// 207-Rpt-TeamCityReporter.cpp\n\n// Catch has built-in and external reporters:\n// Built-in:\n// - compact\n// - console\n//"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/210-Evt-EventListeners.cpp",
    "chars": 14779,
    "preview": "// 210-Evt-EventListeners.cpp\n\n// Contents:\n// 1. Printing of listener data\n// 2. My listener and registration\n// 3. Tes"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/231-Cfg-OutputStreams.cpp",
    "chars": 1434,
    "preview": "// 231-Cfg-OutputStreams.cpp\n// Show how to replace the streams with a simple custom made streambuf.\n\n// Note that this "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/300-Gen-OwnGenerator.cpp",
    "chars": 1965,
    "preview": "// 300-Gen-OwnGenerator.cpp\n// Shows how to define a custom generator.\n\n// Specifically we will implement a random numbe"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/301-Gen-MapTypeConversion.cpp",
    "chars": 1735,
    "preview": "// 301-Gen-MapTypeConversion.cpp\n// Shows how to use map to modify generator's return type.\n\n// TODO\n\n#include <catch2/c"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/310-Gen-VariablesInGenerators.cpp",
    "chars": 1230,
    "preview": "// 310-Gen-VariablesInGenerator.cpp\n// Shows how to use variables when creating generators.\n\n// Note that using variable"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/311-Gen-CustomCapture.cpp",
    "chars": 1470,
    "preview": "// 311-Gen-CustomCapture.cpp\n// Shows how to provide custom capture list to the generator expression\n\n// Note that using"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/examples/CMakeLists.txt",
    "chars": 5403,
    "preview": "#\n# Build examples.\n#\n# Requires CATCH_BUILD_EXAMPLES to be defined 'true', see ../CMakeLists.txt.\n#\n\ncmake_minimum_requ"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/catch.hpp",
    "chars": 30046,
    "preview": "/*\n *  Created by Phil on 22/10/2010.\n *  Copyright 2010 Two Blue Cubes Ltd\n *\n *  Distributed under the Boost Software "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/catch_with_main.hpp",
    "chars": 462,
    "preview": " /*\n *  Created by Phil on 01/11/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed un"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/external/clara.hpp",
    "chars": 40635,
    "preview": "// Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n//\n// Distributed under the Boost Software License, Version 1"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_benchmark.hpp",
    "chars": 4838,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_benchmarking_all.hpp",
    "chars": 1040,
    "preview": "/*\n *  Distributed under the Boost Software License, Version 1.0. (See accompanying\n *  file LICENSE_1_0.txt or copy at "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_chronometer.hpp",
    "chars": 2292,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_clock.hpp",
    "chars": 1123,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_constructor.hpp",
    "chars": 2523,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_environment.hpp",
    "chars": 1164,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_estimate.hpp",
    "chars": 912,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_execution_plan.hpp",
    "chars": 2285,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_optimizer.hpp",
    "chars": 2189,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_outlier_classification.hpp",
    "chars": 987,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/catch_sample_analysis.hpp",
    "chars": 1575,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_analyse.hpp",
    "chars": 3213,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_benchmark_function.hpp",
    "chars": 4019,
    "preview": "    /*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost So"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_complete_invoke.hpp",
    "chars": 2574,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_estimate_clock.hpp",
    "chars": 4957,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_measure.hpp",
    "chars": 1132,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_repeat.hpp",
    "chars": 1071,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_run_for_at_least.hpp",
    "chars": 2527,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_stats.cpp",
    "chars": 8936,
    "preview": "/*\n *  Created by Martin on 15/06/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwar"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_stats.hpp",
    "chars": 6499,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/benchmark/detail/catch_timing.hpp",
    "chars": 948,
    "preview": "/*\n *  Created by Joachim on 16/04/2019.\n *  Adapted from donated nonius code.\n *\n *  Distributed under the Boost Softwa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_approx.cpp",
    "chars": 2593,
    "preview": "/*\n *  Created by Martin on 19/07/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed u"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_approx.h",
    "chars": 5044,
    "preview": "/*\n *  Created by Phil on 28/04/2011.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionhandler.cpp",
    "chars": 4450,
    "preview": "/*\n *  Created by Phil on 8/8/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionhandler.h",
    "chars": 2714,
    "preview": "/*\n *  Created by Phil on 8/8/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertioninfo.h",
    "chars": 910,
    "preview": "/*\n *  Created by Phil on 8/8/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionresult.cpp",
    "chars": 3313,
    "preview": "/*\n *  Created by Phil on 8/8/12\n *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under th"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_assertionresult.h",
    "chars": 1800,
    "preview": "/*\n *  Created by Phil on 28/10/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_capture.hpp",
    "chars": 7865,
    "preview": "/*\n *  Created by Phil on 18/10/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_capture_matchers.cpp",
    "chars": 1035,
    "preview": "/*\n *  Created by Phil on 9/8/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_capture_matchers.h",
    "chars": 3802,
    "preview": "/*\n *  Created by Phil on 9/8/2017\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_clara.h",
    "chars": 1275,
    "preview": "/*\n *  Created by Phil on 10/2/2014.\n *  Copyright 2014 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_commandline.cpp",
    "chars": 10298,
    "preview": "/*\n *  Created by Phil on 02/11/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_commandline.h",
    "chars": 582,
    "preview": "/*\n *  Created by Phil on 02/11/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_common.cpp",
    "chars": 1388,
    "preview": "/*\n *  Created by Phil on 27/11/2013.\n *  Copyright 2013 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_common.h",
    "chars": 3050,
    "preview": "/*\n *  Created by Phil on 29/10/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_compiler_capabilities.h",
    "chars": 14598,
    "preview": "/*\n *  Created by Phil on 15/04/2013.\n *  Copyright 2013 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_config.cpp",
    "chars": 3899,
    "preview": "/*\n *  Created by Martin on 19/07/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_config.hpp",
    "chars": 4084,
    "preview": "/*\n *  Created by Phil on 08/11/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_console_colour.cpp",
    "chars": 8534,
    "preview": "/*\n *  Created by Phil on 25/2/2012.\n *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_console_colour.h",
    "chars": 1797,
    "preview": "/*\n *  Created by Phil on 25/2/2012.\n *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_context.cpp",
    "chars": 1829,
    "preview": "/*\n *  Created by Phil on 31/12/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_context.h",
    "chars": 1748,
    "preview": "/*\n *  Created by Phil on 31/12/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debug_console.cpp",
    "chars": 1035,
    "preview": "/*\n *  Created by Martin on 29/08/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debug_console.h",
    "chars": 461,
    "preview": "/*\n *  Created by Martin on 29/08/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debugger.cpp",
    "chars": 4384,
    "preview": "/*\n *  Created by Phil on 27/12/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_debugger.h",
    "chars": 1818,
    "preview": "/*\n *  Created by Phil on 3/12/2013.\n *  Copyright 2013 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_decomposer.cpp",
    "chars": 807,
    "preview": "/*\n *  Created by Phil Nash on 8/8/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_decomposer.h",
    "chars": 9742,
    "preview": "/*\n *  Created by Phil Nash on 8/8/2017.\n *  Copyright 2017 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed "
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_default_main.hpp",
    "chars": 1193,
    "preview": "/*\n *  Created by Phil on 20/05/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enforce.cpp",
    "chars": 1048,
    "preview": "/*\n *  Created by Martin on 03/09/2018.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enforce.h",
    "chars": 1549,
    "preview": "/*\n *  Created by Martin on 01/08/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enum_values_registry.cpp",
    "chars": 2716,
    "preview": "/*\n *  Created by Phil on 4/4/2019.\n *  Copyright 2019 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_enum_values_registry.h",
    "chars": 1055,
    "preview": "/*\n *  Created by Phil on 4/4/2019.\n *  Copyright 2019 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_errno_guard.cpp",
    "chars": 385,
    "preview": "/*\n *  Created by Martin on 06/03/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_errno_guard.h",
    "chars": 502,
    "preview": "/*\n *  Created by Martin on 06/03/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_exception_translator_registry.cpp",
    "chars": 3073,
    "preview": "/*\n *  Created by Phil on 20/04/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_exception_translator_registry.h",
    "chars": 1011,
    "preview": "/*\n *  Created by Phil on 20/04/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_external_interfaces.h",
    "chars": 752,
    "preview": "/*\n *  Created by Martin on 17/08/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_fatal_condition.cpp",
    "chars": 5738,
    "preview": "/*\n *  Created by Phil on 21/08/2014\n *  Copyright 2014 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_fatal_condition.h",
    "chars": 1509,
    "preview": "/*\n *  Created by Phil on 21/08/2014\n *  Copyright 2014 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators.cpp",
    "chars": 787,
    "preview": "/*\n *  Created by Phil Nash on 15/6/2018.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators.hpp",
    "chars": 7453,
    "preview": "/*\n *  Created by Phil Nash on 15/6/2018.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators_generic.hpp",
    "chars": 8492,
    "preview": "/*\n *  Created by Martin on 23/2/2019.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompanyi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_generators_specific.hpp",
    "chars": 5193,
    "preview": "/*\n *  Created by Martin on 15/6/2018.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompanyi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_impl.hpp",
    "chars": 848,
    "preview": "/*\n *  Created by Phil on 5/8/2012.\n *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_capture.cpp",
    "chars": 108,
    "preview": "#include \"catch_interfaces_capture.h\"\n\nnamespace Catch {\n    IResultCapture::~IResultCapture() = default;\n}\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_capture.h",
    "chars": 3631,
    "preview": "/*\n *  Created by Phil on 07/01/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_config.cpp",
    "chars": 93,
    "preview": "#include \"catch_interfaces_config.h\"\n\nnamespace Catch {\n    IConfig::~IConfig() = default;\n}\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_config.h",
    "chars": 2661,
    "preview": "/*\n *  Created by Phil on 05/06/2012.\n *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_enum_values_registry.h",
    "chars": 1537,
    "preview": "/*\n *  Created by Phil on 4/4/2019.\n *  Copyright 2019 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_exception.cpp",
    "chars": 199,
    "preview": "#include \"catch_interfaces_exception.h\"\n\nnamespace Catch {\n    IExceptionTranslator::~IExceptionTranslator() = default;\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_exception.h",
    "chars": 3168,
    "preview": "/*\n *  Created by Phil on 20/04/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_generatortracker.h",
    "chars": 1273,
    "preview": "/*\n *  Created by Phil Nash on 26/6/2018.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_registry_hub.cpp",
    "chars": 168,
    "preview": "#include \"catch_interfaces_registry_hub.h\"\n\nnamespace Catch {\n    IRegistryHub::~IRegistryHub() = default;\n    IMutableR"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_registry_hub.h",
    "chars": 2216,
    "preview": "/*\n *  Created by Phil on 5/8/2012.\n *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed under"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_reporter.cpp",
    "chars": 4091,
    "preview": "/*\n *  Created by Martin on 19/07/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_reporter.h",
    "chars": 9362,
    "preview": "/*\n *  Created by Phil on 31/12/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_runner.cpp",
    "chars": 93,
    "preview": "#include \"catch_interfaces_runner.h\"\n\nnamespace Catch {\n    IRunner::~IRunner() = default;\n}\n"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_runner.h",
    "chars": 552,
    "preview": "/*\n *  Created by Phil on 07/01/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_tag_alias_registry.h",
    "chars": 881,
    "preview": "/*\n *  Created by Phil on 27/6/2014.\n *  Copyright 2014 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_testcase.cpp",
    "chars": 160,
    "preview": "#include \"catch_interfaces_testcase.h\"\n\nnamespace Catch {\n    ITestInvoker::~ITestInvoker() = default;\n    ITestCaseRegi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_interfaces_testcase.h",
    "chars": 1277,
    "preview": "/*\n *  Created by Phil on 07/01/2011.\n *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed und"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_leak_detector.cpp",
    "chars": 924,
    "preview": "/*\n *  Created by Martin on 12/07/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_leak_detector.h",
    "chars": 465,
    "preview": "/*\n *  Created by Martin on 12/07/2017.\n *\n *  Distributed under the Boost Software License, Version 1.0. (See accompany"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_list.cpp",
    "chars": 6773,
    "preview": "/*\n *  Created by Phil on 5/11/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_list.h",
    "chars": 967,
    "preview": "/*\n *  Created by Phil on 5/11/2010.\n *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.\n *\n *  Distributed unde"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers.cpp",
    "chars": 685,
    "preview": "/*\n *  Created by Phil Nash on 19/07/2017.\n *\n * Distributed under the Boost Software License, Version 1.0. (See accompa"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers.h",
    "chars": 5678,
    "preview": "/*\n *  Created by Phil Nash on 04/03/2012.\n *  Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.\n *\n * Distrib"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_exception.cpp",
    "chars": 747,
    "preview": "/*\n *  Created by Martin Hořeňovský on 13/10/2019.\n *\n * Distributed under the Boost Software License, Version 1.0. (See"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_exception.hpp",
    "chars": 929,
    "preview": "/*\n *  Created by Martin Hořeňovský on 13/10/2019.\n *\n * Distributed under the Boost Software License, Version 1.0. (See"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_floating.cpp",
    "chars": 7860,
    "preview": "/*\n *  Created by Martin on 07/11/2017.\n *\n * Distributed under the Boost Software License, Version 1.0. (See accompanyi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_floating.h",
    "chars": 2739,
    "preview": "/*\n *  Created by Martin on 07/11/2017.\n *\n * Distributed under the Boost Software License, Version 1.0. (See accompanyi"
  },
  {
    "path": "mediasoup-client/deps/libmediasoupclient/deps/catch/include/internal/catch_matchers_generic.cpp",
    "chars": 278,
    "preview": "#include \"catch_matchers_generic.hpp\"\n\nstd::string Catch::Matchers::Generic::Detail::finalizeDescription(const std::stri"
  }
]

// ... and 8941 more files (download for full content)

About this extraction

This page contains the full source code of the haiyangwu/mediasoup-client-android GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 9141 files (57.2 MB), approximately 15.6M tokens, and a symbol index with 47161 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!