Files
UnrealEngine/Engine/Source/Runtime/AudioCaptureImplementations/AudioCaptureRtAudio/Private/AudioCaptureRtAudio.h
2025-05-18 13:04:45 +08:00

52 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "AudioCaptureCore.h"
#if PLATFORM_MICROSOFT
#include "Windows/WindowsHWrapper.h"
#endif
#ifndef WITH_RTAUDIO
#define WITH_RTAUDIO 0
#endif
#if WITH_RTAUDIO
THIRD_PARTY_INCLUDES_START
#include "RtAudio.h"
THIRD_PARTY_INCLUDES_END
#endif
namespace Audio
{
class FAudioCaptureRtAudioStream : public IAudioCaptureStream
{
public:
FAudioCaptureRtAudioStream();
virtual bool GetCaptureDeviceInfo(FCaptureDeviceInfo& OutInfo, int32 DeviceIndex) override;
virtual bool OpenAudioCaptureStream(const FAudioCaptureDeviceParams& InParams, FOnAudioCaptureFunction InOnCapture, uint32 NumFramesDesired) override;
virtual bool CloseStream() override;
virtual bool StartStream() override;
virtual bool StopStream() override;
virtual bool AbortStream() override;
virtual bool GetStreamTime(double& OutStreamTime) override;
virtual int32 GetSampleRate() const override { return SampleRate; }
virtual bool IsStreamOpen() const override;
virtual bool IsCapturing() const override;
virtual void OnAudioCapture(void* InBuffer, uint32 InBufferFrames, double StreamTime, bool bOverflow) override;
virtual bool GetInputDevicesAvailable(TArray<FCaptureDeviceInfo>& OutDevices) override;
private:
FOnAudioCaptureFunction OnCapture;
int32 NumChannels;
int32 SampleRate;
uint32 GetDefaultInputDevice();
#if WITH_RTAUDIO
RtAudio CaptureDevice;
#endif
};
}