40 lines
998 B
C++
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
|
|
}
|
|
|
|
}
|
|
}
|