rendered paste body#!/bin/bashTHREADS=auto# 2pass or 3pass?PASS=2if [ "$3" == "" ]; then echo "Usage: $0 {infile} {outfile_prefix} \"{bitrates}\" [optional mencoder options]" exit 1fiINFILE=$1shiftOUTFILE=$1shiftBITRATES=$1shiftMENCODEROPTS=$*# matrices loopfor cqm in eqm_avc_hr m4g_hrm_v2 m4g_smooth_v1 prestige_cqm; do # deblocking loop for DEBLOCK in "-3,-3" "-6,-6" "-1,-1"; do # mencoder video filter loop - needs avisynth equivalent filters # "${CROP},hqdn3d,pp=$PP,${SCALE},format=i420,harddup denoise_and_pp" # "${CROP},pp=$PP,${SCALE},format=i420,harddup pp_only" for MENCVF in "harddup no_mencoder_pp"; do MENCVFOPTS=`echo $MENCVF | cut -d' ' -f1` MENCVFNAME=`echo $MENCVF | cut -d' ' -f2` # bitrate loop for BITRATE in $BITRATES; do # x264 profile loop # 1nd loop is insane profile for reference # 2nd loop is custom profile for X264ENCOPTS in \"\bitrate=$BITRATE:threads=$THREADS:cqm=$cqm.cfg:frameref=1:bframes=3:deblock=$DEBLOCK:me=umh:subq=1:nodct_decimate:vbv_maxrate=25000:partitions=none:nopsnr:nossim:pass=1 \bitrate=$BITRATE:threads=$THREADS:cqm=$cqm.cfg:frameref=16:mixed_refs:nofast_pskip:bframes=3:b_pyramid:brdo:bime:weight_b:direct_pred=auto:deblock=$DEBLOCK:subq=7:trellis=2:8x8dct:me=umh:vbv_maxrate=25000:nodct_decimate:nopsnr:nossim:pass=$PASS insane" \"\bitrate=$BITRATE:threads=$THREADS:cqm=$cqm.cfg:frameref=1:bframes=5:deblock=$DEBLOCK:me=umh:subq=1:nodct_decimate:partitions=none:nopsnr:nossim:pass=1 \bitrate=$BITRATE:threads=$THREADS:cqm=$cqm.cfg:frameref=5:mixed_refs:bframes=5:b_pyramid:brdo:bime:weight_b:deblock=$DEBLOCK:subq=7:trellis=1:8x8dct:me=umh:nofast_pskip:nopsnr:nossim:direct_pred=auto:pass=$PASS custom"; do nothing # start the encoding loop # echo the used commandline first - to a log? X264NAME=`echo $X264ENCOPTS | cut -d' ' -f3` X264A=`echo $X264ENCOPTS | cut -d' ' -f1` X264B=`echo $X264ENCOPTS | cut -d' ' -f2` # don't run if target file already exists if [ ! -e "$OUTFILE.$BITRATE.$X264NAME.$cqm.$DEBLOCK.${PASS}pass.$MENCVFNAME.264" ]; then STATSFILE=`tempfile` # 1stpass echo "- 1stpass starting, profile $X264NAME, cqm $cqm, bitrate $BITRATE, deblock $DEBLOCK, videofilter $MENCVFNAME:" nice -18 mencoder $MENCODEROPTS -vf $MENCVFOPTS -passlogfile $STATSFILE -oac pcm -nosound -x264encopts $X264A -ovc x264 -of rawvideo -o /dev/null $INFILE # 2ndpass and optional 3rd pass # if pass=3 then do 3pass, else do 2pass if [ $PASS -eq 2 ]; then echo "- 2ndpass starting, profile $X264NAME, cqm $cqm, bitrate $BITRATE, deblock $DEBLOCK, videofilter $MENCVFNAME:" nice -18 mencoder $MENCODEROPTS -vf $MENCVFOPTS -passlogfile $STATSFILE -oac pcm -nosound -x264encopts $X264B -ovc x264 -of rawvideo -o "$OUTFILE.$BITRATE.$X264NAME.$cqm.$DEBLOCK.${PASS}pass.$MENCVFNAME.264" $INFILE else echo "- 2ndpass out of 3, profile $X264NAME, cqm $cqm, bitrate $BITRATE, deblock $DEBLOCK, videofilter $MENCVFNAME:" nice -18 mencoder $MENCODEROPTS -vf $MENCVFOPTS -passlogfile $STATSFILE -oac pcm -nosound -x264encopts $X264B -ovc x264 -of rawvideo -o /dev/null $INFILE echo "- 3rdpass out of 3, profile $X264NAME, cqm $cqm, bitrate $BITRATE, deblock $DEBLOCK, videofilter $MENCVFNAME:" nice -18 mencoder $MENCODEROPTS -vf $MENCVFOPTS -passlogfile $STATSFILE -oac pcm -nosound -x264encopts $X264B -ovc x264 -of rawvideo -o "$OUTFILE.$BITRATE.$X264NAME.$cqm.$DEBLOCK.${PASS}pass.$MENCVFNAME.264" $INFILE fi rm $STATSFILE fi # remove stats file done done done donedone