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: 38509 $ 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 STATUS_TO_BE_DELETED // 163 }; 164 165 // For the user 166 const void * bufferAddress; // 167 s32 sampleLength; // 168 169 const AdpcmContext * pAdpcmContext; // 170 171 uptr userParam; // 172 173 bool loopFlag; // 174 util::SizedEnum1<Status> status; // 175 u16 bufferId; // 176 177 struct WaveBuffer * next; // 178 }; // WaveBuffer 179 180 /* Please see man pages for details 181 182 */ 183 enum SampleFormat 184 { 185 SAMPLE_FORMAT_PCM8 = Bcwav::ENCODING_PCM8, // 186 SAMPLE_FORMAT_PCM16 = Bcwav::ENCODING_PCM16, // 187 SAMPLE_FORMAT_ADPCM = Bcwav::ENCODING_DSP_ADPCM // 188 }; 189 190 static const s32 VOICE_PRIORITY_NODROP = 0x7fff; // 191 192 /* Please see man pages for details 193 194 */ 195 typedef struct 196 { 197 s32* frontLeft; // 198 s32* frontRight; // 199 s32* rearLeft; // 200 s32* rearRight; // 201 } 202 AuxBusData; 203 204 /* Please see man pages for details 205 206 207 208 209 210 */ 211 typedef void(*AuxCallback)( AuxBusData* data, s32 sampleLength, uptr userData ); 212 213 /* Please see man pages for details 214 215 */ 216 struct ThreadParameter 217 { 218 uptr stackBuffer; // 219 uptr stackSize; // 220 size_t priority; // 221 }; 222 223 }}} // namespace nn::snd::CTR 224 225 #endif // __cplusplus 226 227 // Below is the C declaration 228 229 typedef struct 230 { 231 s16 n0; // 232 s16 d1; // 233 } nnsndMonoFilterCoefficients; 234 235 /* Please see man pages for details 236 237 */ 238 typedef struct 239 { 240 s16 n0; // 241 s16 n1; // 242 s16 n2; // 243 s16 d1; // 244 s16 d2; // 245 } nnsndBiquadFilterCoefficients; 246 247 typedef enum 248 { 249 NN_SND_FILTER_TYPE_NONE = 0, // 250 NN_SND_FILTER_TYPE_MONOPOLE = 1, // 251 NN_SND_FILTER_TYPE_BIQUAD = 2, // 252 NN_SND_FILTER_TYPE_BOTH = 3 // 253 } nnsndFilterType; 254 255 typedef enum 256 { 257 NN_SND_AUX_BUS_A = 0, // 258 NN_SND_AUX_BUS_B = 1, // 259 NN_SND_AUX_BUS_NUM = 2 // 260 } nnsndAuxBusId; 261 262 typedef enum nnsndSampleFormat 263 { 264 NN_SND_SAMPLE_FORMAT_PCM8 = NN_SND_BCWAV_ENCODING_PCM8, // 265 NN_SND_SAMPLE_FORMAT_PCM16 = NN_SND_BCWAV_ENCODING_PCM16, // 266 NN_SND_SAMPLE_FORMAT_ADPCM = NN_SND_BCWAV_ENCODING_DSP_ADPCM // 267 } nnsndSampleFormat; 268 269 typedef enum nnsndChannelIndex 270 { 271 NN_SND_CHANNEL_INDEX_FRONT_LEFT = 0, // 272 NN_SND_CHANNEL_INDEX_FRONT_RIGHT = 1, // 273 NN_SND_CHANNEL_INDEX_REAR_LEFT = 2, // 274 NN_SND_CHANNEL_INDEX_REAR_RIGHT = 3, // 275 NN_SND_CHANNEL_INDEX_NUM = 4 // 276 } nnsndChannelIndex; 277 278 typedef enum nnsndOutputMode 279 { 280 NN_SND_OUTPUT_MODE_MONO = 0, // 281 NN_SND_OUTPUT_MODE_STEREO = 1, // 282 NN_SND_OUTPUT_MODE_3DSURROUND = 2 // 283 } nnsndOutputMode; 284 285 typedef enum 286 { 287 NN_SND_CLIPPING_MODE_NORMAL = 0, // 288 NN_SND_CLIPPING_MODE_SOFT = 1 // 289 } nnsndClippingMode; 290 291 typedef enum nnsndSurroundSpeakerPosition 292 { 293 NN_SND_SURROUND_SPEAKER_POSITION_SQUARE = 0, // 294 NN_SND_SURROUND_SPEAKER_POSITION_WIDE = 1 // 295 } nnsndSurroundSpeakerPosition; 296 297 #endif //NN_SND_TYPES_H_ 298