+ profile="hb_Classic"
+ fi
+ fi
+
+ # iphone and ipod MP4 profiles
+ if [ "$profile" == "iphone" ] || [ "$profile" == "ipod" ]; then
+ found_profile=1
+ handbrake_cli="$handbrake_mp4"
+ final_output_file="$dest/$dvdname.mp4"
+ PASSES=""
+
+ # Handle custom parameter overrides
+ if [ $custom_video_bitrate == 1 ]; then
+ handbrake_opts[0]="-b $target_video_bitrate"
+ fi
+ if [ $custom_audio_2ch == 0 ]; then
+ audio_2ch=0
+ fi
+ if [ $custom_audio_6ch == 0 ]; then
+ audio_6ch=0
+ fi
+
+ # iphone
+ if [ "$profile" == "iphone" ]; then
+ profile="hb_iPhone_&_iPod_Touch"
+ fi
+ # ipod
+ if [ "$profile" == "ipod" ]; then
+ profile="hb_iPod"
+ fi
+
+ fi
+
+ # Predefined Handbrake Profile Handling
+ if [[ "$profile" =~ "hb" ]]; then
+ found_profile=1
+ handbrake_cli="$handbrake_mp4"
+ final_output_file="$dest/$dvdname.mp4"
+ PASSES=""
+
+ # Handle custom parameter overrides
+ if [ $custom_video_bitrate == 1 ]; then
+ handbrake_opts[0]="-b $target_video_bitrate"
+ fi
+ if [ $custom_audio_2ch == 0 ]; then
+ audio_2ch=0
+ fi
+ if [ $custom_audio_6ch == 0 ]; then
+ audio_6ch=0
+ fi
+
+ # extract the HandBrake Profile name from $profile
+ hb_profile=`echo "$profile" | sed 's/hb_//g' | sed 's/_/ /g'`
+ fi
+
+ # Make sure we found a handler for the given profile
+ if [ $found_profile -eq 0 ]; then
+ fatal_and_exit "-E- Unable to find a profile handler for profile: $profile"
+ fi
+
+ # setup our audio option
+ if [ $audio_2ch -eq 1 ] && [ $audio_6ch -eq 1 ]; then
+ handbrake_audio_opts="-E faac,ac3 -6 dpl2,auto"
+ fi
+ if [ $audio_6ch -eq 1 ] && [ $audio_2ch -eq 0 ]; then
+ handbrake_audio_opts="-E ac3 -6 auto"
+ fi
+ if [ $audio_2ch -eq 1 ] && [ $audio_6ch -eq 0 ]; then
+ handbrake_audio_opts="-E faac -6 dpl2"
+ fi
+ if [ -n "$track" ]; then
+ handbrake_audio_opts="$handbrake_audio_opts -a $track"
+ fi
+
+ # Convert our array of opts into a string
+ for OPTS in "${video_encoder_opts[@]}"; do
+ handbrake_video_encoder_opts="$handbrake_video_encoder_opts:$OPTS"
+ done
+ if [ -n "$handbrake_video_encoder_opts" ]; then
+ handbrake_video_encoder_opts="-x $handbrake_video_encoder_opts"
+ fi
+ for OPTS in "${handbrake_opts[@]}"; do
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts $OPTS"
+ done
+
+ # Append "global" command line options
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts -v 1"
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts $PASSES"
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts $DRC"
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts $SCALE"
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts $SIZE"
+ handbrake_cmd_line_opts="$handbrake_cmd_line_opts $AUDIO_BITRATE"
+
+ # Execute the handbrake command to encode the video
+ # I have to copy-n-paste the code below to handle the 2 conditions, 1) hb_profile (mp4) 2) no hb_profile (xvid)
+ # The problem is the -Z "$hb_profile" option. I have to quote the "$hb_profile" due to spaces in it, forcing me to call it out explicity.
+ if [ -n "$hb_profile" ]; then
+ echo -e "\n Encoding: $handbrake_cli -i \"$vobfile\" -o \"$final_output_file\" -Z \"$hb_profile\" $handbrake_cmd_line_opts $handbrake_audio_opts $handbrake_video_encoder_opts >> $encodelog 2>&1" >> "$logfile"
+ $handbrake_cli -i "$vobfile" -o "$final_output_file" -Z "$hb_profile" $handbrake_cmd_line_opts $handbrake_audio_opts $handbrake_video_encoder_opts >> $encodelog 2>&1
+ handbrake_retval=$?
+ else
+ echo -e "\n Encoding: $handbrake_cli -i \"$vobfile\" -o \"$final_output_file\" $handbrake_cmd_line_opts $handbrake_audio_opts $handbrake_video_encoder_opts >> $encodelog 2>&1" >> "$logfile"
+ $handbrake_cli -i "$vobfile" -o "$final_output_file" $handbrake_cmd_line_opts $handbrake_audio_opts $handbrake_video_encoder_opts >> $encodelog 2>&1
+ handbrake_retval=$?
+ fi
+ if [ $handbrake_retval != 0 ]; then
+ fatal_and_exit "-E- Unhandled handbrake error"
+ fi
+
+ # Concatenate the encode log to our main log file, greping out unwanted lines
+ cat $encodelog | grep -v "Encoding:" | grep -v "hb_demux_ps" >> "$logfile"
+ cat $encodelog | grep "Encoding:" | sed 's/\r/\n/g' | grep "Encoding:" | grep "ETA" | head -1 >> "$logfile"
+ cat $encodelog | grep "Encoding:" | sed 's/\r/\n/g' | grep "Encoding:" | grep "ETA" | tail -1 >> "$logfile"
+}
+
+# encode the vob file into a compressed file format using mencoder
+function encode_vob_file_mencoder {
+
+ # Set a variable that we will use later to determine if we found a handler for $profile or not
+ typeset -i found_profile=0
+
+ # For a given profile, to override the 2 pass behavior to be single pass,
+ # simply set the PASSES variable below to "2" instead of "1 2" inside your profile handler.
+ # It indicates which PASS numbers to loop over. PASSES="2" means just do pass 2 => single pass mode.
+ PASSES="1 2"
+
+ # Declare our default 2 pass variables
+ passlogfile_opt="-passlogfile $passlogfile"
+ pass_opt="pass=%PASS"
+
+ # Check the global force_onepass_mode. If it is set, change our variables appropriately
+ # to force 1-pass encoding across all profiles.
+ if [ $force_onepass_mode -eq 1 ]; then
+ PASSES="2"
+ passlogfile_opt=""
+ pass_opt=""
+ fi
+
+ # XVID profile
+ if [[ "$profile" =~ "xvid" ]]; then
+ found_profile=1
+ final_output_file="$dest/$dvdname.avi"
+ mencoder_general_opts="$lang_opts $passlogfile_opt"
+ mencoder_output_opts="-ofps 30000/1001 -ffourcc DIVX"
+ mencoder_video_filter_opts="-vf pullup,softskip,hqdn3d=2:1:2$CROP$SCALE"
+ mencoder_video_encoder_opts="-ovc xvid -xvidencopts $pass_opt"
+
+ # Very High Quality (16fps)
+ if [ "$profile" == "xvidvhq" ]; then
+ video_encoder_opts[0]="bitrate=$target_video_bitrate"
+ video_encoder_opts[1]="threads=$mencoder_threads"
+ video_encoder_opts[2]="chroma_opt"
+ video_encoder_opts[3]="vhq=4"
+ video_encoder_opts[4]="bvhq=1"
+ video_encoder_opts[5]="quant_type=mpeg"
+ video_encoder_opts[6]="autoaspect"
+ fi
+ # High Quality (20fps)
+ if [ "$profile" == "xvidhq" ]; then
+ video_encoder_opts[0]="bitrate=$target_video_bitrate"
+ video_encoder_opts[1]="threads=$mencoder_threads"
+ video_encoder_opts[2]="chroma_opt"
+ video_encoder_opts[3]="vhq=2"
+ video_encoder_opts[4]="bvhq=1"
+ video_encoder_opts[5]="quant_type=mpeg"
+ video_encoder_opts[6]="autoaspect"
+ fi
+ # Fast (28fps)
+ if [ "$profile" == "xvid" ]; then
+ video_encoder_opts[0]="bitrate=$target_video_bitrate"