Title: [225313] trunk/Source/WebCore
Revision
225313
Author
eric.carl...@apple.com
Date
2017-11-29 19:36:26 -0800 (Wed, 29 Nov 2017)

Log Message

[MediaStream] Clean up audio and video capture factories
https://bugs.webkit.org/show_bug.cgi?id=180156
<rdar://problem/35753435>

Reviewed by Youenn Fablet.

No new tests, no behavior change.

* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::setAudioFactory): Deleted.
(WebCore::RealtimeMediaSourceCenter::unsetAudioFactory): Deleted.
(WebCore::RealtimeMediaSourceCenter::audioFactory): Deleted.
(WebCore::RealtimeMediaSourceCenter::setVideoFactory): Deleted.
(WebCore::RealtimeMediaSourceCenter::unsetVideoFactory): Deleted.
(WebCore::RealtimeMediaSourceCenter::videoFactory): Deleted.
(WebCore::RealtimeMediaSourceCenter::setAudioCaptureDeviceManager): Deleted.
(WebCore::RealtimeMediaSourceCenter::unsetAudioCaptureDeviceManager): Deleted.
(WebCore::RealtimeMediaSourceCenter::audioCaptureDeviceManager): Deleted.
(WebCore::RealtimeMediaSourceCenter::setVideoCaptureDeviceManager): Deleted.
(WebCore::RealtimeMediaSourceCenter::unsetVideoCaptureDeviceManager): Deleted.
(WebCore::RealtimeMediaSourceCenter::videoCaptureDeviceManager): Deleted.
* platform/mediastream/RealtimeMediaSourceCenter.h:
(WebCore::RealtimeMediaSourceCenter::setAudioFactory):
(WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
* platform/mediastream/RealtimeMediaSourceSettings.cpp:
(WebCore::RealtimeMediaSourceSettings::facingMode):
(WebCore::RealtimeMediaSourceSettings::videoFacingModeEnum):
(WebCore::userFacing): Deleted.
(WebCore::environmentFacing): Deleted.
(WebCore::leftFacing): Deleted.
(WebCore::rightFacing): Deleted.
* platform/mediastream/RealtimeMediaSourceSettings.h:
(WebCore::RealtimeMediaSourceSettings::RealtimeMediaSourceSettings): Deleted.
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::create):
(WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
(): Deleted.
(WebCore::AVVideoCaptureSourceFactory::setVideoCapturePageState): Deleted.
(WebCore::avVideoCaptureSourceFactory): Deleted.
(WebCore::AVVideoCaptureSource::factory): Deleted.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
(WebCore::videoCaptureSourceFactory):
(WebCore::RealtimeMediaSourceCenterMac::audioFactory):
(WebCore::RealtimeMediaSourceCenterMac::videoFactory):
(WebCore::RealtimeMediaSourceCenterMac::audioCaptureDeviceManager):
(WebCore::RealtimeMediaSourceCenterMac::videoCaptureDeviceManager):
(WebCore::RealtimeMediaSourceCenterMac::RealtimeMediaSourceCenterMac): Deleted.
(WebCore::RealtimeMediaSourceCenterMac::defaultAudioFactory): Deleted.
(WebCore::RealtimeMediaSourceCenterMac::defaultVideoFactory): Deleted.
(WebCore::RealtimeMediaSourceCenterMac::defaultAudioCaptureDeviceManager): Deleted.
(WebCore::RealtimeMediaSourceCenterMac::defaultVideoCaptureDeviceManager): Deleted.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::~MockRealtimeAudioSource):
(WebCore::MockRealtimeAudioSource::startProducingData):
* platform/mock/MockRealtimeMediaSourceCenter.h:
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::~MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::startProducingData):
* platform/mock/MockRealtimeVideoSource.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (225312 => 225313)


--- trunk/Source/WebCore/ChangeLog	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/ChangeLog	2017-11-30 03:36:26 UTC (rev 225313)
@@ -1,3 +1,68 @@
+2017-11-29  Eric Carlson  <eric.carl...@apple.com>
+
+        [MediaStream] Clean up audio and video capture factories
+        https://bugs.webkit.org/show_bug.cgi?id=180156
+        <rdar://problem/35753435>
+
+        Reviewed by Youenn Fablet.
+
+        No new tests, no behavior change.
+
+        * platform/mediastream/RealtimeMediaSourceCenter.cpp:
+        (WebCore::RealtimeMediaSourceCenter::setAudioFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::audioFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::setVideoFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::unsetVideoFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::videoFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::setAudioCaptureDeviceManager): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::unsetAudioCaptureDeviceManager): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::audioCaptureDeviceManager): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::setVideoCaptureDeviceManager): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::unsetVideoCaptureDeviceManager): Deleted.
+        (WebCore::RealtimeMediaSourceCenter::videoCaptureDeviceManager): Deleted.
+        * platform/mediastream/RealtimeMediaSourceCenter.h:
+        (WebCore::RealtimeMediaSourceCenter::setAudioFactory):
+        (WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
+        * platform/mediastream/RealtimeMediaSourceSettings.cpp:
+        (WebCore::RealtimeMediaSourceSettings::facingMode):
+        (WebCore::RealtimeMediaSourceSettings::videoFacingModeEnum):
+        (WebCore::userFacing): Deleted.
+        (WebCore::environmentFacing): Deleted.
+        (WebCore::leftFacing): Deleted.
+        (WebCore::rightFacing): Deleted.
+        * platform/mediastream/RealtimeMediaSourceSettings.h:
+        (WebCore::RealtimeMediaSourceSettings::RealtimeMediaSourceSettings): Deleted.
+        * platform/mediastream/mac/AVVideoCaptureSource.h:
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::create):
+        (WebCore::AVVideoCaptureSource::~AVVideoCaptureSource):
+        (WebCore::AVVideoCaptureSource::setupCaptureSession):
+        (): Deleted.
+        (WebCore::AVVideoCaptureSourceFactory::setVideoCapturePageState): Deleted.
+        (WebCore::avVideoCaptureSourceFactory): Deleted.
+        (WebCore::AVVideoCaptureSource::factory): Deleted.
+        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
+        (WebCore::videoCaptureSourceFactory):
+        (WebCore::RealtimeMediaSourceCenterMac::audioFactory):
+        (WebCore::RealtimeMediaSourceCenterMac::videoFactory):
+        (WebCore::RealtimeMediaSourceCenterMac::audioCaptureDeviceManager):
+        (WebCore::RealtimeMediaSourceCenterMac::videoCaptureDeviceManager):
+        (WebCore::RealtimeMediaSourceCenterMac::RealtimeMediaSourceCenterMac): Deleted.
+        (WebCore::RealtimeMediaSourceCenterMac::defaultAudioFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenterMac::defaultVideoFactory): Deleted.
+        (WebCore::RealtimeMediaSourceCenterMac::defaultAudioCaptureDeviceManager): Deleted.
+        (WebCore::RealtimeMediaSourceCenterMac::defaultVideoCaptureDeviceManager): Deleted.
+        * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
+        * platform/mock/MockRealtimeAudioSource.cpp:
+        (WebCore::MockRealtimeAudioSource::~MockRealtimeAudioSource):
+        (WebCore::MockRealtimeAudioSource::startProducingData):
+        * platform/mock/MockRealtimeMediaSourceCenter.h:
+        * platform/mock/MockRealtimeVideoSource.cpp:
+        (WebCore::MockRealtimeVideoSource::~MockRealtimeVideoSource):
+        (WebCore::MockRealtimeVideoSource::startProducingData):
+        * platform/mock/MockRealtimeVideoSource.h:
+
 2017-11-29  Wenson Hsieh  <wenson_hs...@apple.com>
 
         [Attachment Support] Implement SPI for clients to make an attachment element display in-place

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -84,9 +84,9 @@
         virtual void audioSamplesAvailable(const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t /*numberOfFrames*/) { }
     };
 
