#!/bin/sh # consider this script as GNU/GPLv2 IN="${1?'fial'}" X=368 Y=208 EXT="$(echo $IN | grep -oE '\.[^.]*$')" if [ ! -d "$2" ] then OUT="${2-${IN%$EXT}.mp4}" else OUT="${IN%$EXT}.mp4" fi function identify() { SOURCE="$1" DIMS=$(mplayer "$SOURCE" -identify -vo null -ao null -frames 0 2> /dev/null | grep -E "(ID_VIDEO_WIDTH|ID_VIDEO_HEIGHT)") export oX=$(echo "$DIMS" | grep ID_VIDEO_WIDTH | cut -d= -f2) export oY=$(echo "$DIMS" | grep ID_VIDEO_HEIGHT | cut -d= -f2) } function scale_factor() { #desired d=$1 #original o=$2 #factor f=$(echo -e "scale=10\n$d/$o" | bc) if ! echo $xf | grep -E "^[0-9]" &> /dev/null then f=0$f fi echo $f } identify "$IN" Xf=$(scale_factor $X ${oX:?"no width"}) Yf=$(scale_factor $Y ${oY:?"no height"}) declare vars vars=($(echo " if ($Yf < $Xf) { i = $Yf * $oX if (i >= $X -1 && i <= $X +1) { $X } else { i / 1 } $Y ($X - i) / 2 0 } else { $X i = $Xf * $oY if (i >= $Y -1 && i <= $Y +1) { $Y } else { i / 1 } 0 ($Y - i) / 2 } " | bc | xargs echo)) Xs=${vars[0]} Ys=${vars[1]} Xo=${vars[2]} Yo=${vars[3]} #-vf "pullup,softskip,harddup,scale=$Xs:$Ys,expand=$X:$Y:$Xo:$Yo::16/9:" \ if [ ! "x$PSP_ECHO_COMMAND" = "x" ] then ECHO=echo fi sh </dev/null