18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<html>
28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<head>
48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<title>libvorbisenc - Documentation</title>
58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<link rel=stylesheet href="style.css" type="text/css">
68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</head>
78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<table border=0 width=100%>
108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<tr>
118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<td><p class=tiny>libvorbisenc documentation</p></td>
128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</tr>
148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</table>
158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h1>Libvorbisenc Setup Examples</h1>
178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsVBR is always the recommended mode for Vorbis encoding when
198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthere's no need to impose bitrate constraints.  True VBR encoding will
208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsalways produce the most consistent quality output as well as the
218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelshighest quality for a the bits used. 
228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>The following code examples prepare a
248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<a href="vorbis_info.html">vorbis_info</a> structure for encoding
258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsuse with libvorbis.<p>
268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Example: encoding using a VBR quality mode</h2>
288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<tr bgcolor=#cccccc><td><pre><b> 
318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   vorbis_info_init(&vi);
328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Encoding using a VBR quality mode.  The usable range is -.1
358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   (lowest quality, smallest file) to 1.0 (highest quality, largest file).
368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Example quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR 
378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  
398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   ret = vorbis_encode_init_vbr(&vi,2,44100,.4);
408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   do not continue if setup failed; this can happen if we ask for a
438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   mode that libVorbis does not support (eg, too low a quality mode, etc,
448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   will return 'OV_EIMPL')
458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   if(ret) exit(1);
488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</b></pre></td></tr></table>
498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Example: encoding using average bitrate (ABR)</h2>
518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<tr bgcolor=#cccccc><td><pre><b> 
548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   vorbis_info_init(&vi);
558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Encoding using an average bitrate mode (ABR).
588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   example: 44kHz stereo coupled, average 128kbps ABR 
598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  
618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   ret = vorbis_encode_init(&vi,2,44100,-1,128000,-1);
628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   do not continue if setup failed; this can happen if we ask for a
658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   mode that libVorbis does not support (eg, too low a bitrate, etc,
668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   will return 'OV_EIMPL')
678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   if(ret) exit(1);
708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</b></pre></td></tr></table>
718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Example: encoding using constant bitrate (CBR)</h2>
738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<tr bgcolor=#cccccc><td><pre><b> 
768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   vorbis_info_init(&vi);
778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Encoding using a constant bitrate mode (CBR).
808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   example: 44kHz stereo coupled, average 128kbps CBR 
818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  
838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   ret = vorbis_encode_init(&vi,2,44100,128000,128000,128000);
848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   do not continue if setup failed; this can happen if we ask for a
878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   mode that libVorbis does not support (eg, too low a bitrate, etc,
888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   will return 'OV_EIMPL')
898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   if(ret) exit(1);
928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</b></pre></td></tr></table>
938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Example: encoding using VBR selected by approximate bitrate</h2>
958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<tr bgcolor=#cccccc><td><pre><b> 
988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   vorbis_info_init(&vi);
998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Encode using a quality mode, but select that quality mode by asking for
1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   an approximate bitrate.  This is not ABR, it is true VBR, but selected
1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   using the bitrate interface, and then turning bitrate management off:
1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   ret = ( vorbis_encode_setup_managed(&vi,2,44100,-1,128000,-1) ||
1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels           vorbis_encode_ctl(&vi,OV_ECTL_RATEMANAGE2_SET,NULL) ||
1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels           vorbis_encode_setup_init(&vi));
1098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /*********************************************************************
1118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   do not continue if setup failed; this can happen if we ask for a
1128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   mode that libVorbis does not support (eg, too low a bitrate, etc,
1138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   will return 'OV_EIMPL')
1148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   *********************************************************************/
1158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   if(ret) exit(1);
1178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</b></pre></td></tr></table>
1188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<br><br>
1208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<hr noshade>
1218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<table border=0 width=100%>
1228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<tr valign=top>
1238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<td><p class=tiny>copyright &copy; 2000-2004 vorbis team</p></td>
1248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
1258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</tr><tr>
1268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<td><p class=tiny>libvorbisenc documentation</p></td>
1278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
1288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</tr>
1298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</table>
1308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</body>
1328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</html>
134