BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
gslvorbis-enc.hh
Go to the documentation of this file.
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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines