RealtimeMediaSourceCenter.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include "ExceptionOr.h"
#include "MediaStreamRequest.h"
#include "RealtimeMediaSource.h"
#include "RealtimeMediaSourceSupportedConstraints.h"
#include <wtf/Function.h>
#include <wtf/RefPtr.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class CaptureDevice;
class CaptureDeviceManager;
class RealtimeMediaSourceSettings;
class RealtimeMediaSourceSupportedConstraints;
class TrackSourceInfo;
struct MediaConstraints;
class RealtimeMediaSourceCenter {
public:
virtual ~RealtimeMediaSourceCenter();
WEBCORE_EXPORT static RealtimeMediaSourceCenter& singleton();
static void setSharedStreamCenterOverride(RealtimeMediaSourceCenter*);
using ValidConstraintsHandler = WTF::Function<void(Vector<CaptureDevice>&& audioDeviceUIDs, Vector<CaptureDevice>&& videoDeviceUIDs, String&&)>;
using InvalidConstraintsHandler = WTF::Function<void(const String& invalidConstraint)>;
virtual void validateRequestConstraints(ValidConstraintsHandler&&, InvalidConstraintsHandler&&, const MediaStreamRequest&, String&&);
using NewMediaStreamHandler = WTF::Function<void(RefPtr<MediaStreamPrivate>&&)>;
virtual void createMediaStream(NewMediaStreamHandler&&, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest&);
WEBCORE_EXPORT virtual Vector<CaptureDevice> getMediaStreamDevices();
WEBCORE_EXPORT std::optional<CaptureDevice> captureDeviceWithPersistentID(CaptureDevice::DeviceType, const String&);
const RealtimeMediaSourceSupportedConstraints& supportedConstraints() { return m_supportedConstraints; }
WEBCORE_EXPORT virtual void setAudioFactory(RealtimeMediaSource::AudioCaptureFactory&) { }
WEBCORE_EXPORT virtual void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&) { }
WEBCORE_EXPORT virtual RealtimeMediaSource::AudioCaptureFactory& audioFactory() = 0;
virtual RealtimeMediaSource::VideoCaptureFactory& videoFactory() = 0;
virtual CaptureDeviceManager& audioCaptureDeviceManager() = 0;
virtual CaptureDeviceManager& videoCaptureDeviceManager() = 0;
virtual CaptureDeviceManager& displayCaptureDeviceManager() = 0;
String hashStringWithSalt(const String& id, const String& hashSalt);
WEBCORE_EXPORT CaptureDevice captureDeviceWithUniqueID(const String& id, const String& hashSalt);
WEBCORE_EXPORT ExceptionOr<void> setDeviceEnabled(const String&, bool);
using DevicesChangedObserverToken = unsigned;
DevicesChangedObserverToken addDevicesChangedObserver(std::function<void()>&&);
void removeDevicesChangedObserver(DevicesChangedObserverToken);
void captureDevicesChanged();
void setVideoCapturePageState(bool, bool);
protected:
RealtimeMediaSourceCenter();
static RealtimeMediaSourceCenter& platformCenter();
RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
CaptureDeviceManager* m_audioCaptureDeviceManager { nullptr };
CaptureDeviceManager* m_videoCaptureDeviceManager { nullptr };
};
}
#endif // ENABLE(MEDIA_STREAM)