# =============================================================================
# MOUvie Converter                           Date: 2009-06-22    Version: 0.0.4
# -----------------------------------------------------------------------------
# Coverting Functions
# -----------------------------------------------------------------------------
# Created by Marc Ulfig                            mail: m.ulfig@googlemail.com
#                                                  web :    http://marculfig.de
#                                                  Movie Converter home:
# Main Project Page: http://sourceforge.net/projects/mouvieconverter/
# or
# http://www.gnome-look.org/content/show.php/MOUvie+Converter?content=100060
# =============================================================================


# -----------------------------------------------------------------------------
# Select the output settings 
# -----------------------------------------------------------------------------
GET_VIDEO_OUTPUT_SETTINGS ()
{
    echo -e "${CONFIG_TXT_COLOR}GET_VIDEO_OUTPUT_SETTINGS ()${CONFIG_TXT_NORMAL}"

    local output=''
    local counter=1

    eval output='$Settings_Output_'$1'_'$2

    echo "$1       $2"
    echo "$output"

    VIDEO_OUT_FORMAT=''             # $MC_OPTS_OUTPUT_FORMAT
    VIDEO_OUT_CODEC=''              # $MC_OPTS_V_CODEC
    VIDEO_OUT_SCALE=''              # $MC_OPTS_ASPECT_RATIO
    VIDEO_OUT_FPS=''                # $MC_OFPS
    VIDEO_OUT_KEY_INTERVAL=''       # $MC_OPTS_KEYINT
    VIDEO_OUT_BUFFER_SIZE=''        # $MC_OPTS_V_BUFFER_SIZE
    VIDEO_OUT_BITRATE_MIN=''        # $MC_OPTS_V_MINRATE
    VIDEO_OUT_BITRATE_MAX=''        # $MC_OPTS_V_MAXRATE
    VIDEO_OUT_BITRATE_VBR=''        # $MC_OPTS_V_VBR_BITRATE
    AUDIO_OUT_CODEC=''              # $MC_OPTS_A_CODEC
    AUDIO_OUT_BITRATE=''            # $MC_OPTS_A_ABITRATE or $MC_V_VBR_BITRATE   = depents on audio codec
    AUDIO_OUT_RATE=''               # $MC_SRATE
    AUDIO_OUT_RESAMPLE_RATE=''      # $MC_AF_LAVCRESAMPLE
    VIDEO_OUT_QUALITY=''            # $MC_OPTS_QUALITY
    VIDEO_OUT_PASSES=''

    VIDEO_OUT_FORMAT=$(echo "$output" | awk '{print $1}')
    VIDEO_OUT_CODEC=$(echo "$output" | awk '{print $2}')
    VIDEO_OUT_SCALE=$(echo "$output" | awk '{print $3}')
    VIDEO_OUT_FPS=$(echo "$output" | awk '{print $4}')
    VIDEO_OUT_KEY_INTERVAL=$(echo "$output" | awk '{print $5}')
    VIDEO_OUT_BUFFER_SIZE=$(echo "$output" | awk '{print $6}')
    VIDEO_OUT_BITRATE_MIN=$(echo "$output" | awk '{print $7}')
    VIDEO_OUT_BITRATE_MAX=$(echo "$output" | awk '{print $8}')
    VIDEO_OUT_BITRATE_VBR=$(echo "$output" | awk '{print $9}')
    AUDIO_OUT_CODEC=$(echo "$output" | awk '{print $10}')
    AUDIO_OUT_BITRATE=$(echo "$output" | awk '{print $11}')
    AUDIO_OUT_RATE=$(echo "$output" | awk '{print $12}')
    AUDIO_OUT_RESAMPLE_RATE=$(echo "$output" | awk '{print $13}')
    VIDEO_OUT_QUALITY=$(echo "$output" | awk '{print $14}')
    VIDEO_OUT_PASSES=$(echo "$output" | awk '{print $15}')
    QUANT_MATRIX=$(echo "$output" | awk '{print $16}')
}


