UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerPlatformCoreAudio.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "AudioMixer.h"
6
7#include <AudioToolbox/AudioToolbox.h>
8#include <AudioUnit/AudioUnit.h>
9
10// Any platform defines
11namespace Audio
12{
13
15 {
16
17 public:
18
21
22 //~ Begin IAudioMixerPlatformInterface
23 virtual FString GetPlatformApi() const override { return TEXT("CoreAudio"); }
24 virtual bool InitializeHardware() override;
25 virtual bool CheckAudioDeviceChange() override;
26 virtual bool TeardownHardware() override;
27 virtual bool IsInitialized() const override;
28 virtual bool GetNumOutputDevices(uint32& OutNumOutputDevices) override;
29 virtual bool GetOutputDeviceInfo(const uint32 InDeviceIndex, FAudioPlatformDeviceInfo& OutInfo) override;
30 virtual bool GetDefaultOutputDeviceIndex(uint32& OutDefaultDeviceIndex) const override;
31 virtual bool OpenAudioStream(const FAudioMixerOpenStreamParams& Params) override;
32 virtual bool CloseAudioStream() override;
33 virtual bool StartAudioStream() override;
34 virtual bool StopAudioStream() override;
35 virtual bool MoveAudioStreamToNewAudioDevice(const FString& InNewDeviceId) override;
36 virtual FAudioPlatformDeviceInfo GetPlatformDeviceInfo() const override;
37 virtual void SubmitBuffer(const uint8* Buffer) override;
38 virtual FString GetDefaultDeviceName() override;
39 virtual FAudioPlatformSettings GetPlatformSettings() const override;
40 virtual int32 GetNumFrames(const int32 InNumReqestedFrames) override;
41 virtual void ResumeContext() override;
42 virtual void SuspendContext() override;
43 //~ End IAudioMixerPlatformInterface
44
45 private:
46 AudioStreamBasicDescription OutputFormat;
47
48 bool bSuspended;
49
51 bool bInitialized;
52
54 bool bInCallback;
55
56 AUGraph AudioUnitGraph;
57 AUNode OutputNode;
58 AudioUnit OutputUnit;
59 uint8* SubmittedBufferPtr;
60 int32 SubmittedBytes = 0;
61
62 int32 RemainingBytesInCurrentSubmittedBuffer;
63 int32 BytesPerSubmittedBuffer;
64
65 double GraphSampleRate;
66
67 bool PerformCallback(AudioBufferList* OutputBufferData);
68 void HandleError(const TCHAR* InLogOutput, bool bTeardown = true);
69 static OSStatus AudioRenderCallback(void* RefCon, AudioUnitRenderActionFlags* ActionFlags,
70 const AudioTimeStamp* TimeStamp, UInt32 BusNumber,
71 UInt32 NumFrames, AudioBufferList* IOData);
72
73 };
74
75}
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AudioMixerPlatformCoreAudio.h:15
virtual FString GetDefaultDeviceName() override
Definition AudioMixerPlatformCoreAudio.cpp:360
virtual bool OpenAudioStream(const FAudioMixerOpenStreamParams &Params) override
Definition AudioMixerPlatformCoreAudio.cpp:252
virtual void SuspendContext() override
Definition AudioMixerPlatformCoreAudio.cpp:386
virtual FAudioPlatformSettings GetPlatformSettings() const override
Definition AudioMixerPlatformCoreAudio.cpp:365
virtual bool GetOutputDeviceInfo(const uint32 InDeviceIndex, FAudioPlatformDeviceInfo &OutInfo) override
Definition AudioMixerPlatformCoreAudio.cpp:239
virtual bool StartAudioStream() override
Definition AudioMixerPlatformCoreAudio.cpp:289
virtual bool GetNumOutputDevices(uint32 &OutNumOutputDevices) override
Definition AudioMixerPlatformCoreAudio.cpp:232
virtual bool InitializeHardware() override
Definition AudioMixerPlatformCoreAudio.cpp:55
virtual bool IsInitialized() const override
Definition AudioMixerPlatformCoreAudio.cpp:227
virtual bool CheckAudioDeviceChange() override
Definition AudioMixerPlatformCoreAudio.cpp:200
virtual bool CloseAudioStream() override
Definition AudioMixerPlatformCoreAudio.cpp:277
virtual bool StopAudioStream() override
Definition AudioMixerPlatformCoreAudio.cpp:309
virtual void SubmitBuffer(const uint8 *Buffer) override
Definition AudioMixerPlatformCoreAudio.cpp:353
FMixerPlatformCoreAudio()
Definition AudioMixerPlatformCoreAudio.cpp:31
virtual void ResumeContext() override
Definition AudioMixerPlatformCoreAudio.cpp:375
virtual FAudioPlatformDeviceInfo GetPlatformDeviceInfo() const override
Definition AudioMixerPlatformCoreAudio.cpp:338
virtual bool GetDefaultOutputDeviceIndex(uint32 &OutDefaultDeviceIndex) const override
Definition AudioMixerPlatformCoreAudio.cpp:245
virtual FString GetPlatformApi() const override
Definition AudioMixerPlatformCoreAudio.h:23
~FMixerPlatformCoreAudio()
Definition AudioMixerPlatformCoreAudio.cpp:41
virtual bool TeardownHardware() override
Definition AudioMixerPlatformCoreAudio.cpp:206
virtual int32 GetNumFrames(const int32 InNumReqestedFrames) override
Definition AudioMixerPlatformCoreAudio.cpp:49
Definition AudioMixer.h:479
virtual bool MoveAudioStreamToNewAudioDevice()
Definition AudioMixer.h:543
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
Definition AudioMixer.h:250
Definition AudioMixer.h:152
Definition AudioMixerTypes.h:63