AVCaptureDeviceManager.h [plain text]
#ifndef AVCaptureDeviceManager_h
#define AVCaptureDeviceManager_h
#if ENABLE(MEDIA_STREAM) && USE(AVFOUNDATION)
#include "CaptureDeviceManager.h"
#include "MediaStreamTrackSourcesRequestClient.h"
#include "RealtimeMediaSource.h"
#include "RealtimeMediaSourceSupportedConstraints.h"
#include <wtf/NeverDestroyed.h>
#include <wtf/RetainPtr.h>
#include <wtf/text/WTFString.h>
OBJC_CLASS AVCaptureDevice;
OBJC_CLASS AVCaptureSession;
OBJC_CLASS NSString;
OBJC_CLASS WebCoreAVCaptureDeviceManagerObserver;
namespace WebCore {
class AVCaptureSessionInfo : public CaptureSessionInfo {
public:
AVCaptureSessionInfo(AVCaptureSession*);
bool supportsVideoSize(const String&) const override;
String bestSessionPresetForVideoDimensions(int width, int height) const override;
private:
AVCaptureSession *m_platformSession;
};
class AVCaptureDeviceManager final : public CaptureDeviceManager {
friend class NeverDestroyed<AVCaptureDeviceManager>;
public:
Vector<CaptureDeviceInfo>& captureDeviceList() override;
static AVCaptureDeviceManager& singleton();
RefPtr<RealtimeMediaSource> sourceWithUID(const String&, RealtimeMediaSource::Type, MediaConstraints*) override;
Vector<RefPtr<RealtimeMediaSource>> bestSourcesForTypeAndConstraints(RealtimeMediaSource::Type, PassRefPtr<MediaConstraints>) override;
TrackSourceInfoVector getSourcesInfo(const String&) override;
bool verifyConstraintsForMediaType(RealtimeMediaSource::Type, MediaConstraints*, const CaptureSessionInfo*, String&) override;
void deviceConnected();
void deviceDisconnected(AVCaptureDevice*);
const RealtimeMediaSourceSupportedConstraints& supportedConstraints();
protected:
static bool isAvailable();
AVCaptureDeviceManager();
~AVCaptureDeviceManager() override;
bool sessionSupportsConstraint(const CaptureSessionInfo*, RealtimeMediaSource::Type, const String& name, const String& value) override;
RealtimeMediaSource* createMediaSourceForCaptureDeviceWithConstraints(const CaptureDeviceInfo&, MediaConstraints*) override;
CaptureSessionInfo defaultCaptureSession() const override;
void refreshCaptureDeviceList() override;
bool isSupportedFrameRate(float frameRate) const override;
void registerForDeviceNotifications();
RetainPtr<WebCoreAVCaptureDeviceManagerObserver> m_objcObserver;
RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
Vector<CaptureDeviceInfo> m_devices;
};
}
#endif // ENABLE(MEDIA_STREAM)
#endif // AVCaptureDeviceManager_h