Ticket #26454: patch-ffmpeg-flag-fix.diff

File patch-ffmpeg-flag-fix.diff, 5.8 KB (added by danielb@…, 14 years ago)
  • src/makempg

    old new  
    202202ID_VIDEO_HEIGHT="0"
    203203ID_VIDEO_FPS="0.000"
    204204V_DURATION="0"
     205ID_AUDIO_BITRATE="0"
    205206# mplayer executable to use
    206207MPLAYER="mplayer"
    207208# No custom mplayer opts
     
    287288# ******************************************************************************
    288289# Execute the given command-line string, with appropriate stream redirection
    289290# Args: $@ == text string containing complete command-line
    290 # To filter/prettify the subprocess output before writing it to the log file,
    291 # set the LOG_FILTER variable before calling this function, to e.g.
    292 #    LOG_FILTER="gsed {s/\r/\n/g}"    # Replace LF with CR/LF
    293291# ******************************************************************************
    294 CRLF="gsed {s/\r/\n/g}"  # Turn carriage-returns into newlines
    295 FOLD="fold -bs"
    296292function cmd_exec()
    297293{
    298294    if $FAKE; then
     
    301297        yecho
    302298        return
    303299    else
    304         LOG_FILTER="$CRLF"
    305         eval "$@" 2>&1 | $LOG_FILTER >> "$LOG_FILE" &
     300        eval "$@" 2>&1 | strings >> "$LOG_FILE" &
    306301        PIDS="$PIDS $!"
    307302    fi
    308303}
     
    652647            yecho
    653648            yecho "Do you want to keep the temporary files that were created ?"
    654649            yecho "Please type \"yes\", or else they will be deleted"
    655             yecho "(add '-noask' to your ~/.tovid/makempg.config to avoid"
     650            yecho "(add '-noask' to the [mpg] section of ~/.tovid/tovid.ini to avoid"
    656651            yecho "being asked this question in the future)"
    657652            read input
    658653            echo
     
    12301225    LENGTH=$V_DURATION
    12311226    MPEG_OVERHEAD=$(bc_math "$FIT_SIZE / 100")
    12321227    AUD_VID_SIZE=$(bc_math "$FIT_SIZE - $MPEG_OVERHEAD")
     1228    # When the audio is already compliant and the bitrate is known we
     1229    # can calculate a more accurate size.
     1230    if $AUDIO_OK && test "$ID_AUDIO_BITRATE" != "0"; then
     1231        AUD_BITRATE=$(echo "scale = 0; $ID_AUDIO_BITRATE / 1000" | bc)
     1232    fi
    12331233    AUDIO_SIZE=$(bc_math "$AUD_BITRATE * $LENGTH / (8 *1024)")
    12341234    VIDEO_SIZE=$(bc_math "$AUD_VID_SIZE - $AUDIO_SIZE")
    12351235    VID_BITRATE=$(bc_math "$VIDEO_SIZE*8*1024 / $LENGTH")
     
    18491849    [[ $TARGET = "DVD-VCD" ]] && FF_ADD_ARGS="$FF_ADD_ARGS -g 12" # experiment FIXME
    18501850
    18511851    # Padding, for any letterboxing to be done
    1852     FF_VPAD=""
    1853     FF_HPAD=""
    1854     FF_VPIX=$(expr \( $TGT_HEIGHT \- $INNER_HEIGHT \) \/ 2)
    1855     FF_HPIX=$(expr \( $TGT_WIDTH \- $INNER_WIDTH \) \/ 2)
    1856     test "$FF_VPIX" -ne 0 && FF_VPAD="-padtop $FF_VPIX -padbottom $FF_VPIX"
    1857     test "$FF_HPIX" -ne 0 && FF_HPAD="-padleft $FF_HPIX -padright $FF_HPIX"
     1852    FF_PAD=''
     1853    FF_VPIX=0
     1854    FF_HPIX=0
     1855    FF_VPIX=$(( (TGT_HEIGHT - INNER_HEIGHT) / 2 ))
     1856    FF_HPIX=$(( (TGT_WIDTH - INNER_WIDTH) / 2 ))
     1857    PAD=0
     1858    (( FF_VPIX )) || (( FF_HPIX )) && PAD=1
     1859    # changed options: -pad{side} to -vfilters pad= , to -vf pad=. Check this.
     1860    ff_opts=$(ffmpeg --help 2>&1)
     1861    if grep -q -w -- -vf <<< "$ff_opts" && ((PAD)); then
     1862        FF_PAD="-vf pad=${TGT_WIDTH}:${TGT_HEIGHT}:${FF_HPIX}:${FF_VPIX}"
     1863    elif grep -q -w -- -vfilters <<< "$ff_opts" && ((PAD)); then
     1864        FF_PAD="-vfilters pad=${TGT_WIDTH}:${TGT_HEIGHT}:${FF_HPIX}:${FF_VPIX}"
     1865    else
     1866        FF_HPAD=''
     1867        FF_VPAD=''
     1868        ((FF_HPIX)) && FF_HPAD="-padleft $FF_HPIX -padright $FF_HPIX"
     1869        ((FF_VPIX)) && FF_VPAD="-padtop $FF_VPIX -padbottom $FF_VPIX"
     1870        ((PAD)) && FF_PAD="$FF_HPAD $FF_VPAD"
     1871    fi
    18581872
    18591873    # Target TV system
    18601874    test "$TVSYS" = "PAL" && FF_TARGET="-target pal"
     
    18821896    FF_BITRATE="-b ${VID_BITRATE}k -ab ${AUD_BITRATE}k ${AUDIO_CHAN[chan1-1]} "
    18831897    FF_ENC_CMD="$PRIORITY ffmpeg -i \"$IN_FILE\" $FF_THREAD $CLIP_SEEK $FF_LENGTH $ASYNC $ASYNC1 \
    18841898        $FF_TARGET $FF_QUANT $FF_BITRATE $FF_ADD_ARGS $FF_FPS $FF_ILACE \
    1885         $FF_SIZE $FF_VPAD $FF_HPAD $FF_ASPECT $FF_CHANNEL_MAP"
     1899        $FF_SIZE $FF_PAD $FF_ASPECT $FF_CHANNEL_MAP"
    18861900    $OVERWRITE && FF_ENC_CMD="$FF_ENC_CMD -y "
    18871901    FF_ENC_CMD="$FF_ENC_CMD \"$OUT_FILENAME\" ${NEW_AUDIO[@]}"
    18881902    yecho "Encoding video and audio with the following command:"
    18891903    yecho "$FF_ENC_CMD"
    18901904
    1891     LOG_FILTER="$CRLF"
    18921905    cmd_exec "$FF_ENC_CMD"
    18931906
    18941907    if $FAKE; then
     
    19301943    #AUDIO_CMD="$PRIORITY mplayer $MPLAYER_OPTS \"$IN_FILE\" -dumpaudio -dumpfile \"$AUDIO_STREAM\""
    19311944    run_audio_cmd()
    19321945    {
    1933         LOG_FILTER="$CRLF"
    19341946        "${AUDIO_CMD[@]}" >> "$LOG_FILE" 2>&1 &
    19351947        #$PRIORITY ffmpeg $CLIP_SEEK $FF_LENGTH -i "$IN_FILE" -vn -acodec copy \
    19361948        #$AUDIO_MAP "${AUDIO_STREAM[@]}" >> "$LOG_FILE" 2>&1
     
    20432055
    20442056
    20452057    # Copy the video stream
    2046     LOG_FILTER="$CRLF"
    20472058    cmd_exec "$VID_COPY_CMD"
    20482059
    20492060
     
    20602071    fi
    20612072    VID_PLAY_CMD="$PRIORITY $MPLAYER $NOCONSOLE_CONTROLS -benchmark -nosound -noframedrop $SUBTITLES -vo yuv4mpeg:file=\"$YUV_STREAM\"${YUV4MPEG_ILACE} $VID_FILTER $MPLAYER_OPTS \"$IN_FILE\" $CLIP_SEEK $MP_FRAMES"
    20622073    if $USE_FFMPEG ; then
    2063         VID_ENC_CMD="ffmpeg -i \"$IN_FILE\" $FF_THREAD $CLIP_SEEK $FF_LENGTH -an $FF_TARGET $FF_CODEC $FF_QUANT $FF_BITRATE $FF_ADD_ARGS $FF_ILACE $FF_SIZE $FF_VPAD $FF_HPAD $FF_ASPECT -y \"$VIDEO_STREAM\""
     2074        VID_ENC_CMD="ffmpeg -i \"$IN_FILE\" $FF_THREAD $CLIP_SEEK $FF_LENGTH -an $FF_TARGET $FF_CODEC $FF_QUANT $FF_BITRATE $FF_ADD_ARGS $FF_ILACE $FF_SIZE $FF_PAD $FF_ASPECT -y \"$VIDEO_STREAM\""
    20642075    else
    20652076        VID_ENC_CMD="cat \"$YUV_STREAM\" | $YUVDENOISE $ADJUST_FPS $PRIORITY mpeg2enc --sequence-length $DISC_SIZE --nonvideo-bitrate $NONVIDEO_BITRATE $MTHREAD $ASPECT_FMT $MPEG2_FMT $VID_FPS $VERBOSE $VID_NORM $MPEG2_QUALITY -o \"$VIDEO_STREAM\""
    20662077    fi
     
    20782089        file_output_progress "$YUV_STREAM" "Ripping raw uncompressed video stream"
    20792090    fi
    20802091
    2081     LOG_FILTER="$CRLF"
    20822092    cmd_exec "$VID_ENC_CMD"
    20832093
    20842094    # For parallel encoding, nothing further yet