Files
UnrealEngine/Engine/Source/Runtime/AVEncoder/Private/AudioEncoder.cpp
2025-05-18 13:04:45 +08:00

40 lines
998 B
C++

// Copyright Epic Games, Inc. All Rights Reserved
#include "AudioEncoder.h"
#include "Misc/ScopeLock.h"
namespace AVEncoder
{
PRAGMA_DISABLE_DEPRECATION_WARNINGS
void FAudioEncoder::RegisterListener(IAudioEncoderListener& Listener)
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
FScopeLock lock{ &ListenersMutex };
check(Listeners.Find(&Listener) == INDEX_NONE);
Listeners.AddUnique(&Listener);
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
void FAudioEncoder::UnregisterListener(IAudioEncoderListener& Listener)
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
FScopeLock lock{ &ListenersMutex };
int32 Count = Listeners.Remove(&Listener);
check(Count == 1);
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
void FAudioEncoder::OnEncodedAudioFrame(const FMediaPacket& Packet)
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
FScopeLock lock{ &ListenersMutex };
for (auto&& L : Listeners)
{
PRAGMA_DISABLE_DEPRECATION_WARNINGS
L->OnEncodedAudioFrame(Packet);
PRAGMA_ENABLE_DEPRECATION_WARNINGS
}
}
}