Files
UnrealEngine/Engine/Source/Runtime/AudioCaptureImplementations/Windows/AudioCaputureWasapi/Private/AudioCaptureWasapiModule.cpp
2025-05-18 13:04:45 +08:00

49 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AudioCaptureDeviceInterface.h"
#include "AudioCaptureWasapi.h"
#include "Features/IModularFeatures.h"
#include "Modules/ModuleManager.h"
namespace Audio
{
class FAudioCaptureWasapiFactory : public IAudioCaptureFactory
{
public:
virtual TUniquePtr<IAudioCaptureStream> CreateNewAudioCaptureStream() override
{
return TUniquePtr<IAudioCaptureStream>(new FAudioCaptureWasapiStream());
}
};
class FAudioCaptureWasapiModule : public IModuleInterface
{
private:
/** Indicates if FWindowsPlatformMisc::CoInitialize() was successfull. */
bool bCoInitialized = false;
FAudioCaptureWasapiFactory AudioCaptureFactory;
public:
virtual void StartupModule() override
{
bCoInitialized = FWindowsPlatformMisc::CoInitialize();
IModularFeatures::Get().RegisterModularFeature(IAudioCaptureFactory::GetModularFeatureName(), &AudioCaptureFactory);
}
virtual void ShutdownModule() override
{
IModularFeatures::Get().UnregisterModularFeature(IAudioCaptureFactory::GetModularFeatureName(), &AudioCaptureFactory);
if (bCoInitialized)
{
FWindowsPlatformMisc::CoUninitialize();
}
}
};
}
IMPLEMENT_MODULE(Audio::FAudioCaptureWasapiModule, AudioCaptureWasapi)