xref: /plan9/sys/src/games/mp3enc/get_audio.h (revision 8f5875f3e9b20916b4c52ad4336922bc8653eb7b)
1 /*
2  *	Get Audio routines include file
3  *
4  *	Copyright (c) 1999 Albert L Faber
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21 
22 
23 #ifndef LAME_GET_AUDIO_H
24 #define LAME_GET_AUDIO_H
25 
26 typedef enum sound_file_format_e {
27   sf_unknown,
28   sf_raw,
29   sf_wave,
30   sf_aiff,
31   sf_mp1,  /* MPEG Layer 1, aka mpg */
32   sf_mp2,  /* MPEG Layer 2 */
33   sf_mp3,  /* MPEG Layer 3 */
34   sf_ogg
35 } sound_file_format;
36 
37 
38 
39 FILE*  init_outfile ( char *outPath, int decode );
40 void init_infile(lame_global_flags *, char *inPath);
41 void close_infile(void);
42 int get_audio(lame_global_flags *gfp,short buffer[2][1152]);
43 
44 
45 
46 /* the simple lame decoder */
47 /* After calling lame_init(), lame_init_params() and
48  * init_infile(), call this routine to read the input MP3 file
49  * and output .wav data to the specified file pointer
50  * lame_decoder will ignore the first 528 samples, since these samples
51  * represent the mpglib decoding delay (and are all 0).
52  *skip = number of additional
53  * samples to skip, to (for example) compensate for the encoder delay,
54  * only used when decoding mp3
55 */
56 int lame_decoder(lame_global_flags *gfp,FILE *outf,int skip, char *inPath, char *outPath);
57 
58 
59 
60 void SwapBytesInWords( short *loc, int words );
61 
62 
63 
64 #ifdef LIBSNDFILE
65 
66 #include "sndfile.h"
67 
68 
69 #else
70 /*****************************************************************
71  * LAME/ISO built in audio file I/O routines
72  *******************************************************************/
73 #include "portableio.h"
74 
75 
76 typedef struct  blockAlign_struct {
77     unsigned long   offset;
78     unsigned long   blockSize;
79 } blockAlign;
80 
81 typedef struct  IFF_AIFF_struct {
82     short           numChannels;
83     unsigned long   numSampleFrames;
84     short           sampleSize;
85     double          sampleRate;
86     unsigned long   sampleType;
87     blockAlign      blkAlgn;
88 } IFF_AIFF;
89 
90 extern int            aiff_read_headers(FILE*, IFF_AIFF*);
91 extern int            aiff_seek_to_sound_data(FILE*);
92 extern int            aiff_write_headers(FILE*, IFF_AIFF*);
93 extern int parse_wavheader(void);
94 extern int parse_aiff(const char fn[]);
95 extern void   aiff_check(const char*, IFF_AIFF*, int*);
96 
97 
98 
99 #endif	/* ifdef LIBSNDFILE */
100 #endif	/* ifndef LAME_GET_AUDIO_H */
101