BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __GSL_VORBIS_ENC_H__ 00003 #define __GSL_VORBIS_ENC_H__ 00004 00005 #include <bse/gslcommon.hh> 00006 00007 G_BEGIN_DECLS 00008 00009 /* --- typedefs & enums --- */ 00010 typedef struct _GslVorbisEncoder GslVorbisEncoder; 00011 /* rough quality to bitrate mappings at 44.1kHz mono: 00012 * -1) 32kBit 2) 70kBit 5) 96kBit 8) 140kBit 00013 * 0) 48kBit 3) 80kBit 6) 110kBit 9) 160kBit 00014 * 1) 60kBit 4) 86kBit 7) 120kBit 10) 240kBit 00015 * oggenc defaults to a quality setting of 3.0 00016 */ 00017 00018 /* --- encoder API --- */ 00019 GslVorbisEncoder* gsl_vorbis_encoder_new (void); 00020 /* pre encoding */ 00021 void gsl_vorbis_encoder_add_comment (GslVorbisEncoder *self, 00022 const gchar *utf8_comment); 00023 void gsl_vorbis_encoder_add_named_comment (GslVorbisEncoder *self, 00024 const gchar *ascii_tag_name, 00025 const gchar *utf8_comment); 00026 void gsl_vorbis_encoder_add_lcomment (GslVorbisEncoder *self, 00027 const gchar *latin1_comment); 00028 void gsl_vorbis_encoder_add_named_lcomment (GslVorbisEncoder *self, 00029 const gchar *ascii_tag_name, 00030 const gchar *latin1_comment); 00031 void gsl_vorbis_encoder_set_quality (GslVorbisEncoder *self, 00032 gfloat quality); /* -1..10 */ 00033 void gsl_vorbis_encoder_set_bitrate (GslVorbisEncoder *self, 00034 guint nominal_bps); 00035 void gsl_vorbis_encoder_set_n_channels (GslVorbisEncoder *self, 00036 guint n_channels); 00037 void gsl_vorbis_encoder_set_sample_freq (GslVorbisEncoder *self, 00038 guint sample_freq); 00039 /* start encoding */ 00040 BseErrorType gsl_vorbis_encoder_setup_stream (GslVorbisEncoder *self, 00041 guint serial); 00042 /* write unencoded data (must be channel aligned) */ 00043 void gsl_vorbis_encoder_write_pcm (GslVorbisEncoder *self, 00044 guint n_values, 00045 gfloat *values); 00046 /* (optional) incremental load distribution */ 00047 gboolean gsl_vorbis_encoder_needs_processing (GslVorbisEncoder *self); 00048 void gsl_vorbis_encoder_process (GslVorbisEncoder *self); 00049 /* finish feeding unencoded data */ 00050 void gsl_vorbis_encoder_pcm_done (GslVorbisEncoder *self); 00051 /* retrive encoded data */ 00052 guint gsl_vorbis_encoder_read_ogg (GslVorbisEncoder *self, 00053 guint n_bytes, 00054 guint8 *bytes); 00055 /* test for end of stream */ 00056 gboolean gsl_vorbis_encoder_ogg_eos (GslVorbisEncoder *self); 00057 /* cleanup */ 00058 void gsl_vorbis_encoder_destroy (GslVorbisEncoder *self); 00059 00060 /* retrive vendor version string */ 00061 gchar* gsl_vorbis_encoder_version (void); 00062 00063 00064 G_END_DECLS 00065 00066 #endif /* __GSL_VORBIS_ENC_H__ */