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