X-Git-Url: https://git.hcoop.net/clinton/abcde.git/blobdiff_plain/c4df517cf6863efa5b76b2dcce23547bddfa32cb..04ad1a5dbec94e8ab1b7449e512f802acd56c3df:/abcde diff --git a/abcde b/abcde index 03dcfb0..1705fab 100755 --- a/abcde +++ b/abcde @@ -51,7 +51,7 @@ echo "-m Modify playlist to include CRLF endings, to comply with some player echo "-n No lookup. Don't query CDDB, just create and use template" echo "-N Noninteractive. Never prompt for anything" echo "-o " -echo " Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a). Defaults to vorbis" +echo " Output file type(s) (vorbis,mp3,flac,spx,mpc,wav,m4a,opus). Defaults to vorbis" echo "-p Pad track numbers with 0's (if less than 10 tracks)" echo "-P Use UNIX pipes to read+encode without wav files" echo "-q " @@ -515,6 +515,9 @@ do_replaygain() vorbis|ogg) OUTPUT=$OGGOUTPUTCONTAINER ;; + opus) + OUTPUT=$OPUSOUTPUTCONTAINER + ;; flac) OUTPUT=$FLACOUTPUTCONTAINER ;; @@ -898,6 +901,10 @@ do_tag () ;; esac ;; + opus) + run_command tagtrack-$OUTPUT-$1 true + ;; + flac) ( echo ARTIST="$TRACKARTIST" @@ -1018,6 +1025,9 @@ do_encode () vorbis|ogg) TEMPARG="PIPE_$OGGENCODERSYNTAX" ;; + opus) + TEMPARG="PIPE_$OPUSENCODERSYNTAX" + ;; flac) TEMPARG="PIPE_$FLACENCODERSYNTAX" ;; @@ -1060,6 +1070,9 @@ do_encode () vorbis|ogg) OUTPUT=$OGGOUTPUTCONTAINER ;; + opus) + OUTPUT=$OPUSOUTPUTCONTAINER + ;; flac) OUTPUT=$FLACOUTPUTCONTAINER ;; @@ -1115,6 +1128,32 @@ do_encode () ;; esac ;; + opus) + case "$2" in + %local*%) + case "$OPUSENCODERSYNTAX" in + opusenc) + + if [ "$(eval echo ${COMMENT})" != "" ]; then + case "$COMMENT" in + *=*) ;; + *) COMMENT="COMMENT=$COMMENT" ;; + esac + fi + # Tag the file at encode time, as it can't be done after encoding. + if [ "$DOTAG" = "y" ]; then + $RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS --artist "$TRACKARTIST" --comment album="$DALBUM" --title "$TRACKNAME" --comment track="$1" --comment genre="$CDGENRE" --comment year="$CDYEAR" ${COMMENT:+--comment "$COMMENT"} "$IN" "$OUT" + else + $RUN_COMMAND nice $EFFECTIVE_NICE $OPUSENCODER $OPUSENCODEROPTS "$IN" "$OUT" + fi + ;; + esac + ;; + *) + $RUN_COMMAND nice $DISTMP3NICE $DISTMP3 $DISTMP3OPTS "$2" "$IN" "$OUT" >/dev/null 2>&1 + ;; + esac + ;; flac) case "$2" in %local*%) @@ -1151,7 +1190,10 @@ do_encode () ;; m4a) # Tag the file at encode time, as it can't be done after encoding. - if [ "$DOTAG" = "y" ]; then + if [ "$AACENC" = "neroAacEnc" ] ; then + DOTAG=y + $RUN_COMMAND nice $ENCNICE $AACENC $AACENCOPTS -if "$IN" -of "$OUT" + elif [ ! "$DOTAG" = "y" ]; then $RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" -o "$OUT" "$IN" else @@ -1394,6 +1436,9 @@ do_move () vorbis|ogg) OUTPUT=$OGGOUTPUTCONTAINER ;; + opus) + OUTPUT=$OPUSOUTPUTCONTAINER + ;; flac) OUTPUT=$FLACOUTPUTCONTAINER ;; @@ -1475,6 +1520,9 @@ do_playlist () vorbis|ogg) OUTPUT=$OGGOUTPUTCONTAINER ;; + opus) + OUTPUT=$OPUSOUTPUTCONTAINER + ;; flac) OUTPUT=$FLACOUTPUTCONTAINER ;; @@ -1702,7 +1750,7 @@ abcde.mkcue () { shift 2 echo REM DISCID $DISCID - echo FILE \""$CUEWAVEFILE"\" WAVE + echo FILE \""$CUEWAVFILE"\" WAVE if [ $1 -ne 150 ] && [ $MODE = "PREGAP" ] ; then OFFSET=$1 @@ -3146,6 +3194,7 @@ ENCODERSYNTAX=default MP3ENCODERSYNTAX=default OGGENCODERSYNTAX=default +OPUSENCODERSYNTAX=default FLACENCODERSYNTAX=default SPEEXENCODERSYNTAX=default MPCENCODERSYNTAX=default @@ -3196,6 +3245,8 @@ MP3ENC=mp3enc # ogg VORBIZE=vorbize OGGENC=oggenc +#opus +OPUSENC=opusenc # flac FLAC=flac # speex @@ -3246,6 +3297,8 @@ MP3GAINOPTS="-a -k" VORBIZEOPTS= OGGENCOPTS= VORBISGAINOPTS="--album" +#opus +OPUSENCOPTS= # flac FLACOPTS= FLACGAINOPTS="--add-replay-gain" @@ -3282,7 +3335,7 @@ ACTIONS=cddb,read,encode,tag,move,clean # This option is basically for Debian package dependencies: # List of preferred outputs - by default, run with whatever we have in the path -DEFAULT_OUTPUT_BINARIES=vorbis:oggenc,flac:flac,mp3:toolame,mp3:lame,mp3:bladeenc,spx:speex,m4a:faac +DEFAULT_OUTPUT_BINARIES=vorbis:oggenc,flac:flac,mp3:toolame,mp3:lame,mp3:bladeenc,spx:speex,m4a:faac:opus # List of preferred cdromreaders - by default, run whichever we have in the path DEFAULT_CDROMREADERS="cdparanoia icedax cdda2wav" @@ -3727,6 +3780,7 @@ if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then for OUTPUT in "$(echo "$OUTPUTTYPE" | tr \ \|| tr , \ | tr \| \ )"; do case "$OUTPUT" in vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; + opus:*) OPUSENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; mp3:*) MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; flac:*) FLACENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; spx:*) SPEEXENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;; @@ -3754,6 +3808,10 @@ do [ "$DOREPLAYGAIN" = "y" ] && NEEDVORBISGAIN=y OGGOUTPUTCONTAINER=ogg ;; + opus) + [ "$OPUSENCODERSYNTAX" = "default" ] && OPUSENCODERSYNTAX=opusenc + OPUSOUTPUTCONTAINER=opus + ;; mp3) [ "$MP3ENCODERSYNTAX" = "default" ] && MP3ENCODERSYNTAX=lame [ "$DOTAG" = "y" ] && NEEDTAGGER=y @@ -3830,6 +3888,12 @@ case "$OGGENCODERSYNTAX" in OGGENCODER="$OGGENC" ;; esac +case "$OPUSENCODERSYNTAX" in + opusenc) + OPUSENCODEROPTS="${OPUSENCODEROPTSCLI:-$OPUSENCOPTS}" + OPUSENCODER="$OPUSENC" + ;; +esac case "$FLACENCODERSYNTAX" in flac) FLACENCODEROPTS="${FLACENCODEROPTSCLI:-$FLACOPTS}" @@ -3962,6 +4026,7 @@ PIPERIPPER_flac="-c " PIPE_lame="-" PIPE_bladeenc="-" PIPE_oggenc="-" +PIPE_opusenc="-" PIPE_flac="-" # Figure out if we can use pipes with the ripper/encoder combination @@ -3973,6 +4038,8 @@ if [ "$USEPIPES" = "y" ]; then PIPEENCODERSVARCHECK="PIPE_$MP3ENCODERSYNTAX" ;; vorbis|ogg) PIPEENCODERSVARCHECK="PIPE_$OGGENCODERSYNTAX" ;; + opus) + PIPEENCODERSVARCHECK="PIPE_$OPUSENCODERSYNTAX" ;; flac) PIPEENCODERSVARCHECK="PIPE_$FLACENCODERSYNTAX" ;; spx) @@ -4000,7 +4067,7 @@ fi # Make sure a buncha things exist for X in $CDROMREADER $CDDISCID ${NEEDTAGGER+$TAGGER} $MP3ENCODER \ - $OGGENCODER $FLACENCODER $SPEEXENCODER $MPCENCODER \ + $OGGENCODER $OPUSENCODER $FLACENCODER $SPEEXENCODER $MPCENCODER \ $AACENCODER $CDDBTOOL \ ${NEEDATOMICPARSLEY+$ATOMICPARSLEY} \ ${NEEDHTTPGET+$HTTPGET} ${NEEDDISTMP3+$DISTMP3} \