mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 23:02:20 +00:00
Merge mozilla-central to autoland. CLOSED TREE
This commit is contained in:
commit
af8d019488
2
CLOBBER
2
CLOBBER
@ -23,4 +23,4 @@
|
||||
# don't change CLOBBER for WebIDL changes any more.
|
||||
|
||||
|
||||
Merge day clobber 2022-12-12
|
||||
Modified build files in third_party/libwebrtc - Bug 1800920 - Vendor libwebrtc from 29d7292a34
|
||||
|
@ -129,7 +129,7 @@ class DummyAudioProcessing : public AudioProcessing {
|
||||
return 0;
|
||||
}
|
||||
void set_stream_key_pressed(bool) override { MOZ_CRASH("Unexpected call"); }
|
||||
bool CreateAndAttachAecDump(const std::string&, int64_t,
|
||||
bool CreateAndAttachAecDump(absl::string_view, int64_t,
|
||||
rtc::TaskQueue*) override {
|
||||
MOZ_CRASH("Unexpected call");
|
||||
return false;
|
||||
|
@ -70,7 +70,7 @@ class TaskQueueWrapper : public webrtc::TaskQueueBase {
|
||||
}
|
||||
|
||||
already_AddRefed<Runnable> CreateTaskRunner(
|
||||
std::unique_ptr<webrtc::QueuedTask> aTask) {
|
||||
absl::AnyInvocable<void() &&> aTask) {
|
||||
return NS_NewRunnableFunction(
|
||||
"TaskQueueWrapper::CreateTaskRunner",
|
||||
[this, task = std::move(aTask),
|
||||
@ -82,10 +82,7 @@ class TaskQueueWrapper : public webrtc::TaskQueueBase {
|
||||
return;
|
||||
}
|
||||
AUTO_PROFILE_FOLLOWING_RUNNABLE(name);
|
||||
bool toDelete = task->Run();
|
||||
if (!toDelete) {
|
||||
task.release();
|
||||
}
|
||||
std::move(task)();
|
||||
});
|
||||
}
|
||||
|
||||
@ -103,20 +100,25 @@ class TaskQueueWrapper : public webrtc::TaskQueueBase {
|
||||
});
|
||||
}
|
||||
|
||||
void PostTask(std::unique_ptr<webrtc::QueuedTask> aTask) override {
|
||||
void PostTask(absl::AnyInvocable<void() &&> aTask) override {
|
||||
MOZ_ALWAYS_SUCCEEDS(
|
||||
mTaskQueue->Dispatch(CreateTaskRunner(std::move(aTask))));
|
||||
}
|
||||
|
||||
void PostDelayedTask(std::unique_ptr<webrtc::QueuedTask> aTask,
|
||||
uint32_t aMilliseconds) override {
|
||||
if (aMilliseconds == 0) {
|
||||
void PostDelayedTask(absl::AnyInvocable<void() &&> aTask,
|
||||
webrtc::TimeDelta aDelay) override {
|
||||
if (aDelay.ms() == 0) {
|
||||
// AbstractThread::DelayedDispatch doesn't support delay 0
|
||||
PostTask(std::move(aTask));
|
||||
return;
|
||||
}
|
||||
MOZ_ALWAYS_SUCCEEDS(mTaskQueue->DelayedDispatch(
|
||||
CreateTaskRunner(std::move(aTask)), aMilliseconds));
|
||||
CreateTaskRunner(std::move(aTask)), aDelay.ms()));
|
||||
}
|
||||
|
||||
void PostDelayedHighPrecisionTask(absl::AnyInvocable<void() &&> aTask,
|
||||
webrtc::TimeDelta aDelay) override {
|
||||
PostDelayedTask(std::move(aTask), aDelay);
|
||||
}
|
||||
|
||||
const RefPtr<TaskQueue> mTaskQueue;
|
||||
|
17
dom/media/webrtc/third_party_build/README.md
Normal file
17
dom/media/webrtc/third_party_build/README.md
Normal file
@ -0,0 +1,17 @@
|
||||
# Vendoring libwebrtc and the fast-forward process
|
||||
|
||||
Most of the important information about this process is contained on the fast-forward
|
||||
automation wiki page
|
||||
[here](https://wiki.mozilla.org/Media/WebRTC/libwebrtc_Update_Process/automation_plan).
|
||||
|
||||
To skip the history and details and go directly to starting the libwebrtc fast-foward
|
||||
process, go to the
|
||||
[Operation Checklist](https://wiki.mozilla.org/Media/WebRTC/libwebrtc_Update_Process/automation_plan#Operation_Checklist).
|
||||
|
||||
# Fixing errors reported in scripts
|
||||
|
||||
In most cases, the scripts report errors including suggestions on how to resolve the
|
||||
issue. If you're seeing an error message referring you to this README.md file, the
|
||||
likely issue is that you're missing environment variables that should be set in a
|
||||
config_env file in your root directory. An example of that file can be found at
|
||||
[dom/media/webrtc/third_party_build/example_config_env](https://searchfox.org/mozilla-central/rev/ef0aa879e94534ffd067a3748d034540a9fc10b0/dom/media/webrtc/third_party_build/example_config_env).
|
@ -108,8 +108,10 @@ echo "$MOZ_LIBWEBRTC_NEXT_BASE" >> third_party/libwebrtc/README.moz-ff-commit
|
||||
|
||||
REBASE_HELP=$"
|
||||
The rebase operation onto $MOZ_LIBWEBRTC_NEXT_BASE has failed. Please
|
||||
resolve all the rebase conflicts. When the github rebase is complete,
|
||||
re-run the previous command to resume the fast-forward process.
|
||||
resolve all the rebase conflicts. To fix this issue, you will need to
|
||||
jump to the github repo at $MOZ_LIBWEBRTC_SRC .
|
||||
When the github rebase is complete, re-run the script to resume the
|
||||
fast-forward process.
|
||||
"
|
||||
#"rebase_mozlibwebrtc_stack help for rebase failure"
|
||||
function rebase_mozlibwebrtc_stack {
|
||||
|
@ -187,6 +187,20 @@ class MockVideoReceiveStream : public webrtc::VideoReceiveStreamInterface {
|
||||
|
||||
void SetRtcpMode(webrtc::RtcpMode mode) override {}
|
||||
|
||||
void SetFlexFecProtection(webrtc::RtpPacketSinkInterface* flexfec_sink) override {}
|
||||
|
||||
void SetLossNotificationEnabled(bool enabled) override {}
|
||||
|
||||
void SetNackHistory(webrtc::TimeDelta history) override {}
|
||||
|
||||
void SetProtectionPayloadTypes(int red_payload_type,
|
||||
int ulpfec_payload_type) override {}
|
||||
|
||||
void SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) override {}
|
||||
|
||||
virtual void SetAssociatedPayloadTypes(
|
||||
std::map<int, int> associated_payload_types) override {}
|
||||
|
||||
void SetRtpExtensions(std::vector<webrtc::RtpExtension> extensions) override {
|
||||
}
|
||||
webrtc::RtpHeaderExtensionMap GetRtpExtensionMap() const override;
|
||||
|
3
third_party/libwebrtc/AUTHORS
vendored
3
third_party/libwebrtc/AUTHORS
vendored
@ -24,6 +24,7 @@ Anil Kumar <an1kumar@gmail.com>
|
||||
Ben Strong <bstrong@gmail.com>
|
||||
Berthold Herrmann <bertholdherrmann08@googlemail.com>
|
||||
Bob Withers <bwit@pobox.com>
|
||||
Brett Hebert <hebert.brett@pm.me>
|
||||
Bridger Maxwell <bridgeyman@gmail.com>
|
||||
Bruno Pitrus <brunopitrus@hotmail.com>
|
||||
Cheng Qian <chengqian1521@qq.com>
|
||||
@ -80,8 +81,10 @@ Michael Iedema <michael@kapsulate.com>
|
||||
Michel Promonet <michel.promonet.1@gmail.com>
|
||||
Miguel Paris <mparisdiaz@gmail.com>
|
||||
Mike Gilbert <floppymaster@gmail.com>
|
||||
Mike Wei <Mike.WeiB@gmail.com>
|
||||
Min Wang <mingewang@gmail.com>
|
||||
Mo Zanaty <mzanaty@cisco.com>
|
||||
Nico Schlumprecht <me@github.nico.onl>
|
||||
Niek van der Maas <mail@niekvandermaas.nl>
|
||||
Olivier Crête <olivier.crete@ocrete.ca>
|
||||
Pali Rohar
|
||||
|
44
third_party/libwebrtc/BUILD.gn
vendored
44
third_party/libwebrtc/BUILD.gn
vendored
@ -470,29 +470,46 @@ if (!build_with_chromium) {
|
||||
defines = []
|
||||
|
||||
deps = [
|
||||
#"api:create_peerconnection_factory",
|
||||
#"api:libjingle_peerconnection_api",
|
||||
#"api:rtc_error",
|
||||
#"api:transport_api",
|
||||
#"api/crypto",
|
||||
#"api/rtc_event_log:rtc_event_log_factory",
|
||||
#"api/task_queue",
|
||||
#"api/task_queue:default_task_queue_factory",
|
||||
"api:create_peerconnection_factory",
|
||||
"api:libjingle_peerconnection_api",
|
||||
"api:rtc_error",
|
||||
"api:transport_api",
|
||||
"api/crypto",
|
||||
"api/rtc_event_log:rtc_event_log_factory",
|
||||
"api/task_queue",
|
||||
"api/task_queue:default_task_queue_factory",
|
||||
"audio",
|
||||
"call",
|
||||
"common_audio",
|
||||
"common_video",
|
||||
#"logging:rtc_event_log_api",
|
||||
"logging:rtc_event_log_api",
|
||||
"media",
|
||||
"modules",
|
||||
"modules/video_capture:video_capture_internal_impl",
|
||||
#"p2p:rtc_p2p",
|
||||
#"pc:libjingle_peerconnection",
|
||||
#"pc:rtc_pc",
|
||||
"p2p:rtc_p2p",
|
||||
"pc:libjingle_peerconnection",
|
||||
"pc:rtc_pc",
|
||||
"rtc_base",
|
||||
#"sdk",
|
||||
"sdk",
|
||||
"video",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [
|
||||
"api:create_peerconnection_factory",
|
||||
"api:libjingle_peerconnection_api",
|
||||
"api:rtc_error",
|
||||
"api:transport_api",
|
||||
"api/crypto",
|
||||
"api/rtc_event_log:rtc_event_log_factory",
|
||||
"api/task_queue",
|
||||
"api/task_queue:default_task_queue_factory",
|
||||
"logging:rtc_event_log_api",
|
||||
"p2p:rtc_p2p",
|
||||
"pc:libjingle_peerconnection",
|
||||
"pc:rtc_pc",
|
||||
"sdk",
|
||||
]
|
||||
}
|
||||
|
||||
if (rtc_include_builtin_audio_codecs) {
|
||||
deps += [
|
||||
@ -571,7 +588,6 @@ if (rtc_include_tests && !build_with_chromium) {
|
||||
"api/audio_codecs/test:audio_codecs_api_unittests",
|
||||
"api/numerics:numerics_unittests",
|
||||
"api/task_queue:pending_task_safety_flag_unittests",
|
||||
"api/task_queue:to_queued_task_unittests",
|
||||
"api/transport:stun_unittest",
|
||||
"api/video/test:rtc_api_video_unittests",
|
||||
"api/video_codecs/test:video_codecs_api_unittests",
|
||||
|
112
third_party/libwebrtc/DEPS
vendored
112
third_party/libwebrtc/DEPS
vendored
@ -10,7 +10,7 @@ vars = {
|
||||
# chromium waterfalls. More info at: crbug.com/570091.
|
||||
'checkout_configuration': 'default',
|
||||
'checkout_instrumented_libraries': 'checkout_linux and checkout_configuration == "default"',
|
||||
'chromium_revision': 'abe412afe77f1eff72c0ba10e45bcb9a275b30d5',
|
||||
'chromium_revision': '80727c54daeb7dfbe3ce743b89007f7a5b154f63',
|
||||
|
||||
# Keep the Chromium default of generating location tags.
|
||||
'generate_location_tags': True,
|
||||
@ -20,36 +20,36 @@ vars = {
|
||||
|
||||
# By default, download the fuchsia sdk from the public sdk directory.
|
||||
'fuchsia_sdk_cipd_prefix': 'fuchsia/sdk/gn/',
|
||||
'fuchsia_version': 'version:9.20220720.2.1',
|
||||
'fuchsia_version': 'version:9.20220817.1.1',
|
||||
}
|
||||
|
||||
deps = {
|
||||
# TODO(kjellander): Move this to be Android-only.
|
||||
'src/base':
|
||||
'https://chromium.googlesource.com/chromium/src/base@468bdcb9c782eb6a22ea35682b7e626531339e1d',
|
||||
'https://chromium.googlesource.com/chromium/src/base@52d9b2c3e1dc18376e02e109925843e0d2a727a7',
|
||||
'src/build':
|
||||
'https://chromium.googlesource.com/chromium/src/build@bed2979286743b965832101fd1632e0b043f2eb1',
|
||||
'https://chromium.googlesource.com/chromium/src/build@138d9667f4dd99742d3d47618e6d9f47ad0d78ea',
|
||||
'src/buildtools':
|
||||
'https://chromium.googlesource.com/chromium/src/buildtools@d4d55fbf055779487e1b342916c4b12cad658af0',
|
||||
'https://chromium.googlesource.com/chromium/src/buildtools@2c110db04251fd39d54c5f0de824819ab120ca99',
|
||||
# Gradle 6.6.1. Used for testing Android Studio project generation for WebRTC.
|
||||
'src/examples/androidtests/third_party/gradle': {
|
||||
'url': 'https://chromium.googlesource.com/external/github.com/gradle/gradle.git@f2d1fb54a951d8b11d25748e4711bec8d128d7e3',
|
||||
'condition': 'checkout_android',
|
||||
},
|
||||
'src/ios': {
|
||||
'url': 'https://chromium.googlesource.com/chromium/src/ios@0b68b671ca928ee6913bd494121ff3a67301e6d5',
|
||||
'url': 'https://chromium.googlesource.com/chromium/src/ios@4fd1edf5103f94a38709882e00f523f91013b215',
|
||||
'condition': 'checkout_ios',
|
||||
},
|
||||
'src/testing':
|
||||
'https://chromium.googlesource.com/chromium/src/testing@fc01b2b000884e860dd66d704f5609d6745f87ef',
|
||||
'https://chromium.googlesource.com/chromium/src/testing@80e0a194eab2af638864f58bf9c90db870b359a3',
|
||||
'src/third_party':
|
||||
'https://chromium.googlesource.com/chromium/src/third_party@24f89f2000caa5b1e3f72e15e90e327df4debfa3',
|
||||
'https://chromium.googlesource.com/chromium/src/third_party@4a8740656dca3a743c87e89eb38ba90b3e23125e',
|
||||
|
||||
'src/buildtools/linux64': {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'gn/gn/linux-${{arch}}',
|
||||
'version': 'git_revision:9ef321772ecc161937db69acb346397e0ccc484d',
|
||||
'version': 'git_revision:0bcd37bd2b83f1a9ee17088037ebdfe6eab6d31a',
|
||||
}
|
||||
],
|
||||
'dep_type': 'cipd',
|
||||
@ -59,7 +59,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'gn/gn/mac-${{arch}}',
|
||||
'version': 'git_revision:9ef321772ecc161937db69acb346397e0ccc484d',
|
||||
'version': 'git_revision:0bcd37bd2b83f1a9ee17088037ebdfe6eab6d31a',
|
||||
}
|
||||
],
|
||||
'dep_type': 'cipd',
|
||||
@ -69,7 +69,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'gn/gn/windows-amd64',
|
||||
'version': 'git_revision:9ef321772ecc161937db69acb346397e0ccc484d',
|
||||
'version': 'git_revision:0bcd37bd2b83f1a9ee17088037ebdfe6eab6d31a',
|
||||
}
|
||||
],
|
||||
'dep_type': 'cipd',
|
||||
@ -79,17 +79,17 @@ deps = {
|
||||
'src/buildtools/clang_format/script':
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git@8b525d2747f2584fc35d8c7e612e66f377858df7',
|
||||
'src/buildtools/third_party/libc++/trunk':
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git@88bf4070487fbe9020697a2281743b91e5e29bef',
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git@9de2fe0403752ea1ad2c6b21a79032ad87cdc404',
|
||||
'src/buildtools/third_party/libc++abi/trunk':
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git@b954e3e65634a9e2f7b595598a30c455f5f2eb26',
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git@039323b945911a54cb7400da8fb14fcbb0348e97',
|
||||
'src/buildtools/third_party/libunwind/trunk':
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git@955e2ff5fbb15791fea263c1c80e1ec6b3c5ee61',
|
||||
'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git@12726c93aa00e47e80dbd332cca8a1b4d67945ce',
|
||||
|
||||
'src/third_party/android_system_sdk': {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_system_sdk/public',
|
||||
'version': 'oSfDIvHlCa6W0gS79Q5OOfB9E4eBg3uAvi3BEDN21U0C',
|
||||
'version': 'RGY8Vyf8jjszRIJRFxZj7beXSUEHTQM90MtYejUvdMgC',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -109,7 +109,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_build_tools/aapt2',
|
||||
'version': 'hf9C5IyJUUGaBnzqu60xiFJSyfAmjqjc_PiNXNVc9l0C',
|
||||
'version': 'nSnWUNu6ssPA-kPMvFQj4JjDXRWj2iubvvjfT1F6HCMC',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -128,11 +128,11 @@ deps = {
|
||||
},
|
||||
|
||||
'src/third_party/boringssl/src':
|
||||
'https://boringssl.googlesource.com/boringssl.git@b95124305ab15c7523d3e21437309fa5dd717ee8',
|
||||
'https://boringssl.googlesource.com/boringssl.git@adaa322b63d1bfbd1abcf4a308926a9a83a6acbe',
|
||||
'src/third_party/breakpad/breakpad':
|
||||
'https://chromium.googlesource.com/breakpad/breakpad.git@c4c43b80ea8854c57a4374ac32579b577172dc23',
|
||||
'https://chromium.googlesource.com/breakpad/breakpad.git@e085b3b50bde862d0cf3ce4594e3f391bcf5faec',
|
||||
'src/third_party/catapult':
|
||||
'https://chromium.googlesource.com/catapult.git@abcd8ba23ed9836cf8d2e5f93b43ea47b05463d3',
|
||||
'https://chromium.googlesource.com/catapult.git@e12cc61cfa3d1a3b81e2536eb3904af406d5cbc9',
|
||||
'src/third_party/ced/src': {
|
||||
'url': 'https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git@ba412eaaacd3186085babcd901679a48863c7dd5',
|
||||
},
|
||||
@ -141,11 +141,11 @@ deps = {
|
||||
'src/third_party/crc32c/src':
|
||||
'https://chromium.googlesource.com/external/github.com/google/crc32c.git@fa5ade41ee480003d9c5af6f43567ba22e4e17e6',
|
||||
'src/third_party/depot_tools':
|
||||
'https://chromium.googlesource.com/chromium/tools/depot_tools.git@39e33e6eca3fe1aa53a77f8185226f54f1cb2b7c',
|
||||
'https://chromium.googlesource.com/chromium/tools/depot_tools.git@d14f65eba90cc352b76ff0743a307ce22450d823',
|
||||
'src/third_party/ffmpeg':
|
||||
'https://chromium.googlesource.com/chromium/third_party/ffmpeg.git@880df5ede50a8534c8116d0d50e4bc4f3ef08a06',
|
||||
'https://chromium.googlesource.com/chromium/third_party/ffmpeg.git@b71ecd02b47939e530e620d9d0d101463db0f688',
|
||||
'src/third_party/grpc/src': {
|
||||
'url': 'https://chromium.googlesource.com/external/github.com/grpc/grpc.git@89f7534e43cf73f56c492a9cf7eb85ca6bfbd87a',
|
||||
'url': 'https://chromium.googlesource.com/external/github.com/grpc/grpc.git@dd77c67217b10ffeaf766e25eb8b46d2d59de4ff',
|
||||
},
|
||||
# Used for embedded builds. CrOS & Linux use the system version.
|
||||
'src/third_party/fontconfig/src': {
|
||||
@ -153,7 +153,7 @@ deps = {
|
||||
'condition': 'checkout_linux',
|
||||
},
|
||||
'src/third_party/freetype/src':
|
||||
'https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@275b116b40c9d183d42242099ea9ff276985855b',
|
||||
'https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@7cd3f19f21cc9d600e3b765ef2058474d20233e2',
|
||||
'src/third_party/harfbuzz-ng/src':
|
||||
'https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git@fa471043fccb94444510e3300ac2573297c82137',
|
||||
'src/third_party/google_benchmark/src': {
|
||||
@ -175,7 +175,7 @@ deps = {
|
||||
'src/third_party/googletest/src':
|
||||
'https://chromium.googlesource.com/external/github.com/google/googletest.git@af29db7ec28d6df1c7f0f745186884091e602e07',
|
||||
'src/third_party/icu': {
|
||||
'url': 'https://chromium.googlesource.com/chromium/deps/icu.git@50ec7b3822a90d73aa761b21fc941b485a1cb9d6',
|
||||
'url': 'https://chromium.googlesource.com/chromium/deps/icu.git@b3070c52557323463e6b9827e2343e60e1b91f85',
|
||||
},
|
||||
'src/third_party/jdk': {
|
||||
'packages': [
|
||||
@ -214,17 +214,17 @@ deps = {
|
||||
'src/third_party/dav1d/libdav1d':
|
||||
'https://chromium.googlesource.com/external/github.com/videolan/dav1d.git@87f9a81cd770e49394a45deca7a3df41243de00b',
|
||||
'src/third_party/libaom/source/libaom':
|
||||
'https://aomedia.googlesource.com/aom.git@8dcdafc6d4a2f9f8ea8104f26eca5d123eefcb7f',
|
||||
'https://aomedia.googlesource.com/aom.git@121f3851459d5ee2ca1b5b23c6187bda79984eb2',
|
||||
'src/third_party/libunwindstack': {
|
||||
'url': 'https://chromium.googlesource.com/chromium/src/third_party/libunwindstack.git@3c86843ae0f8d560ae0d15b92e34ce88cf83057a',
|
||||
'condition': 'checkout_android',
|
||||
},
|
||||
'src/third_party/perfetto':
|
||||
'https://android.googlesource.com/platform/external/perfetto.git@c2235982559f7008e5384d5145e1febe571573cd',
|
||||
'https://android.googlesource.com/platform/external/perfetto.git@8404c1cc9828cdc49a169482c09d4df2a9cd605c',
|
||||
'src/third_party/libvpx/source/libvpx':
|
||||
'https://chromium.googlesource.com/webm/libvpx.git@711bef67400f096416cb1ba7f6560e533871490f',
|
||||
'https://chromium.googlesource.com/webm/libvpx.git@8786aee5821801fe6b5a285be009ba67ea7f4e63',
|
||||
'src/third_party/libyuv':
|
||||
'https://chromium.googlesource.com/libyuv/libyuv.git@d248929c059ff7629a85333699717d7a677d8d96',
|
||||
'https://chromium.googlesource.com/libyuv/libyuv.git@65e7c9d5706a77d1949da59bfcb0817c252ef8d6',
|
||||
'src/third_party/lss': {
|
||||
'url': 'https://chromium.googlesource.com/linux-syscall-support.git@0d6435b731ef91d5182eaecff82ae96764222c48',
|
||||
'condition': 'checkout_android or checkout_linux',
|
||||
@ -245,7 +245,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/r8',
|
||||
'version': 'auReXfxxD74XGdPdi-rYsKrp4sRwYwgNjh_W0PT7vNcC',
|
||||
'version': 'lAcTGSK3VDSH4DI3H3q0XIg8y0wBVz7IS1Fk_Zbd3iYC',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -266,7 +266,7 @@ deps = {
|
||||
'condition': 'checkout_android',
|
||||
},
|
||||
'src/tools':
|
||||
'https://chromium.googlesource.com/chromium/src/tools@f6d83033bb265e51661b317e201749db1b688b5c',
|
||||
'https://chromium.googlesource.com/chromium/src/tools@64edf18b1a580d1ca9fc4a6aea46329f43fd01c3',
|
||||
|
||||
'src/third_party/accessibility_test_framework': {
|
||||
'packages': [
|
||||
@ -354,7 +354,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/androidx',
|
||||
'version': 'gAsD4l8EoP_W0IH5vzedZ1tyN3-wAP8-fqkaS_mX6rcC',
|
||||
'version': 'nJRbqGtdXzotJnB8kFaAckjFBKzXW4O9BdApCCC7J8AC',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -365,7 +365,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_build_tools/manifest_merger',
|
||||
'version': '0WkAedh1tJB8lzisWJRT80UjpacKLltuV7NqP-0tx9gC',
|
||||
'version': 'CvokX4c6dx7DwQ8VVMQ70CROzyJWg13oOq3feeuTzg8C',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -375,12 +375,12 @@ deps = {
|
||||
'src/third_party/android_sdk/public': {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_sdk/public/build-tools/31.0.0',
|
||||
'version': 'tRoD45SCi7UleQqSV7MrMQO1_e5P8ysphkCcj6z_cCQC',
|
||||
'package': 'chromium/third_party/android_sdk/public/build-tools/33.0.0',
|
||||
'version': '-VRKr36Uw8L_iFqqo9nevIBgNMggND5iWxjidyjnCgsC',
|
||||
},
|
||||
{
|
||||
'package': 'chromium/third_party/android_sdk/public/emulator',
|
||||
'version': 'gMHhUuoQRKfxr-MBn3fNNXZtkAVXtOwMwT7kfx8jkIgC',
|
||||
'version': '9lGp8nTUCRRWGMnI_96HcKfzjnxEJKUcfvfwmA3wXNkC',
|
||||
},
|
||||
{
|
||||
'package': 'chromium/third_party/android_sdk/public/patcher',
|
||||
@ -388,11 +388,11 @@ deps = {
|
||||
},
|
||||
{
|
||||
'package': 'chromium/third_party/android_sdk/public/platform-tools',
|
||||
'version': 'g7n_-r6yJd_SGRklujGB1wEt8iyr77FZTUJVS9w6O34C',
|
||||
'version': 'RSI3iwryh7URLGRgJHsCvUxj092woTPnKt4pwFcJ6L8C',
|
||||
},
|
||||
{
|
||||
'package': 'chromium/third_party/android_sdk/public/platforms/android-31',
|
||||
'version': 'lL3IGexKjYlwjO_1Ga-xwxgwbE_w-lmi2Zi1uOlWUIAC',
|
||||
'package': 'chromium/third_party/android_sdk/public/platforms/android-33',
|
||||
'version': 'eo5KvW6UVor92LwZai8Zulc624BQZoCu-yn7wa1z_YcC',
|
||||
},
|
||||
{
|
||||
'package': 'chromium/third_party/android_sdk/public/sources/android-31',
|
||||
@ -433,7 +433,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/robolectric',
|
||||
'version': 'WZ96VJuhBM63xzHb-_E72Tf46M9yIbfia6basI1YG4EC',
|
||||
'version': '6OaDTPaXu0VZoMwWllgaXTeiaJR5jQkZb1_aooRa2GUC',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -1231,7 +1231,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/com_google_android_material_material',
|
||||
'version': 'version:2@1.6.0-alpha01.cr1',
|
||||
'version': 'version:2@1.7.0-alpha02.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -1869,7 +1869,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib',
|
||||
'version': 'version:2@1.7.0.cr1',
|
||||
'version': 'version:2@1.7.10.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -1880,7 +1880,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_common',
|
||||
'version': 'version:2@1.7.0.cr1',
|
||||
'version': 'version:2@1.7.10.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2023,7 +2023,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_annotations',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2034,7 +2034,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_junit',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2045,7 +2045,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_nativeruntime',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2056,7 +2056,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_pluginapi',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2067,7 +2067,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_plugins_maven_dependency_resolver',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2078,7 +2078,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_resources',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2089,7 +2089,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_robolectric',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2100,7 +2100,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_sandbox',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2111,7 +2111,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadowapi',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2122,7 +2122,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_framework',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2133,7 +2133,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_multidex',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2144,7 +2144,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_playservices',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2155,7 +2155,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_utils',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
@ -2166,7 +2166,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_deps/libs/org_robolectric_utils_reflector',
|
||||
'version': 'version:2@4.7.3.cr1',
|
||||
'version': 'version:2@4.8.1.cr1',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android',
|
||||
|
735
third_party/libwebrtc/README.moz-ff-commit
vendored
735
third_party/libwebrtc/README.moz-ff-commit
vendored
@ -16302,3 +16302,738 @@ dc5cf31cad
|
||||
# MOZ_LIBWEBRTC_SRC=/home/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
42be4ae879
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
9804aa5f6a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1031a4f54c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
32632a80e3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
de4fd2f9ef
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
15087b2137
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
8bacdb5cb4
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1e3ab4878f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
082d270b31
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a5cc0accfb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f012bfaf96
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6b9302eb59
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
08492a1990
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f8e91dfdf4
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7e8299b62e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
eeb79b834d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
98bfd99151
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1985c0ab8f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
8c8445cd9c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
06fefc9dba
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3fada3563a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
82c29716c0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5edefa87f7
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
fc22dfa727
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ed6b586b62
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
06a6f3f818
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
491e4e06aa
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
8743db9865
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d460c31309
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e768606729
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7494da36e5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5793ed8ff9
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a3f2e72008
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6e7c2685e3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
93b107d0f0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
575a3cbbf5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
cbe64b5e49
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
16ddaa71c7
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
fc67b455e6
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
808a8fc29e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
23370f22c1
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
300a230f16
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6f24817158
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
21e0706ddf
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2f1a4370d5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1fa87c44cb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
275e2683b3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
82f359e45d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5505bb1aaf
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
0c1a934e26
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a16786b87f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
246a6ee2eb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a13b048870
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
684e241323
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
eb8813b847
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
43b15c3fc0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3f21ba68bc
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a1aedc0c00
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1b1764ce1f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d481e2935a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e1c893530d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
195b7ded15
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f4d8ce5ad0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
0832e3260d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a4a95d8c3d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
147cff0ad5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d6e861da8b
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2307f534ca
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
337cfc63b1
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d10b2b6560
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
bf607e2564
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
496ad52cb2
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1e589eb77f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ca85194e40
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5e13d0599c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
185f10c082
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6397fb4f6c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
175d77ce77
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a204ad210d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
72bc2e24cc
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
dfc4d81fd3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2189415be3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
47be1493b6
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
67acb91599
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2d20d64cb0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
85bb04c7ba
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
96191f8e68
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5fbe42a0b3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
4c269322d6
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d2209256ab
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
47114f25e3
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
70ed471836
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
07eaddf939
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
73f0c21640
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
9582f7548c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
da2afbd70c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3bd444ffdb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
821b92a66e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2ed6fc2217
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
cc76c567ab
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
76f17a146f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
39ff241eac
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e644a4bde0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b0a57d8e61
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
57a7c2fece
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1943f3e9fa
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5bb566cf1e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a0e090ff5a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
043a80320c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7ed05c00bb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e94b175c42
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
da6291e85d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
15b2ca7e77
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3bfafb5cab
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
cfe1ab7ed2
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3900f21702
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
43570da849
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c9734b75f6
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d60aca679e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2bb8306b40
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
818163b939
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
9801a93b08
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1edeb92046
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f8542b8c35
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1c51ec4d74
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f449af8dd9
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
48027d7bc5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
74f9a6d30f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
83f62cbfbc
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
52701781b9
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
9ee752aefb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
9e2f0c2e26
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c0ce454868
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3b205da7e4
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b38d2c35d5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
39ae69690e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7f0a7acb0a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
980ad0cd64
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
46dc5958d9
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e488a87753
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
140f1720a2
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
16bd9435d0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
39c90e08f9
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7fbab87b60
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
382a1528ef
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
61deb0be81
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
39265e64ac
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
9d8fdc7bf7
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
53cc9adfe2
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ab5876a8ab
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ae73290a0d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
50ece56466
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b55a90678d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
5e1605754e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6af2ac41ac
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1e688612cc
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
4317b02f66
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c06c0cfa52
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
fb8641c4e6
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ef4a2cfc45
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e04d0fa1b2
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e2d829cf77
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e519f38eaa
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
12053ec64a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b787e26369
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6c32480afa
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f0ab4ba26e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a75eb43e99
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
71434ae614
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ea20e95cdc
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
61ebb8f1cb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b5353a4bd4
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ce081ca649
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c2b1e53923
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7d9f0dc40f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
166ef2788a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b8c8d0b431
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
afba20a40d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b69b81944c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
85a126ec5d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ae4a832730
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
949530e6aa
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1856b2ce71
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
dfb9e8b02c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
57574ea577
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
66d20c487d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
cc903d99bd
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6f1c84705f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2aaef45876
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7dc5e11666
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2e809365d7
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c1751f4dbe
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ae1e69bdd5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
0b73372a7e
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3afe6331fb
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
24a8e0d161
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
2f764dd53d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
48ac38ec9b
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
875c9d357b
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1c5f317e17
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ab6233708c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e1bd833f9d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
93fd55a030
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
8810a93ade
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c3cfa5f123
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7cbd8dee7b
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f37b0016c5
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
476f18d2a4
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f4f22872d0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
0931599e14
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
cca884d1cc
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
0cf140d720
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
94b3b5e341
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
13b9f81b23
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
f3592cb2a2
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
211ecb445f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
214cab5727
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
29d7292a34
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
dddf4e116f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c2d64a185d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
723f19d230
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
15b464deaf
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e51918f9ce
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
3d38cd3c41
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6df49b9d01
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
88fa60357d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
85b40f0021
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
b9201b0ef4
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7103e7085f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
c48f9ef354
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
de7ae5755b
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
dc0911bd37
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6ba4b63f3a
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
ad4a207693
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
780e2e356f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
02b5f3c9c1
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
fb5fc4307d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
a535ee664c
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
e7280c314d
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
7aaeb5a270
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
d3ff606f4f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
cefe4777a0
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
860ad5321f
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
1cdcbe12e8
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
6ced79beec
|
||||
# MOZ_LIBWEBRTC_SRC=/Users/mfroman/git-checkouts/moz-libwebrtc MOZ_LIBWEBRTC_COMMIT=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
|
||||
# base of lastest vendoring
|
||||
17f085c1d7
|
||||
|
490
third_party/libwebrtc/README.mozilla
vendored
490
third_party/libwebrtc/README.mozilla
vendored
@ -10890,3 +10890,493 @@ libwebrtc updated from /home/mfroman/git-checkouts/moz-libwebrtc commit mozpatch
|
||||
libwebrtc updated from /home/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-10-24T20:33:33.244563.
|
||||
# python3 vendor-libwebrtc.py --from-local /home/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /home/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-10-24T23:28:02.342378.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:32:58.816222.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:33:53.021488.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:36:17.503604.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:37:10.239291.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:38:03.001460.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:38:56.031785.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:39:48.931730.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:40:41.931954.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:41:50.693574.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:42:43.137529.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:44:00.950359.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:44:53.007544.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:45:44.577911.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:46:36.127446.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:47:29.119797.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:48:21.012759.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:49:12.399809.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:50:04.889828.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:50:56.754637.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:51:48.502371.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:52:41.322569.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:53:58.599369.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:54:50.356746.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:55:42.445943.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:56:35.903270.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:57:27.363099.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:58:20.051173.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T22:59:16.981513.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:00:11.783738.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:01:04.729626.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:01:59.361226.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:02:53.194466.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:03:46.084845.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:04:51.272864.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:09:28.975271.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:10:21.863906.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:11:14.081686.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:12:06.512928.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:12:58.792169.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:14:16.851313.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:15:10.409095.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:19:43.480087.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:20:35.991485.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:21:27.911988.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:22:20.714084.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:23:49.126540.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:24:41.814202.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:25:33.730597.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:26:27.104872.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:27:46.379438.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:28:39.149304.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:29:31.165869.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:30:23.079684.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:31:15.261926.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:32:08.075234.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:33:12.115226.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:34:04.989523.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:34:57.550475.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:35:50.230206.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:36:42.886586.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:38:10.039466.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:39:01.951531.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:39:55.826767.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:40:48.933914.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:41:41.018651.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:42:33.379773.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:43:51.780849.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:44:44.839515.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:45:38.543067.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:46:30.981855.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:47:49.611240.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-17T23:48:42.991936.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:01:13.742182.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:02:33.815418.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:03:28.047456.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:15:34.855361.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:16:28.977711.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:17:21.895293.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:18:25.746473.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:19:44.510881.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:20:36.919864.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:21:29.615497.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:22:21.963239.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:23:13.961403.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:24:06.930488.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:24:59.180607.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T00:26:34.960581.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:40:47.102702.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:42:08.931062.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:43:02.346228.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:43:55.508977.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:44:48.098477.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:45:52.893315.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:47:02.867173.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:47:55.876364.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:48:48.397043.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:50:18.145000.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:51:28.055266.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:52:21.875418.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:53:14.702091.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:54:08.302797.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T17:55:01.621161.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:07:52.015370.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:14:32.203178.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:15:27.020466.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:16:22.439805.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:17:15.981946.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:20:03.590870.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:23:18.624095.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:24:13.580754.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:25:08.034494.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:26:00.714710.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:26:54.340374.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:27:47.213314.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:31:57.131045.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:46:44.216684.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:47:39.054161.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:48:32.461256.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:49:23.882394.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:50:16.897398.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:51:09.210949.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:52:02.858125.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T18:52:56.075299.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T20:44:42.967820.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T20:49:37.658223.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T20:50:29.048079.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T21:00:55.088025.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T21:01:47.029129.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T21:02:40.062327.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T21:03:31.993555.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T21:04:53.483324.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T21:05:46.109422.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:02:37.475502.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:03:29.865173.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:04:24.411920.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:08:58.042084.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:09:49.596392.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:22:34.985182.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:23:29.051674.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:28:01.677535.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:28:54.472177.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:29:45.939840.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:30:38.192190.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:31:31.682970.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:32:24.101422.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:33:16.042921.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:43:06.985710.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:44:43.230051.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:45:35.738035.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-18T22:46:27.906101.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:42:02.097838.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:42:56.155767.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:43:49.055717.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:44:40.105568.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:45:31.695399.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:46:23.689695.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:47:17.090522.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:48:08.543426.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:48:59.930316.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:53:13.426466.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T17:54:06.006773.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:03:20.961443.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:04:41.143906.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:05:34.309146.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:06:51.979413.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:07:44.573234.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:08:36.015314.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:09:28.902710.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:10:20.955306.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:11:12.942739.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:12:04.962003.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:12:57.595436.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:13:50.014788.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:14:42.106551.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:15:34.798550.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:16:26.591261.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:17:20.495976.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:18:14.103981.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:19:06.742797.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:19:58.983468.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:20:52.989395.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:21:46.739314.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:22:40.819822.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:23:33.046683.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T18:24:25.171765.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:03:47.735786.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:05:09.735472.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:06:02.917759.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:07:22.256770.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:08:14.712735.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:15:45.161639.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:16:38.868530.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:17:31.620159.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:18:23.143410.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:19:14.709953.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:20:08.550029.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:21:01.967695.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:22:11.791368.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:23:06.001357.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:38:42.644287.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:39:36.778952.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:45:15.124349.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:46:06.876816.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:46:58.431425.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:47:49.966986.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T20:48:41.922392.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:05:39.851351.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:10:19.058320.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:11:38.629750.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:12:31.621101.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:13:24.399144.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:17:57.158700.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:18:48.600197.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:30:30.166881.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:31:49.963108.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:33:10.403115.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:36:25.014249.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:41:00.008074.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:41:53.119507.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:42:46.442850.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:43:40.167241.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:45:01.499377.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:46:22.765244.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:47:15.394455.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:48:08.278799.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:48:59.982726.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:49:52.813505.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:51:15.122316.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-19T21:52:25.190270.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T16:58:56.239418.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T16:59:52.120233.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:01:12.729055.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:02:33.910214.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:03:54.047294.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:04:49.991584.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:05:42.935918.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:06:35.523963.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T17:07:28.949612.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T21:38:37.184207.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T23:30:46.074976.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T23:31:44.072500.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T23:34:53.214517.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T23:35:47.565456.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T23:36:40.664350.
|
||||
# python3 vendor-libwebrtc.py --from-local /Users/mfroman/git-checkouts/moz-libwebrtc --commit mozpatches libwebrtc
|
||||
libwebrtc updated from /Users/mfroman/git-checkouts/moz-libwebrtc commit mozpatches on 2022-11-20T23:37:32.812294.
|
||||
|
2
third_party/libwebrtc/api/BUILD.gn
vendored
2
third_party/libwebrtc/api/BUILD.gn
vendored
@ -347,6 +347,7 @@ rtc_source_set("async_dns_resolver") {
|
||||
visibility = [ "*" ]
|
||||
sources = [ "async_dns_resolver.h" ]
|
||||
deps = [
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:socket_address",
|
||||
"../rtc_base/system:rtc_export",
|
||||
]
|
||||
@ -535,6 +536,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") {
|
||||
"../rtc_base:rtc_base",
|
||||
"../rtc_base:stringutils",
|
||||
"../rtc_base:threading",
|
||||
"../test:fileutils",
|
||||
"audio:audio_mixer_api",
|
||||
"rtc_event_log",
|
||||
"task_queue",
|
||||
|
13
third_party/libwebrtc/api/async_dns_resolver.h
vendored
13
third_party/libwebrtc/api/async_dns_resolver.h
vendored
@ -14,6 +14,7 @@
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/socket_address.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
|
||||
@ -63,6 +64,10 @@ class RTC_EXPORT AsyncDnsResolverInterface {
|
||||
// Start address resolution of the hostname in `addr`.
|
||||
virtual void Start(const rtc::SocketAddress& addr,
|
||||
std::function<void()> callback) = 0;
|
||||
// Start address resolution of the hostname in `addr` matching `family`.
|
||||
virtual void Start(const rtc::SocketAddress& addr,
|
||||
int family,
|
||||
std::function<void()> callback) = 0;
|
||||
virtual const AsyncDnsResolverResult& result() const = 0;
|
||||
};
|
||||
|
||||
@ -79,6 +84,14 @@ class AsyncDnsResolverFactoryInterface {
|
||||
virtual std::unique_ptr<webrtc::AsyncDnsResolverInterface> CreateAndResolve(
|
||||
const rtc::SocketAddress& addr,
|
||||
std::function<void()> callback) = 0;
|
||||
// Creates an AsyncDnsResolver and starts resolving the name to an address
|
||||
// matching the specified family. The callback will be called when resolution
|
||||
// is finished. The callback will be called on the sequence that the caller
|
||||
// runs on.
|
||||
virtual std::unique_ptr<webrtc::AsyncDnsResolverInterface> CreateAndResolve(
|
||||
const rtc::SocketAddress& addr,
|
||||
int family,
|
||||
std::function<void()> callback) = 0;
|
||||
// Creates an AsyncDnsResolver and does not start it.
|
||||
// For backwards compatibility, will be deprecated and removed.
|
||||
// One has to do a separate Start() call on the
|
||||
|
102
third_party/libwebrtc/api/field_trials_unittest.cc
vendored
102
third_party/libwebrtc/api/field_trials_unittest.cc
vendored
@ -10,8 +10,11 @@
|
||||
|
||||
#include "api/field_trials.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "api/transport/field_trial_based_config.h"
|
||||
#include "system_wrappers/include/field_trial.h"
|
||||
#include "test/gmock.h"
|
||||
#include "test/gtest.h"
|
||||
|
||||
#if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
@ -19,67 +22,88 @@
|
||||
#endif // GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
|
||||
TEST(FieldTrials, EmptyString) {
|
||||
using ::testing::NotNull;
|
||||
using ::webrtc::field_trial::InitFieldTrialsFromString;
|
||||
|
||||
class FieldTrialsTest : public testing::Test {
|
||||
protected:
|
||||
FieldTrialsTest() {
|
||||
// Make sure global state is consistent between test runs.
|
||||
InitFieldTrialsFromString(nullptr);
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(FieldTrialsTest, EmptyStringHasNoEffect) {
|
||||
FieldTrials f("");
|
||||
EXPECT_FALSE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_FALSE(f.IsDisabled("MyCoolTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, EnableDisable) {
|
||||
FieldTrials f("MyCoolTrial/Enabled/MyUncoolTrial/Disabled/");
|
||||
TEST_F(FieldTrialsTest, EnabledDisabledMustBeFirstInValue) {
|
||||
FieldTrials f(
|
||||
"MyCoolTrial/EnabledFoo/"
|
||||
"MyUncoolTrial/DisabledBar/"
|
||||
"AnotherTrial/BazEnabled/");
|
||||
EXPECT_TRUE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(f.IsDisabled("MyUncoolTrial"));
|
||||
EXPECT_FALSE(f.IsEnabled("AnotherTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, SetGlobalStringAndReadFromFieldTrial) {
|
||||
const char* s = "MyCoolTrial/Enabled/MyUncoolTrial/Disabled/";
|
||||
webrtc::field_trial::InitFieldTrialsFromString(s);
|
||||
FieldTrialBasedConfig f;
|
||||
EXPECT_TRUE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(f.IsDisabled("MyUncoolTrial"));
|
||||
TEST_F(FieldTrialsTest, FieldTrialsDoesNotReadGlobalString) {
|
||||
static constexpr char s[] = "MyCoolTrial/Enabled/MyUncoolTrial/Disabled/";
|
||||
InitFieldTrialsFromString(s);
|
||||
FieldTrials f("");
|
||||
EXPECT_FALSE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_FALSE(f.IsDisabled("MyUncoolTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, SetFieldTrialAndReadFromGlobalString) {
|
||||
TEST_F(FieldTrialsTest, FieldTrialsWritesGlobalString) {
|
||||
FieldTrials f("MyCoolTrial/Enabled/MyUncoolTrial/Disabled/");
|
||||
EXPECT_TRUE(webrtc::field_trial::IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(webrtc::field_trial::IsDisabled("MyUncoolTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, RestoresGlobalString) {
|
||||
const char* s = "SomeString/Enabled/";
|
||||
webrtc::field_trial::InitFieldTrialsFromString(s);
|
||||
TEST_F(FieldTrialsTest, FieldTrialsRestoresGlobalStringAfterDestruction) {
|
||||
static constexpr char s[] = "SomeString/Enabled/";
|
||||
InitFieldTrialsFromString(s);
|
||||
{
|
||||
FieldTrials f("SomeOtherString/Enabled/");
|
||||
EXPECT_EQ(std::string("SomeOtherString/Enabled/"),
|
||||
webrtc::field_trial::GetFieldTrialString());
|
||||
EXPECT_STREQ(webrtc::field_trial::GetFieldTrialString(),
|
||||
"SomeOtherString/Enabled/");
|
||||
}
|
||||
EXPECT_EQ(s, webrtc::field_trial::GetFieldTrialString());
|
||||
EXPECT_STREQ(webrtc::field_trial::GetFieldTrialString(), s);
|
||||
}
|
||||
|
||||
#if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
TEST(FieldTrials, OnlyOneInstance) {
|
||||
TEST_F(FieldTrialsTest, FieldTrialsDoesNotSupportSimultaneousInstances) {
|
||||
FieldTrials f("SomeString/Enabled/");
|
||||
RTC_EXPECT_DEATH(FieldTrials("SomeOtherString/Enabled/").Lookup("Whatever"),
|
||||
"Only one instance");
|
||||
}
|
||||
#endif // GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
|
||||
TEST(FieldTrials, SequentialInstances) {
|
||||
TEST_F(FieldTrialsTest, FieldTrialsSupportsSeparateInstances) {
|
||||
{ FieldTrials f("SomeString/Enabled/"); }
|
||||
{ FieldTrials f("SomeOtherString/Enabled/"); }
|
||||
}
|
||||
|
||||
TEST(FieldTrials, NoGlobals) {
|
||||
auto f1 = FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
EXPECT_TRUE(f1);
|
||||
TEST_F(FieldTrialsTest, NonGlobalFieldTrialsInstanceDoesNotModifyGlobalString) {
|
||||
std::unique_ptr<FieldTrials> f =
|
||||
FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
ASSERT_THAT(f, NotNull());
|
||||
EXPECT_TRUE(f->IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(webrtc::field_trial::IsEnabled("SomeString"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, SeveralNoGlobals) {
|
||||
auto f1 = FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
auto f2 = FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_TRUE(f1);
|
||||
ASSERT_TRUE(f2);
|
||||
TEST_F(FieldTrialsTest, NonGlobalFieldTrialsSupportSimultaneousInstances) {
|
||||
std::unique_ptr<FieldTrials> f1 =
|
||||
FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
std::unique_ptr<FieldTrials> f2 =
|
||||
FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_THAT(f1, NotNull());
|
||||
ASSERT_THAT(f2, NotNull());
|
||||
|
||||
EXPECT_TRUE(f1->IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(f1->IsEnabled("SomeOtherString"));
|
||||
@ -88,16 +112,26 @@ TEST(FieldTrials, SeveralNoGlobals) {
|
||||
EXPECT_TRUE(f2->IsEnabled("SomeOtherString"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, GlobalAndNoGlobals) {
|
||||
FieldTrials f0("SomeString/Enabled/");
|
||||
auto f1 = FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_TRUE(f1);
|
||||
TEST_F(FieldTrialsTest, GlobalAndNonGlobalFieldTrialsAreDisjoint) {
|
||||
FieldTrials f1("SomeString/Enabled/");
|
||||
std::unique_ptr<FieldTrials> f2 =
|
||||
FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_THAT(f2, NotNull());
|
||||
|
||||
EXPECT_TRUE(f0.IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(f0.IsEnabled("SomeOtherString"));
|
||||
EXPECT_TRUE(f1.IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(f1.IsEnabled("SomeOtherString"));
|
||||
|
||||
EXPECT_FALSE(f1->IsEnabled("SomeString"));
|
||||
EXPECT_TRUE(f1->IsEnabled("SomeOtherString"));
|
||||
EXPECT_FALSE(f2->IsEnabled("SomeString"));
|
||||
EXPECT_TRUE(f2->IsEnabled("SomeOtherString"));
|
||||
}
|
||||
|
||||
TEST_F(FieldTrialsTest, FieldTrialBasedConfigReadsGlobalString) {
|
||||
static constexpr char s[] = "MyCoolTrial/Enabled/MyUncoolTrial/Disabled/";
|
||||
InitFieldTrialsFromString(s);
|
||||
FieldTrialBasedConfig f;
|
||||
EXPECT_TRUE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(f.IsDisabled("MyUncoolTrial"));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace webrtc
|
||||
|
@ -37,7 +37,7 @@ TEST(RtpPacketInfoTest, Ssrc) {
|
||||
rhs = RtpPacketInfo();
|
||||
EXPECT_NE(rhs.ssrc(), value);
|
||||
|
||||
rhs = RtpPacketInfo(value, {}, {}, {}, {}, Timestamp::Millis(0));
|
||||
rhs = RtpPacketInfo(value, {}, {}, {}, {}, Timestamp::Zero());
|
||||
EXPECT_EQ(rhs.ssrc(), value);
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ TEST(RtpPacketInfoTest, Csrcs) {
|
||||
rhs = RtpPacketInfo();
|
||||
EXPECT_NE(rhs.csrcs(), value);
|
||||
|
||||
rhs = RtpPacketInfo({}, value, {}, {}, {}, Timestamp::Millis(0));
|
||||
rhs = RtpPacketInfo({}, value, {}, {}, {}, Timestamp::Zero());
|
||||
EXPECT_EQ(rhs.csrcs(), value);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ TEST(RtpPacketInfoTest, RtpTimestamp) {
|
||||
rhs = RtpPacketInfo();
|
||||
EXPECT_NE(rhs.rtp_timestamp(), value);
|
||||
|
||||
rhs = RtpPacketInfo({}, {}, value, {}, {}, Timestamp::Millis(0));
|
||||
rhs = RtpPacketInfo({}, {}, value, {}, {}, Timestamp::Zero());
|
||||
EXPECT_EQ(rhs.rtp_timestamp(), value);
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ TEST(RtpPacketInfoTest, AudioLevel) {
|
||||
rhs = RtpPacketInfo();
|
||||
EXPECT_NE(rhs.audio_level(), value);
|
||||
|
||||
rhs = RtpPacketInfo({}, {}, {}, value, {}, Timestamp::Millis(0));
|
||||
rhs = RtpPacketInfo({}, {}, {}, value, {}, Timestamp::Zero());
|
||||
EXPECT_EQ(rhs.audio_level(), value);
|
||||
}
|
||||
|
||||
@ -145,7 +145,7 @@ TEST(RtpPacketInfoTest, AbsoluteCaptureTime) {
|
||||
rhs = RtpPacketInfo();
|
||||
EXPECT_NE(rhs.absolute_capture_time(), value);
|
||||
|
||||
rhs = RtpPacketInfo({}, {}, {}, {}, value, Timestamp::Millis(0));
|
||||
rhs = RtpPacketInfo({}, {}, {}, {}, value, Timestamp::Zero());
|
||||
EXPECT_EQ(rhs.absolute_capture_time(), value);
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ TEST(RtpPacketInfoTest, LocalCaptureClockOffset) {
|
||||
|
||||
// Default local capture clock offset is null.
|
||||
rhs = RtpPacketInfo({}, {}, {}, {}, AbsoluteCaptureTime{12, 34},
|
||||
Timestamp::Millis(0));
|
||||
Timestamp::Zero());
|
||||
EXPECT_EQ(rhs.local_capture_clock_offset(), absl::nullopt);
|
||||
}
|
||||
|
||||
|
15
third_party/libwebrtc/api/sequence_checker.h
vendored
15
third_party/libwebrtc/api/sequence_checker.h
vendored
@ -107,10 +107,15 @@ class RTC_LOCKABLE SequenceChecker
|
||||
#define RTC_RUN_ON(x) \
|
||||
RTC_THREAD_ANNOTATION_ATTRIBUTE__(exclusive_locks_required(x))
|
||||
|
||||
#define RTC_DCHECK_RUN_ON(x) \
|
||||
webrtc::webrtc_sequence_checker_internal::SequenceCheckerScope \
|
||||
seq_check_scope(x); \
|
||||
RTC_DCHECK((x)->IsCurrent()) \
|
||||
<< webrtc::webrtc_sequence_checker_internal::ExpectationToString(x)
|
||||
// Checks current code is running on the desired sequence.
|
||||
//
|
||||
// First statement validates it is running on the sequence `x`.
|
||||
// Second statement annotates for the thread safety analyzer the check was done.
|
||||
// Such annotation has to be attached to a function, and that function has to be
|
||||
// called. Thus current implementation creates a noop lambda and calls it.
|
||||
#define RTC_DCHECK_RUN_ON(x) \
|
||||
RTC_DCHECK((x)->IsCurrent()) \
|
||||
<< webrtc::webrtc_sequence_checker_internal::ExpectationToString(x); \
|
||||
[]() RTC_ASSERT_EXCLUSIVE_LOCK(x) {}()
|
||||
|
||||
#endif // API_SEQUENCE_CHECKER_H_
|
||||
|
@ -76,20 +76,16 @@ TEST(SequenceCheckerTest, DetachFromThreadAndUseOnTaskQueue) {
|
||||
SequenceChecker sequence_checker;
|
||||
sequence_checker.Detach();
|
||||
TaskQueueForTest queue;
|
||||
queue.SendTask([&] { EXPECT_TRUE(sequence_checker.IsCurrent()); },
|
||||
RTC_FROM_HERE);
|
||||
queue.SendTask([&] { EXPECT_TRUE(sequence_checker.IsCurrent()); });
|
||||
}
|
||||
|
||||
TEST(SequenceCheckerTest, DetachFromTaskQueueAndUseOnThread) {
|
||||
TaskQueueForTest queue;
|
||||
queue.SendTask(
|
||||
[] {
|
||||
SequenceChecker sequence_checker;
|
||||
sequence_checker.Detach();
|
||||
RunOnDifferentThread(
|
||||
[&] { EXPECT_TRUE(sequence_checker.IsCurrent()); });
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
queue.SendTask([] {
|
||||
SequenceChecker sequence_checker;
|
||||
sequence_checker.Detach();
|
||||
RunOnDifferentThread([&] { EXPECT_TRUE(sequence_checker.IsCurrent()); });
|
||||
});
|
||||
}
|
||||
|
||||
TEST(SequenceCheckerTest, MethodNotAllowedOnDifferentThreadInDebug) {
|
||||
@ -102,8 +98,7 @@ TEST(SequenceCheckerTest, MethodNotAllowedOnDifferentTaskQueueInDebug) {
|
||||
SequenceChecker sequence_checker;
|
||||
TaskQueueForTest queue;
|
||||
queue.SendTask(
|
||||
[&] { EXPECT_EQ(sequence_checker.IsCurrent(), !RTC_DCHECK_IS_ON); },
|
||||
RTC_FROM_HERE);
|
||||
[&] { EXPECT_EQ(sequence_checker.IsCurrent(), !RTC_DCHECK_IS_ON); });
|
||||
}
|
||||
|
||||
TEST(SequenceCheckerTest, DetachFromTaskQueueInDebug) {
|
||||
@ -111,15 +106,13 @@ TEST(SequenceCheckerTest, DetachFromTaskQueueInDebug) {
|
||||
sequence_checker.Detach();
|
||||
|
||||
TaskQueueForTest queue1;
|
||||
queue1.SendTask([&] { EXPECT_TRUE(sequence_checker.IsCurrent()); },
|
||||
RTC_FROM_HERE);
|
||||
queue1.SendTask([&] { EXPECT_TRUE(sequence_checker.IsCurrent()); });
|
||||
|
||||
// IsCurrent should return false in debug builds after moving to
|
||||
// another task queue.
|
||||
TaskQueueForTest queue2;
|
||||
queue2.SendTask(
|
||||
[&] { EXPECT_EQ(sequence_checker.IsCurrent(), !RTC_DCHECK_IS_ON); },
|
||||
RTC_FROM_HERE);
|
||||
[&] { EXPECT_EQ(sequence_checker.IsCurrent(), !RTC_DCHECK_IS_ON); });
|
||||
}
|
||||
|
||||
class TestAnnotations {
|
||||
@ -146,7 +139,7 @@ TEST(SequenceCheckerTest, TestAnnotations) {
|
||||
void TestAnnotationsOnWrongQueue() {
|
||||
TestAnnotations annotations;
|
||||
TaskQueueForTest queue;
|
||||
queue.SendTask([&] { annotations.ModifyTestVar(); }, RTC_FROM_HERE);
|
||||
queue.SendTask([&] { annotations.ModifyTestVar(); });
|
||||
}
|
||||
|
||||
#if RTC_DCHECK_IS_ON
|
||||
|
@ -545,6 +545,7 @@ class RTC_EXPORT RTCOutboundRTPStreamStats final : public RTCRTPStreamStats {
|
||||
RTCStatsMember<uint32_t> pli_count;
|
||||
RTCStatsMember<uint32_t> nack_count;
|
||||
RTCStatsMember<uint64_t> qp_sum;
|
||||
RTCStatsMember<bool> active;
|
||||
};
|
||||
|
||||
// https://w3c.github.io/webrtc-stats/#remoteinboundrtpstats-dict*
|
||||
|
22
third_party/libwebrtc/api/task_queue/BUILD.gn
vendored
22
third_party/libwebrtc/api/task_queue/BUILD.gn
vendored
@ -11,7 +11,6 @@ import("../../webrtc.gni")
|
||||
rtc_library("task_queue") {
|
||||
visibility = [ "*" ]
|
||||
public = [
|
||||
"queued_task.h",
|
||||
"task_queue_base.h",
|
||||
"task_queue_factory.h",
|
||||
]
|
||||
@ -106,15 +105,6 @@ rtc_library("default_task_queue_factory") {
|
||||
}
|
||||
}
|
||||
|
||||
rtc_source_set("to_queued_task") {
|
||||
visibility = [ "*" ]
|
||||
sources = [ "to_queued_task.h" ]
|
||||
deps = [
|
||||
":task_queue",
|
||||
"../../api/task_queue:pending_task_safety_flag",
|
||||
]
|
||||
}
|
||||
|
||||
rtc_library("pending_task_safety_flag") {
|
||||
visibility = [ "*" ]
|
||||
sources = [
|
||||
@ -142,23 +132,11 @@ if (rtc_include_tests) {
|
||||
]
|
||||
}
|
||||
|
||||
rtc_library("to_queued_task_unittests") {
|
||||
testonly = true
|
||||
sources = [ "to_queued_task_unittest.cc" ]
|
||||
deps = [
|
||||
":to_queued_task",
|
||||
"../../api/task_queue",
|
||||
"../../test:test_support",
|
||||
]
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
|
||||
}
|
||||
|
||||
rtc_library("pending_task_safety_flag_unittests") {
|
||||
testonly = true
|
||||
sources = [ "pending_task_safety_flag_unittest.cc" ]
|
||||
deps = [
|
||||
":pending_task_safety_flag",
|
||||
":to_queued_task",
|
||||
"../../rtc_base:logging",
|
||||
"../../rtc_base:rtc_event",
|
||||
"../../rtc_base:rtc_task_queue",
|
||||
|
@ -85,20 +85,16 @@ TEST(PendingTaskSafetyFlagTest, PendingTaskSuccess) {
|
||||
};
|
||||
|
||||
std::unique_ptr<Owner> owner;
|
||||
tq1.SendTask(
|
||||
[&owner]() {
|
||||
owner = std::make_unique<Owner>();
|
||||
EXPECT_FALSE(owner->stuff_done());
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
tq1.SendTask([&owner]() {
|
||||
owner = std::make_unique<Owner>();
|
||||
EXPECT_FALSE(owner->stuff_done());
|
||||
});
|
||||
ASSERT_TRUE(owner);
|
||||
tq2.SendTask([&owner]() { owner->DoStuff(); }, RTC_FROM_HERE);
|
||||
tq1.SendTask(
|
||||
[&owner]() {
|
||||
EXPECT_TRUE(owner->stuff_done());
|
||||
owner.reset();
|
||||
},
|
||||
RTC_FROM_HERE);
|
||||
tq2.SendTask([&owner]() { owner->DoStuff(); });
|
||||
tq1.SendTask([&owner]() {
|
||||
EXPECT_TRUE(owner->stuff_done());
|
||||
owner.reset();
|
||||
});
|
||||
ASSERT_FALSE(owner);
|
||||
}
|
||||
|
||||
@ -129,9 +125,9 @@ TEST(PendingTaskSafetyFlagTest, PendingTaskDropped) {
|
||||
|
||||
std::unique_ptr<Owner> owner;
|
||||
bool stuff_done = false;
|
||||
tq1.SendTask(
|
||||
[&owner, &stuff_done]() { owner = std::make_unique<Owner>(&stuff_done); },
|
||||
RTC_FROM_HERE);
|
||||
tq1.SendTask([&owner, &stuff_done]() {
|
||||
owner = std::make_unique<Owner>(&stuff_done);
|
||||
});
|
||||
ASSERT_TRUE(owner);
|
||||
// Queue up a task on tq1 that will execute before the 'DoStuff' task
|
||||
// can, and delete the `owner` before the 'stuff' task can execute.
|
||||
@ -142,7 +138,7 @@ TEST(PendingTaskSafetyFlagTest, PendingTaskDropped) {
|
||||
});
|
||||
|
||||
// Queue up a DoStuff...
|
||||
tq2.SendTask([&owner]() { owner->DoStuff(); }, RTC_FROM_HERE);
|
||||
tq2.SendTask([&owner]() { owner->DoStuff(); });
|
||||
|
||||
ASSERT_TRUE(owner);
|
||||
blocker.Set();
|
||||
@ -158,7 +154,7 @@ TEST(PendingTaskSafetyFlagTest, PendingTaskNotAliveInitialized) {
|
||||
|
||||
// Create a new flag that initially not `alive`.
|
||||
auto flag = PendingTaskSafetyFlag::CreateDetachedInactive();
|
||||
tq.SendTask([&flag]() { EXPECT_FALSE(flag->alive()); }, RTC_FROM_HERE);
|
||||
tq.SendTask([&flag]() { EXPECT_FALSE(flag->alive()); });
|
||||
|
||||
bool task_1_ran = false;
|
||||
bool task_2_ran = false;
|
||||
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Copyright 2018 The WebRTC Project Authors. All rights reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
#ifndef API_TASK_QUEUE_QUEUED_TASK_H_
|
||||
#define API_TASK_QUEUE_QUEUED_TASK_H_
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// Base interface for asynchronously executed tasks.
|
||||
// The interface basically consists of a single function, Run(), that executes
|
||||
// on the target queue. For more details see the Run() method and TaskQueue.
|
||||
class QueuedTask {
|
||||
public:
|
||||
virtual ~QueuedTask() = default;
|
||||
|
||||
// Main routine that will run when the task is executed on the desired queue.
|
||||
// The task should return `true` to indicate that it should be deleted or
|
||||
// `false` to indicate that the queue should consider ownership of the task
|
||||
// having been transferred. Returning `false` can be useful if a task has
|
||||
// re-posted itself to a different queue or is otherwise being re-used.
|
||||
virtual bool Run() = 0;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // API_TASK_QUEUE_QUEUED_TASK_H_
|
@ -79,69 +79,3 @@ TaskQueueBase::CurrentTaskQueueSetter::~CurrentTaskQueueSetter() {
|
||||
#else
|
||||
#error Unsupported platform
|
||||
#endif
|
||||
|
||||
// Functions to support transition from std::unique_ptr<QueuedTask>
|
||||
// representation of a task to absl::AnyInvocable<void() &&> representation. In
|
||||
// the base interface older and newer functions call each other. This way
|
||||
// TaskQueue would work when classes derived from TaskQueueBase implements
|
||||
// either old set of Post functions (before the transition) or new set of Post
|
||||
// functions. Thus callers of the interface can be updated independently of all
|
||||
// of the implementations of that TaskQueueBase interface.
|
||||
|
||||
// TODO(bugs.webrtc.org/14245): Delete these functions when transition is
|
||||
// complete.
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
class Task : public QueuedTask {
|
||||
public:
|
||||
explicit Task(absl::AnyInvocable<void() &&> task) : task_(std::move(task)) {}
|
||||
~Task() override = default;
|
||||
|
||||
bool Run() override {
|
||||
std::move(task_)();
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
absl::AnyInvocable<void() &&> task_;
|
||||
};
|
||||
|
||||
std::unique_ptr<QueuedTask> ToLegacy(absl::AnyInvocable<void() &&> task) {
|
||||
return std::make_unique<Task>(std::move(task));
|
||||
}
|
||||
|
||||
absl::AnyInvocable<void() &&> FromLegacy(std::unique_ptr<QueuedTask> task) {
|
||||
return [task = std::move(task)]() mutable {
|
||||
if (!task->Run()) {
|
||||
task.release();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void TaskQueueBase::PostTask(std::unique_ptr<QueuedTask> task) {
|
||||
PostTask(FromLegacy(std::move(task)));
|
||||
}
|
||||
|
||||
void TaskQueueBase::PostTask(absl::AnyInvocable<void() &&> task) {
|
||||
PostTask(ToLegacy(std::move(task)));
|
||||
}
|
||||
|
||||
void TaskQueueBase::PostDelayedTask(std::unique_ptr<QueuedTask> task,
|
||||
uint32_t milliseconds) {
|
||||
PostDelayedTask(FromLegacy(std::move(task)), TimeDelta::Millis(milliseconds));
|
||||
}
|
||||
|
||||
void TaskQueueBase::PostDelayedTask(absl::AnyInvocable<void() &&> task,
|
||||
TimeDelta delay) {
|
||||
PostDelayedTask(ToLegacy(std::move(task)), delay.ms());
|
||||
}
|
||||
|
||||
void TaskQueueBase::PostDelayedHighPrecisionTask(
|
||||
absl::AnyInvocable<void() &&> task,
|
||||
TimeDelta delay) {
|
||||
PostDelayedHighPrecisionTask(ToLegacy(std::move(task)), delay.ms());
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -14,7 +14,6 @@
|
||||
#include <utility>
|
||||
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "api/task_queue/queued_task.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
#include "rtc_base/thread_annotations.h"
|
||||
@ -57,14 +56,7 @@ class RTC_LOCKABLE RTC_EXPORT TaskQueueBase {
|
||||
// This may vary from one implementation to the next so assumptions about
|
||||
// lifetimes of pending tasks should not be made.
|
||||
// May be called on any thread or task queue, including this task queue.
|
||||
// TODO(bugs.webrtc.org/14245): Make pure virtual when implemented in all
|
||||
// derived classes.
|
||||
virtual void PostTask(absl::AnyInvocable<void() &&> task);
|
||||
|
||||
// Deprecated, use PostTask variant above in new code.
|
||||
// TODO(bugs.webrtc.org/14245): Delete when all usage is updated to the
|
||||
// function above.
|
||||
virtual void PostTask(std::unique_ptr<QueuedTask> task);
|
||||
virtual void PostTask(absl::AnyInvocable<void() &&> task) = 0;
|
||||
|
||||
// Prefer PostDelayedTask() over PostDelayedHighPrecisionTask() whenever
|
||||
// possible.
|
||||
@ -89,16 +81,8 @@ class RTC_LOCKABLE RTC_EXPORT TaskQueueBase {
|
||||
// https://crbug.com/webrtc/13583 for more information.
|
||||
//
|
||||
// May be called on any thread or task queue, including this task queue.
|
||||
// TODO(bugs.webrtc.org/14245): Make pure virtual when implemented in all
|
||||
// derived classes.
|
||||
virtual void PostDelayedTask(absl::AnyInvocable<void() &&> task,
|
||||
TimeDelta delay);
|
||||
|
||||
// Deprecated, use PostDelayedTask variant above in new code.
|
||||
// TODO(bugs.webrtc.org/14245): Delete when all usage is updated to the
|
||||
// function above.
|
||||
virtual void PostDelayedTask(std::unique_ptr<QueuedTask> task,
|
||||
uint32_t milliseconds);
|
||||
TimeDelta delay) = 0;
|
||||
|
||||
// Prefer PostDelayedTask() over PostDelayedHighPrecisionTask() whenever
|
||||
// possible.
|
||||
@ -116,18 +100,8 @@ class RTC_LOCKABLE RTC_EXPORT TaskQueueBase {
|
||||
// battery, when the timer precision can be as poor as 15 ms.
|
||||
//
|
||||
// May be called on any thread or task queue, including this task queue.
|
||||
// TODO(bugs.webrtc.org/14245): Make pure virtual when implemented in all
|
||||
// derived classes.
|
||||
virtual void PostDelayedHighPrecisionTask(absl::AnyInvocable<void() &&> task,
|
||||
TimeDelta delay);
|
||||
|
||||
// Deprecated, use `PostDelayedHighPrecisionTask` variant above in new code.
|
||||
// TODO(bugs.webrtc.org/14245): Delete when all usage is updated to the
|
||||
// function above.
|
||||
virtual void PostDelayedHighPrecisionTask(std::unique_ptr<QueuedTask> task,
|
||||
uint32_t milliseconds) {
|
||||
PostDelayedTask(std::move(task), milliseconds);
|
||||
}
|
||||
TimeDelta delay) = 0;
|
||||
|
||||
// As specified by `precision`, calls either PostDelayedTask() or
|
||||
// PostDelayedHighPrecisionTask().
|
||||
@ -144,22 +118,6 @@ class RTC_LOCKABLE RTC_EXPORT TaskQueueBase {
|
||||
}
|
||||
}
|
||||
|
||||
// Deprecated, use `PostDelayedTaskWithPrecision` variant above in new code.
|
||||
// TODO(bugs.webrtc.org/14245): Delete when all usage is updated to the
|
||||
// function above.
|
||||
void PostDelayedTaskWithPrecision(DelayPrecision precision,
|
||||
std::unique_ptr<QueuedTask> task,
|
||||
uint32_t milliseconds) {
|
||||
switch (precision) {
|
||||
case DelayPrecision::kLow:
|
||||
PostDelayedTask(std::move(task), milliseconds);
|
||||
break;
|
||||
case DelayPrecision::kHigh:
|
||||
PostDelayedHighPrecisionTask(std::move(task), milliseconds);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns the task queue that is running the current thread.
|
||||
// Returns nullptr if this thread is not associated with any task queue.
|
||||
// May be called on any thread or task queue, including this task queue.
|
||||
|
@ -1,111 +0,0 @@
|
||||
/*
|
||||
* Copyright 2019 The WebRTC Project Authors. All rights reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#ifndef API_TASK_QUEUE_TO_QUEUED_TASK_H_
|
||||
#define API_TASK_QUEUE_TO_QUEUED_TASK_H_
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
|
||||
#include "api/task_queue/pending_task_safety_flag.h"
|
||||
#include "api/task_queue/queued_task.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace webrtc_new_closure_impl {
|
||||
// Simple implementation of QueuedTask for use with lambdas.
|
||||
template <typename Closure>
|
||||
class ClosureTask : public QueuedTask {
|
||||
public:
|
||||
explicit ClosureTask(Closure&& closure)
|
||||
: closure_(std::forward<Closure>(closure)) {}
|
||||
|
||||
private:
|
||||
bool Run() override {
|
||||
closure_();
|
||||
return true;
|
||||
}
|
||||
|
||||
typename std::decay<Closure>::type closure_;
|
||||
};
|
||||
|
||||
template <typename Closure>
|
||||
class SafetyClosureTask : public QueuedTask {
|
||||
public:
|
||||
explicit SafetyClosureTask(rtc::scoped_refptr<PendingTaskSafetyFlag> safety,
|
||||
Closure&& closure)
|
||||
: closure_(std::forward<Closure>(closure)),
|
||||
safety_flag_(std::move(safety)) {}
|
||||
|
||||
private:
|
||||
bool Run() override {
|
||||
if (safety_flag_->alive())
|
||||
closure_();
|
||||
return true;
|
||||
}
|
||||
|
||||
typename std::decay<Closure>::type closure_;
|
||||
rtc::scoped_refptr<PendingTaskSafetyFlag> safety_flag_;
|
||||
};
|
||||
|
||||
// Extends ClosureTask to also allow specifying cleanup code.
|
||||
// This is useful when using lambdas if guaranteeing cleanup, even if a task
|
||||
// was dropped (queue is too full), is required.
|
||||
template <typename Closure, typename Cleanup>
|
||||
class ClosureTaskWithCleanup : public ClosureTask<Closure> {
|
||||
public:
|
||||
ClosureTaskWithCleanup(Closure&& closure, Cleanup&& cleanup)
|
||||
: ClosureTask<Closure>(std::forward<Closure>(closure)),
|
||||
cleanup_(std::forward<Cleanup>(cleanup)) {}
|
||||
~ClosureTaskWithCleanup() override { cleanup_(); }
|
||||
|
||||
private:
|
||||
typename std::decay<Cleanup>::type cleanup_;
|
||||
};
|
||||
} // namespace webrtc_new_closure_impl
|
||||
|
||||
// Convenience function to construct closures that can be passed directly
|
||||
// to methods that support std::unique_ptr<QueuedTask> but not template
|
||||
// based parameters.
|
||||
template <typename Closure>
|
||||
std::unique_ptr<QueuedTask> ToQueuedTask(Closure&& closure) {
|
||||
return std::make_unique<webrtc_new_closure_impl::ClosureTask<Closure>>(
|
||||
std::forward<Closure>(closure));
|
||||
}
|
||||
|
||||
template <typename Closure>
|
||||
std::unique_ptr<QueuedTask> ToQueuedTask(
|
||||
rtc::scoped_refptr<PendingTaskSafetyFlag> safety,
|
||||
Closure&& closure) {
|
||||
return std::make_unique<webrtc_new_closure_impl::SafetyClosureTask<Closure>>(
|
||||
std::move(safety), std::forward<Closure>(closure));
|
||||
}
|
||||
|
||||
template <typename Closure>
|
||||
std::unique_ptr<QueuedTask> ToQueuedTask(const ScopedTaskSafety& safety,
|
||||
Closure&& closure) {
|
||||
return ToQueuedTask(safety.flag(), std::forward<Closure>(closure));
|
||||
}
|
||||
|
||||
template <typename Closure,
|
||||
typename Cleanup,
|
||||
typename std::enable_if<!std::is_same<
|
||||
typename std::remove_const<
|
||||
typename std::remove_reference<Closure>::type>::type,
|
||||
ScopedTaskSafety>::value>::type* = nullptr>
|
||||
std::unique_ptr<QueuedTask> ToQueuedTask(Closure&& closure, Cleanup&& cleanup) {
|
||||
return std::make_unique<
|
||||
webrtc_new_closure_impl::ClosureTaskWithCleanup<Closure, Cleanup>>(
|
||||
std::forward<Closure>(closure), std::forward<Cleanup>(cleanup));
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // API_TASK_QUEUE_TO_QUEUED_TASK_H_
|
@ -1,148 +0,0 @@
|
||||
/*
|
||||
* Copyright 2019 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "api/task_queue/to_queued_task.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "absl/memory/memory.h"
|
||||
#include "api/task_queue/queued_task.h"
|
||||
#include "test/gmock.h"
|
||||
#include "test/gtest.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
|
||||
using ::testing::InSequence;
|
||||
using ::testing::MockFunction;
|
||||
|
||||
void RunTask(std::unique_ptr<QueuedTask> task) {
|
||||
// Simulate how task queue suppose to run tasks.
|
||||
QueuedTask* raw = task.release();
|
||||
if (raw->Run())
|
||||
delete raw;
|
||||
}
|
||||
|
||||
TEST(ToQueuedTaskTest, AcceptsLambda) {
|
||||
bool run = false;
|
||||
std::unique_ptr<QueuedTask> task = ToQueuedTask([&run] { run = true; });
|
||||
EXPECT_FALSE(run);
|
||||
RunTask(std::move(task));
|
||||
EXPECT_TRUE(run);
|
||||
}
|
||||
|
||||
TEST(ToQueuedTaskTest, AcceptsCopyableClosure) {
|
||||
struct CopyableClosure {
|
||||
CopyableClosure(int* num_copies, int* num_moves, int* num_runs)
|
||||
: num_copies(num_copies), num_moves(num_moves), num_runs(num_runs) {}
|
||||
CopyableClosure(const CopyableClosure& other)
|
||||
: num_copies(other.num_copies),
|
||||
num_moves(other.num_moves),
|
||||
num_runs(other.num_runs) {
|
||||
++*num_copies;
|
||||
}
|
||||
CopyableClosure(CopyableClosure&& other)
|
||||
: num_copies(other.num_copies),
|
||||
num_moves(other.num_moves),
|
||||
num_runs(other.num_runs) {
|
||||
++*num_moves;
|
||||
}
|
||||
void operator()() { ++*num_runs; }
|
||||
|
||||
int* num_copies;
|
||||
int* num_moves;
|
||||
int* num_runs;
|
||||
};
|
||||
|
||||
int num_copies = 0;
|
||||
int num_moves = 0;
|
||||
int num_runs = 0;
|
||||
|
||||
std::unique_ptr<QueuedTask> task;
|
||||
{
|
||||
CopyableClosure closure(&num_copies, &num_moves, &num_runs);
|
||||
task = ToQueuedTask(closure);
|
||||
// Destroy closure to check with msan task has own copy.
|
||||
}
|
||||
EXPECT_EQ(num_copies, 1);
|
||||
EXPECT_EQ(num_runs, 0);
|
||||
RunTask(std::move(task));
|
||||
EXPECT_EQ(num_copies, 1);
|
||||
EXPECT_EQ(num_moves, 0);
|
||||
EXPECT_EQ(num_runs, 1);
|
||||
}
|
||||
|
||||
TEST(ToQueuedTaskTest, AcceptsMoveOnlyClosure) {
|
||||
struct MoveOnlyClosure {
|
||||
MoveOnlyClosure(int* num_moves, std::function<void()> trigger)
|
||||
: num_moves(num_moves), trigger(std::move(trigger)) {}
|
||||
MoveOnlyClosure(const MoveOnlyClosure&) = delete;
|
||||
MoveOnlyClosure(MoveOnlyClosure&& other)
|
||||
: num_moves(other.num_moves), trigger(std::move(other.trigger)) {
|
||||
++*num_moves;
|
||||
}
|
||||
void operator()() { trigger(); }
|
||||
|
||||
int* num_moves;
|
||||
std::function<void()> trigger;
|
||||
};
|
||||
|
||||
int num_moves = 0;
|
||||
MockFunction<void()> run;
|
||||
|
||||
auto task = ToQueuedTask(MoveOnlyClosure(&num_moves, run.AsStdFunction()));
|
||||
EXPECT_EQ(num_moves, 1);
|
||||
EXPECT_CALL(run, Call);
|
||||
RunTask(std::move(task));
|
||||
EXPECT_EQ(num_moves, 1);
|
||||
}
|
||||
|
||||
TEST(ToQueuedTaskTest, AcceptsMoveOnlyCleanup) {
|
||||
struct MoveOnlyClosure {
|
||||
MoveOnlyClosure(const MoveOnlyClosure&) = delete;
|
||||
MoveOnlyClosure(MoveOnlyClosure&&) = default;
|
||||
void operator()() { trigger(); }
|
||||
|
||||
std::function<void()> trigger;
|
||||
};
|
||||
|
||||
MockFunction<void()> run;
|
||||
MockFunction<void()> cleanup;
|
||||
|
||||
auto task = ToQueuedTask(MoveOnlyClosure{run.AsStdFunction()},
|
||||
MoveOnlyClosure{cleanup.AsStdFunction()});
|
||||
|
||||
// Expect run closure to complete before cleanup closure.
|
||||
InSequence in_sequence;
|
||||
EXPECT_CALL(run, Call);
|
||||
EXPECT_CALL(cleanup, Call);
|
||||
RunTask(std::move(task));
|
||||
}
|
||||
|
||||
TEST(ToQueuedTaskTest, PendingTaskSafetyFlag) {
|
||||
rtc::scoped_refptr<PendingTaskSafetyFlag> flag =
|
||||
PendingTaskSafetyFlag::Create();
|
||||
|
||||
int count = 0;
|
||||
// Create two identical tasks that increment the `count`.
|
||||
auto task1 = ToQueuedTask(flag, [&count]() { ++count; });
|
||||
auto task2 = ToQueuedTask(flag, [&count]() { ++count; });
|
||||
|
||||
EXPECT_EQ(0, count);
|
||||
RunTask(std::move(task1));
|
||||
EXPECT_EQ(1, count);
|
||||
flag->SetNotAlive();
|
||||
// Now task2 should actually not run.
|
||||
RunTask(std::move(task2));
|
||||
EXPECT_EQ(1, count);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace webrtc
|
@ -34,6 +34,10 @@ class MockAsyncDnsResolver : public AsyncDnsResolverInterface {
|
||||
Start,
|
||||
(const rtc::SocketAddress&, std::function<void()>),
|
||||
(override));
|
||||
MOCK_METHOD(void,
|
||||
Start,
|
||||
(const rtc::SocketAddress&, int family, std::function<void()>),
|
||||
(override));
|
||||
MOCK_METHOD(AsyncDnsResolverResult&, result, (), (const, override));
|
||||
};
|
||||
|
||||
@ -43,6 +47,10 @@ class MockAsyncDnsResolverFactory : public AsyncDnsResolverFactoryInterface {
|
||||
CreateAndResolve,
|
||||
(const rtc::SocketAddress&, std::function<void()>),
|
||||
(override));
|
||||
MOCK_METHOD(std::unique_ptr<webrtc::AsyncDnsResolverInterface>,
|
||||
CreateAndResolve,
|
||||
(const rtc::SocketAddress&, int, std::function<void()>),
|
||||
(override));
|
||||
MOCK_METHOD(std::unique_ptr<webrtc::AsyncDnsResolverInterface>,
|
||||
Create,
|
||||
(),
|
||||
|
@ -47,6 +47,9 @@ rtc_library("create_cross_traffic") {
|
||||
":network_emulation",
|
||||
"../..:network_emulation_manager_api",
|
||||
"../../../rtc_base/task_utils:repeating_task",
|
||||
#"../../../test/network:emulated_network",
|
||||
"../../../test/network:emulated_network",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "../../../test/network:emulated_network" ]
|
||||
}
|
||||
}
|
||||
|
@ -197,6 +197,11 @@ class NetworkEmulationManager {
|
||||
// Returns a mode in which underlying time controller operates.
|
||||
virtual TimeMode time_mode() const = 0;
|
||||
|
||||
// Creates an emulated network node, which represents ideal network with
|
||||
// unlimited capacity, no delay and no packet loss.
|
||||
EmulatedNetworkNode* CreateUnconstrainedEmulatedNode() {
|
||||
return CreateEmulatedNode(BuiltInNetworkBehaviorConfig());
|
||||
}
|
||||
// Creates an emulated network node, which represents single network in
|
||||
// the emulated network layer. Uses default implementation on network behavior
|
||||
// which can be configured with `config`. `random_seed` can be provided to
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "api/array_view.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/strings/string_builder.h"
|
||||
#include "test/testsupport/file_utils.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace webrtc_pc_e2e {
|
||||
@ -122,6 +123,58 @@ std::string PeerConnectionE2EQualityTestFixture::VideoSubscription::ToString()
|
||||
return out.Release();
|
||||
}
|
||||
|
||||
PeerConnectionE2EQualityTestFixture::VideoDumpOptions::VideoDumpOptions(
|
||||
absl::string_view output_directory,
|
||||
int sampling_modulo,
|
||||
bool export_frame_ids)
|
||||
: output_directory_(output_directory),
|
||||
sampling_modulo_(sampling_modulo),
|
||||
export_frame_ids_(export_frame_ids) {
|
||||
RTC_CHECK_GT(sampling_modulo, 0);
|
||||
}
|
||||
PeerConnectionE2EQualityTestFixture::VideoDumpOptions::VideoDumpOptions(
|
||||
absl::string_view output_directory,
|
||||
bool export_frame_ids)
|
||||
: VideoDumpOptions(output_directory,
|
||||
kDefaultSamplingModulo,
|
||||
export_frame_ids) {}
|
||||
|
||||
std::string
|
||||
PeerConnectionE2EQualityTestFixture::VideoDumpOptions::GetInputDumpFileName(
|
||||
absl::string_view stream_label) const {
|
||||
rtc::StringBuilder file_name;
|
||||
file_name << stream_label << ".y4m";
|
||||
return test::JoinFilename(output_directory_, file_name.Release());
|
||||
}
|
||||
|
||||
absl::optional<std::string> PeerConnectionE2EQualityTestFixture::
|
||||
VideoDumpOptions::GetInputFrameIdsDumpFileName(
|
||||
absl::string_view stream_label) const {
|
||||
if (!export_frame_ids_) {
|
||||
return absl::nullopt;
|
||||
}
|
||||
return GetInputDumpFileName(stream_label) + ".frame_ids.txt";
|
||||
}
|
||||
|
||||
std::string
|
||||
PeerConnectionE2EQualityTestFixture::VideoDumpOptions::GetOutputDumpFileName(
|
||||
absl::string_view stream_label,
|
||||
absl::string_view receiver) const {
|
||||
rtc::StringBuilder file_name;
|
||||
file_name << stream_label << "_" << receiver << ".y4m";
|
||||
return test::JoinFilename(output_directory_, file_name.Release());
|
||||
}
|
||||
|
||||
absl::optional<std::string> PeerConnectionE2EQualityTestFixture::
|
||||
VideoDumpOptions::GetOutputFrameIdsDumpFileName(
|
||||
absl::string_view stream_label,
|
||||
absl::string_view receiver) const {
|
||||
if (!export_frame_ids_) {
|
||||
return absl::nullopt;
|
||||
}
|
||||
return GetOutputDumpFileName(stream_label, receiver) + ".frame_ids.txt";
|
||||
}
|
||||
|
||||
PeerConnectionE2EQualityTestFixture::VideoConfig::VideoConfig(
|
||||
const VideoResolution& resolution)
|
||||
: width(resolution.width()),
|
||||
|
@ -217,6 +217,57 @@ class PeerConnectionE2EQualityTestFixture {
|
||||
Spec spec_ = Spec::kNone;
|
||||
};
|
||||
|
||||
class VideoDumpOptions {
|
||||
public:
|
||||
static constexpr int kDefaultSamplingModulo = 1;
|
||||
|
||||
// output_directory - the output directory where stream will be dumped. The
|
||||
// output files' names will be constructed as
|
||||
// <stream_name>_<receiver_name>.<extension> for output dumps and
|
||||
// <stream_name>.<extension> for input dumps. By default <extension> is
|
||||
// "y4m".
|
||||
// sampling_modulo - the module for the video frames to be dumped. Modulo
|
||||
// equals X means every Xth frame will be written to the dump file. The
|
||||
// value must be greater than 0. (Default: 1)
|
||||
// export_frame_ids - specifies if frame ids should be exported together
|
||||
// with content of the stream. If true, an output file with the same name as
|
||||
// video dump and suffix ".frame_ids.txt" will be created. It will contain
|
||||
// the frame ids in the same order as original frames in the output
|
||||
// file with stream content. File will contain one frame id per line.
|
||||
// (Default: false)
|
||||
explicit VideoDumpOptions(absl::string_view output_directory,
|
||||
int sampling_modulo = kDefaultSamplingModulo,
|
||||
bool export_frame_ids = false);
|
||||
VideoDumpOptions(absl::string_view output_directory, bool export_frame_ids);
|
||||
|
||||
VideoDumpOptions(const VideoDumpOptions&) = default;
|
||||
VideoDumpOptions& operator=(const VideoDumpOptions&) = default;
|
||||
VideoDumpOptions(VideoDumpOptions&&) = default;
|
||||
VideoDumpOptions& operator=(VideoDumpOptions&&) = default;
|
||||
|
||||
std::string output_directory() const { return output_directory_; }
|
||||
int sampling_modulo() const { return sampling_modulo_; }
|
||||
bool export_frame_ids() const { return export_frame_ids_; }
|
||||
|
||||
std::string GetInputDumpFileName(absl::string_view stream_label) const;
|
||||
// Returns file name for input frame ids dump if `export_frame_ids()` is
|
||||
// true, absl::nullopt otherwise.
|
||||
absl::optional<std::string> GetInputFrameIdsDumpFileName(
|
||||
absl::string_view stream_label) const;
|
||||
std::string GetOutputDumpFileName(absl::string_view stream_label,
|
||||
absl::string_view receiver) const;
|
||||
// Returns file name for output frame ids dump if `export_frame_ids()` is
|
||||
// true, absl::nullopt otherwise.
|
||||
absl::optional<std::string> GetOutputFrameIdsDumpFileName(
|
||||
absl::string_view stream_label,
|
||||
absl::string_view receiver) const;
|
||||
|
||||
private:
|
||||
std::string output_directory_;
|
||||
int sampling_modulo_ = 1;
|
||||
bool export_frame_ids_ = false;
|
||||
};
|
||||
|
||||
// Contains properties of single video stream.
|
||||
struct VideoConfig {
|
||||
explicit VideoConfig(const VideoResolution& resolution);
|
||||
@ -267,17 +318,24 @@ class PeerConnectionE2EQualityTestFixture {
|
||||
// each RtpEncodingParameters of RtpParameters of corresponding
|
||||
// RtpSenderInterface for this video stream.
|
||||
absl::optional<int> temporal_layers_count;
|
||||
// If specified the input stream will be also copied to specified file.
|
||||
// It is actually one of the test's output file, which contains copy of what
|
||||
// was captured during the test for this video stream on sender side.
|
||||
// It is useful when generator is used as input.
|
||||
// DEPRECATED: use input_dump_options instead. If specified the input stream
|
||||
// will be also copied to specified file. It is actually one of the test's
|
||||
// output file, which contains copy of what was captured during the test for
|
||||
// this video stream on sender side. It is useful when generator is used as
|
||||
// input.
|
||||
absl::optional<std::string> input_dump_file_name;
|
||||
// Used only if `input_dump_file_name` is set. Specifies the module for the
|
||||
// video frames to be dumped. Modulo equals X means every Xth frame will be
|
||||
// written to the dump file. The value must be greater than 0.
|
||||
// DEPRECATED: use input_dump_options instead. Used only if
|
||||
// `input_dump_file_name` is set. Specifies the module for the video frames
|
||||
// to be dumped. Modulo equals X means every Xth frame will be written to
|
||||
// the dump file. The value must be greater than 0.
|
||||
int input_dump_sampling_modulo = 1;
|
||||
// If specified this file will be used as output on the receiver side for
|
||||
// this stream.
|
||||
// If specified defines how input should be dumped. It is actually one of
|
||||
// the test's output file, which contains copy of what was captured during
|
||||
// the test for this video stream on sender side. It is useful when
|
||||
// generator is used as input.
|
||||
absl::optional<VideoDumpOptions> input_dump_options;
|
||||
// DEPRECATED: use output_dump_options instead. If specified this file will
|
||||
// be used as output on the receiver side for this stream.
|
||||
//
|
||||
// If multiple output streams will be produced by this stream (e.g. when the
|
||||
// stream represented by this `VideoConfig` is received by more than one
|
||||
@ -303,10 +361,15 @@ class PeerConnectionE2EQualityTestFixture {
|
||||
// The produced files contains what was rendered for this video stream on
|
||||
// receiver side.
|
||||
absl::optional<std::string> output_dump_file_name;
|
||||
// Used only if `output_dump_file_name` is set. Specifies the module for the
|
||||
// video frames to be dumped. Modulo equals X means every Xth frame will be
|
||||
// written to the dump file. The value must be greater than 0.
|
||||
// DEPRECATED: use output_dump_options instead. Used only if
|
||||
// `output_dump_file_name` is set. Specifies the module for the video frames
|
||||
// to be dumped. Modulo equals X means every Xth frame will be written to
|
||||
// the dump file. The value must be greater than 0.
|
||||
int output_dump_sampling_modulo = 1;
|
||||
// If specified defines how output should be dumped on the receiver side for
|
||||
// this stream. The produced files contain what was rendered for this video
|
||||
// stream on receiver side per each receiver.
|
||||
absl::optional<VideoDumpOptions> output_dump_options;
|
||||
// If set to true uses fixed frame rate while dumping output video to the
|
||||
// file. `fps` will be used as frame rate.
|
||||
bool output_dump_use_fixed_framerate = false;
|
||||
|
42
third_party/libwebrtc/api/video/BUILD.gn
vendored
42
third_party/libwebrtc/api/video/BUILD.gn
vendored
@ -74,12 +74,15 @@ rtc_library("video_frame") {
|
||||
"../../rtc_base:timeutils",
|
||||
"../../rtc_base/memory:aligned_malloc",
|
||||
"../../rtc_base/system:rtc_export",
|
||||
#"//third_party/libyuv",
|
||||
]
|
||||
include_dirs = [
|
||||
"/media/libyuv",
|
||||
"/media/libyuv/libyuv/include",
|
||||
"//third_party/libyuv",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "//third_party/libyuv" ]
|
||||
include_dirs = [
|
||||
"/media/libyuv",
|
||||
"/media/libyuv/libyuv/include",
|
||||
]
|
||||
}
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
||||
}
|
||||
|
||||
@ -106,12 +109,15 @@ rtc_library("video_frame_i010") {
|
||||
"../../rtc_base:checks",
|
||||
"../../rtc_base:refcount",
|
||||
"../../rtc_base/memory:aligned_malloc",
|
||||
#"//third_party/libyuv",
|
||||
]
|
||||
include_dirs = [
|
||||
"/media/libyuv",
|
||||
"/media/libyuv/libyuv/include",
|
||||
"//third_party/libyuv",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "//third_party/libyuv" ]
|
||||
include_dirs = [
|
||||
"/media/libyuv",
|
||||
"/media/libyuv/libyuv/include",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
rtc_source_set("recordable_encoded_frame") {
|
||||
@ -398,11 +404,19 @@ rtc_library("frame_buffer_unittest") {
|
||||
deps = [
|
||||
":frame_buffer",
|
||||
"../../api/video:encoded_frame",
|
||||
#"../../test:fake_encoded_frame",
|
||||
#"../../test:field_trial",
|
||||
#"../../test:scoped_key_value_config",
|
||||
#"../../test:test_support",
|
||||
"../../test:fake_encoded_frame",
|
||||
"../../test:field_trial",
|
||||
"../../test:scoped_key_value_config",
|
||||
"../../test:test_support",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [
|
||||
"../../test:fake_encoded_frame",
|
||||
"../../test:field_trial",
|
||||
"../../test:scoped_key_value_config",
|
||||
"../../test:test_support",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (rtc_include_tests) {
|
||||
|
1
third_party/libwebrtc/api/video/OWNERS
vendored
1
third_party/libwebrtc/api/video/OWNERS
vendored
@ -1,5 +1,4 @@
|
||||
brandtr@webrtc.org
|
||||
magjed@webrtc.org
|
||||
nisse@webrtc.org
|
||||
|
||||
per-file video_timing.h=ilnik@webrtc.org
|
||||
|
58
third_party/libwebrtc/api/video/frame_buffer.cc
vendored
58
third_party/libwebrtc/api/video/frame_buffer.cc
vendored
@ -16,6 +16,7 @@
|
||||
#include "absl/container/inlined_vector.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/numerics/sequence_number_util.h"
|
||||
#include "rtc_base/trace_event.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
@ -68,7 +69,12 @@ FrameBuffer::FrameBuffer(int max_size,
|
||||
decoded_frame_history_(max_decode_history) {}
|
||||
|
||||
bool FrameBuffer::InsertFrame(std::unique_ptr<EncodedFrame> frame) {
|
||||
const uint32_t ssrc =
|
||||
frame->PacketInfos().empty() ? 0 : frame->PacketInfos()[0].ssrc();
|
||||
if (!ValidReferences(*frame)) {
|
||||
TRACE_EVENT2("webrtc",
|
||||
"FrameBuffer::InsertFrame Frame dropped (Invalid references)",
|
||||
"remote_ssrc", ssrc, "frame_id", frame->Id());
|
||||
RTC_DLOG(LS_WARNING) << "Frame " << frame->Id()
|
||||
<< " has invalid references, dropping frame.";
|
||||
return false;
|
||||
@ -78,23 +84,35 @@ bool FrameBuffer::InsertFrame(std::unique_ptr<EncodedFrame> frame) {
|
||||
if (legacy_frame_id_jump_behavior_ && frame->is_keyframe() &&
|
||||
AheadOf(frame->Timestamp(),
|
||||
*decoded_frame_history_.GetLastDecodedFrameTimestamp())) {
|
||||
TRACE_EVENT2("webrtc",
|
||||
"FrameBuffer::InsertFrame Frames dropped (OOO + PicId jump)",
|
||||
"remote_ssrc", ssrc, "frame_id", frame->Id());
|
||||
RTC_DLOG(LS_WARNING)
|
||||
<< "Keyframe " << frame->Id()
|
||||
<< " has newer timestamp but older picture id, clearing buffer.";
|
||||
Clear();
|
||||
} else {
|
||||
// Already decoded past this frame.
|
||||
TRACE_EVENT2("webrtc",
|
||||
"FrameBuffer::InsertFrame Frame dropped (Out of order)",
|
||||
"remote_ssrc", ssrc, "frame_id", frame->Id());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (frames_.size() == max_size_) {
|
||||
if (frame->is_keyframe()) {
|
||||
TRACE_EVENT2("webrtc",
|
||||
"FrameBuffer::InsertFrame Frames dropped (KF + Full buffer)",
|
||||
"remote_ssrc", ssrc, "frame_id", frame->Id());
|
||||
RTC_DLOG(LS_WARNING) << "Keyframe " << frame->Id()
|
||||
<< " inserted into full buffer, clearing buffer.";
|
||||
Clear();
|
||||
} else {
|
||||
// No space for this frame.
|
||||
TRACE_EVENT2("webrtc",
|
||||
"FrameBuffer::InsertFrame Frame dropped (Full buffer)",
|
||||
"remote_ssrc", ssrc, "frame_id", frame->Id());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -140,14 +158,44 @@ void FrameBuffer::DropNextDecodableTemporalUnit() {
|
||||
}
|
||||
|
||||
auto end_it = std::next(next_decodable_temporal_unit_->last_frame);
|
||||
num_dropped_frames_ += std::count_if(
|
||||
frames_.begin(), end_it,
|
||||
[](const auto& f) { return f.second.encoded_frame != nullptr; });
|
||||
|
||||
UpdateDroppedFramesAndDiscardedPackets(frames_.begin(), end_it);
|
||||
|
||||
frames_.erase(frames_.begin(), end_it);
|
||||
FindNextAndLastDecodableTemporalUnit();
|
||||
}
|
||||
|
||||
void FrameBuffer::UpdateDroppedFramesAndDiscardedPackets(FrameIterator begin_it,
|
||||
FrameIterator end_it) {
|
||||
uint32_t dropped_ssrc = 0;
|
||||
int64_t dropped_frame_id = 0;
|
||||
unsigned int num_discarded_packets = 0;
|
||||
unsigned int num_dropped_frames =
|
||||
std::count_if(begin_it, end_it, [&](const auto& f) {
|
||||
if (f.second.encoded_frame) {
|
||||
const auto& packetInfos = f.second.encoded_frame->PacketInfos();
|
||||
dropped_frame_id = f.first;
|
||||
if (!packetInfos.empty()) {
|
||||
dropped_ssrc = packetInfos[0].ssrc();
|
||||
}
|
||||
num_discarded_packets += packetInfos.size();
|
||||
}
|
||||
return f.second.encoded_frame != nullptr;
|
||||
});
|
||||
|
||||
if (num_dropped_frames > 0) {
|
||||
TRACE_EVENT2("webrtc", "FrameBuffer Dropping Old Frames", "remote_ssrc",
|
||||
dropped_ssrc, "frame_id", dropped_frame_id);
|
||||
}
|
||||
if (num_discarded_packets > 0) {
|
||||
TRACE_EVENT2("webrtc", "FrameBuffer Discarding Old Packets", "remote_ssrc",
|
||||
dropped_ssrc, "frame_id", dropped_frame_id);
|
||||
}
|
||||
|
||||
num_dropped_frames_ += num_dropped_frames;
|
||||
num_discarded_packets_ += num_discarded_packets;
|
||||
}
|
||||
|
||||
absl::optional<int64_t> FrameBuffer::LastContinuousFrameId() const {
|
||||
return last_continuous_frame_id_;
|
||||
}
|
||||
@ -167,6 +215,9 @@ int FrameBuffer::GetTotalNumberOfContinuousTemporalUnits() const {
|
||||
int FrameBuffer::GetTotalNumberOfDroppedFrames() const {
|
||||
return num_dropped_frames_;
|
||||
}
|
||||
int FrameBuffer::GetTotalNumberOfDiscardedPackets() const {
|
||||
return num_discarded_packets_;
|
||||
}
|
||||
|
||||
size_t FrameBuffer::CurrentSize() const {
|
||||
return frames_.size();
|
||||
@ -269,6 +320,7 @@ void FrameBuffer::FindNextAndLastDecodableTemporalUnit() {
|
||||
}
|
||||
|
||||
void FrameBuffer::Clear() {
|
||||
UpdateDroppedFramesAndDiscardedPackets(frames_.begin(), frames_.end());
|
||||
frames_.clear();
|
||||
next_decodable_temporal_unit_.reset();
|
||||
decodable_temporal_units_info_.reset();
|
||||
|
@ -66,6 +66,7 @@ class FrameBuffer {
|
||||
|
||||
int GetTotalNumberOfContinuousTemporalUnits() const;
|
||||
int GetTotalNumberOfDroppedFrames() const;
|
||||
int GetTotalNumberOfDiscardedPackets() const;
|
||||
size_t CurrentSize() const;
|
||||
|
||||
private:
|
||||
@ -87,6 +88,8 @@ class FrameBuffer {
|
||||
void PropagateContinuity(const FrameIterator& frame_it);
|
||||
void FindNextAndLastDecodableTemporalUnit();
|
||||
void Clear();
|
||||
void UpdateDroppedFramesAndDiscardedPackets(FrameIterator begin_it,
|
||||
FrameIterator end_it);
|
||||
|
||||
const bool legacy_frame_id_jump_behavior_;
|
||||
const size_t max_size_;
|
||||
@ -99,6 +102,7 @@ class FrameBuffer {
|
||||
|
||||
int num_continuous_temporal_units_ = 0;
|
||||
int num_dropped_frames_ = 0;
|
||||
int num_discarded_packets_ = 0;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -1,4 +1,3 @@
|
||||
magjed@webrtc.org
|
||||
nisse@webrtc.org
|
||||
sprang@webrtc.org
|
||||
brandtr@webrtc.org
|
||||
|
@ -18,19 +18,27 @@
|
||||
|
||||
namespace webrtc {
|
||||
// TODO(bugs.webrtc.org/13573): When OpenH264 is no longer a conditional build
|
||||
// target remove this #ifdef.
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
// target remove #ifdefs.
|
||||
struct OpenH264DecoderTemplateAdapter {
|
||||
static std::vector<SdpVideoFormat> SupportedFormats() {
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
|
||||
return SupportedH264DecoderCodecs();
|
||||
#else
|
||||
return {};
|
||||
#endif
|
||||
}
|
||||
|
||||
static std::unique_ptr<VideoDecoder> CreateDecoder(
|
||||
const SdpVideoFormat& format) {
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
|
||||
return H264Decoder::Create();
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
#endif // defined(WEBRTC_USE_H264)
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // API_VIDEO_CODECS_VIDEO_DECODER_FACTORY_TEMPLATE_OPEN_H264_ADAPTER_H_
|
||||
|
@ -18,23 +18,33 @@
|
||||
|
||||
namespace webrtc {
|
||||
// TODO(bugs.webrtc.org/13573): When OpenH264 is no longer a conditional build
|
||||
// target remove this #ifdef.
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
// target remove #ifdefs.
|
||||
struct OpenH264EncoderTemplateAdapter {
|
||||
static std::vector<SdpVideoFormat> SupportedFormats() {
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
return SupportedH264Codecs(/*add_scalability_modes=*/true);
|
||||
#else
|
||||
return {};
|
||||
#endif
|
||||
}
|
||||
|
||||
static std::unique_ptr<VideoEncoder> CreateEncoder(
|
||||
const SdpVideoFormat& format) {
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
return H264Encoder::Create(cricket::VideoCodec(format));
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool IsScalabilityModeSupported(ScalabilityMode scalability_mode) {
|
||||
#if defined(WEBRTC_USE_H264)
|
||||
return H264Encoder::SupportsScalabilityMode(scalability_mode);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
#endif // defined(WEBRTC_USE_H264)
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // API_VIDEO_CODECS_VIDEO_ENCODER_FACTORY_TEMPLATE_OPEN_H264_ADAPTER_H_
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "absl/memory/memory.h"
|
||||
#include "api/async_dns_resolver.h"
|
||||
@ -68,14 +69,18 @@ class RTC_EXPORT WrappingAsyncDnsResolver : public AsyncDnsResolverInterface,
|
||||
void Start(const rtc::SocketAddress& addr,
|
||||
std::function<void()> callback) override {
|
||||
RTC_DCHECK_RUN_ON(&sequence_checker_);
|
||||
RTC_DCHECK_EQ(State::kNotStarted, state_);
|
||||
state_ = State::kStarted;
|
||||
callback_ = callback;
|
||||
wrapped_->SignalDone.connect(this,
|
||||
&WrappingAsyncDnsResolver::OnResolveResult);
|
||||
PrepareToResolve(std::move(callback));
|
||||
wrapped_->Start(addr);
|
||||
}
|
||||
|
||||
void Start(const rtc::SocketAddress& addr,
|
||||
int family,
|
||||
std::function<void()> callback) override {
|
||||
RTC_DCHECK_RUN_ON(&sequence_checker_);
|
||||
PrepareToResolve(std::move(callback));
|
||||
wrapped_->Start(addr, family);
|
||||
}
|
||||
|
||||
const AsyncDnsResolverResult& result() const override {
|
||||
RTC_DCHECK_RUN_ON(&sequence_checker_);
|
||||
RTC_DCHECK_EQ(State::kResolved, state_);
|
||||
@ -92,6 +97,15 @@ class RTC_EXPORT WrappingAsyncDnsResolver : public AsyncDnsResolverInterface,
|
||||
return wrapped_.get();
|
||||
}
|
||||
|
||||
void PrepareToResolve(std::function<void()> callback) {
|
||||
RTC_DCHECK_RUN_ON(&sequence_checker_);
|
||||
RTC_DCHECK_EQ(State::kNotStarted, state_);
|
||||
state_ = State::kStarted;
|
||||
callback_ = std::move(callback);
|
||||
wrapped_->SignalDone.connect(this,
|
||||
&WrappingAsyncDnsResolver::OnResolveResult);
|
||||
}
|
||||
|
||||
void OnResolveResult(rtc::AsyncResolverInterface* ref) {
|
||||
RTC_DCHECK_RUN_ON(&sequence_checker_);
|
||||
RTC_DCHECK(state_ == State::kStarted);
|
||||
|
6
third_party/libwebrtc/audio/BUILD.gn
vendored
6
third_party/libwebrtc/audio/BUILD.gn
vendored
@ -33,8 +33,6 @@ rtc_library("audio") {
|
||||
"channel_send_frame_transformer_delegate.cc",
|
||||
"channel_send_frame_transformer_delegate.h",
|
||||
"conversion.h",
|
||||
"null_audio_poller.cc",
|
||||
"null_audio_poller.h",
|
||||
"remix_resample.cc",
|
||||
"remix_resample.h",
|
||||
]
|
||||
@ -63,6 +61,7 @@ rtc_library("audio") {
|
||||
"../api/task_queue",
|
||||
"../api/task_queue:pending_task_safety_flag",
|
||||
"../api/transport/rtp:rtp_source",
|
||||
"../api/units:time_delta",
|
||||
"../call:audio_sender_interface",
|
||||
"../call:bitrate_allocator",
|
||||
"../call:call_interfaces",
|
||||
@ -85,11 +84,9 @@ rtc_library("audio") {
|
||||
"../modules/pacing",
|
||||
"../modules/rtp_rtcp",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../rtc_base",
|
||||
"../rtc_base:audio_format_to_string",
|
||||
"../rtc_base:buffer",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:location",
|
||||
"../rtc_base:logging",
|
||||
"../rtc_base:macromagic",
|
||||
"../rtc_base:race_checker",
|
||||
@ -106,6 +103,7 @@ rtc_library("audio") {
|
||||
"../rtc_base/experiments:field_trial_parser",
|
||||
"../rtc_base/synchronization:mutex",
|
||||
"../rtc_base/system:no_unique_address",
|
||||
"../rtc_base/task_utils:repeating_task",
|
||||
"../system_wrappers",
|
||||
"../system_wrappers:field_trial",
|
||||
"../system_wrappers:metrics",
|
||||
|
@ -41,7 +41,6 @@ UNIFIED_SOURCES += [
|
||||
"/third_party/libwebrtc/audio/channel_receive.cc",
|
||||
"/third_party/libwebrtc/audio/channel_receive_frame_transformer_delegate.cc",
|
||||
"/third_party/libwebrtc/audio/channel_send.cc",
|
||||
"/third_party/libwebrtc/audio/null_audio_poller.cc",
|
||||
"/third_party/libwebrtc/audio/remix_resample.cc"
|
||||
]
|
||||
|
||||
|
@ -31,7 +31,7 @@ enum : int { // The first valid value is 1.
|
||||
|
||||
class AudioSendTest : public SendTest {
|
||||
public:
|
||||
AudioSendTest() : SendTest(CallTest::kDefaultTimeoutMs) {}
|
||||
AudioSendTest() : SendTest(CallTest::kDefaultTimeout) {}
|
||||
|
||||
size_t GetNumVideoStreams() const override { return 0; }
|
||||
size_t GetNumAudioStreams() const override { return 1; }
|
||||
|
@ -638,8 +638,7 @@ TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) {
|
||||
update.packet_loss_ratio = 0;
|
||||
update.round_trip_time = TimeDelta::Millis(50);
|
||||
update.bwe_period = TimeDelta::Millis(6000);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -655,8 +654,7 @@ TEST(AudioSendStreamTest, SSBweTargetInRangeRespected) {
|
||||
BitrateAllocationUpdate update;
|
||||
update.target_bitrate =
|
||||
DataRate::BitsPerSec(helper.config().max_bitrate_bps - 5000);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -672,8 +670,7 @@ TEST(AudioSendStreamTest, SSBweFieldTrialMinRespected) {
|
||||
Eq(DataRate::KilobitsPerSec(6)))));
|
||||
BitrateAllocationUpdate update;
|
||||
update.target_bitrate = DataRate::KilobitsPerSec(1);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -689,8 +686,7 @@ TEST(AudioSendStreamTest, SSBweFieldTrialMaxRespected) {
|
||||
Eq(DataRate::KilobitsPerSec(64)))));
|
||||
BitrateAllocationUpdate update;
|
||||
update.target_bitrate = DataRate::KilobitsPerSec(128);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -710,8 +706,7 @@ TEST(AudioSendStreamTest, SSBweWithOverhead) {
|
||||
&BitrateAllocationUpdate::target_bitrate, Eq(bitrate))));
|
||||
BitrateAllocationUpdate update;
|
||||
update.target_bitrate = bitrate;
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -731,8 +726,7 @@ TEST(AudioSendStreamTest, SSBweWithOverheadMinRespected) {
|
||||
&BitrateAllocationUpdate::target_bitrate, Eq(bitrate))));
|
||||
BitrateAllocationUpdate update;
|
||||
update.target_bitrate = DataRate::KilobitsPerSec(1);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -752,8 +746,7 @@ TEST(AudioSendStreamTest, SSBweWithOverheadMaxRespected) {
|
||||
&BitrateAllocationUpdate::target_bitrate, Eq(bitrate))));
|
||||
BitrateAllocationUpdate update;
|
||||
update.target_bitrate = DataRate::KilobitsPerSec(128);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -771,8 +764,7 @@ TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) {
|
||||
update.packet_loss_ratio = 0;
|
||||
update.round_trip_time = TimeDelta::Millis(50);
|
||||
update.bwe_period = TimeDelta::Millis(5000);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
}
|
||||
}
|
||||
|
||||
@ -874,8 +866,7 @@ TEST(AudioSendStreamTest, AudioOverheadChanged) {
|
||||
DataRate::BitsPerSec(helper.config().max_bitrate_bps) +
|
||||
kMaxOverheadRate;
|
||||
EXPECT_CALL(*helper.channel_send(), OnBitrateAllocation);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
|
||||
EXPECT_EQ(audio_overhead_per_packet_bytes,
|
||||
send_stream->TestOnlyGetPerPacketOverheadBytes());
|
||||
@ -883,8 +874,7 @@ TEST(AudioSendStreamTest, AudioOverheadChanged) {
|
||||
EXPECT_CALL(*helper.rtp_rtcp(), ExpectedPerPacketOverhead)
|
||||
.WillRepeatedly(Return(audio_overhead_per_packet_bytes + 20));
|
||||
EXPECT_CALL(*helper.channel_send(), OnBitrateAllocation);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
|
||||
EXPECT_EQ(audio_overhead_per_packet_bytes + 20,
|
||||
send_stream->TestOnlyGetPerPacketOverheadBytes());
|
||||
@ -908,8 +898,7 @@ TEST(AudioSendStreamTest, OnAudioAndTransportOverheadChanged) {
|
||||
DataRate::BitsPerSec(helper.config().max_bitrate_bps) +
|
||||
kMaxOverheadRate;
|
||||
EXPECT_CALL(*helper.channel_send(), OnBitrateAllocation);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); },
|
||||
RTC_FROM_HERE);
|
||||
helper.worker()->SendTask([&] { send_stream->OnBitrateUpdated(update); });
|
||||
|
||||
EXPECT_EQ(
|
||||
transport_overhead_per_packet_bytes + audio_overhead_per_packet_bytes,
|
||||
|
47
third_party/libwebrtc/audio/audio_state.cc
vendored
47
third_party/libwebrtc/audio/audio_state.cc
vendored
@ -15,12 +15,14 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "api/sequence_checker.h"
|
||||
#include "api/task_queue/task_queue_base.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "audio/audio_receive_stream.h"
|
||||
#include "audio/audio_send_stream.h"
|
||||
#include "modules/audio_device/include/audio_device.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/thread.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace internal {
|
||||
@ -36,9 +38,10 @@ AudioState::AudioState(const AudioState::Config& config)
|
||||
}
|
||||
|
||||
AudioState::~AudioState() {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
RTC_DCHECK(receiving_streams_.empty());
|
||||
RTC_DCHECK(sending_streams_.empty());
|
||||
RTC_DCHECK(!null_audio_poller_.Running());
|
||||
}
|
||||
|
||||
AudioProcessing* AudioState::audio_processing() {
|
||||
@ -51,7 +54,7 @@ AudioTransport* AudioState::audio_transport() {
|
||||
|
||||
void AudioState::AddReceivingStream(
|
||||
webrtc::AudioReceiveStreamInterface* stream) {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
RTC_DCHECK_EQ(0, receiving_streams_.count(stream));
|
||||
receiving_streams_.insert(stream);
|
||||
if (!config_.audio_mixer->AddSource(
|
||||
@ -75,7 +78,7 @@ void AudioState::AddReceivingStream(
|
||||
|
||||
void AudioState::RemoveReceivingStream(
|
||||
webrtc::AudioReceiveStreamInterface* stream) {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
auto count = receiving_streams_.erase(stream);
|
||||
RTC_DCHECK_EQ(1, count);
|
||||
config_.audio_mixer->RemoveSource(
|
||||
@ -89,7 +92,7 @@ void AudioState::RemoveReceivingStream(
|
||||
void AudioState::AddSendingStream(webrtc::AudioSendStream* stream,
|
||||
int sample_rate_hz,
|
||||
size_t num_channels) {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
auto& properties = sending_streams_[stream];
|
||||
properties.sample_rate_hz = sample_rate_hz;
|
||||
properties.num_channels = num_channels;
|
||||
@ -109,7 +112,7 @@ void AudioState::AddSendingStream(webrtc::AudioSendStream* stream,
|
||||
}
|
||||
|
||||
void AudioState::RemoveSendingStream(webrtc::AudioSendStream* stream) {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
auto count = sending_streams_.erase(stream);
|
||||
RTC_DCHECK_EQ(1, count);
|
||||
UpdateAudioTransportWithSendingStreams();
|
||||
@ -120,7 +123,7 @@ void AudioState::RemoveSendingStream(webrtc::AudioSendStream* stream) {
|
||||
|
||||
void AudioState::SetPlayout(bool enabled) {
|
||||
RTC_LOG(LS_INFO) << "SetPlayout(" << enabled << ")";
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
if (playout_enabled_ != enabled) {
|
||||
playout_enabled_ = enabled;
|
||||
if (enabled) {
|
||||
@ -137,7 +140,7 @@ void AudioState::SetPlayout(bool enabled) {
|
||||
|
||||
void AudioState::SetRecording(bool enabled) {
|
||||
RTC_LOG(LS_INFO) << "SetRecording(" << enabled << ")";
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
if (recording_enabled_ != enabled) {
|
||||
recording_enabled_ = enabled;
|
||||
if (enabled) {
|
||||
@ -173,10 +176,32 @@ void AudioState::UpdateNullAudioPollerState() {
|
||||
// Run NullAudioPoller when there are receiving streams and playout is
|
||||
// disabled.
|
||||
if (!receiving_streams_.empty() && !playout_enabled_) {
|
||||
if (!null_audio_poller_)
|
||||
null_audio_poller_ = std::make_unique<NullAudioPoller>(&audio_transport_);
|
||||
if (!null_audio_poller_.Running()) {
|
||||
AudioTransport* audio_transport = &audio_transport_;
|
||||
null_audio_poller_ = RepeatingTaskHandle::Start(
|
||||
TaskQueueBase::Current(), [audio_transport] {
|
||||
static constexpr size_t kNumChannels = 1;
|
||||
static constexpr uint32_t kSamplesPerSecond = 48'000;
|
||||
// 10ms of samples
|
||||
static constexpr size_t kNumSamples = kSamplesPerSecond / 100;
|
||||
|
||||
// Buffer to hold the audio samples.
|
||||
int16_t buffer[kNumSamples * kNumChannels];
|
||||
|
||||
// Output variables from `NeedMorePlayData`.
|
||||
size_t n_samples;
|
||||
int64_t elapsed_time_ms;
|
||||
int64_t ntp_time_ms;
|
||||
audio_transport->NeedMorePlayData(
|
||||
kNumSamples, sizeof(int16_t), kNumChannels, kSamplesPerSecond,
|
||||
buffer, n_samples, &elapsed_time_ms, &ntp_time_ms);
|
||||
|
||||
// Reschedule the next poll iteration.
|
||||
return TimeDelta::Millis(10);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
null_audio_poller_.reset();
|
||||
null_audio_poller_.Stop();
|
||||
}
|
||||
}
|
||||
} // namespace internal
|
||||
|
7
third_party/libwebrtc/audio/audio_state.h
vendored
7
third_party/libwebrtc/audio/audio_state.h
vendored
@ -16,10 +16,11 @@
|
||||
|
||||
#include "api/sequence_checker.h"
|
||||
#include "audio/audio_transport_impl.h"
|
||||
#include "audio/null_audio_poller.h"
|
||||
#include "call/audio_state.h"
|
||||
#include "rtc_base/containers/flat_set.h"
|
||||
#include "rtc_base/ref_count.h"
|
||||
#include "rtc_base/task_utils/repeating_task.h"
|
||||
#include "rtc_base/thread_annotations.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -61,7 +62,7 @@ class AudioState : public webrtc::AudioState {
|
||||
|
||||
private:
|
||||
void UpdateAudioTransportWithSendingStreams();
|
||||
void UpdateNullAudioPollerState();
|
||||
void UpdateNullAudioPollerState() RTC_RUN_ON(&thread_checker_);
|
||||
|
||||
SequenceChecker thread_checker_;
|
||||
SequenceChecker process_thread_checker_;
|
||||
@ -76,7 +77,7 @@ class AudioState : public webrtc::AudioState {
|
||||
// Null audio poller is used to continue polling the audio streams if audio
|
||||
// playout is disabled so that audio processing still happens and the audio
|
||||
// stats are still updated.
|
||||
std::unique_ptr<NullAudioPoller> null_audio_poller_;
|
||||
RepeatingTaskHandle null_audio_poller_ RTC_GUARDED_BY(&thread_checker_);
|
||||
|
||||
webrtc::flat_set<webrtc::AudioReceiveStreamInterface*> receiving_streams_;
|
||||
struct StreamProperties {
|
||||
|
@ -41,7 +41,6 @@
|
||||
#include "modules/rtp_rtcp/source/rtp_rtcp_config.h"
|
||||
#include "modules/rtp_rtcp/source/rtp_rtcp_impl2.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/location.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/numerics/safe_minmax.h"
|
||||
#include "rtc_base/race_checker.h"
|
||||
@ -1039,8 +1038,8 @@ absl::optional<Syncable::Info> ChannelReceive::GetSyncInfo() const {
|
||||
return info;
|
||||
}
|
||||
|
||||
// RTC_RUN_ON(worker_thread_checker_)
|
||||
void ChannelReceive::UpdatePlayoutTimestamp(bool rtcp, int64_t now_ms) {
|
||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||
// TODO(bugs.webrtc.org/11993): Expect to be called exclusively on the
|
||||
// network thread. Once that's done, we won't need video_sync_lock_.
|
||||
|
||||
|
1
third_party/libwebrtc/audio/channel_send.cc
vendored
1
third_party/libwebrtc/audio/channel_send.cc
vendored
@ -33,7 +33,6 @@
|
||||
#include "modules/rtp_rtcp/source/rtp_rtcp_impl2.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/event.h"
|
||||
#include "rtc_base/location.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/numerics/safe_conversions.h"
|
||||
#include "rtc_base/race_checker.h"
|
||||
|
71
third_party/libwebrtc/audio/null_audio_poller.cc
vendored
71
third_party/libwebrtc/audio/null_audio_poller.cc
vendored
@ -1,71 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "audio/null_audio_poller.h"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/location.h"
|
||||
#include "rtc_base/thread.h"
|
||||
#include "rtc_base/time_utils.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace internal {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr int64_t kPollDelayMs = 10; // WebRTC uses 10ms by default
|
||||
|
||||
constexpr size_t kNumChannels = 1;
|
||||
constexpr uint32_t kSamplesPerSecond = 48000; // 48kHz
|
||||
constexpr size_t kNumSamples = kSamplesPerSecond / 100; // 10ms of samples
|
||||
|
||||
} // namespace
|
||||
|
||||
NullAudioPoller::NullAudioPoller(AudioTransport* audio_transport)
|
||||
: audio_transport_(audio_transport),
|
||||
reschedule_at_(rtc::TimeMillis() + kPollDelayMs) {
|
||||
RTC_DCHECK(audio_transport);
|
||||
OnMessage(nullptr); // Start the poll loop.
|
||||
}
|
||||
|
||||
NullAudioPoller::~NullAudioPoller() {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
rtc::Thread::Current()->Clear(this);
|
||||
}
|
||||
|
||||
void NullAudioPoller::OnMessage(rtc::Message* msg) {
|
||||
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||
|
||||
// Buffer to hold the audio samples.
|
||||
int16_t buffer[kNumSamples * kNumChannels];
|
||||
// Output variables from `NeedMorePlayData`.
|
||||
size_t n_samples;
|
||||
int64_t elapsed_time_ms;
|
||||
int64_t ntp_time_ms;
|
||||
audio_transport_->NeedMorePlayData(kNumSamples, sizeof(int16_t), kNumChannels,
|
||||
kSamplesPerSecond, buffer, n_samples,
|
||||
&elapsed_time_ms, &ntp_time_ms);
|
||||
|
||||
// Reschedule the next poll iteration. If, for some reason, the given
|
||||
// reschedule time has already passed, reschedule as soon as possible.
|
||||
int64_t now = rtc::TimeMillis();
|
||||
if (reschedule_at_ < now) {
|
||||
reschedule_at_ = now;
|
||||
}
|
||||
rtc::Thread::Current()->PostAt(RTC_FROM_HERE, reschedule_at_, this, 0);
|
||||
|
||||
// Loop after next will be kPollDelayMs later.
|
||||
reschedule_at_ += kPollDelayMs;
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
} // namespace webrtc
|
40
third_party/libwebrtc/audio/null_audio_poller.h
vendored
40
third_party/libwebrtc/audio/null_audio_poller.h
vendored
@ -1,40 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#ifndef AUDIO_NULL_AUDIO_POLLER_H_
|
||||
#define AUDIO_NULL_AUDIO_POLLER_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "api/sequence_checker.h"
|
||||
#include "modules/audio_device/include/audio_device_defines.h"
|
||||
#include "rtc_base/message_handler.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace internal {
|
||||
|
||||
class NullAudioPoller final : public rtc::MessageHandler {
|
||||
public:
|
||||
explicit NullAudioPoller(AudioTransport* audio_transport);
|
||||
~NullAudioPoller() override;
|
||||
|
||||
protected:
|
||||
void OnMessage(rtc::Message* msg) override;
|
||||
|
||||
private:
|
||||
SequenceChecker thread_checker_;
|
||||
AudioTransport* const audio_transport_;
|
||||
int64_t reschedule_at_;
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // AUDIO_NULL_AUDIO_POLLER_H_
|
@ -21,6 +21,10 @@ namespace webrtc {
|
||||
namespace voe {
|
||||
namespace {
|
||||
|
||||
int GetFrameSize(int sample_rate_hz) {
|
||||
return sample_rate_hz / 100;
|
||||
}
|
||||
|
||||
class UtilityTest : public ::testing::Test {
|
||||
protected:
|
||||
UtilityTest() {
|
||||
@ -49,7 +53,7 @@ void SetMonoFrame(float data, int sample_rate_hz, AudioFrame* frame) {
|
||||
frame->Mute();
|
||||
frame->num_channels_ = 1;
|
||||
frame->sample_rate_hz_ = sample_rate_hz;
|
||||
frame->samples_per_channel_ = rtc::CheckedDivExact(sample_rate_hz, 100);
|
||||
frame->samples_per_channel_ = GetFrameSize(sample_rate_hz);
|
||||
int16_t* frame_data = frame->mutable_data();
|
||||
for (size_t i = 0; i < frame->samples_per_channel_; i++) {
|
||||
frame_data[i] = static_cast<int16_t>(data * i);
|
||||
@ -70,7 +74,7 @@ void SetStereoFrame(float left,
|
||||
frame->Mute();
|
||||
frame->num_channels_ = 2;
|
||||
frame->sample_rate_hz_ = sample_rate_hz;
|
||||
frame->samples_per_channel_ = rtc::CheckedDivExact(sample_rate_hz, 100);
|
||||
frame->samples_per_channel_ = GetFrameSize(sample_rate_hz);
|
||||
int16_t* frame_data = frame->mutable_data();
|
||||
for (size_t i = 0; i < frame->samples_per_channel_; i++) {
|
||||
frame_data[i * 2] = static_cast<int16_t>(left * i);
|
||||
@ -94,7 +98,7 @@ void SetQuadFrame(float ch1,
|
||||
frame->Mute();
|
||||
frame->num_channels_ = 4;
|
||||
frame->sample_rate_hz_ = sample_rate_hz;
|
||||
frame->samples_per_channel_ = rtc::CheckedDivExact(sample_rate_hz, 100);
|
||||
frame->samples_per_channel_ = GetFrameSize(sample_rate_hz);
|
||||
int16_t* frame_data = frame->mutable_data();
|
||||
for (size_t i = 0; i < frame->samples_per_channel_; i++) {
|
||||
frame_data[i * 4] = static_cast<int16_t>(ch1 * i);
|
||||
@ -211,7 +215,7 @@ void UtilityTest::RunResampleTest(int src_channels,
|
||||
src_channels, src_sample_rate_hz, dst_channels, dst_sample_rate_hz);
|
||||
RemixAndResample(src_frame_, &resampler, &dst_frame_);
|
||||
|
||||
if (src_sample_rate_hz == 96000 && dst_sample_rate_hz == 8000) {
|
||||
if (src_sample_rate_hz == 96000 && dst_sample_rate_hz <= 11025) {
|
||||
// The sinc resampler gives poor SNR at this extreme conversion, but we
|
||||
// expect to see this rarely in practice.
|
||||
EXPECT_GT(ComputeSNR(golden_frame_, dst_frame_, max_delay), 14.0f);
|
||||
@ -251,20 +255,16 @@ TEST_F(UtilityTest, RemixAndResampleMixingOnlySucceeds) {
|
||||
}
|
||||
|
||||
TEST_F(UtilityTest, RemixAndResampleSucceeds) {
|
||||
const int kSampleRates[] = {8000, 16000, 32000, 44100, 48000, 96000};
|
||||
const int kSampleRatesSize = arraysize(kSampleRates);
|
||||
const int kSampleRates[] = {8000, 11025, 16000, 22050,
|
||||
32000, 44100, 48000, 96000};
|
||||
const int kSrcChannels[] = {1, 2, 4};
|
||||
const int kSrcChannelsSize = arraysize(kSrcChannels);
|
||||
const int kDstChannels[] = {1, 2};
|
||||
const int kDstChannelsSize = arraysize(kDstChannels);
|
||||
|
||||
for (int src_rate = 0; src_rate < kSampleRatesSize; src_rate++) {
|
||||
for (int dst_rate = 0; dst_rate < kSampleRatesSize; dst_rate++) {
|
||||
for (int src_channel = 0; src_channel < kSrcChannelsSize; src_channel++) {
|
||||
for (int dst_channel = 0; dst_channel < kDstChannelsSize;
|
||||
dst_channel++) {
|
||||
RunResampleTest(kSrcChannels[src_channel], kSampleRates[src_rate],
|
||||
kDstChannels[dst_channel], kSampleRates[dst_rate]);
|
||||
for (int src_rate : kSampleRates) {
|
||||
for (int dst_rate : kSampleRates) {
|
||||
for (size_t src_channels : kSrcChannels) {
|
||||
for (size_t dst_channels : kDstChannels) {
|
||||
RunResampleTest(src_channels, src_rate, dst_channels, dst_rate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ enum : int { // The first valid value is 1.
|
||||
constexpr int kExtraProcessTimeMs = 1000;
|
||||
} // namespace
|
||||
|
||||
AudioBweTest::AudioBweTest() : EndToEndTest(CallTest::kDefaultTimeoutMs) {}
|
||||
AudioBweTest::AudioBweTest() : EndToEndTest(CallTest::kDefaultTimeout) {}
|
||||
|
||||
size_t AudioBweTest::GetNumVideoStreams() const {
|
||||
return 0;
|
||||
|
@ -29,7 +29,7 @@ constexpr int kSampleRate = 48000;
|
||||
} // namespace
|
||||
|
||||
AudioEndToEndTest::AudioEndToEndTest()
|
||||
: EndToEndTest(CallTest::kDefaultTimeoutMs) {}
|
||||
: EndToEndTest(CallTest::kDefaultTimeout) {}
|
||||
|
||||
BuiltInNetworkBehaviorConfig AudioEndToEndTest::GetNetworkPipeConfig() const {
|
||||
return BuiltInNetworkBehaviorConfig();
|
||||
|
14
third_party/libwebrtc/call/BUILD.gn
vendored
14
third_party/libwebrtc/call/BUILD.gn
vendored
@ -25,8 +25,6 @@ rtc_library("call_interfaces") {
|
||||
"audio_state.cc",
|
||||
"audio_state.h",
|
||||
"call.h",
|
||||
"call_basic_stats.cc",
|
||||
"call_basic_stats.h",
|
||||
"call_config.cc",
|
||||
"call_config.h",
|
||||
"flexfec_receive_stream.cc",
|
||||
@ -35,6 +33,12 @@ rtc_library("call_interfaces") {
|
||||
"syncable.cc",
|
||||
"syncable.h",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
sources += [
|
||||
"call_basic_stats.cc",
|
||||
"call_basic_stats.h",
|
||||
]
|
||||
}
|
||||
|
||||
deps = [
|
||||
":audio_sender_interface",
|
||||
@ -153,6 +157,7 @@ rtc_library("rtp_receiver") {
|
||||
"../rtc_base:stringutils",
|
||||
"../rtc_base/containers:flat_map",
|
||||
"../rtc_base/containers:flat_set",
|
||||
"../rtc_base/system:no_unique_address",
|
||||
]
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/strings:strings",
|
||||
@ -237,11 +242,14 @@ rtc_library("bitrate_configurator") {
|
||||
":rtp_interfaces",
|
||||
|
||||
# For api/bitrate_constraints.h
|
||||
#"../api:libjingle_peerconnection_api",
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../api/transport:bitrate_settings",
|
||||
"../api/units:data_rate",
|
||||
"../rtc_base:checks",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "../api:libjingle_peerconnection_api" ]
|
||||
}
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ class LogObserver {
|
||||
}
|
||||
}
|
||||
|
||||
bool Wait() { return done_.Wait(test::CallTest::kDefaultTimeoutMs); }
|
||||
bool Wait() { return done_.Wait(test::CallTest::kDefaultTimeout.ms()); }
|
||||
|
||||
void PushExpectedLogLine(absl::string_view expected_log_line) {
|
||||
MutexLock lock(&mutex_);
|
||||
@ -110,7 +110,7 @@ class BitrateEstimatorTest : public test::CallTest {
|
||||
virtual ~BitrateEstimatorTest() { EXPECT_TRUE(streams_.empty()); }
|
||||
|
||||
virtual void SetUp() {
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
CreateCalls();
|
||||
|
||||
send_transport_.reset(new test::DirectTransport(
|
||||
@ -154,7 +154,7 @@ class BitrateEstimatorTest : public test::CallTest {
|
||||
}
|
||||
|
||||
virtual void TearDown() {
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
for (auto* stream : streams_) {
|
||||
stream->StopSending();
|
||||
delete stream;
|
||||
@ -257,7 +257,7 @@ static const char* kSingleStreamLog =
|
||||
"RemoteBitrateEstimatorSingleStream: Instantiating.";
|
||||
|
||||
TEST_F(BitrateEstimatorTest, InstantiatesTOFPerDefaultForVideo) {
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions.push_back(
|
||||
RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
|
||||
receiver_log_.PushExpectedLogLine(kSingleStreamLog);
|
||||
@ -268,7 +268,7 @@ TEST_F(BitrateEstimatorTest, InstantiatesTOFPerDefaultForVideo) {
|
||||
}
|
||||
|
||||
TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForVideo) {
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions.push_back(
|
||||
RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId));
|
||||
receiver_log_.PushExpectedLogLine(kSingleStreamLog);
|
||||
@ -281,7 +281,7 @@ TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForVideo) {
|
||||
}
|
||||
|
||||
TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) {
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions.push_back(
|
||||
RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
|
||||
receiver_log_.PushExpectedLogLine(kSingleStreamLog);
|
||||
@ -290,7 +290,7 @@ TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) {
|
||||
});
|
||||
EXPECT_TRUE(receiver_log_.Wait());
|
||||
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions[0] =
|
||||
RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId);
|
||||
receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
|
||||
@ -302,7 +302,7 @@ TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) {
|
||||
|
||||
// This test is flaky. See webrtc:5790.
|
||||
TEST_F(BitrateEstimatorTest, DISABLED_SwitchesToASTThenBackToTOFForVideo) {
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions.push_back(
|
||||
RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
|
||||
receiver_log_.PushExpectedLogLine(kSingleStreamLog);
|
||||
@ -312,7 +312,7 @@ TEST_F(BitrateEstimatorTest, DISABLED_SwitchesToASTThenBackToTOFForVideo) {
|
||||
});
|
||||
EXPECT_TRUE(receiver_log_.Wait());
|
||||
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions[0] =
|
||||
RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId);
|
||||
receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
|
||||
@ -321,7 +321,7 @@ TEST_F(BitrateEstimatorTest, DISABLED_SwitchesToASTThenBackToTOFForVideo) {
|
||||
});
|
||||
EXPECT_TRUE(receiver_log_.Wait());
|
||||
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [this]() {
|
||||
SendTask(task_queue(), [this]() {
|
||||
GetVideoSendConfig()->rtp.extensions[0] =
|
||||
RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId);
|
||||
receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
|
||||
|
12
third_party/libwebrtc/call/call.cc
vendored
12
third_party/libwebrtc/call/call.cc
vendored
@ -1031,7 +1031,7 @@ webrtc::VideoReceiveStreamInterface* Call::CreateVideoReceiveStream(
|
||||
task_queue_factory_, this, num_cpu_cores_,
|
||||
transport_send_->packet_router(), std::move(configuration),
|
||||
call_stats_.get(), clock_, std::make_unique<VCMTiming>(clock_, trials()),
|
||||
&nack_periodic_processor_, decode_sync_.get());
|
||||
&nack_periodic_processor_, decode_sync_.get(), event_log_);
|
||||
// TODO(bugs.webrtc.org/11993): Set this up asynchronously on the network
|
||||
// thread.
|
||||
receive_stream->RegisterWithTransport(&video_receiver_controller_);
|
||||
@ -1339,9 +1339,9 @@ void Call::OnAllocationLimitsChanged(BitrateAllocationLimits limits) {
|
||||
std::memory_order_relaxed);
|
||||
}
|
||||
|
||||
// RTC_RUN_ON(worker_thread_)
|
||||
AudioReceiveStreamImpl* Call::FindAudioStreamForSyncGroup(
|
||||
absl::string_view sync_group) {
|
||||
RTC_DCHECK_RUN_ON(worker_thread_);
|
||||
RTC_DCHECK_RUN_ON(&receive_11993_checker_);
|
||||
if (!sync_group.empty()) {
|
||||
for (AudioReceiveStreamImpl* stream : audio_receive_streams_) {
|
||||
@ -1353,9 +1353,9 @@ AudioReceiveStreamImpl* Call::FindAudioStreamForSyncGroup(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// TODO(bugs.webrtc.org/11993): Expect to be called on the network thread.
|
||||
// RTC_RUN_ON(worker_thread_)
|
||||
void Call::ConfigureSync(absl::string_view sync_group) {
|
||||
// TODO(bugs.webrtc.org/11993): Expect to be called on the network thread.
|
||||
RTC_DCHECK_RUN_ON(worker_thread_);
|
||||
// `audio_stream` may be nullptr when clearing the audio stream for a group.
|
||||
AudioReceiveStreamImpl* audio_stream =
|
||||
FindAudioStreamForSyncGroup(sync_group);
|
||||
@ -1378,8 +1378,8 @@ void Call::ConfigureSync(absl::string_view sync_group) {
|
||||
}
|
||||
}
|
||||
|
||||
// RTC_RUN_ON(network_thread_)
|
||||
void Call::DeliverRtcp(MediaType media_type, rtc::CopyOnWriteBuffer packet) {
|
||||
RTC_DCHECK_RUN_ON(network_thread_);
|
||||
TRACE_EVENT0("webrtc", "Call::DeliverRtcp");
|
||||
|
||||
// TODO(bugs.webrtc.org/11993): This DCHECK is here just to maintain the
|
||||
@ -1524,10 +1524,10 @@ void Call::OnRecoveredPacket(const uint8_t* packet, size_t length) {
|
||||
video_receiver_controller_.OnRtpPacket(parsed_packet);
|
||||
}
|
||||
|
||||
// RTC_RUN_ON(worker_thread_)
|
||||
void Call::NotifyBweOfReceivedPacket(const RtpPacketReceived& packet,
|
||||
MediaType media_type,
|
||||
bool use_send_side_bwe) {
|
||||
RTC_DCHECK_RUN_ON(worker_thread_);
|
||||
RTPHeader header;
|
||||
packet.GetHeader(&header);
|
||||
|
||||
|
59
third_party/libwebrtc/call/call_factory.cc
vendored
59
third_party/libwebrtc/call/call_factory.cc
vendored
@ -32,54 +32,6 @@ namespace webrtc {
|
||||
namespace {
|
||||
using TimeScopedNetworkConfig = DegradedCall::TimeScopedNetworkConfig;
|
||||
|
||||
bool ParseConfigParam(const FieldTrialsView& trials,
|
||||
absl::string_view exp_name,
|
||||
int* field) {
|
||||
std::string group = trials.Lookup(exp_name);
|
||||
if (group.empty())
|
||||
return false;
|
||||
|
||||
return (sscanf(group.c_str(), "%d", field) == 1);
|
||||
}
|
||||
|
||||
absl::optional<TimeScopedNetworkConfig> ParseDegradationConfig(
|
||||
const FieldTrialsView& trials,
|
||||
bool send) {
|
||||
std::string exp_prefix = "WebRTCFakeNetwork";
|
||||
if (send) {
|
||||
exp_prefix += "Send";
|
||||
} else {
|
||||
exp_prefix += "Receive";
|
||||
}
|
||||
|
||||
TimeScopedNetworkConfig config;
|
||||
bool configured = false;
|
||||
configured |=
|
||||
ParseConfigParam(trials, exp_prefix + "DelayMs", &config.queue_delay_ms);
|
||||
configured |= ParseConfigParam(trials, exp_prefix + "DelayStdDevMs",
|
||||
&config.delay_standard_deviation_ms);
|
||||
int queue_length = 0;
|
||||
if (ParseConfigParam(trials, exp_prefix + "QueueLength", &queue_length)) {
|
||||
RTC_CHECK_GE(queue_length, 0);
|
||||
config.queue_length_packets = queue_length;
|
||||
configured = true;
|
||||
}
|
||||
configured |= ParseConfigParam(trials, exp_prefix + "CapacityKbps",
|
||||
&config.link_capacity_kbps);
|
||||
configured |= ParseConfigParam(trials, exp_prefix + "LossPercent",
|
||||
&config.loss_percent);
|
||||
int allow_reordering = 0;
|
||||
if (ParseConfigParam(trials, exp_prefix + "AllowReordering",
|
||||
&allow_reordering)) {
|
||||
config.allow_reordering = true;
|
||||
configured = true;
|
||||
}
|
||||
configured |= ParseConfigParam(trials, exp_prefix + "AvgBurstLossLength",
|
||||
&config.avg_burst_loss_length);
|
||||
return configured ? absl::optional<TimeScopedNetworkConfig>(config)
|
||||
: absl::nullopt;
|
||||
}
|
||||
|
||||
std::vector<TimeScopedNetworkConfig> GetNetworkConfigs(
|
||||
const FieldTrialsView& trials,
|
||||
bool send) {
|
||||
@ -126,16 +78,7 @@ std::vector<TimeScopedNetworkConfig> GetNetworkConfigs(
|
||||
ParseFieldTrial({&trials_list},
|
||||
trials.Lookup(send ? "WebRTC-FakeNetworkSendConfig"
|
||||
: "WebRTC-FakeNetworkReceiveConfig"));
|
||||
std::vector<TimeScopedNetworkConfig> configs = trials_list.Get();
|
||||
if (configs.empty()) {
|
||||
// Try legacy fallback trials.
|
||||
absl::optional<DegradedCall::TimeScopedNetworkConfig> fallback_config =
|
||||
ParseDegradationConfig(trials, send);
|
||||
if (fallback_config.has_value()) {
|
||||
configs.push_back(*fallback_config);
|
||||
}
|
||||
}
|
||||
return configs;
|
||||
return trials_list.Get();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
22
third_party/libwebrtc/call/call_perf_tests.cc
vendored
22
third_party/libwebrtc/call/call_perf_tests.cc
vendored
@ -106,7 +106,7 @@ class VideoRtcpAndSyncObserver : public test::RtpRtcpObserver,
|
||||
explicit VideoRtcpAndSyncObserver(TaskQueueBase* task_queue,
|
||||
Clock* clock,
|
||||
absl::string_view test_label)
|
||||
: test::RtpRtcpObserver(CallPerfTest::kLongTimeoutMs),
|
||||
: test::RtpRtcpObserver(CallPerfTest::kLongTimeout),
|
||||
clock_(clock),
|
||||
test_label_(test_label),
|
||||
creation_time_ms_(clock_->TimeInMilliseconds()),
|
||||
@ -193,7 +193,7 @@ void CallPerfTest::TestAudioVideoSync(FecMode fec,
|
||||
AudioReceiveStreamInterface* audio_receive_stream;
|
||||
std::unique_ptr<DriftingClock> drifting_clock;
|
||||
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [&]() {
|
||||
SendTask(task_queue(), [&]() {
|
||||
metrics::Reset();
|
||||
rtc::scoped_refptr<TestAudioDeviceModule> fake_audio_device =
|
||||
TestAudioDeviceModule::Create(
|
||||
@ -307,7 +307,7 @@ void CallPerfTest::TestAudioVideoSync(FecMode fec,
|
||||
EXPECT_TRUE(observer->Wait())
|
||||
<< "Timed out while waiting for audio and video to be synchronized.";
|
||||
|
||||
SendTask(RTC_FROM_HERE, task_queue(), [&]() {
|
||||
SendTask(task_queue(), [&]() {
|
||||
// Clear the pointer to the receive stream since it will now be deleted.
|
||||
observer->set_receive_stream(nullptr);
|
||||
|
||||
@ -387,7 +387,7 @@ void CallPerfTest::TestCaptureNtpTime(
|
||||
int threshold_ms,
|
||||
int start_time_ms,
|
||||
int run_time_ms)
|
||||
: EndToEndTest(kLongTimeoutMs),
|
||||
: EndToEndTest(kLongTimeout),
|
||||
net_config_(net_config),
|
||||
clock_(Clock::GetRealTimeClock()),
|
||||
threshold_ms_(threshold_ms),
|
||||
@ -552,7 +552,7 @@ TEST_F(CallPerfTest, ReceivesCpuOveruseAndUnderuse) {
|
||||
class LoadObserver : public test::SendTest,
|
||||
public test::FrameGeneratorCapturer::SinkWantsObserver {
|
||||
public:
|
||||
LoadObserver() : SendTest(kLongTimeoutMs), test_phase_(TestPhase::kInit) {}
|
||||
LoadObserver() : SendTest(kLongTimeout), test_phase_(TestPhase::kInit) {}
|
||||
|
||||
void OnFrameGeneratorCapturerCreated(
|
||||
test::FrameGeneratorCapturer* frame_generator_capturer) override {
|
||||
@ -661,7 +661,7 @@ void CallPerfTest::TestMinTransmitBitrate(bool pad_to_min_bitrate) {
|
||||
public:
|
||||
explicit BitrateObserver(bool using_min_transmit_bitrate,
|
||||
TaskQueueBase* task_queue)
|
||||
: EndToEndTest(kLongTimeoutMs),
|
||||
: EndToEndTest(kLongTimeout),
|
||||
send_stream_(nullptr),
|
||||
converged_(false),
|
||||
pad_to_min_bitrate_(using_min_transmit_bitrate),
|
||||
@ -791,7 +791,7 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) {
|
||||
class BitrateObserver : public test::EndToEndTest, public test::FakeEncoder {
|
||||
public:
|
||||
explicit BitrateObserver(TaskQueueBase* task_queue)
|
||||
: EndToEndTest(kDefaultTimeoutMs),
|
||||
: EndToEndTest(kDefaultTimeout),
|
||||
FakeEncoder(Clock::GetRealTimeClock()),
|
||||
encoder_inits_(0),
|
||||
last_set_bitrate_kbps_(0),
|
||||
@ -867,10 +867,10 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) {
|
||||
}
|
||||
|
||||
void PerformTest() override {
|
||||
ASSERT_TRUE(time_to_reconfigure_.Wait(kDefaultTimeoutMs))
|
||||
ASSERT_TRUE(time_to_reconfigure_.Wait(kDefaultTimeout.ms()))
|
||||
<< "Timed out before receiving an initial high bitrate.";
|
||||
frame_generator_->ChangeResolution(kDefaultWidth * 2, kDefaultHeight * 2);
|
||||
SendTask(RTC_FROM_HERE, task_queue_, [&]() {
|
||||
SendTask(task_queue_, [&]() {
|
||||
send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy());
|
||||
});
|
||||
EXPECT_TRUE(Wait())
|
||||
@ -987,7 +987,7 @@ void CallPerfTest::TestMinAudioVideoBitrate(int test_bitrate_from,
|
||||
int64_t avg_rtt = 0;
|
||||
for (int i = 0; i < kBitrateMeasurements; i++) {
|
||||
Call::Stats call_stats;
|
||||
SendTask(RTC_FROM_HERE, task_queue_, [this, &call_stats]() {
|
||||
SendTask(task_queue_, [this, &call_stats]() {
|
||||
call_stats = sender_call_->GetStats();
|
||||
});
|
||||
avg_rtt += call_stats.rtt_ms;
|
||||
@ -1071,7 +1071,7 @@ void CallPerfTest::TestEncodeFramerate(VideoEncoderFactory* encoder_factory,
|
||||
absl::string_view payload_name,
|
||||
const std::vector<int>& max_framerates,
|
||||
TaskQueueBase* task_queue)
|
||||
: EndToEndTest(kDefaultTimeoutMs),
|
||||
: EndToEndTest(kDefaultTimeout),
|
||||
clock_(Clock::GetRealTimeClock()),
|
||||
encoder_factory_(encoder_factory),
|
||||
payload_name_(payload_name),
|
||||
|
@ -65,6 +65,10 @@ class FlexfecReceiveStream : public RtpPacketSinkInterface,
|
||||
// Perhaps this should be in ReceiveStreamInterface and apply to audio streams
|
||||
// as well (although there's no logic that would use it at present).
|
||||
virtual void SetRtcpMode(RtcpMode mode) = 0;
|
||||
|
||||
// Called to change the payload type after initialization.
|
||||
virtual void SetPayloadType(int payload_type) = 0;
|
||||
virtual int payload_type() const = 0;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -135,6 +135,7 @@ FlexfecReceiveStreamImpl::FlexfecReceiveStreamImpl(
|
||||
: extension_map_(std::move(config.rtp.extensions)),
|
||||
remote_ssrc_(config.rtp.remote_ssrc),
|
||||
transport_cc_(config.rtp.transport_cc),
|
||||
payload_type_(config.payload_type),
|
||||
receiver_(
|
||||
MaybeCreateFlexfecReceiver(clock, config, recovered_packet_receiver)),
|
||||
rtp_receive_statistics_(ReceiveStatistics::Create(clock)),
|
||||
@ -143,6 +144,7 @@ FlexfecReceiveStreamImpl::FlexfecReceiveStreamImpl(
|
||||
config,
|
||||
rtt_stats)) {
|
||||
RTC_LOG(LS_INFO) << "FlexfecReceiveStreamImpl: " << config.ToString();
|
||||
RTC_DCHECK_GE(payload_type_, -1);
|
||||
|
||||
packet_sequence_checker_.Detach();
|
||||
|
||||
@ -188,6 +190,17 @@ void FlexfecReceiveStreamImpl::OnRtpPacket(const RtpPacketReceived& packet) {
|
||||
}
|
||||
}
|
||||
|
||||
void FlexfecReceiveStreamImpl::SetPayloadType(int payload_type) {
|
||||
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
||||
RTC_DCHECK_GE(payload_type, -1);
|
||||
payload_type_ = payload_type;
|
||||
}
|
||||
|
||||
int FlexfecReceiveStreamImpl::payload_type() const {
|
||||
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
||||
return payload_type_;
|
||||
}
|
||||
|
||||
void FlexfecReceiveStreamImpl::SetRtpExtensions(
|
||||
std::vector<RtpExtension> extensions) {
|
||||
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
||||
|
@ -55,6 +55,10 @@ class FlexfecReceiveStreamImpl : public FlexfecReceiveStream {
|
||||
|
||||
// RtpPacketSinkInterface.
|
||||
void OnRtpPacket(const RtpPacketReceived& packet) override;
|
||||
|
||||
void SetPayloadType(int payload_type) override;
|
||||
int payload_type() const override;
|
||||
|
||||
// ReceiveStreamInterface impl.
|
||||
void SetRtpExtensions(std::vector<RtpExtension> extensions) override;
|
||||
RtpHeaderExtensionMap GetRtpExtensionMap() const override;
|
||||
@ -88,6 +92,10 @@ class FlexfecReceiveStreamImpl : public FlexfecReceiveStream {
|
||||
const uint32_t remote_ssrc_;
|
||||
bool transport_cc_ RTC_GUARDED_BY(packet_sequence_checker_);
|
||||
|
||||
// `payload_type_` is initially set to -1, indicating that FlexFec is
|
||||
// disabled.
|
||||
int payload_type_ RTC_GUARDED_BY(packet_sequence_checker_) = -1;
|
||||
|
||||
// Erasure code interfacing.
|
||||
const std::unique_ptr<FlexfecReceiver> receiver_;
|
||||
|
||||
|
7
third_party/libwebrtc/call/rampup_tests.cc
vendored
7
third_party/libwebrtc/call/rampup_tests.cc
vendored
@ -64,7 +64,7 @@ RampUpTester::RampUpTester(size_t num_video_streams,
|
||||
bool red,
|
||||
bool report_perf_stats,
|
||||
TaskQueueBase* task_queue)
|
||||
: EndToEndTest(test::CallTest::kLongTimeoutMs),
|
||||
: EndToEndTest(test::CallTest::kLongTimeout),
|
||||
clock_(Clock::GetRealTimeClock()),
|
||||
num_video_streams_(num_video_streams),
|
||||
num_audio_streams_(num_audio_streams),
|
||||
@ -362,15 +362,14 @@ void RampUpTester::TriggerTestDone() {
|
||||
|
||||
// Stop polling stats.
|
||||
// Corner case for field_trials=WebRTC-QuickPerfTest/Enabled/
|
||||
SendTask(RTC_FROM_HERE, task_queue_, [this] { pending_task_.Stop(); });
|
||||
SendTask(task_queue_, [this] { pending_task_.Stop(); });
|
||||
|
||||
// TODO(holmer): Add audio send stats here too when those APIs are available.
|
||||
if (!send_stream_)
|
||||
return;
|
||||
|
||||
VideoSendStream::Stats send_stats;
|
||||
SendTask(RTC_FROM_HERE, task_queue_,
|
||||
[&] { send_stats = send_stream_->GetStats(); });
|
||||
SendTask(task_queue_, [&] { send_stats = send_stream_->GetStats(); });
|
||||
|
||||
send_stream_ = nullptr; // To avoid dereferencing a bad pointer.
|
||||
|
||||
|
@ -280,8 +280,11 @@ void RtpTransportControllerSend::OnNetworkRouteChanged(
|
||||
ApplyOrLiftRelayCap(IsRelayed(network_route));
|
||||
|
||||
// Check whether the network route has changed on each transport.
|
||||
auto result =
|
||||
network_routes_.insert(std::make_pair(transport_name, network_route));
|
||||
auto result = network_routes_.insert(
|
||||
// Explicit conversion of transport_name to std::string here is necessary
|
||||
// to support some platforms that cannot yet deal with implicit
|
||||
// conversion in these types of situations.
|
||||
std::make_pair(std::string(transport_name), network_route));
|
||||
auto kv = result.first;
|
||||
bool inserted = result.second;
|
||||
if (inserted || !(kv->second == network_route)) {
|
||||
|
10
third_party/libwebrtc/call/rtp_video_sender.cc
vendored
10
third_party/libwebrtc/call/rtp_video_sender.cc
vendored
@ -511,7 +511,7 @@ void RtpVideoSender::SetActiveModulesLocked(
|
||||
}
|
||||
|
||||
RtpRtcpInterface& rtp_module = *rtp_streams_[i].rtp_rtcp;
|
||||
const bool was_active = rtp_module.SendingMedia();
|
||||
const bool was_active = rtp_module.Sending();
|
||||
const bool should_be_active = active_modules[i];
|
||||
|
||||
// Sends a kRtcpByeCode when going from true to false.
|
||||
@ -669,6 +669,14 @@ void RtpVideoSender::OnVideoLayersAllocationUpdated(
|
||||
stream_allocation.rtp_stream_index = i;
|
||||
rtp_streams_[i].sender_video->SetVideoLayersAllocation(
|
||||
std::move(stream_allocation));
|
||||
// Only send video frames on the rtp module if the encoder is configured
|
||||
// to send. This is to prevent stray frames to be sent after an encoder
|
||||
// has been reconfigured.
|
||||
rtp_streams_[i].rtp_rtcp->SetSendingMediaStatus(
|
||||
absl::c_any_of(allocation.active_spatial_layers,
|
||||
[&i](const VideoLayersAllocation::SpatialLayer layer) {
|
||||
return layer.rtp_stream_index == static_cast<int>(i);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ class RtpVideoSenderTestFixture {
|
||||
// SendTask().
|
||||
void RunOnTransportQueue(absl::AnyInvocable<void() &&> task) {
|
||||
transport_controller_.GetWorkerQueue()->PostTask(std::move(task));
|
||||
AdvanceTime(TimeDelta::Millis(0));
|
||||
AdvanceTime(TimeDelta::Zero());
|
||||
}
|
||||
|
||||
private:
|
||||
@ -330,6 +330,41 @@ TEST(RtpVideoSenderTest, SendSimulcastSetActiveModules) {
|
||||
test.router()->OnEncodedImage(encoded_image_1, &codec_info).error);
|
||||
}
|
||||
|
||||
TEST(
|
||||
RtpVideoSenderTest,
|
||||
DiscardsHigherSpatialVideoFramesAfterLayerDisabledInVideoLayersAllocation) {
|
||||
constexpr uint8_t kPayload = 'a';
|
||||
EncodedImage encoded_image_1;
|
||||
encoded_image_1.SetTimestamp(1);
|
||||
encoded_image_1.capture_time_ms_ = 2;
|
||||
encoded_image_1._frameType = VideoFrameType::kVideoFrameKey;
|
||||
encoded_image_1.SetEncodedData(EncodedImageBuffer::Create(&kPayload, 1));
|
||||
EncodedImage encoded_image_2(encoded_image_1);
|
||||
encoded_image_2.SetSpatialIndex(1);
|
||||
CodecSpecificInfo codec_info;
|
||||
codec_info.codecType = kVideoCodecVP8;
|
||||
RtpVideoSenderTestFixture test({kSsrc1, kSsrc2}, {kRtxSsrc1, kRtxSsrc2},
|
||||
kPayloadType, {});
|
||||
test.SetActiveModules({true, true});
|
||||
// A layer is sent on both rtp streams.
|
||||
test.router()->OnVideoLayersAllocationUpdated(
|
||||
{.active_spatial_layers = {{.rtp_stream_index = 0},
|
||||
{.rtp_stream_index = 1}}});
|
||||
|
||||
EXPECT_EQ(EncodedImageCallback::Result::OK,
|
||||
test.router()->OnEncodedImage(encoded_image_1, &codec_info).error);
|
||||
EXPECT_EQ(EncodedImageCallback::Result::OK,
|
||||
test.router()->OnEncodedImage(encoded_image_2, &codec_info).error);
|
||||
|
||||
// Only rtp stream index 0 is configured to send a stream.
|
||||
test.router()->OnVideoLayersAllocationUpdated(
|
||||
{.active_spatial_layers = {{.rtp_stream_index = 0}}});
|
||||
EXPECT_EQ(EncodedImageCallback::Result::OK,
|
||||
test.router()->OnEncodedImage(encoded_image_1, &codec_info).error);
|
||||
EXPECT_NE(EncodedImageCallback::Result::OK,
|
||||
test.router()->OnEncodedImage(encoded_image_2, &codec_info).error);
|
||||
}
|
||||
|
||||
TEST(RtpVideoSenderTest, CreateWithNoPreviousStates) {
|
||||
RtpVideoSenderTestFixture test({kSsrc1, kSsrc2}, {kRtxSsrc1, kRtxSsrc2},
|
||||
kPayloadType, {});
|
||||
|
14
third_party/libwebrtc/call/rtx_receive_stream.cc
vendored
14
third_party/libwebrtc/call/rtx_receive_stream.cc
vendored
@ -32,6 +32,7 @@ RtxReceiveStream::RtxReceiveStream(
|
||||
associated_payload_types_(std::move(associated_payload_types)),
|
||||
media_ssrc_(media_ssrc),
|
||||
rtp_receive_statistics_(rtp_receive_statistics) {
|
||||
packet_checker_.Detach();
|
||||
if (associated_payload_types_.empty()) {
|
||||
RTC_LOG(LS_WARNING)
|
||||
<< "RtxReceiveStream created with empty payload type mapping.";
|
||||
@ -40,7 +41,14 @@ RtxReceiveStream::RtxReceiveStream(
|
||||
|
||||
RtxReceiveStream::~RtxReceiveStream() = default;
|
||||
|
||||
void RtxReceiveStream::SetAssociatedPayloadTypes(
|
||||
std::map<int, int> associated_payload_types) {
|
||||
RTC_DCHECK_RUN_ON(&packet_checker_);
|
||||
associated_payload_types_ = std::move(associated_payload_types);
|
||||
}
|
||||
|
||||
void RtxReceiveStream::OnRtpPacket(const RtpPacketReceived& rtx_packet) {
|
||||
RTC_DCHECK_RUN_ON(&packet_checker_);
|
||||
if (rtp_receive_statistics_) {
|
||||
rtp_receive_statistics_->OnRtpPacket(rtx_packet);
|
||||
}
|
||||
@ -52,9 +60,9 @@ void RtxReceiveStream::OnRtpPacket(const RtpPacketReceived& rtx_packet) {
|
||||
|
||||
auto it = associated_payload_types_.find(rtx_packet.PayloadType());
|
||||
if (it == associated_payload_types_.end()) {
|
||||
RTC_LOG(LS_VERBOSE) << "Unknown payload type "
|
||||
<< static_cast<int>(rtx_packet.PayloadType())
|
||||
<< " on rtx ssrc " << rtx_packet.Ssrc();
|
||||
RTC_DLOG(LS_VERBOSE) << "Unknown payload type "
|
||||
<< static_cast<int>(rtx_packet.PayloadType())
|
||||
<< " on rtx ssrc " << rtx_packet.Ssrc();
|
||||
return;
|
||||
}
|
||||
RtpPacketReceived media_packet;
|
||||
|
10
third_party/libwebrtc/call/rtx_receive_stream.h
vendored
10
third_party/libwebrtc/call/rtx_receive_stream.h
vendored
@ -14,7 +14,9 @@
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
|
||||
#include "api/sequence_checker.h"
|
||||
#include "call/rtp_packet_sink_interface.h"
|
||||
#include "rtc_base/system/no_unique_address.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -33,13 +35,19 @@ class RtxReceiveStream : public RtpPacketSinkInterface {
|
||||
// RtpStreamReceiverController.
|
||||
ReceiveStatistics* rtp_receive_statistics = nullptr);
|
||||
~RtxReceiveStream() override;
|
||||
|
||||
// Update payload types post construction. Must be called from the same
|
||||
// calling context as `OnRtpPacket` is called on.
|
||||
void SetAssociatedPayloadTypes(std::map<int, int> associated_payload_types);
|
||||
|
||||
// RtpPacketSinkInterface.
|
||||
void OnRtpPacket(const RtpPacketReceived& packet) override;
|
||||
|
||||
private:
|
||||
RTC_NO_UNIQUE_ADDRESS SequenceChecker packet_checker_;
|
||||
RtpPacketSinkInterface* const media_sink_;
|
||||
// Map from rtx payload type -> media payload type.
|
||||
const std::map<int, int> associated_payload_types_;
|
||||
std::map<int, int> associated_payload_types_ RTC_GUARDED_BY(&packet_checker_);
|
||||
// TODO(nisse): Ultimately, the media receive stream shouldn't care about the
|
||||
// ssrc, and we should delete this.
|
||||
const uint32_t media_ssrc_;
|
||||
|
@ -40,7 +40,7 @@ TEST(SimulatedNetworkTest, CodelDoesNothingAtCapacity) {
|
||||
packet_size / link_capacity + TimeDelta::Millis(1);
|
||||
|
||||
// Send at capacity and see we get no loss.
|
||||
Timestamp start_time = Timestamp::Millis(0);
|
||||
Timestamp start_time = Timestamp::Zero();
|
||||
Timestamp current_time = start_time;
|
||||
Timestamp next_packet_time = start_time;
|
||||
uint64_t next_id = 0;
|
||||
@ -94,7 +94,7 @@ TEST(SimulatedNetworkTest, CodelLimitsDelayAndDropsPacketsOnOverload) {
|
||||
const DataSize packet_size = overload_rate * link_capacity * packet_inverval;
|
||||
// Send above capacity and see delays are still controlled at the cost of
|
||||
// packet loss.
|
||||
Timestamp start_time = Timestamp::Millis(0);
|
||||
Timestamp start_time = Timestamp::Zero();
|
||||
Timestamp current_time = start_time;
|
||||
Timestamp next_packet_time = start_time;
|
||||
Timestamp last_check = start_time;
|
||||
|
2
third_party/libwebrtc/call/version.cc
vendored
2
third_party/libwebrtc/call/version.cc
vendored
@ -13,7 +13,7 @@
|
||||
namespace webrtc {
|
||||
|
||||
// The timestamp is always in UTC.
|
||||
const char* const kSourceTimestamp = "WebRTC source stamp 2022-07-21T04:04:55";
|
||||
const char* const kSourceTimestamp = "WebRTC source stamp 2022-08-16T04:04:57";
|
||||
|
||||
void LoadWebRTCVersionInRegister() {
|
||||
// Using volatile to instruct the compiler to not optimize `p` away even
|
||||
|
@ -108,11 +108,11 @@ class VideoReceiveStreamInterface : public MediaReceiveStreamInterface {
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcreceivedrtpstreamstats-packetsdiscarded
|
||||
uint64_t packets_discarded = 0;
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totaldecodetime
|
||||
webrtc::TimeDelta total_decode_time = webrtc::TimeDelta::Millis(0);
|
||||
TimeDelta total_decode_time = TimeDelta::Zero();
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalprocessingdelay
|
||||
webrtc::TimeDelta total_processing_delay = webrtc::TimeDelta::Millis(0);
|
||||
TimeDelta total_processing_delay = TimeDelta::Zero();
|
||||
// TODO(bugs.webrtc.org/13986): standardize
|
||||
webrtc::TimeDelta total_assembly_time = webrtc::TimeDelta::Millis(0);
|
||||
TimeDelta total_assembly_time = TimeDelta::Zero();
|
||||
uint32_t frames_assembled_from_multiple_packets = 0;
|
||||
// Total inter frame delay in seconds.
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalinterframedelay
|
||||
@ -303,6 +303,30 @@ class VideoReceiveStreamInterface : public MediaReceiveStreamInterface {
|
||||
|
||||
virtual void SetRtcpMode(RtcpMode mode) = 0;
|
||||
|
||||
// Sets or clears a flexfec RTP sink. This affects `rtp.packet_sink_` and
|
||||
// `rtp.protected_by_flexfec` parts of the configuration. Must be called on
|
||||
// the packet delivery thread.
|
||||
// TODO(bugs.webrtc.org/11993): Packet delivery thread today means `worker
|
||||
// thread` but will be `network thread`.
|
||||
virtual void SetFlexFecProtection(RtpPacketSinkInterface* flexfec_sink) = 0;
|
||||
|
||||
// Turns on/off loss notifications. Must be called on the packet delivery
|
||||
// thread.
|
||||
virtual void SetLossNotificationEnabled(bool enabled) = 0;
|
||||
|
||||
// Modify `rtp.nack.rtp_history_ms` post construction. Setting this value
|
||||
// to 0 disables nack.
|
||||
// Must be called on the packet delivery thread.
|
||||
virtual void SetNackHistory(TimeDelta history) = 0;
|
||||
|
||||
virtual void SetProtectionPayloadTypes(int red_payload_type,
|
||||
int ulpfec_payload_type) = 0;
|
||||
|
||||
virtual void SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) = 0;
|
||||
|
||||
virtual void SetAssociatedPayloadTypes(
|
||||
std::map<int, int> associated_payload_types) = 0;
|
||||
|
||||
protected:
|
||||
virtual ~VideoReceiveStreamInterface() {}
|
||||
};
|
||||
|
@ -143,16 +143,13 @@ void RunAudioConverterTest(size_t src_channels,
|
||||
}
|
||||
|
||||
TEST(AudioConverterTest, ConversionsPassSNRThreshold) {
|
||||
const int kSampleRates[] = {8000, 16000, 32000, 44100, 48000};
|
||||
const size_t kChannels[] = {1, 2};
|
||||
for (size_t src_rate = 0; src_rate < arraysize(kSampleRates); ++src_rate) {
|
||||
for (size_t dst_rate = 0; dst_rate < arraysize(kSampleRates); ++dst_rate) {
|
||||
for (size_t src_channel = 0; src_channel < arraysize(kChannels);
|
||||
++src_channel) {
|
||||
for (size_t dst_channel = 0; dst_channel < arraysize(kChannels);
|
||||
++dst_channel) {
|
||||
RunAudioConverterTest(kChannels[src_channel], kSampleRates[src_rate],
|
||||
kChannels[dst_channel], kSampleRates[dst_rate]);
|
||||
const int kSampleRates[] = {8000, 11025, 16000, 22050, 32000, 44100, 48000};
|
||||
const int kChannels[] = {1, 2};
|
||||
for (int src_rate : kSampleRates) {
|
||||
for (int dst_rate : kSampleRates) {
|
||||
for (size_t src_channels : kChannels) {
|
||||
for (size_t dst_channels : kChannels) {
|
||||
RunAudioConverterTest(src_channels, src_rate, dst_channels, dst_rate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,42 +20,6 @@
|
||||
#include "rtc_base/checks.h"
|
||||
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
// These checks were factored out into a non-templatized function
|
||||
// due to problems with clang on Windows in debug builds.
|
||||
// For some reason having the DCHECKs inline in the template code
|
||||
// caused the compiler to generate code that threw off the linker.
|
||||
// TODO(tommi): Re-enable when we've figured out what the problem is.
|
||||
// http://crbug.com/615050
|
||||
void CheckValidInitParams(int src_sample_rate_hz,
|
||||
int dst_sample_rate_hz,
|
||||
size_t num_channels) {
|
||||
// The below checks are temporarily disabled on WEBRTC_WIN due to problems
|
||||
// with clang debug builds.
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__)
|
||||
RTC_DCHECK_GT(src_sample_rate_hz, 0);
|
||||
RTC_DCHECK_GT(dst_sample_rate_hz, 0);
|
||||
RTC_DCHECK_GT(num_channels, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void CheckExpectedBufferSizes(size_t src_length,
|
||||
size_t dst_capacity,
|
||||
size_t num_channels,
|
||||
int src_sample_rate,
|
||||
int dst_sample_rate) {
|
||||
// The below checks are temporarily disabled on WEBRTC_WIN due to problems
|
||||
// with clang debug builds.
|
||||
// TODO(tommi): Re-enable when we've figured out what the problem is.
|
||||
// http://crbug.com/615050
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__)
|
||||
const size_t src_size_10ms = src_sample_rate * num_channels / 100;
|
||||
const size_t dst_size_10ms = dst_sample_rate * num_channels / 100;
|
||||
RTC_DCHECK_EQ(src_length, src_size_10ms);
|
||||
RTC_DCHECK_GE(dst_capacity, dst_size_10ms);
|
||||
#endif
|
||||
}
|
||||
} // namespace
|
||||
|
||||
template <typename T>
|
||||
PushResampler<T>::PushResampler()
|
||||
@ -68,7 +32,11 @@ template <typename T>
|
||||
int PushResampler<T>::InitializeIfNeeded(int src_sample_rate_hz,
|
||||
int dst_sample_rate_hz,
|
||||
size_t num_channels) {
|
||||
CheckValidInitParams(src_sample_rate_hz, dst_sample_rate_hz, num_channels);
|
||||
// These checks used to be factored out of this template function due to
|
||||
// Windows debug build issues with clang. http://crbug.com/615050
|
||||
RTC_DCHECK_GT(src_sample_rate_hz, 0);
|
||||
RTC_DCHECK_GT(dst_sample_rate_hz, 0);
|
||||
RTC_DCHECK_GT(num_channels, 0);
|
||||
|
||||
if (src_sample_rate_hz == src_sample_rate_hz_ &&
|
||||
dst_sample_rate_hz == dst_sample_rate_hz_ &&
|
||||
@ -109,8 +77,12 @@ int PushResampler<T>::Resample(const T* src,
|
||||
size_t src_length,
|
||||
T* dst,
|
||||
size_t dst_capacity) {
|
||||
CheckExpectedBufferSizes(src_length, dst_capacity, num_channels_,
|
||||
src_sample_rate_hz_, dst_sample_rate_hz_);
|
||||
// These checks used to be factored out of this template function due to
|
||||
// Windows debug build issues with clang. http://crbug.com/615050
|
||||
const size_t src_size_10ms = (src_sample_rate_hz_ / 100) * num_channels_;
|
||||
const size_t dst_size_10ms = (dst_sample_rate_hz_ / 100) * num_channels_;
|
||||
RTC_DCHECK_EQ(src_length, src_size_10ms);
|
||||
RTC_DCHECK_GE(dst_capacity, dst_size_10ms);
|
||||
|
||||
if (src_sample_rate_hz_ == dst_sample_rate_hz_) {
|
||||
// The old resampler provides this memcpy facility in the case of matching
|
||||
|
@ -14,15 +14,10 @@
|
||||
#include "test/gtest.h"
|
||||
#include "test/testsupport/rtc_expect_death.h"
|
||||
|
||||
// Quality testing of PushResampler is handled through output_mixer_unittest.cc.
|
||||
// Quality testing of PushResampler is done in audio/remix_resample_unittest.cc.
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// The below tests are temporarily disabled on WEBRTC_WIN due to problems
|
||||
// with clang debug builds.
|
||||
// TODO(tommi): Re-enable when we've figured out what the problem is.
|
||||
// http://crbug.com/615050
|
||||
#if !defined(WEBRTC_WIN) && defined(__clang__) && !defined(NDEBUG)
|
||||
TEST(PushResamplerTest, VerifiesInputParameters) {
|
||||
PushResampler<int16_t> resampler;
|
||||
EXPECT_EQ(0, resampler.InitializeIfNeeded(16000, 16000, 1));
|
||||
@ -48,8 +43,6 @@ TEST(PushResamplerDeathTest, VerifiesBadInputParameters3) {
|
||||
RTC_EXPECT_DEATH(resampler.InitializeIfNeeded(16000, 16000, 0),
|
||||
"num_channels");
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -242,7 +242,7 @@ void PushSincResamplerTest::ResampleTest(bool int_format) {
|
||||
EXPECT_LE(low_freq_max_error, low_freq_error_);
|
||||
|
||||
// All conversions currently have a high frequency error around -6 dbFS.
|
||||
static const double kHighFrequencyMaxError = -6.02;
|
||||
static const double kHighFrequencyMaxError = -6.01;
|
||||
EXPECT_LE(high_freq_max_error, kHighFrequencyMaxError);
|
||||
}
|
||||
|
||||
@ -263,13 +263,34 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
// First run through the rates tested in SincResamplerTest. The
|
||||
// thresholds are identical.
|
||||
//
|
||||
// We don't test rates which fail to provide an integer number of
|
||||
// samples in a 10 ms block (22050 and 11025 Hz). WebRTC doesn't support
|
||||
// these rates in any case (for the same reason).
|
||||
// We don't directly test rates which fail to provide an integer number
|
||||
// of samples in a 10 ms block (22050 and 11025 Hz), they are replaced
|
||||
// by nearby rates in order to simplify testing.
|
||||
//
|
||||
// The PushSincResampler is in practice sample rate agnostic and derives
|
||||
// resampling ratios from the block size, which for WebRTC purposes are
|
||||
// blocks of floor(sample_rate/100) samples. So the 22050 Hz case is
|
||||
// treated identically to the 22000 Hz case. Direct tests of 22050 Hz
|
||||
// have to account for the simulated clock drift induced by the
|
||||
// resampler inferring an incorrect sample rate ratio, without testing
|
||||
// anything new within the resampler itself.
|
||||
|
||||
// To 22kHz
|
||||
std::make_tuple(8000, 22000, kResamplingRMSError, -62.73),
|
||||
std::make_tuple(11000, 22000, kResamplingRMSError, -74.17),
|
||||
std::make_tuple(16000, 22000, kResamplingRMSError, -62.54),
|
||||
std::make_tuple(22000, 22000, kResamplingRMSError, -73.53),
|
||||
std::make_tuple(32000, 22000, kResamplingRMSError, -46.45),
|
||||
std::make_tuple(44100, 22000, kResamplingRMSError, -28.34),
|
||||
std::make_tuple(48000, 22000, -15.01, -25.56),
|
||||
std::make_tuple(96000, 22000, -18.49, -13.30),
|
||||
std::make_tuple(192000, 22000, -20.50, -9.20),
|
||||
|
||||
// To 44.1kHz
|
||||
::testing::make_tuple(8000, 44100, kResamplingRMSError, -62.73),
|
||||
::testing::make_tuple(11000, 44100, kResamplingRMSError, -63.57),
|
||||
::testing::make_tuple(16000, 44100, kResamplingRMSError, -62.54),
|
||||
::testing::make_tuple(22000, 44100, kResamplingRMSError, -62.73),
|
||||
::testing::make_tuple(32000, 44100, kResamplingRMSError, -63.32),
|
||||
::testing::make_tuple(44100, 44100, kResamplingRMSError, -73.53),
|
||||
::testing::make_tuple(48000, 44100, -15.01, -64.04),
|
||||
@ -278,7 +299,9 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
|
||||
// To 48kHz
|
||||
::testing::make_tuple(8000, 48000, kResamplingRMSError, -63.43),
|
||||
::testing::make_tuple(11000, 48000, kResamplingRMSError, -63.96),
|
||||
::testing::make_tuple(16000, 48000, kResamplingRMSError, -63.96),
|
||||
::testing::make_tuple(22000, 48000, kResamplingRMSError, -63.80),
|
||||
::testing::make_tuple(32000, 48000, kResamplingRMSError, -64.04),
|
||||
::testing::make_tuple(44100, 48000, kResamplingRMSError, -62.63),
|
||||
::testing::make_tuple(48000, 48000, kResamplingRMSError, -73.52),
|
||||
@ -287,7 +310,9 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
|
||||
// To 96kHz
|
||||
::testing::make_tuple(8000, 96000, kResamplingRMSError, -63.19),
|
||||
::testing::make_tuple(11000, 96000, kResamplingRMSError, -63.89),
|
||||
::testing::make_tuple(16000, 96000, kResamplingRMSError, -63.39),
|
||||
::testing::make_tuple(22000, 96000, kResamplingRMSError, -63.39),
|
||||
::testing::make_tuple(32000, 96000, kResamplingRMSError, -63.95),
|
||||
::testing::make_tuple(44100, 96000, kResamplingRMSError, -62.63),
|
||||
::testing::make_tuple(48000, 96000, kResamplingRMSError, -73.52),
|
||||
@ -296,7 +321,9 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
|
||||
// To 192kHz
|
||||
::testing::make_tuple(8000, 192000, kResamplingRMSError, -63.10),
|
||||
::testing::make_tuple(11000, 192000, kResamplingRMSError, -63.17),
|
||||
::testing::make_tuple(16000, 192000, kResamplingRMSError, -63.14),
|
||||
::testing::make_tuple(22000, 192000, kResamplingRMSError, -63.14),
|
||||
::testing::make_tuple(32000, 192000, kResamplingRMSError, -63.38),
|
||||
::testing::make_tuple(44100, 192000, kResamplingRMSError, -62.63),
|
||||
::testing::make_tuple(48000, 192000, kResamplingRMSError, -73.44),
|
||||
@ -318,7 +345,9 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
|
||||
// To 16 kHz
|
||||
::testing::make_tuple(8000, 16000, kResamplingRMSError, -70.30),
|
||||
::testing::make_tuple(11000, 16000, kResamplingRMSError, -72.31),
|
||||
::testing::make_tuple(16000, 16000, kResamplingRMSError, -75.51),
|
||||
::testing::make_tuple(22000, 16000, kResamplingRMSError, -52.08),
|
||||
::testing::make_tuple(32000, 16000, -18.48, -28.59),
|
||||
::testing::make_tuple(44100, 16000, -19.30, -19.67),
|
||||
::testing::make_tuple(48000, 16000, -19.81, -18.11),
|
||||
@ -326,7 +355,9 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
|
||||
// To 32 kHz
|
||||
::testing::make_tuple(8000, 32000, kResamplingRMSError, -70.30),
|
||||
::testing::make_tuple(11000, 32000, kResamplingRMSError, -71.34),
|
||||
::testing::make_tuple(16000, 32000, kResamplingRMSError, -75.51),
|
||||
::testing::make_tuple(22000, 32000, kResamplingRMSError, -72.05),
|
||||
::testing::make_tuple(32000, 32000, kResamplingRMSError, -75.51),
|
||||
::testing::make_tuple(44100, 32000, -16.44, -51.0349),
|
||||
::testing::make_tuple(48000, 32000, -16.90, -43.9967),
|
||||
|
@ -258,7 +258,7 @@ TEST_P(SincResamplerTest, Resample) {
|
||||
SincResampler resampler(io_ratio, SincResampler::kDefaultRequestSize,
|
||||
&resampler_source);
|
||||
|
||||
// Force an update to the sample rate ratio to ensure dyanmic sample rate
|
||||
// Force an update to the sample rate ratio to ensure dynamic sample rate
|
||||
// changes are working correctly.
|
||||
std::unique_ptr<float[]> kernel(new float[SincResampler::kKernelStorageSize]);
|
||||
memcpy(kernel.get(), resampler.get_kernel_for_testing(),
|
||||
@ -335,6 +335,17 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
SincResamplerTest,
|
||||
SincResamplerTest,
|
||||
::testing::Values(
|
||||
// To 22.05kHz
|
||||
std::make_tuple(8000, 22050, kResamplingRMSError, -62.73),
|
||||
std::make_tuple(11025, 22050, kResamplingRMSError, -72.19),
|
||||
std::make_tuple(16000, 22050, kResamplingRMSError, -62.54),
|
||||
std::make_tuple(22050, 22050, kResamplingRMSError, -73.53),
|
||||
std::make_tuple(32000, 22050, kResamplingRMSError, -46.45),
|
||||
std::make_tuple(44100, 22050, kResamplingRMSError, -28.49),
|
||||
std::make_tuple(48000, 22050, -15.01, -25.56),
|
||||
std::make_tuple(96000, 22050, -18.49, -13.42),
|
||||
std::make_tuple(192000, 22050, -20.50, -9.23),
|
||||
|
||||
// To 44.1kHz
|
||||
std::make_tuple(8000, 44100, kResamplingRMSError, -62.73),
|
||||
std::make_tuple(11025, 44100, kResamplingRMSError, -72.19),
|
||||
|
13
third_party/libwebrtc/common_video/BUILD.gn
vendored
13
third_party/libwebrtc/common_video/BUILD.gn
vendored
@ -74,16 +74,19 @@ rtc_library("common_video") {
|
||||
"../rtc_base/synchronization:mutex",
|
||||
"../rtc_base/system:rtc_export",
|
||||
"../system_wrappers:metrics",
|
||||
#"//third_party/libyuv",
|
||||
"//third_party/libyuv",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "//third_party/libyuv" ]
|
||||
include_dirs = [
|
||||
"/media/libyuv",
|
||||
"/media/libyuv/libyuv/include",
|
||||
]
|
||||
}
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/numeric:bits",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
include_dirs = [
|
||||
"/media/libyuv",
|
||||
"/media/libyuv/libyuv/include",
|
||||
]
|
||||
}
|
||||
|
||||
rtc_source_set("frame_counts") {
|
||||
|
2
third_party/libwebrtc/examples/BUILD.gn
vendored
2
third_party/libwebrtc/examples/BUILD.gn
vendored
@ -693,6 +693,8 @@ if (is_linux || is_chromeos || is_win) {
|
||||
"../api:scoped_refptr",
|
||||
"../api/audio:audio_mixer_api",
|
||||
"../api/audio_codecs:audio_codecs_api",
|
||||
"../api/task_queue:pending_task_safety_flag",
|
||||
"../api/units:time_delta",
|
||||
"../api/video:video_frame",
|
||||
"../api/video:video_rtp_headers",
|
||||
"../api/video_codecs:video_codecs_api",
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include "examples/peerconnection/client/peer_connection_client.h"
|
||||
|
||||
#include "api/units/time_delta.h"
|
||||
#include "examples/peerconnection/client/defaults.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/logging.h"
|
||||
@ -18,9 +19,9 @@
|
||||
namespace {
|
||||
|
||||
// This is our magical hangup signal.
|
||||
const char kByeMessage[] = "BYE";
|
||||
constexpr char kByeMessage[] = "BYE";
|
||||
// Delay between server connection retries, in milliseconds
|
||||
const int kReconnectDelay = 2000;
|
||||
constexpr webrtc::TimeDelta kReconnectDelay = webrtc::TimeDelta::Seconds(2);
|
||||
|
||||
rtc::Socket* CreateClientSocket(int family) {
|
||||
rtc::Thread* thread = rtc::Thread::Current();
|
||||
@ -33,9 +34,7 @@ rtc::Socket* CreateClientSocket(int family) {
|
||||
PeerConnectionClient::PeerConnectionClient()
|
||||
: callback_(NULL), resolver_(NULL), state_(NOT_CONNECTED), my_id_(-1) {}
|
||||
|
||||
PeerConnectionClient::~PeerConnectionClient() {
|
||||
rtc::Thread::Current()->Clear(this);
|
||||
}
|
||||
PeerConnectionClient::~PeerConnectionClient() = default;
|
||||
|
||||
void PeerConnectionClient::InitSocketSignals() {
|
||||
RTC_DCHECK(control_socket_.get() != NULL);
|
||||
@ -480,16 +479,11 @@ void PeerConnectionClient::OnClose(rtc::Socket* socket, int err) {
|
||||
} else {
|
||||
if (socket == control_socket_.get()) {
|
||||
RTC_LOG(LS_WARNING) << "Connection refused; retrying in 2 seconds";
|
||||
rtc::Thread::Current()->PostDelayed(RTC_FROM_HERE, kReconnectDelay, this,
|
||||
0);
|
||||
rtc::Thread::Current()->PostDelayedTask(
|
||||
SafeTask(safety_.flag(), [this] { DoConnect(); }), kReconnectDelay);
|
||||
} else {
|
||||
Close();
|
||||
callback_->OnDisconnected();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PeerConnectionClient::OnMessage(rtc::Message* msg) {
|
||||
// ignore msg; there is currently only one supported message ("retry")
|
||||
DoConnect();
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "api/task_queue/pending_task_safety_flag.h"
|
||||
#include "rtc_base/net_helpers.h"
|
||||
#include "rtc_base/physical_socket_server.h"
|
||||
#include "rtc_base/third_party/sigslot/sigslot.h"
|
||||
@ -34,8 +35,7 @@ struct PeerConnectionClientObserver {
|
||||
virtual ~PeerConnectionClientObserver() {}
|
||||
};
|
||||
|
||||
class PeerConnectionClient : public sigslot::has_slots<>,
|
||||
public rtc::MessageHandler {
|
||||
class PeerConnectionClient : public sigslot::has_slots<> {
|
||||
public:
|
||||
enum State {
|
||||
NOT_CONNECTED,
|
||||
@ -65,9 +65,6 @@ class PeerConnectionClient : public sigslot::has_slots<>,
|
||||
|
||||
bool SignOut();
|
||||
|
||||
// implements the MessageHandler interface
|
||||
void OnMessage(rtc::Message* msg);
|
||||
|
||||
protected:
|
||||
void DoConnect();
|
||||
void Close();
|
||||
@ -126,6 +123,7 @@ class PeerConnectionClient : public sigslot::has_slots<>,
|
||||
Peers peers_;
|
||||
State state_;
|
||||
int my_id_;
|
||||
webrtc::ScopedTaskSafety safety_;
|
||||
};
|
||||
|
||||
#endif // EXAMPLES_PEERCONNECTION_CLIENT_PEER_CONNECTION_CLIENT_H_
|
||||
|
@ -660,7 +660,7 @@ mac_builder, mac_try_job = normal_builder_factory(
|
||||
)
|
||||
|
||||
ios_builder, ios_try_job = normal_builder_factory(
|
||||
dimensions = {"os": "Mac-11"},
|
||||
dimensions = {"os": "Mac"},
|
||||
properties = {"xcode_build_version": WEBRTC_XCODE13},
|
||||
caches = [swarming.cache(
|
||||
name = "xcode_ios_" + WEBRTC_XCODE13,
|
||||
|
@ -1602,7 +1602,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.ci"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -1656,7 +1656,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.ci"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -1710,7 +1710,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.ci"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -1764,7 +1764,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.ci"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -1818,7 +1818,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.ci"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -1872,7 +1872,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.ci"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -3539,7 +3539,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.try"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -3593,7 +3593,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.try"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -3647,7 +3647,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.try"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -3701,7 +3701,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.try"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -3755,7 +3755,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.try"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
@ -3809,7 +3809,7 @@ buckets {
|
||||
swarming_host: "chromium-swarm.appspot.com"
|
||||
swarming_tags: "vpython:native-python-wrapper"
|
||||
dimensions: "cpu:x86-64"
|
||||
dimensions: "os:Mac-11"
|
||||
dimensions: "os:Mac"
|
||||
dimensions: "pool:luci.webrtc.try"
|
||||
exe {
|
||||
cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
|
||||
|
@ -7,7 +7,7 @@
|
||||
name: "webrtc"
|
||||
access: "group:all"
|
||||
lucicfg {
|
||||
version: "1.30.11"
|
||||
version: "1.32.1"
|
||||
package_dir: "."
|
||||
config_dir: "."
|
||||
entry_point: "config.star"
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "logging/rtc_event_log/events/rtc_event_probe_cluster_created.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_probe_result_failure.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_probe_result_success.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_remote_estimate.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h"
|
||||
@ -44,7 +45,6 @@
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/app.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/bye.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/common_header.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/psfb.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
|
||||
@ -332,6 +332,11 @@ std::string RtcEventLogEncoderLegacy::Encode(const RtcEvent& event) {
|
||||
return EncodeProbeResultSuccess(rtc_event);
|
||||
}
|
||||
|
||||
case RtcEvent::Type::RemoteEstimateEvent: {
|
||||
auto& rtc_event = static_cast<const RtcEventRemoteEstimate&>(event);
|
||||
return EncodeRemoteEstimate(rtc_event);
|
||||
}
|
||||
|
||||
case RtcEvent::Type::RtcpPacketIncoming: {
|
||||
auto& rtc_event = static_cast<const RtcEventRtcpPacketIncoming&>(event);
|
||||
return EncodeRtcpPacketIncoming(rtc_event);
|
||||
@ -370,7 +375,6 @@ std::string RtcEventLogEncoderLegacy::Encode(const RtcEvent& event) {
|
||||
RTC_DCHECK_NOTREACHED();
|
||||
break;
|
||||
case RtcEvent::Type::RouteChangeEvent:
|
||||
case RtcEvent::Type::RemoteEstimateEvent:
|
||||
case RtcEvent::Type::GenericPacketReceived:
|
||||
case RtcEvent::Type::GenericPacketSent:
|
||||
case RtcEvent::Type::GenericAckReceived:
|
||||
@ -588,6 +592,23 @@ std::string RtcEventLogEncoderLegacy::EncodeProbeResultSuccess(
|
||||
return Serialize(&rtclog_event);
|
||||
}
|
||||
|
||||
std::string RtcEventLogEncoderLegacy::EncodeRemoteEstimate(
|
||||
const RtcEventRemoteEstimate& event) {
|
||||
rtclog::Event rtclog_event;
|
||||
rtclog_event.set_timestamp_us(event.timestamp_us());
|
||||
rtclog_event.set_type(rtclog::Event::REMOTE_ESTIMATE);
|
||||
|
||||
auto* remote_estimate = rtclog_event.mutable_remote_estimate();
|
||||
if (event.link_capacity_lower_.IsFinite())
|
||||
remote_estimate->set_link_capacity_lower_kbps(
|
||||
event.link_capacity_lower_.kbps<uint32_t>());
|
||||
if (event.link_capacity_upper_.IsFinite())
|
||||
remote_estimate->set_link_capacity_upper_kbps(
|
||||
event.link_capacity_upper_.kbps<uint32_t>());
|
||||
|
||||
return Serialize(&rtclog_event);
|
||||
}
|
||||
|
||||
std::string RtcEventLogEncoderLegacy::EncodeRtcpPacketIncoming(
|
||||
const RtcEventRtcpPacketIncoming& event) {
|
||||
return EncodeRtcpPacket(event.timestamp_us(), event.packet(), true);
|
||||
@ -713,15 +734,13 @@ std::string RtcEventLogEncoderLegacy::EncodeRtcpPacket(
|
||||
uint32_t block_size = next_block - block_begin;
|
||||
switch (header.type()) {
|
||||
case rtcp::Bye::kPacketType:
|
||||
case rtcp::ExtendedJitterReport::kPacketType:
|
||||
case rtcp::ExtendedReports::kPacketType:
|
||||
case rtcp::Psfb::kPacketType:
|
||||
case rtcp::ReceiverReport::kPacketType:
|
||||
case rtcp::Rtpfb::kPacketType:
|
||||
case rtcp::SenderReport::kPacketType:
|
||||
// We log sender reports, receiver reports, bye messages
|
||||
// inter-arrival jitter, third-party loss reports, payload-specific
|
||||
// feedback and extended reports.
|
||||
// We log sender reports, receiver reports, bye messages, third-party
|
||||
// loss reports, payload-specific feedback and extended reports.
|
||||
memcpy(buffer.data() + buffer_length, block_begin, block_size);
|
||||
buffer_length += block_size;
|
||||
break;
|
||||
|
@ -25,6 +25,7 @@ namespace rtclog {
|
||||
class Event; // Auto-generated from protobuf.
|
||||
} // namespace rtclog
|
||||
|
||||
class RtcEventAlrState;
|
||||
class RtcEventAudioNetworkAdaptation;
|
||||
class RtcEventAudioPlayout;
|
||||
class RtcEventAudioReceiveStreamConfig;
|
||||
@ -38,13 +39,13 @@ class RtcEventLoggingStopped;
|
||||
class RtcEventProbeClusterCreated;
|
||||
class RtcEventProbeResultFailure;
|
||||
class RtcEventProbeResultSuccess;
|
||||
class RtcEventRemoteEstimate;
|
||||
class RtcEventRtcpPacketIncoming;
|
||||
class RtcEventRtcpPacketOutgoing;
|
||||
class RtcEventRtpPacketIncoming;
|
||||
class RtcEventRtpPacketOutgoing;
|
||||
class RtcEventVideoReceiveStreamConfig;
|
||||
class RtcEventVideoSendStreamConfig;
|
||||
class RtcEventAlrState;
|
||||
class RtpPacket;
|
||||
|
||||
class RtcEventLogEncoderLegacy final : public RtcEventLogEncoder {
|
||||
@ -81,6 +82,7 @@ class RtcEventLogEncoderLegacy final : public RtcEventLogEncoder {
|
||||
const RtcEventProbeClusterCreated& event);
|
||||
std::string EncodeProbeResultFailure(const RtcEventProbeResultFailure& event);
|
||||
std::string EncodeProbeResultSuccess(const RtcEventProbeResultSuccess&);
|
||||
std::string EncodeRemoteEstimate(const RtcEventRemoteEstimate& event);
|
||||
std::string EncodeRtcpPacketIncoming(const RtcEventRtcpPacketIncoming& event);
|
||||
std::string EncodeRtcpPacketOutgoing(const RtcEventRtcpPacketOutgoing& event);
|
||||
std::string EncodeRtpPacketIncoming(const RtcEventRtpPacketIncoming& event);
|
||||
|
@ -49,7 +49,6 @@
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/app.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/bye.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/common_header.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/psfb.h"
|
||||
#include "modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
|
||||
@ -306,15 +305,13 @@ size_t RemoveNonAllowlistedRtcpBlocks(const rtc::Buffer& packet,
|
||||
size_t block_size = next_block - block_begin;
|
||||
switch (header.type()) {
|
||||
case rtcp::Bye::kPacketType:
|
||||
case rtcp::ExtendedJitterReport::kPacketType:
|
||||
case rtcp::ExtendedReports::kPacketType:
|
||||
case rtcp::Psfb::kPacketType:
|
||||
case rtcp::ReceiverReport::kPacketType:
|
||||
case rtcp::Rtpfb::kPacketType:
|
||||
case rtcp::SenderReport::kPacketType:
|
||||
// We log sender reports, receiver reports, bye messages
|
||||
// inter-arrival jitter, third-party loss reports, payload-specific
|
||||
// feedback and extended reports.
|
||||
// We log sender reports, receiver reports, bye messages, third-party
|
||||
// loss reports, payload-specific feedback and extended reports.
|
||||
// TODO(terelius): As an optimization, don't copy anything if all blocks
|
||||
// in the packet are allowlisted types.
|
||||
memcpy(buffer + buffer_length, block_begin, block_size);
|
||||
|
@ -251,9 +251,6 @@ TEST_P(RtcEventLogEncoderTest, RtcEventRouteChange) {
|
||||
}
|
||||
|
||||
TEST_P(RtcEventLogEncoderTest, RtcEventRemoteEstimate) {
|
||||
if (encoding_type_ == RtcEventLog::EncodingType::Legacy) {
|
||||
return;
|
||||
}
|
||||
std::vector<std::unique_ptr<RtcEventRemoteEstimate>> events(event_count_);
|
||||
for (size_t i = 0; i < event_count_; ++i) {
|
||||
events[i] = (i == 0 || !force_repeated_fields_)
|
||||
|
@ -43,6 +43,7 @@ message Event {
|
||||
ALR_STATE_EVENT = 19;
|
||||
ICE_CANDIDATE_PAIR_CONFIG = 20;
|
||||
ICE_CANDIDATE_PAIR_EVENT = 21;
|
||||
REMOTE_ESTIMATE = 22;
|
||||
}
|
||||
|
||||
// required - Indicates the type of this event
|
||||
@ -93,6 +94,9 @@ message Event {
|
||||
|
||||
// required if type == ICE_CANDIDATE_PAIR_EVENT
|
||||
IceCandidatePairEvent ice_candidate_pair_event = 21;
|
||||
|
||||
// required if type == REMOTE_ESTIMATE
|
||||
RemoteEstimate remote_estimate = 22;
|
||||
}
|
||||
}
|
||||
|
||||
@ -327,6 +331,14 @@ message BweProbeResult {
|
||||
optional int32 bitrate_bps = 3;
|
||||
}
|
||||
|
||||
message RemoteEstimate {
|
||||
// optional - Lower estimate of link capacity.
|
||||
optional uint32 link_capacity_lower_kbps = 1;
|
||||
|
||||
// optional - Upper estimate of link capacity.
|
||||
optional uint32 link_capacity_upper_kbps = 2;
|
||||
}
|
||||
|
||||
message AlrState {
|
||||
// required - If we are in ALR or not.
|
||||
optional bool in_alr = 1;
|
||||
|
@ -1770,6 +1770,12 @@ ParsedRtcEventLog::ParseStatus ParsedRtcEventLog::StoreParsedLegacyEvent(
|
||||
ice_candidate_pair_events_.push_back(status_or_value.value());
|
||||
break;
|
||||
}
|
||||
case rtclog::Event::REMOTE_ESTIMATE: {
|
||||
auto status_or_value = GetRemoteEstimateEvent(event);
|
||||
RTC_RETURN_IF_ERROR(status_or_value.status());
|
||||
remote_estimate_events_.push_back(status_or_value.value());
|
||||
break;
|
||||
}
|
||||
case rtclog::Event::UNKNOWN_EVENT: {
|
||||
break;
|
||||
}
|
||||
@ -2144,7 +2150,7 @@ ParsedRtcEventLog::GetIceCandidatePairConfig(
|
||||
LoggedIceCandidatePairConfig res;
|
||||
const rtclog::IceCandidatePairConfig& config =
|
||||
rtc_event.ice_candidate_pair_config();
|
||||
RTC_CHECK(rtc_event.has_timestamp_us());
|
||||
RTC_PARSE_CHECK_OR_RETURN(rtc_event.has_timestamp_us());
|
||||
res.timestamp = Timestamp::Micros(rtc_event.timestamp_us());
|
||||
RTC_PARSE_CHECK_OR_RETURN(config.has_config_type());
|
||||
res.type = GetRuntimeIceCandidatePairConfigType(config.config_type());
|
||||
@ -2183,7 +2189,7 @@ ParsedRtcEventLog::GetIceCandidatePairEvent(
|
||||
LoggedIceCandidatePairEvent res;
|
||||
const rtclog::IceCandidatePairEvent& event =
|
||||
rtc_event.ice_candidate_pair_event();
|
||||
RTC_CHECK(rtc_event.has_timestamp_us());
|
||||
RTC_PARSE_CHECK_OR_RETURN(rtc_event.has_timestamp_us());
|
||||
res.timestamp = Timestamp::Micros(rtc_event.timestamp_us());
|
||||
RTC_PARSE_CHECK_OR_RETURN(event.has_event_type());
|
||||
res.type = GetRuntimeIceCandidatePairEventType(event.event_type());
|
||||
@ -2194,6 +2200,23 @@ ParsedRtcEventLog::GetIceCandidatePairEvent(
|
||||
return res;
|
||||
}
|
||||
|
||||
ParsedRtcEventLog::ParseStatusOr<LoggedRemoteEstimateEvent>
|
||||
ParsedRtcEventLog::GetRemoteEstimateEvent(const rtclog::Event& event) const {
|
||||
RTC_PARSE_CHECK_OR_RETURN(event.has_type());
|
||||
RTC_PARSE_CHECK_OR_RETURN_EQ(event.type(), rtclog::Event::REMOTE_ESTIMATE);
|
||||
LoggedRemoteEstimateEvent res;
|
||||
const rtclog::RemoteEstimate& remote_estimate_event = event.remote_estimate();
|
||||
RTC_PARSE_CHECK_OR_RETURN(event.has_timestamp_us());
|
||||
res.timestamp = Timestamp::Micros(event.timestamp_us());
|
||||
if (remote_estimate_event.has_link_capacity_lower_kbps())
|
||||
res.link_capacity_lower = DataRate::KilobitsPerSec(
|
||||
remote_estimate_event.link_capacity_lower_kbps());
|
||||
if (remote_estimate_event.has_link_capacity_upper_kbps())
|
||||
res.link_capacity_upper = DataRate::KilobitsPerSec(
|
||||
remote_estimate_event.link_capacity_upper_kbps());
|
||||
return res;
|
||||
}
|
||||
|
||||
// Returns the MediaType for registered SSRCs. Search from the end to use last
|
||||
// registered types first.
|
||||
ParsedRtcEventLog::MediaType ParsedRtcEventLog::GetMediaType(
|
||||
|
@ -725,6 +725,9 @@ class ParsedRtcEventLog {
|
||||
ParsedRtcEventLog::ParseStatusOr<LoggedIceCandidatePairEvent>
|
||||
GetIceCandidatePairEvent(const rtclog::Event& event) const;
|
||||
|
||||
ParsedRtcEventLog::ParseStatusOr<LoggedRemoteEstimateEvent>
|
||||
GetRemoteEstimateEvent(const rtclog::Event& event) const;
|
||||
|
||||
// Parsing functions for new format.
|
||||
ParseStatus StoreAlrStateEvent(const rtclog2::AlrState& proto);
|
||||
ParseStatus StoreAudioNetworkAdaptationEvent(
|
||||
|
82
third_party/libwebrtc/media/BUILD.gn
vendored
82
third_party/libwebrtc/media/BUILD.gn
vendored
@ -7,7 +7,7 @@
|
||||
# be found in the AUTHORS file in the root of the source tree.
|
||||
|
||||
import("//build/config/linux/pkg_config.gni")
|
||||
#import("//third_party/libaom/options.gni")
|
||||
import("//third_party/libaom/options.gni")
|
||||
import("../webrtc.gni")
|
||||
|
||||
group("media") {
|
||||
@ -66,7 +66,7 @@ rtc_library("rtc_media_base") {
|
||||
"../api/crypto:options",
|
||||
"../api/task_queue:pending_task_safety_flag",
|
||||
"../api/transport:datagram_transport_interface",
|
||||
#"../api/transport:stun_types",
|
||||
"../api/transport:stun_types",
|
||||
"../api/transport/rtp:rtp_source",
|
||||
"../api/units:time_delta",
|
||||
"../api/video:video_bitrate_allocation",
|
||||
@ -99,6 +99,9 @@ rtc_library("rtc_media_base") {
|
||||
"../rtc_base/third_party/sigslot",
|
||||
"../system_wrappers:field_trial",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "../api/transport:stun_types" ]
|
||||
}
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||
"//third_party/abseil-cpp/absl/container:inlined_vector",
|
||||
@ -106,26 +109,26 @@ rtc_library("rtc_media_base") {
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
sources = [
|
||||
#"base/adapted_video_track_source.cc",
|
||||
#"base/adapted_video_track_source.h",
|
||||
#"base/audio_source.h",
|
||||
"base/adapted_video_track_source.cc",
|
||||
"base/adapted_video_track_source.h",
|
||||
"base/audio_source.h",
|
||||
"base/codec.cc",
|
||||
"base/codec.h",
|
||||
#"base/delayable.h",
|
||||
#"base/media_channel.cc",
|
||||
#"base/media_channel.h",
|
||||
"base/delayable.h",
|
||||
"base/media_channel.cc",
|
||||
"base/media_channel.h",
|
||||
"base/media_constants.cc",
|
||||
"base/media_constants.h",
|
||||
#"base/media_engine.cc",
|
||||
#"base/media_engine.h",
|
||||
#"base/rid_description.cc",
|
||||
#"base/rid_description.h",
|
||||
#"base/rtp_utils.cc",
|
||||
#"base/rtp_utils.h",
|
||||
#"base/stream_params.cc",
|
||||
#"base/stream_params.h",
|
||||
#"base/turn_utils.cc",
|
||||
#"base/turn_utils.h",
|
||||
"base/media_engine.cc",
|
||||
"base/media_engine.h",
|
||||
"base/rid_description.cc",
|
||||
"base/rid_description.h",
|
||||
"base/rtp_utils.cc",
|
||||
"base/rtp_utils.h",
|
||||
"base/stream_params.cc",
|
||||
"base/stream_params.h",
|
||||
"base/turn_utils.cc",
|
||||
"base/turn_utils.h",
|
||||
"base/video_adapter.cc",
|
||||
"base/video_adapter.h",
|
||||
"base/video_broadcaster.cc",
|
||||
@ -135,6 +138,26 @@ rtc_library("rtc_media_base") {
|
||||
"base/video_source_base.cc",
|
||||
"base/video_source_base.h",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
sources -= [
|
||||
"base/adapted_video_track_source.cc",
|
||||
"base/adapted_video_track_source.h",
|
||||
"base/audio_source.h",
|
||||
"base/delayable.h",
|
||||
"base/media_channel.cc",
|
||||
"base/media_channel.h",
|
||||
"base/media_engine.cc",
|
||||
"base/media_engine.h",
|
||||
"base/rid_description.cc",
|
||||
"base/rid_description.h",
|
||||
"base/rtp_utils.cc",
|
||||
"base/rtp_utils.h",
|
||||
"base/stream_params.cc",
|
||||
"base/stream_params.h",
|
||||
"base/turn_utils.cc",
|
||||
"base/turn_utils.h",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
rtc_library("rtc_simulcast_encoder_adapter") {
|
||||
@ -224,8 +247,11 @@ rtc_library("rtc_internal_video_codecs") {
|
||||
"../rtc_base:logging",
|
||||
"../rtc_base/system:rtc_export",
|
||||
"../system_wrappers:field_trial",
|
||||
#"../test:fake_video_codecs",
|
||||
"../test:fake_video_codecs",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "../test:fake_video_codecs" ]
|
||||
}
|
||||
|
||||
if (enable_libaom) {
|
||||
defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
|
||||
@ -242,8 +268,8 @@ rtc_library("rtc_internal_video_codecs") {
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
sources = [
|
||||
#"engine/fake_video_codec_factory.cc",
|
||||
#"engine/fake_video_codec_factory.h",
|
||||
"engine/fake_video_codec_factory.cc",
|
||||
"engine/fake_video_codec_factory.h",
|
||||
"engine/internal_decoder_factory.cc",
|
||||
"engine/internal_decoder_factory.h",
|
||||
"engine/internal_encoder_factory.cc",
|
||||
@ -255,6 +281,12 @@ rtc_library("rtc_internal_video_codecs") {
|
||||
# targets depend on :rtc_encoder_simulcast_proxy directly.
|
||||
"engine/encoder_simulcast_proxy.h",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
sources -= [
|
||||
"engine/fake_video_codec_factory.cc",
|
||||
"engine/fake_video_codec_factory.h",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
rtc_library("rtc_audio_video") {
|
||||
@ -266,7 +298,7 @@ rtc_library("rtc_audio_video") {
|
||||
":rtc_media_base",
|
||||
"../api:call_api",
|
||||
"../api:field_trials_view",
|
||||
#"../api:libjingle_peerconnection_api",
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../api:media_stream_interface",
|
||||
"../api:rtp_parameters",
|
||||
"../api:scoped_refptr",
|
||||
@ -326,11 +358,15 @@ rtc_library("rtc_audio_video") {
|
||||
"../rtc_base/experiments:normalize_simulcast_size_experiment",
|
||||
"../rtc_base/experiments:rate_control_settings",
|
||||
"../rtc_base/synchronization:mutex",
|
||||
"../rtc_base/system:no_unique_address",
|
||||
"../rtc_base/system:rtc_export",
|
||||
"../rtc_base/third_party/base64",
|
||||
"../system_wrappers",
|
||||
"../system_wrappers:metrics",
|
||||
]
|
||||
if (build_with_mozilla) {
|
||||
deps -= [ "../api:libjingle_peerconnection_api" ]
|
||||
}
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
@ -495,6 +531,8 @@ if (rtc_include_tests) {
|
||||
"../api:call_api",
|
||||
"../api:fec_controller_api",
|
||||
"../api:scoped_refptr",
|
||||
"../api/task_queue",
|
||||
"../api/task_queue:pending_task_safety_flag",
|
||||
"../api/transport:field_trial_based_config",
|
||||
"../api/video:encoded_image",
|
||||
"../api/video:video_bitrate_allocation",
|
||||
|
1
third_party/libwebrtc/media/OWNERS
vendored
1
third_party/libwebrtc/media/OWNERS
vendored
@ -1,4 +1,3 @@
|
||||
nisse@webrtc.org
|
||||
ilnik@webrtc.org
|
||||
sprang@webrtc.org
|
||||
magjed@webrtc.org
|
||||
|
@ -13,8 +13,11 @@
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "api/task_queue/pending_task_safety_flag.h"
|
||||
#include "api/task_queue/task_queue_base.h"
|
||||
#include "media/base/media_channel.h"
|
||||
#include "media/base/rtp_utils.h"
|
||||
#include "modules/rtp_rtcp/source/rtp_util.h"
|
||||
@ -22,15 +25,13 @@
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/copy_on_write_buffer.h"
|
||||
#include "rtc_base/dscp.h"
|
||||
#include "rtc_base/message_handler.h"
|
||||
#include "rtc_base/synchronization/mutex.h"
|
||||
#include "rtc_base/thread.h"
|
||||
|
||||
namespace cricket {
|
||||
|
||||
// Fake NetworkInterface that sends/receives RTP/RTCP packets.
|
||||
class FakeNetworkInterface : public MediaChannel::NetworkInterface,
|
||||
public rtc::MessageHandlerAutoCleanup {
|
||||
class FakeNetworkInterface : public MediaChannel::NetworkInterface {
|
||||
public:
|
||||
FakeNetworkInterface()
|
||||
: thread_(rtc::Thread::Current()),
|
||||
@ -129,10 +130,10 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
|
||||
if (conf_) {
|
||||
for (size_t i = 0; i < conf_sent_ssrcs_.size(); ++i) {
|
||||
SetRtpSsrc(conf_sent_ssrcs_[i], *packet);
|
||||
PostMessage(ST_RTP, *packet);
|
||||
PostPacket(*packet);
|
||||
}
|
||||
} else {
|
||||
PostMessage(ST_RTP, *packet);
|
||||
PostPacket(*packet);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -145,7 +146,8 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
|
||||
options_ = options;
|
||||
if (!conf_) {
|
||||
// don't worry about RTCP in conf mode for now
|
||||
PostMessage(ST_RTCP, *packet);
|
||||
RTC_LOG(LS_VERBOSE) << "Dropping RTCP packet, they are not handled by "
|
||||
"MediaChannel anymore.";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -161,22 +163,13 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void PostMessage(int id, const rtc::CopyOnWriteBuffer& packet) {
|
||||
thread_->Post(RTC_FROM_HERE, this, id, rtc::WrapMessageData(packet));
|
||||
}
|
||||
|
||||
virtual void OnMessage(rtc::Message* msg) {
|
||||
rtc::TypedMessageData<rtc::CopyOnWriteBuffer>* msg_data =
|
||||
static_cast<rtc::TypedMessageData<rtc::CopyOnWriteBuffer>*>(msg->pdata);
|
||||
if (dest_) {
|
||||
if (msg->message_id == ST_RTP) {
|
||||
dest_->OnPacketReceived(msg_data->data(), rtc::TimeMicros());
|
||||
} else {
|
||||
RTC_LOG(LS_VERBOSE) << "Dropping RTCP packet, they not handled by "
|
||||
"MediaChannel anymore.";
|
||||
}
|
||||
}
|
||||
delete msg_data;
|
||||
void PostPacket(rtc::CopyOnWriteBuffer packet) {
|
||||
thread_->PostTask(
|
||||
SafeTask(safety_.flag(), [this, packet = std::move(packet)]() mutable {
|
||||
if (dest_) {
|
||||
dest_->OnPacketReceived(std::move(packet), rtc::TimeMicros());
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private:
|
||||
@ -204,7 +197,7 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
|
||||
}
|
||||
}
|
||||
|
||||
rtc::Thread* thread_;
|
||||
webrtc::TaskQueueBase* thread_;
|
||||
MediaChannel* dest_;
|
||||
bool conf_;
|
||||
// The ssrcs used in sending out packets in conference mode.
|
||||
@ -222,6 +215,7 @@ class FakeNetworkInterface : public MediaChannel::NetworkInterface,
|
||||
rtc::DiffServCodePoint dscp_;
|
||||
// Options of the most recently sent packet.
|
||||
rtc::PacketOptions options_;
|
||||
webrtc::ScopedTaskSafety safety_;
|
||||
};
|
||||
|
||||
} // namespace cricket
|
||||
|
@ -404,6 +404,7 @@ struct MediaSenderInfo {
|
||||
// this list, the ReportBlockData::RTCPReportBlock::source_ssrc(), which is
|
||||
// the SSRC of the corresponding outbound RTP stream, is unique.
|
||||
std::vector<webrtc::ReportBlockData> report_block_datas;
|
||||
absl::optional<bool> active;
|
||||
};
|
||||
|
||||
struct MediaReceiverInfo {
|
||||
@ -629,10 +630,10 @@ struct VideoReceiverInfo : public MediaReceiverInfo {
|
||||
uint32_t frames_rendered = 0;
|
||||
absl::optional<uint64_t> qp_sum;
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totaldecodetime
|
||||
webrtc::TimeDelta total_decode_time = webrtc::TimeDelta::Millis(0);
|
||||
webrtc::TimeDelta total_decode_time = webrtc::TimeDelta::Zero();
|
||||
// https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalprocessingdelay
|
||||
webrtc::TimeDelta total_processing_delay = webrtc::TimeDelta::Millis(0);
|
||||
webrtc::TimeDelta total_assembly_time = webrtc::TimeDelta::Millis(0);
|
||||
webrtc::TimeDelta total_processing_delay = webrtc::TimeDelta::Zero();
|
||||
webrtc::TimeDelta total_assembly_time = webrtc::TimeDelta::Zero();
|
||||
uint32_t frames_assembled_from_multiple_packets = 0;
|
||||
double total_inter_frame_delay = 0;
|
||||
double total_squared_inter_frame_delay = 0;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
@ -284,6 +285,34 @@ class FakeVideoReceiveStream final
|
||||
config_.rtp.rtcp_mode = mode;
|
||||
}
|
||||
|
||||
void SetFlexFecProtection(webrtc::RtpPacketSinkInterface* sink) override {
|
||||
config_.rtp.packet_sink_ = sink;
|
||||
config_.rtp.protected_by_flexfec = (sink != nullptr);
|
||||
}
|
||||
|
||||
void SetLossNotificationEnabled(bool enabled) override {
|
||||
config_.rtp.lntf.enabled = enabled;
|
||||
}
|
||||
|
||||
void SetNackHistory(webrtc::TimeDelta history) override {
|
||||
config_.rtp.nack.rtp_history_ms = history.ms();
|
||||
}
|
||||
|
||||
void SetProtectionPayloadTypes(int red_payload_type,
|
||||
int ulpfec_payload_type) override {
|
||||
config_.rtp.red_payload_type = red_payload_type;
|
||||
config_.rtp.ulpfec_payload_type = ulpfec_payload_type;
|
||||
}
|
||||
|
||||
void SetRtcpXr(Config::Rtp::RtcpXr rtcp_xr) override {
|
||||
config_.rtp.rtcp_xr = rtcp_xr;
|
||||
}
|
||||
|
||||
void SetAssociatedPayloadTypes(std::map<int, int> associated_payload_types) {
|
||||
config_.rtp.rtx_associated_payload_types =
|
||||
std::move(associated_payload_types);
|
||||
}
|
||||
|
||||
void Start() override;
|
||||
void Stop() override;
|
||||
|
||||
@ -323,6 +352,11 @@ class FakeFlexfecReceiveStream final : public webrtc::FlexfecReceiveStream {
|
||||
}
|
||||
void SetRtcpMode(webrtc::RtcpMode mode) override { config_.rtcp_mode = mode; }
|
||||
|
||||
int payload_type() const override { return config_.payload_type; }
|
||||
void SetPayloadType(int payload_type) override {
|
||||
config_.payload_type = payload_type;
|
||||
}
|
||||
|
||||
const webrtc::FlexfecReceiveStream::Config& GetConfig() const;
|
||||
|
||||
uint32_t remote_ssrc() const { return config_.rtp.remote_ssrc; }
|
||||
|
84
third_party/libwebrtc/media/engine/simulcast.cc
vendored
84
third_party/libwebrtc/media/engine/simulcast.cc
vendored
@ -33,23 +33,11 @@ namespace cricket {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr webrtc::DataRate Interpolate(const webrtc::DataRate& a,
|
||||
const webrtc::DataRate& b,
|
||||
float rate) {
|
||||
return a * (1.0 - rate) + b * rate;
|
||||
}
|
||||
|
||||
constexpr char kUseLegacySimulcastLayerLimitFieldTrial[] =
|
||||
"WebRTC-LegacySimulcastLayerLimit";
|
||||
|
||||
constexpr double kDefaultMaxRoundupRate = 0.1;
|
||||
|
||||
// TODO(webrtc:12415): Flip this to a kill switch when this feature launches.
|
||||
bool EnableLowresBitrateInterpolation(const webrtc::FieldTrialsView& trials) {
|
||||
return absl::StartsWith(
|
||||
trials.Lookup("WebRTC-LowresSimulcastBitrateInterpolation"), "Enabled");
|
||||
}
|
||||
|
||||
// Limits for legacy conference screensharing mode. Currently used for the
|
||||
// lower of the two simulcast streams.
|
||||
constexpr webrtc::DataRate kScreenshareDefaultTl0Bitrate =
|
||||
@ -64,7 +52,9 @@ constexpr webrtc::DataRate kScreenshareHighStreamMinBitrate =
|
||||
constexpr webrtc::DataRate kScreenshareHighStreamMaxBitrate =
|
||||
webrtc::DataRate::KilobitsPerSec(1250);
|
||||
|
||||
} // namespace
|
||||
constexpr int kDefaultNumTemporalLayers = 3;
|
||||
constexpr int kScreenshareMaxSimulcastLayers = 2;
|
||||
constexpr int kScreenshareTemporalLayers = 2;
|
||||
|
||||
struct SimulcastFormat {
|
||||
int width;
|
||||
@ -112,6 +102,18 @@ constexpr const SimulcastFormat kSimulcastFormats[] = {
|
||||
webrtc::DataRate::KilobitsPerSec(0),
|
||||
webrtc::DataRate::KilobitsPerSec(30)}};
|
||||
|
||||
constexpr webrtc::DataRate Interpolate(const webrtc::DataRate& a,
|
||||
const webrtc::DataRate& b,
|
||||
float rate) {
|
||||
return a * (1.0 - rate) + b * rate;
|
||||
}
|
||||
|
||||
// TODO(webrtc:12415): Flip this to a kill switch when this feature launches.
|
||||
bool EnableLowresBitrateInterpolation(const webrtc::FieldTrialsView& trials) {
|
||||
return absl::StartsWith(
|
||||
trials.Lookup("WebRTC-LowresSimulcastBitrateInterpolation"), "Enabled");
|
||||
}
|
||||
|
||||
std::vector<SimulcastFormat> GetSimulcastFormats(
|
||||
bool enable_lowres_bitrate_interpolation) {
|
||||
std::vector<SimulcastFormat> formats;
|
||||
@ -128,28 +130,14 @@ std::vector<SimulcastFormat> GetSimulcastFormats(
|
||||
return formats;
|
||||
}
|
||||
|
||||
const int kMaxScreenshareSimulcastLayers = 2;
|
||||
|
||||
// Multiway: Number of temporal layers for each simulcast stream.
|
||||
int DefaultNumberOfTemporalLayers(int simulcast_id,
|
||||
bool screenshare,
|
||||
const webrtc::FieldTrialsView& trials) {
|
||||
RTC_CHECK_GE(simulcast_id, 0);
|
||||
RTC_CHECK_LT(simulcast_id, webrtc::kMaxSimulcastStreams);
|
||||
|
||||
const int kDefaultNumTemporalLayers = 3;
|
||||
const int kDefaultNumScreenshareTemporalLayers = 2;
|
||||
int default_num_temporal_layers = screenshare
|
||||
? kDefaultNumScreenshareTemporalLayers
|
||||
: kDefaultNumTemporalLayers;
|
||||
|
||||
int DefaultNumberOfTemporalLayers(const webrtc::FieldTrialsView& trials) {
|
||||
const std::string group_name =
|
||||
screenshare ? trials.Lookup("WebRTC-VP8ScreenshareTemporalLayers")
|
||||
: trials.Lookup("WebRTC-VP8ConferenceTemporalLayers");
|
||||
trials.Lookup("WebRTC-VP8ConferenceTemporalLayers");
|
||||
if (group_name.empty())
|
||||
return default_num_temporal_layers;
|
||||
return kDefaultNumTemporalLayers;
|
||||
|
||||
int num_temporal_layers = default_num_temporal_layers;
|
||||
int num_temporal_layers = kDefaultNumTemporalLayers;
|
||||
if (sscanf(group_name.c_str(), "%d", &num_temporal_layers) == 1 &&
|
||||
num_temporal_layers > 0 &&
|
||||
num_temporal_layers <= webrtc::kMaxTemporalStreams) {
|
||||
@ -160,7 +148,7 @@ int DefaultNumberOfTemporalLayers(int simulcast_id,
|
||||
"incorrect value: "
|
||||
<< group_name;
|
||||
|
||||
return default_num_temporal_layers;
|
||||
return kDefaultNumTemporalLayers;
|
||||
}
|
||||
|
||||
int FindSimulcastFormatIndex(int width,
|
||||
@ -178,6 +166,8 @@ int FindSimulcastFormatIndex(int width,
|
||||
return -1;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
// Round size to nearest simulcast-friendly size.
|
||||
// Simulcast stream width and height must both be dividable by
|
||||
// |2 ^ (simulcast_layers - 1)|.
|
||||
@ -376,9 +366,7 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
|
||||
// TODO(pbos): Fill actual temporal-layer bitrate thresholds.
|
||||
layers[s].max_qp = max_qp;
|
||||
layers[s].num_temporal_layers =
|
||||
temporal_layers_supported
|
||||
? DefaultNumberOfTemporalLayers(s, false, trials)
|
||||
: 1;
|
||||
temporal_layers_supported ? DefaultNumberOfTemporalLayers(trials) : 1;
|
||||
layers[s].max_bitrate_bps =
|
||||
FindSimulcastMaxBitrate(width, height,
|
||||
enable_lowres_bitrate_interpolation)
|
||||
@ -387,7 +375,7 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
|
||||
FindSimulcastTargetBitrate(width, height,
|
||||
enable_lowres_bitrate_interpolation)
|
||||
.bps();
|
||||
int num_temporal_layers = DefaultNumberOfTemporalLayers(s, false, trials);
|
||||
int num_temporal_layers = DefaultNumberOfTemporalLayers(trials);
|
||||
if (s == 0) {
|
||||
// If alternative temporal rate allocation is selected, adjust the
|
||||
// bitrate of the lowest simulcast stream so that absolute bitrate for
|
||||
@ -451,9 +439,8 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
bool temporal_layers_supported,
|
||||
bool base_heavy_tl3_rate_alloc,
|
||||
const webrtc::FieldTrialsView& trials) {
|
||||
auto max_screenshare_layers = kMaxScreenshareSimulcastLayers;
|
||||
size_t num_simulcast_layers =
|
||||
std::min<int>(max_layers, max_screenshare_layers);
|
||||
std::min<int>(max_layers, kScreenshareMaxSimulcastLayers);
|
||||
|
||||
std::vector<webrtc::VideoStream> layers(num_simulcast_layers);
|
||||
// For legacy screenshare in conference mode, tl0 and tl1 bitrates are
|
||||
@ -471,10 +458,8 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
// With simulcast enabled, add another spatial layer. This one will have a
|
||||
// more normal layout, with the regular 3 temporal layer pattern and no fps
|
||||
// restrictions. The base simulcast layer will still use legacy setup.
|
||||
if (num_simulcast_layers == kMaxScreenshareSimulcastLayers) {
|
||||
if (num_simulcast_layers == kScreenshareMaxSimulcastLayers) {
|
||||
// Add optional upper simulcast layer.
|
||||
const int num_temporal_layers =
|
||||
DefaultNumberOfTemporalLayers(1, true, trials);
|
||||
int max_bitrate_bps;
|
||||
bool using_boosted_bitrate = false;
|
||||
if (!temporal_layers_supported) {
|
||||
@ -483,20 +468,11 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
max_bitrate_bps = static_cast<int>(
|
||||
kScreenshareHighStreamMaxBitrate.bps() *
|
||||
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
|
||||
num_temporal_layers, 0, base_heavy_tl3_rate_alloc));
|
||||
} else if (DefaultNumberOfTemporalLayers(1, true, trials) != 3 ||
|
||||
base_heavy_tl3_rate_alloc) {
|
||||
kScreenshareTemporalLayers, 0, base_heavy_tl3_rate_alloc));
|
||||
} else {
|
||||
// Experimental temporal layer mode used, use increased max bitrate.
|
||||
max_bitrate_bps = kScreenshareHighStreamMaxBitrate.bps();
|
||||
using_boosted_bitrate = true;
|
||||
} else {
|
||||
// Keep current bitrates with default 3tl/8 frame settings.
|
||||
// Lowest temporal layers of a 3 layer setup will have 40% of the total
|
||||
// bitrate allocation for that simulcast layer. Make sure the gap between
|
||||
// the target of the lower simulcast layer and first temporal layer of the
|
||||
// higher one is at most 2x the bitrate, so that upswitching is not
|
||||
// hampered by stalled bitrate estimates.
|
||||
max_bitrate_bps = 2 * ((layers[0].target_bitrate_bps * 10) / 4);
|
||||
}
|
||||
|
||||
layers[1].width = width;
|
||||
@ -504,9 +480,7 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
|
||||
layers[1].max_qp = max_qp;
|
||||
layers[1].max_framerate = kDefaultVideoMaxFramerate;
|
||||
layers[1].num_temporal_layers =
|
||||
temporal_layers_supported
|
||||
? DefaultNumberOfTemporalLayers(1, true, trials)
|
||||
: 1;
|
||||
temporal_layers_supported ? kScreenshareTemporalLayers : 1;
|
||||
layers[1].min_bitrate_bps = using_boosted_bitrate
|
||||
? kScreenshareHighStreamMinBitrate.bps()
|
||||
: layers[0].target_bitrate_bps * 2;
|
||||
|
@ -1274,8 +1274,30 @@ std::string WebRtcVideoChannel::CodecSettingsVectorToString(
|
||||
return out.Release();
|
||||
}
|
||||
|
||||
// RTC_RUN_ON(&thread_checker_)
|
||||
void WebRtcVideoChannel::ExtractCodecInformation(
|
||||
rtc::ArrayView<const VideoCodecSettings> recv_codecs,
|
||||
std::map<int, int>& rtx_associated_payload_types,
|
||||
std::set<int>& raw_payload_types,
|
||||
std::vector<webrtc::VideoReceiveStreamInterface::Decoder>& decoders) {
|
||||
RTC_DCHECK(!recv_codecs.empty());
|
||||
RTC_DCHECK(rtx_associated_payload_types.empty());
|
||||
RTC_DCHECK(raw_payload_types.empty());
|
||||
RTC_DCHECK(decoders.empty());
|
||||
|
||||
for (const VideoCodecSettings& recv_codec : recv_codecs) {
|
||||
decoders.emplace_back(
|
||||
webrtc::SdpVideoFormat(recv_codec.codec.name, recv_codec.codec.params),
|
||||
recv_codec.codec.id);
|
||||
rtx_associated_payload_types.emplace(recv_codec.rtx_payload_type,
|
||||
recv_codec.codec.id);
|
||||
if (recv_codec.codec.packetization == kPacketizationParamRaw) {
|
||||
raw_payload_types.insert(recv_codec.codec.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WebRtcVideoChannel::SetReceiverReportSsrc(uint32_t ssrc) {
|
||||
RTC_DCHECK_RUN_ON(&thread_checker_);
|
||||
if (ssrc == rtcp_receiver_report_ssrc_)
|
||||
return;
|
||||
|
||||
@ -1892,23 +1914,8 @@ void WebRtcVideoChannel::SetInterface(NetworkInterface* iface) {
|
||||
RTC_DCHECK_RUN_ON(&network_thread_checker_);
|
||||
MediaChannel::SetInterface(iface);
|
||||
// Set the RTP recv/send buffer to a bigger size.
|
||||
|
||||
// The group should be a positive integer with an explicit size, in
|
||||
// which case that is used as UDP recevie buffer size. All other values shall
|
||||
// result in the default value being used.
|
||||
const std::string group_name_recv_buf_size =
|
||||
call_->trials().Lookup("WebRTC-IncreasedReceivebuffers");
|
||||
int recv_buffer_size = kVideoRtpRecvBufferSize;
|
||||
if (!group_name_recv_buf_size.empty() &&
|
||||
(sscanf(group_name_recv_buf_size.c_str(), "%d", &recv_buffer_size) != 1 ||
|
||||
recv_buffer_size <= 0)) {
|
||||
RTC_LOG(LS_WARNING) << "Invalid receive buffer size: "
|
||||
<< group_name_recv_buf_size;
|
||||
recv_buffer_size = kVideoRtpRecvBufferSize;
|
||||
}
|
||||
|
||||
MediaChannel::SetOption(NetworkInterface::ST_RTP, rtc::Socket::OPT_RCVBUF,
|
||||
recv_buffer_size);
|
||||
kVideoRtpRecvBufferSize);
|
||||
|
||||
// Speculative change to increase the outbound socket buffer size.
|
||||
// In b/15152257, we are seeing a significant number of packets discarded
|
||||
@ -2664,6 +2671,14 @@ WebRtcVideoChannel::WebRtcVideoSendStream::GetPerLayerVideoSenderInfos(
|
||||
if (stats.substreams.empty()) {
|
||||
for (uint32_t ssrc : parameters_.config.rtp.ssrcs) {
|
||||
common_info.add_ssrc(ssrc);
|
||||
auto encoding_it = std::find_if(
|
||||
rtp_parameters_.encodings.begin(), rtp_parameters_.encodings.end(),
|
||||
[&ssrc](const webrtc::RtpEncodingParameters& parameters) {
|
||||
return parameters.ssrc && parameters.ssrc == ssrc;
|
||||
});
|
||||
if (encoding_it != rtp_parameters_.encodings.end()) {
|
||||
common_info.active = encoding_it->active;
|
||||
}
|
||||
}
|
||||
common_info.framerate_sent = stats.encode_frame_rate;
|
||||
common_info.frames_encoded = stats.frames_encoded;
|
||||
@ -2681,6 +2696,15 @@ WebRtcVideoChannel::WebRtcVideoSendStream::GetPerLayerVideoSenderInfos(
|
||||
auto info = common_info;
|
||||
info.add_ssrc(pair.first);
|
||||
info.rid = parameters_.config.rtp.GetRidForSsrc(pair.first);
|
||||
// Search the associated encoding by SSRC.
|
||||
auto encoding_it = std::find_if(
|
||||
rtp_parameters_.encodings.begin(), rtp_parameters_.encodings.end(),
|
||||
[&pair](const webrtc::RtpEncodingParameters& parameters) {
|
||||
return parameters.ssrc && pair.first == *parameters.ssrc;
|
||||
});
|
||||
if (encoding_it != rtp_parameters_.encodings.end()) {
|
||||
info.active = encoding_it->active;
|
||||
}
|
||||
auto stream_stats = pair.second;
|
||||
RTC_DCHECK_EQ(stream_stats.type,
|
||||
webrtc::VideoSendStream::StreamStats::StreamType::kMedia);
|
||||
@ -2831,12 +2855,15 @@ void WebRtcVideoChannel::WebRtcVideoSendStream::RecreateWebRtcStream() {
|
||||
|
||||
parameters_.encoder_config.encoder_specific_settings = NULL;
|
||||
|
||||
// Calls stream_->UpdateActiveSimulcastLayers() to start the VideoSendStream
|
||||
// if necessary conditions are met.
|
||||
UpdateSendState();
|
||||
|
||||
// Attach the source after starting the send stream to prevent frames from
|
||||
// being injected into a not-yet initializated video stream encoder.
|
||||
if (source_) {
|
||||
stream_->SetSource(source_, GetDegradationPreference());
|
||||
}
|
||||
|
||||
// Call stream_->Start() if necessary conditions are met.
|
||||
UpdateSendState();
|
||||
}
|
||||
|
||||
WebRtcVideoChannel::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(
|
||||
@ -2859,10 +2886,33 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(
|
||||
first_frame_timestamp_(-1),
|
||||
estimated_remote_start_ntp_time_ms_(0) {
|
||||
RTC_DCHECK(config_.decoder_factory);
|
||||
RTC_DCHECK(config_.decoders.empty())
|
||||
<< "Decoder info is supplied via `recv_codecs`";
|
||||
|
||||
ExtractCodecInformation(recv_codecs, config_.rtp.rtx_associated_payload_types,
|
||||
config_.rtp.raw_payload_types, config_.decoders);
|
||||
const VideoCodecSettings& codec = recv_codecs.front();
|
||||
config_.rtp.ulpfec_payload_type = codec.ulpfec.ulpfec_payload_type;
|
||||
config_.rtp.red_payload_type = codec.ulpfec.red_payload_type;
|
||||
config_.rtp.lntf.enabled = HasLntf(codec.codec);
|
||||
config_.rtp.nack.rtp_history_ms = HasNack(codec.codec) ? kNackHistoryMs : 0;
|
||||
if (codec.rtx_time != -1 && config_.rtp.nack.rtp_history_ms != 0) {
|
||||
config_.rtp.nack.rtp_history_ms = codec.rtx_time;
|
||||
}
|
||||
|
||||
config_.rtp.rtcp_xr.receiver_reference_time_report = HasRrtr(codec.codec);
|
||||
|
||||
if (codec.ulpfec.red_rtx_payload_type != -1) {
|
||||
config_.rtp
|
||||
.rtx_associated_payload_types[codec.ulpfec.red_rtx_payload_type] =
|
||||
codec.ulpfec.red_payload_type;
|
||||
}
|
||||
|
||||
config_.renderer = this;
|
||||
ConfigureCodecs(recv_codecs);
|
||||
flexfec_config_.payload_type = flexfec_config.payload_type;
|
||||
RecreateReceiveStream();
|
||||
|
||||
CreateReceiveStream();
|
||||
StartReceiveStream();
|
||||
}
|
||||
|
||||
WebRtcVideoChannel::WebRtcVideoReceiveStream::~WebRtcVideoReceiveStream() {
|
||||
@ -2911,73 +2961,70 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::GetRtpParameters() const {
|
||||
return rtp_parameters;
|
||||
}
|
||||
|
||||
bool WebRtcVideoChannel::WebRtcVideoReceiveStream::ConfigureCodecs(
|
||||
bool WebRtcVideoChannel::WebRtcVideoReceiveStream::ReconfigureCodecs(
|
||||
const std::vector<VideoCodecSettings>& recv_codecs) {
|
||||
RTC_DCHECK(stream_);
|
||||
RTC_DCHECK(!recv_codecs.empty());
|
||||
|
||||
std::map<int, int> rtx_associated_payload_types;
|
||||
std::set<int> raw_payload_types;
|
||||
std::vector<webrtc::VideoReceiveStreamInterface::Decoder> decoders;
|
||||
for (const auto& recv_codec : recv_codecs) {
|
||||
decoders.emplace_back(
|
||||
webrtc::SdpVideoFormat(recv_codec.codec.name, recv_codec.codec.params),
|
||||
recv_codec.codec.id);
|
||||
rtx_associated_payload_types.insert(
|
||||
{recv_codec.rtx_payload_type, recv_codec.codec.id});
|
||||
if (recv_codec.codec.packetization == kPacketizationParamRaw) {
|
||||
raw_payload_types.insert(recv_codec.codec.id);
|
||||
}
|
||||
}
|
||||
|
||||
bool recreate_needed = (stream_ == nullptr);
|
||||
ExtractCodecInformation(recv_codecs, rtx_associated_payload_types,
|
||||
raw_payload_types, decoders);
|
||||
|
||||
const auto& codec = recv_codecs.front();
|
||||
if (config_.rtp.ulpfec_payload_type != codec.ulpfec.ulpfec_payload_type) {
|
||||
config_.rtp.ulpfec_payload_type = codec.ulpfec.ulpfec_payload_type;
|
||||
recreate_needed = true;
|
||||
}
|
||||
|
||||
if (config_.rtp.red_payload_type != codec.ulpfec.red_payload_type) {
|
||||
if (config_.rtp.red_payload_type != codec.ulpfec.red_payload_type ||
|
||||
config_.rtp.ulpfec_payload_type != codec.ulpfec.ulpfec_payload_type) {
|
||||
config_.rtp.ulpfec_payload_type = codec.ulpfec.ulpfec_payload_type;
|
||||
config_.rtp.red_payload_type = codec.ulpfec.red_payload_type;
|
||||
recreate_needed = true;
|
||||
stream_->SetProtectionPayloadTypes(config_.rtp.red_payload_type,
|
||||
config_.rtp.ulpfec_payload_type);
|
||||
}
|
||||
|
||||
const bool has_lntf = HasLntf(codec.codec);
|
||||
if (config_.rtp.lntf.enabled != has_lntf) {
|
||||
config_.rtp.lntf.enabled = has_lntf;
|
||||
recreate_needed = true;
|
||||
stream_->SetLossNotificationEnabled(has_lntf);
|
||||
}
|
||||
|
||||
int new_history_ms = config_.rtp.nack.rtp_history_ms;
|
||||
const int rtp_history_ms = HasNack(codec.codec) ? kNackHistoryMs : 0;
|
||||
if (rtp_history_ms != config_.rtp.nack.rtp_history_ms) {
|
||||
config_.rtp.nack.rtp_history_ms = rtp_history_ms;
|
||||
recreate_needed = true;
|
||||
new_history_ms = rtp_history_ms;
|
||||
}
|
||||
|
||||
// The rtx-time parameter can be used to override the hardcoded default for
|
||||
// the NACK buffer length.
|
||||
if (codec.rtx_time != -1 && config_.rtp.nack.rtp_history_ms != 0) {
|
||||
config_.rtp.nack.rtp_history_ms = codec.rtx_time;
|
||||
recreate_needed = true;
|
||||
if (codec.rtx_time != -1 && new_history_ms != 0) {
|
||||
new_history_ms = codec.rtx_time;
|
||||
}
|
||||
|
||||
if (config_.rtp.nack.rtp_history_ms != new_history_ms) {
|
||||
config_.rtp.nack.rtp_history_ms = new_history_ms;
|
||||
stream_->SetNackHistory(webrtc::TimeDelta::Millis(new_history_ms));
|
||||
}
|
||||
|
||||
const bool has_rtr = HasRrtr(codec.codec);
|
||||
if (has_rtr != config_.rtp.rtcp_xr.receiver_reference_time_report) {
|
||||
config_.rtp.rtcp_xr.receiver_reference_time_report = has_rtr;
|
||||
recreate_needed = true;
|
||||
stream_->SetRtcpXr(config_.rtp.rtcp_xr);
|
||||
}
|
||||
|
||||
if (codec.ulpfec.red_rtx_payload_type != -1) {
|
||||
// TODO(tommi): Look into if/when this happens in practice.
|
||||
rtx_associated_payload_types[codec.ulpfec.red_rtx_payload_type] =
|
||||
codec.ulpfec.red_payload_type;
|
||||
}
|
||||
|
||||
if (config_.rtp.rtx_associated_payload_types !=
|
||||
rtx_associated_payload_types) {
|
||||
stream_->SetAssociatedPayloadTypes(rtx_associated_payload_types);
|
||||
rtx_associated_payload_types.swap(config_.rtp.rtx_associated_payload_types);
|
||||
recreate_needed = true;
|
||||
}
|
||||
|
||||
bool recreate_needed = false;
|
||||
|
||||
if (raw_payload_types != config_.rtp.raw_payload_types) {
|
||||
raw_payload_types.swap(config_.rtp.raw_payload_types);
|
||||
recreate_needed = true;
|
||||
@ -3020,68 +3067,82 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::SetFeedbackParameters(
|
||||
}
|
||||
}
|
||||
|
||||
config_.rtp.lntf.enabled = lntf_enabled;
|
||||
stream_->SetLossNotificationEnabled(lntf_enabled);
|
||||
|
||||
int nack_history_ms =
|
||||
nack_enabled ? rtx_time != -1 ? rtx_time : kNackHistoryMs : 0;
|
||||
if (config_.rtp.lntf.enabled == lntf_enabled &&
|
||||
config_.rtp.nack.rtp_history_ms == nack_history_ms) {
|
||||
RTC_LOG(LS_INFO)
|
||||
<< "Ignoring call to SetFeedbackParameters because parameters are "
|
||||
"unchanged; lntf="
|
||||
<< lntf_enabled << ", nack=" << nack_enabled
|
||||
<< ", rtx_time=" << rtx_time;
|
||||
return;
|
||||
}
|
||||
|
||||
config_.rtp.lntf.enabled = lntf_enabled;
|
||||
config_.rtp.nack.rtp_history_ms = nack_history_ms;
|
||||
stream_->SetNackHistory(webrtc::TimeDelta::Millis(nack_history_ms));
|
||||
}
|
||||
|
||||
RTC_LOG(LS_INFO) << "RecreateReceiveStream (recv) because of "
|
||||
"SetFeedbackParameters; nack="
|
||||
<< nack_enabled;
|
||||
RecreateReceiveStream();
|
||||
void WebRtcVideoChannel::WebRtcVideoReceiveStream::SetFlexFecPayload(
|
||||
int payload_type) {
|
||||
// TODO(bugs.webrtc.org/11993, tommi): See if it is better to always have a
|
||||
// flexfec stream object around and instead of recreating the video stream,
|
||||
// reconfigure the flexfec object from within the rtp callback (soon to be on
|
||||
// the network thread).
|
||||
if (flexfec_stream_) {
|
||||
if (flexfec_stream_->payload_type() == payload_type) {
|
||||
RTC_DCHECK_EQ(flexfec_config_.payload_type, payload_type);
|
||||
return;
|
||||
}
|
||||
|
||||
flexfec_config_.payload_type = payload_type;
|
||||
flexfec_stream_->SetPayloadType(payload_type);
|
||||
|
||||
if (payload_type == -1) {
|
||||
stream_->SetFlexFecProtection(nullptr);
|
||||
call_->DestroyFlexfecReceiveStream(flexfec_stream_);
|
||||
flexfec_stream_ = nullptr;
|
||||
}
|
||||
} else if (payload_type != -1) {
|
||||
flexfec_config_.payload_type = payload_type;
|
||||
if (flexfec_config_.IsCompleteAndEnabled()) {
|
||||
flexfec_stream_ = call_->CreateFlexfecReceiveStream(flexfec_config_);
|
||||
stream_->SetFlexFecProtection(flexfec_stream_);
|
||||
}
|
||||
} else {
|
||||
// Noop. No flexfec stream exists and "new" payload_type == -1.
|
||||
RTC_DCHECK(!flexfec_config_.IsCompleteAndEnabled());
|
||||
flexfec_config_.payload_type = payload_type;
|
||||
}
|
||||
}
|
||||
|
||||
void WebRtcVideoChannel::WebRtcVideoReceiveStream::SetRecvParameters(
|
||||
const ChangedRecvParameters& params) {
|
||||
RTC_DCHECK(stream_);
|
||||
bool video_needs_recreation = false;
|
||||
if (params.codec_settings) {
|
||||
video_needs_recreation = ConfigureCodecs(*params.codec_settings);
|
||||
video_needs_recreation = ReconfigureCodecs(*params.codec_settings);
|
||||
}
|
||||
|
||||
if (params.rtp_header_extensions) {
|
||||
if (config_.rtp.extensions != *params.rtp_header_extensions) {
|
||||
config_.rtp.extensions = *params.rtp_header_extensions;
|
||||
if (stream_) {
|
||||
stream_->SetRtpExtensions(config_.rtp.extensions);
|
||||
} else {
|
||||
video_needs_recreation = true;
|
||||
}
|
||||
stream_->SetRtpExtensions(config_.rtp.extensions);
|
||||
}
|
||||
|
||||
if (flexfec_config_.rtp.extensions != *params.rtp_header_extensions) {
|
||||
flexfec_config_.rtp.extensions = *params.rtp_header_extensions;
|
||||
if (flexfec_stream_) {
|
||||
flexfec_stream_->SetRtpExtensions(flexfec_config_.rtp.extensions);
|
||||
} else if (flexfec_config_.IsCompleteAndEnabled()) {
|
||||
video_needs_recreation = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (params.flexfec_payload_type) {
|
||||
flexfec_config_.payload_type = *params.flexfec_payload_type;
|
||||
// TODO(tommi): See if it is better to always have a flexfec stream object
|
||||
// configured and instead of recreating the video stream, reconfigure the
|
||||
// flexfec object from within the rtp callback (soon to be on the network
|
||||
// thread).
|
||||
if (flexfec_stream_ || flexfec_config_.IsCompleteAndEnabled())
|
||||
video_needs_recreation = true;
|
||||
}
|
||||
|
||||
if (params.flexfec_payload_type)
|
||||
SetFlexFecPayload(*params.flexfec_payload_type);
|
||||
|
||||
if (video_needs_recreation) {
|
||||
RecreateReceiveStream();
|
||||
} else {
|
||||
RTC_DLOG_F(LS_INFO) << "No receive stream recreate needed.";
|
||||
}
|
||||
}
|
||||
|
||||
void WebRtcVideoChannel::WebRtcVideoReceiveStream::RecreateReceiveStream() {
|
||||
RTC_DCHECK(stream_);
|
||||
absl::optional<int> base_minimum_playout_delay_ms;
|
||||
absl::optional<webrtc::VideoReceiveStreamInterface::RecordingState>
|
||||
recording_state;
|
||||
@ -3099,14 +3160,8 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::RecreateReceiveStream() {
|
||||
flexfec_stream_ = nullptr;
|
||||
}
|
||||
|
||||
if (flexfec_config_.IsCompleteAndEnabled()) {
|
||||
flexfec_stream_ = call_->CreateFlexfecReceiveStream(flexfec_config_);
|
||||
}
|
||||
CreateReceiveStream();
|
||||
|
||||
webrtc::VideoReceiveStreamInterface::Config config = config_.Copy();
|
||||
config.rtp.protected_by_flexfec = (flexfec_stream_ != nullptr);
|
||||
config.rtp.packet_sink_ = flexfec_stream_;
|
||||
stream_ = call_->CreateVideoReceiveStream(std::move(config));
|
||||
if (base_minimum_playout_delay_ms) {
|
||||
stream_->SetBaseMinimumPlayoutDelayMs(
|
||||
base_minimum_playout_delay_ms.value());
|
||||
@ -3116,8 +3171,24 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::RecreateReceiveStream() {
|
||||
/*generate_key_frame=*/false);
|
||||
}
|
||||
|
||||
stream_->Start();
|
||||
StartReceiveStream();
|
||||
}
|
||||
|
||||
void WebRtcVideoChannel::WebRtcVideoReceiveStream::CreateReceiveStream() {
|
||||
RTC_DCHECK(!stream_);
|
||||
RTC_DCHECK(!flexfec_stream_);
|
||||
if (flexfec_config_.IsCompleteAndEnabled()) {
|
||||
flexfec_stream_ = call_->CreateFlexfecReceiveStream(flexfec_config_);
|
||||
}
|
||||
|
||||
webrtc::VideoReceiveStreamInterface::Config config = config_.Copy();
|
||||
config.rtp.protected_by_flexfec = (flexfec_stream_ != nullptr);
|
||||
config.rtp.packet_sink_ = flexfec_stream_;
|
||||
stream_ = call_->CreateVideoReceiveStream(std::move(config));
|
||||
}
|
||||
|
||||
void WebRtcVideoChannel::WebRtcVideoReceiveStream::StartReceiveStream() {
|
||||
stream_->Start();
|
||||
if (IsEnabled(call_->trials(), "WebRTC-Video-BufferPacketsWithUnknownSsrc")) {
|
||||
channel_->BackfillBufferedPackets(stream_params_.ssrcs);
|
||||
}
|
||||
@ -3175,18 +3246,6 @@ void WebRtcVideoChannel::WebRtcVideoReceiveStream::SetSink(
|
||||
sink_ = sink;
|
||||
}
|
||||
|
||||
std::string
|
||||
WebRtcVideoChannel::WebRtcVideoReceiveStream::GetCodecNameFromPayloadType(
|
||||
int payload_type) {
|
||||
for (const webrtc::VideoReceiveStreamInterface::Decoder& decoder :
|
||||
config_.decoders) {
|
||||
if (decoder.payload_type == payload_type) {
|
||||
return decoder.video_format.name;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
VideoReceiverInfo
|
||||
WebRtcVideoChannel::WebRtcVideoReceiveStream::GetVideoReceiverInfo(
|
||||
bool log_stats) {
|
||||
@ -3197,6 +3256,11 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::GetVideoReceiverInfo(
|
||||
info.decoder_implementation_name = stats.decoder_implementation_name;
|
||||
if (stats.current_payload_type != -1) {
|
||||
info.codec_payload_type = stats.current_payload_type;
|
||||
auto decoder_it = absl::c_find_if(config_.decoders, [&](const auto& d) {
|
||||
return d.payload_type == stats.current_payload_type;
|
||||
});
|
||||
if (decoder_it != config_.decoders.end())
|
||||
info.codec_name = decoder_it->video_format.name;
|
||||
}
|
||||
info.payload_bytes_rcvd = stats.rtp_stats.packet_counter.payload_bytes;
|
||||
info.header_and_padding_bytes_rcvd =
|
||||
@ -3256,8 +3320,6 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::GetVideoReceiverInfo(
|
||||
|
||||
info.content_type = stats.content_type;
|
||||
|
||||
info.codec_name = GetCodecNameFromPayloadType(stats.current_payload_type);
|
||||
|
||||
info.firs_sent = stats.rtcp_packet_type_counts.fir_packets;
|
||||
info.plis_sent = stats.rtcp_packet_type_counts.pli_packets;
|
||||
info.nacks_sent = stats.rtcp_packet_type_counts.nack_packets;
|
||||
@ -3699,8 +3761,8 @@ EncoderStreamFactory::CreateDefaultVideoStreams(
|
||||
if (encoder_config.simulcast_layers[0].target_bitrate_bps <= 0) {
|
||||
layer.target_bitrate_bps = max_bitrate_bps;
|
||||
} else {
|
||||
layer.target_bitrate_bps =
|
||||
encoder_config.simulcast_layers[0].target_bitrate_bps;
|
||||
layer.target_bitrate_bps = std::min(
|
||||
encoder_config.simulcast_layers[0].target_bitrate_bps, max_bitrate_bps);
|
||||
}
|
||||
layer.max_bitrate_bps = max_bitrate_bps;
|
||||
layer.max_qp = max_qp_;
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "media/engine/unhandled_packets_buffer.h"
|
||||
#include "rtc_base/network_route.h"
|
||||
#include "rtc_base/synchronization/mutex.h"
|
||||
#include "rtc_base/system/no_unique_address.h"
|
||||
#include "rtc_base/thread_annotations.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -328,6 +329,15 @@ class WebRtcVideoChannel : public VideoMediaChannel,
|
||||
static std::string CodecSettingsVectorToString(
|
||||
const std::vector<VideoCodecSettings>& codecs);
|
||||
|
||||
// Populates `rtx_associated_payload_types`, `raw_payload_types` and
|
||||
// `decoders` based on codec settings provided by `recv_codecs`.
|
||||
// `recv_codecs` must be non-empty and all other parameters must be empty.
|
||||
static void ExtractCodecInformation(
|
||||
rtc::ArrayView<const VideoCodecSettings> recv_codecs,
|
||||
std::map<int, int>& rtx_associated_payload_types,
|
||||
std::set<int>& raw_payload_types,
|
||||
std::vector<webrtc::VideoReceiveStreamInterface::Decoder>& decoders);
|
||||
|
||||
// Called when the local ssrc changes. Sets `rtcp_receiver_report_ssrc_` and
|
||||
// updates the receive streams.
|
||||
void SetReceiverReportSsrc(uint32_t ssrc) RTC_RUN_ON(&thread_checker_);
|
||||
@ -415,7 +425,7 @@ class WebRtcVideoChannel : public VideoMediaChannel,
|
||||
webrtc::DegradationPreference GetDegradationPreference() const
|
||||
RTC_EXCLUSIVE_LOCKS_REQUIRED(&thread_checker_);
|
||||
|
||||
webrtc::SequenceChecker thread_checker_;
|
||||
RTC_NO_UNIQUE_ADDRESS webrtc::SequenceChecker thread_checker_;
|
||||
webrtc::TaskQueueBase* const worker_thread_;
|
||||
const std::vector<uint32_t> ssrcs_ RTC_GUARDED_BY(&thread_checker_);
|
||||
const std::vector<SsrcGroup> ssrc_groups_ RTC_GUARDED_BY(&thread_checker_);
|
||||
@ -505,14 +515,19 @@ class WebRtcVideoChannel : public VideoMediaChannel,
|
||||
void SetLocalSsrc(uint32_t local_ssrc);
|
||||
|
||||
private:
|
||||
// Attempts to reconfigure an already existing `flexfec_stream_`, create
|
||||
// one if the configuration is now complete or remove a flexfec stream
|
||||
// when disabled.
|
||||
void SetFlexFecPayload(int payload_type);
|
||||
|
||||
void RecreateReceiveStream();
|
||||
void CreateReceiveStream();
|
||||
void StartReceiveStream();
|
||||
|
||||
// Applies a new receive codecs configration to `config_`. Returns true
|
||||
// if the internal stream needs to be reconstructed, or false if no changes
|
||||
// were applied.
|
||||
bool ConfigureCodecs(const std::vector<VideoCodecSettings>& recv_codecs);
|
||||
|
||||
std::string GetCodecNameFromPayloadType(int payload_type);
|
||||
bool ReconfigureCodecs(const std::vector<VideoCodecSettings>& recv_codecs);
|
||||
|
||||
WebRtcVideoChannel* const channel_;
|
||||
webrtc::Call* const call_;
|
||||
@ -574,8 +589,8 @@ class WebRtcVideoChannel : public VideoMediaChannel,
|
||||
|
||||
webrtc::TaskQueueBase* const worker_thread_;
|
||||
webrtc::ScopedTaskSafety task_safety_;
|
||||
webrtc::SequenceChecker network_thread_checker_;
|
||||
webrtc::SequenceChecker thread_checker_;
|
||||
RTC_NO_UNIQUE_ADDRESS webrtc::SequenceChecker network_thread_checker_;
|
||||
RTC_NO_UNIQUE_ADDRESS webrtc::SequenceChecker thread_checker_;
|
||||
|
||||
uint32_t rtcp_receiver_report_ssrc_ RTC_GUARDED_BY(thread_checker_);
|
||||
bool sending_ RTC_GUARDED_BY(thread_checker_);
|
||||
|
@ -76,6 +76,7 @@ using ::testing::Eq;
|
||||
using ::testing::Field;
|
||||
using ::testing::Gt;
|
||||
using ::testing::IsEmpty;
|
||||
using ::testing::Lt;
|
||||
using ::testing::Pair;
|
||||
using ::testing::Return;
|
||||
using ::testing::SizeIs;
|
||||
@ -1075,6 +1076,8 @@ TEST_F(WebRtcVideoEngineTest, RegisterDecodersIfSupported) {
|
||||
|
||||
EXPECT_TRUE(
|
||||
channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||
// Decoder creation happens on the decoder thread, make sure it runs.
|
||||
time_controller_.AdvanceTime(webrtc::TimeDelta::Zero());
|
||||
ASSERT_EQ(1u, decoder_factory_->decoders().size());
|
||||
|
||||
// Setting codecs of the same type should not reallocate the decoder.
|
||||
@ -1101,6 +1104,8 @@ TEST_F(WebRtcVideoEngineTest, RegisterH264DecoderIfSupported) {
|
||||
|
||||
EXPECT_TRUE(
|
||||
channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||
// Decoder creation happens on the decoder thread, make sure it runs.
|
||||
time_controller_.AdvanceTime(webrtc::TimeDelta::Zero());
|
||||
ASSERT_EQ(1u, decoder_factory_->decoders().size());
|
||||
}
|
||||
|
||||
@ -1807,69 +1812,10 @@ TEST_F(WebRtcVideoChannelBaseTest, SetSendWithoutCodecs) {
|
||||
TEST_F(WebRtcVideoChannelBaseTest, SetSendSetsTransportBufferSizes) {
|
||||
EXPECT_TRUE(SetOneCodec(DefaultCodec()));
|
||||
EXPECT_TRUE(SetSend(true));
|
||||
EXPECT_EQ(64 * 1024, network_interface_.sendbuf_size());
|
||||
EXPECT_EQ(256 * 1024, network_interface_.recvbuf_size());
|
||||
EXPECT_EQ(kVideoRtpSendBufferSize, network_interface_.sendbuf_size());
|
||||
EXPECT_EQ(kVideoRtpRecvBufferSize, network_interface_.recvbuf_size());
|
||||
}
|
||||
|
||||
// Test that we properly set the send and recv buffer sizes when overriding
|
||||
// via field trials.
|
||||
TEST_F(WebRtcVideoChannelBaseTest, OverridesRecvBufferSize) {
|
||||
// Set field trial to override the default recv buffer size, and then re-run
|
||||
// setup where the interface is created and configured.
|
||||
const int kCustomRecvBufferSize = 123456;
|
||||
override_field_trials_ = std::make_unique<webrtc::test::ScopedKeyValueConfig>(
|
||||
field_trials_, "WebRTC-IncreasedReceivebuffers/123456/");
|
||||
|
||||
ResetTest();
|
||||
|
||||
EXPECT_TRUE(SetOneCodec(DefaultCodec()));
|
||||
EXPECT_TRUE(SetSend(true));
|
||||
EXPECT_EQ(64 * 1024, network_interface_.sendbuf_size());
|
||||
EXPECT_EQ(kCustomRecvBufferSize, network_interface_.recvbuf_size());
|
||||
}
|
||||
|
||||
// Test that we properly set the send and recv buffer sizes when overriding
|
||||
// via field trials with suffix.
|
||||
TEST_F(WebRtcVideoChannelBaseTest, OverridesRecvBufferSizeWithSuffix) {
|
||||
// Set field trial to override the default recv buffer size, and then re-run
|
||||
// setup where the interface is created and configured.
|
||||
const int kCustomRecvBufferSize = 123456;
|
||||
override_field_trials_ = std::make_unique<webrtc::test::ScopedKeyValueConfig>(
|
||||
field_trials_, "WebRTC-IncreasedReceivebuffers/123456_Dogfood/");
|
||||
ResetTest();
|
||||
|
||||
EXPECT_TRUE(SetOneCodec(DefaultCodec()));
|
||||
EXPECT_TRUE(SetSend(true));
|
||||
EXPECT_EQ(64 * 1024, network_interface_.sendbuf_size());
|
||||
EXPECT_EQ(kCustomRecvBufferSize, network_interface_.recvbuf_size());
|
||||
}
|
||||
|
||||
class InvalidRecvBufferSizeFieldTrial
|
||||
: public WebRtcVideoChannelBaseTest,
|
||||
public ::testing::WithParamInterface<const char*> {};
|
||||
|
||||
// Test that we properly set the send and recv buffer sizes when overriding
|
||||
// via field trials that don't make any sense.
|
||||
TEST_P(InvalidRecvBufferSizeFieldTrial, InvalidRecvBufferSize) {
|
||||
// Set bogus field trial values to override the default recv buffer size, and
|
||||
// then re-run setup where the interface is created and configured. The
|
||||
// default value should still be used.
|
||||
override_field_trials_ = std::make_unique<webrtc::test::ScopedKeyValueConfig>(
|
||||
field_trials_,
|
||||
std::string("WebRTC-IncreasedReceivebuffers/") + GetParam() + "/");
|
||||
|
||||
ResetTest();
|
||||
|
||||
EXPECT_TRUE(SetOneCodec(DefaultCodec()));
|
||||
EXPECT_TRUE(SetSend(true));
|
||||
EXPECT_EQ(64 * 1024, network_interface_.sendbuf_size());
|
||||
EXPECT_EQ(256 * 1024, network_interface_.recvbuf_size());
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(All,
|
||||
InvalidRecvBufferSizeFieldTrial,
|
||||
Values("NotANumber", "-1", " ", "0"));
|
||||
|
||||
// Test that stats work properly for a 1-1 call.
|
||||
TEST_F(WebRtcVideoChannelBaseTest, GetStats) {
|
||||
const int kDurationSec = 3;
|
||||
@ -3780,6 +3726,46 @@ TEST_F(Vp9SettingsTest, MaxBitrateDeterminedBySvcResolutions) {
|
||||
ElementsAre(Field(&webrtc::VideoStream::max_bitrate_bps, Eq(2000000))));
|
||||
}
|
||||
|
||||
TEST_F(Vp9SettingsTest, Vp9SvcTargetBitrateCappedByMax) {
|
||||
cricket::VideoSendParameters parameters;
|
||||
parameters.codecs.push_back(GetEngineCodec("VP9"));
|
||||
ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
||||
|
||||
std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
|
||||
|
||||
FakeVideoSendStream* stream =
|
||||
AddSendStream(CreateSimStreamParams("cname", ssrcs));
|
||||
|
||||
webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
|
||||
|
||||
webrtc::test::FrameForwarder frame_forwarder;
|
||||
EXPECT_TRUE(channel_->SetVideoSend(ssrcs[0], nullptr, &frame_forwarder));
|
||||
channel_->SetSend(true);
|
||||
|
||||
// Set up 3 spatial layers with 720p, which should result in a max bitrate of
|
||||
// 2084 kbps.
|
||||
frame_forwarder.IncomingCapturedFrame(
|
||||
frame_source_.GetFrame(1280, 720, webrtc::VideoRotation::kVideoRotation_0,
|
||||
/*duration_us=*/33000));
|
||||
|
||||
webrtc::VideoCodecVP9 vp9_settings;
|
||||
ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
|
||||
|
||||
const size_t kNumSpatialLayers = ssrcs.size();
|
||||
const size_t kNumTemporalLayers = 3;
|
||||
EXPECT_EQ(vp9_settings.numberOfSpatialLayers, kNumSpatialLayers);
|
||||
EXPECT_EQ(vp9_settings.numberOfTemporalLayers, kNumTemporalLayers);
|
||||
|
||||
EXPECT_TRUE(channel_->SetVideoSend(ssrcs[0], nullptr, nullptr));
|
||||
|
||||
// VideoStream both min and max bitrate should be lower than legacy 2.5Mbps
|
||||
// default stream cap.
|
||||
EXPECT_THAT(
|
||||
stream->GetVideoStreams()[0],
|
||||
AllOf(Field(&webrtc::VideoStream::max_bitrate_bps, Lt(2500000)),
|
||||
Field(&webrtc::VideoStream::target_bitrate_bps, Lt(2500000))));
|
||||
}
|
||||
|
||||
class Vp9SettingsTestWithFieldTrial
|
||||
: public Vp9SettingsTest,
|
||||
public ::testing::WithParamInterface<
|
||||
@ -4209,10 +4195,11 @@ TEST_F(WebRtcVideoChannelFlexfecRecvTest, SetDefaultRecvCodecsWithSsrc) {
|
||||
}
|
||||
|
||||
// Test changing the configuration after a video stream has been created and
|
||||
// turn on flexfec. This will result in the video stream being recreated because
|
||||
// the flexfec stream pointer is injected to the video stream at construction.
|
||||
// turn on flexfec. This will result in video stream being reconfigured but not
|
||||
// recreated because the flexfec stream pointer will be given to the already
|
||||
// existing video stream instance.
|
||||
TEST_F(WebRtcVideoChannelFlexfecRecvTest,
|
||||
EnablingFlexfecRecreatesVideoReceiveStream) {
|
||||
EnablingFlexfecDoesNotRecreateVideoReceiveStream) {
|
||||
cricket::VideoRecvParameters recv_parameters;
|
||||
recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||
ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
|
||||
@ -4233,13 +4220,13 @@ TEST_F(WebRtcVideoChannelFlexfecRecvTest,
|
||||
recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
|
||||
ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
|
||||
|
||||
// Now the count of created streams will be 3 since the video stream was
|
||||
// recreated and a flexfec stream was created.
|
||||
EXPECT_EQ(3, fake_call_->GetNumCreatedReceiveStreams())
|
||||
<< "Enabling FlexFEC should create FlexfecReceiveStream.";
|
||||
|
||||
// The count of created streams will remain 2 despite the creation of a new
|
||||
// flexfec stream. The existing receive stream will have been reconfigured
|
||||
// to use the new flexfec instance.
|
||||
EXPECT_EQ(2, fake_call_->GetNumCreatedReceiveStreams())
|
||||
<< "Enabling FlexFEC should not create VideoReceiveStreamInterface (1).";
|
||||
EXPECT_EQ(1U, fake_call_->GetVideoReceiveStreams().size())
|
||||
<< "Enabling FlexFEC should not create VideoReceiveStreamInterface.";
|
||||
<< "Enabling FlexFEC should not create VideoReceiveStreamInterface (2).";
|
||||
EXPECT_EQ(1U, fake_call_->GetFlexfecReceiveStreams().size())
|
||||
<< "Enabling FlexFEC should create a single FlexfecReceiveStream.";
|
||||
video_stream = video_streams.front();
|
||||
@ -4249,11 +4236,11 @@ TEST_F(WebRtcVideoChannelFlexfecRecvTest,
|
||||
}
|
||||
|
||||
// Test changing the configuration after a video stream has been created with
|
||||
// flexfec enabled and then turn off flexfec. This will result in the video
|
||||
// stream being recreated because the flexfec stream pointer is injected to the
|
||||
// video stream at construction and that config needs to be torn down.
|
||||
// flexfec enabled and then turn off flexfec. This will not result in the video
|
||||
// stream being recreated. The flexfec stream pointer that's held by the video
|
||||
// stream will be set/cleared as dictated by the configuration change.
|
||||
TEST_F(WebRtcVideoChannelFlexfecRecvTest,
|
||||
DisablingFlexfecRecreatesVideoReceiveStream) {
|
||||
DisablingFlexfecDoesNotRecreateVideoReceiveStream) {
|
||||
cricket::VideoRecvParameters recv_parameters;
|
||||
recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||
recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
|
||||
@ -4276,9 +4263,10 @@ TEST_F(WebRtcVideoChannelFlexfecRecvTest,
|
||||
recv_parameters.codecs.clear();
|
||||
recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||
ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
|
||||
// Now the count of created streams will be 3 since the video stream had to
|
||||
// be recreated on account of the flexfec stream being deleted.
|
||||
EXPECT_EQ(3, fake_call_->GetNumCreatedReceiveStreams())
|
||||
// The count of created streams should remain 2 since the video stream will
|
||||
// have been reconfigured to not reference flexfec and not recreated on
|
||||
// account of the flexfec stream being deleted.
|
||||
EXPECT_EQ(2, fake_call_->GetNumCreatedReceiveStreams())
|
||||
<< "Disabling FlexFEC should not recreate VideoReceiveStreamInterface.";
|
||||
EXPECT_EQ(1U, fake_call_->GetVideoReceiveStreams().size())
|
||||
<< "Disabling FlexFEC should not destroy VideoReceiveStreamInterface.";
|
||||
@ -9054,6 +9042,9 @@ TEST_F(WebRtcVideoChannelBaseTest, EncoderSelectorSwitchCodec) {
|
||||
|
||||
ASSERT_TRUE(channel_->GetSendCodec(&codec));
|
||||
EXPECT_EQ("VP9", codec.name);
|
||||
|
||||
// Deregister the encoder selector in case it's called during test tear-down.
|
||||
channel_->SetEncoderSelector(kSsrc, nullptr);
|
||||
}
|
||||
|
||||
} // namespace cricket
|
||||
|
@ -397,8 +397,7 @@ void WebRtcVoiceEngine::Init() {
|
||||
options.audio_jitter_buffer_max_packets = 200;
|
||||
options.audio_jitter_buffer_fast_accelerate = false;
|
||||
options.audio_jitter_buffer_min_delay_ms = 0;
|
||||
bool error = ApplyOptions(options);
|
||||
RTC_DCHECK(error);
|
||||
ApplyOptions(options);
|
||||
}
|
||||
initialized_ = true;
|
||||
}
|
||||
@ -419,7 +418,7 @@ VoiceMediaChannel* WebRtcVoiceEngine::CreateMediaChannel(
|
||||
call);
|
||||
}
|
||||
|
||||
bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
||||
void WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||
RTC_LOG(LS_INFO) << "WebRtcVoiceEngine::ApplyOptions: "
|
||||
<< options_in.ToString();
|
||||
@ -451,7 +450,6 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
||||
// On iOS, VPIO provides built-in AGC.
|
||||
options.auto_gain_control = false;
|
||||
RTC_LOG(LS_INFO) << "Always disable AGC on iOS. Use built-in instead.";
|
||||
#elif defined(WEBRTC_ANDROID)
|
||||
#endif
|
||||
|
||||
#if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
|
||||
@ -522,35 +520,25 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
||||
}
|
||||
|
||||
if (options.stereo_swapping) {
|
||||
RTC_LOG(LS_INFO) << "Stereo swapping enabled? " << *options.stereo_swapping;
|
||||
audio_state()->SetStereoChannelSwapping(*options.stereo_swapping);
|
||||
}
|
||||
|
||||
if (options.audio_jitter_buffer_max_packets) {
|
||||
RTC_LOG(LS_INFO) << "NetEq capacity is "
|
||||
<< *options.audio_jitter_buffer_max_packets;
|
||||
audio_jitter_buffer_max_packets_ =
|
||||
std::max(20, *options.audio_jitter_buffer_max_packets);
|
||||
}
|
||||
if (options.audio_jitter_buffer_fast_accelerate) {
|
||||
RTC_LOG(LS_INFO) << "NetEq fast mode? "
|
||||
<< *options.audio_jitter_buffer_fast_accelerate;
|
||||
audio_jitter_buffer_fast_accelerate_ =
|
||||
*options.audio_jitter_buffer_fast_accelerate;
|
||||
}
|
||||
if (options.audio_jitter_buffer_min_delay_ms) {
|
||||
RTC_LOG(LS_INFO) << "NetEq minimum delay is "
|
||||
<< *options.audio_jitter_buffer_min_delay_ms;
|
||||
audio_jitter_buffer_min_delay_ms_ =
|
||||
*options.audio_jitter_buffer_min_delay_ms;
|
||||
}
|
||||
|
||||
webrtc::AudioProcessing* ap = apm();
|
||||
if (!ap) {
|
||||
RTC_LOG(LS_INFO)
|
||||
<< "No audio processing module present. No software-provided effects "
|
||||
"(AEC, NS, AGC, ...) are activated";
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
webrtc::AudioProcessing::Config apm_config = ap->GetConfig();
|
||||
@ -581,11 +569,9 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
||||
apm_config.noise_suppression.enabled = enabled;
|
||||
apm_config.noise_suppression.level =
|
||||
webrtc::AudioProcessing::Config::NoiseSuppression::Level::kHigh;
|
||||
RTC_LOG(LS_INFO) << "NS set to " << enabled;
|
||||
}
|
||||
|
||||
ap->ApplyConfig(apm_config);
|
||||
return true;
|
||||
}
|
||||
|
||||
const std::vector<AudioCodec>& WebRtcVoiceEngine::send_codecs() const {
|
||||
@ -1499,11 +1485,7 @@ bool WebRtcVoiceMediaChannel::SetOptions(const AudioOptions& options) {
|
||||
// on top. This means there is no way to "clear" options such that
|
||||
// they go back to the engine default.
|
||||
options_.SetAll(options);
|
||||
if (!engine()->ApplyOptions(options_)) {
|
||||
RTC_LOG(LS_WARNING)
|
||||
<< "Failed to apply engine options during channel SetOptions.";
|
||||
return false;
|
||||
}
|
||||
engine()->ApplyOptions(options_);
|
||||
|
||||
absl::optional<std::string> audio_network_adaptor_config =
|
||||
GetAudioNetworkAdaptorConfig(options_);
|
||||
@ -2317,6 +2299,12 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info,
|
||||
sinfo.ana_statistics = stats.ana_statistics;
|
||||
sinfo.apm_statistics = stats.apm_statistics;
|
||||
sinfo.report_block_datas = std::move(stats.report_block_datas);
|
||||
|
||||
auto encodings = stream.second->rtp_parameters().encodings;
|
||||
if (!encodings.empty()) {
|
||||
sinfo.active = encodings[0].active;
|
||||
}
|
||||
|
||||
info->senders.push_back(sinfo);
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ class WebRtcVoiceEngine final : public VoiceEngineInterface {
|
||||
// Every option that is "set" will be applied. Every option not "set" will be
|
||||
// ignored. This allows us to selectively turn on and off different options
|
||||
// easily at any time.
|
||||
bool ApplyOptions(const AudioOptions& options);
|
||||
void ApplyOptions(const AudioOptions& options);
|
||||
|
||||
int CreateVoEChannel();
|
||||
|
||||
|
10
third_party/libwebrtc/modules/BUILD.gn
vendored
10
third_party/libwebrtc/modules/BUILD.gn
vendored
@ -146,18 +146,28 @@ if (rtc_include_tests && !build_with_chromium) {
|
||||
"../resources/audio_processing/transient/wpd7.dat",
|
||||
"../resources/deflicker_before_cif_short.yuv",
|
||||
"../resources/far16_stereo.pcm",
|
||||
"../resources/far176_stereo.pcm",
|
||||
"../resources/far192_stereo.pcm",
|
||||
"../resources/far22_stereo.pcm",
|
||||
"../resources/far32_stereo.pcm",
|
||||
"../resources/far44_stereo.pcm",
|
||||
"../resources/far48_stereo.pcm",
|
||||
"../resources/far88_stereo.pcm",
|
||||
"../resources/far8_stereo.pcm",
|
||||
"../resources/far96_stereo.pcm",
|
||||
"../resources/foremanColorEnhanced_cif_short.yuv",
|
||||
"../resources/foreman_cif.yuv",
|
||||
"../resources/foreman_cif_short.yuv",
|
||||
"../resources/near16_stereo.pcm",
|
||||
"../resources/near176_stereo.pcm",
|
||||
"../resources/near192_stereo.pcm",
|
||||
"../resources/near22_stereo.pcm",
|
||||
"../resources/near32_stereo.pcm",
|
||||
"../resources/near44_stereo.pcm",
|
||||
"../resources/near48_stereo.pcm",
|
||||
"../resources/near88_stereo.pcm",
|
||||
"../resources/near8_stereo.pcm",
|
||||
"../resources/near96_stereo.pcm",
|
||||
"../resources/ref03.aecdump",
|
||||
"../resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke1_0_AST.bin",
|
||||
"../resources/remote_bitrate_estimator/VideoSendersTest_BweTest_IncreasingChoke1_0_TOF.bin",
|
||||
|
@ -1253,10 +1253,10 @@ TEST_F(AcmSenderBitExactnessNewApi, OpusFromFormat_stereo_20ms_voip) {
|
||||
ASSERT_NO_FATAL_FAILURE(SetUpTestExternalEncoder(
|
||||
AudioEncoderOpus::MakeAudioEncoder(*config, 120), 120));
|
||||
const std::string audio_maybe_sse =
|
||||
"058c03ca2c9bb5c0066d4c15ce50d772"
|
||||
"1010e60ad34cee73c939edaf563d0593"
|
||||
"|ca54661b220cc35239c6864ab858d29a";
|
||||
const std::string payload_maybe_sse =
|
||||
"f270ec7be7a5ed60c203c2317c4e1011"
|
||||
"ea48d94e43217793af9b7e15ece94e54"
|
||||
"|eb0752ce1b6f2436fefc2e19bd084fb5";
|
||||
Run(audio_maybe_sse, payload_maybe_sse, /*expected_packets=*/50,
|
||||
/*expected_channels=*/test::AcmReceiveTestOldApi::kStereoOutput);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user