RemoteMediaEngineConfigurationFactory.cpp [plain text]
#include "config.h"
#include "RemoteMediaEngineConfigurationFactory.h"
#if ENABLE(GPU_PROCESS)
#include "GPUProcessConnection.h"
#include "RemoteMediaEngineConfigurationFactoryProxyMessages.h"
#include "WebProcess.h"
#include <WebCore/MediaCapabilitiesDecodingInfo.h>
#include <WebCore/MediaCapabilitiesEncodingInfo.h>
#include <WebCore/MediaDecodingConfiguration.h>
#include <WebCore/MediaEncodingConfiguration.h>
#include <WebCore/MediaEngineConfigurationFactory.h>
namespace WebKit {
using namespace WebCore;
RemoteMediaEngineConfigurationFactory::RemoteMediaEngineConfigurationFactory(WebProcess& process)
: m_process(process)
{
}
RemoteMediaEngineConfigurationFactory::~RemoteMediaEngineConfigurationFactory() = default;
void RemoteMediaEngineConfigurationFactory::registerFactory()
{
MediaEngineConfigurationFactory::clearFactories();
MediaEngineConfigurationFactory::installFactory({
[weakThis = makeWeakPtr(this)] (MediaDecodingConfiguration&& configuration, MediaEngineConfigurationFactory::DecodingConfigurationCallback&& callback) {
if (!weakThis) {
callback({{ }, WTFMove(configuration)});
return;
}
weakThis->createDecodingConfiguration(WTFMove(configuration), WTFMove(callback));
},
[weakThis = makeWeakPtr(this)] (MediaEncodingConfiguration&& configuration, MediaEngineConfigurationFactory::EncodingConfigurationCallback&& callback) {
if (!weakThis) {
callback({{ }, WTFMove(configuration)});
return;
}
weakThis->createEncodingConfiguration(WTFMove(configuration), WTFMove(callback));
},
});
}
const char* RemoteMediaEngineConfigurationFactory::supplementName()
{
return "RemoteMediaEngineConfigurationFactory";
}
GPUProcessConnection& RemoteMediaEngineConfigurationFactory::gpuProcessConnection()
{
return m_process.ensureGPUProcessConnection();
}
void RemoteMediaEngineConfigurationFactory::createDecodingConfiguration(MediaDecodingConfiguration&& configuration, MediaEngineConfigurationFactory::DecodingConfigurationCallback&& callback)
{
gpuProcessConnection().connection().sendWithAsyncReply(Messages::RemoteMediaEngineConfigurationFactoryProxy::CreateDecodingConfiguration(WTFMove(configuration)), [callback = WTFMove(callback)] (MediaCapabilitiesDecodingInfo&& info) mutable {
callback(WTFMove(info));
});
}
void RemoteMediaEngineConfigurationFactory::createEncodingConfiguration(MediaEncodingConfiguration&& configuration, MediaEngineConfigurationFactory::EncodingConfigurationCallback&& callback)
{
gpuProcessConnection().connection().sendWithAsyncReply(Messages::RemoteMediaEngineConfigurationFactoryProxy::CreateEncodingConfiguration(WTFMove(configuration)), [callback = WTFMove(callback)] (MediaCapabilitiesEncodingInfo&& info) mutable {
callback(WTFMove(info));
});
}
}
#endif // ENABLE(GPU_PROCESS)