Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  0093.patch   Sprache: unbekannt

 
From: Nico Grunbaum <na-g@nostrum.com>
Date: Wed, 15 Nov 2023 22:33:00 +0000
Subject: Bug 1863041 - P0 - add device filter control to
 RTCCameraVideoCapturer;r=pehrsons,webrtc-reviewers

I have filed this bug upstream: https://bugs.chromium.org/p/webrtc/issues/detail?id=15639

Differential Revision: https://phabricator.services.mozilla.com/D193172
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/91a763d768b74acc9cf4828f91a86df4a7b092ce
---
 .../capturer/RTCCameraVideoCapturer.h           |  5 ++++-
 .../capturer/RTCCameraVideoCapturer.m           | 17 +++++++++++++++--
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/sdk/objc/components/capturer/RTCCameraVideoCapturer.h b/sdk/objc/components/capturer/RTCCameraVideoCapturer.h
index 9874121238..39619b2fc3 100644
--- a/sdk/objc/components/capturer/RTCCameraVideoCapturer.h
+++ b/sdk/objc/components/capturer/RTCCameraVideoCapturer.h
@@ -26,7 +26,10 @@ RTC_OBJC_EXPORT
 @property(readonly, nonatomic) AVCaptureSession *captureSession;
 
 // Returns list of available capture devices that support video capture.
-+ (NSArray<AVCaptureDevice *> *)captureDevices;
++ (NSArray<AVCaptureDevice *> *)captureDevicesWithDeviceTypes:
+    (NSArray<AVCaptureDeviceType> *)deviceTypes;
+// Returns list of default capture devices types
++ (NSArray<AVCaptureDeviceType> *)defaultCaptureDeviceTypes;
 // Returns list of formats that are supported by this class for this device.
 + (NSArray<AVCaptureDeviceFormat *> *)supportedFormatsForDevice:(AVCaptureDevice *)device;
 
diff --git a/sdk/objc/components/capturer/RTCCameraVideoCapturer.m b/sdk/objc/components/capturer/RTCCameraVideoCapturer.m
index d25f5e20ae..4f92f56807 100644
--- a/sdk/objc/components/capturer/RTCCameraVideoCapturer.m
+++ b/sdk/objc/components/capturer/RTCCameraVideoCapturer.m
@@ -118,14 +118,27 @@ - (void)dealloc {
   [[NSNotificationCenter defaultCenter] removeObserver:self];
 }
 
-+ (NSArray<AVCaptureDevice *> *)captureDevices {
++ (NSArray<AVCaptureDevice *> *)captureDevicesWithDeviceTypes:
+    (NSArray<AVCaptureDeviceType> *)deviceTypes {
   AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession
-      discoverySessionWithDeviceTypes:@[ AVCaptureDeviceTypeBuiltInWideAngleCamera ]
+      discoverySessionWithDeviceTypes:deviceTypes
                             mediaType:AVMediaTypeVideo
                              position:AVCaptureDevicePositionUnspecified];
   return session.devices;
 }
 
++ (NSArray<AVCaptureDeviceType> *)defaultCaptureDeviceTypes {
+  NSArray *types = @[ AVCaptureDeviceTypeBuiltInWideAngleCamera ];
+#if !defined(WEBRTC_IOS)
+  if (@available(macOS 14.0, *)) {
+    types = [types arrayByAddingObject:AVCaptureDeviceTypeExternal];
+  } else {
+    types = [types arrayByAddingObject:AVCaptureDeviceTypeExternalUnknown];
+  }
+#endif
+  return types;
+}
+
 + (NSArray<AVCaptureDeviceFormat *> *)supportedFormatsForDevice:(AVCaptureDevice *)device {
   // Support opening the device in any format. We make sure it's converted to a format we
   // can handle, if needed, in the method `-setupVideoDataOutput`.

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge