2021-04-29 19:32:06 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2022-07-20 11:31:36 -04:00
|
|
|
#include "Containers/Array.h"
|
|
|
|
|
#include "Containers/UnrealString.h"
|
2021-04-29 19:32:06 -04:00
|
|
|
#include "CoreMinimal.h"
|
2022-07-20 11:31:36 -04:00
|
|
|
#include "HAL/Platform.h"
|
|
|
|
|
#include "Templates/UniquePtr.h"
|
2021-04-29 19:32:06 -04:00
|
|
|
|
|
|
|
|
namespace AVEncoder
|
|
|
|
|
{
|
|
|
|
|
class FAudioEncoder;
|
|
|
|
|
|
2023-06-17 18:14:12 -04:00
|
|
|
class FAudioEncoderFactory
|
2021-04-29 19:32:06 -04:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual ~FAudioEncoderFactory() {}
|
|
|
|
|
virtual const TCHAR* GetName() const = 0;
|
|
|
|
|
virtual TArray<FString> GetSupportedCodecs() const = 0;
|
|
|
|
|
virtual TUniquePtr<FAudioEncoder> CreateEncoder(const FString& Codec) = 0;
|
|
|
|
|
|
2023-06-17 18:14:12 -04:00
|
|
|
static AVENCODER_API void RegisterFactory(FAudioEncoderFactory& Factory);
|
|
|
|
|
static AVENCODER_API void UnregisterFactory(FAudioEncoderFactory& Factory);
|
|
|
|
|
static AVENCODER_API FAudioEncoderFactory* FindFactory(const FString& Codec);
|
|
|
|
|
static AVENCODER_API const TArray<FAudioEncoderFactory*> GetAllFactories();
|
2021-04-29 19:32:06 -04:00
|
|
|
|
|
|
|
|
private:
|
2023-06-17 18:14:12 -04:00
|
|
|
static AVENCODER_API TArray<FAudioEncoderFactory*> Factories;
|
2021-04-29 19:32:06 -04:00
|
|
|
};
|
|
|
|
|
}
|