tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 2d8770a3a9e6b2628a7fa5642bb0d9c1765209b1
parent 8e8f813e2a21a1251b3eb271bab9f4e6d01203b7
Author: Dan Baker <dbaker@mozilla.com>
Date:   Mon,  1 Dec 2025 10:52:06 -0700

Bug 2000941 - Vendor libwebrtc from 20786cda42

Upstream commit: https://webrtc.googlesource.com/src/+/20786cda428d1fed97c7de788a80ed772917b643
    Inject clock in video_capture_impl

    Bug: webrtc:42223992
    Change-Id: I430f44b4d3b6514d0b20ec8e384b6e6e203d8b54
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/407823
    Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
    Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
    Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
    Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45562}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/modules/video_capture/linux/video_capture_linux.cc | 9++++++---
Mthird_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc | 4+++-
Mthird_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h | 3++-
Mthird_party/libwebrtc/modules/video_capture/linux/video_capture_v4l2.cc | 5+++--
Mthird_party/libwebrtc/modules/video_capture/linux/video_capture_v4l2.h | 3++-
Mthird_party/libwebrtc/modules/video_capture/video_capture_factory.cc | 8+++++---
Mthird_party/libwebrtc/modules/video_capture/video_capture_factory_null.cc | 1+
Mthird_party/libwebrtc/modules/video_capture/video_capture_impl.cc | 16+++++++++-------
Mthird_party/libwebrtc/modules/video_capture/video_capture_impl.h | 7++++++-
Mthird_party/libwebrtc/modules/video_capture/windows/video_capture_ds.cc | 7+++++--
Mthird_party/libwebrtc/modules/video_capture/windows/video_capture_ds.h | 3++-
Mthird_party/libwebrtc/modules/video_capture/windows/video_capture_factory_windows.cc | 3++-
Mthird_party/libwebrtc/moz-patch-stack/s0001.patch | 43++++++++++++++++++++++++++-----------------
Mthird_party/libwebrtc/moz-patch-stack/s0008.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0012.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0020.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0032.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0050.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0077.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0078.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0083.patch | 8++++----
Mthird_party/libwebrtc/moz-patch-stack/s0085.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0086.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0088.patch | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0089.patch | 6+++---
Mthird_party/libwebrtc/moz-patch-stack/s0118.patch | 8++++----
27 files changed, 109 insertions(+), 77 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-11-20T20:48:49.407393+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-01T17:51:49.772624+00:00. # base of lastest vendoring -5d3ec77016 +20786cda42 diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_linux.cc b/third_party/libwebrtc/modules/video_capture/linux/video_capture_linux.cc @@ -14,6 +14,7 @@ #include "modules/video_capture/video_capture.h" #include "modules/video_capture/video_capture_impl.h" #include "modules/video_capture/video_capture_options.h" +#include "system_wrappers/include/clock.h" #if defined(WEBRTC_USE_PIPEWIRE) #include "modules/video_capture/linux/video_capture_pipewire.h" @@ -22,8 +23,9 @@ namespace webrtc { namespace videocapturemodule { scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( + Clock* clock, const char* deviceUniqueId) { - auto implementation = make_ref_counted<VideoCaptureModuleV4L2>(); + auto implementation = make_ref_counted<VideoCaptureModuleV4L2>(clock); if (implementation->Init(deviceUniqueId) != 0) return nullptr; @@ -32,19 +34,20 @@ scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( } scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( + Clock* clock, VideoCaptureOptions* options, const char* deviceUniqueId) { #if defined(WEBRTC_USE_PIPEWIRE) if (options->allow_pipewire()) { auto implementation = - webrtc::make_ref_counted<VideoCaptureModulePipeWire>(options); + webrtc::make_ref_counted<VideoCaptureModulePipeWire>(clock, options); if (implementation->Init(deviceUniqueId) == 0) return implementation; } #endif if (options->allow_v4l2()) { - auto implementation = make_ref_counted<VideoCaptureModuleV4L2>(); + auto implementation = make_ref_counted<VideoCaptureModuleV4L2>(clock); if (implementation->Init(deviceUniqueId) == 0) return implementation; diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc @@ -47,6 +47,7 @@ #include "rtc_base/race_checker.h" #include "rtc_base/sanitizer.h" #include "rtc_base/synchronization/mutex.h" +#include "system_wrappers/include/clock.h" namespace webrtc { namespace videocapturemodule { @@ -92,8 +93,9 @@ uint32_t VideoCaptureModulePipeWire::VideoTypeToPipeWireRawFormat( } VideoCaptureModulePipeWire::VideoCaptureModulePipeWire( + Clock* clock, VideoCaptureOptions* options) - : VideoCaptureImpl(), + : VideoCaptureImpl(clock), session_(options->pipewire_session()), initialized_(false), started_(false) {} diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h @@ -23,12 +23,13 @@ #include "modules/video_capture/video_capture_defines.h" #include "modules/video_capture/video_capture_impl.h" #include "rtc_base/thread_annotations.h" +#include "system_wrappers/include/clock.h" namespace webrtc { namespace videocapturemodule { class VideoCaptureModulePipeWire : public VideoCaptureImpl { public: - explicit VideoCaptureModulePipeWire(VideoCaptureOptions* options); + VideoCaptureModulePipeWire(Clock* clock, VideoCaptureOptions* options); ~VideoCaptureModulePipeWire() override; int32_t Init(const char* deviceUniqueId); int32_t StartCapture(const VideoCaptureCapability& capability) override; diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_v4l2.cc b/third_party/libwebrtc/modules/video_capture/linux/video_capture_v4l2.cc @@ -40,6 +40,7 @@ #include "rtc_base/platform_thread.h" #include "rtc_base/race_checker.h" #include "rtc_base/synchronization/mutex.h" +#include "system_wrappers/include/clock.h" // These defines are here to support building on kernel 3.16 which some // downstream projects, e.g. Firefox, use. @@ -61,8 +62,8 @@ namespace webrtc { namespace videocapturemodule { -VideoCaptureModuleV4L2::VideoCaptureModuleV4L2() - : VideoCaptureImpl(), +VideoCaptureModuleV4L2::VideoCaptureModuleV4L2(Clock* clock) + : VideoCaptureImpl(clock), _deviceId(-1), _deviceFd(-1), _buffersAllocatedByDevice(-1), diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_v4l2.h b/third_party/libwebrtc/modules/video_capture/linux/video_capture_v4l2.h @@ -19,12 +19,13 @@ #include "rtc_base/platform_thread.h" #include "rtc_base/synchronization/mutex.h" #include "rtc_base/thread_annotations.h" +#include "system_wrappers/include/clock.h" namespace webrtc { namespace videocapturemodule { class VideoCaptureModuleV4L2 : public VideoCaptureImpl { public: - VideoCaptureModuleV4L2(); + explicit VideoCaptureModuleV4L2(Clock* clock); ~VideoCaptureModuleV4L2() override; int32_t Init(const char* deviceUniqueId); int32_t StartCapture(const VideoCaptureCapability& capability) override; diff --git a/third_party/libwebrtc/modules/video_capture/video_capture_factory.cc b/third_party/libwebrtc/modules/video_capture/video_capture_factory.cc @@ -13,12 +13,14 @@ #include "api/scoped_refptr.h" #include "modules/video_capture/video_capture.h" #include "modules/video_capture/video_capture_impl.h" +#include "system_wrappers/include/clock.h" namespace webrtc { scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( [[maybe_unused]] const char* deviceUniqueIdUTF8) { - return videocapturemodule::VideoCaptureImpl::Create(deviceUniqueIdUTF8); + return videocapturemodule::VideoCaptureImpl::Create( + Clock::GetRealTimeClockRaw(), deviceUniqueIdUTF8); } scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( @@ -29,8 +31,8 @@ scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( #if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)) || defined(WEBRTC_ANDROID) return nullptr; #else - return videocapturemodule::VideoCaptureImpl::Create(options, - deviceUniqueIdUTF8); + return videocapturemodule::VideoCaptureImpl::Create( + Clock::GetRealTimeClockRaw(), options, deviceUniqueIdUTF8); #endif } diff --git a/third_party/libwebrtc/modules/video_capture/video_capture_factory_null.cc b/third_party/libwebrtc/modules/video_capture/video_capture_factory_null.cc @@ -21,6 +21,7 @@ VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo() { } webrtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( + Clock* clock, const char* device_id) { return nullptr; } diff --git a/third_party/libwebrtc/modules/video_capture/video_capture_impl.cc b/third_party/libwebrtc/modules/video_capture/video_capture_impl.cc @@ -30,6 +30,7 @@ #include "rtc_base/synchronization/mutex.h" #include "rtc_base/time_utils.h" #include "rtc_base/trace_event.h" +#include "system_wrappers/include/clock.h" #include "third_party/libyuv/include/libyuv/convert.h" #include "third_party/libyuv/include/libyuv/rotate.h" @@ -83,15 +84,16 @@ int32_t VideoCaptureImpl::RotationInDegrees(VideoRotation rotation, return -1; } -VideoCaptureImpl::VideoCaptureImpl() +VideoCaptureImpl::VideoCaptureImpl(Clock* clock) : _deviceUniqueId(nullptr), _requestedCapability(), - _lastProcessTimeNanos(TimeNanos()), - _lastFrameRateCallbackTimeNanos(TimeNanos()), + _lastProcessTimeNanos(clock->TimeInMicroseconds() * 1000), + _lastFrameRateCallbackTimeNanos(clock->TimeInMicroseconds() * 1000), _rawDataCallBack(nullptr), - _lastProcessFrameTimeNanos(TimeNanos()), + _lastProcessFrameTimeNanos(clock->TimeInMicroseconds() * 1000), _rotateFrame(kVideoRotation_0), - apply_rotation_(false) { + apply_rotation_(false), + clock_(clock) { _requestedCapability.width = kDefaultWidth; _requestedCapability.height = kDefaultHeight; _requestedCapability.maxFPS = 30; @@ -258,7 +260,7 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, VideoFrame::Builder() .set_video_frame_buffer(buffer) .set_rtp_timestamp(0) - .set_timestamp_ms(TimeMillis()) + .set_timestamp_ms(clock_->TimeInMilliseconds()) .set_rotation(!apply_rotation_ ? _rotateFrame : kVideoRotation_0) .build(); captureFrame.set_ntp_time_ms(captureTime); @@ -323,7 +325,7 @@ void VideoCaptureImpl::UpdateFrameCount() { _incomingFrameTimesNanos[i + 1] = _incomingFrameTimesNanos[i]; } } - _incomingFrameTimesNanos[0] = TimeNanos(); + _incomingFrameTimesNanos[0] = clock_->TimeInMicroseconds() * 1000; } uint32_t VideoCaptureImpl::CalculateFrameRate(int64_t now_ns) { diff --git a/third_party/libwebrtc/modules/video_capture/video_capture_impl.h b/third_party/libwebrtc/modules/video_capture/video_capture_impl.h @@ -27,6 +27,7 @@ #include "rtc_base/synchronization/mutex.h" #include "rtc_base/system/rtc_export.h" #include "rtc_base/thread_annotations.h" +#include "system_wrappers/include/clock.h" namespace webrtc { @@ -44,8 +45,10 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { * using GetDeviceName */ static scoped_refptr<VideoCaptureModule> Create( + Clock* clock, const char* deviceUniqueIdUTF8); static scoped_refptr<VideoCaptureModule> Create( + Clock* clock, VideoCaptureOptions* options, const char* deviceUniqueIdUTF8); @@ -85,7 +88,7 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { int32_t CaptureSettings(VideoCaptureCapability& /*settings*/) override; protected: - VideoCaptureImpl(); + explicit VideoCaptureImpl(Clock* clock); ~VideoCaptureImpl() override; // Calls to the public API must happen on a single thread. @@ -129,6 +132,8 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { // Indicate whether rotation should be applied before delivered externally. bool apply_rotation_ RTC_GUARDED_BY(api_lock_); + + Clock* const clock_; }; } // namespace videocapturemodule } // namespace webrtc diff --git a/third_party/libwebrtc/modules/video_capture/windows/video_capture_ds.cc b/third_party/libwebrtc/modules/video_capture/windows/video_capture_ds.cc @@ -13,14 +13,17 @@ #include <dvdmedia.h> // VIDEOINFOHEADER2 #include "modules/video_capture/video_capture_config.h" +#include "modules/video_capture/video_capture_impl.h" #include "modules/video_capture/windows/help_functions_ds.h" #include "modules/video_capture/windows/sink_filter_ds.h" #include "rtc_base/logging.h" +#include "system_wrappers/include/clock.h" namespace webrtc { namespace videocapturemodule { -VideoCaptureDS::VideoCaptureDS() - : _captureFilter(NULL), +VideoCaptureDS::VideoCaptureDS(Clock* clock) + : VideoCaptureImpl(clock), + _captureFilter(NULL), _graphBuilder(NULL), _mediaControl(NULL), _inputSendPin(NULL), diff --git a/third_party/libwebrtc/modules/video_capture/windows/video_capture_ds.h b/third_party/libwebrtc/modules/video_capture/windows/video_capture_ds.h @@ -14,6 +14,7 @@ #include "api/scoped_refptr.h" #include "modules/video_capture/video_capture_impl.h" #include "modules/video_capture/windows/device_info_ds.h" +#include "system_wrappers/include/clock.h" #define CAPTURE_FILTER_NAME L"VideoCaptureFilter" #define SINK_FILTER_NAME L"SinkFilter" @@ -25,7 +26,7 @@ class CaptureSinkFilter; class VideoCaptureDS : public VideoCaptureImpl { public: - VideoCaptureDS(); + explicit VideoCaptureDS(Clock* clock); virtual int32_t Init(const char* deviceUniqueIdUTF8); diff --git a/third_party/libwebrtc/modules/video_capture/windows/video_capture_factory_windows.cc b/third_party/libwebrtc/modules/video_capture/windows/video_capture_factory_windows.cc @@ -21,12 +21,13 @@ VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo() { } webrtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( + Clock* clock, const char* device_id) { if (device_id == nullptr) return nullptr; // TODO(tommi): Use Media Foundation implementation for Vista and up. - auto capture = webrtc::make_ref_counted<VideoCaptureDS>(); + auto capture = webrtc::make_ref_counted<VideoCaptureDS>(clock); if (capture->Init(device_id) != 0) { return nullptr; } diff --git a/third_party/libwebrtc/moz-patch-stack/s0001.patch b/third_party/libwebrtc/moz-patch-stack/s0001.patch @@ -332,7 +332,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/fc01107426c3adebb .../video_capture/linux/device_info_v4l2.cc | 179 +++++++++++++++++- .../video_capture/linux/device_info_v4l2.h | 18 +- modules/video_capture/video_capture.h | 41 +++- - .../video_capture/video_capture_factory.cc | 8 - + .../video_capture/video_capture_factory.cc | 14 +- modules/video_capture/video_capture_impl.cc | 34 +++- modules/video_capture/video_capture_impl.h | 6 +- .../codecs/vp9/libvpx_vp9_encoder.cc | 52 +++++ @@ -343,7 +343,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/fc01107426c3adebb test/fuzzers/rtp_packet_fuzzer.cc | 4 + test/vcm_capturer.cc | 2 +- webrtc.gni | 2 +- - 36 files changed, 507 insertions(+), 42 deletions(-) + 36 files changed, 510 insertions(+), 45 deletions(-) diff --git a/api/rtp_headers.cc b/api/rtp_headers.cc index c272ccae06..0271714c44 100644 @@ -1142,22 +1142,31 @@ index 7707608dbc..0681de3827 100644 // Returns the name of the device used by this module. diff --git a/modules/video_capture/video_capture_factory.cc b/modules/video_capture/video_capture_factory.cc -index d7fa0fa26e..bb45a88f0e 100644 +index 925f70349c..d52f31b12d 100644 --- a/modules/video_capture/video_capture_factory.cc +++ b/modules/video_capture/video_capture_factory.cc -@@ -18,11 +18,7 @@ namespace webrtc { +@@ -19,12 +19,8 @@ namespace webrtc { scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( [[maybe_unused]] const char* deviceUniqueIdUTF8) { -#if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC) - return nullptr; -#else - return videocapturemodule::VideoCaptureImpl::Create(deviceUniqueIdUTF8); +- return videocapturemodule::VideoCaptureImpl::Create(Clock::GetRealTimeClock(), +- deviceUniqueIdUTF8); -#endif ++ return videocapturemodule::VideoCaptureImpl::Create( ++ Clock::GetRealTimeClockRaw(), deviceUniqueIdUTF8); } scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( -@@ -39,11 +35,7 @@ scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( +@@ -36,16 +32,12 @@ scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( + return nullptr; + #else + return videocapturemodule::VideoCaptureImpl::Create( +- Clock::GetRealTimeClock(), options, deviceUniqueIdUTF8); ++ Clock::GetRealTimeClockRaw(), options, deviceUniqueIdUTF8); + #endif } VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo() { @@ -1170,18 +1179,18 @@ index d7fa0fa26e..bb45a88f0e 100644 VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo( diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc -index c5d3f989ab..74c1768e8f 100644 +index e76af2e0ad..088747c1c8 100644 --- a/modules/video_capture/video_capture_impl.cc +++ b/modules/video_capture/video_capture_impl.cc -@@ -88,7 +88,6 @@ VideoCaptureImpl::VideoCaptureImpl() +@@ -89,7 +89,6 @@ VideoCaptureImpl::VideoCaptureImpl(Clock* clock) _requestedCapability(), - _lastProcessTimeNanos(TimeNanos()), - _lastFrameRateCallbackTimeNanos(TimeNanos()), + _lastProcessTimeNanos(clock->TimeInMicroseconds() * 1000), + _lastFrameRateCallbackTimeNanos(clock->TimeInMicroseconds() * 1000), - _dataCallBack(nullptr), _rawDataCallBack(nullptr), - _lastProcessFrameTimeNanos(TimeNanos()), + _lastProcessFrameTimeNanos(clock->TimeInMicroseconds() * 1000), _rotateFrame(kVideoRotation_0), -@@ -102,7 +101,6 @@ VideoCaptureImpl::VideoCaptureImpl() +@@ -104,7 +103,6 @@ VideoCaptureImpl::VideoCaptureImpl(Clock* clock) VideoCaptureImpl::~VideoCaptureImpl() { RTC_DCHECK_RUN_ON(&api_checker_); @@ -1189,7 +1198,7 @@ index c5d3f989ab..74c1768e8f 100644 if (_deviceUniqueId) delete[] _deviceUniqueId; } -@@ -111,28 +109,41 @@ void VideoCaptureImpl::RegisterCaptureDataCallback( +@@ -113,28 +111,41 @@ void VideoCaptureImpl::RegisterCaptureDataCallback( VideoSinkInterface<VideoFrame>* dataCallBack) { MutexLock lock(&api_lock_); RTC_DCHECK(!_rawDataCallBack); @@ -1237,7 +1246,7 @@ index c5d3f989ab..74c1768e8f 100644 } return 0; -@@ -239,6 +250,13 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, +@@ -241,6 +252,13 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, .build(); captureFrame.set_ntp_time_ms(captureTime); @@ -1252,10 +1261,10 @@ index c5d3f989ab..74c1768e8f 100644 return 0; diff --git a/modules/video_capture/video_capture_impl.h b/modules/video_capture/video_capture_impl.h -index 8c0f592e94..502a152902 100644 +index 96a3243973..573532bdad 100644 --- a/modules/video_capture/video_capture_impl.h +++ b/modules/video_capture/video_capture_impl.h -@@ -62,8 +62,10 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { +@@ -65,8 +65,10 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { VideoSinkInterface<VideoFrame>* dataCallback) override; virtual void RegisterCaptureDataCallback( RawVideoSinkInterface* dataCallback) override; @@ -1267,7 +1276,7 @@ index 8c0f592e94..502a152902 100644 int32_t SetCaptureRotation(VideoRotation rotation) override; bool SetApplyRotation(bool enable) override; bool GetApplyRotation() override; -@@ -113,7 +115,7 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { +@@ -116,7 +118,7 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { // last time the frame rate callback function was called. int64_t _lastFrameRateCallbackTimeNanos RTC_GUARDED_BY(capture_checker_); diff --git a/third_party/libwebrtc/moz-patch-stack/s0008.patch b/third_party/libwebrtc/moz-patch-stack/s0008.patch @@ -14,10 +14,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/c56cb66f86518dfb0 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc -index 74c1768e8f..4d685c285c 100644 +index 088747c1c8..79f0d9daa0 100644 --- a/modules/video_capture/video_capture_impl.cc +++ b/modules/video_capture/video_capture_impl.cc -@@ -229,11 +229,20 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, +@@ -231,11 +231,20 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, } } diff --git a/third_party/libwebrtc/moz-patch-stack/s0012.patch b/third_party/libwebrtc/moz-patch-stack/s0012.patch @@ -10,10 +10,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/51d12094d825c4c44 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc -index 4d685c285c..4e150ed468 100644 +index 79f0d9daa0..13de9fb62d 100644 --- a/modules/video_capture/video_capture_impl.cc +++ b/modules/video_capture/video_capture_impl.cc -@@ -191,8 +191,6 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, +@@ -193,8 +193,6 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, } } @@ -22,7 +22,7 @@ index 4d685c285c..4e150ed468 100644 int target_width = width; int target_height = abs(height); -@@ -205,6 +203,9 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, +@@ -207,6 +205,9 @@ int32_t VideoCaptureImpl::IncomingFrame(uint8_t* videoFrame, } } diff --git a/third_party/libwebrtc/moz-patch-stack/s0020.patch b/third_party/libwebrtc/moz-patch-stack/s0020.patch @@ -52,7 +52,7 @@ index fa930d8020..5c228772ab 100644 int DeviceInfoV4l2::HandleEvents(int fd) diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc -index bef2939ce6..03e3d9c7cc 100644 +index 1cb83f82d5..b8af09a7aa 100644 --- a/modules/video_capture/linux/video_capture_v4l2.cc +++ b/modules/video_capture/linux/video_capture_v4l2.cc @@ -11,7 +11,14 @@ @@ -70,7 +70,7 @@ index bef2939ce6..03e3d9c7cc 100644 #include <sys/ioctl.h> #include <sys/mman.h> #include <sys/select.h> -@@ -416,16 +423,13 @@ bool VideoCaptureModuleV4L2::CaptureProcess() { +@@ -417,16 +424,13 @@ bool VideoCaptureModuleV4L2::CaptureProcess() { RTC_CHECK_RUNS_SERIALIZED(&capture_checker_); int retVal = 0; @@ -92,7 +92,7 @@ index bef2939ce6..03e3d9c7cc 100644 { MutexLock lock(&capture_lock_); -@@ -435,12 +439,12 @@ bool VideoCaptureModuleV4L2::CaptureProcess() { +@@ -436,12 +440,12 @@ bool VideoCaptureModuleV4L2::CaptureProcess() { } if (retVal < 0 && errno != EINTR) { // continue if interrupted diff --git a/third_party/libwebrtc/moz-patch-stack/s0032.patch b/third_party/libwebrtc/moz-patch-stack/s0032.patch @@ -11,10 +11,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/99b99cca6b7b2c2eb 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/video_capture/video_capture_impl.h b/modules/video_capture/video_capture_impl.h -index 502a152902..4d5b83547f 100644 +index 573532bdad..da85692fc4 100644 --- a/modules/video_capture/video_capture_impl.h +++ b/modules/video_capture/video_capture_impl.h -@@ -95,6 +95,10 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { +@@ -98,6 +98,10 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { RaceChecker capture_checker_; // current Device unique name; char* _deviceUniqueId RTC_GUARDED_BY(api_checker_); @@ -25,7 +25,7 @@ index 502a152902..4d5b83547f 100644 Mutex api_lock_; // Should be set by platform dependent code in StartCapture. VideoCaptureCapability _requestedCapability RTC_GUARDED_BY(api_checker_); -@@ -102,8 +106,6 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { +@@ -105,8 +109,6 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { private: void UpdateFrameCount(); uint32_t CalculateFrameRate(int64_t now_ns); diff --git a/third_party/libwebrtc/moz-patch-stack/s0050.patch b/third_party/libwebrtc/moz-patch-stack/s0050.patch @@ -10,10 +10,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/2e4867d8cc9813869 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc -index 03e3d9c7cc..cc295fd60b 100644 +index b8af09a7aa..6d1a452590 100644 --- a/modules/video_capture/linux/video_capture_v4l2.cc +++ b/modules/video_capture/linux/video_capture_v4l2.cc -@@ -305,8 +305,8 @@ int32_t VideoCaptureModuleV4L2::StartCapture( +@@ -306,8 +306,8 @@ int32_t VideoCaptureModuleV4L2::StartCapture( if (_captureThread.empty()) { quit_ = false; _captureThread = PlatformThread::SpawnJoinable( diff --git a/third_party/libwebrtc/moz-patch-stack/s0077.patch b/third_party/libwebrtc/moz-patch-stack/s0077.patch @@ -17,10 +17,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/56ff441b644400f09 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc -index 4e150ed468..2f009820d3 100644 +index 13de9fb62d..d358608dc5 100644 --- a/modules/video_capture/video_capture_impl.cc +++ b/modules/video_capture/video_capture_impl.cc -@@ -130,11 +130,14 @@ void VideoCaptureImpl::DeRegisterCaptureDataCallback( +@@ -132,11 +132,14 @@ void VideoCaptureImpl::DeRegisterCaptureDataCallback( } int32_t VideoCaptureImpl::StopCaptureIfAllClientsClose() { diff --git a/third_party/libwebrtc/moz-patch-stack/s0078.patch b/third_party/libwebrtc/moz-patch-stack/s0078.patch @@ -13,10 +13,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/26c84d214137a1b0d 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc -index 2f009820d3..62a4b21a5f 100644 +index d358608dc5..9663c818e7 100644 --- a/modules/video_capture/video_capture_impl.cc +++ b/modules/video_capture/video_capture_impl.cc -@@ -145,7 +145,7 @@ int32_t VideoCaptureImpl::DeliverCapturedFrame(VideoFrame& captureFrame) { +@@ -147,7 +147,7 @@ int32_t VideoCaptureImpl::DeliverCapturedFrame(VideoFrame& captureFrame) { UpdateFrameCount(); // frame count used for local frame rate callback. diff --git a/third_party/libwebrtc/moz-patch-stack/s0083.patch b/third_party/libwebrtc/moz-patch-stack/s0083.patch @@ -10,10 +10,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/f890637efe5abc002 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/video_capture/video_capture_factory.cc b/modules/video_capture/video_capture_factory.cc -index bb45a88f0e..ffdca821fc 100644 +index d52f31b12d..98e5e5e298 100644 --- a/modules/video_capture/video_capture_factory.cc +++ b/modules/video_capture/video_capture_factory.cc -@@ -26,7 +26,7 @@ scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( +@@ -28,7 +28,7 @@ scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( [[maybe_unused]] const char* deviceUniqueIdUTF8) { // This is only implemented on pure Linux and WEBRTC_LINUX is defined for // Android as well @@ -21,8 +21,8 @@ index bb45a88f0e..ffdca821fc 100644 +#if (!defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)) || defined(WEBRTC_ANDROID) return nullptr; #else - return videocapturemodule::VideoCaptureImpl::Create(options, -@@ -42,7 +42,7 @@ VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo( + return videocapturemodule::VideoCaptureImpl::Create( +@@ -44,7 +44,7 @@ VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo( [[maybe_unused]] VideoCaptureOptions* options) { // This is only implemented on pure Linux and WEBRTC_LINUX is defined for // Android as well diff --git a/third_party/libwebrtc/moz-patch-stack/s0085.patch b/third_party/libwebrtc/moz-patch-stack/s0085.patch @@ -18,10 +18,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/b046a1446cee5ab48 1 file changed, 2 insertions(+) diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc -index cc295fd60b..fa354dd994 100644 +index 6d1a452590..bad85f00d3 100644 --- a/modules/video_capture/linux/video_capture_v4l2.cc +++ b/modules/video_capture/linux/video_capture_v4l2.cc -@@ -133,6 +133,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture( +@@ -134,6 +134,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture( } } @@ -29,7 +29,7 @@ index cc295fd60b..fa354dd994 100644 // We don't want members above to be guarded by capture_checker_ as // it's meant to be for members that are accessed on the API thread // only when we are not capturing. The code above can be called many -@@ -300,6 +301,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture( +@@ -301,6 +302,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture( _requestedCapability = capability; _captureStarted = true; _streaming = true; diff --git a/third_party/libwebrtc/moz-patch-stack/s0086.patch b/third_party/libwebrtc/moz-patch-stack/s0086.patch @@ -10,10 +10,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/00c4bd7039dc8992d 1 file changed, 1 insertion(+) diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc -index fa354dd994..1a58b0aa04 100644 +index bad85f00d3..0693b96bea 100644 --- a/modules/video_capture/linux/video_capture_v4l2.cc +++ b/modules/video_capture/linux/video_capture_v4l2.cc -@@ -66,6 +66,7 @@ VideoCaptureModuleV4L2::VideoCaptureModuleV4L2() +@@ -67,6 +67,7 @@ VideoCaptureModuleV4L2::VideoCaptureModuleV4L2(Clock* clock) _deviceId(-1), _deviceFd(-1), _buffersAllocatedByDevice(-1), diff --git a/third_party/libwebrtc/moz-patch-stack/s0088.patch b/third_party/libwebrtc/moz-patch-stack/s0088.patch @@ -10,10 +10,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/6ed6737b8214bf664 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc -index 1a58b0aa04..f17792653a 100644 +index 0693b96bea..7e4901b566 100644 --- a/modules/video_capture/linux/video_capture_v4l2.cc +++ b/modules/video_capture/linux/video_capture_v4l2.cc -@@ -305,15 +305,18 @@ int32_t VideoCaptureModuleV4L2::StartCapture( +@@ -306,15 +306,18 @@ int32_t VideoCaptureModuleV4L2::StartCapture( } // start capture thread; diff --git a/third_party/libwebrtc/moz-patch-stack/s0089.patch b/third_party/libwebrtc/moz-patch-stack/s0089.patch @@ -10,10 +10,10 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/65e120a9c1dcb9c8f 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/video_capture/linux/video_capture_v4l2.cc b/modules/video_capture/linux/video_capture_v4l2.cc -index f17792653a..9ec034c7ed 100644 +index 7e4901b566..0a44e1ff73 100644 --- a/modules/video_capture/linux/video_capture_v4l2.cc +++ b/modules/video_capture/linux/video_capture_v4l2.cc -@@ -302,7 +302,6 @@ int32_t VideoCaptureModuleV4L2::StartCapture( +@@ -303,7 +303,6 @@ int32_t VideoCaptureModuleV4L2::StartCapture( _requestedCapability = capability; _captureStarted = true; _streaming = true; @@ -21,7 +21,7 @@ index f17792653a..9ec034c7ed 100644 // start capture thread; if (!_captureThread.empty()) { -@@ -310,6 +309,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture( +@@ -311,6 +310,7 @@ int32_t VideoCaptureModuleV4L2::StartCapture( } quit_ = false; diff --git a/third_party/libwebrtc/moz-patch-stack/s0118.patch b/third_party/libwebrtc/moz-patch-stack/s0118.patch @@ -42,10 +42,10 @@ index a7c1764c51..8a91ca2f83 100644 // Start capture device virtual int32_t StartCapture(const VideoCaptureCapability& capability) = 0; diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc -index 62a4b21a5f..98d7081b1d 100644 +index 9663c818e7..6fd29f36db 100644 --- a/modules/video_capture/video_capture_impl.cc +++ b/modules/video_capture/video_capture_impl.cc -@@ -120,7 +120,7 @@ void VideoCaptureImpl::RegisterCaptureDataCallback( +@@ -122,7 +122,7 @@ void VideoCaptureImpl::RegisterCaptureDataCallback( } void VideoCaptureImpl::DeRegisterCaptureDataCallback( @@ -55,10 +55,10 @@ index 62a4b21a5f..98d7081b1d 100644 auto it = _dataCallBacks.find(dataCallBack); if (it != _dataCallBacks.end()) { diff --git a/modules/video_capture/video_capture_impl.h b/modules/video_capture/video_capture_impl.h -index 4d5b83547f..220b8cff27 100644 +index da85692fc4..afcca41386 100644 --- a/modules/video_capture/video_capture_impl.h +++ b/modules/video_capture/video_capture_impl.h -@@ -63,7 +63,7 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { +@@ -66,7 +66,7 @@ class RTC_EXPORT VideoCaptureImpl : public VideoCaptureModule { virtual void RegisterCaptureDataCallback( RawVideoSinkInterface* dataCallback) override; void DeRegisterCaptureDataCallback(