RealtimeMediaSourceCenterMac.cpp [plain text]
#include "config.h"
#include "RealtimeMediaSourceCenter.h"
#if ENABLE(MEDIA_STREAM)
#include "AVCaptureDeviceManager.h"
#include "AVVideoCaptureSource.h"
#include "CoreAudioCaptureSource.h"
#include "DisplayCaptureManagerCocoa.h"
#include "Logging.h"
#include "MediaStreamPrivate.h"
#include "ScreenDisplayCapturerMac.h"
#include "WindowDisplayCapturerMac.h"
#include <wtf/MainThread.h>
namespace WebCore {
class VideoCaptureSourceFactoryMac final : public VideoCaptureFactory {
public:
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);
}
private:
CaptureDeviceManager& videoCaptureDeviceManager() { return AVCaptureDeviceManager::singleton(); }
};
class DisplayCaptureSourceFactoryMac final : public DisplayCaptureFactory {
public:
CaptureSourceOrError createDisplayCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
#if PLATFORM(IOS_FAMILY)
UNUSED_PARAM(device);
UNUSED_PARAM(constraints);
#endif
#if PLATFORM(MAC)
return DisplayCaptureSourceCocoa::create(device, constraints);
#else
return { };
#endif
}
private:
CaptureDeviceManager& displayCaptureDeviceManager() { return DisplayCaptureManagerCocoa::singleton(); }
};
AudioCaptureFactory& RealtimeMediaSourceCenter::defaultAudioCaptureFactory()
{
return CoreAudioCaptureSource::factory();
}
VideoCaptureFactory& RealtimeMediaSourceCenter::defaultVideoCaptureFactory()
{
static NeverDestroyed<VideoCaptureSourceFactoryMac> factory;
return factory.get();
}
DisplayCaptureFactory& RealtimeMediaSourceCenter::defaultDisplayCaptureFactory()
{
static NeverDestroyed<DisplayCaptureSourceFactoryMac> factory;
return factory.get();
}
}
#endif // ENABLE(MEDIA_STREAM)