1 /*---------------------------------------------------------------------------*
2 Project: Horizon
3 File: snd_Api.h
4
5 Copyright (C)2009-2012 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: 46347 $
14 *---------------------------------------------------------------------------*/
15
16 #ifndef NN_SND_CTR_MPCORE_SND_API_H_
17 #define NN_SND_CTR_MPCORE_SND_API_H_
18
19 #include <nn/Result.h>
20 #include <nn/snd/CTR/Common/snd_Types.h>
21 #include <nn/snd/CTR/MPCore/snd_Voice.h>
22 #include <nn/snd/CTR/MPCore/snd_OutputCapture.h>
23 #include <nn/snd/CTR/MPCore/snd_FxDelay.h>
24 #include <nn/snd/CTR/MPCore/snd_FxReverb.h>
25
26 #ifdef __cplusplus
27
28 /* Please see man pages for details
29
30 */
31
32 namespace nn { namespace snd { namespace CTR {
33
34 /* Please see man pages for details
35
36 */
37 static const s32 NN_SND_DSP_MAXIMUM_CYCLES = 622535;
38
39
40 /* Please see man pages for details
41
42
43 */
44 /* Please see man pages for details
45
46
47
48
49
50
51 */
52 nn::Result Initialize();
53
54 /* Please see man pages for details
55
56
57
58
59 */
60 nn::Result Finalize();
61
62 /* Please see man pages for details
63
64
65
66
67
68 */
69 void InitializeWaveBuffer(WaveBuffer * pWaveBuffer);
70
71 /* Please see man pages for details
72
73 */
74 nn::Result StartSoundThread(
75 void (*callback)(uptr),
76 uptr arg,
77 uptr stackBuffer,
78 size_t stackSize,
79 s32 prio,
80 s32 coreNo = NN_OS_CORE_NO_USE_PROCESS_VALUE
81 );
82
83 /* Please see man pages for details
84
85 */
86 nn::Result StartUserSoundThread(uptr stackBuffer, size_t stackSize, s32 prio);
87
88 /* Please see man pages for details
89
90 */
91 nn::Result StartSoundThread(
92 const ThreadParameter* mainThreadParam,
93 void (*mainThreadCallback)(uptr),
94 uptr mainThreadArg,
95 const ThreadParameter* userThreadParam,
96 void (*userThreadCallback)(uptr),
97 uptr userThreadArg,
98 s32 coreNo
99 );
100
101 /* Please see man pages for details
102
103 */
104 void FinalizeSoundThread();
105
106 /* Please see man pages for details
107
108 */
FinalizeUserSoundThread()109 inline void FinalizeUserSoundThread() {}
110
111 /* Please see man pages for details
112
113
114
115
116
117 */
118 void EnableSoundThreadTickCounter(bool enable);
119
120 /* Please see man pages for details
121
122
123
124 */
125 nn::os::Tick GetSoundThreadTick();
126
127 /* Please see man pages for details
128
129 */
130 void LockSoundThread();
131
132 /* Please see man pages for details
133
134 */
135 void UnlockSoundThread();
136
137 /*
138
139 */
140
141 /* Please see man pages for details
142
143
144
145 */
146 /* Please see man pages for details
147
148
149
150
151
152
153
154 */
155 nn::Result FlushDataCache( uptr addr, size_t size );
156
157 /* Please see man pages for details
158
159
160
161
162
163
164
165 */
166 nn::Result InvalidateDataCache( uptr addr, size_t size );
167
168 /*
169
170 */
171
172 /* Please see man pages for details
173
174
175
176 */
177
178 /* Please see man pages for details
179
180 */
181 void WaitForDspSync();
182
183 /* Please see man pages for details
184
185
186 */
187 void WaitForDspSync(nn::os::Tick* pTick);
188
189 /* Please see man pages for details
190
191 */
192 void SendParameterToDsp();
193
194 /* Please see man pages for details
195
196 */
197
198 /* Please see man pages for details
199
200
201
202
203
204
205 */
206 s32 GetSampleLength( s32 size, SampleFormat format, s32 channelCount ) ;
207
208 /* Please see man pages for details
209
210
211 */
212 /* Please see man pages for details
213
214
215
216 */
217 void SetMasterVolume ( f32 volume );
218
219 /* Please see man pages for details
220
221
222 */
223 f32 GetMasterVolume();
224
225 /* Please see man pages for details
226
227
228
229
230
231
232
233
234 */
235 void SetAuxReturnVolume ( AuxBusId busId, f32 volume );
236
237 /* Please see man pages for details
238
239
240
241
242
243
244
245
246 */
247 f32 GetAuxReturnVolume ( AuxBusId busId ) ;
248
249 /* Please see man pages for details
250
251
252
253
254
255 */
256 void RegisterAuxCallback( AuxBusId busId, AuxCallback callback, uptr userData );
257
258 /* Please see man pages for details
259
260
261
262
263
264 */
265 void GetAuxCallback( AuxBusId busId, AuxCallback* pCallback, uptr* pUserData );
266
267 /* Please see man pages for details
268
269
270
271 */
272 void ClearAuxCallback( AuxBusId busId );
273
274 /* Please see man pages for details
275
276
277
278
279 */
280 bool SetAuxFrontBypass(AuxBusId busId, bool flag);
281 /*
282
283 */
284
285 /* Please see man pages for details
286
287
288 */
289 /* Please see man pages for details
290
291
292
293
294 */
295 bool SetSoundOutputMode(OutputMode mode);
296
297 /* Please see man pages for details
298
299
300
301 */
302 OutputMode GetSoundOutputMode();
303
304 /* Please see man pages for details
305
306
307
308 */
309 bool SetClippingMode(ClippingMode mode);
310
311 /* Please see man pages for details
312
313
314 */
315 ClippingMode GetClippingMode();
316
317 /* Please see man pages for details
318
319
320
321
322 */
323 bool SetRearRatio(f32 depth);
324
325 /* Please see man pages for details
326
327
328
329
330
331
332
333
334
335
336 */
337 bool SetSurroundDepth(f32 depth);
338
339 /* Please see man pages for details
340
341
342
343
344 */
345 bool SetSurroundSpeakerPosition(SurroundSpeakerPosition pos);
346
347 /*
348
349 */
350
351 /* Please see man pages for details
352
353
354
355
356
357
358
359 */
360 void SetMaximumDspCycles( s32 cycles );
361
362 /* Please see man pages for details
363
364
365
366 */
367 s32 GetMaximumDspCycles();
368
369 /* Please see man pages for details
370
371
372
373 */
374 s32 GetDspCycles();
375
376 /* Please see man pages for details
377
378 */
379 void Sleep();
380
381 /* Please see man pages for details
382
383 */
384 void WakeUp();
385
386 /* Please see man pages for details
387
388 */
389 void OrderToWaitForFinalize();
390
391 /* Please see man pages for details
392
393
394 */
395 bool GetHeadphoneStatus();
396
397 /* Please see man pages for details
398
399
400 */
401 bool UpdateHeadphoneStatus();
402
403 /* Please see man pages for details
404
405
406
407 */
SetHeadphoneOutOnShellClose(bool forceout)408 inline Result SetHeadphoneOutOnShellClose(bool forceout)
409 {
410 return dsp::ForceHeadphoneOut(forceout);
411 }
412
413 /* Please see man pages for details
414
415
416 */
417 /* Please see man pages for details
418
419
420
421
422 */
423 bool GetMixedBusData(s16* pData, s32 nSamplesPerFrame = NN_SND_SAMPLES_PER_FRAME);
424 /*
425
426 */
427
428 /* Please see man pages for details
429
430
431 */
432 /* Please see man pages for details
433
434
435 */
436 s32 GetDroppedSoundFrameCount();
437
438 /* Please see man pages for details
439
440 */
441 void ClearDroppedSoundFrameCount();
442
443 /*
444
445 */
446
447 /* Please see man pages for details
448
449
450 */
451 /* Please see man pages for details
452
453
454
455
456
457
458
459
460
461
462 */
463 void EncodeAdpcmData(s16* pInput, u8* pOutput, s32 nSamples, s32 sampleRate, s32 loopStart, s32 loopEnd, DspsndAdpcmHeader* pInfo);
464
465 /* Please see man pages for details
466
467
468
469
470
471
472
473 */
474 void DecodeAdpcmData(const u8* pInput, s16* pOutput, const AdpcmParam& param, AdpcmContext& context, s32 nSamples);
475
476 /* Please see man pages for details
477
478
479
480
481 */
482 s32 GetAdpcmOutputBufferSize(s32 nSamples);
483
484 /* Please see man pages for details
485
486
487
488
489 */
490 u32 ConvertAdpcmPos2Nib(u32 nPos);
491 /* Please see man pages for details
492
493
494
495
496 */
497 u32 ConvertAdpcmNib2Pos(u32 nNib);
498 /*
499
500 */
501
502 /* Please see man pages for details
503
504
505
506 */
507
508 /* Please see man pages for details
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545 */
546 bool SetEffect(AuxBusId busId, FxDelay* fx);
547
548 /* Please see man pages for details
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586 */
587 bool SetEffect(AuxBusId busId, FxReverb* fx);
588
589 /* Please see man pages for details
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605 */
606 void ClearEffect(AuxBusId busId);
607
608 /*
609
610 */
611
612 /* Please see man pages for details
613
614
615 */
616 void SetOutputBufferCount(s32 count);
617
618 /* Please see man pages for details
619
620 */
621 s32 GetOutputBufferCount();
622
623 /* Please see man pages for details
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650 */
651 void SetSyncMode(SyncMode mode);
652
653 /* Please see man pages for details
654
655 */
656 SyncMode GetSyncMode();
657
658 }}} // namespace nn::snd::CTR
659
660 #endif // __cplusplus
661
662 // Below is the C declaration
663 /* Please see man pages for details
664
665
666
667 */
668
669 /* Please see man pages for details
670
671 */
672 NN_EXTERN_C nnResult nnsndInitialize();
673
674 /*
675
676 */
677
678 #endif // NN_SND_CTR_MPCORE_SND_API_H_
679