mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-06-09 12:13:15 +00:00
[libSceAudio3d] Initialize Audio3d Library (#761)
* init libSceAudio3d * complete header and func params * clang * rm incl * incl stddef * revert module num * print params * correct logs * clang --------- Co-authored-by: microsoftv <6063922+microsoftv@users.noreply.github.com>
This commit is contained in:
parent
4502a5ddcc
commit
6b5cd04893
9 changed files with 529 additions and 0 deletions
134
src/core/libraries/audio3d/audio3d.h
Normal file
134
src/core/libraries/audio3d/audio3d.h
Normal file
|
@ -0,0 +1,134 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/types.h"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
}
|
||||
|
||||
namespace Libraries::Audio3d {
|
||||
|
||||
class Audio3d;
|
||||
|
||||
typedef int OrbisUserServiceUserId;
|
||||
typedef unsigned int OrbisAudio3dPortId;
|
||||
typedef unsigned int OrbisAudio3dObjectId;
|
||||
typedef unsigned int OrbisAudio3dAttributeId;
|
||||
|
||||
enum OrbisAudio3dFormat {
|
||||
ORBIS_AUDIO3D_FORMAT_S16 = 0, // s16
|
||||
ORBIS_AUDIO3D_FORMAT_FLOAT = 1 // f32
|
||||
};
|
||||
|
||||
enum OrbisAudio3dRate { ORBIS_AUDIO3D_RATE_48000 = 0 };
|
||||
|
||||
enum OrbisAudio3dBufferMode {
|
||||
ORBIS_AUDIO3D_BUFFER_NO_ADVANCE = 0,
|
||||
ORBIS_AUDIO3D_BUFFER_ADVANCE_NO_PUSH = 1,
|
||||
ORBIS_AUDIO3D_BUFFER_ADVANCE_AND_PUSH = 2
|
||||
};
|
||||
|
||||
enum OrbisAudio3dBlocking { ORBIS_AUDIO3D_BLOCKING_ASYNC = 0, ORBIS_AUDIO3D_BLOCKING_SYNC = 1 };
|
||||
|
||||
enum OrbisAudio3dPassthrough {
|
||||
ORBIS_AUDIO3D_PASSTHROUGH_NONE = 0,
|
||||
ORBIS_AUDIO3D_PASSTHROUGH_LEFT = 1,
|
||||
ORBIS_AUDIO3D_PASSTHROUGH_RIGHT = 2
|
||||
};
|
||||
|
||||
enum OrbisAudio3dOutputRoute {
|
||||
ORBIS_AUDIO3D_OUTPUT_BOTH = 0,
|
||||
ORBIS_AUDIO3D_OUTPUT_HMU_ONLY = 1,
|
||||
ORBIS_AUDIO3D_OUTPUT_TV_ONLY = 2
|
||||
};
|
||||
|
||||
enum OrbisAudio3dAmbisonics {
|
||||
ORBIS_AUDIO3D_AMBISONICS_NONE = ~0,
|
||||
ORBIS_AUDIO3D_AMBISONICS_W = 0,
|
||||
ORBIS_AUDIO3D_AMBISONICS_X = 1,
|
||||
ORBIS_AUDIO3D_AMBISONICS_Y = 2,
|
||||
ORBIS_AUDIO3D_AMBISONICS_Z = 3,
|
||||
ORBIS_AUDIO3D_AMBISONICS_R = 4,
|
||||
ORBIS_AUDIO3D_AMBISONICS_S = 5,
|
||||
ORBIS_AUDIO3D_AMBISONICS_T = 6,
|
||||
ORBIS_AUDIO3D_AMBISONICS_U = 7,
|
||||
ORBIS_AUDIO3D_AMBISONICS_V = 8,
|
||||
ORBIS_AUDIO3D_AMBISONICS_K = 9,
|
||||
ORBIS_AUDIO3D_AMBISONICS_L = 10,
|
||||
ORBIS_AUDIO3D_AMBISONICS_M = 11,
|
||||
ORBIS_AUDIO3D_AMBISONICS_N = 12,
|
||||
ORBIS_AUDIO3D_AMBISONICS_O = 13,
|
||||
ORBIS_AUDIO3D_AMBISONICS_P = 14,
|
||||
ORBIS_AUDIO3D_AMBISONICS_Q = 15
|
||||
};
|
||||
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributePcm = 0x00000001;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributePriority = 0x00000002;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributePosition = 0x00000003;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeSpread = 0x00000004;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeGain = 0x00000005;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributePassthrough = 0x00000006;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeResetState = 0x00000007;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeApplicationSpecific = 0x00000008;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeAmbisonics = 0x00000009;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeRestricted = 0x0000000A;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeOutputRoute = 0x0000000B;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeLateReverbLevel = 0x00010001;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeDownmixSpreadRadius = 0x00010002;
|
||||
static const OrbisAudio3dAttributeId s_sceAudio3dAttributeDownmixSpreadHeightAware = 0x00010003;
|
||||
|
||||
struct OrbisAudio3dSpeakerArray;
|
||||
using OrbisAudio3dSpeakerArrayHandle = OrbisAudio3dSpeakerArray*; // head
|
||||
|
||||
struct OrbisAudio3dOpenParameters {
|
||||
size_t szSizeThis;
|
||||
unsigned int uiGranularity;
|
||||
OrbisAudio3dRate eRate;
|
||||
unsigned int uiMaxObjects;
|
||||
unsigned int uiQueueDepth;
|
||||
OrbisAudio3dBufferMode eBufferMode;
|
||||
char padding[32];
|
||||
unsigned int uiNumBeds;
|
||||
};
|
||||
|
||||
struct OrbisAudio3dAttribute {
|
||||
OrbisAudio3dAttributeId uiAttributeId;
|
||||
char padding[32];
|
||||
const void* pValue;
|
||||
size_t szValue;
|
||||
};
|
||||
|
||||
struct OrbisAudio3dPosition {
|
||||
float fX;
|
||||
float fY;
|
||||
float fZ;
|
||||
};
|
||||
|
||||
struct OrbisAudio3dPcm {
|
||||
OrbisAudio3dFormat eFormat;
|
||||
const void* pSampleBuffer;
|
||||
unsigned int uiNumSamples;
|
||||
};
|
||||
|
||||
struct OrbisAudio3dSpeakerArrayParameters {
|
||||
OrbisAudio3dPosition* pSpeakerPosition;
|
||||
unsigned int uiNumSpeakers;
|
||||
bool bIs3d;
|
||||
void* pBuffer;
|
||||
size_t szSize;
|
||||
};
|
||||
|
||||
struct OrbisAudio3dApplicationSpecific {
|
||||
size_t szSizeThis;
|
||||
u8 cApplicationSpecific[32];
|
||||
};
|
||||
|
||||
void PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* sParameters);
|
||||
|
||||
void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym);
|
||||
} // namespace Libraries::Audio3d
|
Loading…
Add table
Add a link
Reference in a new issue