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