RealtimeIncomingVideoSource.h [plain text]
#pragma once
#if USE(LIBWEBRTC)
#include "LibWebRTCMacros.h"
#include "RealtimeMediaSource.h"
ALLOW_UNUSED_PARAMETERS_BEGIN
#include <webrtc/api/media_stream_interface.h>
ALLOW_UNUSED_PARAMETERS_END
#include <wtf/RetainPtr.h>
namespace WebCore {
class CaptureDevice;
class RealtimeIncomingVideoSource
: public RealtimeMediaSource
, private rtc::VideoSinkInterface<webrtc::VideoFrame>
{
public:
static Ref<RealtimeIncomingVideoSource> create(rtc::scoped_refptr<webrtc::VideoTrackInterface>&&, String&&);
~RealtimeIncomingVideoSource()
{
stop();
}
protected:
RealtimeIncomingVideoSource(rtc::scoped_refptr<webrtc::VideoTrackInterface>&&, String&&);
#if !RELEASE_LOG_DISABLED
const char* logClassName() const final { return "RealtimeIncomingVideoSource"; }
#endif
private:
void startProducingData() final;
void stopProducingData() final;
void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>) final;
const RealtimeMediaSourceCapabilities& capabilities() final;
const RealtimeMediaSourceSettings& settings() final;
bool isIncomingVideoSource() const final { return true; }
Optional<RealtimeMediaSourceSettings> m_currentSettings;
rtc::scoped_refptr<webrtc::VideoTrackInterface> m_videoTrack;
#if !RELEASE_LOG_DISABLED
mutable RefPtr<const Logger> m_logger;
const void* m_logIdentifier;
#endif
};
}
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::RealtimeIncomingVideoSource)
static bool isType(const WebCore::RealtimeMediaSource& source) { return source.isIncomingVideoSource(); }
SPECIALIZE_TYPE_TRAITS_END()
#endif // USE(LIBWEBRTC)