Index: HandBrake-vorbis/libhb/encvorbis.c =================================================================== --- HandBrake-vorbis/libhb/encvorbis.c (revision 966) +++ HandBrake-vorbis/libhb/encvorbis.c (working copy) @@ -56,11 +56,24 @@ hb_log( "encvorbis: opening libvorbis" ); - /* 28kbps/channel seems to be the minimum for 6ch vorbis. */ - int min_bitrate = 28 * pv->out_discrete_channels; - if (pv->out_discrete_channels > 2 && job->abitrate < min_bitrate) + /* Minimum 16kbps/channel */ + int min_bitrate = 16 * pv->out_discrete_channels; + if (job->arate > 24000) { - hb_log( "encvorbis: Selected bitrate (%d kbps) too low for %d channel audio.", job->abitrate, pv->out_discrete_channels); + if (pv->out_discrete_channels > 2) + { + /* Vorbis minimum is around 30kbps/ch for 6ch at rates > 24k (32k/44.1k/48k) */ + min_bitrate = 32 * pv->out_discrete_channels; + } + else + { + /* Allow 24kbps mono and 48kbps stereo at rates > 24k (32k/44.1k/48k) */ + min_bitrate = 24 * pv->out_discrete_channels; + } + } + if (job->abitrate < min_bitrate) + { + hb_log( "encvorbis: Selected bitrate (%d kbps) too low for %d channel audio at %d Hz.", job->abitrate, pv->out_discrete_channels, job->arate); hb_log( "encvorbis: Resetting bitrate to %d kbps", min_bitrate); job->abitrate = min_bitrate; }