#pragma once // Error Codes enum { CELL_LIBMIXER_ERROR_NOT_INITIALIZED = 0x80310002, CELL_LIBMIXER_ERROR_INVALID_PARAMATER = 0x80310003, CELL_LIBMIXER_ERROR_NO_MEMORY = 0x80310005, CELL_LIBMIXER_ERROR_ALREADY_EXIST = 0x80310006, CELL_LIBMIXER_ERROR_FULL = 0x80310007, CELL_LIBMIXER_ERROR_NOT_EXIST = 0x80310008, CELL_LIBMIXER_ERROR_TYPE_MISMATCH = 0x80310009, CELL_LIBMIXER_ERROR_NOT_FOUND = 0x8031000a, }; enum { CELL_SURBUS_LEFT = 0, CELL_SURBUS_RIGHT = 1, CELL_SURBUS_CENTER = 2, CELL_SURBUS_LFE = 3, CELL_SURBUS_LEFT_SUR = 4, CELL_SURBUS_RIGHT_SUR = 5, CELL_SURBUS_LEFT_EXT = 6, CELL_SURBUS_RIGHT_EXT = 7, CELL_SURBUS_REVERB_LEFT = 8, CELL_SURBUS_REVERB_RIGHT = 9, CELL_SURBUS_REVERB_LEFT_SUR = 10, CELL_SURBUS_REVERB_RIGHT_SUR = 11, }; enum { CELL_SURMIXER_PARAM_TOTALLEVEL_LINEAR = 8, CELL_SURMIXER_PARAM_REVERBLEVEL_LINEAR = 9, CELL_SURMIXER_PARAM_TOTALMUTE = 12, CELL_SURMIXER_PARAM_TOTALLEVEL = 40, // in dB CELL_SURMIXER_PARAM_REVERBLEVEL = 41, // in dB }; static const float CELL_SURMIXER_CONT_MUTEON = 1.0; static const float CELL_SURMIXER_CONT_MUTEOFF = 0.0; enum { CELL_SURMIXER_CONT_DBSWITCHON = 1, CELL_SURMIXER_CONT_DBSWITCHOFF = 0, CELL_SURMIXER_CONT_PAUSE_OFF = 0, CELL_SURMIXER_CONT_PAUSE_ON = 1, CELL_SURMIXER_CONT_PAUSE_ON_IMMEDIATE = 2, }; enum { CELL_SURMIXER_CHSTRIP_TYPE1A = 1, CELL_SURMIXER_CHSTRIP_TYPE2A = 2, CELL_SURMIXER_CHSTRIP_TYPE6A = 3, CELL_SURMIXER_CHSTRIP_TYPE8A = 4, CELL_SURMIXER_CH1PARAM_LEVEL = 0, CELL_SURMIXER_CH1PARAM_EXPRESSIONLEVEL = 1, CELL_SURMIXER_CH1PARAM_CENTERLEVEL = 2, CELL_SURMIXER_CH1PARAM_REVERBSENDLEVEL = 3, CELL_SURMIXER_CH1PARAM_MUTE = 4, CELL_SURMIXER_CH1PARAM_REVSENDPOSITION = 5, CELL_SURMIXER_CH1PARAM_POSITION = 6, CELL_SURMIXER_CH2PARAM_LEVEL = 0, CELL_SURMIXER_CH2PARAM_EXPRESSIONLEVEL = 1, CELL_SURMIXER_CH2PARAM_CENTERLEVEL = 2, CELL_SURMIXER_CH2PARAM_REVERBSENDLEVEL = 3, CELL_SURMIXER_CH2PARAM_MUTE = 4, CELL_SURMIXER_CH2PARAM_REVSENDPOSITION = 5, CELL_SURMIXER_CH2PARAM_POSITION = 6, CELL_SURMIXER_CH6PARAM_LEVEL = 0, CELL_SURMIXER_CH6PARAM_EXPRESSIONLEVEL = 1, CELL_SURMIXER_CH6PARAM_REVERBSENDLEVEL = 2, CELL_SURMIXER_CH6PARAM_CENTER_REVERBSENDLEVEL = 3, CELL_SURMIXER_CH6PARAM_MUTE = 4, CELL_SURMIXER_CH8PARAM_LEVEL = 0, CELL_SURMIXER_CH8PARAM_EXPRESSIONLEVEL = 1, CELL_SURMIXER_CH8PARAM_REVERBSENDLEVEL = 2, CELL_SURMIXER_CH8PARAM_CENTER_REVERBSENDLEVEL = 3, CELL_SURMIXER_CH8PARAM_MUTE = 4, CELL_SURMIXER_CH1CONT_MUTE_OFF = 0, CELL_SURMIXER_CH1CONT_MUTE_ON = 1, CELL_SURMIXER_CH2CONT_MUTE_OFF = 0, CELL_SURMIXER_CH2CONT_MUTE_ON = 1, CELL_SURMIXER_CH6CONT_MUTE_OFF = 0, CELL_SURMIXER_CH6CONT_MUTE_ON = 1, CELL_SURMIXER_CH8CONT_MUTE_OFF = 0, CELL_SURMIXER_CH8CONT_MUTE_ON = 1, }; enum { CELL_SSPLAYER_ONESHOT = 0, CELL_SSPLAYER_ONESHOT_CONT = 2, CELL_SSPLAYER_LOOP_ON = 16, CELL_SSPLAYER_STATE_ERROR = 0xffffffff, CELL_SSPLAYER_STATE_NOTREADY = 0x88888888, CELL_SSPLAYER_STATE_OFF = 0x00, CELL_SSPLAYER_STATE_PAUSE = 0x01, CELL_SSPLAYER_STATE_CLOSING = 0x08, CELL_SSPLAYER_STATE_ON = 0x20, }; using CellSurMixerNotifyCallbackFunction = s32(vm::ptr arg, u32 counter, u32 samples); struct CellSSPlayerConfig { be_t channels; be_t outputMode; }; struct CellSSPlayerWaveParam { be_t addr; be_t format; be_t samples; be_t loopStartOffset; be_t startOffset; }; struct CellSSPlayerCommonParam { be_t loopMode; be_t attackMode; }; struct CellSurMixerPosition { be_t x; be_t y; be_t z; }; struct CellSSPlayerRuntimeInfo { be_t level; be_t speed; CellSurMixerPosition position; }; struct CellSurMixerConfig { be_t priority; be_t chStrips1; be_t chStrips2; be_t chStrips6; be_t chStrips8; }; struct CellSurMixerChStripParam { be_t param; be_t attribute_addr; be_t dBSwitch; be_t floatVal; be_t intVal; };