mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 19:07:01 +02:00
240 lines
14 KiB
C++
240 lines
14 KiB
C++
#ifndef EMULATOR_INCLUDE_EMULATOR_AUDIO_H_
|
|
#define EMULATOR_INCLUDE_EMULATOR_AUDIO_H_
|
|
|
|
#include "common/abi.h"
|
|
#include "common/common.h"
|
|
namespace Libs::Audio {
|
|
|
|
void Initialize();
|
|
void Shutdown();
|
|
|
|
struct Lifecycle {
|
|
static constexpr const char* name = "Audio";
|
|
static constexpr auto initialize = Libs::Audio::Initialize;
|
|
static constexpr auto shutdown = Libs::Audio::Shutdown;
|
|
};
|
|
|
|
namespace AudioOut {
|
|
|
|
struct AudioOutOutputParam;
|
|
struct AudioOutPortState;
|
|
|
|
int KYTY_SYSV_ABI AudioOutInit();
|
|
int KYTY_SYSV_ABI AudioOutOpen(int user_id, int type, int index, uint32_t len, uint32_t freq,
|
|
uint32_t param);
|
|
int KYTY_SYSV_ABI AudioOutSetVolume(int handle, uint32_t flag, int* vol);
|
|
int KYTY_SYSV_ABI AudioOutOutputs(AudioOutOutputParam* param, uint32_t num);
|
|
int KYTY_SYSV_ABI AudioOutOutput(int handle, const void* ptr);
|
|
int KYTY_SYSV_ABI AudioOutClose(int handle);
|
|
int KYTY_SYSV_ABI AudioOutGetPortState(int handle, AudioOutPortState* state);
|
|
|
|
} // namespace AudioOut
|
|
|
|
namespace AudioOut2 {
|
|
|
|
struct AudioOut2ContextParam;
|
|
struct AudioOut2PortParam;
|
|
struct AudioOut2Attribute;
|
|
struct AudioOut2PortState;
|
|
struct AudioOut2SystemState;
|
|
struct AudioOut2Position;
|
|
struct AudioOut2SpeakerInfo;
|
|
struct AudioOut2SystemDebugStateParam;
|
|
struct AudioOut2MasteringParamsHeader;
|
|
struct AudioOut2MasteringStatesHeader;
|
|
|
|
using AudioOut2ContextHandle = uint64_t;
|
|
using AudioOut2PortHandle = uint64_t;
|
|
using AudioOut2UserHandle = uintptr_t;
|
|
using AudioOut2SpeakerArrayHandle = void*;
|
|
|
|
int KYTY_SYSV_ABI AudioOut2Initialize();
|
|
int KYTY_SYSV_ABI AudioOut2ContextQueryMemory(const AudioOut2ContextParam* params,
|
|
size_t* memory_size);
|
|
int KYTY_SYSV_ABI AudioOut2ContextResetParam(AudioOut2ContextParam* params);
|
|
int KYTY_SYSV_ABI AudioOut2ContextCreate(const AudioOut2ContextParam* params, void* buffer,
|
|
size_t buffer_size, AudioOut2ContextHandle* ctx);
|
|
int KYTY_SYSV_ABI AudioOut2ContextDestroy(AudioOut2ContextHandle ctx);
|
|
int KYTY_SYSV_ABI AudioOut2ContextSetAttributes(AudioOut2ContextHandle ctx,
|
|
const AudioOut2Attribute* attributes, uint32_t num);
|
|
int KYTY_SYSV_ABI AudioOut2ContextAdvance(AudioOut2ContextHandle ctx);
|
|
int KYTY_SYSV_ABI AudioOut2ContextPush(AudioOut2ContextHandle ctx, uint32_t blocking);
|
|
int KYTY_SYSV_ABI AudioOut2ContextGetQueueLevel(AudioOut2ContextHandle ctx, uint32_t* queue_level,
|
|
uint32_t* available_queues);
|
|
int KYTY_SYSV_ABI AudioOut2PortCreate(AudioOut2ContextHandle ctx, const AudioOut2PortParam* params,
|
|
AudioOut2PortHandle* port);
|
|
int KYTY_SYSV_ABI AudioOut2PortDestroy(AudioOut2PortHandle port);
|
|
int KYTY_SYSV_ABI AudioOut2PortSetAttributes(AudioOut2PortHandle port,
|
|
const AudioOut2Attribute* attributes, uint32_t num);
|
|
int KYTY_SYSV_ABI AudioOut2PortGetState(AudioOut2PortHandle port, AudioOut2PortState* state);
|
|
int KYTY_SYSV_ABI AudioOut2GetSystemState(AudioOut2SystemState* state);
|
|
int KYTY_SYSV_ABI AudioOut2UserCreate(uint32_t user_id, AudioOut2UserHandle* handle);
|
|
int KYTY_SYSV_ABI AudioOut2UserDestroy(AudioOut2UserHandle handle);
|
|
size_t KYTY_SYSV_ABI AudioOut2GetSpeakerArrayMemorySize(uint32_t num_speakers, uint8_t is_3d,
|
|
uint8_t is_ambisonics);
|
|
int KYTY_SYSV_ABI AudioOut2SpeakerArrayCreate(AudioOut2SpeakerArrayHandle* handle,
|
|
const void* vbap_params, const void* ambi_params);
|
|
int KYTY_SYSV_ABI AudioOut2SpeakerArrayDestroy(AudioOut2SpeakerArrayHandle handle);
|
|
int KYTY_SYSV_ABI AudioOut2GetSpeakerArrayCoefficients(
|
|
AudioOut2SpeakerArrayHandle handle, AudioOut2Position pos, float spread, float* coefficients,
|
|
uint32_t num_coefficients, uint8_t height_aware, float downmix_spread_radius);
|
|
int KYTY_SYSV_ABI AudioOut2GetSpeakerArrayAmbisonicsCoefficients(AudioOut2SpeakerArrayHandle handle,
|
|
uint32_t ambisonics_channel,
|
|
float* coefficients,
|
|
uint32_t num_coefficients);
|
|
int KYTY_SYSV_ABI AudioOut2GetSpeakerInfo(AudioOut2SpeakerInfo* info, uint32_t flags);
|
|
int KYTY_SYSV_ABI AudioOut2SetSystemDebugState(const AudioOut2SystemDebugStateParam* param);
|
|
int KYTY_SYSV_ABI AudioOut2Set3DLatency(uint32_t user_id, uint32_t output, uint32_t latency_us);
|
|
int KYTY_SYSV_ABI AudioOut2MasteringInit(uint32_t flags);
|
|
int KYTY_SYSV_ABI AudioOut2MasteringSetParam(const AudioOut2MasteringParamsHeader* param,
|
|
uint32_t output, uint32_t flags);
|
|
int KYTY_SYSV_ABI AudioOut2MasteringGetState(AudioOut2MasteringStatesHeader* state, uint32_t output,
|
|
AudioOut2UserHandle user);
|
|
int KYTY_SYSV_ABI AudioOut2MasteringTerm();
|
|
|
|
} // namespace AudioOut2
|
|
|
|
namespace AudioIn {
|
|
|
|
int KYTY_SYSV_ABI AudioInOpen(int user_id, int type, int index, uint32_t len,
|
|
uint32_t freq, uint32_t param);
|
|
int KYTY_SYSV_ABI AudioInHqOpen(int user_id, int type, int index, uint32_t len,
|
|
uint32_t freq, uint32_t param);
|
|
int KYTY_SYSV_ABI AudioInClose(int handle);
|
|
int KYTY_SYSV_ABI AudioInInput(int handle, void* dest);
|
|
int KYTY_SYSV_ABI AudioInGetSilentState(int handle);
|
|
|
|
} // namespace AudioIn
|
|
|
|
namespace VoiceQoS {
|
|
|
|
int KYTY_SYSV_ABI VoiceQoSInit(void* mem_block, uint32_t mem_size, int32_t app_type);
|
|
|
|
} // namespace VoiceQoS
|
|
|
|
namespace Ajm {
|
|
|
|
struct AjmBatchInfo;
|
|
struct AjmBatchError;
|
|
struct AjmBuffer;
|
|
|
|
struct AjmDecAt9ConfigDataInfo {
|
|
uint32_t channels;
|
|
uint32_t sample_rate;
|
|
uint32_t frame_samples_per_channel;
|
|
uint32_t superframe_samples_per_channel;
|
|
uint32_t superframe_size;
|
|
};
|
|
|
|
int KYTY_SYSV_ABI AjmInitialize(int64_t reserved, uint32_t* context);
|
|
int KYTY_SYSV_ABI AjmModuleRegister(uint32_t context, uint32_t codec, int64_t reserved);
|
|
int KYTY_SYSV_ABI AjmModuleUnregister(uint32_t context, uint32_t codec);
|
|
int KYTY_SYSV_ABI AjmFinalize(uint32_t context);
|
|
int KYTY_SYSV_ABI AjmInstanceCreate(uint32_t context, uint32_t codec, uint64_t flags,
|
|
uint32_t* instance);
|
|
int KYTY_SYSV_ABI AjmInstanceDestroy(uint32_t context, uint32_t instance);
|
|
int KYTY_SYSV_ABI AjmMemoryRegister(uint32_t context, void* ptr, size_t pages);
|
|
int KYTY_SYSV_ABI AjmMemoryUnregister(uint32_t context, void* ptr);
|
|
int KYTY_SYSV_ABI AjmBatchInitialize(void* buffer, size_t size, AjmBatchInfo* info);
|
|
int KYTY_SYSV_ABI AjmBatchStart(uint32_t context, const AjmBatchInfo* info, int priority,
|
|
AjmBatchError* error, uint32_t* batch);
|
|
int KYTY_SYSV_ABI AjmBatchWait(uint32_t context, uint32_t batch, uint32_t timeout,
|
|
AjmBatchError* error);
|
|
int KYTY_SYSV_ABI AjmBatchCancel(uint32_t context, uint32_t batch);
|
|
int KYTY_SYSV_ABI AjmBatchErrorDump(const AjmBatchInfo* info, AjmBatchError* error);
|
|
int KYTY_SYSV_ABI AjmBatchJobInitialize(AjmBatchInfo* info, uint32_t instance,
|
|
const void* codec_parameters, size_t codec_parameters_size,
|
|
void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobClearContext(AjmBatchInfo* info, uint32_t instance, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobDecode(AjmBatchInfo* info, uint32_t instance,
|
|
const void* bitstream_input, size_t bitstream_input_size,
|
|
void* pcm_output, size_t pcm_output_size, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobDecodeSingle(AjmBatchInfo* info, uint32_t instance,
|
|
const void* bitstream_input, size_t bitstream_input_size,
|
|
void* pcm_output, size_t pcm_output_size, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobDecodeSplit(AjmBatchInfo* info, uint32_t instance,
|
|
const AjmBuffer* input_buffers, size_t input_buffers_num,
|
|
const AjmBuffer* output_buffers, size_t output_buffers_num,
|
|
void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobEncode(AjmBatchInfo* info, uint32_t instance, const void* pcm_input,
|
|
size_t pcm_input_size, void* bitstream_output,
|
|
size_t bitstream_output_size, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobGetInfo(AjmBatchInfo* info, uint32_t instance, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobGetCodecInfo(AjmBatchInfo* info, uint32_t instance, void* result,
|
|
size_t result_size);
|
|
int KYTY_SYSV_ABI AjmBatchJobSetGaplessDecode(AjmBatchInfo* info, uint32_t instance,
|
|
const void* gapless_decode, int reset, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobGetGaplessDecode(AjmBatchInfo* info, uint32_t instance, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobSetResampleParameters(AjmBatchInfo* info, uint32_t instance,
|
|
float ratio, uint32_t flags, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobSetResampleParametersEx(AjmBatchInfo* info, uint32_t instance,
|
|
float ratio_start,
|
|
float ratio_change_per_sample, uint32_t flags,
|
|
void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobGetResampleInfo(AjmBatchInfo* info, uint32_t instance, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobGetStatistics(AjmBatchInfo* info, float interval, void* result);
|
|
int KYTY_SYSV_ABI AjmBatchJobControl(AjmBatchInfo* info, uint32_t instance, uint64_t flags,
|
|
const void* sideband_input, size_t sideband_input_size,
|
|
void* sideband_output, size_t sideband_output_size);
|
|
int KYTY_SYSV_ABI AjmBatchJobRun(AjmBatchInfo* info, uint32_t instance, uint64_t flags,
|
|
const void* data_input, size_t data_input_size, void* data_output,
|
|
size_t data_output_size, void* sideband_output,
|
|
size_t sideband_output_size);
|
|
int KYTY_SYSV_ABI AjmBatchJobRunSplit(AjmBatchInfo* info, uint32_t instance, uint64_t flags,
|
|
const AjmBuffer* input_buffers, size_t input_buffers_num,
|
|
const AjmBuffer* output_buffers, size_t output_buffers_num,
|
|
void* sideband_output, size_t sideband_output_size);
|
|
int KYTY_SYSV_ABI AjmDecAt9ParseConfigData(const void* config_data,
|
|
AjmDecAt9ConfigDataInfo* config_info);
|
|
const char* KYTY_SYSV_ABI AjmStrError(int error);
|
|
|
|
} // namespace Ajm
|
|
|
|
namespace AvPlayer {
|
|
|
|
struct AvPlayerInitData;
|
|
struct AvPlayerFrameInfoEx;
|
|
struct AvPlayerFrameInfo;
|
|
struct AvPlayerInternal;
|
|
|
|
using Bool = uint8_t;
|
|
|
|
AvPlayerInternal* KYTY_SYSV_ABI AvPlayerInit(AvPlayerInitData* init);
|
|
int KYTY_SYSV_ABI AvPlayerInitEx(const void* init_ex, AvPlayerInternal** handle);
|
|
int KYTY_SYSV_ABI AvPlayerPostInit(AvPlayerInternal* h, const void* post_init);
|
|
int KYTY_SYSV_ABI AvPlayerAddSource(AvPlayerInternal* h, const char* filename);
|
|
int KYTY_SYSV_ABI AvPlayerAddSourceEx(AvPlayerInternal* h, uint32_t uri_type,
|
|
const void* source_details);
|
|
int KYTY_SYSV_ABI AvPlayerStreamCount(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerGetStreamInfo(AvPlayerInternal* h, uint32_t stream_id, void* info);
|
|
int KYTY_SYSV_ABI AvPlayerGetStreamInfoEx(AvPlayerInternal* h, uint32_t stream_id, void* info);
|
|
int KYTY_SYSV_ABI AvPlayerEnableStream(AvPlayerInternal* h, uint32_t stream_id);
|
|
int KYTY_SYSV_ABI AvPlayerDisableStream(AvPlayerInternal* h, uint32_t stream_id);
|
|
int KYTY_SYSV_ABI AvPlayerChangeStream(AvPlayerInternal* h, uint32_t old_stream_id,
|
|
uint32_t new_stream_id);
|
|
int KYTY_SYSV_ABI AvPlayerStart(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerStartEx(AvPlayerInternal* h, const void* start_info_ex);
|
|
int KYTY_SYSV_ABI AvPlayerStop(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerPause(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerResume(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerSetLooping(AvPlayerInternal* h, Bool loop);
|
|
int KYTY_SYSV_ABI AvPlayerSetTrickSpeed(AvPlayerInternal* h, int32_t trick_speed);
|
|
int KYTY_SYSV_ABI AvPlayerSetAvSyncMode(AvPlayerInternal* h, uint32_t sync_mode);
|
|
int KYTY_SYSV_ABI AvPlayerSetAvailableBandwidth(AvPlayerInternal* h, uint32_t start_bandwidth,
|
|
uint32_t minimum_bandwidth,
|
|
uint32_t maximum_bandwidth);
|
|
Bool KYTY_SYSV_ABI AvPlayerGetVideoData(AvPlayerInternal* h, AvPlayerFrameInfo* video_info);
|
|
Bool KYTY_SYSV_ABI AvPlayerGetVideoDataEx(AvPlayerInternal* h, AvPlayerFrameInfoEx* video_info);
|
|
Bool KYTY_SYSV_ABI AvPlayerGetAudioData(AvPlayerInternal* h, AvPlayerFrameInfo* audio_info);
|
|
Bool KYTY_SYSV_ABI AvPlayerIsActive(AvPlayerInternal* h);
|
|
uint64_t KYTY_SYSV_ABI AvPlayerCurrentTime(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerJumpToTime(AvPlayerInternal* h, uint64_t time_ms);
|
|
int KYTY_SYSV_ABI AvPlayerClose(AvPlayerInternal* h);
|
|
int KYTY_SYSV_ABI AvPlayerSetLogCallback(void* callback, void* user_data);
|
|
|
|
} // namespace AvPlayer
|
|
|
|
} // namespace Libs::Audio
|
|
|
|
#endif /* EMULATOR_INCLUDE_EMULATOR_AUDIO_H_ */
|