Mercurial > mplayer.hg
view TOOLS/qepdvcd.sh @ 26146:20a126aaa756
ve_vfw.c: #include aviheader.h instead of wine avifmt.h
Compilation was broken after libmpdemux/muxer.h started including
libmpdemux/aviheader.h. ve_vfw.c included both muxer.h and
loader/wine/avifmt.h, and the latter has definitions that conflict with
aviheader.h ones. Fix by removing the avifmt.h include.
I did not carefully check that changing the includes doesn't break
any ve_vfw.c code. However it at least fixes compilation, and if the
avifmt.h versions differ in some significant way then the code is
fundamentally broken anyway: ve_vfw cannot use different versions of
the avi struct definitions when it also uses shared muxer.h types
(those must use the standard definitions to keep the type compatible
with what's used in other files).
author | uau |
---|---|
date | Thu, 06 Mar 2008 01:57:26 +0000 |
parents | 631e27c9ca85 |
children | 5eb532ff5793 |
line wrap: on
line source
#!/bin/bash # # QEPDVCD # # Most of this stuff comes straight from MPlayer documentation. # Options are limited only to a small useful subset, if you # want more control, RTFM and DIY. # # Version: 0.1 # # Licence: GPL # # Author: Reynaldo H. Verdejo Pinochet <reynaldo@opendot.cl> # # Script: MPlayer Sources. Anything supported to vcd/svcd pal/ntsc # # requires: mencoder # # sugests: vcdimager / cdrecord # # Thanks to: Carlos Navarro Salas - name author ;) # # # Defaults MYNAME=`basename $0` TARGET="svcd" ENCQ="2" ABPS="224" VBPS="2000" NORM="NTSC" SPLIT="0" TOLERANCE="85" OUTNAME="mencodedvcd" SUBFILENAME=0 EDLFILENAME="pass.edl" HAVESUB=0 WORKDIR="." RATIOX=4 RATIOY=3 OPTIONS="INPUTFILENAME TARGET ENCQ ABPS VBPS NORM SPLIT TOLERANCE OUTNAME" function usage() { echo "" echo "usage $MYNAME inputfile [options]" echo "" echo "Options: [Default value]" echo "" echo "-t Target svcd|vcd [svcd]" echo "-q Encoding quality 0|1|2 [2]" echo "-a Audio bitrate in kbps [224]" echo "-v Video bitrate in kbps [2000 For SVCD, 1150 For VCD]" echo "-n Norm NTSC|PAL [NTSC]" echo "-d Divide/split movie at given times time1:time2:... [no split]" echo "-s Shitty TV screen tolerance %, afects subtitle positioning [85]" echo "-u Subtitle file name [No subtitle]" echo "-o Output basename [mencodedvcd]" echo "" echo "In case you want to use -a/-v please read:" echo "http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html" echo "" } function test_needed() { for i in mencoder; do if [ -z "`which $i`" ]; then echo "[ERROR] mencoder not found in $PATH!" exit 1 fi done } function test_sugested() { for i in vcdimager cdrecord; do if [ -z "`which $i`" ]; then echo "[WARNING] $i not found in $PATH!" echo "You'll likely need it after we finish." exit 1 fi done } test_needed test_sugested if [ $# -lt 1 ]; then echo "" echo "[ERROR] Input filename parameter is mandatory." echo "" usage exit 1 fi case $1 in -*) usage exit 1 ;; *) INPUTFILENAME=$1 shift 1 ;; esac while [ "$1"x != "x" ]; do case $1 in -t) TARGET=$2 shift 1 ;; -q) ENCQ=$2 shift 1 ;; -a) ABPS=$2 shift 1 ;; -v) VBPS=$2 shift 1 ;; -n) NORM=$2 shift 1 ;; -d) SPLIT=$2 shift 1 ;; -s) TOLERANCE=$2 shift 1 ;; -u) SUBFILENAME="$2" HAVESUB=1 shift 1 ;; -o) OUTNAME=$2 shift 1 ;; esac shift 1 done echo "" echo "[STATUS] Will re-encode using the following parameters:" echo "" for i in $OPTIONS ; do echo "$i ${!i}"; done # Parameter Sanity Check ########################################### # We need to check supplied params against known format constraints #################################################################### if [ $TARGET = "svcd" ]; then if [ $ABPS -gt 384 ]; then echo "[ERROR] SVCD maximum abitrate is 384kbps." exit 1 fi if [ $VBPS -gt 2600 ]; then echo "[ERROR] SVCD maximum vbitrate is 2600kbps." exit 1 fi else [ $TARGET = "vcd" ] if [ $ABPS -eq 224 ]; then echo "[ERROR] VCD abitrate must be 224kbps." exit 1 fi if [ $VBPS -gt 1150 ]; then echo "[ERROR] VCD maximum vbitrate is 1150kbps." exit 1 fi fi # Set encoding options ############################################## if [ $TARGET = "svcd" ]; then FORMAT="xsvcd" VCODEC="mpeg2video" VRCMINRATE=4 VRCMAXRATE=2500 VRCBUFSIZE=917 if [ $NORM = "NTSC" ]; then SCALEX=480 SCALEY=480 KEYINT=18 OFPS="24000/1001" TELECINE=":telecine" else [ $NORM = "PAL" ] SCALEX=480 SCALEY=576 KEYINT=15 OFPS=25 fi else [ $TARGET = "vcd" ] FORMAT="xvcd" VCODEC="mpeg1video" VRCMINRATE=$VBPS VRCMAXRATE=$VBPS VRCBUFSIZE=327 if [ $NORM = "NTSC" ]; then SCALEX=352 SCALEY=240 KEYINT=18 OFPS="24000/1001" else [ $NORM = "PAL" ] SCALEX=352 SCALEY=288 KEYINT=15 OFPS=25 fi fi # Start reencoding ################################################### cd $WORKDIR if [ $(($HAVESUB+1)) -eq 1 ]; then SUBTITLESTRING="/dev/null" else SUBTITLESTRING="$SUBFILENAME" fi if [ $SPLIT == "0" ]; then CICLES=0 TIMESTRING="" else if [ -e $EDLFILENAME ]; then echo "[ERROR]" echo "The -d option needs to generate a temporary file called" echo "$EDLFILENAME. You already have one in this directory," echo "please remove/rename it and run $MYNAME again." echo "" exit 1 else EDLSTRING=$(echo $SPLIT | sed -e s/:/' '/g) EDLARRAY=($EDLSTRING) CICLES=$(echo $EDLSTRING | wc -w) TIMESTRING="-edl $EDLFILENAME -hr-edl-seek" fi fi for j in $(seq 0 $CICLES); do NEWNAME=$OUTNAME"_PART"$j".mpg" echo "" echo "Making $NEWNAME, wish me luck ;-)" echo "" # Create EDLFILENAME ################################################# if [ $CICLES -ge 1 ]; then for i in $(seq 0 $CICLES) do if [ $i -eq $j ]; then if [ $j -ne 0 ]; then echo "0 ${EDLARRAY[$(($i-1))]} 0" > $EDLFILENAME fi if [ $i -ne $CICLES ]; then echo "${EDLARRAY[$(($i))]} 999999 0" >> $EDLFILENAME fi fi done fi # Mencoder Time ;-) ################################################### mencoder \ -ovc lavc -oac lavc -vf expand=:::::$RATIOX/$RATIOY:1,scale=$SCALEX:$SCALEY,harddup \ -srate 44100 -af lavcresample=44100 -lavcopts acodec=mp2:abitrate=$ABPS:vcodec=$VCODEC:\ vbitrate=$VBPS:keyint=$KEYINT:mbd=$ENCQ:vrc_buf_size=$VRCBUFSIZE:vrc_maxrate=$VRCMAXRATE:\ vrc_minrate=$VRCMINRATE:vi_qfactor=0.1:vi_qoffset=1.5:aspect=$RATIOX/$RATIOY -of mpeg \ -mpegopts format=$FORMAT$TELECINE -sub $SUBTITLESTRING -subpos $TOLERANCE -subwidth \ $TOLERANCE -ofps $OFPS $TIMESTRING -o $NEWNAME $INPUTFILENAME echo "Encoding of $NEWNAME finished." echo "Run vcdimager -t svcd/vcd $NEWNAME and burn with cdrecord." done echo "$(($CICLES+1)) VCD/SVCD file(s) created!!!" echo "Happy to be of some help ;-) have fun." exit 0