Files
Michael Froman def8a5f3cd Bug 2025559 - Vendor libwebrtc from 9a1c966dec
Upstream commit: https://webrtc.googlesource.com/src/+/9a1c966dec0d1d83b3168b8586dab30c626baf85
    In the latest version of Windows OS, the camera supports three Pin types: PreviewResolution, StillResolution, VideoResolution.
    Initially, WebRTC uses the first pin(PreviewResolution Pin)to create the _captureCapabilities.
    However, when creating the actual capture device, WebRTC uses the VideoResolution(PIN_CATEGORY_CAPTURE ).

    If the number of supported resolutions in PreviewResolution is greater than that in VideoResolution, the application will crash due to a mismatch in capabilities.
    To fix this issue, change to using PIN_CTEGORY_CPTURE for all

    Bug: none
    Change-Id: I8bca0ac2c8ae12aa119b9a9f70a5220749701a21
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/417200
    Reviewed-by: Per Kjellander <perkj@webrtc.org>
    Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
    Auto-Submit: Sai Xu <saixu@qti.qualcomm.com>
    Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#46368}
2026-03-28 16:54:38 +00:00

54 lines
2.3 KiB
Diff

From: Alex Chronopoulos <achronop@gmail.com>
Date: Wed, 18 Sep 2019 13:12:00 +0000
Subject: Bug 1572281 - Remove audio device change notifications from video
capture in Windows. r=dminor
Video capture used to provide device change notifications for audio and video devices. From now on, CubebDeviceEnumerator will provide audio device change notifications thus video capture is updated to notify only changes of the video device. This is the windows part.
Differential Revision: https://phabricator.services.mozilla.com/D46274
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/a5c23245837ebdd99532e8bfaca05774c5c96d9d
---
modules/video_capture/windows/device_info_ds.cc | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/modules/video_capture/windows/device_info_ds.cc b/modules/video_capture/windows/device_info_ds.cc
index 288166b328..132c360457 100644
--- a/modules/video_capture/windows/device_info_ds.cc
+++ b/modules/video_capture/windows/device_info_ds.cc
@@ -20,7 +20,7 @@
namespace webrtc {
namespace videocapturemodule {
-BOOL isCaptureDevice(DEV_BROADCAST_HDR *pHdr)
+BOOL isVideoDevice(DEV_BROADCAST_HDR *pHdr)
{
if (pHdr == NULL) {
return FALSE;
@@ -29,7 +29,7 @@ BOOL isCaptureDevice(DEV_BROADCAST_HDR *pHdr)
return FALSE;
}
DEV_BROADCAST_DEVICEINTERFACE* pDi = (DEV_BROADCAST_DEVICEINTERFACE*)pHdr;
- return pDi->dbcc_classguid == KSCATEGORY_CAPTURE;
+ return pDi->dbcc_classguid == KSCATEGORY_VIDEO_CAMERA;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
@@ -47,7 +47,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
else if (uiMsg == WM_DEVICECHANGE)
{
pParent = (DeviceInfoDS*)GetWindowLongPtr(hWnd, GWLP_USERDATA);
- if (pParent && isCaptureDevice((PDEV_BROADCAST_HDR)lParam))
+ if (pParent && isVideoDevice((PDEV_BROADCAST_HDR)lParam))
{
pParent->DeviceChange();
}
@@ -128,7 +128,7 @@ DeviceInfoDS::DeviceInfoDS()
DEV_BROADCAST_DEVICEINTERFACE di = { 0 };
di.dbcc_size = sizeof(di);
di.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
- di.dbcc_classguid = KSCATEGORY_CAPTURE;
+ di.dbcc_classguid = KSCATEGORY_VIDEO_CAMERA;
_hdevnotify = RegisterDeviceNotification(_hwnd, &di,
DEVICE_NOTIFY_WINDOW_HANDLE);