Title: [291643] branches/safari-613-branch/Source/WebCore
Revision
291643
Author
alanc...@apple.com
Date
2022-03-22 10:55:14 -0700 (Tue, 22 Mar 2022)

Log Message

Cherry-pick r290820. rdar://problem/88301613

    AVVideoCaptureSource should reuse CaptureDevice label
    https://bugs.webkit.org/show_bug.cgi?id=237363
    <rdar://88301613>

    Reviewed by Eric Carlson.

    We are getting AV device name through AVCaptureDevice.localizedName, first in UIProcess, then in GPUProcess.
    To make sure we always use the ones from UIProcess (which are the ones exposed through mediaDevices.enumerateDevices),
    We make sure to use CaptureDevice.label when creating an AVVideoCaptureSource.

    Manually tested.

    * platform/mediastream/mac/AVVideoCaptureSource.h:
    * platform/mediastream/mac/AVVideoCaptureSource.mm:
    (WebCore::AVVideoCaptureSource::create):
    (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
    * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@290820 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-613-branch/Source/WebCore/ChangeLog (291642 => 291643)


--- branches/safari-613-branch/Source/WebCore/ChangeLog	2022-03-22 17:55:10 UTC (rev 291642)
+++ branches/safari-613-branch/Source/WebCore/ChangeLog	2022-03-22 17:55:14 UTC (rev 291643)
@@ -1,5 +1,50 @@
 2022-03-21  Alan Coon  <alanc...@apple.com>
 
+        Cherry-pick r290820. rdar://problem/88301613
+
+    AVVideoCaptureSource should reuse CaptureDevice label
+    https://bugs.webkit.org/show_bug.cgi?id=237363
+    <rdar://88301613>
+    
+    Reviewed by Eric Carlson.
+    
+    We are getting AV device name through AVCaptureDevice.localizedName, first in UIProcess, then in GPUProcess.
+    To make sure we always use the ones from UIProcess (which are the ones exposed through mediaDevices.enumerateDevices),
+    We make sure to use CaptureDevice.label when creating an AVVideoCaptureSource.
+    
+    Manually tested.
+    
+    * platform/mediastream/mac/AVVideoCaptureSource.h:
+    * platform/mediastream/mac/AVVideoCaptureSource.mm:
+    (WebCore::AVVideoCaptureSource::create):
+    (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
+    * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@290820 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2022-03-04  Youenn Fablet  <you...@apple.com>
+
+            AVVideoCaptureSource should reuse CaptureDevice label
+            https://bugs.webkit.org/show_bug.cgi?id=237363
+            <rdar://88301613>
+
+            Reviewed by Eric Carlson.
+
+            We are getting AV device name through AVCaptureDevice.localizedName, first in UIProcess, then in GPUProcess.
+            To make sure we always use the ones from UIProcess (which are the ones exposed through mediaDevices.enumerateDevices),
+            We make sure to use CaptureDevice.label when creating an AVVideoCaptureSource.
+
+            Manually tested.
+
+            * platform/mediastream/mac/AVVideoCaptureSource.h:
+            * platform/mediastream/mac/AVVideoCaptureSource.mm:
+            (WebCore::AVVideoCaptureSource::create):
+            (WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
+            * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
+
+2022-03-21  Alan Coon  <alanc...@apple.com>
+
         Cherry-pick r290676. rdar://problem/83831093
 
     [Cocoa] HLS stream currentTime sometimes jumps backwards

Modified: branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h (291642 => 291643)


--- branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h	2022-03-22 17:55:10 UTC (rev 291642)
+++ branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h	2022-03-22 17:55:14 UTC (rev 291643)
@@ -54,7 +54,7 @@
 
 class AVVideoCaptureSource : public RealtimeVideoCaptureSource, private OrientationNotifier::Observer {
 public:
-    static CaptureSourceOrError create(String&& id, String&& hashSalt, const MediaConstraints*);
+    static CaptureSourceOrError create(const CaptureDevice&, String&& hashSalt, const MediaConstraints*);
 
     WEBCORE_EXPORT static VideoCaptureFactory& factory();
 
@@ -70,7 +70,7 @@
     void captureDeviceSuspendedDidChange();
 
 private:
-    AVVideoCaptureSource(AVCaptureDevice*, String&& id, String&& hashSalt);
+    AVVideoCaptureSource(AVCaptureDevice*, const CaptureDevice&, String&& hashSalt);
     virtual ~AVVideoCaptureSource();
 
     void clearSession();

Modified: branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (291642 => 291643)


--- branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2022-03-22 17:55:10 UTC (rev 291642)
+++ branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2022-03-22 17:55:14 UTC (rev 291643)
@@ -108,13 +108,13 @@
     RetainPtr<AVCaptureDeviceFormat> format;
 };
 
-CaptureSourceOrError AVVideoCaptureSource::create(String&& id, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError AVVideoCaptureSource::create(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints)
 {
-    AVCaptureDevice *device = [PAL::getAVCaptureDeviceClass() deviceWithUniqueID:id];
-    if (!device)
+    auto *avDevice = [PAL::getAVCaptureDeviceClass() deviceWithUniqueID:device.persistentId()];
+    if (!avDevice)
         return { "No AVVideoCaptureSource device"_s };
 
-    auto source = adoptRef(*new AVVideoCaptureSource(device, WTFMove(id), WTFMove(hashSalt)));
+    auto source = adoptRef(*new AVVideoCaptureSource(avDevice, device, WTFMove(hashSalt)));
     if (constraints) {
         auto result = source->applyConstraints(*constraints);
         if (result)
@@ -124,10 +124,10 @@
     return CaptureSourceOrError(RealtimeVideoSource::create(WTFMove(source)));
 }
 
-AVVideoCaptureSource::AVVideoCaptureSource(AVCaptureDevice* device, String&& id, String&& hashSalt)
-    : RealtimeVideoCaptureSource(device.localizedName, WTFMove(id), WTFMove(hashSalt))
+AVVideoCaptureSource::AVVideoCaptureSource(AVCaptureDevice* avDevice, const CaptureDevice& device, String&& hashSalt)
+    : RealtimeVideoCaptureSource(String(device.label()), String(device.persistentId()), WTFMove(hashSalt))
     , m_objcObserver(adoptNS([[WebCoreAVVideoCaptureSourceObserver alloc] initWithCallback:this]))
-    , m_device(device)
+    , m_device(avDevice)
     , m_verifyCapturingTimer(*this, &AVVideoCaptureSource::verifyIsCapturing)
 {
     [m_device addObserver:m_objcObserver.get() forKeyPath:@"suspended" options:NSKeyValueObservingOptionNew context:(void *)nil];

Modified: branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp (291642 => 291643)


--- branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2022-03-22 17:55:10 UTC (rev 291642)
+++ branches/safari-613-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2022-03-22 17:55:14 UTC (rev 291643)
@@ -48,7 +48,7 @@
     CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
     {
         ASSERT(device.type() == CaptureDevice::DeviceType::Camera);
-        return AVVideoCaptureSource::create(String { device.persistentId() }, WTFMove(hashSalt), constraints);
+        return AVVideoCaptureSource::create(device, WTFMove(hashSalt), constraints);
     }
 
 private:
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to