MockGStreamerAudioCaptureSource.cpp [plain text]
#include "config.h"
#if ENABLE(MEDIA_STREAM) && USE(LIBWEBRTC) && USE(GSTREAMER)
#include "MockGStreamerAudioCaptureSource.h"
#include "MockRealtimeAudioSource.h"
namespace WebCore {
class WrappedMockRealtimeAudioSource : public MockRealtimeAudioSource {
public:
WrappedMockRealtimeAudioSource(const String& deviceID, const String& name)
: MockRealtimeAudioSource(deviceID, name)
{
}
};
CaptureSourceOrError MockRealtimeAudioSource::create(const String& deviceID,
const String& name, const MediaConstraints* constraints)
{
auto source = adoptRef(*new MockGStreamerAudioCaptureSource(deviceID, name));
if (constraints && source->applyConstraints(*constraints))
return { };
return CaptureSourceOrError(WTFMove(source));
}
std::optional<std::pair<String, String>> MockGStreamerAudioCaptureSource::applyConstraints(const MediaConstraints& constraints)
{
m_wrappedSource->applyConstraints(constraints);
return GStreamerAudioCaptureSource::applyConstraints(constraints);
}
void MockGStreamerAudioCaptureSource::applyConstraints(const MediaConstraints& constraints, SuccessHandler&& successHandler, FailureHandler&& failureHandler)
{
m_wrappedSource->applyConstraints(constraints, WTFMove(successHandler), WTFMove(failureHandler));
}
MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource(const String& deviceID, const String& name)
: GStreamerAudioCaptureSource(deviceID, name)
, m_wrappedSource(std::make_unique<WrappedMockRealtimeAudioSource>(deviceID, name))
{
m_wrappedSource->addObserver(*this);
}
MockGStreamerAudioCaptureSource::~MockGStreamerAudioCaptureSource()
{
m_wrappedSource->removeObserver(*this);
}
void MockGStreamerAudioCaptureSource::stopProducingData()
{
m_wrappedSource->stop();
GStreamerAudioCaptureSource::stopProducingData();
}
void MockGStreamerAudioCaptureSource::startProducingData()
{
GStreamerAudioCaptureSource::startProducingData();
m_wrappedSource->start();
}
const RealtimeMediaSourceSettings& MockGStreamerAudioCaptureSource::settings() const
{
return m_wrappedSource->settings();
}
const RealtimeMediaSourceCapabilities& MockGStreamerAudioCaptureSource::capabilities() const
{
m_capabilities = m_wrappedSource->capabilities();
m_currentSettings = m_wrappedSource->settings();
return m_wrappedSource->capabilities();
}
void MockGStreamerAudioCaptureSource::captureFailed()
{
stop();
RealtimeMediaSource::captureFailed();
}
}
#endif // ENABLE(MEDIA_STREAM) && USE(LIBWEBRTC) && USE(GSTREAMER)