// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" namespace AVEncoder { class FAudioEncoder; class AVENCODER_API FAudioEncoderFactory { public: virtual ~FAudioEncoderFactory() {} virtual const TCHAR* GetName() const = 0; virtual TArray GetSupportedCodecs() const = 0; virtual TUniquePtr CreateEncoder(const FString& Codec) = 0; static void RegisterFactory(FAudioEncoderFactory& Factory); static void UnregisterFactory(FAudioEncoderFactory& Factory); static FAudioEncoderFactory* FindFactory(const FString& Codec); static const TArray GetAllFactories(); private: static TArray Factories; }; }