You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira UE-146734 #rb Aaron.McLeran, Phil.Popp #preflight 623a53eb88538cd45eef0f33 [CL 19473764 by Maxwell Hayes in ue5-main branch]
61 lines
2.2 KiB
C++
61 lines
2.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "IAudioLinkFactory.h"
|
|
#include "Algo/Transform.h"
|
|
|
|
// Concrete Buffer Listeners.
|
|
#include "BufferedSubmixListener.h"
|
|
#include "BufferedSourceListener.h"
|
|
|
|
IAudioLinkFactory::IAudioLinkFactory()
|
|
{
|
|
IModularFeatures::Get().RegisterModularFeature(GetModularFeatureName(), this);
|
|
}
|
|
|
|
IAudioLinkFactory::~IAudioLinkFactory()
|
|
{
|
|
IModularFeatures::Get().UnregisterModularFeature(GetModularFeatureName(), this);
|
|
}
|
|
|
|
FSharedBufferedOutputPtr IAudioLinkFactory::CreateSourceBufferListener(const FSourceBufferListenerCreateParams& InSourceCreateParams)
|
|
{
|
|
check(IsInGameThread());
|
|
auto SourceBufferListenerSP = MakeShared<FBufferedSourceListener, ESPMode::ThreadSafe>(InSourceCreateParams.SizeOfBufferInFrames);
|
|
InSourceCreateParams.AudioComponent->SetSourceBufferListener(SourceBufferListenerSP, InSourceCreateParams.bShouldZeroBuffer);
|
|
return SourceBufferListenerSP;
|
|
}
|
|
|
|
FSharedBufferedOutputPtr IAudioLinkFactory::CreateSubmixBufferListener(const FSubmixBufferListenerCreateParams& InSubmixCreateParams)
|
|
{
|
|
return MakeShared<FBufferedSubmixListener, ESPMode::ThreadSafe>(InSubmixCreateParams.SizeOfBufferInFrames, InSubmixCreateParams.bShouldZeroBuffer);
|
|
}
|
|
|
|
FName IAudioLinkFactory::GetModularFeatureName()
|
|
{
|
|
static FName FeatureName = FName(TEXT("AudioLink Factory"));
|
|
return FeatureName;
|
|
}
|
|
|
|
TArray<IAudioLinkFactory*> IAudioLinkFactory::GetAllRegisteredFactories()
|
|
{
|
|
IModularFeatures::FScopedLockModularFeatureList ScopedLockModularFeatureList;
|
|
return IModularFeatures::Get().GetModularFeatureImplementations<IAudioLinkFactory>(GetModularFeatureName());
|
|
}
|
|
|
|
TArray<FName> IAudioLinkFactory::GetAllRegisteredFactoryNames()
|
|
{
|
|
TArray<FName> Names;
|
|
Algo::Transform(GetAllRegisteredFactories(), Names, [](IAudioLinkFactory* Factory) { return Factory->GetFactoryName(); });
|
|
return Names;
|
|
}
|
|
|
|
IAudioLinkFactory* IAudioLinkFactory::FindFactory(const FName InFactoryImplName)
|
|
{
|
|
TArray<IAudioLinkFactory*> Factories = GetAllRegisteredFactories();
|
|
if (IAudioLinkFactory** Found = Factories.FindByPredicate([InFactoryImplName](IAudioLinkFactory* Factory) { return Factory->GetFactoryName() == InFactoryImplName; }))
|
|
{
|
|
return *Found;
|
|
}
|
|
return nullptr;
|
|
}
|