Recommended Ogg Vorbis: Difference between revisions

From Hydrogenaudio Knowledgebase
(various source code tunings, should now be cleaner wiki code with better XHTML compliance)
Line 1: Line 1:
[[image:fish_logo.png|right|]]  
[[Image:fish_logo.png|right|]]
[[Ogg Vorbis|Vorbis]], being a continuously developed standard, improves all the time. Plus, being an open (i.e. patent-free) standard, it has many 'third-parties' that contribute, discuss, and work to improve the project.
[[Vorbis]], being a continuously developed standard, improves all the time. Plus, being an open (i.e. patent-free) standard, it has many 'third-parties' that contribute, discuss, and work to improve the project.


Here you can find some guidelines on which utilities to use, and what settings will provide you with the best quality.
Here you can find some guidelines on which utilities to use, and what settings will provide you with the best quality.


 
= History =
=History=  
 
(For a highly detailed description of Vorbis history, check out OggZealot's [http://www.hydrogenaudio.org/forums/index.php?showtopic=15274&view=findpost&p=153268 Ogg Vorbis Historic] where Monty also adds a few more details too).
(For a highly detailed description of Vorbis history, check out OggZealot's [http://www.hydrogenaudio.org/forums/index.php?showtopic=15274&view=findpost&p=153268 Ogg Vorbis Historic] where Monty also adds a few more details too).


Ogg Vorbis reached version 1.0 in '''July 2002'''. It is the official [http://www.xiph.org/ Xiph.org] encoder ''(the one you get from vorbis.com)''. HA codec developer, Garf, did his own tunings, based on version 1.0 to produce GT3b1 and GT3b2. Both encoders showed improved [[pre echo]] handling for ''q'' values of ''5 to 10''. It was later judged in an internal listening test that GT3b1 was the better of the two. There was a minor bugfix update earlier that year in March, which only appeared in the CVS at Xiph.org. This consisted of very minor bug fixes, which do more to correct odd problems that may occur rather than improving quality, including ''(garbled noise output and gaps in streams)''. This was referred to as Post 1.0 CVS. Quality problems that mainly affected low bitrates were later addressed in a new bugfix ''(1.0.1)'' that was released.
(Ogg) Vorbis reached version 1.0 in '''July 2002'''. It is the official [http://www.xiph.org/ Xiph.org] encoder ''(the one you get from vorbis.com)''. HA codec developer, Garf, did his own tunings, based on version 1.0 to produce GT3b1 and GT3b2. Both encoders showed improved [[pre echo]] handling for ''q'' values of ''5 to 10''. It was later judged in an internal listening test that GT3b1 was the better of the two. There was a minor bugfix update earlier that year in March, which only appeared in the CVS at Xiph.org. This consisted of very minor bug fixes, which do more to correct odd problems that may occur rather than improving quality, including ''(garbled noise output and gaps in streams)''. This was referred to as Post 1.0 CVS. Quality problems that mainly affected low bitrates were later addressed in a new bugfix ''(1.0.1)'' that was released.


Post 1.0.1 CVS was released late '''December 2003''' by Monty at Xiph, and includes a true [[CBR]] template. In order to simplify the situation where we had two encoders ''(1.0.1 and GT3b1)'', OggDropXPd developer John33 merged the sources to give us GT3b2. Once the 128 kbps multiformat test was completed, Aoyumi's [[aoTuV]] Vorbis tuning was determined to be the best Vorbis encoder. After the success of aoTuV beta 2 encoder, Xiph.Org merged their tunings into the official CVS branch to produce the long-awaited Vorbis 1.1. Aoyumi's later release of '''aoTuV beta 4''' encoder as of '''November 2005''' significantly improves Vorbis' quality while increasing the compression ratio slightly.  
Post 1.0.1 CVS was released late '''December 2003''' by Monty at Xiph, and includes a true [[CBR]] template. In order to simplify the situation where we had two encoders ''(1.0.1 and GT3b1)'', OggDropXPd developer John33 merged the sources to give us GT3b2. Once the 128 kbps multiformat test was completed, Aoyumi's [[aoTuV]] Vorbis tuning was determined to be the best Vorbis encoder. After the success of aoTuV beta 2 encoder, Xiph.Org merged their tunings into the official CVS branch to produce the long-awaited Vorbis 1.1. Aoyumi's later release of '''aoTuV beta 4''' encoder as of '''November 2005''' significantly improves Vorbis' quality while increasing the compression ratio slightly.


Later on, Aoyumi released '''aoTuV beta 4.5''' (later bugfixed with '''aoTuV beta 4.51''') in '''December 2005''', which improves low bit-rate quality even more. <font style="color:blue;">'''After extensive testing by Hydrogenaudio enthusiasts, aoTuV beta 4.51 is re-branded to <font style="color:red;">aoTuV Release 1</font>, and it became the recommended encoder of Hydrogenaudio.'''</font>
Later on, Aoyumi released '''aoTuV beta 4.5''' (later bugfixed with '''aoTuV beta 4.51''') in '''December 2005''', which improves low bit-rate quality even more. <span style="color:blue;">'''After extensive testing by Hydrogenaudio enthusiasts, aoTuV beta 4.51 is re-branded to <span style="color:red;">aoTuV Release 1</span>, and it became the recommended encoder of Hydrogenaudio.'''</span>


Aoyumi keeps tuning aoTuV. The newest aoTuV encoder is <font style="color:red;">aoTuV Beta 5</font>. It is now undergoing peer-review at Hydrogenaudio.
Aoyumi keeps tuning aoTuV. The newest aoTuV encoder is <span style="color:red;">aoTuV Beta 5</span>. It is now undergoing peer-review at Hydrogenaudio.


Near the end of 2005, after aoTuV beta 4.51 was released, Xiph.org released '''Vorbis 1.1.2'''. Unfortunatly it only provides bugfixes to Vorbis 1.1.1. Although this is the 'official' version, it is '''not recommended''' by HA. If you are not interested in the latest "bleeding edge" improvements, you are welcome to use the latest release from Xiph.org '''Vorbis 1.1.2''' library.  
Near the end of 2005, after aoTuV beta 4.51 was released, Xiph.org released '''Vorbis 1.1.2'''. Unfortunatly it only provides bugfixes to Vorbis 1.1.1. Although this is the 'official' version, it is '''not recommended''' by HA. If you are not interested in the latest “bleeding edge” improvements, you are welcome to use the latest release from Xiph.org '''Vorbis 1.1.2''' library.


''Note: Xiph.org does not maintain the binaries, but rather provides newest updates and releases to libogg and libvorbis, etc.''
''Note: Xiph.org does not maintain the binaries, but rather provides newest updates and releases to libogg and libvorbis, etc.''


=Recommended Vorbis Encoders=
= Recommended Vorbis Encoders =
 
''(adapted from [http://www.hydrogenaudio.org/forums/index.php?showtopic=15049 Recommended Encoder and Settings] post compiled by QuantumKnot)''
''(adapted from [http://www.hydrogenaudio.org/forums/index.php?showtopic=15049 Recommended Encoder and Settings] post compiled by QuantumKnot)''


==Windows binaries==
== Windows binaries ==
 
John33's oggenc2.8 is a special version of the (Ogg) Vorbis encoder. “Features include compression from lossless files (Monkeys Audio, LPAC, FLAC, OptimFROG, WavPack and Shorten requires presence of decoders), and the ability to specify 'padding' in the headers for subsequent insertion of Tags” (from Ogg Vorbis page at rarewares).
John33's oggenc2.8 is a special version of the Ogg Vorbis encoder. "Features include compression from lossless files (Monkeys Audio, LPAC, FLAC, OptimFROG, WavPack and Shorten - requires presence of decoders), and the ability to specify 'padding' in the headers for subsequent insertion of Tags" (from Ogg Vorbis page at rarewares).


* '''[http://www.rarewares.org/files/ogg/oggenc2.83-aoTuVr1generic.zip oggenc2.83 aoTuV Release 1 (MSVC compile)]'''
* '''[http://www.rarewares.org/files/ogg/oggenc2.83-aoTuVr1generic.zip oggenc2.83 aoTuV Release 1 (MSVC compile)]'''
Line 33: Line 29:
* '''[http://www.rarewares.org/files/ogg/oggenc2.83-aoTuVr1P4.zip oggenc2.83 aoTuV Release 1 (ICL compile for P4/AMD Sempron, Athlon 64))]'''
* '''[http://www.rarewares.org/files/ogg/oggenc2.83-aoTuVr1P4.zip oggenc2.83 aoTuV Release 1 (ICL compile for P4/AMD Sempron, Athlon 64))]'''


If you prefer a nice drag-and-drop interface, then you can try John33's OggDropXPd (Windows only). "Features include compression from lossless files ([[Monkey's Audio]], [[LPAC]], [[FLAC]] and [[OptimFROG]]), auto-tagging, renaming of encoded files, setting of advanced encoder parameters, use of VorbisGain tags on decode, Playlist (.m3u) creation, and others" (from Ogg Vorbis page at rarewares).
If you prefer a nice drag-and-drop interface, then you can try John33's OggDropXPd (Windows only). “Features include compression from lossless files ([[Monkey's Audio]], [[LPAC]], [[FLAC]] and [[OptimFROG]]), auto-tagging, renaming of encoded files, setting of advanced encoder parameters, use of VorbisGain tags on decode, Playlist (.m3u) creation, and others” (from Ogg Vorbis page at rarewares).


* '''[http://www.rarewares.org/dancer/dancer.php?f=100 OggDropXPd v1.8.9 aoTuV Release 1 (MSVC compile)]'''
* '''[http://www.rarewares.org/dancer/dancer.php?f=100 OggDropXPd v1.8.9 aoTuV Release 1 (MSVC compile)]'''
Line 41: Line 37:
'''Note:''' If the above links do not work, then it is most likely caused by a new version of John33's utilities. In that case, go directly to [http://www.rarewares.org/ogg.html the Ogg Vorbis page at rarewares].
'''Note:''' If the above links do not work, then it is most likely caused by a new version of John33's utilities. In that case, go directly to [http://www.rarewares.org/ogg.html the Ogg Vorbis page at rarewares].


<font style="color:green;">''(OggDropXPd guide is [[OggDropXPd|here]])''</font>
<span style="color:green;">''(OggDropXPd guide is [[OggDropXPd|here]])''</span>


==Mac OS/X binaries==  
== Mac OS/X binaries ==
 
* '''[http://www.rarewares.org/files/ogg/vorbis_tools_1.1.1_aoTuVb4.51.zip Vorbis Tools (oggenc, oggdec, etc.) version 1.1.1 and libogg 1.1.2]''' using aoTuVb4.51 for MacOS X.
* '''[http://www.rarewares.org/files/ogg/vorbis_tools_1.1.1_aoTuVb4.51.zip Vorbis Tools (oggenc, oggdec, etc.) version 1.1.1 and libogg 1.1.2]''' using aoTuVb4.51 for MacOS X.  
: These tools were compiled by krmathis for OS/X.
: These tools were compiled by krmathis for OS/X.  


''Note: libogg 1.1.2 is used, however this has very little effect on the output of files produced.''
''Note: libogg 1.1.2 is used, however this has very little effect on the output of files produced.''


==Linux binaries==
== Linux binaries ==
 
* '''[http://www.rarewares.org/quantumknot/oggenc-aotuv451.gz oggenc aoTuV beta 4.51 and libogg 1.1.3 (Static GCC 4 compile)]''' '''<span style="color:blue;">with impulse_trigger_profile</span>'''
* '''[http://www.rarewares.org/quantumknot/oggenc-aotuv451.gz oggenc aoTuV beta 4.51 and libogg 1.1.3 (Static GCC 4 compile)]''' '''<font style="color:blue;">with impulse_trigger_profile</font>'''
: This static GCC 4 binary was compiled by QuantumKnot.
: This static GCC 4 binary was compiled by QuantumKnot.  


* '''[http://artfwo.googlepages.com/oggenc-aotuvb5.bz2 oggenc aoTuV beta 5 with libogg 1.1.3 and FLAC read support (Static GCC 4 compile)]'''
* '''[http://artfwo.googlepages.com/oggenc-aotuvb5.bz2 oggenc aoTuV beta 5 with libogg 1.1.3 and FLAC read support (Static GCC 4 compile)]'''
: This static GCC 4 binary was compiled by artfwo.  
: This static GCC 4 binary was compiled by artfwo.


''Note: There is no Linux Oggenc2.x that has been compiled with Lancer Optimizations as of yet (third-parties with a access to a unix environment are encouraged to try and compile one themselves if they have access to the sources, see below.)''
''Note: There is no Linux Oggenc2.x that has been compiled with Lancer Optimizations as of yet (third-parties with a access to a unix environment are encouraged to try and compile one themselves if they have access to the sources, see below.)''


==3rd party source code==
== 3rd party source code ==
 
These are other (Ogg) Vorbis encoders that were tuned by 3rd party developers (outside of Xiph.Org).
These are other Ogg Vorbis encoders that were tuned by 3rd party developers (outside of Xiph.Org).


* '''[http://www.geocities.jp/aoyoume/aotuv/ aoTuV (Aoyumi's Tuned Vorbis)]''' -- contains modified source code written in C and downloads of binaries.
* '''[http://www.geocities.jp/aoyoume/aotuv/ aoTuV (Aoyumi's Tuned Vorbis)]''' contains modified source code written in C and downloads of binaries.


: ''The source-code contains modifications mostly to the psychoacoustics model and bitrate allocation, i.e [http://trac.xiph.org/browser/trunk/vorbis/lib/psy.c#L287 psy.c] (aotuv_hf_ weighting, Line 287)''
: ''The source-code contains modifications mostly to the psychoacoustics model and bitrate allocation, i.e [http://trac.xiph.org/browser/trunk/vorbis/lib/psy.c#L287 psy.c] (aotuv_hf_ weighting, Line 287)''


: '''aoTuV Release 1 <font style="color:blue;">-- The recommended encoder</font>'''
: '''aoTuV Release 1 <span style="color:blue;">The recommended encoder</span>'''


:: This version (re-branded from beta 4.51) is an improvement over aoTuV beta 4, which although based on libvorbis 1.1.1, gives a better quality at low to medium bitrates. Since beta 4, aoTuV includes a -q -2 option for the lowest bitrate. According to guruboolez' latest listening test on classical music, aoTuV beta 4 performed magnificently well at -q 6!! ''(see Aoyumi's website above for more information)''
:: This version (re-branded from beta 4.51) is an improvement over aoTuV beta 4, which although based on libvorbis 1.1.1, gives a better quality at low to medium bitrates. Since beta 4, aoTuV includes a -q -2 option for the lowest bitrate. According to guruboolez' latest listening test on classical music, aoTuV beta 4 performed magnificently well at -q 6!! ''(see Aoyumi's website above for more information)''
Line 74: Line 67:
:: Many Hydrogenaudio enthusiasts report that Release 1 gives even better quality for low bit-rates. -q 1.5 works for streaming, even good enough.
:: Many Hydrogenaudio enthusiasts report that Release 1 gives even better quality for low bit-rates. -q 1.5 works for streaming, even good enough.


: '''aoTuV Beta 5 <font style="color:blue;">-- The latest encoder</font>'''
: '''aoTuV Beta 5 <span style="color:blue;">The latest encoder</span>'''


:: This version is the latest tuning. It improves further on low-bitrate encoding, without sacrificing compression. '''It is currently undergoing a peer-review process at Hydrogenaudio.'''
:: This version is the latest tuning. It improves further on low-bitrate encoding, without sacrificing compression. '''It is currently undergoing a peer-review process at Hydrogenaudio.'''
Line 80: Line 73:
: See [[Compiling aoTuV]] for information on how to compile it for Linux.
: See [[Compiling aoTuV]] for information on how to compile it for Linux.


==Optimized binaries==
== Optimized binaries ==
 
These are highly optimized encoders developed by the '''[http://homepage3.nifty.com/blacksword/index_e.htm Ogg Vorbis Acceleration Project]''' codenamed [[Lancer]]. They are much faster than the standard binary builds having negligible to nearly no effects on audio quality. These include sped-up routines, i.e ''mdct.c''
These are highly optimized encoders developed by the '''[http://homepage3.nifty.com/blacksword/index_e.htm Ogg Vorbis Acceleration Project]''' codenamed [[Lancer]]. They are much faster than the standard binary builds having negligible to nearly no effects on audio quality. These include sped-up routines, i.e ''mdct.c''
 
'''''These optimized encoders are rapidly changing currently, as BlackSword finds new ways to accelerate, and in the process uncovers new bugs. Please check the "Lancer homepage" link below for the latest suite.'''''


On '''[http://homepage3.nifty.com/blacksword/index.htm Lancer homepage]''' you can find the latest versions of Oggenc, [[OggDropXPd]], and Dynamic Link Libraries, with optimizations for SSE, SSE2, SSE3 and multi-threading instruction sets.  
'''''These optimized encoders are rapidly changing currently, as BlackSword finds new ways to accelerate, and in the process uncovers new bugs. Please check the “Lancer homepage” link below for the latest suite.'''''


<font style="color:black;">''Note: Output of Lancer may be slightly different from output of 'standard' aoTuV. This is due to the difference of floating-point rounding: Lancer uses 64-bit SSE instructions, in contrast to the standard aoTuV use of 80-bit FP instructions. The output difference between both binaries should not be audible at all. In fact, tests have proven that playback of Lancer's output is indistinguishable from playback of standard aoTuV output.'' </font>
On '''[http://homepage3.nifty.com/blacksword/index.htm Lancer homepage]''' you can find the latest versions of Oggenc, [[OggDropXPd]], and Dynamic Link Libraries, with optimizations for SSE, SSE2, SSE3 and multi-threading instruction sets.


=Released Binaries=
''Note: Output of Lancer may be slightly different from output of 'standard' aoTuV. This is due to the difference of floating-point rounding: Lancer uses 64-bit SSE instructions, in contrast to the standard aoTuV use of 80-bit FP instructions. The output difference between both binaries should not be audible at all. In fact, tests have proven that playback of Lancer's output is indistinguishable from playback of standard aoTuV output.''


How do I know which encoder was used to make this particular Ogg Vorbis file?
= Released Binaries =
How do I know which encoder was used to make this particular (Ogg) Vorbis file?


Using either the ''ogginfo'' program or file info in your player, you can tell from the vendor tag:
Using either the ''ogginfo'' program or file info in your player, you can tell from the vendor tag:


If you aren't interested in the latest compiles feel free to use Vorbis 1.1.2 libraries.  
If you aren't interested in the latest compiles feel free to use Vorbis 1.1.2 libraries.
 


{| border="0" style="margin-left:2px; color:black; background-color:white; border:1px dotted black; text-align:left;" cellpadding="4" cellspacing="0"
{| border="0" style="margin-left:2px; border:1px dotted;" cellpadding="4" cellspacing="0"
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
! Vendor Tag !! Encoder !! Note
! Vendor Tag !! Encoder !! Note
|-
|-
| Xiphophorus libVorbis I 20000508
| Xiphophorus libVorbis I 20000508
| '''<font style="color:blue;">1.0 Beta 1 or Beta 2 </font>'''
| '''<span style="color:blue;">1.0 Beta 1 or Beta 2 </span>'''
|  
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiphophorus libVorbis I 20001031
| Xiphophorus libVorbis I 20001031
| '''<font style="color:blue;">1.0 Beta 3 </font>
| '''<span style="color:blue;">1.0 Beta 3 </span>
|  
|
|-  
|-
| Xiphophorus libVorbis I 20010225
| Xiphophorus libVorbis I 20010225
| '''<font style="color:blue;">1.0 Beta 4 </font>
| '''<span style="color:blue;">1.0 Beta 4 </span>
|  
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiphophorus libVorbis I 20010615
| Xiphophorus libVorbis I 20010615
| '''<font style="color:blue;">1.0 RC1 </font>
| '''<span style="color:blue;">1.0 RC1 </span>
|  
|
|-
|-
| Xiphophorus libVorbis I 20010813
| Xiphophorus libVorbis I 20010813
| '''<font style="color:blue;">1.0 RC2 </font>
| '''<span style="color:blue;">1.0 RC2 </span>
|
|
|- style="background-color: #eeeeee;"  
|- style="background-color: #eeeeee;"
| Xiphophorus libVorbis I 20010816 (gtune 1)
| Xiphophorus libVorbis I 20010816 (gtune 1)
| '''<font style="color:blue;">1.0 RC2 GT1 </font>
| '''<span style="color:blue;">1.0 RC2 GT1 </span>
|  
|
|-  
|-
| Xiphophorus libVorbis I 20011014 (GTune 2)
| Xiphophorus libVorbis I 20011014 (GTune 2)
| '''<font style="color:blue;">1.0 RC2 GT2 </font>
| '''<span style="color:blue;">1.0 RC2 GT2 </span>
|  
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiphophorus libVorbis I 20011217
| Xiphophorus libVorbis I 20011217
| '''<font style="color:blue;">1.0 RC3 </font>
| '''<span style="color:blue;">1.0 RC3 </span>
|  
|
|-  
|-
| Xiphophorus libVorbis I 20011231
| Xiphophorus libVorbis I 20011231
| '''<font style="color:blue;">1.0 RC3 </font>
| '''<span style="color:blue;">1.0 RC3 </span>
|  
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiph.Org libVorbis I 20020717
| Xiph.Org libVorbis I 20020717
| '''<font style="color:blue;">1.0 </font>
| '''<span style="color:blue;">1.0 </span>
|
|
|-
|-
| Xiph.Org/Sjeng.Org libVorbis I 20020717 (GTune 3, beta 1)
| Xiph.Org/Sjeng.Org libVorbis I 20020717 (GTune 3, beta 1)
| '''<font style="color:blue;">GT3b1 </font>
| '''<span style="color:blue;">GT3b1 </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiph.Org libVorbis I 20030308
| Xiph.Org libVorbis I 20030308
| '''<font style="color:blue;">Post 1.0 CVS </font>
| '''<span style="color:blue;">Post 1.0 CVS </span>
|  
|
|-  
|-
| Xiph.Org libVorbis I 20030909
| Xiph.Org libVorbis I 20030909
| '''<font style="color:blue;">1.0.1 </font>
| '''<span style="color:blue;">1.0.1 </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiph.Org/Sjeng.Org libVorbis I 20030909 (GTune 3, beta 2) EXPERIMENTAL
| Xiph.Org/Sjeng.Org libVorbis I 20030909 (GTune 3, beta 2) EXPERIMENTAL
| '''<font style="color:blue;">Experimental GT3b2 </font>
| '''<span style="color:blue;">Experimental GT3b2 </span>
|  
|
|-  
|-
| Xiph.Org libVorbis I 20031230 (1.0.1)
| Xiph.Org libVorbis I 20031230 (1.0.1)
| '''<font style="color:blue;">Post 1.0.1 CVS </font>
| '''<span style="color:blue;">Post 1.0.1 CVS </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiph.Org/Sjeng.Org libVorbis I 20031230 (GTune 3, beta 2)
| Xiph.Org/Sjeng.Org libVorbis I 20031230 (GTune 3, beta 2)
| '''<font style="color:blue;">GT3b2 </font>
| '''<span style="color:blue;">GT3b2 </span>
|  
|
|-  
|-
| AO; aoTuV b2 [20040420] (based on Xiph.Org's 1.0.1)
| AO; aoTuV b2 [20040420] (based on Xiph.Org's 1.0.1)
| '''<font style="color:blue;">aoTuV Beta 2 </font>
| '''<span style="color:blue;">aoTuV Beta 2 </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| Xiph.Org libVorbis I 20040629
| Xiph.Org libVorbis I 20040629
| '''<font style="color:blue;">Xiph.Org Vorbis 1.1 or Xiph.Org Vorbis 1.1 RC1 </font>
| '''<span style="color:blue;">Xiph.Org Vorbis 1.1 or Xiph.Org Vorbis 1.1 RC1 </span>
|  
|
|-  
|-
| Xiph.Org libVorbis I 20040920
| Xiph.Org libVorbis I 20040920
| '''<font style="color:blue;">Xiph.Org Vorbis 1.1 with impulse_trigger_profile </font>
| '''<span style="color:blue;">Xiph.Org Vorbis 1.1 with impulse_trigger_profile </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| AO; aoTuV b3 [20041120] (based on Xiph.Org's libVorbis)
| AO; aoTuV b3 [20041120] (based on Xiph.Org's libVorbis)
| '''<font style="color:blue;"> aoTuV Beta 3 </font>
| '''<span style="color:blue;"> aoTuV Beta 3 </span>
|  
|
|-  
|-
| Xiph.Org libVorbis I 20050304
| Xiph.Org libVorbis I 20050304
| '''<font style="color:blue;"> Xiph.Org Vorbis 1.1.1 or Xiph.Org Vorbis 1.1.2 </font>
| '''<span style="color:blue;"> Xiph.Org Vorbis 1.1.1 or Xiph.Org Vorbis 1.1.2 </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| AO; aoTuV b4 [20050617] (based on Xiph.Org's libVorbis)
| AO; aoTuV b4 [20050617] (based on Xiph.Org's libVorbis)
| '''<font style="color:blue;">aoTuV Beta 4 </font>
| '''<span style="color:blue;">aoTuV Beta 4 </span>
|  
|
|-  
|-
| BS; Lancer [20050709] (based on aoTuV b4 [20050617])
| BS; Lancer [20050709] (based on aoTuV b4 [20050617])
| '''<font style="color:blue;">Lancer based on aoTuV Beta 4</font>
| '''<span style="color:blue;">Lancer based on aoTuV Beta 4</span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| AO; aoTuV b4a [20051105] (based on Xiph.Org's libVorbis)
| AO; aoTuV b4a [20051105] (based on Xiph.Org's libVorbis)
| '''<font style="color:blue;">aoTuV Beta 4.5 </font>
| '''<span style="color:blue;">aoTuV Beta 4.5 </span>
|  
|
|-  
|-
| AO; aoTuV b4b [20051117] (based on Xiph.Org's libVorbis)
| AO; aoTuV b4b [20051117] (based on Xiph.Org's libVorbis)
| '''<font style="color:blue;">aoTuV Beta 4.51 </font>
| '''<span style="color:blue;">aoTuV Beta 4.51 </span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| BS; Lancer [20051121] (based on aoTuV b4b [20051117])
| BS; Lancer [20051121] (based on aoTuV b4b [20051117])
| '''<font style="color:blue;">Lancer based on aoTuV Beta 4.51</font>
| '''<span style="color:blue;">Lancer based on aoTuV Beta 4.51</span>
|
|
|-  
|-
| AO; aoTuV pre-beta5 [20060321] (based on Xiph.Org's libVorbis)
| AO; aoTuV pre-beta5 [20060321] (based on Xiph.Org's libVorbis)
| '''<font style="color:blue;">aoTuV Beta 5</font>
| '''<span style="color:blue;">aoTuV Beta 5</span>
|
|
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| BS; Lancer(''xxx'') [''yyyymmdd''] (based on aoTuV b4b [20051117])
| BS; Lancer(''xxx'') [''yyyymmdd''] (based on aoTuV b4b [20051117])
| '''<font style="color:blue;">Processor-specific Lancer based on aoTuV Beta 4.51</font>
| '''<span style="color:blue;">Processor-specific Lancer based on aoTuV Beta 4.51</span>
| (1)
| (1)
|-  
|-
| BS; Lancer(''xxx'') [''yyyymmdd''] (based on aoTuV Release 1 [20051117])
| BS; Lancer(''xxx'') [''yyyymmdd''] (based on aoTuV Release 1 [20051117])
| '''<font style="color:blue;">Processor-specific Lancer based on aoTuV Release 1</font>
| '''<span style="color:blue;">Processor-specific Lancer based on aoTuV Release 1</span>
| (1)
| (1)
|}
|}


<div style="margin-left:10px;">
<div style="margin-left:10px;">
Line 225: Line 214:
</div>
</div>


=Recommended Encoder Settings=
= Recommended Encoder Settings =
 
'''Refer to the table below. For best results, start at -q 2 and''' [[ABX]] '''your way up.'''<br />
<font style="color:black;">'''Refer to the table below. For best results, start at -q 2 and''' [[ABX]] '''your way up.'''<br></font>  
''Ultimately, the best -q setting will depend on your specific needs. Feel free to experiment.''
''Ultimately, the best -q setting will depend on your specific needs. Feel free to experiment.''<br>


<u>'''General Command Line Usage:'''</u>
<u>'''General Command Line Usage:'''</u>


  <font style="color:green;">'''oggenc -q <font style="color:red;">n</font> inputfile.wav '''</font>  
  <span style="color:green;">'''oggenc -q <span style="color:red;">n</span> inputfile.wav '''</span>


:''where'' '''<font style="color:red;">n</font>''' ''is a number from -1 to 10, fractions accepted (using comma or period, depending on where the tool is compiled)''<br>e.g. <font style="color:green;">'''oggenc -q <font style="color:red;">5</font> inputfile.wav </font>'''
:''where'' '''<span style="color:red;">n</span>''' ''is a number from -1 to 10, fractions accepted (using comma or period, depending on where the tool is compiled)''<br />e.g. <span style="color:green;">'''oggenc -q <span style="color:red;">5</span> inputfile.wav </span>'''


'''Notes:'''
'''Notes:'''
* Most standard oggenc binaries can input lossless FLAC, WavPack, etc files as well (depending upon oggenc version)
* Most standard oggenc binaries can input lossless FLAC, WavPack, etc files as well (depending upon oggenc version)
* ''oggenc2.7'' and later are the only versions of oggenc that conform to the '''WAVEFORMATEXTENSIBLE''' header for outputing and decoding multi-channel Vorbis files (3 to 6 channels) in compliance with the Vorbis I decoding specification. Encoding multichannel content might still produce sub-optimal files, if lossless channel coupling is not used i.e ''(=> -q 6 and up)'', due to modifications that need to be performed in libvorbis for proper channel coupling. Encoding assumes source material is CD audio content or PCM equivalent. ''  
* ''oggenc2.7'' and later are the only versions of oggenc that conform to the '''WAVEFORMATEXTENSIBLE''' header for outputing and decoding multi-channel Vorbis files (3 to 6 channels) in compliance with the Vorbis I decoding specification. Encoding multichannel content might still produce sub-optimal files, if lossless channel coupling is not used i.e ''(=> -q 6 and up)'', due to modifications that need to be performed in libvorbis for proper channel coupling. Encoding assumes source material is CD audio content or PCM equivalent. ''
* The current oggenc and libvorbis API don't support the capabilities of full "bitrate peeling" yet. Experimental peelers exist, but only for testings purposes. ''i.e (Vinjey Systems)''. If you are a developer and are interested in re-writing the encoder to support peeling (retraining some VQ books, etc), there is $250.00 bounty for implementing it into libvorbis [https://launchpad.net/bounties/ogg-vorbis-bitrate-peeling peeling bounty].  
* The current oggenc and libvorbis API don't support the capabilities of full “bitrate peeling” yet. Experimental peelers exist, but only for testings purposes. ''i.e (Vinjey Systems)''. If you are a developer and are interested in re-writing the encoder to support peeling (retraining some VQ books, etc), there is $250.00 bounty for implementing it into libvorbis [https://launchpad.net/bounties/ogg-vorbis-bitrate-peeling peeling bounty].




{| border="0" style="margin-left:50px; color:black; background-color:white; border:1px dotted black; text-align:center;" cellpadding="5" cellspacing="0"
{| border="0" style="margin-left:50px; border:1px dotted; text-align:center;" cellpadding="5" cellspacing="0"
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
! Switch !! VBR target<br>(kbit/s) !! VBR range<br>(kbit/s) !! [[Channel coupling|Channel<br>Coupling]] !! [[Noise normalization|Noise<br>Normalization]] !! Note
! Switch !! VBR target<br />(kbit/s) !! VBR range<br />(kbit/s) !! [[Channel coupling|Channel<br />Coupling]] !! [[Noise normalization|Noise<br />Normalization]] !! Note
|-
|-
| -q -2 || ~32 || ~32 - ~64 || point/lossless || yes || (1)
| -q -2 || ~32 || ~32 ~64 || point/lossless || yes || (1)
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| -q -1 || ~48 || ~48 - ~64 || point/lossless || yes || (2)
| -q -1 || ~48 || ~48 ~64 || point/lossless || yes || (2)
|-  
|-
| -q 0 || ~64 || ~64 - ~80 || point/lossless || yes ||  
| -q 0 || ~64 || ~64–~80 || point/lossless || yes ||
|- style="background-color: #eeeeee;"
| -q 1 || ~80 || ~80 – ~96 || point/lossless || yes || (3)
|-
| -q 2 || ~96 || ~96 – ~112 || point/lossless || yes ||
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| -q 1 || ~80 || ~80 - ~96 || point/lossless || yes || (3)
| -q 3 || ~112 || ~112 ~128 || point/lossless || yes ||
|- 
|-
| -q 2 || ~96 || ~96 - ~112 || point/lossless || yes || 
| -q 4 || ~128 || ~128 ~160 || point/lossless || no ||
|- style="background-color: #eeeeee;"
| -q 3 || ~112 || ~112 - ~128 || point/lossless || yes ||  
|-  
| -q 4 || ~128 || ~128 - ~160 || point/lossless || no ||  
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| -q 5 || ~160 || ~160 - ~192 || point/lossless || no || (4)
| -q 5 || ~160 || ~160 ~192 || point/lossless || no || (4)
|-  
|-
| -q 6 || ~192 || ~192 - ~224 || lossless || no ||  
| -q 6 || ~192 || ~192 ~224 || lossless || no ||
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| -q 7 || ~224 || ~224 - ~256 || lossless || no ||
| -q 7 || ~224 || ~224 ~256 || lossless || no ||
|-
|-
| -q 8 || ~256 || ~256 - ~320 || lossless || no ||
| -q 8 || ~256 || ~256 ~320 || lossless || no ||
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| -q 9 || ~320 || ~320 - ~500 || lossless || no ||  
| -q 9 || ~320 || ~320 ~500 || lossless || no ||
|-  
|-
| -q 10 || ~500 || ~500 - ~1000 || lossless || no ||
| -q 10 || ~500 || ~500 ~1000 || lossless || no ||
|}
|}




<div style="margin-left:30px;">
<div style="margin-left:30px;">
(1)'' Only supported on aoTuVb3 and newer ''<br>
(1)'' Only supported on aoTuVb3 and newer ''<br />
(2)'' Bitrate of 48 kbit/s is only for aoTuVb3 and newer. Earlier versions and Xiph.org versions use a bitrate of 45 kbit/s ''<br>
(2)'' Bitrate of 48 kbit/s is only for aoTuVb3 and newer. Earlier versions and Xiph.org versions use a bitrate of 45 kbit/s ''<br />
(3)'' Reports seem to indicate that aoTuV Release 1 <font style="color:red;">-q 1</font> provides good quality for streaming ''<br>
(3)'' Reports seem to indicate that aoTuV Release 1 <span style="color:red;">-q 1</span> provides good quality for streaming ''<br />
(4)'' Most users agree <font style="color:red;">-q 5</font> achieves transparency, if the source is the original or [[lossless]]. It is not transparent in the case of [[transcoding]] from lossy source '''(strongly frowned upon)'''''
(4)'' Most users agree <span style="color:red;">-q 5</span> achieves transparency, if the source is the original or [[lossless]]. It is not transparent in the case of [[transcoding]] from lossy source '''(strongly frowned upon)'''''


If you need to know what '''lowpass settings''' are used for each quality level, see [http://www.hydrogenaudio.org/forums/index.php?showtopic=15049&st=160&p=357461&#entry357461 this HA thread]. ''(It is not recommended that you adjust these)''
If you need to know what '''lowpass settings''' are used for each quality level, see [http://www.hydrogenaudio.org/forums/index.php?showtopic=15049&st=160&p=357461&#entry357461 this HA thread]. ''(It is not recommended that you adjust these)''
</div>
</div>


=Advanced Encoder Settings=
= Advanced Encoder Settings =
=== Reducing Pre-echo ===
''This is applicable to Vorbis 1.1; it <u>may</u> or <u>may not</u> be applicable to aoTuV releases.''


===Reducing Pre-echo===
Generally, using the recommended settings above will give the best quality. There may be cases where Vorbis 1.1 will fail to reproduce sharp attacks or transients in your music, causing [[pre echo]]. In which case, you can use the <span style="color:blue;">'''impulse_noisetune'''</span> advanced encode switch:
<font style="color:black;">''This is applicable to Vorbis 1.1; it <u>may</u> or <u>may not</u> be applicable to aoTuV releases.''</font>


Generally, using the recommended settings above will give the best quality. There may be cases where Vorbis 1.1 will fail to reproduce sharp attacks or transients in your music, causing [[pre echo]]. In which case, you can use the <font style="color:blue;">'''impulse_noisetune'''</font> advanced encode switch: <br><br>
<u>'''General Command Line Usage:'''</u>
<u>'''General Command Line Usage:'''</u>
  <font style="color: green;">'''oggenc -q '''<font style="color:red;">n</font>''' --advanced-encode-option impulse_noisetune=<font style="color:red;">p</font> inputfile.wav'''</font>
  <span style="color: green;">'''oggenc -q '''<span style="color:red;">n</span>''' --advanced-encode-option impulse_noisetune=<span style="color:red;">p</span> inputfile.wav'''</span>
:'''where <font style="color:red;"><b>p</b></font> is a number from 0 to -15'''
:'''where <span style="color:red;">''p''</span> is a number from 0 to -15'''
:e.g. <font style="color: green;">'''oggenc -q '''<font style="color:red;">5</font>''' --advanced-encode-option impulse_noisetune=<font style="color:red;">-5</font> inputfile.wav'''</font>
:e.g. <span style="color: green;">'''oggenc -q '''<span style="color:red;">5</span>''' --advanced-encode-option impulse_noisetune=<span style="color:red;">-5</span> inputfile.wav'''</span>


Note that the lower the number (toward -15) for impulse_noisetune, the higher the bitrate will fluctuate in passages of music filled with transient attacks (and the final average bitrate may be much higher than the nominal). Therefore, you should try a small value to start off (say <font style="color:red;">'''-5'''</font>) and see if you get acceptable quality. If not, tweak it lower.
Note that the lower the number (toward -15) for impulse_noisetune, the higher the bitrate will fluctuate in passages of music filled with transient attacks (and the final average bitrate may be much higher than the nominal). Therefore, you should try a small value to start off (say <span style="color:red;">'''-5'''</span>) and see if you get acceptable quality. If not, tweak it lower.


===Reducing noise due to microattacks===
=== Reducing noise due to microattacks ===
<font style="color:black;">''This is only valid for some Vorbis encoders that are marked as having </font>''<font style="color:blue;">'''impulse_trigger_profile'''</font>.
''This is only valid for some Vorbis encoders that are marked as having ''<span style="color:blue;">'''impulse_trigger_profile'''</span>.


There are certain parts of some types of music, called "microattacks", where Vorbis will produce a noise (sort of like a puff of steam), which is due to inaccuracies in the block-switching algorithm ''(which can't be corrected)''. Due to the fact the attacks are so fine and close together, Vorbis doesn't switch to impulse short blocks enough, thus "smearing" the reproduction.  
There are certain parts of some types of music, called “microattacks”, where Vorbis will produce a noise (sort of like a puff of steam), which is due to inaccuracies in the block-switching algorithm ''(which can't be corrected)''. Due to the fact the attacks are so fine and close together, Vorbis doesn't switch to impulse short blocks enough, thus “smearing” the reproduction.


By default (with no additional switches), Vorbis selects a different profile for block switching (lower means less switching, higher means more switching) and the default values are shown in the table below:
By default (with no additional switches), Vorbis selects a different profile for block switching (lower means less switching, higher means more switching) and the default values are shown in the table below:


{| border="0" style="margin-left: 150px; color:green; background-color:white; border:1px dotted green; text-align:center;" cellpadding="5" cellspacing="0"
{| border="0" style="margin-left: 150px; color:green; border:1px dotted green; text-align:center;" cellpadding="5" cellspacing="0"
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
! Quality !! Profile !! &nbsp; !! Quality !! Profile
! Quality !! Profile !! &nbsp; !! Quality !! Profile
Line 310: Line 298:
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| 0 || 1 ||  || 6 || 2.7
| 0 || 1 ||  || 6 || 2.7
|-  
|-
| 1 || 1 ||  || 7 || 3
| 1 || 1 ||  || 7 || 3
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| 2 || 1.5 ||  || 8 || 3.7
| 2 || 1.5 ||  || 8 || 3.7
|-
|-  
| 3 || 2 ||  || 9 || 4
| 3 || 2 ||  || 9 || 4
|- style="background-color: #eeeeee;"
|- style="background-color: #eeeeee;"
| 4 || 2 ||  || 10 || 4
| 4 || 2 ||  || 10 || 4
|}
|}


If you encounter this problem on microattacks, you may try the impulse_trigger_profile advanced encode switch, which will change (increase) the profile to your desired value.
If you encounter this problem on microattacks, you may try the impulse_trigger_profile advanced encode switch, which will change (increase) the profile to your desired value.


  <font style="color:green;">'''oggenc -q n --advanced-encode-option impulse_trigger_profile=<font style="color: red;">'''r'''</font> inputfile.wav'''</font>
  <span style="color:green;">'''oggenc -q n --advanced-encode-option impulse_trigger_profile=<span style="color: red;">'''r'''</span> inputfile.wav'''</span>
:''where'' '''<font style="color:red;">r</font>''' ''is a number from 0 to 4, fractions accepted.''
:''where'' '''<span style="color:red;">r</span>''' ''is a number from 0 to 4, fractions accepted.''
 


'''Notes:'''
'''Notes:'''
* There is the possibility that relaxed block switching (higher profiles) may cause other quality problems and create suboptimal Vorbis files. Please use it sparingly and with caution. If in doubt, leave impulse_trigger_profile on default ''(that is, don't use it at all)''
* There is the possibility that relaxed block switching (higher profiles) may cause other quality problems and create suboptimal Vorbis files. Please use it sparingly and with caution. If in doubt, leave impulse_trigger_profile on default ''(that is, don't use it at all)''
* Setting the profile too high will make Vorbis switch to impulse short blocks more often, which will lead to higher bitrate fluctuations. Please be conservative about how you intend to use it.  
* Setting the profile too high will make Vorbis switch to impulse short blocks more often, which will lead to higher bitrate fluctuations. Please be conservative about how you intend to use it.
* This setting has no effect on reducing the level of pre-echo. It can be said to only reduce the ''likelihood'' of [[Pre echo|pre echo]], but the amount of pre-echo is tuned using the <font style="color:blue;">'''impulse_noisetune'''</font> switch instead.
* This setting has no effect on reducing the level of pre-echo. It can be said to only reduce the ''likelihood'' of [[Pre echo|pre echo]], but the amount of pre-echo is tuned using the <span style="color:blue;">'''impulse_noisetune'''</span> switch instead.
* You may try profiles 5 and 6 as substitutes for 3 and 4. Both Profiles 5 and 6, came from 3 and 4 in GT3b2.
* You may try profiles 5 and 6 as substitutes for 3 and 4. Both Profiles 5 and 6, came from 3 and 4 in GT3b2.




You can use both impulse_noisetune and impulse_trigger_profile at the same time, but you will need separate switches, e.g.
You can use both impulse_noisetune and impulse_trigger_profile at the same time, but you will need separate switches, e.g.


  <font style="color: green;">oggenc -q <font style="color:red;">n</font> --advanced-encode-option impulse_noisetune=<font style="color:red;">p</font>
  <span style="color: green;">oggenc -q <span style="color:red;">n</span> --advanced-encode-option impulse_noisetune=<span style="color:red;">p</span>
   --advanced-encode-option impulse_trigger_profile=<font color:red;">r</font> inputfile.wav</font>
   --advanced-encode-option impulse_trigger_profile=<span style="color:red;">r</span> inputfile.wav</span>
 


[[Category:Guides]]
[[Category:Guides]]

Revision as of 16:01, 13 June 2007

Vorbis, being a continuously developed standard, improves all the time. Plus, being an open (i.e. patent-free) standard, it has many 'third-parties' that contribute, discuss, and work to improve the project.

Here you can find some guidelines on which utilities to use, and what settings will provide you with the best quality.

History

(For a highly detailed description of Vorbis history, check out OggZealot's Ogg Vorbis Historic where Monty also adds a few more details too).

(Ogg) Vorbis reached version 1.0 in July 2002. It is the official Xiph.org encoder (the one you get from vorbis.com). HA codec developer, Garf, did his own tunings, based on version 1.0 to produce GT3b1 and GT3b2. Both encoders showed improved pre echo handling for q values of 5 to 10. It was later judged in an internal listening test that GT3b1 was the better of the two. There was a minor bugfix update earlier that year in March, which only appeared in the CVS at Xiph.org. This consisted of very minor bug fixes, which do more to correct odd problems that may occur rather than improving quality, including (garbled noise output and gaps in streams). This was referred to as Post 1.0 CVS. Quality problems that mainly affected low bitrates were later addressed in a new bugfix (1.0.1) that was released.

Post 1.0.1 CVS was released late December 2003 by Monty at Xiph, and includes a true CBR template. In order to simplify the situation where we had two encoders (1.0.1 and GT3b1), OggDropXPd developer John33 merged the sources to give us GT3b2. Once the 128 kbps multiformat test was completed, Aoyumi's aoTuV Vorbis tuning was determined to be the best Vorbis encoder. After the success of aoTuV beta 2 encoder, Xiph.Org merged their tunings into the official CVS branch to produce the long-awaited Vorbis 1.1. Aoyumi's later release of aoTuV beta 4 encoder as of November 2005 significantly improves Vorbis' quality while increasing the compression ratio slightly.

Later on, Aoyumi released aoTuV beta 4.5 (later bugfixed with aoTuV beta 4.51) in December 2005, which improves low bit-rate quality even more. After extensive testing by Hydrogenaudio enthusiasts, aoTuV beta 4.51 is re-branded to aoTuV Release 1, and it became the recommended encoder of Hydrogenaudio.

Aoyumi keeps tuning aoTuV. The newest aoTuV encoder is aoTuV Beta 5. It is now undergoing peer-review at Hydrogenaudio.

Near the end of 2005, after aoTuV beta 4.51 was released, Xiph.org released Vorbis 1.1.2. Unfortunatly it only provides bugfixes to Vorbis 1.1.1. Although this is the 'official' version, it is not recommended by HA. If you are not interested in the latest “bleeding edge” improvements, you are welcome to use the latest release from Xiph.org Vorbis 1.1.2 library.

Note: Xiph.org does not maintain the binaries, but rather provides newest updates and releases to libogg and libvorbis, etc.

Recommended Vorbis Encoders

(adapted from Recommended Encoder and Settings post compiled by QuantumKnot)

Windows binaries

John33's oggenc2.8 is a special version of the (Ogg) Vorbis encoder. “Features include compression from lossless files (Monkeys Audio, LPAC, FLAC, OptimFROG, WavPack and Shorten – requires presence of decoders), and the ability to specify 'padding' in the headers for subsequent insertion of Tags” (from Ogg Vorbis page at rarewares).

If you prefer a nice drag-and-drop interface, then you can try John33's OggDropXPd (Windows only). “Features include compression from lossless files (Monkey's Audio, LPAC, FLAC and OptimFROG), auto-tagging, renaming of encoded files, setting of advanced encoder parameters, use of VorbisGain tags on decode, Playlist (.m3u) creation, and others” (from Ogg Vorbis page at rarewares).

Note: If the above links do not work, then it is most likely caused by a new version of John33's utilities. In that case, go directly to the Ogg Vorbis page at rarewares.

(OggDropXPd guide is here)

Mac OS/X binaries

These tools were compiled by krmathis for OS/X.

Note: libogg 1.1.2 is used, however this has very little effect on the output of files produced.

Linux binaries

This static GCC 4 binary was compiled by QuantumKnot.
This static GCC 4 binary was compiled by artfwo.

Note: There is no Linux Oggenc2.x that has been compiled with Lancer Optimizations as of yet (third-parties with a access to a unix environment are encouraged to try and compile one themselves if they have access to the sources, see below.)

3rd party source code

These are other (Ogg) Vorbis encoders that were tuned by 3rd party developers (outside of Xiph.Org).

The source-code contains modifications mostly to the psychoacoustics model and bitrate allocation, i.e psy.c (aotuv_hf_ weighting, Line 287)
aoTuV Release 1 – The recommended encoder
This version (re-branded from beta 4.51) is an improvement over aoTuV beta 4, which although based on libvorbis 1.1.1, gives a better quality at low to medium bitrates. Since beta 4, aoTuV includes a -q -2 option for the lowest bitrate. According to guruboolez' latest listening test on classical music, aoTuV beta 4 performed magnificently well at -q 6!! (see Aoyumi's website above for more information)
Many Hydrogenaudio enthusiasts report that Release 1 gives even better quality for low bit-rates. -q 1.5 works for streaming, even good enough.
aoTuV Beta 5 – The latest encoder
This version is the latest tuning. It improves further on low-bitrate encoding, without sacrificing compression. It is currently undergoing a peer-review process at Hydrogenaudio.
See Compiling aoTuV for information on how to compile it for Linux.

Optimized binaries

These are highly optimized encoders developed by the Ogg Vorbis Acceleration Project codenamed Lancer. They are much faster than the standard binary builds having negligible to nearly no effects on audio quality. These include sped-up routines, i.e mdct.c

These optimized encoders are rapidly changing currently, as BlackSword finds new ways to accelerate, and in the process uncovers new bugs. Please check the “Lancer homepage” link below for the latest suite.

On Lancer homepage you can find the latest versions of Oggenc, OggDropXPd, and Dynamic Link Libraries, with optimizations for SSE, SSE2, SSE3 and multi-threading instruction sets.

Note: Output of Lancer may be slightly different from output of 'standard' aoTuV. This is due to the difference of floating-point rounding: Lancer uses 64-bit SSE instructions, in contrast to the standard aoTuV use of 80-bit FP instructions. The output difference between both binaries should not be audible at all. In fact, tests have proven that playback of Lancer's output is indistinguishable from playback of standard aoTuV output.

Released Binaries

How do I know which encoder was used to make this particular (Ogg) Vorbis file?

Using either the ogginfo program or file info in your player, you can tell from the vendor tag:

If you aren't interested in the latest compiles feel free to use Vorbis 1.1.2 libraries.

Vendor Tag Encoder Note
Xiphophorus libVorbis I 20000508 1.0 Beta 1 or Beta 2
Xiphophorus libVorbis I 20001031 1.0 Beta 3
Xiphophorus libVorbis I 20010225 1.0 Beta 4
Xiphophorus libVorbis I 20010615 1.0 RC1
Xiphophorus libVorbis I 20010813 1.0 RC2
Xiphophorus libVorbis I 20010816 (gtune 1) 1.0 RC2 GT1
Xiphophorus libVorbis I 20011014 (GTune 2) 1.0 RC2 GT2
Xiphophorus libVorbis I 20011217 1.0 RC3
Xiphophorus libVorbis I 20011231 1.0 RC3
Xiph.Org libVorbis I 20020717 1.0
Xiph.Org/Sjeng.Org libVorbis I 20020717 (GTune 3, beta 1) GT3b1
Xiph.Org libVorbis I 20030308 Post 1.0 CVS
Xiph.Org libVorbis I 20030909 1.0.1
Xiph.Org/Sjeng.Org libVorbis I 20030909 (GTune 3, beta 2) EXPERIMENTAL Experimental GT3b2
Xiph.Org libVorbis I 20031230 (1.0.1) Post 1.0.1 CVS
Xiph.Org/Sjeng.Org libVorbis I 20031230 (GTune 3, beta 2) GT3b2
AO; aoTuV b2 [20040420] (based on Xiph.Org's 1.0.1) aoTuV Beta 2
Xiph.Org libVorbis I 20040629 Xiph.Org Vorbis 1.1 or Xiph.Org Vorbis 1.1 RC1
Xiph.Org libVorbis I 20040920 Xiph.Org Vorbis 1.1 with impulse_trigger_profile
AO; aoTuV b3 [20041120] (based on Xiph.Org's libVorbis) aoTuV Beta 3
Xiph.Org libVorbis I 20050304 Xiph.Org Vorbis 1.1.1 or Xiph.Org Vorbis 1.1.2
AO; aoTuV b4 [20050617] (based on Xiph.Org's libVorbis) aoTuV Beta 4
BS; Lancer [20050709] (based on aoTuV b4 [20050617]) Lancer based on aoTuV Beta 4
AO; aoTuV b4a [20051105] (based on Xiph.Org's libVorbis) aoTuV Beta 4.5
AO; aoTuV b4b [20051117] (based on Xiph.Org's libVorbis) aoTuV Beta 4.51
BS; Lancer [20051121] (based on aoTuV b4b [20051117]) Lancer based on aoTuV Beta 4.51
AO; aoTuV pre-beta5 [20060321] (based on Xiph.Org's libVorbis) aoTuV Beta 5
BS; Lancer(xxx) [yyyymmdd] (based on aoTuV b4b [20051117]) Processor-specific Lancer based on aoTuV Beta 4.51 (1)
BS; Lancer(xxx) [yyyymmdd] (based on aoTuV Release 1 [20051117]) Processor-specific Lancer based on aoTuV Release 1 (1)

(1) Starting 2006-05-06, BlackSword provides accelerated versions for different processors. See the Lancer page for more information.

Recommended Encoder Settings

Refer to the table below. For best results, start at -q 2 and ABX your way up.
Ultimately, the best -q setting will depend on your specific needs. Feel free to experiment.

General Command Line Usage:

oggenc -q n inputfile.wav 
where n is a number from -1 to 10, fractions accepted (using comma or period, depending on where the tool is compiled)
e.g. oggenc -q 5 inputfile.wav

Notes:

  • Most standard oggenc binaries can input lossless FLAC, WavPack, etc files as well (depending upon oggenc version)
  • oggenc2.7 and later are the only versions of oggenc that conform to the WAVEFORMATEXTENSIBLE header for outputing and decoding multi-channel Vorbis files (3 to 6 channels) in compliance with the Vorbis I decoding specification. Encoding multichannel content might still produce sub-optimal files, if lossless channel coupling is not used i.e (=> -q 6 and up), due to modifications that need to be performed in libvorbis for proper channel coupling. Encoding assumes source material is CD audio content or PCM equivalent.
  • The current oggenc and libvorbis API don't support the capabilities of full “bitrate peeling” yet. Experimental peelers exist, but only for testings purposes. i.e (Vinjey Systems). If you are a developer and are interested in re-writing the encoder to support peeling (retraining some VQ books, etc), there is $250.00 bounty for implementing it into libvorbis peeling bounty.


Switch VBR target
(kbit/s)
VBR range
(kbit/s)
Channel
Coupling
Noise
Normalization
Note
-q -2 ~32 ~32 – ~64 point/lossless yes (1)
-q -1 ~48 ~48 – ~64 point/lossless yes (2)
-q 0 ~64 ~64–~80 point/lossless yes
-q 1 ~80 ~80 – ~96 point/lossless yes (3)
-q 2 ~96 ~96 – ~112 point/lossless yes
-q 3 ~112 ~112 – ~128 point/lossless yes
-q 4 ~128 ~128 – ~160 point/lossless no
-q 5 ~160 ~160 – ~192 point/lossless no (4)
-q 6 ~192 ~192 – ~224 lossless no
-q 7 ~224 ~224 – ~256 lossless no
-q 8 ~256 ~256 – ~320 lossless no
-q 9 ~320 ~320 – ~500 lossless no
-q 10 ~500 ~500 – ~1000 lossless no


(1) Only supported on aoTuVb3 and newer
(2) Bitrate of 48 kbit/s is only for aoTuVb3 and newer. Earlier versions and Xiph.org versions use a bitrate of 45 kbit/s
(3) Reports seem to indicate that aoTuV Release 1 -q 1 provides good quality for streaming
(4) Most users agree -q 5 achieves transparency, if the source is the original or lossless. It is not transparent in the case of transcoding from lossy source (strongly frowned upon)

If you need to know what lowpass settings are used for each quality level, see this HA thread. (It is not recommended that you adjust these)

Advanced Encoder Settings

Reducing Pre-echo

This is applicable to Vorbis 1.1; it may or may not be applicable to aoTuV releases.

Generally, using the recommended settings above will give the best quality. There may be cases where Vorbis 1.1 will fail to reproduce sharp attacks or transients in your music, causing pre echo. In which case, you can use the impulse_noisetune advanced encode switch:

General Command Line Usage:

oggenc -q n --advanced-encode-option impulse_noisetune=p inputfile.wav
where p is a number from 0 to -15
e.g. oggenc -q 5 --advanced-encode-option impulse_noisetune=-5 inputfile.wav

Note that the lower the number (toward -15) for impulse_noisetune, the higher the bitrate will fluctuate in passages of music filled with transient attacks (and the final average bitrate may be much higher than the nominal). Therefore, you should try a small value to start off (say -5) and see if you get acceptable quality. If not, tweak it lower.

Reducing noise due to microattacks

This is only valid for some Vorbis encoders that are marked as having impulse_trigger_profile.

There are certain parts of some types of music, called “microattacks”, where Vorbis will produce a noise (sort of like a puff of steam), which is due to inaccuracies in the block-switching algorithm (which can't be corrected). Due to the fact the attacks are so fine and close together, Vorbis doesn't switch to impulse short blocks enough, thus “smearing” the reproduction.

By default (with no additional switches), Vorbis selects a different profile for block switching (lower means less switching, higher means more switching) and the default values are shown in the table below:

Quality Profile   Quality Profile
-1 0 5 2.5
0 1 6 2.7
1 1 7 3
2 1.5 8 3.7
3 2 9 4
4 2 10 4

If you encounter this problem on microattacks, you may try the impulse_trigger_profile advanced encode switch, which will change (increase) the profile to your desired value.

oggenc -q n --advanced-encode-option impulse_trigger_profile=r inputfile.wav
where r is a number from 0 to 4, fractions accepted.

Notes:

  • There is the possibility that relaxed block switching (higher profiles) may cause other quality problems and create suboptimal Vorbis files. Please use it sparingly and with caution. If in doubt, leave impulse_trigger_profile on default (that is, don't use it at all)
  • Setting the profile too high will make Vorbis switch to impulse short blocks more often, which will lead to higher bitrate fluctuations. Please be conservative about how you intend to use it.
  • This setting has no effect on reducing the level of pre-echo. It can be said to only reduce the likelihood of pre echo, but the amount of pre-echo is tuned using the impulse_noisetune switch instead.
  • You may try profiles 5 and 6 as substitutes for 3 and 4. Both Profiles 5 and 6, came from 3 and 4 in GT3b2.


You can use both impulse_noisetune and impulse_trigger_profile at the same time, but you will need separate switches, e.g.

oggenc -q n --advanced-encode-option impulse_noisetune=p
  --advanced-encode-option impulse_trigger_profile=r inputfile.wav