You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira UE-123975 #rb phil.popp #preflight 61b196c7e0430ca438a95533 #ROBOMERGE-AUTHOR: jimmy.smith #ROBOMERGE-SOURCE: CL 18416580 in //UE5/Release-5.0/... via CL 18416585 #ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271) [CL 18416586 by jimmy smith in ue5-release-engine-test branch]
60 lines
2.1 KiB
C++
60 lines
2.1 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()
|
|
{
|
|
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;
|
|
}
|