CaptureDeviceManager.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include "CaptureDevice.h"
#include "RealtimeMediaSource.h"
namespace WebCore {
struct CaptureDeviceInfo {
public:
String m_persistentDeviceID;
String m_localizedName;
String m_groupID;
String m_sourceId;
bool m_enabled { false };
RealtimeMediaSource::Type m_sourceType { RealtimeMediaSource::None };
RealtimeMediaSourceSettings::VideoFacingMode m_position { RealtimeMediaSourceSettings::Unknown };
};
class CaptureSessionInfo {
public:
virtual ~CaptureSessionInfo() { }
virtual bool supportsVideoSize(const String& ) const { return false; }
virtual String bestSessionPresetForVideoDimensions(int , int ) const { return emptyString(); }
};
class CaptureDeviceManager {
public:
virtual Vector<CaptureDeviceInfo>& captureDeviceList() = 0;
virtual void refreshCaptureDeviceList() { }
virtual Vector<CaptureDevice> getSourcesInfo();
virtual Vector<String> bestSourcesForTypeAndConstraints(RealtimeMediaSource::Type, const MediaConstraints&, String&);
virtual RefPtr<RealtimeMediaSource> sourceWithUID(const String&, RealtimeMediaSource::Type, const MediaConstraints*, String&);
protected:
virtual ~CaptureDeviceManager();
virtual RefPtr<RealtimeMediaSource> createMediaSourceForCaptureDeviceWithConstraints(const CaptureDeviceInfo&, const MediaConstraints*, String&) = 0;
bool captureDeviceFromDeviceID(const String& captureDeviceID, CaptureDeviceInfo& source);
};
}
#endif // ENABLE(MEDIA_STREAM)