-    template<typename Source> class SingleSourceFactory {
+    class SingleSourceFactory {
     public:
-        void setActiveSource(Source& source)
+        void setActiveSource(RealtimeMediaSource& source)
         {
             if (m_activeSource == &source)
                 return;
@@ -95,7 +95,7 @@
             m_activeSource = &source;
         }
 
-        void unsetActiveSource(Source& source)
+        void unsetActiveSource(RealtimeMediaSource& source)
         {
             if (m_activeSource == &source)
                 m_activeSource = nullptr;
@@ -106,7 +106,11 @@
         RealtimeMediaSource* m_activeSource { nullptr };
     };
 
-    class AudioCaptureFactory {
+    class AudioCaptureFactory
+#if PLATFORM(IOS)
+        : public RealtimeMediaSource::SingleSourceFactory
+#endif
+    {
     public:
         virtual ~AudioCaptureFactory() = default;
         virtual CaptureSourceOrError createAudioCaptureSource(const String& audioDeviceID, const MediaConstraints*) = 0;
@@ -115,7 +119,11 @@
         AudioCaptureFactory() = default;
     };
 
-    class VideoCaptureFactory {
+    class VideoCaptureFactory
+#if PLATFORM(IOS)
+        : public RealtimeMediaSource::SingleSourceFactory
+#endif
+    {
     public:
         virtual ~VideoCaptureFactory() = default;
         virtual CaptureSourceOrError createVideoCaptureSource(const String& videoDeviceID, const MediaConstraints*) = 0;

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp	2017-11-30 03:36:26 UTC (rev 225313)
@@ -138,70 +138,6 @@
     return result;
 }
 
-void RealtimeMediaSourceCenter::setAudioFactory(RealtimeMediaSource::AudioCaptureFactory& factory)
-{
-    m_audioFactory = &factory;
-}
-
-void RealtimeMediaSourceCenter::unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory& factory)
-{
-    if (m_audioFactory == &factory)
-        m_audioFactory = nullptr;
-}
-
-RealtimeMediaSource::AudioCaptureFactory& RealtimeMediaSourceCenter::audioFactory()
-{
-    return m_audioFactory ? *m_audioFactory : defaultAudioFactory();
-}
-
-void RealtimeMediaSourceCenter::setVideoFactory(RealtimeMediaSource::VideoCaptureFactory& factory)
-{
-    m_videoFactory = &factory;
-}
-
-void RealtimeMediaSourceCenter::unsetVideoFactory(RealtimeMediaSource::VideoCaptureFactory& factory)
-{
-    if (m_videoFactory == &factory)
-        m_videoFactory = nullptr;
-}
-
-RealtimeMediaSource::VideoCaptureFactory& RealtimeMediaSourceCenter::videoFactory()
-{
-    return m_videoFactory ? *m_videoFactory : defaultVideoFactory();
-}
-
-void RealtimeMediaSourceCenter::setAudioCaptureDeviceManager(CaptureDeviceManager& deviceManager)
-{
-    m_audioCaptureDeviceManager = &deviceManager;
-}
-
-void RealtimeMediaSourceCenter::unsetAudioCaptureDeviceManager(CaptureDeviceManager& deviceManager)
-{
-    if (m_audioCaptureDeviceManager == &deviceManager)
-        m_audioCaptureDeviceManager = nullptr;
-}
-
-CaptureDeviceManager& RealtimeMediaSourceCenter::audioCaptureDeviceManager()
-{
-    return m_audioCaptureDeviceManager ? *m_audioCaptureDeviceManager : defaultAudioCaptureDeviceManager();
-}
-
-void RealtimeMediaSourceCenter::setVideoCaptureDeviceManager(CaptureDeviceManager& deviceManager)
-{
-    m_videoCaptureDeviceManager = &deviceManager;
-}
-
-void RealtimeMediaSourceCenter::unsetVideoCaptureDeviceManager(CaptureDeviceManager& deviceManager)
-{
-    if (m_videoCaptureDeviceManager == &deviceManager)
-        m_videoCaptureDeviceManager = nullptr;
-}
-
-CaptureDeviceManager& RealtimeMediaSourceCenter::videoCaptureDeviceManager()
-{
-    return m_videoCaptureDeviceManager ? *m_videoCaptureDeviceManager : defaultVideoCaptureDeviceManager();
-}
-
 static void addStringToSHA1(SHA1& sha1, const String& string)
 {
     if (string.isEmpty())

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2011 Ericsson AB. All rights reserved.
  * Copyright (C) 2012 Google Inc. All rights reserved.
- * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -69,28 +69,15 @@
     
     const RealtimeMediaSourceSupportedConstraints& supportedConstraints() { return m_supportedConstraints; }
 
-    virtual RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() = 0;
-    virtual RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() = 0;
+    WEBCORE_EXPORT virtual void setAudioFactory(RealtimeMediaSource::AudioCaptureFactory&) { }
+    WEBCORE_EXPORT virtual void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&) { }
+    WEBCORE_EXPORT virtual RealtimeMediaSource::AudioCaptureFactory& audioFactory() = 0;
 
-    virtual CaptureDeviceManager& defaultAudioCaptureDeviceManager() = 0;
-    virtual CaptureDeviceManager& defaultVideoCaptureDeviceManager() = 0;
+    virtual RealtimeMediaSource::VideoCaptureFactory& videoFactory() = 0;
 
-    WEBCORE_EXPORT void setAudioFactory(RealtimeMediaSource::AudioCaptureFactory&);
-    WEBCORE_EXPORT void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&);
-    WEBCORE_EXPORT RealtimeMediaSource::AudioCaptureFactory& audioFactory();
+    virtual CaptureDeviceManager& audioCaptureDeviceManager() = 0;
+    virtual CaptureDeviceManager& videoCaptureDeviceManager() = 0;
 
-    WEBCORE_EXPORT void setVideoFactory(RealtimeMediaSource::VideoCaptureFactory&);
-    WEBCORE_EXPORT void unsetVideoFactory(RealtimeMediaSource::VideoCaptureFactory&);
-    WEBCORE_EXPORT RealtimeMediaSource::VideoCaptureFactory& videoFactory();
-
-    WEBCORE_EXPORT void setAudioCaptureDeviceManager(CaptureDeviceManager&);
-    WEBCORE_EXPORT void unsetAudioCaptureDeviceManager(CaptureDeviceManager&);
-    CaptureDeviceManager& audioCaptureDeviceManager();
-
-    WEBCORE_EXPORT void setVideoCaptureDeviceManager(CaptureDeviceManager&);
-    WEBCORE_EXPORT void unsetVideoCaptureDeviceManager(CaptureDeviceManager&);
-    CaptureDeviceManager& videoCaptureDeviceManager();
-
     String hashStringWithSalt(const String& id, const String& hashSalt);
     WEBCORE_EXPORT std::optional<CaptureDevice> captureDeviceWithUniqueID(const String& id, const String& hashSalt);
     WEBCORE_EXPORT ExceptionOr<void> setDeviceEnabled(const String&, bool);
@@ -108,9 +95,6 @@
     static RealtimeMediaSourceCenter& platformCenter();
     RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
 
-    RealtimeMediaSource::AudioCaptureFactory* m_audioFactory { nullptr };
-    RealtimeMediaSource::VideoCaptureFactory* m_videoFactory { nullptr };
-
     CaptureDeviceManager* m_audioCaptureDeviceManager { nullptr };
     CaptureDeviceManager* m_videoCaptureDeviceManager { nullptr };
 };

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp	2017-11-30 03:36:26 UTC (rev 225313)
@@ -37,58 +37,34 @@
 
 namespace WebCore {
 
-static const AtomicString& userFacing()
+String RealtimeMediaSourceSettings::facingMode(RealtimeMediaSourceSettings::VideoFacingMode mode)
 {
-    static NeverDestroyed<AtomicString> userFacing("user", AtomicString::ConstructFromLiteral);
-    return userFacing;
+    static const NeverDestroyed<String> values[] = {
+        MAKE_STATIC_STRING_IMPL("unknown"),
+        MAKE_STATIC_STRING_IMPL("user"),
+        MAKE_STATIC_STRING_IMPL("environment"),
+        MAKE_STATIC_STRING_IMPL("left"),
+        MAKE_STATIC_STRING_IMPL("right"),
+    };
+    static_assert(static_cast<size_t>(RealtimeMediaSourceSettings::VideoFacingMode::Unknown) == 0, "RealtimeMediaSourceSettings::VideoFacingMode::Unknown is not 0 as expected");
+    static_assert(static_cast<size_t>(RealtimeMediaSourceSettings::VideoFacingMode::User) == 1, "RealtimeMediaSourceSettings::VideoFacingMode::User is not 1 as expected");
+    static_assert(static_cast<size_t>(RealtimeMediaSourceSettings::VideoFacingMode::Environment) == 2, "RealtimeMediaSourceSettings::VideoFacingMode::Environment is not 2 as expected");
+    static_assert(static_cast<size_t>(RealtimeMediaSourceSettings::VideoFacingMode::Left) == 3, "RealtimeMediaSourceSettings::VideoFacingMode::Left is not 3 as expected");
+    static_assert(static_cast<size_t>(RealtimeMediaSourceSettings::VideoFacingMode::Right) == 4, "RealtimeMediaSourceSettings::VideoFacingMode::Right is not 4 as expected");
+    ASSERT(static_cast<size_t>(mode) < WTF_ARRAY_LENGTH(values));
+    return values[static_cast<size_t>(mode)];
 }
-static const AtomicString& environmentFacing()
-{
-    static NeverDestroyed<AtomicString> environmentFacing("environment", AtomicString::ConstructFromLiteral);
-    return environmentFacing;
-}
 
-static const AtomicString& leftFacing()
-{
-    static NeverDestroyed<AtomicString> leftFacing("left", AtomicString::ConstructFromLiteral);
-    return leftFacing;
-}
-
-static const AtomicString& rightFacing()
-{
-    static NeverDestroyed<AtomicString> rightFacing("right", AtomicString::ConstructFromLiteral);
-    return rightFacing;
-}
-
-const AtomicString& RealtimeMediaSourceSettings::facingMode(RealtimeMediaSourceSettings::VideoFacingMode mode)
-{
-    switch (mode) {
-    case RealtimeMediaSourceSettings::User:
-        return userFacing();
-    case RealtimeMediaSourceSettings::Environment:
-        return environmentFacing();
-    case RealtimeMediaSourceSettings::Left:
-        return leftFacing();
-    case RealtimeMediaSourceSettings::Right:
-        return rightFacing();
-    case RealtimeMediaSourceSettings::Unknown:
-        return emptyAtom();
-    }
-    
-    ASSERT_NOT_REACHED();
-    return emptyAtom();
-}
-
 RealtimeMediaSourceSettings::VideoFacingMode RealtimeMediaSourceSettings::videoFacingModeEnum(const String& mode)
 {
-    if (mode == userFacing())
-        return RealtimeMediaSourceSettings::User;
-    if (mode == environmentFacing())
-        return RealtimeMediaSourceSettings::Environment;
-    if (mode == leftFacing())
-        return RealtimeMediaSourceSettings::Left;
-    if (mode == rightFacing())
-        return RealtimeMediaSourceSettings::Right;
+    if (mode == "user")
+        return RealtimeMediaSourceSettings::VideoFacingMode::User;
+    if (mode == "environment")
+        return RealtimeMediaSourceSettings::VideoFacingMode::Environment;
+    if (mode == "left")
+        return RealtimeMediaSourceSettings::VideoFacingMode::Left;
+    if (mode == "right")
+        return RealtimeMediaSourceSettings::VideoFacingMode::Right;
 
     return RealtimeMediaSourceSettings::Unknown;
 }

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -41,13 +41,10 @@
     enum SourceType { None, Camera, Microphone };
     enum VideoFacingMode { Unknown, User, Environment, Left, Right };
 
-    static const AtomicString& facingMode(RealtimeMediaSourceSettings::VideoFacingMode);
-
+    static String facingMode(RealtimeMediaSourceSettings::VideoFacingMode);
     static RealtimeMediaSourceSettings::VideoFacingMode videoFacingModeEnum(const String&);
 
-    explicit RealtimeMediaSourceSettings()
-    {
-    }
+    explicit RealtimeMediaSourceSettings() = default;
 
     bool supportsWidth() const { return m_supportedConstraints.supportsWidth(); }
     uint32_t width() const { return m_width; }

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -45,7 +45,7 @@
 
 class AVVideoCaptureSource : public AVMediaCaptureSource, private OrientationNotifier::Observer {
 public:
-    static CaptureSourceOrError create(AVCaptureDevice*, const AtomicString&, const MediaConstraints*);
+    static CaptureSourceOrError create(const AtomicString&, const MediaConstraints*);
 
     WEBCORE_EXPORT static VideoCaptureFactory& factory();
 
@@ -89,8 +89,6 @@
     RetainPtr<CMSampleBufferRef> m_buffer;
     RetainPtr<AVCaptureVideoDataOutput> m_videoOutput;
 
-    std::unique_ptr<PixelBufferConformerCV> m_pixelBufferConformer;
-
     int32_t m_width { 0 };
     int32_t m_height { 0 };
     int m_sensorOrientation { 0 };

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2017-11-30 03:36:26 UTC (rev 225313)
@@ -38,7 +38,7 @@
 #import "NotImplemented.h"
 #import "PixelBufferConformerCV.h"
 #import "PlatformLayer.h"
-#import "RealtimeMediaSourceCenter.h"
+#import "RealtimeMediaSourceCenterMac.h"
 #import "RealtimeMediaSourceSettings.h"
 #import "WebActionDisablingCALayerDelegate.h"
 #import <AVFoundation/AVCaptureDevice.h>
@@ -110,31 +110,12 @@
 const OSType videoCaptureFormat = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange;
 #endif
 
-class AVVideoCaptureSourceFactory : public RealtimeMediaSource::VideoCaptureFactory
-#if PLATFORM(IOS)
-    , public RealtimeMediaSource::SingleSourceFactory<AVVideoCaptureSource>
-#endif
+CaptureSourceOrError AVVideoCaptureSource::create(const AtomicString& id, const MediaConstraints* constraints)
 {
-public:
-    CaptureSourceOrError createVideoCaptureSource(const String& deviceID, const MediaConstraints* constraints) final {
-        AVCaptureDeviceTypedef *device = [getAVCaptureDeviceClass() deviceWithUniqueID:deviceID];
-        if (!device)
-            return { };
-        return AVVideoCaptureSource::create(device, deviceID, constraints);
-    }
+    AVCaptureDeviceTypedef *device = [getAVCaptureDeviceClass() deviceWithUniqueID:id];
+    if (!device)
+        return { };
 
-#if PLATFORM(IOS)
-private:
-    void setVideoCapturePageState(bool interrupted, bool pageMuted)
-    {
-        if (activeSource())
-            activeSource()->setInterrupted(interrupted, pageMuted);
-    }
-#endif
-};
-
-CaptureSourceOrError AVVideoCaptureSource::create(AVCaptureDeviceTypedef* device, const AtomicString& id, const MediaConstraints* constraints)
-{
     auto source = adoptRef(*new AVVideoCaptureSource(device, id));
     if (constraints) {
         auto result = source->applyConstraints(*constraints);
@@ -145,17 +126,6 @@
     return CaptureSourceOrError(WTFMove(source));
 }
 
-static AVVideoCaptureSourceFactory& avVideoCaptureSourceFactory()
-{
-    static NeverDestroyed<AVVideoCaptureSourceFactory> factory;
-    return factory.get();
-}
-
-RealtimeMediaSource::VideoCaptureFactory& AVVideoCaptureSource::factory()
-{
-    return avVideoCaptureSourceFactory();
-}
-
 AVVideoCaptureSource::AVVideoCaptureSource(AVCaptureDeviceTypedef* device, const AtomicString& id)
     : AVMediaCaptureSource(device, id, Type::Video)
 {
@@ -164,7 +134,7 @@
 AVVideoCaptureSource::~AVVideoCaptureSource()
 {
 #if PLATFORM(IOS)
-    avVideoCaptureSourceFactory().unsetActiveSource(*this);
+    RealtimeMediaSourceCenterMac::videoCaptureSourceFactory().unsetActiveSource(*this);
 #endif
 }
 
@@ -414,7 +384,7 @@
 bool AVVideoCaptureSource::setupCaptureSession()
 {
 #if PLATFORM(IOS)
-    avVideoCaptureSourceFactory().setActiveSource(*this);
+    RealtimeMediaSourceCenterMac::videoCaptureSourceFactory().setActiveSource(*this);
 #endif
 
     NSError *error = nil;

Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp	2017-11-30 03:36:26 UTC (rev 225313)
@@ -54,9 +54,6 @@
 using namespace PAL;
 
 class CoreAudioCaptureSourceFactory : public RealtimeMediaSource::AudioCaptureFactory
-#if PLATFORM(IOS)
-    , public RealtimeMediaSource::SingleSourceFactory<CoreAudioCaptureSource>
-#endif
 {
 public:
     CaptureSourceOrError createAudioCaptureSource(const String& deviceID, const MediaConstraints* constraints) final {

Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2017-11-30 03:36:26 UTC (rev 225313)
@@ -44,6 +44,35 @@
 
 namespace WebCore {
 
+class VideoCaptureSourceFactoryMac final : public RealtimeMediaSource::VideoCaptureFactory
+{
+public:
+    CaptureSourceOrError createVideoCaptureSource(const String& id, const MediaConstraints* constraints) final
+    {
+        return AVVideoCaptureSource::create(id, constraints);
+    }
+
+#if PLATFORM(IOS)
+private:
+    void setVideoCapturePageState(bool interrupted, bool pageMuted)
+    {
+        if (activeSource())
+            activeSource()->setInterrupted(interrupted, pageMuted);
+    }
+#endif
+};
+
+RealtimeMediaSource::VideoCaptureFactory& RealtimeMediaSourceCenterMac::videoCaptureSourceFactory()
+{
+    static NeverDestroyed<VideoCaptureSourceFactoryMac> factory;
+    return factory.get();
+}
+
+RealtimeMediaSource::AudioCaptureFactory& RealtimeMediaSourceCenterMac::audioCaptureSourceFactory()
+{
+    return RealtimeMediaSourceCenterMac::singleton().audioFactory();
+}
+
 RealtimeMediaSourceCenterMac& RealtimeMediaSourceCenterMac::singleton()
 {
     ASSERT(isMainThread());
@@ -56,28 +85,25 @@
     return RealtimeMediaSourceCenterMac::singleton();
 }
 
-RealtimeMediaSourceCenterMac::RealtimeMediaSourceCenterMac()
-{
-    m_supportedConstraints.setSupportsSampleRate(false);
-    m_supportedConstraints.setSupportsSampleSize(false);
-    m_supportedConstraints.setSupportsEchoCancellation(false);
-    m_supportedConstraints.setSupportsGroupId(true);
-}
+RealtimeMediaSourceCenterMac::RealtimeMediaSourceCenterMac() = default;
 
 RealtimeMediaSourceCenterMac::~RealtimeMediaSourceCenterMac() = default;
 
 
-RealtimeMediaSource::AudioCaptureFactory& RealtimeMediaSourceCenterMac::defaultAudioFactory()
+RealtimeMediaSource::AudioCaptureFactory& RealtimeMediaSourceCenterMac::audioFactory()
 {
+    if (m_audioFactoryOverride)
+        return *m_audioFactoryOverride;
+
     return CoreAudioCaptureSource::factory();
 }
 
-RealtimeMediaSource::VideoCaptureFactory& RealtimeMediaSourceCenterMac::defaultVideoFactory()
+RealtimeMediaSource::VideoCaptureFactory& RealtimeMediaSourceCenterMac::videoFactory()
 {
-    return AVVideoCaptureSource::factory();
+    return videoCaptureSourceFactory();
 }
 
-CaptureDeviceManager& RealtimeMediaSourceCenterMac::defaultAudioCaptureDeviceManager()
+CaptureDeviceManager& RealtimeMediaSourceCenterMac::audioCaptureDeviceManager()
 {
 #if PLATFORM(MAC)
     return CoreAudioCaptureDeviceManager::singleton();
@@ -86,7 +112,7 @@
 #endif
 }
 
-CaptureDeviceManager& RealtimeMediaSourceCenterMac::defaultVideoCaptureDeviceManager()
+CaptureDeviceManager& RealtimeMediaSourceCenterMac::videoCaptureDeviceManager()
 {
     return AVCaptureDeviceManager::singleton();
 }

Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013-2016 Apple, Inc. All rights reserved.
+ * Copyright (C) 2013-2017 Apple, Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -44,16 +44,24 @@
 public:
     WEBCORE_EXPORT static RealtimeMediaSourceCenterMac& singleton();
 
+    static RealtimeMediaSource::VideoCaptureFactory& videoCaptureSourceFactory();
+    static RealtimeMediaSource::AudioCaptureFactory& audioCaptureSourceFactory();
+
 private:
     friend class NeverDestroyed<RealtimeMediaSourceCenterMac>;
     RealtimeMediaSourceCenterMac();
     ~RealtimeMediaSourceCenterMac();
 
-    RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() final;
-    RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() final;
+    void setAudioFactory(RealtimeMediaSource::AudioCaptureFactory& factory) final { m_audioFactoryOverride = &factory; }
+    void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&) final { m_audioFactoryOverride = nullptr; }
 
-    CaptureDeviceManager& defaultAudioCaptureDeviceManager() final;
-    CaptureDeviceManager& defaultVideoCaptureDeviceManager() final;
+    RealtimeMediaSource::AudioCaptureFactory& audioFactory() final;
+    RealtimeMediaSource::VideoCaptureFactory& videoFactory() final;
+
+    CaptureDeviceManager& audioCaptureDeviceManager() final;
+    CaptureDeviceManager& videoCaptureDeviceManager() final;
+
+    RealtimeMediaSource::AudioCaptureFactory* m_audioFactoryOverride { nullptr };
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (225312 => 225313)


--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp	2017-11-30 03:36:26 UTC (rev 225313)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2015-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,6 +35,7 @@
 #include "CaptureDevice.h"
 #include "Logging.h"
 #include "MediaConstraints.h"
+#include "MockRealtimeMediaSourceCenter.h"
 #include "NotImplemented.h"
 #include "RealtimeMediaSourceSettings.h"
 #include <wtf/UUID.h>
@@ -42,9 +43,6 @@
 namespace WebCore {
 
 class MockRealtimeAudioSourceFactory : public RealtimeMediaSource::AudioCaptureFactory
-#if PLATFORM(IOS)
-    , public RealtimeMediaSource::SingleSourceFactory<MockRealtimeAudioSource>
-#endif
 {
 public:
     CaptureSourceOrError createAudioCaptureSource(const String& deviceID, const MediaConstraints* constraints) final {
@@ -94,7 +92,7 @@
 MockRealtimeAudioSource::~MockRealtimeAudioSource()
 {
 #if PLATFORM(IOS)
-    mockAudioCaptureSourceFactory().unsetActiveSource(*this);
+    MockRealtimeMediaSourceCenter::audioCaptureSourceFactory().unsetActiveSource(*this);
 #endif
 }
 
@@ -122,7 +120,7 @@
 void MockRealtimeAudioSource::startProducingData()
 {
 #if PLATFORM(IOS)
-    mockAudioCaptureSourceFactory().setActiveSource(*this);
+    MockRealtimeMediaSourceCenter::audioCaptureSourceFactory().setActiveSource(*this);
 #endif
 
     if (!sampleRate())

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2013 Google Inc. All rights reserved.
- * Copyright (C) 2013 Apple Inc.  All rights reserved.
+ * Copyright (C) 2013-2107 Apple Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -39,15 +39,19 @@
 public:
     WEBCORE_EXPORT static void setMockRealtimeMediaSourceCenterEnabled(bool);
 
+    static RealtimeMediaSource::VideoCaptureFactory& videoCaptureSourceFactory() { return MockRealtimeVideoSource::factory(); }
+    static RealtimeMediaSource::AudioCaptureFactory& audioCaptureSourceFactory() { return MockRealtimeAudioSource::factory(); }
+
 private:
     MockRealtimeMediaSourceCenter() = default;
     friend NeverDestroyed<MockRealtimeMediaSourceCenter>;
 
-    RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() final { return MockRealtimeAudioSource::factory(); }
-    RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() final { return MockRealtimeVideoSource::factory(); }
-    CaptureDeviceManager& defaultAudioCaptureDeviceManager() final { return m_defaultAudioCaptureDeviceManager; }
-    CaptureDeviceManager& defaultVideoCaptureDeviceManager() final { return m_defaultVideoCaptureDeviceManager; }
+    RealtimeMediaSource::AudioCaptureFactory& audioFactory() final { return MockRealtimeAudioSource::factory(); }
+    RealtimeMediaSource::VideoCaptureFactory& videoFactory() final { return MockRealtimeVideoSource::factory(); }
 
+    CaptureDeviceManager& audioCaptureDeviceManager() final { return m_audioCaptureDeviceManager; }
+    CaptureDeviceManager& videoCaptureDeviceManager() final { return m_videoCaptureDeviceManager; }
+
     class MockAudioCaptureDeviceManager final : public CaptureDeviceManager {
     private:
         Vector<CaptureDevice>& captureDevices() final { return MockRealtimeMediaSource::audioDevices(); }
@@ -57,8 +61,8 @@
         Vector<CaptureDevice>& captureDevices() final { return MockRealtimeMediaSource::videoDevices(); }
     };
 
-    MockAudioCaptureDeviceManager m_defaultAudioCaptureDeviceManager;
-    MockVideoCaptureDeviceManager m_defaultVideoCaptureDeviceManager;
+    MockAudioCaptureDeviceManager m_audioCaptureDeviceManager;
+    MockVideoCaptureDeviceManager m_videoCaptureDeviceManager;
 };
 
 }

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (225312 => 225313)


--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp	2017-11-30 03:36:26 UTC (rev 225313)
@@ -38,6 +38,7 @@
 #include "IntRect.h"
 #include "Logging.h"
 #include "MediaConstraints.h"
+#include "MockRealtimeMediaSourceCenter.h"
 #include "NotImplemented.h"
 #include "PlatformLayer.h"
 #include "RealtimeMediaSourceSettings.h"
@@ -49,9 +50,6 @@
 namespace WebCore {
 
 class MockRealtimeVideoSourceFactory : public RealtimeMediaSource::VideoCaptureFactory
-#if PLATFORM(IOS)
-    , public RealtimeMediaSource::SingleSourceFactory<MockRealtimeVideoSource>
-#endif
 {
 public:
     CaptureSourceOrError createVideoCaptureSource(const String& deviceID, const MediaConstraints* constraints) final {
@@ -114,7 +112,7 @@
 MockRealtimeVideoSource::~MockRealtimeVideoSource()
 {
 #if PLATFORM(IOS)
-    mockVideoCaptureSourceFactory().unsetActiveSource(*this);
+    MockRealtimeMediaSourceCenter::videoCaptureSourceFactory().unsetActiveSource(*this);
 #endif
 }
 
@@ -121,7 +119,7 @@
 void MockRealtimeVideoSource::startProducingData()
 {
 #if PLATFORM(IOS)
-    mockVideoCaptureSourceFactory().setActiveSource(*this);
+    MockRealtimeMediaSourceCenter::videoCaptureSourceFactory().setActiveSource(*this);
 #endif
 
     if (size().isEmpty()) {

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h (225312 => 225313)


--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h	2017-11-30 02:31:43 UTC (rev 225312)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h	2017-11-30 03:36:26 UTC (rev 225313)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2015-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to