Files
william belcher ea066a25d4 QOL: Deprecate AVEncoder (for removal) and its dependencies (to be moved to plugins)
#rb luke.bermingham
#jira UE-174651
[FYI]

[CL 32499131 by william belcher in 5.4 branch]
2024-03-26 02:13:50 -04:00

67 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Array.h"
#include "CoreMinimal.h"
#include "HAL/CriticalSection.h"
#include "HAL/Platform.h"
#include "MediaPacket.h"
#include "Misc/Timespan.h"
#include "SampleBuffer.h"
namespace AVEncoder
{
struct UE_DEPRECATED(5.4, "AVEncoder has been deprecated. Please use the AVCodecs plugin family instead.") FAudioFrame
{
FTimespan Timestamp;
FTimespan Duration;
Audio::TSampleBuffer<float> Data;
};
class UE_DEPRECATED(5.4, "AVEncoder has been deprecated. Please use the AVCodecs plugin family instead.") IAudioEncoderListener
{
public:
PRAGMA_DISABLE_DEPRECATION_WARNINGS
virtual void OnEncodedAudioFrame(const FMediaPacket& Packet) = 0;
PRAGMA_ENABLE_DEPRECATION_WARNINGS
};
class UE_DEPRECATED(5.4, "AVEncoder has been deprecated. Please use the AVCodecs plugin family instead.") FAudioEncoder
{
public:
virtual ~FAudioEncoder() {}
virtual const TCHAR* GetName() const = 0;
virtual const TCHAR* GetType() const = 0;
PRAGMA_DISABLE_DEPRECATION_WARNINGS
virtual bool Initialize(const FAudioConfig& Config) = 0;
PRAGMA_ENABLE_DEPRECATION_WARNINGS
/**
* Shutdown MUST be called before destruction
*/
virtual void Shutdown() = 0;
PRAGMA_DISABLE_DEPRECATION_WARNINGS
virtual void Encode(const FAudioFrame& Frame) = 0;
virtual FAudioConfig GetConfig() const = 0;
AVENCODER_API virtual void RegisterListener(IAudioEncoderListener& Listener);
AVENCODER_API virtual void UnregisterListener(IAudioEncoderListener& Listener);
PRAGMA_ENABLE_DEPRECATION_WARNINGS
protected:
PRAGMA_DISABLE_DEPRECATION_WARNINGS
AVENCODER_API void OnEncodedAudioFrame(const FMediaPacket& Packet);
PRAGMA_ENABLE_DEPRECATION_WARNINGS
private:
FCriticalSection ListenersMutex;
PRAGMA_DISABLE_DEPRECATION_WARNINGS
TArray<IAudioEncoderListener*> Listeners;
PRAGMA_ENABLE_DEPRECATION_WARNINGS
};
}