diff -Nru h264enc-9.2.8~dfsg/debian/changelog h264enc-9.3.2~dfsg/debian/changelog --- h264enc-9.2.8~dfsg/debian/changelog 2010-10-07 00:42:20.000000000 +0000 +++ h264enc-9.3.2~dfsg/debian/changelog 2011-02-16 17:12:30.000000000 +0000 @@ -1,8 +1,14 @@ -h264enc (9.2.8~dfsg-0ubuntu1~ppa1~lucid1) lucid; urgency=low +h264enc (9.3.2~dfsg-0ubuntu1~ppa1~lucid1) lucid; urgency=low * Backport to Lucidbleed ppa. - -- Nicola Ferralis Wed, 06 Oct 2010 17:41:52 -0700 + -- Nicola Ferralis Wed, 16 Feb 2011 12:11:23 -0500 + +h264enc (9.3.2~dfsg-0ubuntu1) natty; urgency=low + + * New upstream release. + + -- Alessio Treglia Mon, 10 Jan 2011 11:05:15 +0100 h264enc (9.2.8~dfsg-0ubuntu1) maverick; urgency=low diff -Nru h264enc-9.2.8~dfsg/doc/ChangeLog h264enc-9.3.2~dfsg/doc/ChangeLog --- h264enc-9.2.8~dfsg/doc/ChangeLog 2010-09-16 09:04:17.000000000 +0000 +++ h264enc-9.3.2~dfsg/doc/ChangeLog 2011-01-08 15:27:06.000000000 +0000 @@ -1,3 +1,26 @@ +2011-01-08 - h264enc 9.3.2 + * Use -demuxer lavf when trying to get the video length for bitrate calculation + for a target file size. Should be more reliable on M2TS/TS files + * Add support for the delogo filter. Patch by Haiko Michelfeit + Config file version is bumped to 19 + * Updated copyright dates + +2010-12-05 - h264enc 9.3.1 + * Fix for the custom preset (cp) option. + +2010-11-26 - h264enc 9.3.0 + * Remove double $HOME variable in the -scan option + +2010-10-29 - h264enc 9.2.9 + * Fix typo in the backup_file_func(): exisiting -> existing + * Workaround multichan FAAC encoding. FAAC somehow does not like multichan PCM from + MPlayer but it does if one treats it as raw using -P in FAAC. Nero/FLAC/Vorbis have + no issues, though. Go figure + * Added support for setting subtitle codepage during hardcoding of external subs + * Added support for the audio equalizer filter. This updates the config file version + to 18 + * Removed 'time' requirement + 2010-09-16 - h264enc 9.2.8 * Workaround mencoder stupidity. With recent versions of mencoder that have subs enabled by default (who came up with that great idea?), in case the user selects diff -Nru h264enc-9.2.8~dfsg/h264enc h264enc-9.3.2~dfsg/h264enc --- h264enc-9.2.8~dfsg/h264enc 2010-09-16 09:04:32.000000000 +0000 +++ h264enc-9.3.2~dfsg/h264enc 2011-01-08 15:26:53.000000000 +0000 @@ -1,11 +1,11 @@ #!/bin/bash -# $Id: h264enc, v 9.2.8, 2010/09/16, gn Exp $ +# $Id: h264enc, v 9.3.2, 2011/01/08, gn Exp $ # UUID: 099ef3da-dc34-41bd-a488-5786f78ab95b # # Encode DVDs/VCDs/video files to the H.264/AVC/MPEG-4 Part 10/JVT/H26L # video format using MEncoder from MPlayer # -# Copyright (C) 2006-2010, Grozdan Nikolov +# Copyright (C) 2006-2011, Grozdan Nikolov # # h264enc is free software ; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,8 +24,8 @@ shopt -u expand_aliases export PATH=$PATH:/usr/local/bin -version=9.2.8 -configversion=17 +version=9.3.2 +configversion=19 green() { echo -e "\e[1;32m$1\e[0;39;49m"; } @@ -127,6 +127,7 @@ ALLOW_VID_DEINTERLACE="y" ALLOW_VID_INTERLACE="y" ALLOW_VID_DEBLOCK="y" +ALLOW_VID_DELOGO="y" ALLOW_VID_DENOISE="y" ALLOW_VID_NOISE="y" ALLOW_VID_DEBAND="y" @@ -146,6 +147,7 @@ ALLOW_AUD_RESAMPLE="y" ALLOW_AUD_NORMALIZE="y" ALLOW_AUD_VOLUME="y" +ALLOW_AUD_EQUALIZER="y" ALLOW_AUD_PAN="y" # Containers @@ -192,7 +194,6 @@ FAAC="$(which faac 2>/dev/null)" MAIL="$(which mail 2>/dev/null)" -TIME="$(which time 2>/dev/null)" BC="$(which bc 2>/dev/null)" PV="$(which pv 2>/dev/null)" DD="$(which dd 2>/dev/null)" @@ -1060,7 +1061,7 @@ rmtemp ;; esac - DT="$HOME/$($LSDVD $(echo $device | awk '{print $2}') 2>/dev/null | grep '^Disc Title' | awk -F': ' '{print $2}')" + DT="$($LSDVD $(echo $device | awk '{print $2}') 2>/dev/null | grep '^Disc Title' | awk -F': ' '{print $2}')" if [ ! -z "$DT" ]; then DISC_TITLE="$DT" else @@ -1232,7 +1233,7 @@ ;; *) error "-> Unknown option: '$2'" - error "-> Use: 'h264enc -help' for more info" + error "-> Use: 'h264enc -help'" rmtemp ;; esac @@ -1268,9 +1269,11 @@ ;; "") true ;; *) - error "-> Unknown option: '$4'" - error "-> Use: 'h264enc -help'" - rmtemp + if [ "$3" != "cp" ]; then + error "-> Unknown option: '$4'" + error "-> Use: 'h264enc -help'" + rmtemp + fi ;; esac @@ -1297,9 +1300,11 @@ ;; "") true ;; *) - error "-> Unknown option: '$6'" - error "-> Use: 'h264enc -help'" - rmtemp + if [ "$3" != "cp" ]; then + error "-> Unknown option: '$6'" + error "-> Use: 'h264enc -help'" + rmtemp + fi ;; esac @@ -2199,6 +2204,125 @@ fi } +# Postprocessing +video_delogo_func() { + printf "Would you like to Delogo the $type? [y/N]: " + read db + if [ "$db" = "y" -o "$db" = "Y" ]; then + HANDLE="$TEMPDIR/fifofile" + wd=10 + hd=10 + xd=10 + yd=10 + wv=25 + hv=25 + xv=1 + yv=1 + mkfifo $HANDLE + $MPLAYER -quiet -slave -input file="$HANDLE" -vf rectangle="$wv":"$hv":"$xv":"$yv" "$infile" >/dev/null 2>&1 & + while [ 0 ]; do + echo "" + brown "Delogo Video Filter" + brown "~~~~~~~~~~~~~~~~~~~" + echo "Suppresses a TV station logo by a simple" + echo "interpolation of the surrounding pixels." + echo "Just set a rectangle covering the logo" + echo "and watch it disappear (and sometimes" + echo "something even uglier appear - your mileage" + echo "may vary)." + echo "Specify the positon and size:" + echo "" + echo "0 -> Change X-Pos." + echo "1 -> Change Y-Pos." + echo "2 -> Change Width" + echo "3 -> Change Height" + echo "4 -> Finish" + echo "" + printf "Select a Delogo function: " + read delogoval + case "$delogoval" in + 0) + while [ 0 ]; do + clear + echo "" + brown "Delogo Video Filter - X-Position" + brown "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + printf "Change X-Pos=$xv [default is $xd, q to finish]: " + read v + if [ -z "$v" ]; then + v=$xd + elif [ "$v" = "q" -o "$v" = "Q" ]; then + break; + fi + xd=$v + let xv=$xv+$v + echo "change_rectangle 2 $v" >> $HANDLE + done + ;; + 1) + while [ 0 ]; do + clear + echo "" + brown "Delogo Video Filter - Y-Position" + brown "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + printf "Change Y-Pos=$yv [default is $yd, q to finish]: " + read v + if [ -z "$v" ]; then + v=$yd + elif [ "$v" = "q" -o "$v" = "Q" ]; then + break; + fi + yd=$v + let yv=$yv+$v + echo "change_rectangle 3 $v" >> $HANDLE + done + ;; + 2) + while [ 0 ]; do + clear + echo "" + brown "Delogo Video Filter - Width" + brown "~~~~~~~~~~~~~~~~~~~~~~~~~~~" + printf "Change Width=$wv [default is $wd, q to finish]: " + read v + if [ -z "$v" ]; then + v=$wd + elif [ "$v" = "q" -o "$v" = "Q" ]; then + break; + fi + wd=$v + let wv=$wv+$v + echo "change_rectangle 0 $v" >> $HANDLE + done + ;; + 3) + while [ 0 ]; do + clear + echo "" + brown "Delogo Video Filter - Height" + brown "~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + printf "Change Height=$hv [default is $hd, q to finish]: " + read v + if [ -z "$v" ]; then + v=$hd + elif [ "$v" = "q" -o "$v" = "Q" ]; then + break; + fi + hd=$v + let hv=$hv+$v + echo "change_rectangle 1 $v" >> $HANDLE + done + ;; + 4) + break; + ;; + esac + done + echo "quit" >> $HANDLE + delogofilter="delogo=$xv:$yv:$wv:$hv:1," + fi +} + # Denoising video_denoise_func() { printf "Would you like to Denoise the $type? [y/N]: " @@ -2251,7 +2375,7 @@ 7) denoisefilter="hqdn3d=7:6:9," ;; 8) denoisefilter="hqdn3d=10:9:12," ;; 9) - printf "Specify the Denoise values [ default is 3:2:4]: " + printf "Specify the Denoise values [default is 3:2:4]: " read dnvalues if [ -z "$dnvalues" ]; then denoisefilter="hqdn3d=3:2:4," @@ -2619,12 +2743,20 @@ 3) spualign="-spualign 2" ;; *) error "-> Unknown option: '$subalign'" - error "-> Exiting in function: video_subtitles_align_func()" + error "-> Exiting in sub-function: video_subtitles_align_func()" rmtemp ;; esac } +video_subtitles_codepage_func() { + printf "Specify a Codepage for the subtitle [press 'Enter' to skip]: " + read subcodepage + if [ ! -z "$subcodepage" ]; then + subcp="-subcp $subcodepage" + fi +} + video_subtitles_func() { printf "Would you like to include/rip a Subtitle? [y/N]: " read sub @@ -2646,17 +2778,18 @@ read -e subfile if [ ! -z "$subfile" ]; then if [ ! -f "$subfile" ]; then - echo "" + echo green "-> No such file: '$subfile'" green "-> Skipping subtitle" - echo "" + echo else + video_subtitles_codepage_func case "${subfile##*.}" in idx|IDX|sub|SUB) video_subtitles_align_func ;; esac - subtitle[1]="-sub \"$subfile\" -subfont-autoscale 1 $spualign" + subtitle[1]="-sub \"$subfile\" -subfont-autoscale 1 $spualign $subcp" fi fi ;; @@ -2709,10 +2842,10 @@ printf "Specify the Subtitle ID number [press 'Enter' to skip]: " read subid if [ ! -z "$(echo $subid | grep '[a-zA-Z]')" ]; then - echo "" + echo green "-> You have to specify the Subtitle ID number, not the language code!" green "-> Skipping subtitle" - echo "" + echo else if [ ! -z "$subid" ]; then video_subtitles_align_func @@ -2730,12 +2863,13 @@ error "-> Skipping..." echo else + video_subtitles_codepage_func case "${exthcsub##*.}" in idx|IDX|sub|SUB) video_subtitles_align_func ;; esac - subtitle[1]="-sub \"$exthcsub\" -subfont-autoscale 1 $spualign" + subtitle[1]="-sub \"$exthcsub\" -subfont-autoscale 1 $spualign $subcp" fi fi ;; @@ -3046,7 +3180,7 @@ done BKOUT="$EXTFILE.$counter.old" echo - green "-> Renaming exisiting file to '$(basename "$BKOUT")'" + green "-> Renaming existing file to '$(basename "$BKOUT")'" case "$1" in files) case "$source" in @@ -3125,6 +3259,7 @@ test "$ALLOW_VID_DEINTERLACE" = "y" && video_deinterlace_func test "$ALLOW_VID_INTERLACE" = "y" && video_interlace_func test "$ALLOW_VID_DEBLOCK" = "y" && video_deblock_func + test "$ALLOW_VID_DELOGO" = "y" && video_delogo_func test "$ALLOW_VID_DENOISE" = "y" && video_denoise_func test "$ALLOW_VID_NOISE" = "y" && video_noise_func test "$ALLOW_VID_DEBAND" = "y" && video_deband_func @@ -3161,7 +3296,7 @@ brown "+=============================================================+" brown "|<<<<<<< h264enc - the interactive shell script ripper >>>>>>>|" brown "|-------------------------------------------------------------|" -brown "|<<<<<< version: $version - (C) 2006-2010, Grozdan Nikolov >>>>>>|" +brown "|<<<<<< version: $version - (C) 2006-2011, Grozdan Nikolov >>>>>>|" brown "+=============================================================+" echo "" echo "" @@ -5350,6 +5485,19 @@ fi } +# Audio EQ +audio_equalizer_func() { + printf "Track $i: Would you like to use the Audio Equalizer? [y/n]: " + read audioeq[$i] + if [ "${audioeq[$i]}" = "y" -o "${audioeq[$i]}" = "Y" ]; then + printf "Track $i: Specify the Audio Equalizer parameters [press 'Enter' to skip]: " + read audeqparams[$i] + if [ ! -z "${audeqparams[$i]}" ]; then + audeq[$i]="equalizer=${audeqparams[$i]}," + fi + fi +} + # Volume normalization audio_volnorm_func() { printf "Track $i: Would you like to Normalize the Audio volume? [y/N]: " @@ -5461,17 +5609,19 @@ mp3) test "$ALLOW_AUD_CHANNELS" = "y" && audio_channels_func test "$ALLOW_AUD_PAN" = "y" && audio_pan_func + test "$ALLOW_AUD_EQUALIZER" = "y" && audio_equalizer_func ;; *) test "$ALLOW_AUD_CHANNELS" = "y" && audio_channels_func test "$ALLOW_AUD_PAN" = "y" && audio_pan_func + test "$ALLOW_AUD_EQUALIZER" = "y" && audio_equalizer_func test "$ALLOW_AUD_NORMALIZE" = "y" && audio_volnorm_func test "$ALLOW_AUD_VOLUME" = "y" && audio_volume_func ;; esac } if [ "$ALLOW_AUD_CHANNELS" = "y" -o "$ALLOW_AUD_PAN" = "y" -o "$ALLOW_AUD_NORMALIZE" = "y" \ - -o "$ALLOW_AUD_VOLUME" = "y" -o "$ALLOW_AUD_RESAMPLE" = "y" ]; then + -o "$ALLOW_AUD_VOLUME" = "y" -o "$ALLOW_AUD_RESAMPLE" = "y" -o "$ALLOW_AUD_EQUALIZER" = "y" ]; then printf "Track $i: Would you like to use Audio filters? [y/N]: " read use_audfilters[$i] if [ "${use_audfilters[$i]}" = "y" -o "${use_audfilters[$i]}" = "Y" ]; then @@ -5494,26 +5644,26 @@ audio_filters_var_func() { case "$1" in fl|flhq) - afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]},lavcresample=22050:16:1 -srate 22050" + afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${audeq[$i]},lavcresample=22050:16:1 -srate 22050" channels[$i]="-channels 2" ;; qt|qthq) - afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${resample[$i]}" + afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${audeq[$i]}${resample[$i]}" channels[$i]="-channels 2" ;; ag1|ag1hq|ipc|ipchq|ip|iphq|iph|iphhq|atv|atvhq|ar|arhq|ar5|ar5hq|bb|bbhq|psp|psphq|mz|mzhq|mx|mxhq) - afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]},lavcresample=48000:16:1 -srate 48000" + afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${audeq[$i]},lavcresample=48000:16:1 -srate 48000" channels[$i]="-channels 2" ;; ps3|ps3hq) - afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]},lavcresample=48000:16:1 -srate 48000" + afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${audeq[$i]},lavcresample=48000:16:1 -srate 48000" ;; nks60|nks60hq) - afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]},lavcresample=44100:16:1 -srate 44100" + afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${audeq[$i]},lavcresample=44100:16:1 -srate 44100" channels[$i]="-channels 2" ;; *) - afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${resample[$i]}" + afilters[$i]="${volnorm[$i]}${volume[$i]}${pan[$i]}${audchannels[$i]}${audeq[$i]}${resample[$i]}" ;; esac } @@ -6038,7 +6188,7 @@ esac echo "" green "-> Detecting video length..." - $MPLAYER "$sourcetype" $device $vid $MPLAYEROPTS -identify -vo null -frames 1 -ao null -nocache 2>/dev/null > "$TEMPDIR/videoinfo" + $MPLAYER "$sourcetype" $device $vid $MPLAYEROPTS -demuxer lavf -identify -vo null -frames 1 -ao null -nocache 2>/dev/null > "$TEMPDIR/videoinfo" VIDEO_LENGTH=$(grep "^ID_LENGTH" "$TEMPDIR/videoinfo" | awk -F= '{print $2}') rm -f "$TEMPDIR/videoinfo" if [ -z "$VIDEO_LENGTH" ]; then @@ -6122,7 +6272,7 @@ # # Video filters chain -videofilters="-vf $(echo $ivtcfilter$cropfilter$deintfilter$fpsfilter$ild$deblockfilter$denoisefilter$debandfilter$ili$brightnessfilter$colorspacefilter,softskip,$dsizefilter$expandfilter_bfr$scale$isws$swsparam$expandfilter_afr$noisefilter$unsharpfilter$eq2filter,harddup$intfilter$telecinefilter | sed 's|^,||; s|,,|,|g; s|,$||')" +videofilters="-vf $(echo $ivtcfilter$delogofilter$cropfilter$deintfilter$fpsfilter$ild$deblockfilter$denoisefilter$debandfilter$ili$brightnessfilter$colorspacefilter,softskip,$dsizefilter$expandfilter_bfr$scale$isws$swsparam$expandfilter_afr$noisefilter$unsharpfilter$eq2filter,harddup$intfilter$telecinefilter | sed 's|^,||; s|,,|,|g; s|,$||')" # Audio filters chain for i in {1..3}; do @@ -6320,26 +6470,26 @@ test -e $HOME/sample_$$.avi && mv -f $HOME/sample_$$.avi $HOME/sample_$$.avi.old case "$1" in -1p|-qp|-crf) - cat "$H264_1PFQ" | sed -e "s|$MENCODER|$TIME -f %E -o \"$TEMPDIR/time1\" $MENCODER $samplepos $sampledur|" -e "s|\"$OUTPUT\"|$HOME/sample_$$.avi|" > "$TEMPDIR/sampleopts1" + cat "$H264_1PFQ" | sed -e "s|$MENCODER|$MENCODER $samplepos $sampledur|" -e "s|\"$OUTPUT\"|$HOME/sample_$$.avi|" > "$TEMPDIR/sampleopts1" ;; -2p) - cat "$H264_2P1" | sed "s|$MENCODER|$TIME -f %E -o \"$TEMPDIR/time1\" $MENCODER $samplepos $sampledur|" > "$TEMPDIR/sampleopts1" - cat "$H264_2P2" | sed -e "s|$MENCODER|$TIME -f %E -o $TEMPDIR/time2 $MENCODER $samplepos $sampledur|" -e "s|\"$OUTPUT\"|$HOME/sample_$$.avi|" > "$TEMPDIR/sampleopts2" + cat "$H264_2P1" | sed "s|$MENCODER|$MENCODER $samplepos $sampledur|" > "$TEMPDIR/sampleopts1" + cat "$H264_2P2" | sed -e "s|$MENCODER|$MENCODER $samplepos $sampledur|" -e "s|\"$OUTPUT\"|$HOME/sample_$$.avi|" > "$TEMPDIR/sampleopts2" ;; -3p) - cat "$H264_2P1" | sed "s|$MENCODER|$TIME -f %E -o \"$TEMPDIR/time1\" $MENCODER $samplepos $sampledur|" > "$TEMPDIR/sampleopts1" - cat "$H264_2P2" | sed "s|$MENCODER|$TIME -f %E -o \"$TEMPDIR/time2\" $MENCODER $samplepos $sampledur|" > "$TEMPDIR/sampleopts2" - cat "$H264_2P3" | sed -e "s|$MENCODER|$TIME -f %E -o \"$TEMPDIR/time3\" $MENCODER $samplepos $sampledur|" -e "s|\"$OUTPUT\"|$HOME/sample_$$.avi|" > "$TEMPDIR/sampleopts3" + cat "$H264_2P1" | sed "s|$MENCODER|$MENCODER $samplepos $sampledur|" > "$TEMPDIR/sampleopts1" + cat "$H264_2P2" | sed "s|$MENCODER|$MENCODER $samplepos $sampledur|" > "$TEMPDIR/sampleopts2" + cat "$H264_2P3" | sed -e "s|$MENCODER|$MENCODER $samplepos $sampledur|" -e "s|\"$OUTPUT\"|$HOME/sample_$$.avi|" > "$TEMPDIR/sampleopts3" ;; esac for i in {1..3}; do if [ -f "$TEMPDIR/sampleopts$i" ]; then green "-> Running pass $i..." source "$TEMPDIR/sampleopts$i" >/dev/null 2>&1 - green "-> Done... Elapsed time: $(cat "$TEMPDIR/time$i" | sed 's/\.[0-9]*//')" + green "-> Done" fi done - for i in sampleopts* time* *.log *.mbtree; do + for i in sampleopts* *.log *.mbtree; do rm -f "$TEMPDIR/$i" done # Remove subs if any @@ -6486,12 +6636,30 @@ elif [ "$deintmethod" = "2" ]; then vidfilter=",yadif=3" fi -vidfilteropts="-sws 0 -vf scale=16:16$vidfilter$intfilter$telecinefilter,softskip,harddup" +vidfilteropts="-sws 1 -vf scale=16:16$vidfilter$intfilter$telecinefilter,softskip,harddup" vidcodecopts="-ovc lavc -lavcopts vcodec=mpeg2video" # For neroAAC, FAAC, AAC+, Vorbis and FLAC audio # $FIFO is used only once and is global # meaning it is used for all audio tracks + +# Workaround for multichan FAAC encoding. +# FAAC somehow does not like multichan PCM +# from MPlayer, but it does like it when one +# treats it as raw. Nero has no issues, though. +# Go figure +case "${audiocodec[1]}" in + aac|"") + if [[ $(echo ${channels[1]} | awk '{print $2}') -gt 2 ]]; then + if [ ! -z "${resample[1]}" ]; then + FAACAUDRATE="${hertz[1]}" + else + FAACAUDRATE="$($MPLAYER "$sourcetype" $device $MPLAYEROPTS ${aid[1]} -vo null -identify -frames 1 -nocache 2>/dev/null | grep '^ID_AUDIO_RATE' | tail -n 1 | awk -F= '{print $2}')" + fi + faacparams="-P -X -B 16 -C $(echo ${channels[1]} | awk '{print $2}') -R $FAACAUDRATE" + fi + ;; +esac mkfifo "$TEMPDIR/audio.wav" FIFO="test -p \"$TEMPDIR/audio.wav\" || mkfifo \"$TEMPDIR/audio.wav\"" MPL="$MPLAYER \"$OUTPUT\" $MPLAYEROPTS -really-quiet -vc null -vo null -nocache ${channels[1]} -ao pcm:fast:file=\"$TEMPDIR/audio.wav\"" @@ -6499,7 +6667,7 @@ AACPLUS="$AACPLUSENC \"$TEMPDIR/audio.wav\" \"$TEMPDIR/audio.aac\" ${aacplusbr[1]} &" OGG="$OGGENC ${vorbq[1]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio.ogg\" &" FLACENC="$FLAC ${flacq[1]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio.flac\" &" -FAACENC="$FAAC -w --mpeg-vers 4 ${br[1]} ${tns[1]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio.aac\" &" +FAACENC="$FAAC -w --mpeg-vers 4 ${br[1]} ${tns[1]} $faacparams \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio.aac\" &" case "${audiocodec[1]}" in aac|aac+|neroaac|vorbis|flac|"") @@ -6565,12 +6733,24 @@ for i in {2..3}; do if [ "${TRACKID[$i]}" = "yes" ]; then # Set global variables + case "${audiocodec[$i]}" in + aac|"") + if [[ $(echo ${channels[$i]} | awk '{print $2}') -gt 2 ]]; then + if [ ! -z "${resample[$i]}" ]; then + FAACAUDRATE[$i]="${hertz[$i]}" + else + FAACAUDRATE[$i]="$($MPLAYER "$sourcetype" $device $MPLAYEROPTS ${aid[$i]} -vo null -identify -frames 1 -nocache 2>/dev/null | grep '^ID_AUDIO_RATE' | tail -n 1 | awk -F= '{print $2}')" + fi + faacparams[$i]="-P -X -B 16 -C $(echo ${channels[$i]} | awk '{print $2}') -R ${FAACAUDRATE[$i]}" + fi + ;; + esac AUDIOENC[$i]="$TEMPDIR/audioenc$i" NERO[$i]="$NEROAACENC -ignorelength ${neroaacbr[$i]} -if \"$TEMPDIR/audio.wav\" -of \"$TEMPDIR/audio$i.aac\" &" AACPLUS[$i]="$AACPLUSENC \"$TEMPDIR/audio.wav\" \"$TEMPDIR/audio$i.aac\" ${aacplusbr[$i]} &" OGG[$i]="$OGGENC ${vorbq[$i]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio$i.ogg\" &" FLACENC[$i]="$FLAC ${flacq[$i]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio$i.flac\" &" - FAACENC[$i]="$FAAC -w --mpeg-vers 4 ${br[$i]} ${tns[$i]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio$i.aac\" &" + FAACENC[$i]="$FAAC -w --mpeg-vers 4 ${br[$i]} ${tns[$i]} ${faacparams[$i]} \"$TEMPDIR/audio.wav\" -o \"$TEMPDIR/audio$i.aac\" &" MPL[$i]="$MPLAYER \"$TEMPDIR/audio$i.avi\" $MPLAYEROPTS ${channels[$i]} ${audiofilters[$i]} -really-quiet -vc null -vo null -nocache -ao pcm:fast:file=\"$TEMPDIR/audio.wav\"" # Check for LPCM audio on DVDs