1 /* 2 * lamelib.h - Access lame lib. 3 * 4 * Written by 5 * Christian Vogelgsang <chris@vogelgsang.org> 6 * 7 * This file is part of VICE, the Versatile Commodore Emulator. 8 * See README for copyright notice. 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 23 * 02111-1307 USA. 24 * 25 */ 26 27 #ifndef VICE_MP3LAME_H 28 #define VICE_MP3LAME_H 29 30 #include "vice.h" 31 32 #include "lame/lame.h" 33 34 #ifdef HAVE_STATIC_LAME 35 36 #define vice_lame_init lame_init 37 #define vice_lame_close lame_close 38 #define vice_lame_set_num_channels lame_set_num_channels 39 #define vice_lame_set_in_samplerate lame_set_in_samplerate 40 #define vice_lame_set_quality lame_set_quality 41 #define vice_lame_set_brate lame_set_brate 42 #define vice_lame_init_params lame_init_params 43 #define vice_lame_encode_buffer_interleaved lame_encode_buffer_interleaved 44 #define vice_lame_encode_flush lame_encode_flush 45 46 #else 47 48 #define vice_lame_init (lamelib.p_lame_init) 49 #define vice_lame_close (lamelib.p_lame_close) 50 #define vice_lame_set_num_channels (lamelib.p_lame_set_num_channels) 51 #define vice_lame_set_in_samplerate (lamelib.p_lame_set_in_samplerate) 52 #define vice_lame_set_quality (lamelib.p_lame_set_quality) 53 #define vice_lame_set_brate (lamelib.p_lame_set_brate) 54 #define vice_lame_init_params (lamelib.p_lame_init_params) 55 #define vice_lame_encode_buffer_interleaved (lamelib.p_lame_encode_buffer_interleaved) 56 #define vice_lame_encode_flush (lamelib.p_lame_encode_flush) 57 58 /* define function pointers of Lame API */ 59 typedef lame_global_flags * CDECL (*lame_init_t)(void); 60 typedef int CDECL (*lame_close_t)(lame_global_flags *); 61 typedef int CDECL (*lame_set_num_channels_t)(lame_global_flags *, int); 62 typedef int CDECL (*lame_set_in_samplerate_t)(lame_global_flags *, int); 63 typedef int CDECL (*lame_set_quality_t)(lame_global_flags *, int); 64 typedef int CDECL (*lame_set_brate_t)(lame_global_flags *, int); 65 typedef int CDECL (*lame_init_params_t)(lame_global_flags *); 66 typedef int CDECL (*lame_encode_buffer_interleaved_t)(lame_global_flags*, short int [], int, unsigned char*, int); 67 typedef int CDECL (*lame_encode_flush_t)(lame_global_flags * gfp, unsigned char*, int); 68 69 struct lamelib_s { 70 lame_init_t p_lame_init; 71 lame_close_t p_lame_close; 72 lame_set_num_channels_t p_lame_set_num_channels; 73 lame_set_in_samplerate_t p_lame_set_in_samplerate; 74 lame_set_quality_t p_lame_set_quality; 75 lame_set_brate_t p_lame_set_brate; 76 lame_init_params_t p_lame_init_params; 77 lame_encode_buffer_interleaved_t p_lame_encode_buffer_interleaved; 78 lame_encode_flush_t p_lame_encode_flush; 79 }; 80 81 typedef struct lamelib_s lamelib_t; 82 83 extern lamelib_t lamelib; 84 extern int lamelib_open(void); 85 extern void lamelib_close(void); 86 87 #endif /* ifdef HAVE_STATIC_LAME */ 88 #endif /* ifndef VICE_MP3LAME_H */ 89