# -----------------------------------------------------------------------------
# Transform a list of arguments to comma sepatrated and return ist
# -----------------------------------------------------------------------------
Separate_By_Sign ()
{
    echo -e "${CONFIG_TXT_COLOR}Separate_By_Sign ()${CONFIG_TXT_NORMAL}"

    RETURN=''

    local sep=$1

    if [ $# -eq 0 ]; then
        echo "Separate_By_Sign () - no arguments"
        return 1
    fi

    local count=0
    while [ $# -gt 0 ]; do

        if [ $count -eq 0 ] ; then
            shift
            RETURN="$1"                   
        else
            RETURN="${RETURN}${sep}$1"
        fi

        count=`expr $count + 1`

        shift
    done
}


# -----------------------------------------------------------------------------
# Create XviD Matrix Files
# -----------------------------------------------------------------------------
Convert_XviD_Quant_Matrix ()
{
    echo -e "${CONFIG_TXT_COLOR}Convert_XviD_Quant_Matrix ()${CONFIG_TXT_NORMAL}"

    local inter_matrix=${1/inter_matrix=/}
    local intra_matrix=${2/intra_matrix=/}
    local inter_matrix=${inter_matrix//,/ }
    local intra_matrix=${intra_matrix//,/ }

    echo -e "$inter_matrix" > "${CONFIG_TMP}/xvid_inter_matrix"
    echo -e "$intra_matrix" > "${CONFIG_TMP}/xvid_intra_matrix"
}


# -----------------------------------------------------------------------------
# Correcting quality output
# -----------------------------------------------------------------------------
Correct_Quality_Settings ()
{
    echo -e "${CONFIG_TXT_COLOR}Correct_Quality_Settings ()${CONFIG_TXT_NORMAL}"

    if echo "$QUICK_MAIN_SELECTION" | grep "DVD" ; then
        if echo "$QUICK_MAIN_SELECTION" | grep "LQ" \
        || echo "$QUICK_MAIN_SELECTION" | grep "MQ" \
        || echo "$QUICK_MAIN_SELECTION" | grep "HQ" ; then
            eval output='$Settings_Output_'$QUICK_MAIN_SELECTION'_'$VIDEO_OUT_SYSTEM
            VIDEO_OUT_PASSES=`echo "$output" | awk '{print $15}'`
        fi
    fi

    if [ "$MANUAL_MAIN_SELECTION" = "DVD" ] ; then
        if [ "$VIDEO_OUT_QUALITY" != "NONE" ] ; then
            eval output='$Settings_Output_'$MANUAL_MAIN_SELECTION'_'$VIDEO_OUT_QUALITY'_'$VIDEO_OUT_SYSTEM
            VIDEO_OUT_PASSES=`echo "$output" | awk '{print $15}'`
        fi
    fi

    if echo "$QUICK_MAIN_SELECTION" | grep "SVCD" ; then
        eval output='$Settings_Output_'$QUICK_MAIN_SELECTION'_'$VIDEO_OUT_SYSTEM
        VIDEO_OUT_PASSES=`echo "$output" | awk '{print $15}'`
    fi
    if [ "$MANUAL_MAIN_SELECTION" = "MP4" ] ; then
        if [ "$VIDEO_OUT_QUALITY" != "NONE" ] ; then
            eval output='$Settings_Output_'$MANUAL_MAIN_SELECTION'_'$VIDEO_OUT_QUALITY'_'$VIDEO_OUT_SYSTEM
            VIDEO_OUT_PASSES=`echo "$output" | awk '{print $15}'`
        fi
    fi
}


# -----------------------------------------------------------------------------
# Correcting some Settings to make shure the converting goes right
# -----------------------------------------------------------------------------
Correct_Convert_Settings ()
{
    echo -e "${CONFIG_TXT_COLOR}Correct_Convert_Settings ()${CONFIG_TXT_NORMAL}"

    # for DVD's
    if echo "$QUICK_MAIN_SELECTION" | grep "DVD" \
    || [ "$MANUAL_MAIN_SELECTION" = "DVD" ] ; then
        VIDEO_OUT_TYPE="DVD"
    fi

    # vcd
    if echo "$QUICK_MAIN_SELECTION" | grep "VCD" || echo "$MANUAL_MAIN_SELECTION" | grep "VCD" ; then
        VIDEO_OUT_TYPE="VCD"
    fi

    # svcd
    if echo "$QUICK_MAIN_SELECTION" | grep "SVCD" || echo "$MANUAL_MAIN_SELECTION" | grep "SVCD" ; then
        VIDEO_OUT_TYPE="SVCD"
    fi

    # mpeg-ts
    if echo "$QUICK_MAIN_SELECTION" | grep "TS" \
    || [ "$MANUAL_MAIN_SELECTION" = "TS" ] ; then
        VIDEO_OUT_TYPE="TS"
    fi

    # mpeg4
    if echo "$QUICK_MAIN_SELECTION" | grep "MP4_" \
    || [ "$MANUAL_MAIN_SELECTION" = "MP4" ] ; then
        VIDEO_OUT_TYPE="MP4"
    fi

    # WMV 7/8
    if echo "$QUICK_MAIN_SELECTION" | grep "WMV_" \
    || echo "$MANUAL_MAIN_SELECTION" | grep "WMV_" ; then
        VIDEO_OUT_TYPE="WMV"
    fi

    # XVID
    if  echo "$QUICK_MAIN_SELECTION" | grep "XVID_" \
    || [ "$MANUAL_MAIN_SELECTION" = "XVID" ] ; then
        VIDEO_OUT_TYPE="XVID"
    fi

    # PSP
    if [ "$QUICK_MAIN_SELECTION" = "PSP" ] || [ "$MANUAL_MAIN_SELECTION" = "PSP" ] ; then
        VIDEO_OUT_TYPE="PSP"
    fi

    # PS3
    if [ "$QUICK_MAIN_SELECTION" = "PS3" ] || [ "$MANUAL_MAIN_SELECTION" = "PS3" ] ; then
        VIDEO_OUT_TYPE="PS3"
    fi

    # XBOX360
    if [ "$QUICK_MAIN_SELECTION" = "XBOX360" ] || [ "$MANUAL_MAIN_SELECTION" = "XBOX360" ] ; then
        VIDEO_OUT_TYPE="XBOX360"
    fi

    # IPOD
    if [ "$QUICK_MAIN_SELECTION" = "IPOD" ] || [ "$MANUAL_MAIN_SELECTION" = "IPOD" ] ; then
        VIDEO_OUT_TYPE="IPOD"
    fi

    # IPHONE
    if [ "$QUICK_MAIN_SELECTION" = "IPHONE" ] || [ "$MANUAL_MAIN_SELECTION" = "IPHONE" ] ; then
        VIDEO_OUT_TYPE="IPHONE"
    fi


echo "VIDEO_OUT_TYPE: $VIDEO_OUT_TYPE"

}


# -----------------------------------------------------------------------------
# Split Video output Files
# -----------------------------------------------------------------------------
Split_Files ()
{
    echo -e "${CONFIG_TXT_COLOR}Split_Files ()${CONFIG_TXT_NORMAL}"

    local CD_Size=$TARGET_CD_SIZE
    local Used_Size=$USED_TARGET_CD_SIZE
    local InputFile="$1"
    local OutputFile="$2"
    local OutputExt="$3"
    local OutPath="$4"
	local Used_File_Size=$(stat -c%s "${OutPath}/${InputFile}")
	local Used_CD_Size=$(echo "scale=0; $CD_Size * 1024 * 1024" | bc)

#echo "Used_CD_Size: $Used_CD_Size"
#echo "Used_File_Size: $Used_File_Size"
#echo "\$Used_Size: _${Used_Size}_"
#echo "\$CD_Size:   _${CD_Size}_"

    if [ -z "$Used_Size" ] && [ -z "$CD_Size" ] ; then
#echo "return"
        return
    fi
#echo "weiter"

    if [ $Used_File_Size -gt $Used_CD_Size ] ; then
        local SplitTime=$(echo "scale=0; ($IN_PLAYTIME / 1000 / 2 / 60 * 60 ) + 120" | bc)
        local SplitTime2=$(echo "scale=0; ($IN_PLAYTIME / 1000 / 2 / 60 * 60) + 90" | bc)
#echo "SplitTime:  $SplitTime"
#echo "SplitTime2: $SplitTime2"
        # Logfile Output
        if [ "$LOGFILE" = "yes" ] ; then
            echo "Split_Files(): at $SplitTime" >> "$LOG_FILE"
        fi

        echo "ffmpeg -vcodec copy -acodec copy -t $SplitTime -i ${OutPath}/${InputFile} ${OutPath}/${OutputFile}_CD1${OutputExt}"
        ffmpeg -vcodec copy -acodec copy -t $SplitTime -i "${OutPath}/${InputFile}" -y "${OutPath}/${OutputFile}_CD1${OutputExt}" 2>&1 \
       | awk -vRS='\r' '$1 ~ /frame/ {gsub(/frame=/,"");gsub(/q=/," q=");if ($1*100/'"${IN_TOTAL_FRAMES}"'>1) print $1*2*100/'"${IN_TOTAL_FRAMES}"'; fflush();}' \
       | Message_Split_File_Prossing "$InputFile" "${OutputFile}_CD1${OutputExt}"


        #echo ; echo ; sleep 3
        echo "ffmpeg -vcodec copy -acodec copy -ss $SplitTime2 -i ${OutPath}/${InputFile} ${OutPath}/${OutputFile}_CD2${OutputExt}"
        ffmpeg -vcodec copy -acodec copy -ss $SplitTime2 -i "${OutPath}/${InputFile}" -y "${OutPath}/${OutputFile}_CD2${OutputExt}" 2>&1 \
       | awk -vRS='\r' '$1 ~ /frame/ {gsub(/frame=/,"");gsub(/q=/," q=");if ($1*100/'"${IN_TOTAL_FRAMES}"'>1) print $1*2*100/'"${IN_TOTAL_FRAMES}"'; fflush();}' \
       | Message_Split_File_Prossing "$InputFile" "${OutputFile}_CD2${OutputExt}"

    fi
}

# -----------------------------------------------------------------------------
# Calculate the MPEG bitrate on disiered filesize
# -----------------------------------------------------------------------------
Calculate_Bitrate ()
{
    echo -e "${CONFIG_TXT_COLOR}Calculate_Bitrate ()${CONFIG_TXT_NORMAL}"

    local SizeCD=$TARGET_CD_SIZE
    local CHECK=FALSE
    local CHECK2=FALSE

    # convert playtime (ms to s)
    local Playtime=$(echo "scale=0; $IN_PLAYTIME / 1000" | bc )
    local PlaytimeMin=$(echo "scale=0; $IN_PLAYTIME / 1000 / 60" | bc )
	echo "Playtime: $Playtime"
#Playtime=5400
#	echo "Playtime: $Playtime"

    while [ $CHECK != TRUE ] ; do
		# convert CD size to kb 
		local SizeCDinKBit=$(echo "scale=0; $SizeCD * 1024 * 8" | bc)

        MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; ($SizeCDinKBit / $Playtime) - $AUDIO_OUT_BITRATE" | bc)
        #echo "($SizeCDinKBit / $Playtime) - $AUDIO_OUT_BITRATE"

        # Logfile Output
        if [ "$LOGFILE" = "yes" ] ; then
            (
            echo "Calculate_Bitrate():"
            echo "        IN_PLAYTIME:   $IN_PLAYTIME ms    $Playtime s    $PlaytimeMin min"
            echo "        SizeMB:        $SizeCD MB    $SizeCDinKBit Kb"
            echo "        AudioBitRate:  $AUDIO_OUT_BITRATE Kb"
            echo "        VideoBitRate:  $MC_OPTS_V_VBR_BITRATE Kbps"
            ) >> "$LOG_FILE"
        fi


		# ---------------------------------------------------------------------
		# MP4 and Xvid calculation
		# ---------------------------------------------------------------------
        if [ "$VIDEO_OUT_TYPE" = "MP4" ] ||  [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
			if [ "$MC_OPTS_V_VBR_BITRATE" -ge 1400 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 1.9 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 900 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 1.7 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 650 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 1.5 / 100)" | bc)
			else
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 1.3 / 100)" | bc)
			fi
			local LOWEST_BITRATE=650
# Hält sich an Bitraten vorgaben.
#3600s ( 60min) 1464kb 686.3MB -1.99%
#4200s ( 70min) 1237kb 687.0MB -1.89%
#4800s ( 80min) 1066kb 687.3MB -1.85%
#5400s ( 90min)  933kb 687.6MB -1.81%
#6000s (100min)  827kb 688.2MB -1.71%
#6600s (110min)  740kb 688.6MB -1.66%
#7200s (120min)  668kb 689.3MB -1.55%
#7800s (130min)  607kb 689.9MB -1.46%
#8400s (140min)  554kb 689.8MB -1.47%
		fi
		# ---------------------------------------------------------------------


		# ---------------------------------------------------------------------
		# VCD calculation
		# ---------------------------------------------------------------------
        if [ "$VIDEO_OUT_TYPE" = "VCD" ] ; then
			if [ "$MC_OPTS_V_VBR_BITRATE" -ge 1350 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 60 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 1200 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 40 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 1025 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 25 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 900 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 15 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 870 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 6 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 840 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 2 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 830 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE + ($MC_OPTS_V_VBR_BITRATE * 0.5 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 820 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE - ($MC_OPTS_V_VBR_BITRATE * 0.3 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 800 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE - ($MC_OPTS_V_VBR_BITRATE * 0.75 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 740 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE - ($MC_OPTS_V_VBR_BITRATE * 0.8 / 100)" | bc)
			elif [ "$MC_OPTS_V_VBR_BITRATE" -ge 450 ] ; then
	            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE - ($MC_OPTS_V_VBR_BITRATE * 1.8 / 100)" | bc)
			fi
			local LOWEST_BITRATE=820
	        MC_OPTS_V_MINRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE / 4" | bc)
# Hält sich NICHT an Bitate vorgaben!!!
#						Versuch 1				Versuch 2				Versuch 3
#3600s ( 60min) 1464kb 447,8MB -56,32%									485,7mb 2342kb
#4200s ( 70min) 1237kb 502,4MB -39,33%			506,0mb		1731kb		519,7mb	1731kb
#4800s ( 80min) 1066kb 555,9MB -25,92%			548,4mb		1332kb		562,8mb	1332kb
#5400s ( 90min)  933kb 613,6MB -14,08%			600,8mb     1072kb		616,4mb 1072kb
#5460s ( 91min)  922kb 624,2MB -12,14%									627,0mb	1060kb
#5520s ( 92min)  910kb 635,2MB -10,20%									637,8mb	1046kb
#5580s ( 93min)  899kb 648,1MB - 8,01%									648,8mb	 943kb
#5640s ( 94min)  888kb 659,0MB - 6,22%									659,7mb	 932kb
#5700s ( 95min)  878kb 669,7MB - 4,52%									670,4mb	 921kb
#5760s ( 96min)  867kb 677,2MB - 3,37%									677,5mb	 884kb
#5820s ( 97min)  857kb 684,9MB - 2,20%									
#5860s ( 98min)  850kb 689.4MB - 1,54%									689,6mb	 867kb
#5940s ( 99min)  837kb 698,7MB - 0,19%									677,0mb  8??kb
#6000s (100min)  827kb 703,0MB + 0,43%			687,0mn		 819kb		700,1mb	 823kb
#6600s (110min)  740kb 704,0MB + 0,57%			698,3mb		 733kb		698,4mb	 733kb
#7200s (120min)  668kb 705,6MB + 0,79%									694,4mb	 655kb
#7800s (130min)  607kb 706,9MB + 0,98%									695,6mb  695kb
#8400s (140min)  554kb 707,6MB + 1,07%									696,5mb	 543kb
        fi
		# ---------------------------------------------------------------------


		# ---------------------------------------------------------------------
		# SVCD calculation
		# ---------------------------------------------------------------------
        if [ "$VIDEO_OUT_TYPE" = "SVCD" ] ; then
            MC_OPTS_V_VBR_BITRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE - ($MC_OPTS_V_VBR_BITRATE * 1.5 / 100)" | bc)
			local LOWEST_BITRATE=1000
# Hält sich NICHT GANZ an Bitate vorgaben!!! (vielleicht MIN und MAX entfernen???)
#3600s ( 60min) 1464kb 700,9MB +0,13%
#4200s ( 70min) 1237kb 701,7MB +0,24%
#4800s ( 80min) 1066kb 702,6MB +0,37%
#5400s ( 90min)  933kb 703,6MB +0,51%
#6000s (100min)  827kb 704,7MB +0,67%
#6600s (110min)  740kb 705,5MB +0,78%
#7200s (120min)  668kb 706,8MB +0,96%
#7800s (130min)  607kb 708,2MB +1,16%
#8400s (140min)  554kb MB
        fi
		# ---------------------------------------------------------------------


		# ---------------------------------------------------------------------
		# check for to low bitrate , then ask for two cd's if to low
		# ---------------------------------------------------------------------
		if [ "$MC_OPTS_V_VBR_BITRATE" -lt "$LOWEST_BITRATE" ] ; then

            local Use_Two_CDs=${Lang_Use_Two_CD2/@CALBITRATE@/$MC_OPTS_V_VBR_BITRATE}
            Use_Two_CDs=${Use_Two_CDs/@LONG@/$PlaytimeMin}

            if zenity --question --ok-label="$Lang_Use_Two_CD_Button_OK" --cancel-label="$Lang_Use_Two_CD_Button_Cancel" --title="$Lang_PRG_Name - $Lang_Question_BIG" --text="$Use_Two_CDs" ; then
                SizeCD=`expr $SizeCD + $TARGET_CD_SIZE`
		        if [ "$LOGFILE" = "yes" ] ; then
	                echo "        Change filesize to: $SizeCD" >> "$LOG_FILE"
				fi
                echo "        Change filesize to: $SizeCD"
            else
		        if [ "$LOGFILE" = "yes" ] ; then
	                echo "        Using pre-selected filesize: $SizeCD" >> $LOG_FILE
				fi
                echo "        Using pre-selected filesize: $SizeCD"
                CHECK=TRUE
            fi
		else
            CHECK=TRUE
		fi
		# ---------------------------------------------------------------------
    done

    if [ $MC_OPTS_V_VBR_BITRATE -gt $VIDEO_OUT_BITRATE_MAX ] ; then
        MC_OPTS_V_VBR_BITRATE=$VIDEO_OUT_BITRATE_MAX

		if [ -n $MC_OPTS_V_MINRATE ] ; then
	        MC_OPTS_V_MINRATE=$(echo "scale=0; ( $MC_OPTS_V_VBR_BITRATE / 4 )" | bc)
		fi
        if [ "$LOGFILE" = "yes" ] ; then
			echo "        Max Bitrate reached." >> "$LOG_FILE"
		fi
 	    echo "        Max Bitrate reached."
    fi

    USED_TARGET_CD_SIZE=$SizeCD

	if [ "$LOGFILE" = "yes" ] ; then
	    echo "        VideoBitRate:  $MC_OPTS_V_VBR_BITRATE Kbps (NEU)" >> "$LOG_FILE"
	fi
    echo "        VideoBitRate:  $MC_OPTS_V_VBR_BITRATE Kbps (NEU)"
#exit
}


# -----------------------------------------------------------------------------
# calculate the resize
# -----------------------------------------------------------------------------
Resize_Piture ()
{
    echo -e "${CONFIG_TXT_COLOR}Resize_Piture ()${CONFIG_TXT_NORMAL}"

    local in_w=$IN_SIZE_WIDTH
    local in_h=$IN_SIZE_HEIGHT
    local in_w_ratio=$IN_ASPECT_RATIO_INT
    local in_h_ratio=$( echo "scale=3; $in_h / $in_w" | bc )

    local out_w=${VIDEO_OUT_SCALE:0:3}
    local out_h=${VIDEO_OUT_SCALE:4:3}
    local out_w_ratio=$( echo "scale=3; $out_w / $out_h" | bc )
    local out_h_ratio=$( echo "scale=3; $out_h / $out_w" | bc )
    local ratio_169=$( echo "scale=3; 16 / 9" | bc )
    local ratio_Wide=$( echo "scale=3; 221 / 100" | bc )
    local ratio_43=$( echo "scale=3; 4 / 3" | bc )
    local runden=''

    local scale_x=$out_w

    if [ "$IN_ASPECT_RATIO" = "16/9" ] && [ "$VIDEO_OUT_ASPECT" = "16/9" ] ; then # && [ $test_in_resWide = 0 ]; then
        #echo "test 16/6"
        local scale_y=$( echo "scale=3; $out_h / $in_w_ratio * $ratio_169" | bc )
        runden=1
    fi

    if [ "$IN_ASPECT_RATIO" = "4/3" ] ; then
        #echo "test 4/3"
        local scale_y=$out_h
    fi

    if [ "$IN_ASPECT_RATIO" = "16/9" ] && [ "$VIDEO_OUT_ASPECT" = "4/3" ] ; then
        #echo "test 16/9 -> 4/3"
        local scale_y=$( echo "scale=0; $out_h / $in_w_ratio * $ratio_43" | bc )
        #echo "scale_y: $scale_y"
        local scale_y=${scale_y:0:3}
        local scale_y=`expr $scale_y - 8`
        runden=1
    fi

    # auf vielfachen von 4 runden
    #echo "vor Runden y : $scale_y"
    #echo "vor Runden y2: $scale_y2"
    if [ -n "$runden" ] ; then
        local erg=$(echo "scale=0; $scale_y / 16 " | bc)
        local scale_y=$(echo " $erg * 16" | bc)

        if [ $scale_y -gt $out_h ] ; then
            local scale_y=$out_h
        fi
    fi
    #echo "nach Runden2 y : $scale_y"
    #echo "nach Runden2 y2: $scale_y2"

    if [ "$VIDEO_OUT_TYPE" = "XVID" ] || [ "$VIDEO_OUT_TYPE" = "MP4" ] ; then
        local out_h=$scale_y
        #VIDEO_OUT_ASPECT=$IN_ASPECT_RATIO_INT
    fi

    local padding=$(echo "$out_h - $scale_y" | bc )
    local padding=$(echo "$padding / 2" | bc )
    

    if [ "$in_x:$in_y" != "$VIDEO_OUT_SCALE" ] ; then
        #echo ; echo "ungleich --> Scale..."
        MC_VF_SCALE="$scale_x:$scale_y"
        MC_VF_EXPAND="0:$out_h"
        MC_VF_CROP="$out_w:$out_h"
        FF_SCALE="${scale_x}x${scale_y}"
        FF_BLACK_BARS="$padding"
    fi

    # Logfile Output
    if [ "$LOGFILE" = "yes" ] ; then
        (
        echo "Resize_Piture():"
        echo "        MC_VF_SCALE:   $MC_VF_SCALE"
        echo "        MC_VF_EXPAND:  $MC_VF_EXPAND"
        echo "        MC_VF_CROP     $MC_VF_CROP"
        echo "        FF_SCALE:      $FF_SCALE"
        echo "        FF_BLACK_BARS: $FF_BLACK_BARS"
        ) >> "$LOG_FILE"
    fi
#exit
}

# -----------------------------------------------------------------------------
# Convert to ...
# -----------------------------------------------------------------------------
MENCODER_TO_ALL ()
{
    echo -e "${CONFIG_TXT_COLOR}MENCODER_TO_ALL ()${CONFIG_TXT_NORMAL}"

    Resize_Piture
	Check_CPU_THREADS

    # -------------------------------------------------------------------------
    # All
    # -------------------------------------------------------------------------
    MC_OVC_OPTION="$VIDEO_OUT_CODEC"
    MC_OAC_OPTION="$AUDIO_OUT_CODEC"
    MC_VF_ADDITIONAL="$ADDITIONAL_VF_PARAMETER unsharp=l3x3:0.7 pp=ha:128:7/va/dr/tmpnoise:1:2:3"
    MC_OFPS="$VIDEO_OUT_FPS"
    MC_AID_ID="$AUDIO_OUT_STREAM_ID"
    MC_SRATE="$AUDIO_OUT_RATE"
    MC_AF_RESAMPLE="$AUDIO_OUT_RESAMPLE_RATE"
	MC_OPTS_V_MINRATE=""
	MC_OPTS_V_MAXRATE=""
    MC_OPTS_V_VBR_BITRATE="$VIDEO_OUT_BITRATE_VBR"
    MC_OPTS_ASPECT_RATIO="$VIDEO_OUT_ASPECT"
    MC_OPTS_KEYINT="$VIDEO_OUT_KEY_INTERVAL"
    MC_OPTS_AUDIO_BITRATE="$AUDIO_OUT_BITRATE"
    MC_ADDITIONAL="$ADDITIONAL_PARAMETER"
    MC_CHANNEL_NUMBERS="2"
    # -------------------------------------------------------------------------


    # -------------------------------------------------------------------------
    if [ "$VIDEO_OUT_TYPE" = "DVD" ] || [ "$VIDEO_OUT_TYPE" = "SVCD" ] || [ "$VIDEO_OUT_TYPE" = "VCD" ] ; then
        MC_OVC_OPTION="lavc"
        MC_OAC_OPTION="lavc"
        MC_VF_HARDDUP=TRUE
        MC_OPTS_V_MINRATE="$VIDEO_OUT_BITRATE_MIN"
        MC_OPTS_V_MAXRATE="$VIDEO_OUT_BITRATE_MAX"
        MC_OPTS_V_CODEC="$VIDEO_OUT_CODEC"
        MC_OPTS_V_BUFFER_SIZE="$VIDEO_OUT_BUFFER_SIZE"
        MC_OF_OPTION="mpeg"
        MC_OPTS_A_CODEC="$AUDIO_OUT_CODEC"
        MC_OPTS_A_BITRATE="$AUDIO_OUT_BITRATE"
        MC_OPTS_OUTPUT_FORMAT="$VIDEO_OUT_FORMAT"
    fi

    if [ "$VIDEO_OUT_TYPE" = "DVD" ] ; then
        MC_OPTS_VSTRICT="0"
        MC_OPTS_V_CODEC="mpeg2video"

    elif [ "$VIDEO_OUT_TYPE" = "SVCD" ] ; then
        MC_OPTS_V_CODEC="mpeg2video"
#		if echo "$QUICK_MAIN_SELECTION" | grep "M_SVCD_s" \
#		|| [ "$MANUAL_MAIN_SELECTION" = "M_SVCD" ] ; then
#	        MC_OPTS_V_MINRATE=""
#    	    MC_OPTS_V_MAXRATE=""
#		fi

    elif [ "$VIDEO_OUT_TYPE" = "VCD" ] ; then
        MC_OPTS_V_CODEC="mpeg1video"
		if echo "$QUICK_MAIN_SELECTION" | grep "M_VCD_s" \
		|| [ "$MANUAL_MAIN_SELECTION" = "M_VCD" ] ; then
	        MC_OPTS_V_MINRATE=$(echo "scale=0; $MC_OPTS_V_VBR_BITRATE / 4" | bc)
#	        MC_OPTS_V_MINRATE=""
#	        MC_OPTS_V_MAXRATE=""
		fi

    elif [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
        MC_OPTS_AUDIO_BITRATE_MODE="abr"
        MC_ADDITIONAL="$MC_ADDITIONAL -ffourcc DX50"    # nessessary for some DVD-Player, so why not for all?

    elif [ "$VIDEO_OUT_TYPE" = "MP4" ] ; then
        MC_OVC_OPTION="lavc"
        MC_OPTS_V_CODEC="$VIDEO_OUT_CODEC"
        MC_OPTS_AUDIO_BITRATE_MODE="abr"

    elif [ "$VIDEO_OUT_TYPE" = "PSP" ] ; then
        MC_OVC_OPTION="lavc"
  	    MC_OAC_OPTION="lavc"
       	MC_OPTS_A_CODEC="libfaac"
        MC_OPTS_ADDITIONAL="aglobal=1:vglobal=1:vcodec=mpeg4"
		MC_AF="-af lavcresample=$MC_AF_RESAMPLE"
		MC_AF_RESAMPLE=""
        MC_VF_HARDDUP=TRUE
	    MC_SRATE=""
        MC_OF_OPTION="lavf"
        MC_OPTS_A_BITRATE="$AUDIO_OUT_BITRATE"
        MC_OPTS_OUTPUT_FORMAT="$VIDEO_OUT_FORMAT"

    elif [ "$VIDEO_OUT_TYPE" = "WMV" ] ; then
		MC_OPTS_CPU_THREADS=""
        MC_OVC_OPTION="lavc"
        MC_OAC_OPTION="lavc"
        MC_OPTS_V_CODEC="$VIDEO_OUT_CODEC"
        MC_OPTS_A_CODEC="$AUDIO_OUT_CODEC"
        MC_OPTS_A_BITRATE="$AUDIO_OUT_BITRATE"
    fi

    # -------------------------------------------------------------------------


    # check for 6-channel Input and output for AC3
    if [ "$VIDEO_OUT_TYPE" = "DVD" ] || [ "$VIDEO_OUT_TYPE" = "XVID" ] || [ "$VIDEO_OUT_TYPE" = "MP4" ] ; then
        Check_Audio_Input_For_Surround_Sound
        local ret=$?
        if [ $ret = 1 ] ; then
            MC_CHANNEL_NUMBERS="${IN_AUDIO_CHANNELS[$AUDIO_OUT_STREAM_NO]}"
        fi
        if [ $ret = 2 ] ; then
            MC_CHANNEL_NUMBERS="$IN_AUDIO_CHANNELS"
        fi
    fi


    # Quant Matrix
    if [ "$VIDEO_OUT_TYPE" = "VCD" ] || [ "$VIDEO_OUT_TYPE" = "SVCD" ] || [ "$VIDEO_OUT_TYPE" = "DVD" ] || [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
        if [ ! "$QUANT_MATRIX" ]; then
            QUANT_MATRIX="$QUANT_MATRIX_DEFAULT"
        fi
        eval INTER_QUANT_MATRIX='$Setting_Inter_Matrix_'$QUANT_MATRIX
        eval INTRA_QUANT_MATRIX='$Setting_Intra_Matrix_'$QUANT_MATRIX

        if [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
            Convert_XviD_Quant_Matrix $INTER_QUANT_MATRIX $INTRA_QUANT_MATRIX
            MC_OPTS_ADDITIONAL="quant_intra_matrix=${CONFIG_TMP}/xvid_intra_matrix quant_inter_matrix=${CONFIG_TMP}/xvid_inter_matrix"
        else
            MC_OPTS_ADDITIONAL="$INTER_QUANT_MATRIX $INTRA_QUANT_MATRIX"
        fi
    fi


    MENCODER_CONVERTION "$1" "$2" "$3" $4
}


# -----------------------------------------------------------------------------
# Mencoder command line
# -----------------------------------------------------------------------------
MENCODER_CONVERTION ()
{
    echo -e "${CONFIG_TXT_COLOR}MENCODER_CONVERTION ()${CONFIG_TXT_NORMAL}"

    # we need the following to work
    # $1 the input movie
    # $2 the output movie
    # $3 path to save the file
    # $4 the counter for the precessing box
    # $MC_OVC         -> var's = $MC_OVC_OPTION              ? which main video codec will be used - "copy" is possible
    # $MC_OAC         -> var's = $MC_OAC_OPTION              ? which main audio codec will be used - "copy" is possible
    # $MC_VF          -> var's = $MC_VF_SCALE                ? resize the movie to this format (what ever comes first: the width or the height)
    #                            $MC_VF_EXPAND               ? expand the movie to this format
    #                            $MC_VF_CROP                 ? cut egdes
    #                            $MC_VF_HARDDUP              ? hard fix audio to frames
    #                            $MC_VF_ADDITIONAL           ? other settings - like pullup, softskip, ...  -  (space pr tab separated)
    # $MC_OFPS        -> var's = $MC_OFPS                    ? fps output

    # -------------------------------------------------------------------------
    # Codec options (depents on $MC_OVC_OPTION)
    # -------------------------------------------------------------------------
    # $MC_OPTS_LAVC  ---> var's = $MC_OPTS_A_CODEC                 ? used audio codec - mp2, mp3, pcm, ogg/vorbis,...
    # $MC_OPTS_X264   -|          $MC_OPTS_A_BITRATE               ? used audio bitrate VBR/CBR
    # $MC_OPTS_XVID   -|          $MC_OPTS_V_CODEC                 ? used video codec - mpeg1video, mpeg2video, mpeg4, x264, xvid, ...
    #                             $MC_OPTS_V_MINRATE               ? minmal used bitrate   - should be used    |
    #                             $MC_OPTS_V_MAXRATE               ? maximal used bitrate  - must be used      | - for CBR set all to same bitrate (see VCD settings)
    #                             $MC_OPTS_V_VBR_BITRATE           ? vbr bitrate
    #                             $MC_OPTS_V_BUFFER_SIZE           ? buffer size for frames
    #                             $MC_OPTS_ASPECT_RATIO            ? aspect ratio
    #                             $MC_OPTS_KEYINT                  ? keyframe interval
    #                             $MC_OPTS_VSTRICT                 ? needed for standard conform DVD format
    #                             $MC_OPTS_QUALITY                 ? special quality settings - depends on wanted output quality  -  (space or tab separated)
    #                             $MC_OPTS_INTERLACE               ? this will automaticly set by getting source movie informations (var: VIDEO_OUT_SCAN_TYPE)
    #                             $MC_OPTS_FIXED_QUANT             ? what quatiziser do you want?
    #                             $MC_OPTS_ADDITIONAL              ? additional features  -  (space or tab separated)
    #						      $MC_OPTS_CPU_THREADS             ? how many CPU threads can be used?
    # -------------------------------------------------------------------------
    # $MC_OPTS_MPEG  ---> var's   $MC_OPTS_OUTPUT_FORMAT           ? addition special output filter like "dvd:tsaf", "xsvcd", "xvcd", "psp", ...
    # $MC_OPTS_LAVF   -|
    # -------------------------------------------------------------------------
    # Codec options (depents on $MC_OAC_OPTION)
    # -------------------------------------------------------------------------
    # $MC_OPTS_AUDIO ---> var's   $MC_OPTS_AUDIO_VBR_MODE          ? zu verwendender Bitratenmodus (used for MP3)
    #                                                                   0: cbr (constant bitrate)
    #                                                                   1: mt (Mark Taylor VBR algorithm)
    #                                                                   2: rh (Robert Hegemann VBR algorithm - default)
    #                                                                   3: abr (average bitrate)
    #                                                                   4: mtrh (Mark Taylor Robert Hegemann VBR algorithm)
    #                             $MC_OPTS_AUDIO_BITRATE_MODE      ? abr (durchschnittliche (average) Bitrate)
    #	                                                             cbr (konstante Bitrate Dies erzwingt den CBR-Modus)
    #                             $MC_OPTS_AUDIO_BITRATE           ? VBR/CBR bitrate
    #                             $MC_OPTS_AUDIO_MODE              ? mode=<0−3> (Standard: automatisch)
    #                                                                   0   Stereo
	#                                                                   1   Joint-Stereo
	#                                                                   2   Dual-Channel
	#                                                                   3   Mono
    #                             $MC_OPTS_AUDIO_ADDITIONAL        ? additional features  -  (space or tab separated)
    # -------------------------------------------------------------------------

    # we can use the following additional options
    # $MC_SWS         ->        no var's                     ? Typ des Softwareskalierers> (siehe auch -vf scale und -zoom)
    #                                                             0    fast bilinear
    #                                                             1    bilinear
    #                                                             2    bicubic (gute Qualität) (Standard)
    #                                                             3    experimentell
    #                                                             4    nearest neighbour (schlechte Qualität)
    #                                                             5    area
    #                                                             6    luma bicubic / chroma bilinear
    #                                                         ->  7    gaussian: Schärfe (0 (weich) \- 100 (scharf))
    #                                                             8    sincR
    #                                                             9    lanczos:  Filterlänge (1\-10)
    #                                                             10   natural bicubic spline
    # $MC_AID         -> var's = $MC_AID_ID                 ? id of the audio track in source movie - needed when we habe multiple tracks e.g. VOB files from DVD's
    # $MC_SRATE       -> var's = $MC_SRATE                  ? audio sample rate
    # $MC_OF          -> var's = $MC_OF_OPTION              ? output filter - we need it only for mpeg files
    # $MC_SSF         -> var's = $MC_SSF                    ? sharpen filter
    # $MC_AF          -> var's = $MC_AF_RESAMPLE            ? audio resampling, based on lavc audio codec
    # $MC_FPS         -> var's = $MC_FPS                    ? fps input
    # $MC_CHANNEL     -> var's = $MC_CHANNEL_NUMBERS        ? how many audio channels will be used
    # $MC_AUDIO_DELAY ->        no var's                    ? sets the autio delay
    # $MC_ADDITIONAL  ->        no var's                    ? can be used to additonal feature - like "-noskip"  -  (space or tab separated)
    # $MC_INFO_AVI    ->        no var's                    ? −info <Option1:Option2:...> (nur bei AVIs)
    #                                                           Gibt die Werte für den Info-Dateikopf der resultierenden AVI-Datei an.
    #                                                           name=<Wert>         -> Titel des Films
    #                                                           artist=<Wert>       -> Künstler oder Autor des Films
    #                                                           genre=<Wert>        -> Kategorie des Films
    #                                                           subject=<Wert>      -> Inhalte der Datei
    #                                                           copyright=<Wert>    -> Copyright-Informationen
    #                                                           srcform=<Wert>      -> Urpsrungsform des digitalisierten Materials
    #                                                           comment=<Wert>
    # -------------------------------------------------------------------------
    # preset variables
    if [ -n "$VIDEO_OUT_PASSES" ] ; then
        xPASS_ENCODING=$VIDEO_OUT_PASSES
    else
        xPASS_ENCODING=1
    fi

#    if [ "$VIDEO_OUT_TYPE" = "MP4" ] || [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
#        MC_INFO_AVI="-info comment="
        MC_INFO_AVI_COMMENT="-info comment=\"MOUvie_Converter_$CONF_VERSION\""
#    fi
    # -------------------------------------------------------------------------
    # Additional quallity settings
    if [ "$VIDEO_OUT_QUALITY" != "NONE" ] && [ "$VIDEO_OUT_QUALITY" != "FALSE" ] && [ "$VIDEO_OUT_QUALITY" != "" ]; then

        if [ "$VIDEO_OUT_TYPE" = "VCD" ] ; then
            local Quality_System="MPEG1"
        elif [ "$VIDEO_OUT_TYPE" = "SVCD" ] || [ "$VIDEO_OUT_TYPE" = "DVD" ] || [ "$VIDEO_OUT_TYPE" = "TS" ] ; then
            local Quality_System="MPEG2"
        elif [ "$VIDEO_OUT_TYPE" = "MP4" ] ; then
            local Quality_System="MPEG4"
        elif [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
            local Quality_System="XVID"
        elif [ "$VIDEO_OUT_TYPE" = "PSP" ] ; then
            local Quality_System="PSP"
        fi

        if [ "$VIDEO_OUT_QUALITY" = "LQ" ]; then
            eval MC_OPTS_QUALITY='$Setting_'$Quality_System'_LQ'
        fi
        if [ "$VIDEO_OUT_QUALITY" = "MQ" ]; then
            eval MC_OPTS_QUALITY='$Setting_'$Quality_System'_MQ'
        fi
        if [ "$VIDEO_OUT_QUALITY" = "HQ" ]; then
            eval MC_OPTS_QUALITY='$Setting_'$Quality_System'_HQ'
        fi
    fi

    # -------------------------------------------------------------------------
    # Bitrate calculation for MPEG4/XVCD/XSVCD if we have destination file size
    if [ "$MANUAL_MAIN_SELECTION" = "M_VCD" ] || [ "$MANUAL_MAIN_SELECTION" = "M_SVCD" ] \
    || [ "$MANUAL_MAIN_SELECTION" = "MP4" ] || [ "$MANUAL_MAIN_SELECTION" = "XVID" ] \
    || echo "$QUICK_MAIN_SELECTION" | grep "M_VCD_s"  \
    || echo "$QUICK_MAIN_SELECTION" | grep "M_SVCD_s" \
    || echo "$QUICK_MAIN_SELECTION" | grep "XVID_s"   \
    || echo "$QUICK_MAIN_SELECTION" | grep "MP4_s"
    then
        if echo "$QUICK_MAIN_SELECTION" | grep "MP4_s" ; then
            TARGET_CD_SIZE=${QUICK_MAIN_SELECTION/MP4_s/}
            #Calculate_Bitrate_On_Size "$1" "$3"

        elif echo "$QUICK_MAIN_SELECTION" | grep "XVID_s" ; then
            TARGET_CD_SIZE=${QUICK_MAIN_SELECTION/XVID_s/}

        elif echo "$QUICK_MAIN_SELECTION" | grep "M_VCD_s" ; then
            TARGET_CD_SIZE=${QUICK_MAIN_SELECTION/M_VCD_s/}

        elif echo "$QUICK_MAIN_SELECTION" | grep "M_SVCD_s" ; then
            TARGET_CD_SIZE=${QUICK_MAIN_SELECTION/M_SVCD_s/}
        fi

		if [ $TARGET_CD_SIZE != FALSE ] || [ ! -n $TARGET_CD_SIZE ] ; then
	        Calculate_Bitrate
		fi
    fi
#return
    # -------------------------------------------------------------------------
    # Check if destination and source audio (AC3/MP2/mp3/...) the same
    # If so, we copy the audio stream instat of encoding
    if [ "$VIDEO_OUT_TYPE" != "VCD" ] && [ "$VIDEO_OUT_TYPE" != "SVCD" ] ; then
        Check_Audio_Source_and_Destination
        local ret=$?
        if [ $ret = 1 ] ; then
            MC_OAC_OPTION="copy"
            AUDIO_OUT_COPY="TRUE"
        fi
    fi

    # -------------------------------------------------------------------------
    # Check for Audio delay
    Check_Audio_Delay    
    if [ -n "$MC_AUDIO_DELAY" ] && [ "$MC_AUDIO_DELAY" != 0 ] ; then
            MC_AUDIO_DELAY="-audio-delay $MC_AUDIO_DELAY"
    fi


    # -------------------------------------------------------------------------
    # Merge Parameter
    MC_OVC_OPTION=`echo $MC_OVC_OPTION | tr "[:upper:]" "[:lower:]"`
    MC_OAC_OPTION=`echo $MC_OAC_OPTION | tr "[:upper:]" "[:lower:]"`
    MC_OVC="-ovc $MC_OVC_OPTION"
    MC_OAC="-oac $MC_OAC_OPTION"
    MC_SWS="-sws 7"
    # -------------------------------------------------------------------------
    if [ -n "$MC_VF_SCALE" ] || [ -n "$MC_VF_EXPAND" ] || [ -n "$MC_VF_CROP" ] || [ -n "$MC_VF_HARDDUP" ] || [ -n "$MC_VF_ADDITIONAL" ] ; then
        if [ -n "$MC_VF_SCALE" ] ; then
            MC_VF_SCALE="scale=$MC_VF_SCALE"
        fi
        if [ -n "$MC_VF_EXPAND" ] ; then
            MC_VF_EXPAND="expand=$MC_VF_EXPAND"
        fi
        if [ -n "$MC_VF_CROP" ] ; then
            MC_VF_CROP="crop=$MC_VF_CROP"
        fi
        if [ -n "$MC_VF_HARDDUP" ] ; then
            MC_VF_HARDDUP="harddup"
        fi
        if [ "$IN_VIDEO_INTERLACE" = "Interlaced" ] ; then
            MC_VF_INTERLACE="lavcdeint"
        fi

        #MC_VF_SCALE="expand=aspect=$VIDEO_OUT_ASPECT scale=$VIDEO_OUT_SCALE"

        Separate_By_Sign "," $MC_VF_SCALE $MC_VF_EXPAND $MC_VF_CROP $MC_VF_HARDDUP $MC_VF_INTERLACE $MC_VF_ADDITIONAL
        MC_VF="-vf $RETURN"
    fi
    # -------------------------------------------------------------------------
    MC_OFPS="-ofps $MC_OFPS"
    # -------------------------------------------------------------------------


    # -------------------------------------------------------------------------
    # when $MC_OVC_OPTION = lavc, x264
    # -------------------------------------------------------------------------
    if [ "$MC_OVC_OPTION" = "lavc" ] ; then
        local OPTS_PARAMS="acodec abitrate vcodec vrc_minrate vrc_maxrate vbitrate vrc_buf_size aspect keyint vstrict FALSE threads"
    fi
    if [ "$MC_OVC_OPTION" = "x264" ] ; then
        local OPTS_PARAMS="FALSE FALSE FALSE FALSE vbv_maxrate bitrate vbv_bufsize FALSE keyint FALSE FALSE threads"
    fi
    if [ "$MC_OVC_OPTION" = "xvid" ] ; then
        local OPTS_PARAMS="FALSE FALSE FALSE FALSE FALSE bitrate FALSE aspect FALSE FALSE fixed_quant threads"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_OPTS_A_CODEC" ] ; then
        MC_OPTS_A_CODEC=`echo $MC_OPTS_A_CODEC | tr "[:upper:]" "[:lower:]"`
        eval MC_OPTS_A_CODEC=$(echo "$OPTS_PARAMS" | awk '{print $1}')"=$MC_OPTS_A_CODEC"
    fi
    if [ -n "$MC_OPTS_A_BITRATE" ] ; then
        eval MC_OPTS_A_BITRATE=$(echo "$OPTS_PARAMS" | awk '{print $2}')"=$MC_OPTS_A_BITRATE"
    fi
    if [ -n "$MC_OPTS_V_CODEC" ] ; then
        eval MC_OPTS_V_CODEC=$(echo "$OPTS_PARAMS" | awk '{print $3}')"=$MC_OPTS_V_CODEC"
    fi
    if [ -n "$MC_OPTS_V_MINRATE" ] ; then
        eval MC_OPTS_V_MINRATE=$(echo "$OPTS_PARAMS" | awk '{print $4}')"=$MC_OPTS_V_MINRATE"
    fi
    if [ -n "$MC_OPTS_V_MAXRATE" ] ; then
        eval MC_OPTS_V_MAXRATE=$(echo "$OPTS_PARAMS" | awk '{print $5}')"=$MC_OPTS_V_MAXRATE"
    fi
    if [ -n "$MC_OPTS_V_VBR_BITRATE" ] ; then
        eval MC_OPTS_V_VBR_BITRATE=$(echo "$OPTS_PARAMS" | awk '{print $6}')"=$MC_OPTS_V_VBR_BITRATE"
    fi
    if [ -n "$MC_OPTS_V_BUFFER_SIZE" ] ; then
        eval MC_OPTS_V_BUFFER_SIZE=$(echo "$OPTS_PARAMS" | awk '{print $7}')"=$MC_OPTS_V_BUFFER_SIZE"
    fi
    if [ -n "$MC_OPTS_ASPECT_RATIO" ] ; then
        eval MC_OPTS_ASPECT_RATIO=$(echo "$OPTS_PARAMS" | awk '{print $8}')"=$MC_OPTS_ASPECT_RATIO"
    fi
    if [ -n "$MC_OPTS_KEYINT" ] ; then
        eval MC_OPTS_KEYINT=$(echo "$OPTS_PARAMS" | awk '{print $9}')"=$MC_OPTS_KEYINT"
    fi
    if [ -n "$MC_OPTS_VSTRICT" ] ; then
        eval MC_OPTS_VSTRICT=$(echo "$OPTS_PARAMS" | awk '{print $10}')"=$MC_OPTS_VSTRICT"
    fi
    if [ -n "$MC_OPTS_FIXED_QUANT" ] ; then
        eval MC_OPTS_FIXED_QUANT=$(echo "$OPTS_PARAMS" | awk '{print $11}')"=$MC_OPTS_FIXED_QUANT"
    fi
    if [ -n "$MC_OPTS_CPU_THREADS" ] ; then
        eval MC_OPTS_CPU_THREADS=$(echo "$OPTS_PARAMS" | awk '{print $12}')"=$MC_OPTS_CPU_THREADS"
    fi
    # -------------------------------------------------------------------------
    # merge video "lavc" params
    # -------------------------------------------------------------------------
    if [ "$MC_OVC_OPTION" = "lavc" ] ; then
        Separate_By_Sign ":" $MC_OPTS_A_CODEC $MC_OPTS_A_BITRATE $MC_OPTS_V_CODEC $MC_OPTS_ASPECT_RATIO $MC_OPTS_KEYINT $MC_OPTS_V_BUFFER_SIZE $MC_OPTS_V_VBR_BITRATE $MC_OPTS_V_MINRATE $MC_OPTS_V_MAXRATE $MC_OPTS_VSTRICT $MC_OPTS_INTERLACE $MC_OPTS_QUALITY $MC_OPTS_CPU_THREADS $MC_OPTS_ADDITIONAL
        MC_OPTS_LAVC="-lavcopts $RETURN"
    fi
    # -------------------------------------------------------------------------
    # merge video "x264" params
    # -------------------------------------------------------------------------
    if [ "$MC_OVC_OPTION" = "x264" ] ; then
        Separate_By_Sign ":" $MC_OPTS_KEYINT $MC_OPTS_V_BUFFER_SIZE $MC_OPTS_V_VBR_BITRATE $MC_OPTS_V_MAXRATE $MC_OPTS_QUALITY $MC_OPTS_CPU_THREADS $MC_OPTS_ADDITIONAL
        MC_OPTS_X264="-x264encopts $RETURN"
    fi
    # -------------------------------------------------------------------------
    # merge video "xvid" params
    # -------------------------------------------------------------------------
    if [ "$MC_OVC_OPTION" = "xvid" ] ; then
        Separate_By_Sign ":" $MC_OPTS_V_VBR_BITRATE $MC_OPTS_FIXED_QUANT $MC_OPTS_ASPECT_RATIO $MC_OPTS_QUALITY $MC_OPTS_CPU_THREADS $MC_OPTS_ADDITIONAL
        MC_OPTS_XVID="-xvidencopts $RETURN"
    fi
    # -------------------------------------------------------------------------


    # -------------------------------------------------------------------------
    # when MC_OF_OPTION = mpeg, lavf
    # -------------------------------------------------------------------------
    if [ "$MC_OF_OPTION" = "mpeg" ] || [ "$MC_OF_OPTION" = "lavf" ] ; then
        local OPTS_PARAMS="format"
    fi
    if [ -n "$MC_OPTS_OUTPUT_FORMAT" ] ; then
        eval MC_OPTS_OUTPUT_FORMAT=$(echo "$OPTS_PARAMS" | awk '{print $1}')"=$MC_OPTS_OUTPUT_FORMAT"
    fi
    # -------------------------------------------------------------------------
    # merge mpeg params
    # -------------------------------------------------------------------------
    if [ "$MC_OF_OPTION" = "mpeg" ] ; then
        Separate_By_Sign ":" $MC_OPTS_OUTPUT_FORMAT
        MC_OPTS_MPEG="-mpegopts $RETURN"
    fi
    # -------------------------------------------------------------------------
    # merge lavf params
    # -------------------------------------------------------------------------
    if [ "$MC_OF_OPTION" = "lavf" ] ; then
        Separate_By_Sign ":" $MC_OPTS_OUTPUT_FORMAT
        MC_OPTS_LAVF="-lavfopts $RETURN"
    fi
    # -------------------------------------------------------------------------


    # -------------------------------------------------------------------------
    # when $MC_OAC_OPTION = mp3, faac
    # -------------------------------------------------------------------------
    if [ "$MC_OAC_OPTION" = "mp3lame" ] ; then
        local OPTS_PARAMS="abr cbr vbr br mode"
        # check for Mono
        if [ "$MC_AF_RESAMPLE" = "8000" ] && [ "$MC_SRATE" = "8000" ] ; then
            MC_OPTS_AUDIO_MODE=3
        fi
    fi
    if [ "$MC_OAC_OPTION" = "faac" ] ; then
        local OPTS_PARAMS="FALSE FALSE FALSE br FALSE"
    fi
    # -------------------------------------------------------------------------
    if [ "$MC_OPTS_AUDIO_BITRATE_MODE" = "abr" ] ; then
        MC_OPTS_AUDIO_BITRATE_MODE=$(echo "$OPTS_PARAMS" | awk '{print $1}')
    fi
    if [ "$MC_OPTS_AUDIO_BITRATE_MODE" = "cbr" ] ; then
        MC_OPTS_AUDIO_BITRATE_MODE=$(echo "$OPTS_PARAMS" | awk '{print $2}')
    fi
    if [ -n "$MC_OPTS_AUDIO_VBR_MODE" ] ; then
        eval MC_OPTS_AUDIO_VBR_MODE=$(echo "$OPTS_PARAMS" | awk '{print $3}')"=$MC_OPTS_AUDIO_VBR_MODE"
    fi
    if [ -n "$MC_OPTS_AUDIO_BITRATE" ] ; then
        eval MC_OPTS_AUDIO_BITRATE=$(echo "$OPTS_PARAMS" | awk '{print $4}')"=$MC_OPTS_AUDIO_BITRATE"
    fi
    if [ -n "$MC_OPTS_AUDIO_MODE" ] ; then
        eval MC_OPTS_AUDIO_MODE=$(echo "$OPTS_PARAMS" | awk '{print $5}')"=$MC_OPTS_AUDIO_MODE"
    fi
    # -------------------------------------------------------------------------
    if [ "$MC_OAC_OPTION" = "mp3lame" ] ; then
        Separate_By_Sign ":" $MC_OPTS_AUDIO_BITRATE_MODE $MC_OPTS_AUDIO_VBR_MODE $MC_OPTS_AUDIO_MODE $MC_OPTS_AUDIO_BITRATE $MC_OPTS_AUDIO_ADDITIONAL
        MC_OPTS_AUDIO="-lameopts $RETURN"
    fi
    # -------------------------------------------------------------------------
    if [ "$MC_OAC_OPTION" = "faac" ] ; then
        Separate_By_Sign ":" $MC_OPTS_AUDIO_BITRATE $MC_OPTS_AUDIO_ADDITIONAL
        MC_OPTS_AUDIO="-faacopts $RETURN"
    fi
    # -------------------------------------------------------------------------


    # -------------------------------------------------------------------------
    if [ -n "$MC_AID_ID" ] && [ $IN_AUDIO_COUNT -gt 1 ] ; then
        MC_AID="-aid $MC_AID_ID"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_SRATE" ] ; then
        MC_SRATE="-srate $MC_SRATE"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_OF_OPTION" ] ; then
        MC_OF="-of $MC_OF_OPTION"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_SSF" ] ; then
        MC_SSF="-ssf $MC_SSF"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_AF_RESAMPLE" ] ; then
        MC_AF_RESAMPLE="resample=$MC_AF_RESAMPLE,volnorm"
        MC_AF="-af $MC_AF_RESAMPLE"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_FPS" ] ; then
        MC_FPS="-fps $MC_FPS"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_CHANNEL_NUMBERS" ] ; then
        MC_CHANNEL="-channels $MC_CHANNEL_NUMBERS"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$MC_ADDITIONA" ] ; then
        MC_ADDITIONAL="$MC_ADDITIONAL"
    fi


    # -------------------------------------------------------------------------
    # Logfile Output
    if [ "$LOGFILE" = "yes" ] ; then
        timestamp=`date`
        (
        echo ; echo "-------------------------------------------------------------------------------"
        echo "MENCODER - COMMANDLINE                              $timestamp"  
        echo "-------------------------------------------------------------------------------"
        ) >> "$LOG_FILE"
    fi


    # -------------------------------------------------------------------------
    # execute mencoder for x-pass encoding
    # -------------------------------------------------------------------------
    # Check for 2-Pass encoding
    local xPASSc=1
    local xPASSlogfile="2pass.`date "+%s"`.log"

    while [ $xPASS_ENCODING -ge $xPASSc ] ; do

        local Turbo=''
        local OAC_xPASS="$MC_OAC $MC_AUDIO_DELAY"
        local TargetFile="$3/$2"
        local SourceFile="$3/$1"
        local xPASS_OPTIONS=''

        if [ $RIPDVD = TRUE ] ; then
            local MSG_SourceFile="$Lang_DVD_Title: $DVD_TITLE_TO_CONVERT"
        else
            local MSG_SourceFile="$3/$1"
        fi

        # check for more than one pass
        if [ $xPASS_ENCODING -gt 1 ] && [ $xPASSc -le $xPASS_ENCODING ] ; then
            local xPASS_LogFile="-passlogfile ${CONFIG_TMP}/${xPASSlogfile}"

            if [ "$VIDEO_OUT_TYPE" = "PSP" ] ; then
                if [ $xPASSc -gt 1 ] ; then
                    xPASS_OPTIONS=":vpass=3"
                else
                    xPASS_OPTIONS=":vpass=$xPASSc"
                fi
            elif [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
                xPASS_OPTIONS=":pass=$xPASSc"
            else
                xPASS_OPTIONS=":vpass=$xPASSc"
            fi

            if [ $xPASSc -lt $xPASS_ENCODING ] ; then
                #TargetFile="P${xPASSc}_${2}" # for testing
                TargetFile="/dev/null"
            fi

            if [ $xPASSc = 1 ] ; then
                if [ "$VIDEO_OUT_TYPE" = "PSP" ] ; then
                    xPASS_OPTIONS="$xPASS_OPTIONS:turbo=2"
                elif [ "$VIDEO_OUT_TYPE" = "XVID" ] ; then
                    xPASS_OPTIONS="$xPASS_OPTIONS:turbo"
                else
                    xPASS_OPTIONS="$xPASS_OPTIONS:turbo"
                    #OAC_xPASS="-oac copy"
                fi
            fi
        fi


        # Logfile Output
        if [ "$LOGFILE" = "yes" ] ; then
            (
            echo "Start encoding process: $xPASSc / $xPASS_ENCODING:"
            echo "    mencoder \"$SourceFile\" $OAC_xPASS $MC_OVC $MC_VF $MC_SWS $MC_OFPS ${MC_OPTS_LAVC}${MC_OPTS_X264}${MC_OPTS_XVID}${xPASS_OPTIONS} $MC_OPTS_MPEG $MC_OPTS_LAVF $MC_AID $MC_SRATE $MC_OF $MC_SSF $MC_AF $MC_FPS $MC_CHANNEL $MC_ADDITIONAL $MC_OPTS_AUDIO $xPASS_LogFile -o \"$TargetFile\""
            ) >> "$LOG_FILE"
        fi


        echo "mencoder \"$SourceFile\" $OAC_xPASS $MC_OVC $MC_VF $MC_SWS $MC_OFPS ${MC_OPTS_LAVC}${MC_OPTS_X264}${MC_OPTS_XVID}${xPASS_OPTIONS} $MC_OPTS_MPEG $MC_OPTS_LAVF $MC_AID $MC_SRATE $MC_OF $MC_SSF $MC_AF $MC_FPS $MC_CHANNEL $MC_ADDITIONAL $MC_OPTS_AUDIO $xPASS_LogFile $MC_INFO_AVI_COMMENT -o \"$TargetFile\""
        mencoder "$SourceFile" $OAC_xPASS $MC_OVC $MC_VF $MC_SWS $MC_OFPS ${MC_OPTS_LAVC}${MC_OPTS_X264}${MC_OPTS_XVID}${xPASS_OPTIONS} $MC_OPTS_MPEG $MC_OPTS_LAVF $MC_AID $MC_SRATE $MC_OF $MC_SSF $MC_AF $MC_FPS $MC_CHANNEL $MC_ADDITIONAL $MC_OPTS_AUDIO $xPASS_LogFile $MC_INFO_AVI_COMMENT -o "$TargetFile" 2>&1  \
        | awk -vRS='\r' '$1 ~ /Pos/ {gsub(/\:/," ");gsub(/s/,"s ");gsub(/f/,"f ");gsub(/%)/,"%) ");gsub(/\(/,"");gsub(/%\)/,""); if ($4>0 && $4<100) print $4-1; fflush();}' \
        | Message_File_Prossing "$1" "$2" $4 $xPASSc $xPASS_ENCODING

        xPASSc=`expr $xPASSc + 1`
    done
    # -------------------------------------------------------------------------

	if [ -f "${CONFIG_TMP}/${xPASSlogfile}" ] ; then
	    rm "${CONFIG_TMP}/${xPASSlogfile}"
	fi

    # -------------------------------------------------------------------------
    # Logfile Output
    if [ "$LOGFILE" = "yes" ] ; then
        timestamp=`date`
        (
        echo "-------------------------------------------------------------------------------"
        echo "MENCODER - END                                      $timestamp"  
        echo "-------------------------------------------------------------------------------"
        echo
        ) >> "$LOG_FILE"
    fi
}


# -----------------------------------------------------------------------------
# Convert to Transport Stream
# -----------------------------------------------------------------------------
FFMPEG_TO_ALL ()
{
    echo -e "${CONFIG_TXT_COLOR}FFMPEG_TO_MPEGTS ()${CONFIG_TXT_NORMAL}"

    Check_FFMPEG_Audio_Stream_IDs "$3/$1"
    Resize_Piture
	Check_CPU_THREADS

    FF_VIDEO_CODEC="$VIDEO_OUT_CODEC"
    FF_AUDIO_CODEC="$AUDIO_OUT_CODEC"
    FF_FPS="$VIDEO_OUT_FPS"
    FF_ASPECT_RATIO="${VIDEO_OUT_ASPECT/\//:}"
    FF_BITRATE="$VIDEO_OUT_BITRATE_VBR"
    FF_AUDIO_CHANNELS="2"
    FF_AUDIO_BITRATE="$AUDIO_OUT_BITRATE"
    FF_AUDIO_SAMPLERATE="$AUDIO_OUT_RESAMPLE_RATE"

    if [ "$VIDEO_OUT_TYPE" = "TS" ] ; then
	    FF_QUALITY_SETTINGS=" -mbd 2 -trellis 2 -cmp 2 -subcmp 2"


    elif [ "$VIDEO_OUT_TYPE" = "PS3" ] || [ "$VIDEO_OUT_TYPE" = "XBOX360" ] || [ "$VIDEO_OUT_TYPE" = "IPOD" ] || [ "$VIDEO_OUT_TYPE" = "IPHONE" ] ; then
		FF_BITRATE_MAX="$VIDEO_OUT_BITRATE_MAX"
#	    FF_BUFFER_SIZE="$VIDEO_OUT_BUFFER_SIZE"
	    FF_QUALITY_SETTINGS=" -mbd 2 -trellis 2 -cmp 2 -subcmp 2 -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +mixed_refs -subq 5"
#		FF_OPTS_ADDITIONAL=" -bt 500k -f mp4"
		FF_OPTS_ADDITIONAL=" -f mp4"

	fi

    # check for 6-channel Input and output for AC3
    Check_Audio_Input_For_Surround_Sound
    local ret=$?
    if [ $ret = 1 ] ; then
        FF_AUDIO_CHANNELS="${IN_AUDIO_CHANNELS[$AUDIO_OUT_STREAM_NO]}"
    fi
    if [ $ret = 2 ] ; then
        FF_AUDIO_CHANNELS="$IN_AUDIO_CHANNELS"
    fi

    FFMPEG_CONVERTION "$1" "$2" "$3" $4
}


# -----------------------------------------------------------------------------
# Mencoder command line
# -----------------------------------------------------------------------------
FFMPEG_CONVERTION ()
{
    echo -e "${CONFIG_TXT_COLOR}FFMPEG_CONVERTION ()${CONFIG_TXT_NORMAL}"

    # we need the following to work
    # $1 the input movie
    # $2 the output movie
    # $3 the counter for the precessing box

    # Options
    # $FF_FPS               -r Framerate
    # $FF_SCALE             -s size             Set frame size. The format is `wxh' (ffserver default = 160x128, ffmpeg default = same as source). The following abbreviations are recognized:
    # $FF_ASPECT_RATIO      -aspect aspect      Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777). 
    # $FF_BITRATE           -b bitrate          Set the video bitrate in bit/s (default = 200 kb/s). 
    # $FF_BLACK_BARS        -padtop size        Set top pad band size (in pixels). 
    #                       -padbottom size     Set bottom pad band size (in pixels). 
    # -maxrate bitrate      Set max video bitrate (in bit/s). Requires -bufsize to be set. 
    # -minrate bitrate      Set min video bitrate (in bit/s). Most useful in setting up a CBR encode:
    #                       ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
    #                       It is of little use elsewise. 
    # -bufsize size         Set video buffer verifier buffer size (in bits). 
    # $FF_VIDEO_CODEC       -vcodec codec       Force video codec to codec. Use the copy special value to tell that the raw codec data must be copied as is. 
    # $FF_SAMPLERATE        -ar freq            Set the audio sampling frequency (default = 44100 Hz). 
    # $FF_AUDIO_BITRATE     -ab bitrate         Set the audio bitrate in bit/s (default = 64k). 
    # $FF_AUDIO_CHAMMELS    -ac channels        Set the number of audio channels (default = 1). 
    # $FF_AUDIO_CODEC       -acodec codec       Force audio codec to codec. Use the copy special value to specify that the raw codec data must be copied as is. 
    # $FF_AUDIO_STREAM_ID   -the audio stream number
    # $FF_QUALITY_SETTINGS  -quali settings? "-trellis 2 -cmp 2 -subcmp 2 -g 100"


    # -------------------------------------------------------------------------
    # preset variables
    if [ -n "$VIDEO_OUT_PASSES" ] ; then
        if [ $VIDEO_OUT_PASSES -gt 2 ] ; then        # Only two pass is allowed for ffmpeg
            VIDEO_OUT_PASSES=2
        fi
        xPASS_ENCODING=$VIDEO_OUT_PASSES
    else
        xPASS_ENCODING=1
    fi
    # -------------------------------------------------------------------------
    # Check if destination and source audio (AC3/MP2/mp3/...) the same
    # If so, we copy the audio stream instat of encoding
    Check_Audio_Source_and_Destination
    local ret=$?
    if [ $ret = 1 ] ; then
        FF_AUDIO_CODEC="copy"
        AUDIO_OUT_COPY="TRUE"
        FF_AUDIO_BITRATE=''
        FF_AUDIO_SAMPLERATE=''
        FF_AUDIO_CHANNELS=''
    else
        # -------------------------------------------------------------------------
        if [ -n "$FF_AUDIO_BITRATE" ] ; then
            FF_AUDIO_BITRATE=" -ab ${FF_AUDIO_BITRATE}k"
        fi
        # -------------------------------------------------------------------------
        if [ -n "$FF_AUDIO_SAMPLERATE" ] ; then
            FF_AUDIO_SAMPLERATE=" -ar $FF_AUDIO_SAMPLERATE"
        fi
        # -------------------------------------------------------------------------
        if [ -n "$FF_AUDIO_CHANNELS" ] ; then
            FF_AUDIO_CHANNELS=" -ac $FF_AUDIO_CHANNELS"
        fi
    fi


    FF_BITRATE=" -b ${FF_BITRATE}k"
    FF_SCALE=" -s $FF_SCALE"
    FF_VIDEO_CODEC=`echo $FF_VIDEO_CODEC  | tr "[:upper:]" "[:lower:]"`
    FF_AUDIO_CODEC=`echo $FF_AUDIO_CODEC  | tr "[:upper:]" "[:lower:]"`

    #FF_QUALITY_SETTINGS="-mbd 2 -trellis 2 -cmp 2 -subcmp 2 -g 100 -bf 2 -qprd -mv0"
    #FF_QUALITY_SETTINGS=" -mbd 2 -trellis 2 -cmp 2 -subcmp 2"


    # -------------------------------------------------------------------------
    if [ -n "$FF_BITRATE_MAX" ] ; then
		FF_BITRATE_MAX=" -maxrate ${FF_BITRATE_MAX}k"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_BUFFER_SIZE" ] ; then
		FF_BUFFER_SIZE=" -bufsize ${FF_BUFFER_SIZE}k"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_ASPECT_RATIO" ] ; then
        FF_ASPECT_RATIO=" -aspect $FF_ASPECT_RATIO"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_FPS" ] ; then
        FF_FPS=" -r $FF_FPS"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_BLACK_BARS" ] ; then
        FF_BLACK_BARS=" -padtop $FF_BLACK_BARS -padbottom $FF_BLACK_BARS"
    fi
    # -------------------------------------------------------------------------
    if [  -n "$AUDIO_OUT_STREAM_NO"  ] ; then 
        FF_MAPPING=" -map 0:0 -map 0:$FF_AUDIO_STREAM_ID"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_VIDEO_CODEC" ] ; then
        FF_VIDEO_CODEC=" -vcodec $FF_VIDEO_CODEC"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_AUDIO_CODEC" ] ; then
        FF_AUDIO_CODEC=" -acodec $FF_AUDIO_CODEC"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_OPTS_CPU_THREADS" ] ; then
        FF_CPU_THREADS=" -threads $FF_OPTS_CPU_THREADS"
    fi
    # -------------------------------------------------------------------------
    if [ -n "$FF_OPTS_ADDITIONAL" ] ; then
        FF_ADDITIONAL=" $FF_OPTS_ADDITIONAL"
    fi
    # -------------------------------------------------------------------------


    # -------------------------------------------------------------------------
    # Logfile Output
    if [ "$LOGFILE" = "yes" ] ; then
        timestamp=`date`
        (
        echo ; echo "-------------------------------------------------------------------------------"
        echo "FFMPEG - COMMANDLINE                                $timestamp"  
        echo "-------------------------------------------------------------------------------"
        ) >> "$LOG_FILE"
    fi


    # -------------------------------------------------------------------------
    # execute mencoder for x-pass encoding
    # -------------------------------------------------------------------------
    # Check for 2-Pass encoding
    local xPASSc=1
    local xPASSlogfile="ffmpeg2pass.`date "+%s"`"

    while [ $xPASS_ENCODING -ge $xPASSc ] ; do
        local xPASS_OPTIONS=''
        local TargetFile="$3/$2"
        local SourceFile="$3/$1"
        local MSG_SourceFile="$3/$1"

        # if DVD rip, we have to change Source
        if [ $RIPDVD = TRUE ] ; then
            local MSG_SourceFile="$Lang_DVD_Title: $DVD_TITLE_TO_CONVERT"
            #local SourceFile="$3/.tmp_vob_file.vob"
        fi

        # check for more than one pass
        if [ $xPASS_ENCODING -gt 1 ] && [ $xPASSc -le $xPASS_ENCODING ] ; then
            xPASS_OPTIONS=" -pass $xPASSc"
			xPASSlogfilePrefix=" -passlogfile $xPASSlogfile"
        fi

        # -------------------------------------------------------------------------
        # Logfile Output
        if [ "$LOGFILE" = "yes" ] ; then
            (
            echo "Start encoding process: $xPASSc / $xPASS_ENCODING:"
            echo "ffmpeg -i \"${SourceFile}\"${xPASS_OPTIONS}${xPASSlogfilePrefix}${FF_FPS}${FF_BUFFER_SIZE}${FF_BITRATE_MAX}${FF_BITRATE}${FF_SCALE}${FF_BLACK_BARS}${FF_QUALITY_SETTINGS}${FF_ASPECT_RATIO}${FF_MAPPING}${FF_VIDEO_CODEC}${FF_AUDIO_CODEC}${FF_AUDIO_BITRATE}${FF_AUDIO_SAMPLERATE}${FF_AUDIO_CHANNELS}${FF_CPU_THREADS}${FF_ADDITIONAL} -y \"$TargetFile\""
            echo
            ) >> "$LOG_FILE"
        fi


       echo "ffmpeg -i \"$SourceFile\"${xPASS_OPTIONS}${xPASSlogfilePrefix}${FF_FPS}${FF_BUFFER_SIZE}${FF_BITRATE_MAX}${FF_BITRATE}${FF_SCALE}${FF_BLACK_BARS}${FF_QUALITY_SETTINGS}${FF_ASPECT_RATIO}${FF_MAPPING}${FF_VIDEO_CODEC}${FF_AUDIO_CODEC}${FF_AUDIO_BITRATE}${FF_AUDIO_SAMPLERATE}${FF_AUDIO_CHANNELS}${FF_CPU_THREADS}${FF_ADDITIONAL} -y \"$TargetFile\""
       ffmpeg -i "$SourceFile"${xPASS_OPTIONS}${xPASSlogfilePrefix}${FF_FPS}${FF_BUFFER_SIZE}${FF_BITRATE_MAX}${FF_BITRATE}${FF_SCALE}${FF_BLACK_BARS}${FF_QUALITY_SETTINGS}${FF_ASPECT_RATIO}${FF_MAPPING}${FF_VIDEO_CODEC}${FF_AUDIO_CODEC}${FF_AUDIO_BITRATE}${FF_AUDIO_SAMPLERATE}${FF_AUDIO_CHANNELS}${FF_CPU_THREADS}${FF_ADDITIONAL} -y "$TargetFile" 2>&1 \
       | awk -vRS='\r' '$1 ~ /frame/ {gsub(/frame=/,"");gsub(/q=/," q=");if ($1*100/'"${IN_TOTAL_FRAMES}"'>1 && $1*100/'"${IN_TOTAL_FRAMES}"'<99) print $1*100/'"${IN_TOTAL_FRAMES}"';if ($1*100/'"${IN_TOTAL_FRAMES}"'==100) print 100;fflush();}' \
       | Message_File_Prossing "$1" "$2" $4  $xPASSc $xPASS_ENCODING

        xPASSc=`expr $xPASSc + 1`
    done
    # -------------------------------------------------------------------------

	if [ -f ./${xPASSlogfile}*.log ] ; then
	    rm ./${xPASSlogfile}*.log
	fi
	if [ -f ./x264*pass.log ] ; then
	    rm ./x264*pass.log
	fi


    # -------------------------------------------------------------------------
    # Logfile Output
    if [ "$LOGFILE" = "yes" ] ; then
        timestamp=`date`
        (
        echo "-------------------------------------------------------------------------------"
        echo "FFMPEG - END                                        $timestamp"  
        echo "-------------------------------------------------------------------------------"
        echo
        ) >> "$LOG_FILE"
    fi
}



