1 /*--------------------------------------------------------------------------*
2   Project:  Revolution Audio sound file converter
3   File:     soundconv.h
4 
5   Copyright (C)1998-2006 Nintendo  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   $Log: soundconv.h,v $
14   Revision 1.3  2007/11/26 07:19:01  nakano_yoshinobu
15   Fix for VC2005.
16 
17   Revision 1.2  2006/02/09 06:26:26  aka
18   Changed copyright.
19 
20 
21  *--------------------------------------------------------------------------*/
22 
23 #ifndef __SOUNDCONV_H__
24 #define __SOUNDCONV_H__
25 
26 #include "types.h"
27 
28 
29 /*--------------------------------------------------------------------------*
30     soundfil.dll exports
31  *--------------------------------------------------------------------------*/
32 typedef struct
33 {
34 
35     u32 channels;
36     u32 bitsPerSample;
37     u32 sampleRate;
38     u32 samples;
39     u32 loopStart;
40     u32 loopEnd;
41     u32 bufferLength;
42 
43 } SOUNDINFO;
44 
45 
46 /*--------------------------------------------------------------------------*
47     dsptool.dll exports
48  *--------------------------------------------------------------------------*/
49 typedef struct
50 {
51     // start context
52     u16 coef[16];
53     u16 gain;
54     u16 pred_scale;
55     u16 yn1;
56     u16 yn2;
57 
58     // loop context
59     u16 loop_pred_scale;
60     u16 loop_yn1;
61     u16 loop_yn2;
62 
63 } ADPCMINFO;
64 
65 
66 /*--------------------------------------------------------------------------*
67     local defines
68  *--------------------------------------------------------------------------*/
69 #define STATUS_SUCCESS          0
70 #define STATUS_EOF              1
71 #define STATUS_ERROR            2
72 
73 #define STATE_BEGIN             0
74 #define STATE_END               1
75 
76 #define SOUND_FORMAT_ADPCM      0
77 #define SOUND_FORMAT_PCM8       1
78 #define SOUND_FORMAT_PCM16      2
79 
80 #define SOUND_STEREO_COMBINE    0
81 #define SOUND_STEREO_LEFT       1
82 #define SOUND_STEREO_RIGHT      2
83 
84 
85 #define SOUND_DATA_NO_USER_INPUT 0xFFFFFFFF
86 
87 
88 /*--------------------------------------------------------------------------*
89     player table format
90  *--------------------------------------------------------------------------*/
91 
92 
93 typedef struct
94 {
95 
96     u32 type;
97     u32 sampleRate;
98     u32 loopAddr;
99     u32 loopEndAddr;
100     u32 endAddr;
101     u32 currentAddr;
102     u32 adpcm;
103 
104 } SNDCONVDATA;
105 
106 #define SP_TYPE_ADPCM_ONESHOT   0
107 #define SP_TYPE_ADPCM_LOOPED    1
108 #define SP_TYPE_PCM16_ONESHOT   2
109 #define SP_TYPE_PCM16_LOOPED    3
110 #define SP_TYPE_PCM8_ONESHOT    4
111 #define SP_TYPE_PCM8_LOOPED     5
112 
113 /*--------------------------------------------------------------------------*
114     function prototypes from sound.c
115  *--------------------------------------------------------------------------*/
116 void soundSetDefaultFormat      (u32 format);
117 void soundInitParams            (void);
118 void soundSetSoundFile          (char *ch);
119 void soundSetIdString           (char *ch);
120 void soundSetSampleRate         (u32 i);
121 void soundSetFormat             (u32 i);
122 void soundSetLoopStart          (u32 i);
123 void soundSetLoopEnd            (u32 i);
124 void soundSetMix                (u32 i);
125 int  soundPrintSound            (void);
126 
127 
128 /*--------------------------------------------------------------------------*
129     function prototypes from soundformat.c
130  *--------------------------------------------------------------------------*/
131 void soundStereoCombine8Bit     (s8 *dest, s8 *source, u32 samples);
132 void soundStereoCombine16Bit    (s16 *dest, s16 *source, u32 samples);
133 void soundStereoLeft8Bit        (s8 *dest, s8 *source, u32 samples);
134 void soundStereoLeft16Bit       (s16 *dest, s16 *source, u32 samples);
135 void soundStereoRight8Bit       (s8 *dest, s8 *source, u32 samples);
136 void soundStereoRight16Bit      (s16 *dest, s16 *source, u32 samples);
137 void soundConvert8to16Bit       (s16 *dest, s8 *source, u32 samples);
138 void soundConvert16to8Bit       (s8 *dest, s16 *source, u32 samples);
139 void soundConvert16BitToAdpcm   (void *, s16 *, ADPCMINFO *, u32 samples);
140 void soundConvert16BitToAdpcmLoop(void *, s16 *, ADPCMINFO *, u32 samples, u32 loopStart);
141 void soundConvert8BitToAdpcm    (void *, s8 *, ADPCMINFO *, u32 samples);
142 void soundConvert8BitToAdpcmLoop(void *, s8 *, ADPCMINFO *, u32 samples, u32 loopStart);
143 
144 
145 /*--------------------------------------------------------------------------*
146     function prototypes from output.c
147  *--------------------------------------------------------------------------*/
148 int  soundOutputInit            (char *name);
149 void soundOutputQuit            (void);
150 
151 void soundOutputAddEntry(
152         u32         format,
153         u32         dataBytes,
154         void        *buffer,
155         u32         samples,
156         u32         sampleRate,
157         u32         loopStart,
158         u32         loopEnd,
159         ADPCMINFO   *adpcminfo,
160         char        *headerId
161         );
162 
163 void soundOutputComment         (char *ch);
164 
165 #pragma warning (disable: 4996) //for VC2005
166 
167 #endif  // __SOUNDCONV_H__
168