UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerPlatformAndroid.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#include "DSP/Dsp.h"
7#include <SLES/OpenSLES.h>
8#include "SLES/OpenSLES_Android.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("OpenSLES"); }
24 virtual bool InitializeHardware() override;
25 virtual bool TeardownHardware() override;
26 virtual bool IsInitialized() const override;
27 virtual bool GetNumOutputDevices(uint32& OutNumOutputDevices) override;
28 virtual bool GetOutputDeviceInfo(const uint32 InDeviceIndex, FAudioPlatformDeviceInfo& OutInfo) override;
29 virtual bool GetDefaultOutputDeviceIndex(uint32& OutDefaultDeviceIndex) const override;
30 virtual bool OpenAudioStream(const FAudioMixerOpenStreamParams& Params) override;
31 virtual bool CloseAudioStream() override;
32 virtual bool StartAudioStream() override;
33 virtual bool StopAudioStream() override;
34 virtual FAudioPlatformDeviceInfo GetPlatformDeviceInfo() const override;
35 virtual void SubmitBuffer(const uint8* Buffer) override;
36 virtual FString GetDefaultDeviceName() override;
37 virtual FAudioPlatformSettings GetPlatformSettings() const override;
38 virtual void SuspendContext() override;
39 virtual void ResumeContext() override;
40
41 //~ End IAudioMixerPlatformInterface
42
43 private:
44 const TCHAR* GetErrorString(SLresult Result);
45
46 int32 GetDeviceBufferSize(int32 RenderCallbackSize) const;
47
48 SLObjectItf SL_EngineObject;
49 SLEngineItf SL_EngineEngine;
50 SLObjectItf SL_OutputMixObject;
51 SLObjectItf SL_PlayerObject;
52 SLPlayItf SL_PlayerPlayInterface;
53 SLAndroidSimpleBufferQueueItf SL_PlayerBufferQueue;
54
55 FCriticalSection SuspendedCriticalSection;
56
57 bool bSuspended;
58 bool bInitialized;
59 bool bInCallback;
60
61 // This buffer is pushed to and popped from in the SubmitBuffer callback.
62 // This is required for devices that require frame counts per callback that are not powers of two.
63 Audio::TCircularAudioBuffer<int16> CircularOutputBuffer;
64
65 // This is the buffer we pop CircularOutputBuffer into in SubmitBuffer.
66 TArray<int16> DeviceBuffer;
67
68 int32 NumSamplesPerRenderCallback;
69 int32 NumSamplesPerDeviceCallback;
70
71 static void OpenSLBufferQueueCallback( SLAndroidSimpleBufferQueueItf InQueueInterface, void* pContext );
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AudioMixerPlatformAndroid.h:15
virtual void SubmitBuffer(const uint8 *Buffer) override
Definition AudioMixerPlatformAndroid.cpp:401
virtual bool OpenAudioStream(const FAudioMixerOpenStreamParams &Params) override
Definition AudioMixerPlatformAndroid.cpp:213
virtual bool GetDefaultOutputDeviceIndex(uint32 &OutDefaultDeviceIndex) const override
Definition AudioMixerPlatformAndroid.cpp:207
virtual void SuspendContext() override
Definition AudioMixerPlatformAndroid.cpp:369
virtual bool StopAudioStream() override
Definition AudioMixerPlatformAndroid.cpp:328
virtual FString GetPlatformApi() const override
Definition AudioMixerPlatformAndroid.h:23
virtual bool CloseAudioStream() override
Definition AudioMixerPlatformAndroid.cpp:297
FMixerPlatformAndroid()
Definition AudioMixerPlatformAndroid.cpp:54
virtual bool StartAudioStream() override
Definition AudioMixerPlatformAndroid.cpp:317
virtual bool InitializeHardware() override
Definition AudioMixerPlatformAndroid.cpp:115
virtual void ResumeContext() override
Definition AudioMixerPlatformAndroid.cpp:385
virtual FString GetDefaultDeviceName() override
Definition AudioMixerPlatformAndroid.cpp:419
virtual bool TeardownHardware() override
Definition AudioMixerPlatformAndroid.cpp:150
virtual bool IsInitialized() const override
Definition AudioMixerPlatformAndroid.cpp:178
~FMixerPlatformAndroid()
Definition AudioMixerPlatformAndroid.cpp:63
virtual bool GetOutputDeviceInfo(const uint32 InDeviceIndex, FAudioPlatformDeviceInfo &OutInfo) override
Definition AudioMixerPlatformAndroid.cpp:189
virtual bool GetNumOutputDevices(uint32 &OutNumOutputDevices) override
Definition AudioMixerPlatformAndroid.cpp:183
virtual FAudioPlatformDeviceInfo GetPlatformDeviceInfo() const override
Definition AudioMixerPlatformAndroid.cpp:352
virtual FAudioPlatformSettings GetPlatformSettings() const override
Definition AudioMixerPlatformAndroid.cpp:357
Definition AudioMixer.h:479
Definition Dsp.h:834
Definition Array.h:670
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
Definition AudioMixer.h:250
Definition AudioMixer.h:152
Definition AudioMixerTypes.h:63