// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "CoreMinimal.h" #include "HAL/Platform.h" #include "IAudioAnalyzerInterface.h" #include "Templates/UniquePtr.h" #include "UObject/NameTypes.h" namespace Audio { IAnalyzerFactory* GetAnalyzerFactory(FName InFactoryName); /** FAnalyzer * * FAnalyzer provides a simplified interface for performing analysis on audio buffers from the same AudioAnalyzer. */ class FAnalyzerFacade { public: /** * Create an FAnalyzerBatch with the analyzer settings and factory name. */ AUDIOANALYZER_API FAnalyzerFacade(TUniquePtr InSettings, IAnalyzerFactory* InFactory); /** * Analyze the audio buffer. */ AUDIOANALYZER_API TUniquePtr AnalyzeAudioBuffer(const TArray& InAudioBuffer, int32 InNumChannels, float InSampleRate, TSharedPtr InControls); private: TUniquePtr Settings; TUniquePtr Worker; IAnalyzerFactory* Factory; FName FactoryName; }; }