RealtimeIncomingVideoSource.cpp [plain text]
#include "config.h"
#include "RealtimeIncomingVideoSource.h"
#if USE(LIBWEBRTC)
namespace WebCore {
RealtimeIncomingVideoSource::RealtimeIncomingVideoSource(rtc::scoped_refptr<webrtc::VideoTrackInterface>&& videoTrack, String&& videoTrackId)
: RealtimeMediaSource(Type::Video, "remote video"_s, WTFMove(videoTrackId))
, m_videoTrack(WTFMove(videoTrack))
{
ASSERT(m_videoTrack);
RealtimeMediaSourceSupportedConstraints constraints;
constraints.setSupportsWidth(true);
constraints.setSupportsHeight(true);
m_currentSettings = RealtimeMediaSourceSettings { };
m_currentSettings->setSupportedConstraints(WTFMove(constraints));
}
void RealtimeIncomingVideoSource::startProducingData()
{
if (m_videoTrack)
m_videoTrack->AddOrUpdateSink(this, rtc::VideoSinkWants());
}
void RealtimeIncomingVideoSource::stopProducingData()
{
if (m_videoTrack)
m_videoTrack->RemoveSink(this);
}
const RealtimeMediaSourceCapabilities& RealtimeIncomingVideoSource::capabilities()
{
return RealtimeMediaSourceCapabilities::emptyCapabilities();
}
const RealtimeMediaSourceSettings& RealtimeIncomingVideoSource::settings()
{
if (m_currentSettings)
return m_currentSettings.value();
RealtimeMediaSourceSupportedConstraints constraints;
constraints.setSupportsWidth(true);
constraints.setSupportsHeight(true);
RealtimeMediaSourceSettings settings;
auto& size = this->size();
settings.setWidth(size.width());
settings.setHeight(size.height());
settings.setSupportedConstraints(constraints);
m_currentSettings = WTFMove(settings);
return m_currentSettings.value();
}
void RealtimeIncomingVideoSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag> settings)
{
if (settings.containsAny({ RealtimeMediaSourceSettings::Flag::Width, RealtimeMediaSourceSettings::Flag::Height }))
m_currentSettings = WTF::nullopt;
}
}
#endif // USE(LIBWEBRTC)