# twolame.h

Go to the documentation of this file.

    00001 /*
    00002  *  TwoLAME: an optimized MPEG Audio Layer Two encoder
    00003  *
    00004  *  Copyright (C) 2001-2004 Michael Cheng
    00005  *  Copyright (C) 2004-2006 The TwoLAME Project
    00006  *
    00007  *  This library is free software; you can redistribute it and/or
    00008  *  modify it under the terms of the GNU Lesser General Public
    00009  *  License as published by the Free Software Foundation; either
    00010  *  version 2.1 of the License, or (at your option) any later version.
    00011  *
    00012  *  This library is distributed in the hope that it will be useful,
    00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00015  *  Lesser General Public License for more details.
    00016  *
    00017  *  You should have received a copy of the GNU Lesser General Public
    00018  *  License along with this library; if not, write to the Free Software
    00019  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00020  *
    00021  *  $Id$
    00022  *
    00023  */
    00024
    00025 #ifndef __TWOLAME_H__
    00026 #define __TWOLAME_H__
    00027
    00028 #ifdef __cplusplus
    00029 extern "C" {
    00030 #endif
    00031
    00034 /*
    00035  * ATTENTION WIN32 USERS!
    00036  *
    00037  * By default, when you use this header file, it is configured to use
    00038  * symbols from the "twolame.dll" file. If you use the static version of
    00039  * the library, define LIBTWOLAME_STATIC prior to including this header.
    00040  */
    00041
    00042 #ifdef _WIN32
    00043 #ifdef LIBTWOLAME_STATIC
    00044 #define DLL_EXPORT
    00045 #else
    00046 #ifdef LIBTWOLAME_DLL_EXPORTS
    00047 #define DLL_EXPORT __declspec(dllexport)
    00048 #else
    00049 #define DLL_EXPORT __declspec(dllimport)
    00050 #endif
    00051 #endif
    00052 #else
    00053 #define DLL_EXPORT
    00054 #endif
    00055
    00056
    00057 #ifndef TRUE
    00058 #define TRUE    (1)
    00059 #endif
    00060
    00061 #ifndef FALSE
    00062 #define FALSE   (0)
    00063 #endif
    00064
    00065
    00067     typedef enum {
    00068         TWOLAME_AUTO_MODE = -1,
    00070         TWOLAME_STEREO = 0,
    00071         TWOLAME_JOINT_STEREO,
    00073         TWOLAME_DUAL_CHANNEL,
    00075         TWOLAME_MONO,
    00076         TWOLAME_NOT_SET
    00077     } TWOLAME_MPEG_mode;
    00078
    00079
    00084     typedef enum {
    00085         TWOLAME_MPEG2 = 0,
    00087         TWOLAME_MPEG1
    00088     } TWOLAME_MPEG_version;
    00089
    00090
    00092     typedef enum {
    00093         TWOLAME_PAD_NO = 0,
    00094         TWOLAME_PAD_ALL
    00095 //  TWOLAME_PAD_ADJUST      // unsupported by twolame
    00096     } TWOLAME_Padding;
    00097
    00099     typedef enum {
    00100         TWOLAME_EMPHASIS_N = 0,
    00102         TWOLAME_EMPHASIS_5 = 1,
    00104         // reserved
    00105         TWOLAME_EMPHASIS_C = 3
    00107     } TWOLAME_Emphasis;
    00108
    00109
    00111 #define TWOLAME_SAMPLES_PER_FRAME       (1152)
    00112
    00113
    00115     struct twolame_options_struct;
    00116
    00118     typedef struct twolame_options_struct twolame_options;
    00119
    00120
    00121
    00122
    00123
    00129     DLL_EXPORT const char *get_twolame_version(void);
    00130
    00131
    00137     DLL_EXPORT const char *get_twolame_url(void);
    00138
    00139
    00150     DLL_EXPORT void twolame_print_config(twolame_options * glopts);
    00151
    00152
    00162     DLL_EXPORT twolame_options *twolame_init(void);
    00163
    00164
    00176     DLL_EXPORT int twolame_init_params(twolame_options * glopts);
    00177
    00178
    00193     DLL_EXPORT int twolame_encode_buffer(twolame_options * glopts,
    00194                                          const short int leftpcm[],
    00195                                          const short int rightpcm[],
    00196                                          int num_samples,
    00197                                          unsigned char *mp2buffer, int mp2buffer_size);
    00198
    00199
    00213     DLL_EXPORT int twolame_encode_buffer_interleaved(twolame_options * glopts,
    00214                                                      const short int pcm[],
    00215                                                      int num_samples,
    00216                                                      unsigned char *mp2buffer, int mp2buffer_size);
    00217
    00218
    00236     DLL_EXPORT int twolame_encode_buffer_float32(twolame_options * glopts,
    00237                                                  const float leftpcm[],
    00238                                                  const float rightpcm[],
    00239                                                  int num_samples,
    00240                                                  unsigned char *mp2buffer, int mp2buffer_size);
    00241
    00242
    00256     int twolame_encode_buffer_float32_interleaved(twolame_options * glopts,
    00257                                                   const float pcm[],
    00258                                                   int num_samples,
    00259                                                   unsigned char *mp2buffer, int mp2buffer_size);
    00260
    00261
    00274     DLL_EXPORT int twolame_encode_flush(twolame_options * glopts,
    00275                                         unsigned char *mp2buffer, int mp2buffer_size);
    00276
    00277
    00287     DLL_EXPORT void twolame_close(twolame_options ** glopts);
    00288
    00289
    00290
    00306     DLL_EXPORT int twolame_set_verbosity(twolame_options * glopts, int verbosity);
    00307
    00308
    00314     DLL_EXPORT int twolame_get_verbosity(twolame_options * glopts);
    00315
    00316
    00327     DLL_EXPORT int twolame_set_mode(twolame_options * glopts, TWOLAME_MPEG_mode mode);
    00328
    00329
    00335     DLL_EXPORT TWOLAME_MPEG_mode twolame_get_mode(twolame_options * glopts);
    00336
    00337
    00343     DLL_EXPORT const char *twolame_get_mode_name(twolame_options * glopts);
    00344
    00345
    00355     DLL_EXPORT int twolame_set_version(twolame_options * glopts, TWOLAME_MPEG_version version);
    00356
    00357
    00363     DLL_EXPORT TWOLAME_MPEG_version twolame_get_version(twolame_options * glopts);
    00364
    00365
    00371     DLL_EXPORT const char *twolame_get_version_name(twolame_options * glopts);
    00372
    00373
    00380     DLL_EXPORT int twolame_get_framelength(twolame_options * glopts);
    00381
    00382
    00392     DLL_EXPORT int twolame_set_psymodel(twolame_options * glopts, int psymodel);
    00393
    00394
    00400     DLL_EXPORT int twolame_get_psymodel(twolame_options * glopts);
    00401
    00402
    00416     DLL_EXPORT int twolame_set_num_channels(twolame_options * glopts, int num_channels);
    00417
    00418
    00424     DLL_EXPORT int twolame_get_num_channels(twolame_options * glopts);
    00425
    00426
    00438     DLL_EXPORT int twolame_set_scale(twolame_options * glopts, float scale);
    00439
    00440
    00446     DLL_EXPORT float twolame_get_scale(twolame_options * glopts);
    00447
    00459     DLL_EXPORT int twolame_set_scale_left(twolame_options * glopts, float scale);
    00460
    00461
    00467     DLL_EXPORT float twolame_get_scale_left(twolame_options * glopts);
    00468
    00469
    00481     DLL_EXPORT int twolame_set_scale_right(twolame_options * glopts, float scale);
    00482
    00483
    00489     DLL_EXPORT float twolame_get_scale_right(twolame_options * glopts);
    00490
    00491
    00501     DLL_EXPORT int twolame_set_in_samplerate(twolame_options * glopts, int samplerate);
    00502
    00503
    00509     DLL_EXPORT int twolame_get_in_samplerate(twolame_options * glopts);
    00510
    00511
    00521     DLL_EXPORT int twolame_set_out_samplerate(twolame_options * glopts, int samplerate);
    00522
    00523
    00529     DLL_EXPORT int twolame_get_out_samplerate(twolame_options * glopts);
    00530
    00531
    00541     DLL_EXPORT int twolame_set_bitrate(twolame_options * glopts, int bitrate);
    00542
    00543
    00549     DLL_EXPORT int twolame_get_bitrate(twolame_options * glopts);
    00550
    00551
    00556     DLL_EXPORT int twolame_set_brate(twolame_options * glopts, int bitrate);
    00557
    00558
    00563     DLL_EXPORT int twolame_get_brate(twolame_options * glopts);
    00564
    00565
    00577     DLL_EXPORT int twolame_set_padding(twolame_options * glopts, TWOLAME_Padding padding);
    00578
    00584     DLL_EXPORT TWOLAME_Padding twolame_get_padding(twolame_options * glopts);
    00585
    00586
    00604     DLL_EXPORT int twolame_set_energy_levels(twolame_options * glopts, int energylevels);
    00605
    00606
    00612     DLL_EXPORT int twolame_get_energy_levels(twolame_options * glopts);
    00613
    00614
    00624     DLL_EXPORT int twolame_set_num_ancillary_bits(twolame_options * glopts, int num);
    00625
    00626
    00632     DLL_EXPORT int twolame_get_num_ancillary_bits(twolame_options * glopts);
    00633
    00634
    00635
    00645     DLL_EXPORT int twolame_set_emphasis(twolame_options * glopts, TWOLAME_Emphasis emphasis);
    00646
    00647
    00653     DLL_EXPORT TWOLAME_Emphasis twolame_get_emphasis(twolame_options * glopts);
    00654
    00655
    00665     DLL_EXPORT int twolame_set_error_protection(twolame_options * glopts, int err_protection);
    00666
    00667
    00673     DLL_EXPORT int twolame_get_error_protection(twolame_options * glopts);
    00674
    00675
    00687     DLL_EXPORT int twolame_set_copyright(twolame_options * glopts, int copyright);
    00688
    00689
    00695     DLL_EXPORT int twolame_get_copyright(twolame_options * glopts);
    00696
    00697
    00707     DLL_EXPORT int twolame_set_original(twolame_options * glopts, int original);
    00708
    00709
    00715     DLL_EXPORT int twolame_get_original(twolame_options * glopts);
    00716
    00717
    00727     DLL_EXPORT int twolame_set_VBR(twolame_options * glopts, int vbr);
    00728
    00729
    00735     DLL_EXPORT int twolame_get_VBR(twolame_options * glopts);
    00736
    00737
    00750     DLL_EXPORT int twolame_set_VBR_level(twolame_options * glopts, float level);
    00751
    00752
    00758     DLL_EXPORT float twolame_get_VBR_level(twolame_options * glopts);
    00759
    00760
    00761
    00762 /*
    00763    Using the twolame_set_VBR_q()/twolame_get_VBR_q functions
    00764    are deprecated, please use twolame_set_VBR_level() instead.
    00765 */
    00766     DLL_EXPORT int twolame_set_VBR_q(twolame_options * glopts, float level);
    00767     DLL_EXPORT float twolame_get_VBR_q(twolame_options * glopts);
    00768
    00769
    00770
    00780     DLL_EXPORT int twolame_set_ATH_level(twolame_options * glopts, float level);
    00781
    00782
    00788     DLL_EXPORT float twolame_get_ATH_level(twolame_options * glopts);
    00789
    00790
    00800     DLL_EXPORT int twolame_set_VBR_max_bitrate_kbps(twolame_options * glopts, int bitrate);
    00801
    00807     DLL_EXPORT int twolame_get_VBR_max_bitrate_kbps(twolame_options * glopts);
    00808
    00809
    00819     DLL_EXPORT int twolame_set_quick_mode(twolame_options * glopts, int quickmode);
    00820
    00826     DLL_EXPORT int twolame_get_quick_mode(twolame_options * glopts);
    00827
    00828
    00838     DLL_EXPORT int twolame_set_quick_count(twolame_options * glopts, int quickcount);
    00839
    00845     DLL_EXPORT int twolame_get_quick_count(twolame_options * glopts);
    00846
    00847
    00848
    00849
    00850
    00851
    00852
    00853 /* WARNING: DAB support is currently broken */
    00854
    00855
    00856
    00857
    00858
    00868     DLL_EXPORT int twolame_set_DAB(twolame_options * glopts, int dab);
    00869
    00875     DLL_EXPORT int twolame_get_DAB(twolame_options * glopts);
    00876
    00877
    00887     DLL_EXPORT int twolame_set_DAB_xpad_length(twolame_options * glopts, int length);
    00888
    00889
    00895     DLL_EXPORT int twolame_get_DAB_xpad_length(twolame_options * glopts);
    00896
    00897
    00907     DLL_EXPORT int twolame_set_DAB_crc_length(twolame_options * glopts, int length);
    00908
    00909
    00915     DLL_EXPORT int twolame_get_DAB_crc_length(twolame_options * glopts);
    00916
    00917
    00918
    00919 #ifdef __cplusplus
    00920 }
    00921 #endif
    00922 #endif                          /* _TWOLAME_H_ */
    00923 // vim:ts=4:sw=4:nowrap: