commit 8ccd09857d84d745a7b769543a04984feb9318e8
parent 7ad5273dc2ef0a53975b50331ba3c7bbbcc1cf55
Author: Dan Baker <dbaker@mozilla.com>
Date: Mon, 1 Dec 2025 18:33:48 -0700
Bug 2000941 - Vendor libwebrtc from 40c9ccfc4a
We already cherry-picked this when we vendored a0e60db139.
Upstream commit: https://webrtc.googlesource.com/src/+/40c9ccfc4ad708a41e343b1995487fcde90a6458
Revert "Avoid seeding Random with current time in rtp_sender"
This reverts commit a0e60db139e8d06f3646b374837fcbdd5b98df42.
Reason for revert: Broke win10 chrome bots: https://ci.chromium.org/ui/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Win10%20Tester/18529/overview
Original change's description:
> Avoid seeding Random with current time in rtp_sender
>
> Random default constructor now provides a non-deterministic random seed.
>
> This CL was uploaded by an experimental version of git cl split
> (https://crbug.com/389069356).
>
> R=danilchap@webrtc.org
>
> Bug: webrtc:42223992, webrtc:441137274
> Change-Id: If0b2959994c474d2d8d433749879e72f1e0c530c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408744
> Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#45590}
Bug: webrtc:42223992, webrtc:441137274
Change-Id: Ib09ca1047a798dd6c9500b9ce4a33198f0f5cb21
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408820
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45605}
Diffstat:
6 files changed, 490 insertions(+), 542 deletions(-)
diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor
@@ -1,4 +1,4 @@
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
-libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T01:30:37.866900+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T01:33:30.952235+00:00.
# base of lastest vendoring
-6afeb1ce2c
+40c9ccfc4a
diff --git a/third_party/libwebrtc/moz-patch-stack/40c9ccfc4a.no-op-cherry-pick-msg b/third_party/libwebrtc/moz-patch-stack/40c9ccfc4a.no-op-cherry-pick-msg
@@ -1 +0,0 @@
-We already cherry-picked this when we vendored a0e60db139.
diff --git a/third_party/libwebrtc/moz-patch-stack/p0004.patch b/third_party/libwebrtc/moz-patch-stack/p0004.patch
@@ -1,51 +1,121 @@
From: Daniel Baker <dbaker@mozilla.com>
-Date: Mon, 1 Dec 2025 17:44:54 -0700
-Subject: (tmp-cherry-pick) Revert "Avoid seeding Random with current time in
- rtp_sender" (40c9ccfc4a)
+Date: Mon, 1 Dec 2025 17:39:53 -0700
+Subject: (tmp-cherry-pick) Revert "Use absl::BitGen to generate Random's seed"
+ (b90d283911)
-This reverts commit a0e60db139e8d06f3646b374837fcbdd5b98df42.
+This reverts commit f2556b4ffe51bc25bfa99771801800ddb71aad8e.
-Reason for revert: Broke win10 chrome bots: https://ci.chromium.org/ui/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Win10%20Tester/18529/overview
+Reason for revert: absl::BitGen has issues seeding on Windows10 Chromium render process. https://ci.chromium.org/ui/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Win10%20Tester/18543/test-results
Original change's description:
-> Avoid seeding Random with current time in rtp_sender
+> Use absl::BitGen to generate Random's seed
>
-> Random default constructor now provides a non-deterministic random seed.
+> This adds a default constructor to Random which uses absl::BitGet to
+> generate its own seed. This allows us to replace places where the
+> current time was used to set a seed.
>
-> This CL was uploaded by an experimental version of git cl split
-> (https://crbug.com/389069356).
->
-> R=danilchap@webrtc.org
->
-> Bug: webrtc:42223992, webrtc:441137274
-> Change-Id: If0b2959994c474d2d8d433749879e72f1e0c530c
-> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408744
+> Bug: webrtc:441137274
+> Change-Id: I5afeca99b2fee5e5a2a0b31043ee0c81c00af5cc
+> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408005
> Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
-> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
-> Cr-Commit-Position: refs/heads/main@{#45590}
+> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
+> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
+> Cr-Commit-Position: refs/heads/main@{#45588}
-Bug: webrtc:42223992, webrtc:441137274
-Change-Id: Ib09ca1047a798dd6c9500b9ce4a33198f0f5cb21
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408820
+Bug: webrtc:441137274
+Change-Id: I7acb39e56cfb119742a2b36f053abd1a43781417
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408903
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
-Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org>
-Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
-Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
-Cr-Commit-Position: refs/heads/main@{#45605}
+Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
+Reviewed-by: Harald Alvestrand <hta@webrtc.org>
+Cr-Commit-Position: refs/heads/main@{#45619}
---
- modules/rtp_rtcp/source/rtp_sender.cc | 1 +
- 1 file changed, 1 insertion(+)
+ rtc_base/BUILD.gn | 1 -
+ rtc_base/DEPS | 3 ---
+ rtc_base/random.cc | 8 --------
+ rtc_base/random.h | 19 ++++++++++++-------
+ 4 files changed, 12 insertions(+), 19 deletions(-)
-diff --git a/modules/rtp_rtcp/source/rtp_sender.cc b/modules/rtp_rtcp/source/rtp_sender.cc
-index 3e333af6e5..ef9d0250f6 100644
---- a/modules/rtp_rtcp/source/rtp_sender.cc
-+++ b/modules/rtp_rtcp/source/rtp_sender.cc
-@@ -157,6 +157,7 @@ RTPSender::RTPSender(const Environment& env,
- RtpPacketHistory* packet_history,
- RtpPacketSender* packet_sender)
- : clock_(&env.clock()),
-+ random_(clock_->TimeInMicroseconds()),
- audio_configured_(config.audio),
- ssrc_(config.local_media_ssrc),
- rtx_ssrc_(config.rtx_send_ssrc),
+diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
+index b7ec9d0fdf..4d4014adc9 100644
+--- a/rtc_base/BUILD.gn
++++ b/rtc_base/BUILD.gn
+@@ -251,7 +251,6 @@ rtc_library("random") {
+ deps = [
+ ":checks",
+ ":safe_conversions",
+- "//third_party/abseil-cpp/absl/random",
+ ]
+ }
+
+diff --git a/rtc_base/DEPS b/rtc_base/DEPS
+index 8ad49971f1..9e8908ceb2 100644
+--- a/rtc_base/DEPS
++++ b/rtc_base/DEPS
+@@ -44,7 +44,4 @@ specific_include_rules = {
+ "base64_rust\.cc": [
+ "+third_party/rust/chromium_crates_io/vendor/cxx-v1/include/cxx.h",
+ ],
+- "random\.cc": [
+- "+absl/random/random.h",
+- ],
+ }
+diff --git a/rtc_base/random.cc b/rtc_base/random.cc
+index 7f2303b711..8fd23ea7ad 100644
+--- a/rtc_base/random.cc
++++ b/rtc_base/random.cc
+@@ -11,21 +11,13 @@
+
+ #include <cmath>
+ #include <cstdint>
+-#include <limits>
+ #include <numbers>
+
+-#include "absl/random/random.h"
+ #include "rtc_base/checks.h"
+ #include "rtc_base/numerics/safe_conversions.h"
+
+ namespace webrtc {
+
+-Random::Random() {
+- absl::BitGen gen;
+- state_ =
+- absl::Uniform<uint64_t>(gen, 1, std::numeric_limits<uint64_t>::max());
+-}
+-
+ Random::Random(uint64_t seed) {
+ RTC_DCHECK(seed != 0x0ull);
+ state_ = seed;
+diff --git a/rtc_base/random.h b/rtc_base/random.h
+index 3b9112a9e3..b3b9fd1608 100644
+--- a/rtc_base/random.h
++++ b/rtc_base/random.h
+@@ -21,15 +21,20 @@ namespace webrtc {
+
+ class Random {
+ public:
+- // Returns a random number generator with a random seed.
+- Random();
+-
+- // Returns a random number generator with the given seed. The seed must not
+- // be 0. It is expected that callers intelligently generate their seeds and do
+- // not simply pass a constant value or use the current time as a seed.
+- // This function should only be used for testing.
++ // TODO(tommi): Change this so that the seed can be initialized internally,
++ // e.g. by offering two ways of constructing or offer a static method that
++ // returns a seed that's suitable for initialization.
++ // The problem now is that callers are calling clock_->TimeInMicroseconds()
++ // which calls TickTime::Now().Ticks(), which can return a very low value on
++ // Mac and can result in a seed of 0 after conversion to microseconds.
++ // Besides the quality of the random seed being poor, this also requires
++ // the client to take on extra dependencies to generate a seed.
++ // If we go for a static seed generator in Random, we can use something from
++ // webrtc/rtc_base and make sure that it works the same way across platforms.
++ // See also discussion here: https://codereview.webrtc.org/1623543002/
+ explicit Random(uint64_t seed);
+
++ Random() = delete;
+ Random(const Random&) = delete;
+ Random& operator=(const Random&) = delete;
+
diff --git a/third_party/libwebrtc/moz-patch-stack/p0005.patch b/third_party/libwebrtc/moz-patch-stack/p0005.patch
@@ -1,121 +1,61 @@
-From: Daniel Baker <dbaker@mozilla.com>
-Date: Mon, 1 Dec 2025 17:39:53 -0700
-Subject: (tmp-cherry-pick) Revert "Use absl::BitGen to generate Random's seed"
- (b90d283911)
+From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= <hbos@webrtc.org>
+Date: Wed, 10 Sep 2025 12:47:04 +0200
+Subject: (cherry-pick-branch-heads/7390) [M141] Do not hide inbound-rtp if
+ media is received.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
-This reverts commit f2556b4ffe51bc25bfa99771801800ddb71aad8e.
+This condition neglected the fact that if Insertable Streams API is used
+we can have frames or samples despite packets never being received.
-Reason for revert: absl::BitGen has issues seeding on Windows10 Chromium render process. https://ci.chromium.org/ui/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Win10%20Tester/18543/test-results
+This CL fixes this unintended regression.
-Original change's description:
-> Use absl::BitGen to generate Random's seed
->
-> This adds a default constructor to Random which uses absl::BitGet to
-> generate its own seed. This allows us to replace places where the
-> current time was used to set a seed.
->
-> Bug: webrtc:441137274
-> Change-Id: I5afeca99b2fee5e5a2a0b31043ee0c81c00af5cc
-> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408005
-> Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
-> Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
-> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
-> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
-> Cr-Commit-Position: refs/heads/main@{#45588}
+# Ignore unrelated compile issues on ios webrtc bots
+NOTRY=True
-Bug: webrtc:441137274
-Change-Id: I7acb39e56cfb119742a2b36f053abd1a43781417
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408903
-Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
-Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
-Reviewed-by: Harald Alvestrand <hta@webrtc.org>
-Cr-Commit-Position: refs/heads/main@{#45619}
+(cherry picked from commit c15949eda5a00122e2f3b5a643e15781049b9927)
+
+Bug: chromium:444048024, chromium:444384230
+Change-Id: Ie6e17a3bc96701476787f5898446f3f706715d15
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408884
+Commit-Queue: Guido Urdaneta <guidou@webrtc.org>
+Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
+Auto-Submit: Henrik Boström <hbos@webrtc.org>
+Commit-Queue: Henrik Boström <hbos@webrtc.org>
+Cr-Original-Commit-Position: refs/heads/main@{#45616}
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/409020
+Cr-Commit-Position: refs/branch-heads/7390@{#2}
+Cr-Branched-From: 2f553bf8d573c90176d51559b76dfc836996c8f5-refs/heads/main@{#45520}
---
- rtc_base/BUILD.gn | 1 -
- rtc_base/DEPS | 3 ---
- rtc_base/random.cc | 8 --------
- rtc_base/random.h | 19 ++++++++++++-------
- 4 files changed, 12 insertions(+), 19 deletions(-)
+ pc/rtc_stats_collector.cc | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
-diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
-index b7ec9d0fdf..4d4014adc9 100644
---- a/rtc_base/BUILD.gn
-+++ b/rtc_base/BUILD.gn
-@@ -251,7 +251,6 @@ rtc_library("random") {
- deps = [
- ":checks",
- ":safe_conversions",
-- "//third_party/abseil-cpp/absl/random",
- ]
- }
-
-diff --git a/rtc_base/DEPS b/rtc_base/DEPS
-index 8ad49971f1..9e8908ceb2 100644
---- a/rtc_base/DEPS
-+++ b/rtc_base/DEPS
-@@ -44,7 +44,4 @@ specific_include_rules = {
- "base64_rust\.cc": [
- "+third_party/rust/chromium_crates_io/vendor/cxx-v1/include/cxx.h",
- ],
-- "random\.cc": [
-- "+absl/random/random.h",
-- ],
- }
-diff --git a/rtc_base/random.cc b/rtc_base/random.cc
-index 7f2303b711..8fd23ea7ad 100644
---- a/rtc_base/random.cc
-+++ b/rtc_base/random.cc
-@@ -11,21 +11,13 @@
-
- #include <cmath>
- #include <cstdint>
--#include <limits>
- #include <numbers>
-
--#include "absl/random/random.h"
- #include "rtc_base/checks.h"
- #include "rtc_base/numerics/safe_conversions.h"
-
- namespace webrtc {
-
--Random::Random() {
-- absl::BitGen gen;
-- state_ =
-- absl::Uniform<uint64_t>(gen, 1, std::numeric_limits<uint64_t>::max());
--}
--
- Random::Random(uint64_t seed) {
- RTC_DCHECK(seed != 0x0ull);
- state_ = seed;
-diff --git a/rtc_base/random.h b/rtc_base/random.h
-index 3b9112a9e3..b3b9fd1608 100644
---- a/rtc_base/random.h
-+++ b/rtc_base/random.h
-@@ -21,15 +21,20 @@ namespace webrtc {
-
- class Random {
- public:
-- // Returns a random number generator with a random seed.
-- Random();
--
-- // Returns a random number generator with the given seed. The seed must not
-- // be 0. It is expected that callers intelligently generate their seeds and do
-- // not simply pass a constant value or use the current time as a seed.
-- // This function should only be used for testing.
-+ // TODO(tommi): Change this so that the seed can be initialized internally,
-+ // e.g. by offering two ways of constructing or offer a static method that
-+ // returns a seed that's suitable for initialization.
-+ // The problem now is that callers are calling clock_->TimeInMicroseconds()
-+ // which calls TickTime::Now().Ticks(), which can return a very low value on
-+ // Mac and can result in a seed of 0 after conversion to microseconds.
-+ // Besides the quality of the random seed being poor, this also requires
-+ // the client to take on extra dependencies to generate a seed.
-+ // If we go for a static seed generator in Random, we can use something from
-+ // webrtc/rtc_base and make sure that it works the same way across platforms.
-+ // See also discussion here: https://codereview.webrtc.org/1623543002/
- explicit Random(uint64_t seed);
-
-+ Random() = delete;
- Random(const Random&) = delete;
- Random& operator=(const Random&) = delete;
-
+diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
+index 8686143e68..8d6cc22426 100644
+--- a/pc/rtc_stats_collector.cc
++++ b/pc/rtc_stats_collector.cc
+@@ -1754,7 +1754,10 @@ void RTCStatsCollector::ProduceAudioRTPStreamStats_n(
+ if (!voice_receiver_info.connected()) {
+ continue; // The SSRC is not known yet.
+ }
+- if (spec_lifetime && voice_receiver_info.packets_received == 0) {
++ // Check both packets received and samples received to handle the Insertable
++ // Streams use case of receiving media without receiving packets.
++ if (spec_lifetime && voice_receiver_info.packets_received == 0 &&
++ voice_receiver_info.total_samples_received == 0) {
+ // The SSRC is known despite not receiving any packets. This happens if
+ // SSRC is signalled in the SDP which we should not rely on for getStats.
+ continue;
+@@ -1868,7 +1871,10 @@ void RTCStatsCollector::ProduceVideoRTPStreamStats_n(
+ if (!video_receiver_info.connected()) {
+ continue; // The SSRC is not known yet.
+ }
+- if (spec_lifetime && video_receiver_info.packets_received == 0) {
++ // Check both packets received and frames received to handle the Insertable
++ // Streams use case of receiving media without receiving packets.
++ if (spec_lifetime && video_receiver_info.packets_received == 0 &&
++ video_receiver_info.frames_received == 0) {
+ // The SSRC is known despite not receiving any packets. This happens if
+ // SSRC is signalled in the SDP which we should not rely on for getStats.
+ continue;
diff --git a/third_party/libwebrtc/moz-patch-stack/p0006.patch b/third_party/libwebrtc/moz-patch-stack/p0006.patch
@@ -1,61 +1,331 @@
-From: =?UTF-8?q?Henrik=20Bostr=C3=B6m?= <hbos@webrtc.org>
-Date: Wed, 10 Sep 2025 12:47:04 +0200
-Subject: (cherry-pick-branch-heads/7390) [M141] Do not hide inbound-rtp if
- media is received.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
+From: Palak Agarwal <agpalak@google.com>
+Date: Tue, 7 Oct 2025 13:45:52 +0200
+Subject: (cherry-pick-branch-heads/7390) [M141] Add logging while creating
+ {Window|Screen}Capturer
-This condition neglected the fact that if Insertable Streams API is used
-we can have frames or samples despite packets never being received.
+(cherry picked from commit 6908505ae0eba5d530ad0bb4b37d4654a4f36c95)
-This CL fixes this unintended regression.
-
-# Ignore unrelated compile issues on ios webrtc bots
-NOTRY=True
-
-(cherry picked from commit c15949eda5a00122e2f3b5a643e15781049b9927)
-
-Bug: chromium:444048024, chromium:444384230
-Change-Id: Ie6e17a3bc96701476787f5898446f3f706715d15
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408884
-Commit-Queue: Guido Urdaneta <guidou@webrtc.org>
-Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
-Auto-Submit: Henrik Boström <hbos@webrtc.org>
-Commit-Queue: Henrik Boström <hbos@webrtc.org>
-Cr-Original-Commit-Position: refs/heads/main@{#45616}
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/409020
-Cr-Commit-Position: refs/branch-heads/7390@{#2}
+Fixed: chromium:450184498
+Bug: chromium:448881311
+Change-Id: I0f043f58bf831e6822451cac99a8972a054ffdf7
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/414800
+Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
+Reviewed-by: Harald Alvestrand <hta@webrtc.org>
+Commit-Queue: Palak Agarwal <agpalak@google.com>
+Cr-Original-Commit-Position: refs/heads/main@{#45856}
+Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/415420
+Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
+Cr-Commit-Position: refs/branch-heads/7390@{#3}
Cr-Branched-From: 2f553bf8d573c90176d51559b76dfc836996c8f5-refs/heads/main@{#45520}
---
- pc/rtc_stats_collector.cc | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
+ modules/desktop_capture/desktop_capturer.cc | 15 +++++++++++++++
+ .../linux/x11/screen_capturer_x11.cc | 6 ++++++
+ .../linux/x11/window_capturer_x11.cc | 4 ++++
+ modules/desktop_capture/screen_capturer_darwin.mm | 7 +++++++
+ .../desktop_capture/screen_capturer_fuchsia.cc | 3 +++
+ modules/desktop_capture/screen_capturer_linux.cc | 4 ++++
+ modules/desktop_capture/screen_capturer_null.cc | 4 ++++
+ modules/desktop_capture/screen_capturer_win.cc | 6 ++++++
+ modules/desktop_capture/window_capturer_linux.cc | 4 ++++
+ modules/desktop_capture/window_capturer_mac.mm | 2 ++
+ modules/desktop_capture/window_capturer_null.cc | 3 +++
+ modules/desktop_capture/window_capturer_win.cc | 7 +++++++
+ 12 files changed, 65 insertions(+)
-diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
-index 8686143e68..8d6cc22426 100644
---- a/pc/rtc_stats_collector.cc
-+++ b/pc/rtc_stats_collector.cc
-@@ -1754,7 +1754,10 @@ void RTCStatsCollector::ProduceAudioRTPStreamStats_n(
- if (!voice_receiver_info.connected()) {
- continue; // The SSRC is not known yet.
- }
-- if (spec_lifetime && voice_receiver_info.packets_received == 0) {
-+ // Check both packets received and samples received to handle the Insertable
-+ // Streams use case of receiving media without receiving packets.
-+ if (spec_lifetime && voice_receiver_info.packets_received == 0 &&
-+ voice_receiver_info.total_samples_received == 0) {
- // The SSRC is known despite not receiving any packets. This happens if
- // SSRC is signalled in the SDP which we should not rely on for getStats.
- continue;
-@@ -1868,7 +1871,10 @@ void RTCStatsCollector::ProduceVideoRTPStreamStats_n(
- if (!video_receiver_info.connected()) {
- continue; // The SSRC is not known yet.
+diff --git a/modules/desktop_capture/desktop_capturer.cc b/modules/desktop_capture/desktop_capturer.cc
+index ae9aba26ee..bf63f73178 100644
+--- a/modules/desktop_capture/desktop_capturer.cc
++++ b/modules/desktop_capture/desktop_capturer.cc
+@@ -21,6 +21,7 @@
+ #include "modules/desktop_capture/desktop_capturer_differ_wrapper.h"
+ #include "modules/desktop_capture/desktop_geometry.h"
+ #include "modules/desktop_capture/shared_memory.h"
++#include "rtc_base/logging.h"
+ #include "system_wrappers/include/metrics.h"
+
+ #if defined(WEBRTC_WIN)
+@@ -81,18 +82,26 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateWindowCapturer(
+ #if defined(RTC_ENABLE_WIN_WGC)
+ if (options.allow_wgc_window_capturer() &&
+ IsWgcSupported(CaptureType::kWindow)) {
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateWindowCapturer "
++ "creates DesktopCapturer of type WgcCapturerWin";
+ return WgcCapturerWin::CreateRawWindowCapturer(options);
+ }
+ #endif // defined(RTC_ENABLE_WIN_WGC)
+
+ #if defined(WEBRTC_WIN)
+ if (options.allow_cropping_window_capturer()) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateWindowCapturer "
++ "creates DesktopCapturer of type CroppingWindowCapturerWin";
+ return CroppingWindowCapturer::CreateCapturer(options);
+ }
+ #endif // defined(WEBRTC_WIN)
+
+ std::unique_ptr<DesktopCapturer> capturer = CreateRawWindowCapturer(options);
+ if (capturer && options.detect_updated_region()) {
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateWindowCapturer "
++ "creates DesktopCapturer of type "
++ "DesktopCapturerDifferWrapper over a base capturer";
+ capturer.reset(new DesktopCapturerDifferWrapper(std::move(capturer)));
+ }
+
+@@ -105,12 +114,18 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateScreenCapturer(
+ #if defined(RTC_ENABLE_WIN_WGC)
+ if (options.allow_wgc_screen_capturer() &&
+ IsWgcSupported(CaptureType::kScreen)) {
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateScreenCapturer "
++ "creates DesktopCapturer of type WgcCapturerWin";
+ return WgcCapturerWin::CreateRawScreenCapturer(options);
+ }
+ #endif // defined(RTC_ENABLE_WIN_WGC)
+
+ std::unique_ptr<DesktopCapturer> capturer = CreateRawScreenCapturer(options);
+ if (capturer && options.detect_updated_region()) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateScreenCapturer creates "
++ "DesktopCapturer of type DesktopCapturerDifferWrapper over a base "
++ "capturer";
+ capturer.reset(new DesktopCapturerDifferWrapper(std::move(capturer)));
+ }
+
+diff --git a/modules/desktop_capture/linux/x11/screen_capturer_x11.cc b/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
+index 90dd797cb3..f10dcabc7e 100644
+--- a/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
++++ b/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
+@@ -511,8 +511,14 @@ std::unique_ptr<DesktopCapturer> ScreenCapturerX11::CreateRawScreenCapturer(
+ if (!options.x_display())
+ return nullptr;
+
++ RTC_LOG(LS_INFO)
++ << "video capture: ScreenCapturerX11::CreateRawScreenCapturer creates "
++ "DesktopCapturer of type ScreenCapturerX11";
+ std::unique_ptr<ScreenCapturerX11> capturer(new ScreenCapturerX11());
+ if (!capturer->Init(options)) {
++ RTC_LOG(LS_INFO)
++ << "video capture: ScreenCapturerX11::CreateRawScreenCapturer "
++ "DesktopCapturer is null because it can not be initiated";
+ return nullptr;
+ }
+
+diff --git a/modules/desktop_capture/linux/x11/window_capturer_x11.cc b/modules/desktop_capture/linux/x11/window_capturer_x11.cc
+index 8e592ff2d9..9505205b76 100644
+--- a/modules/desktop_capture/linux/x11/window_capturer_x11.cc
++++ b/modules/desktop_capture/linux/x11/window_capturer_x11.cc
+@@ -247,6 +247,10 @@ std::unique_ptr<DesktopCapturer> WindowCapturerX11::CreateRawWindowCapturer(
+ const DesktopCaptureOptions& options) {
+ if (!options.x_display())
+ return nullptr;
++
++ RTC_LOG(LS_INFO)
++ << "video capture: WindowCapturerX11::CreateRawWindowCapturer creates "
++ "DesktopCapturer of type WindowCapturerX11";
+ return std::unique_ptr<DesktopCapturer>(new WindowCapturerX11(options));
+ }
+
+diff --git a/modules/desktop_capture/screen_capturer_darwin.mm b/modules/desktop_capture/screen_capturer_darwin.mm
+index 95a877c45d..3f14ddfe58 100644
+--- a/modules/desktop_capture/screen_capturer_darwin.mm
++++ b/modules/desktop_capture/screen_capturer_darwin.mm
+@@ -12,6 +12,7 @@
+
+ #include "modules/desktop_capture/mac/screen_capturer_mac.h"
+ #include "modules/desktop_capture/mac/screen_capturer_sck.h"
++#include "rtc_base/logging.h"
+
+ namespace webrtc {
+
+@@ -27,10 +28,16 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
+ std::unique_ptr<DesktopCapturer> sck_capturer =
+ CreateScreenCapturerSck(options);
+ if (sck_capturer) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
++ "DesktopCapturer of type ScreenCapturerSck";
+ return sck_capturer;
}
-- if (spec_lifetime && video_receiver_info.packets_received == 0) {
-+ // Check both packets received and frames received to handle the Insertable
-+ // Streams use case of receiving media without receiving packets.
-+ if (spec_lifetime && video_receiver_info.packets_received == 0 &&
-+ video_receiver_info.frames_received == 0) {
- // The SSRC is known despite not receiving any packets. This happens if
- // SSRC is signalled in the SDP which we should not rely on for getStats.
- continue;
+ }
+
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
++ "DesktopCapturer of type ScreenCapturerMac";
+ auto capturer =
+ std::make_unique<ScreenCapturerMac>(options.configuration_monitor(),
+ options.detect_updated_region(),
+diff --git a/modules/desktop_capture/screen_capturer_fuchsia.cc b/modules/desktop_capture/screen_capturer_fuchsia.cc
+index c3f51ef0fc..2a6c5e753d 100644
+--- a/modules/desktop_capture/screen_capturer_fuchsia.cc
++++ b/modules/desktop_capture/screen_capturer_fuchsia.cc
+@@ -56,6 +56,9 @@ size_t RoundUpToMultiple(size_t value, size_t multiple) {
+
+ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
+ const DesktopCaptureOptions& options) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
++ "DesktopCapturer of type ScreenCapturerFuchsia";
+ std::unique_ptr<ScreenCapturerFuchsia> capturer(new ScreenCapturerFuchsia());
+ return capturer;
+ }
+diff --git a/modules/desktop_capture/screen_capturer_linux.cc b/modules/desktop_capture/screen_capturer_linux.cc
+index 94726750c5..f25e08fb59 100644
+--- a/modules/desktop_capture/screen_capturer_linux.cc
++++ b/modules/desktop_capture/screen_capturer_linux.cc
+@@ -13,6 +13,7 @@
+ #include "modules/desktop_capture/desktop_capture_options.h"
+ #include "modules/desktop_capture/desktop_capture_types.h"
+ #include "modules/desktop_capture/desktop_capturer.h"
++#include "rtc_base/logging.h"
+
+ #if defined(WEBRTC_USE_PIPEWIRE)
+ #include "modules/desktop_capture/linux/wayland/base_capturer_pipewire.h"
+@@ -29,6 +30,9 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
+ const DesktopCaptureOptions& options) {
+ #if defined(WEBRTC_USE_PIPEWIRE)
+ if (options.allow_pipewire() && BaseCapturerPipeWire::IsSupported()) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
++ "DesktopCapturer of type BaseCapturerPipeWire";
+ return std::make_unique<BaseCapturerPipeWire>(options,
+ CaptureType::kScreen);
+ }
+diff --git a/modules/desktop_capture/screen_capturer_null.cc b/modules/desktop_capture/screen_capturer_null.cc
+index aa6d4991a0..21b2f46c4d 100644
+--- a/modules/desktop_capture/screen_capturer_null.cc
++++ b/modules/desktop_capture/screen_capturer_null.cc
+@@ -11,12 +11,16 @@
+ #include <memory>
+
+ #include "modules/desktop_capture/desktop_capturer.h"
++#include "rtc_base/logging.h"
+
+ namespace webrtc {
+
+ // static
+ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
+ const DesktopCaptureOptions& options) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates null "
++ "DesktopCapturer";
+ return nullptr;
+ }
+
+diff --git a/modules/desktop_capture/screen_capturer_win.cc b/modules/desktop_capture/screen_capturer_win.cc
+index a5f2052979..6620888f18 100644
+--- a/modules/desktop_capture/screen_capturer_win.cc
++++ b/modules/desktop_capture/screen_capturer_win.cc
+@@ -19,6 +19,7 @@
+ #include "modules/desktop_capture/win/dxgi_duplicator_controller.h"
+ #include "modules/desktop_capture/win/screen_capturer_win_directx.h"
+ #include "modules/desktop_capture/win/screen_capturer_win_gdi.h"
++#include "rtc_base/logging.h"
+
+ namespace webrtc {
+
+@@ -26,6 +27,9 @@ namespace {
+
+ std::unique_ptr<DesktopCapturer> CreateScreenCapturerWinDirectx(
+ const DesktopCaptureOptions& options) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
++ "DesktopCapturer of type ScreenCapturerWinDirectx";
+ std::unique_ptr<DesktopCapturer> capturer(
+ new ScreenCapturerWinDirectx(options));
+ capturer.reset(new BlankDetectorDesktopCapturerWrapper(
+@@ -39,6 +43,8 @@ std::unique_ptr<DesktopCapturer> CreateScreenCapturerWinDirectx(
+ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
+ const DesktopCaptureOptions& options) {
+ // Default capturer if no options are enabled is GDI.
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawScreenCapturer "
++ "creates DesktopCapturer of type ScreenCapturerWinGdi";
+ std::unique_ptr<DesktopCapturer> capturer(new ScreenCapturerWinGdi(options));
+
+ // If DirectX is enabled use it as main capturer with GDI as fallback.
+diff --git a/modules/desktop_capture/window_capturer_linux.cc b/modules/desktop_capture/window_capturer_linux.cc
+index f621a63e72..87ea3d5721 100644
+--- a/modules/desktop_capture/window_capturer_linux.cc
++++ b/modules/desktop_capture/window_capturer_linux.cc
+@@ -13,6 +13,7 @@
+ #include "modules/desktop_capture/desktop_capture_options.h"
+ #include "modules/desktop_capture/desktop_capture_types.h"
+ #include "modules/desktop_capture/desktop_capturer.h"
++#include "rtc_base/logging.h"
+
+ #if defined(WEBRTC_USE_PIPEWIRE)
+ #include "modules/desktop_capture/linux/wayland/base_capturer_pipewire.h"
+@@ -29,6 +30,9 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
+ const DesktopCaptureOptions& options) {
+ #if defined(WEBRTC_USE_PIPEWIRE)
+ if (options.allow_pipewire() && BaseCapturerPipeWire::IsSupported()) {
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawWindowCapturer creates "
++ "DesktopCapturer of type BaseCapturerPipeWire";
+ return std::make_unique<BaseCapturerPipeWire>(options,
+ CaptureType::kWindow);
+ }
+diff --git a/modules/desktop_capture/window_capturer_mac.mm b/modules/desktop_capture/window_capturer_mac.mm
+index a1e6157b87..731090d3fb 100644
+--- a/modules/desktop_capture/window_capturer_mac.mm
++++ b/modules/desktop_capture/window_capturer_mac.mm
+@@ -217,6 +217,8 @@ void WindowCapturerMac::CaptureFrame() {
+ // static
+ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
+ const DesktopCaptureOptions& options) {
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawWindowCapturer "
++ "creates DesktopCapturer of type WindowCapturerMac";
+ return std::unique_ptr<DesktopCapturer>(new WindowCapturerMac(
+ options.full_screen_window_detector(), options.configuration_monitor()));
+ }
+diff --git a/modules/desktop_capture/window_capturer_null.cc b/modules/desktop_capture/window_capturer_null.cc
+index 2061dc5248..384e186d20 100644
+--- a/modules/desktop_capture/window_capturer_null.cc
++++ b/modules/desktop_capture/window_capturer_null.cc
+@@ -12,6 +12,7 @@
+
+ #include "modules/desktop_capture/desktop_capturer.h"
+ #include "rtc_base/checks.h"
++#include "rtc_base/logging.h"
+
+ namespace webrtc {
+
+@@ -65,6 +66,8 @@ void WindowCapturerNull::CaptureFrame() {
+ // static
+ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
+ const DesktopCaptureOptions& options) {
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawWindowCapturer "
++ "creates DesktopCapturer of type WindowCapturerNull";
+ return std::unique_ptr<DesktopCapturer>(new WindowCapturerNull());
+ }
+
+diff --git a/modules/desktop_capture/window_capturer_win.cc b/modules/desktop_capture/window_capturer_win.cc
+index 115bc7d9b0..15ed7f5121 100644
+--- a/modules/desktop_capture/window_capturer_win.cc
++++ b/modules/desktop_capture/window_capturer_win.cc
+@@ -15,6 +15,7 @@
+ #include "modules/desktop_capture/desktop_capturer.h"
+ #include "modules/desktop_capture/rgba_color.h"
+ #include "modules/desktop_capture/win/window_capturer_win_gdi.h"
++#include "rtc_base/logging.h"
+
+ #if defined(RTC_ENABLE_WIN_WGC)
+ #include "modules/desktop_capture/blank_detector_desktop_capturer_wrapper.h"
+@@ -28,6 +29,8 @@ namespace webrtc {
+ // static
+ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
+ const DesktopCaptureOptions& options) {
++ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawWindowCapturer "
++ "creates DesktopCapturer of type WindowCapturerWinGdi";
+ std::unique_ptr<DesktopCapturer> capturer(
+ WindowCapturerWinGdi::CreateRawWindowCapturer(options));
+ #if defined(RTC_ENABLE_WIN_WGC)
+@@ -36,6 +39,10 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
+ // BlankDectector capturer will send an error when it detects a failed
+ // GDI rendering, then Fallback capturer will try to capture it again with
+ // WGC.
++ RTC_LOG(LS_INFO)
++ << "video capture: DesktopCapturer::CreateRawWindowCapturer creates "
++ "DesktopCapturer of type FallbackDesktopCapturerWrapper which has a "
++ "fallback capturer of type WgcCapturerWin";
+ capturer = std::make_unique<BlankDetectorDesktopCapturerWrapper>(
+ std::move(capturer), RgbaColor(0, 0, 0, 0),
+ /*check_per_capture*/ true);
diff --git a/third_party/libwebrtc/moz-patch-stack/p0007.patch b/third_party/libwebrtc/moz-patch-stack/p0007.patch
@@ -1,331 +0,0 @@
-From: Palak Agarwal <agpalak@google.com>
-Date: Tue, 7 Oct 2025 13:45:52 +0200
-Subject: (cherry-pick-branch-heads/7390) [M141] Add logging while creating
- {Window|Screen}Capturer
-
-(cherry picked from commit 6908505ae0eba5d530ad0bb4b37d4654a4f36c95)
-
-Fixed: chromium:450184498
-Bug: chromium:448881311
-Change-Id: I0f043f58bf831e6822451cac99a8972a054ffdf7
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/414800
-Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
-Reviewed-by: Harald Alvestrand <hta@webrtc.org>
-Commit-Queue: Palak Agarwal <agpalak@google.com>
-Cr-Original-Commit-Position: refs/heads/main@{#45856}
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/415420
-Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
-Cr-Commit-Position: refs/branch-heads/7390@{#3}
-Cr-Branched-From: 2f553bf8d573c90176d51559b76dfc836996c8f5-refs/heads/main@{#45520}
----
- modules/desktop_capture/desktop_capturer.cc | 15 +++++++++++++++
- .../linux/x11/screen_capturer_x11.cc | 6 ++++++
- .../linux/x11/window_capturer_x11.cc | 4 ++++
- modules/desktop_capture/screen_capturer_darwin.mm | 7 +++++++
- .../desktop_capture/screen_capturer_fuchsia.cc | 3 +++
- modules/desktop_capture/screen_capturer_linux.cc | 4 ++++
- modules/desktop_capture/screen_capturer_null.cc | 4 ++++
- modules/desktop_capture/screen_capturer_win.cc | 6 ++++++
- modules/desktop_capture/window_capturer_linux.cc | 4 ++++
- modules/desktop_capture/window_capturer_mac.mm | 2 ++
- modules/desktop_capture/window_capturer_null.cc | 3 +++
- modules/desktop_capture/window_capturer_win.cc | 7 +++++++
- 12 files changed, 65 insertions(+)
-
-diff --git a/modules/desktop_capture/desktop_capturer.cc b/modules/desktop_capture/desktop_capturer.cc
-index ae9aba26ee..bf63f73178 100644
---- a/modules/desktop_capture/desktop_capturer.cc
-+++ b/modules/desktop_capture/desktop_capturer.cc
-@@ -21,6 +21,7 @@
- #include "modules/desktop_capture/desktop_capturer_differ_wrapper.h"
- #include "modules/desktop_capture/desktop_geometry.h"
- #include "modules/desktop_capture/shared_memory.h"
-+#include "rtc_base/logging.h"
- #include "system_wrappers/include/metrics.h"
-
- #if defined(WEBRTC_WIN)
-@@ -81,18 +82,26 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateWindowCapturer(
- #if defined(RTC_ENABLE_WIN_WGC)
- if (options.allow_wgc_window_capturer() &&
- IsWgcSupported(CaptureType::kWindow)) {
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateWindowCapturer "
-+ "creates DesktopCapturer of type WgcCapturerWin";
- return WgcCapturerWin::CreateRawWindowCapturer(options);
- }
- #endif // defined(RTC_ENABLE_WIN_WGC)
-
- #if defined(WEBRTC_WIN)
- if (options.allow_cropping_window_capturer()) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateWindowCapturer "
-+ "creates DesktopCapturer of type CroppingWindowCapturerWin";
- return CroppingWindowCapturer::CreateCapturer(options);
- }
- #endif // defined(WEBRTC_WIN)
-
- std::unique_ptr<DesktopCapturer> capturer = CreateRawWindowCapturer(options);
- if (capturer && options.detect_updated_region()) {
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateWindowCapturer "
-+ "creates DesktopCapturer of type "
-+ "DesktopCapturerDifferWrapper over a base capturer";
- capturer.reset(new DesktopCapturerDifferWrapper(std::move(capturer)));
- }
-
-@@ -105,12 +114,18 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateScreenCapturer(
- #if defined(RTC_ENABLE_WIN_WGC)
- if (options.allow_wgc_screen_capturer() &&
- IsWgcSupported(CaptureType::kScreen)) {
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateScreenCapturer "
-+ "creates DesktopCapturer of type WgcCapturerWin";
- return WgcCapturerWin::CreateRawScreenCapturer(options);
- }
- #endif // defined(RTC_ENABLE_WIN_WGC)
-
- std::unique_ptr<DesktopCapturer> capturer = CreateRawScreenCapturer(options);
- if (capturer && options.detect_updated_region()) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateScreenCapturer creates "
-+ "DesktopCapturer of type DesktopCapturerDifferWrapper over a base "
-+ "capturer";
- capturer.reset(new DesktopCapturerDifferWrapper(std::move(capturer)));
- }
-
-diff --git a/modules/desktop_capture/linux/x11/screen_capturer_x11.cc b/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
-index 90dd797cb3..f10dcabc7e 100644
---- a/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
-+++ b/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
-@@ -511,8 +511,14 @@ std::unique_ptr<DesktopCapturer> ScreenCapturerX11::CreateRawScreenCapturer(
- if (!options.x_display())
- return nullptr;
-
-+ RTC_LOG(LS_INFO)
-+ << "video capture: ScreenCapturerX11::CreateRawScreenCapturer creates "
-+ "DesktopCapturer of type ScreenCapturerX11";
- std::unique_ptr<ScreenCapturerX11> capturer(new ScreenCapturerX11());
- if (!capturer->Init(options)) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: ScreenCapturerX11::CreateRawScreenCapturer "
-+ "DesktopCapturer is null because it can not be initiated";
- return nullptr;
- }
-
-diff --git a/modules/desktop_capture/linux/x11/window_capturer_x11.cc b/modules/desktop_capture/linux/x11/window_capturer_x11.cc
-index 8e592ff2d9..9505205b76 100644
---- a/modules/desktop_capture/linux/x11/window_capturer_x11.cc
-+++ b/modules/desktop_capture/linux/x11/window_capturer_x11.cc
-@@ -247,6 +247,10 @@ std::unique_ptr<DesktopCapturer> WindowCapturerX11::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
- if (!options.x_display())
- return nullptr;
-+
-+ RTC_LOG(LS_INFO)
-+ << "video capture: WindowCapturerX11::CreateRawWindowCapturer creates "
-+ "DesktopCapturer of type WindowCapturerX11";
- return std::unique_ptr<DesktopCapturer>(new WindowCapturerX11(options));
- }
-
-diff --git a/modules/desktop_capture/screen_capturer_darwin.mm b/modules/desktop_capture/screen_capturer_darwin.mm
-index 95a877c45d..3f14ddfe58 100644
---- a/modules/desktop_capture/screen_capturer_darwin.mm
-+++ b/modules/desktop_capture/screen_capturer_darwin.mm
-@@ -12,6 +12,7 @@
-
- #include "modules/desktop_capture/mac/screen_capturer_mac.h"
- #include "modules/desktop_capture/mac/screen_capturer_sck.h"
-+#include "rtc_base/logging.h"
-
- namespace webrtc {
-
-@@ -27,10 +28,16 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
- std::unique_ptr<DesktopCapturer> sck_capturer =
- CreateScreenCapturerSck(options);
- if (sck_capturer) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
-+ "DesktopCapturer of type ScreenCapturerSck";
- return sck_capturer;
- }
- }
-
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
-+ "DesktopCapturer of type ScreenCapturerMac";
- auto capturer =
- std::make_unique<ScreenCapturerMac>(options.configuration_monitor(),
- options.detect_updated_region(),
-diff --git a/modules/desktop_capture/screen_capturer_fuchsia.cc b/modules/desktop_capture/screen_capturer_fuchsia.cc
-index c3f51ef0fc..2a6c5e753d 100644
---- a/modules/desktop_capture/screen_capturer_fuchsia.cc
-+++ b/modules/desktop_capture/screen_capturer_fuchsia.cc
-@@ -56,6 +56,9 @@ size_t RoundUpToMultiple(size_t value, size_t multiple) {
-
- std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
- const DesktopCaptureOptions& options) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
-+ "DesktopCapturer of type ScreenCapturerFuchsia";
- std::unique_ptr<ScreenCapturerFuchsia> capturer(new ScreenCapturerFuchsia());
- return capturer;
- }
-diff --git a/modules/desktop_capture/screen_capturer_linux.cc b/modules/desktop_capture/screen_capturer_linux.cc
-index 94726750c5..f25e08fb59 100644
---- a/modules/desktop_capture/screen_capturer_linux.cc
-+++ b/modules/desktop_capture/screen_capturer_linux.cc
-@@ -13,6 +13,7 @@
- #include "modules/desktop_capture/desktop_capture_options.h"
- #include "modules/desktop_capture/desktop_capture_types.h"
- #include "modules/desktop_capture/desktop_capturer.h"
-+#include "rtc_base/logging.h"
-
- #if defined(WEBRTC_USE_PIPEWIRE)
- #include "modules/desktop_capture/linux/wayland/base_capturer_pipewire.h"
-@@ -29,6 +30,9 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
- const DesktopCaptureOptions& options) {
- #if defined(WEBRTC_USE_PIPEWIRE)
- if (options.allow_pipewire() && BaseCapturerPipeWire::IsSupported()) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
-+ "DesktopCapturer of type BaseCapturerPipeWire";
- return std::make_unique<BaseCapturerPipeWire>(options,
- CaptureType::kScreen);
- }
-diff --git a/modules/desktop_capture/screen_capturer_null.cc b/modules/desktop_capture/screen_capturer_null.cc
-index aa6d4991a0..21b2f46c4d 100644
---- a/modules/desktop_capture/screen_capturer_null.cc
-+++ b/modules/desktop_capture/screen_capturer_null.cc
-@@ -11,12 +11,16 @@
- #include <memory>
-
- #include "modules/desktop_capture/desktop_capturer.h"
-+#include "rtc_base/logging.h"
-
- namespace webrtc {
-
- // static
- std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
- const DesktopCaptureOptions& options) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates null "
-+ "DesktopCapturer";
- return nullptr;
- }
-
-diff --git a/modules/desktop_capture/screen_capturer_win.cc b/modules/desktop_capture/screen_capturer_win.cc
-index a5f2052979..6620888f18 100644
---- a/modules/desktop_capture/screen_capturer_win.cc
-+++ b/modules/desktop_capture/screen_capturer_win.cc
-@@ -19,6 +19,7 @@
- #include "modules/desktop_capture/win/dxgi_duplicator_controller.h"
- #include "modules/desktop_capture/win/screen_capturer_win_directx.h"
- #include "modules/desktop_capture/win/screen_capturer_win_gdi.h"
-+#include "rtc_base/logging.h"
-
- namespace webrtc {
-
-@@ -26,6 +27,9 @@ namespace {
-
- std::unique_ptr<DesktopCapturer> CreateScreenCapturerWinDirectx(
- const DesktopCaptureOptions& options) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawScreenCapturer creates "
-+ "DesktopCapturer of type ScreenCapturerWinDirectx";
- std::unique_ptr<DesktopCapturer> capturer(
- new ScreenCapturerWinDirectx(options));
- capturer.reset(new BlankDetectorDesktopCapturerWrapper(
-@@ -39,6 +43,8 @@ std::unique_ptr<DesktopCapturer> CreateScreenCapturerWinDirectx(
- std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
- const DesktopCaptureOptions& options) {
- // Default capturer if no options are enabled is GDI.
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawScreenCapturer "
-+ "creates DesktopCapturer of type ScreenCapturerWinGdi";
- std::unique_ptr<DesktopCapturer> capturer(new ScreenCapturerWinGdi(options));
-
- // If DirectX is enabled use it as main capturer with GDI as fallback.
-diff --git a/modules/desktop_capture/window_capturer_linux.cc b/modules/desktop_capture/window_capturer_linux.cc
-index f621a63e72..87ea3d5721 100644
---- a/modules/desktop_capture/window_capturer_linux.cc
-+++ b/modules/desktop_capture/window_capturer_linux.cc
-@@ -13,6 +13,7 @@
- #include "modules/desktop_capture/desktop_capture_options.h"
- #include "modules/desktop_capture/desktop_capture_types.h"
- #include "modules/desktop_capture/desktop_capturer.h"
-+#include "rtc_base/logging.h"
-
- #if defined(WEBRTC_USE_PIPEWIRE)
- #include "modules/desktop_capture/linux/wayland/base_capturer_pipewire.h"
-@@ -29,6 +30,9 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
- #if defined(WEBRTC_USE_PIPEWIRE)
- if (options.allow_pipewire() && BaseCapturerPipeWire::IsSupported()) {
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawWindowCapturer creates "
-+ "DesktopCapturer of type BaseCapturerPipeWire";
- return std::make_unique<BaseCapturerPipeWire>(options,
- CaptureType::kWindow);
- }
-diff --git a/modules/desktop_capture/window_capturer_mac.mm b/modules/desktop_capture/window_capturer_mac.mm
-index a1e6157b87..731090d3fb 100644
---- a/modules/desktop_capture/window_capturer_mac.mm
-+++ b/modules/desktop_capture/window_capturer_mac.mm
-@@ -217,6 +217,8 @@ void WindowCapturerMac::CaptureFrame() {
- // static
- std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawWindowCapturer "
-+ "creates DesktopCapturer of type WindowCapturerMac";
- return std::unique_ptr<DesktopCapturer>(new WindowCapturerMac(
- options.full_screen_window_detector(), options.configuration_monitor()));
- }
-diff --git a/modules/desktop_capture/window_capturer_null.cc b/modules/desktop_capture/window_capturer_null.cc
-index 2061dc5248..384e186d20 100644
---- a/modules/desktop_capture/window_capturer_null.cc
-+++ b/modules/desktop_capture/window_capturer_null.cc
-@@ -12,6 +12,7 @@
-
- #include "modules/desktop_capture/desktop_capturer.h"
- #include "rtc_base/checks.h"
-+#include "rtc_base/logging.h"
-
- namespace webrtc {
-
-@@ -65,6 +66,8 @@ void WindowCapturerNull::CaptureFrame() {
- // static
- std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawWindowCapturer "
-+ "creates DesktopCapturer of type WindowCapturerNull";
- return std::unique_ptr<DesktopCapturer>(new WindowCapturerNull());
- }
-
-diff --git a/modules/desktop_capture/window_capturer_win.cc b/modules/desktop_capture/window_capturer_win.cc
-index 115bc7d9b0..15ed7f5121 100644
---- a/modules/desktop_capture/window_capturer_win.cc
-+++ b/modules/desktop_capture/window_capturer_win.cc
-@@ -15,6 +15,7 @@
- #include "modules/desktop_capture/desktop_capturer.h"
- #include "modules/desktop_capture/rgba_color.h"
- #include "modules/desktop_capture/win/window_capturer_win_gdi.h"
-+#include "rtc_base/logging.h"
-
- #if defined(RTC_ENABLE_WIN_WGC)
- #include "modules/desktop_capture/blank_detector_desktop_capturer_wrapper.h"
-@@ -28,6 +29,8 @@ namespace webrtc {
- // static
- std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
- const DesktopCaptureOptions& options) {
-+ RTC_LOG(LS_INFO) << "video capture: DesktopCapturer::CreateRawWindowCapturer "
-+ "creates DesktopCapturer of type WindowCapturerWinGdi";
- std::unique_ptr<DesktopCapturer> capturer(
- WindowCapturerWinGdi::CreateRawWindowCapturer(options));
- #if defined(RTC_ENABLE_WIN_WGC)
-@@ -36,6 +39,10 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
- // BlankDectector capturer will send an error when it detects a failed
- // GDI rendering, then Fallback capturer will try to capture it again with
- // WGC.
-+ RTC_LOG(LS_INFO)
-+ << "video capture: DesktopCapturer::CreateRawWindowCapturer creates "
-+ "DesktopCapturer of type FallbackDesktopCapturerWrapper which has a "
-+ "fallback capturer of type WgcCapturerWin";
- capturer = std::make_unique<BlankDetectorDesktopCapturerWrapper>(
- std::move(capturer), RgbaColor(0, 0, 0, 0),
- /*check_per_capture*/ true);