BEAST/BSE - Better Audio System and Sound Engine  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gslvorbis-enc.hh
Go to the documentation of this file.
1  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
2 #ifndef __GSL_VORBIS_ENC_H__
3 #define __GSL_VORBIS_ENC_H__
4 
5 #include <bse/gslcommon.hh>
6 
7 G_BEGIN_DECLS
8 
9 /* --- typedefs & enums --- */
10 typedef struct _GslVorbisEncoder GslVorbisEncoder;
11 /* rough quality to bitrate mappings at 44.1kHz mono:
12  * -1) 32kBit 2) 70kBit 5) 96kBit 8) 140kBit
13  * 0) 48kBit 3) 80kBit 6) 110kBit 9) 160kBit
14  * 1) 60kBit 4) 86kBit 7) 120kBit 10) 240kBit
15  * oggenc defaults to a quality setting of 3.0
16  */
17 
18 /* --- encoder API --- */
19 GslVorbisEncoder* gsl_vorbis_encoder_new (void);
20 /* pre encoding */
21 void gsl_vorbis_encoder_add_comment (GslVorbisEncoder *self,
22  const gchar *utf8_comment);
23 void gsl_vorbis_encoder_add_named_comment (GslVorbisEncoder *self,
24  const gchar *ascii_tag_name,
25  const gchar *utf8_comment);
26 void gsl_vorbis_encoder_add_lcomment (GslVorbisEncoder *self,
27  const gchar *latin1_comment);
28 void gsl_vorbis_encoder_add_named_lcomment (GslVorbisEncoder *self,
29  const gchar *ascii_tag_name,
30  const gchar *latin1_comment);
31 void gsl_vorbis_encoder_set_quality (GslVorbisEncoder *self,
32  gfloat quality); /* -1..10 */
33 void gsl_vorbis_encoder_set_bitrate (GslVorbisEncoder *self,
34  guint nominal_bps);
35 void gsl_vorbis_encoder_set_n_channels (GslVorbisEncoder *self,
36  guint n_channels);
37 void gsl_vorbis_encoder_set_sample_freq (GslVorbisEncoder *self,
38  guint sample_freq);
39 /* start encoding */
40 BseErrorType gsl_vorbis_encoder_setup_stream (GslVorbisEncoder *self,
41  guint serial);
42 /* write unencoded data (must be channel aligned) */
43 void gsl_vorbis_encoder_write_pcm (GslVorbisEncoder *self,
44  guint n_values,
45  gfloat *values);
46 /* (optional) incremental load distribution */
47 gboolean gsl_vorbis_encoder_needs_processing (GslVorbisEncoder *self);
48 void gsl_vorbis_encoder_process (GslVorbisEncoder *self);
49 /* finish feeding unencoded data */
50 void gsl_vorbis_encoder_pcm_done (GslVorbisEncoder *self);
51 /* retrive encoded data */
52 guint gsl_vorbis_encoder_read_ogg (GslVorbisEncoder *self,
53  guint n_bytes,
54  guint8 *bytes);
55 /* test for end of stream */
56 gboolean gsl_vorbis_encoder_ogg_eos (GslVorbisEncoder *self);
57 /* cleanup */
58 void gsl_vorbis_encoder_destroy (GslVorbisEncoder *self);
59 
60 /* retrive vendor version string */
61 gchar* gsl_vorbis_encoder_version (void);
62 
63 
64 G_END_DECLS
65 
66 #endif /* __GSL_VORBIS_ENC_H__ */