1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: snd_Types.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 35006 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_SND_TYPES_H_ 17 #define NN_SND_TYPES_H_ 18 19 #include <nn/snd/CTR/Common/snd_Bcwav.h> 20 21 /* Please see man pages for details 22 23 */ 24 25 #ifdef __cplusplus 26 #include <nn/os.h> 27 namespace nn { namespace snd { namespace CTR { 28 29 /* Please see man pages for details 30 31 */ 32 typedef struct 33 { 34 s16 n0; // 35 s16 d1; // 36 } MonoFilterCoefficients; 37 38 /* Please see man pages for details 39 40 */ 41 typedef struct 42 { 43 s16 n0; // 44 s16 n1; // 45 s16 n2; // 46 s16 d1; // 47 s16 d2; // 48 } BiquadFilterCoefficients; 49 50 /* Please see man pages for details 51 52 */ 53 typedef enum 54 { 55 CHANNEL_INDEX_FRONT_LEFT = 0, // 56 CHANNEL_INDEX_FRONT_RIGHT = 1, // 57 CHANNEL_INDEX_REAR_LEFT = 2, // 58 CHANNEL_INDEX_REAR_RIGHT = 3, // 59 CHANNEL_INDEX_NUM = 4 // 60 } 61 ChannelIndex; 62 63 /* Please see man pages for details 64 65 */ 66 typedef enum 67 { 68 OUTPUT_MODE_MONO = 0, // 69 OUTPUT_MODE_STEREO = 1, // 70 OUTPUT_MODE_3DSURROUND = 2 // 71 } OutputMode; 72 73 /* Please see man pages for details 74 75 */ 76 typedef enum 77 { 78 CLIPPING_MODE_NORMAL = 0, // 79 CLIPPING_MODE_SOFT = 1 // 80 } ClippingMode; 81 82 /* Please see man pages for details 83 84 */ 85 typedef enum 86 { 87 SURROUND_SPEAKER_POSITION_SQUARE = 0, // 88 SURROUND_SPEAKER_POSITION_WIDE = 1, // 89 SURROUND_SPEAKER_POSITION_NUM 90 } SurroundSpeakerPosition; 91 92 /* Please see man pages for details 93 94 */ 95 enum InterpolationType 96 { 97 INTERPOLATION_TYPE_POLYPHASE, // 98 INTERPOLATION_TYPE_LINEAR, // 99 INTERPOLATION_TYPE_NONE // 100 }; 101 102 /* Please see man pages for details 103 104 */ 105 typedef enum 106 { 107 FILTER_TYPE_NONE = 0, // 108 FILTER_TYPE_MONOPOLE = 1, // 109 FILTER_TYPE_BIQUAD = 2, // 110 FILTER_TYPE_BOTH = 3 // 111 } 112 FilterType; 113 114 /* Please see man pages for details 115 116 */ 117 typedef enum 118 { 119 AUX_BUS_NULL = -1, 120 121 AUX_BUS_A = 0, // 122 AUX_BUS_B = 1, // 123 AUX_BUS_NUM = 2 // 124 } 125 AuxBusId; 126 127 /* Please see man pages for details 128 129 */ 130 struct MixParam 131 { 132 f32 mainBus[CHANNEL_INDEX_NUM]; // 133 f32 auxBusA[CHANNEL_INDEX_NUM]; // 134 f32 auxBusB[CHANNEL_INDEX_NUM]; // 135 136 /* Please see man pages for details 137 138 */ MixParamMixParam139 MixParam() 140 { 141 for (int i = 0; i < CHANNEL_INDEX_NUM; i++) 142 { 143 mainBus[i] = auxBusA[i] = auxBusB[i] = 0.0f; 144 } 145 } 146 }; // MixParam 147 148 /* Please see man pages for details 149 150 */ 151 struct WaveBuffer 152 { 153 /* Please see man pages for details 154 155 */ 156 enum Status 157 { 158 STATUS_FREE, // 159 STATUS_WAIT, // 160 STATUS_PLAY, // 161 STATUS_DONE // 162 }; 163 164 // For user 165 const void * bufferAddress; // 166 s32 sampleLength; // 167 168 const AdpcmContext * pAdpcmContext; // 169 170 uptr userParam; // 171 172 bool loopFlag; // 173 util::SizedEnum1<Status> status; // 174 u16 bufferId; // 175 176 struct WaveBuffer * next; // 177 }; // WaveBuffer 178 179 /* Please see man pages for details 180 181 */ 182 enum SampleFormat 183 { 184 SAMPLE_FORMAT_PCM8 = Bcwav::ENCODING_PCM8, // 185 SAMPLE_FORMAT_PCM16 = Bcwav::ENCODING_PCM16, // 186 SAMPLE_FORMAT_ADPCM = Bcwav::ENCODING_DSP_ADPCM // 187 }; 188 189 static const s32 VOICE_PRIORITY_NODROP = 0x7fff; // 190 191 /* Please see man pages for details 192 193 */ 194 typedef struct 195 { 196 s32* frontLeft; // 197 s32* frontRight; // 198 s32* rearLeft; // 199 s32* rearRight; // 200 } 201 AuxBusData; 202 203 /* Please see man pages for details 204 205 206 207 208 209 */ 210 typedef void(*AuxCallback)( AuxBusData* data, s32 sampleLength, uptr userData ); 211 212 /* Please see man pages for details 213 214 */ 215 struct ThreadParameter 216 { 217 uptr stackBuffer; // 218 uptr stackSize; // 219 size_t priority; // 220 }; 221 222 }}} // namespace nn::snd::CTR 223 224 #endif // __cplusplus 225 226 // C declarations follow 227 228 typedef struct 229 { 230 s16 n0; // 231 s16 d1; // 232 } nnsndMonoFilterCoefficients; 233 234 /* Please see man pages for details 235 236 */ 237 typedef struct 238 { 239 s16 n0; // 240 s16 n1; // 241 s16 n2; // 242 s16 d1; // 243 s16 d2; // 244 } nnsndBiquadFilterCoefficients; 245 246 typedef enum 247 { 248 NN_SND_FILTER_TYPE_NONE = 0, // 249 NN_SND_FILTER_TYPE_MONOPOLE = 1, // 250 NN_SND_FILTER_TYPE_BIQUAD = 2, // 251 NN_SND_FILTER_TYPE_BOTH = 3 // 252 } nnsndFilterType; 253 254 typedef enum 255 { 256 NN_SND_AUX_BUS_A = 0, // 257 NN_SND_AUX_BUS_B = 1, // 258 NN_SND_AUX_BUS_NUM = 2 // 259 } nnsndAuxBusId; 260 261 typedef enum nnsndSampleFormat 262 { 263 NN_SND_SAMPLE_FORMAT_PCM8 = NN_SND_BCWAV_ENCODING_PCM8, // 264 NN_SND_SAMPLE_FORMAT_PCM16 = NN_SND_BCWAV_ENCODING_PCM16, // 265 NN_SND_SAMPLE_FORMAT_ADPCM = NN_SND_BCWAV_ENCODING_DSP_ADPCM // 266 } nnsndSampleFormat; 267 268 typedef enum nnsndChannelIndex 269 { 270 NN_SND_CHANNEL_INDEX_FRONT_LEFT = 0, // 271 NN_SND_CHANNEL_INDEX_FRONT_RIGHT = 1, // 272 NN_SND_CHANNEL_INDEX_REAR_LEFT = 2, // 273 NN_SND_CHANNEL_INDEX_REAR_RIGHT = 3, // 274 NN_SND_CHANNEL_INDEX_NUM = 4 // 275 } nnsndChannelIndex; 276 277 typedef enum nnsndOutputMode 278 { 279 NN_SND_OUTPUT_MODE_MONO = 0, // 280 NN_SND_OUTPUT_MODE_STEREO = 1, // 281 NN_SND_OUTPUT_MODE_3DSURROUND = 2 // 282 } nnsndOutputMode; 283 284 typedef enum 285 { 286 NN_SND_CLIPPING_MODE_NORMAL = 0, // 287 NN_SND_CLIPPING_MODE_SOFT = 1 // 288 } nnsndClippingMode; 289 290 typedef enum nnsndSurroundSpeakerPosition 291 { 292 NN_SND_SURROUND_SPEAKER_POSITION_SQUARE = 0, // 293 NN_SND_SURROUND_SPEAKER_POSITION_WIDE = 1 // 294 } nnsndSurroundSpeakerPosition; 295 296 #endif //NN_SND_TYPES_H_ 297