761 lines
19 KiB
Bash
761 lines
19 KiB
Bash
#!/bin/bash
|
|
|
|
#desc: All config and command line parsing happens here.
|
|
|
|
#MAIN FUNCTIONS
|
|
|
|
parseConf() {
|
|
local file=$1 #The File to Parse
|
|
local argOnly=$2 #If true, will only use file-specific blocks. If false, will ignore file-specific blocks.
|
|
local CONFIG_NAME="None"
|
|
|
|
if [[ -z $file ]]; then return; fi
|
|
if [[ ! -f $file ]]; then return; fi
|
|
|
|
local fBlock=false #Whether or not we are in a file-specific block.
|
|
local fID="" #The name of the file-specific block we're in.
|
|
|
|
while IFS="" read -r line || [[ -n "$line" ]]; do
|
|
line=$(echo "$line" | sed -e 's/^[ \t]*//') #Strip leading tabs/whitespaces.
|
|
|
|
if [[ `echo "${line}" | cut -c1-1` == "#" ]]; then continue; fi #Ignore comments
|
|
|
|
if [[ `echo "${line}" | cut -c1-1` == "/" ]]; then
|
|
if [[ $fBlock == true ]]; then invOption "ERROR: Nested file-specific blocks in config file $CONFIG_NAME!"; fi
|
|
|
|
fBlock=true
|
|
fID=`echo "${line}" | cut -d$' ' -f2`
|
|
|
|
continue
|
|
fi #Enter a file-specific block with /, provided the argument name is correct.
|
|
|
|
if [[ `echo "${line}" | cut -c1-1` == "*" ]]; then fBlock=false; fID=""; fi #Leave a file-specific block.
|
|
|
|
#~ echo $argOnly $fBlock $fID ${TRUNC_ARG%.*} `echo "${line}" | cut -d$' ' -f1`
|
|
if [[ ($argOnly == false && $fBlock == false) || ( ($argOnly == true && $fBlock == true) && $fID == ${TRUNC_ARG%.*} ) ]]; then #Conditions under which to write values.
|
|
case `echo "${line}" | cut -d$' ' -f1` in
|
|
"CONFIG_NAME") CONFIG_NAME=`echo "${line}" | cut -d$' ' -f2` #Not doing anything with this right now.
|
|
;;
|
|
"OUTDIR") OUTDIR=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"BIN_PATH") BIN_PATH=`echo "${line}" | cut -d$' ' -f2`; setPaths
|
|
;;
|
|
"DCRAW") DCRAW=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"MLV_DUMP") MLV_DUMP=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"RAW_DUMP") RAW_DUMP=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"MLV_BP") MLV_BP=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"CR_HDR") CR_HDR=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"PYTHON") PYTHON=`echo "${line}" | cut -d$' ' -f2`; setPaths
|
|
;;
|
|
"THREADS") THREADS=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
|
|
|
|
"IMAGE") IMAGES=true
|
|
;;
|
|
"IMG_FMT")
|
|
mode=`echo "${line}" | cut -d$' ' -f2`
|
|
case ${mode} in
|
|
"0") IMG_FMT="exr"
|
|
;;
|
|
"1") IMG_FMT="tiff"
|
|
;;
|
|
"2") IMG_FMT="png"
|
|
;;
|
|
"3") IMG_FMT="dpx"
|
|
;;
|
|
*) invOption "Invalid Image Format Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
"MOVIE") MOVIE=true
|
|
;;
|
|
"PROXY")
|
|
PROXY=`echo "${line}" | cut -d$' ' -f2`
|
|
case ${PROXY} in
|
|
"0") isJPG=false; isH264=false
|
|
;;
|
|
"1") isJPG=false; isH264=true
|
|
;;
|
|
"2") isJPG=true; isH264=false
|
|
;;
|
|
"3") isJPG=true; isH264=true
|
|
;;
|
|
*) invOption "Invalid Proxy Choice: ${PROXY}"
|
|
;;
|
|
esac
|
|
;;
|
|
"PROXY_SCALE")
|
|
PROXY_SCALE=`echo "${line}" | cut -d$' ' -f2`
|
|
|
|
proxy_num=`echo "$PROXY_SCALE" | cut -d'%' -f 1`
|
|
if [[ ! ( ($proxy_num -le 100 && $proxy_num -ge 5) && $proxy_num =~ ^-?[0-9]+$ ) ]]; then invOption "Invalid Proxy Scale: ${PROXY_SCALE}"; fi
|
|
;;
|
|
"KEEP_RAWS") KEEP_DNGS=true
|
|
;;
|
|
"FRAME_RANGE") RANGE_BASE=`echo "${line}" | cut -d$' ' -f2`; isFR=false
|
|
;;
|
|
"UNCOMP") isCOMPRESS=false
|
|
;;
|
|
|
|
|
|
"DEMO_MODE") DEMO_MODE=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"HIGHLIGHT_MODE") HIGHLIGHT_MODE=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"CHROMA_SMOOTH")
|
|
mode=`echo "${line}" | cut -d$' ' -f2`
|
|
case ${mode} in
|
|
"0") CHROMA_SMOOTH="--no-cs"
|
|
;;
|
|
"1") CHROMA_SMOOTH="--cs2x2"
|
|
;;
|
|
"2") CHROMA_SMOOTH="--cs3x3"
|
|
;;
|
|
"3") CHROMA_SMOOTH="--cs5x5"
|
|
;;
|
|
*) invOption "Invalid Chroma Smoothing Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
"WAVE_NOISE") WAVE_NOISE="-n $(echo "${line}" | cut -d$' ' -f2)"
|
|
;;
|
|
"TEMP_NOISE")
|
|
vals="$(echo "${line}" | cut -d$' ' -f2)"
|
|
|
|
aVal=$(echo "${vals}" | cut -d"-" -f1)
|
|
bVal=$(echo "${vals}" | cut -d"-" -f2)
|
|
|
|
TEMP_NOISE="atadenoise=0a=${aVal}:0b=${bVal}:1a=${aVal}:1b=${bVal}:2a=${aVal}:2b=${bVal}"
|
|
tempDesc="Temporal Denoiser"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
"HQ_NOISE")
|
|
vals="$(echo "${line}" | cut -d$' ' -f2)"
|
|
|
|
S=`echo "${vals}" | cut -d$':' -f1`
|
|
T=`echo "${vals}" | cut -d$':' -f2`
|
|
|
|
LS=`echo "${S}" | cut -d$'-' -f1`
|
|
CS=`echo "${S}" | cut -d$'-' -f2`
|
|
LT=`echo "${T}" | cut -d$'-' -f1`
|
|
CT=`echo "${T}" | cut -d$'-' -f2`
|
|
|
|
HQ_NOISE="hqdn3d=luma_spatial=${LS}:chroma_spatial=${CS}:luma_tmp=${LT}:chroma_tmp=${CT}"
|
|
hqDesc="3D Denoiser"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
"REM_NOISE")
|
|
vals="$(echo "${line}" | cut -d$' ' -f2)"
|
|
|
|
m1=`echo "${vals}" | cut -d$'-' -f1`
|
|
m2=`echo "${vals}" | cut -d$'-' -f2`
|
|
m3=`echo "${vals}" | cut -d$'-' -f3`
|
|
m4=`echo "${vals}" | cut -d$'-' -f4`
|
|
|
|
REM_NOISE="removegrain=m0=${m1}:m1=${m2}:m2=${m3}:m3=${m4}"
|
|
remDesc="RemoveGrain Modal Denoiser"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
"GAMMA") #Value checking done in color management.
|
|
mode=`echo "${line}" | cut -d$' ' -f2`
|
|
|
|
case ${mode} in
|
|
"0")
|
|
COLOR_GAMMA="STANDARD" #Lets CM know that it should correspond to the gamut, or be 2.2.
|
|
;;
|
|
"1")
|
|
COLOR_GAMMA="lin" #Linear
|
|
;;
|
|
"2")
|
|
COLOR_GAMMA="cineon" #Cineon
|
|
;;
|
|
"3")
|
|
COLOR_GAMMA="clog2" #C-Log2. Req: color-ext.
|
|
;;
|
|
"4")
|
|
COLOR_GAMMA="slog3" #S-Log3. Req: color-ext.
|
|
;;
|
|
#~ "5")
|
|
#~ COLOR_GAMMA="logc" #LogC 4.X . Req: color-ext.
|
|
#~ ;;
|
|
#~ "6")
|
|
#~ COLOR_GAMMA="acescc" #ACEScc Log Gamma. Req: color-aces.
|
|
#~ ;;
|
|
*)
|
|
invOption "g: Invalid Gamma Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
"GAMUT") #Value checking done in color management.
|
|
mode=`echo "${line}" | cut -d$' ' -f2`
|
|
|
|
case ${mode} in
|
|
"0")
|
|
COLOR_GAMUT="srgb" #sRGB
|
|
;;
|
|
"1")
|
|
COLOR_GAMUT="argb" #Adobe RGB
|
|
;;
|
|
"2")
|
|
COLOR_GAMUT="rec709" #Rec.709
|
|
;;
|
|
"3")
|
|
COLOR_GAMUT="xyz" #XYZ. Linear Only.
|
|
;;
|
|
#~ "3")
|
|
#~ COLOR_GAMUT="aces" #ACES. Standard is Linear. Req: color-aces (all gammas will work, even without color-ext)/
|
|
#~ ;;
|
|
#~ "4")
|
|
#~ COLOR_GAMUT="xyz" #ACES. Standard is Linear. Req: color-aces (all gammas will work, even without color-ext)/
|
|
#~ ;;
|
|
"4")
|
|
COLOR_GAMUT="rec2020" #Rec.2020. Req: color-ext.
|
|
;;
|
|
"5")
|
|
COLOR_GAMUT="dcip3" #DCI-P3. Req: color-ext.
|
|
;;
|
|
"6")
|
|
COLOR_GAMUT="ssg3c" #Sony S-Gamut3.cine. Req: color-ext.
|
|
;;
|
|
*)
|
|
invOption "G: Invalid Gamut Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
"SHALLOW") DEPTH=""; DEPTH_OUT="-depth 8"
|
|
;;
|
|
"WHITE")
|
|
mode=`echo "${line}" | cut -d$' ' -f2`
|
|
case ${mode} in
|
|
"0") CAMERA_WB=false; GEN_WHITE=true #Will generate white balance.
|
|
;;
|
|
"1") CAMERA_WB=true; GEN_WHITE=false; #Will use camera white balance.
|
|
;;
|
|
"2") WHITE="-r 1 1 1 1"; CAMERA_WB=false; GEN_WHITE=false #Will not apply any white balance.
|
|
;;
|
|
*)
|
|
invOption "Invalid White Balance Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
"SHARP")
|
|
val=`echo "${line}" | cut -d$' ' -f2`
|
|
|
|
lSize=`echo "${val}" | cut -d$':' -f1`
|
|
lStr=`echo "${val}" | cut -d$':' -f2`
|
|
cSize=`echo "${val}" | cut -d$':' -f3`
|
|
cStr=`echo "${val}" | cut -d$':' -f4`
|
|
|
|
SHARP="unsharp=${lSize}:${lSize}:${lStr}:${cSize}:${cSize}:${cStr}"
|
|
sharpDesc="Sharpen/Blur"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
"LUT")
|
|
LUT_PATH=`echo "${line}" | cut -d$' ' -f2`
|
|
|
|
if [ ! -f $LUT_PATH ]; then invOption "Invalid LUT Path: ${LUT_PATH}"; fi
|
|
|
|
#Check LUT_SIZE
|
|
i=0
|
|
while read line; do
|
|
sLine=$(echo $line | sed -e 's/^[ \t]*//')
|
|
if [[ $(echo $sLine | cut -c1-11) == "LUT_3D_SIZE" ]]; then
|
|
if [[ $(echo $sLine | cut -c13-) -le 64 && $(echo $sLine | cut -c13-) -ge 2 ]]; then
|
|
break
|
|
else
|
|
size=$(echo $sLine | cut -c13-)
|
|
invOption "$(basename $LUT_PATH): Invalid LUT Size of $size x $size x $size - Must be between x2 and x64 (you can resize using pylut - see 'convmlv -h') ! "
|
|
fi
|
|
elif [[ $i -gt 20 ]]; then
|
|
invOption "$(basename $LUT_PATH): Invalid LUT - LUT_3D_SIZE not found in first 20 non-commented lines."
|
|
fi
|
|
|
|
if [[ ! $(echo $sLine | cut -c1-1) == "#" ]]; then ((i++)); fi
|
|
done < $LUT_PATH
|
|
|
|
LUTS+=( "lut3d=${LUT_PATH}" )
|
|
lutDesc="3D LUTs"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
"SATPOINT") SATPOINT="-S $(echo "${line}" | cut -d$' ' -f2)"
|
|
;;
|
|
"WHITE_SPD") WHITE_SPD=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"WHITE_CLIP") isScale=true
|
|
;;
|
|
|
|
|
|
"DESHAKE")
|
|
DESHAKE="deshake"
|
|
deshakeDesc="Deshake Filter"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
"DUAL_ISO") DUAL_ISO=true
|
|
;;
|
|
"BADPIXELS") isBP=true
|
|
;;
|
|
"BADPIXEL_PATH") BADPIXEL_PATH=`echo "${line}" | cut -d$' ' -f2`
|
|
;;
|
|
"DARKFRAME")
|
|
DARKFRAME=`echo "${line}" | cut -d$' ' -f2`;
|
|
|
|
if [ ! -f $DARKFRAME ]; then invOption "Invalid Darkframe: ${DARKFRAME}"; fi
|
|
|
|
useDF=true
|
|
;;
|
|
esac
|
|
fi
|
|
done < "$1"
|
|
}
|
|
|
|
parseArgs() { #Amazing new argument parsing!!!
|
|
longArg() { #Creates VAL
|
|
ret="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
}
|
|
while getopts "vh C: o: P: T: i t: m p: s: k r: d: f H: c: n: N: Q: O: g: G: w: A: l: S: D u b a: F: R: q K: Y M -:" opt; do
|
|
#~ echo $opt ${OPTARG}
|
|
case "$opt" in
|
|
-) #Long Arguments
|
|
case ${OPTARG} in
|
|
outdir)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
OUTDIR=$val
|
|
;;
|
|
version)
|
|
PROGRAM="version"
|
|
;;
|
|
help)
|
|
PROGRAM="help"
|
|
;;
|
|
config)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
LCONFIG=$val
|
|
;;
|
|
bin-path)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
BIN_PATH=$val
|
|
setPaths #Set all the paths with the new BIN_PATH.
|
|
;;
|
|
dcraw)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
DCRAW="${val}"
|
|
;;
|
|
mlv-dump)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
MLV_DUMP=$val
|
|
;;
|
|
raw-dump)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
RAW_DUMP=$val
|
|
;;
|
|
badpixels)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
MLV_BP=$val
|
|
;;
|
|
cr-hdr)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
CR_HDR=$val
|
|
;;
|
|
srange)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
PYTHON_BAL=$val
|
|
setPaths #Must regen BAL
|
|
;;
|
|
balance)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
PYTHON_SRANGE=$val
|
|
setPaths #Must regen SRANGE
|
|
;;
|
|
python)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
PYTHON=$val
|
|
setPaths #Set all the paths with the new PYTHON.
|
|
;;
|
|
threads)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
THREADS=$val
|
|
;;
|
|
|
|
|
|
uncompress)
|
|
isCOMPRESS=false
|
|
;;
|
|
|
|
|
|
shallow)
|
|
DEPTH=""
|
|
DEPTH_OUT="-depth 8"
|
|
;;
|
|
|
|
|
|
white-speed)
|
|
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
WHITE_SPD=$val
|
|
;;
|
|
allow-white-clip)
|
|
isScale=true
|
|
;;
|
|
|
|
*)
|
|
echo "Invalid option: --$OPTARG" >&2
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
|
|
v)
|
|
PROGRAM="version"
|
|
;;
|
|
h)
|
|
PROGRAM="help"
|
|
;;
|
|
C)
|
|
LCONFIG=${OPTARG}
|
|
;;
|
|
o)
|
|
OUTDIR=${OPTARG}
|
|
;;
|
|
P)
|
|
BIN_PATH=${OPTARG}
|
|
setPaths #Set all the binary paths with the new BIN_PATH.
|
|
;;
|
|
T)
|
|
THREADS=${OPTARG}
|
|
;;
|
|
|
|
|
|
i)
|
|
IMAGES=true
|
|
;;
|
|
t)
|
|
mode=${OPTARG}
|
|
case ${mode} in
|
|
"0") IMG_FMT="exr"
|
|
;;
|
|
"1") IMG_FMT="tiff"
|
|
;;
|
|
"2") IMG_FMT="png"
|
|
;;
|
|
"3") IMG_FMT="dpx"
|
|
;;
|
|
*) invOption "t: Invalid Image Format Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
m)
|
|
MOVIE=true
|
|
;;
|
|
p)
|
|
PROXY=${OPTARG}
|
|
case ${PROXY} in
|
|
"0") isJPG=false; isH264=false
|
|
;;
|
|
"1") isJPG=false; isH264=true
|
|
;;
|
|
"2") isJPG=true; isH264=false
|
|
;;
|
|
"3") isJPG=true; isH264=true
|
|
;;
|
|
*) invOption "p: Invalid Proxy Choice: ${PROXY}"
|
|
;;
|
|
esac
|
|
;;
|
|
s)
|
|
PROXY_SCALE=${OPTARG}
|
|
|
|
proxy_num=`echo "$PROXY_SCALE" | cut -d'%' -f 1`
|
|
if [[ ! ( ($proxy_num -le 100 && $proxy_num -ge 5) && $proxy_num =~ ^-?[0-9]+$ ) ]]; then invOption "s: Invalid Proxy Scale: ${PROXY_SCALE}"; fi
|
|
;;
|
|
k)
|
|
KEEP_DNGS=true
|
|
;;
|
|
r)
|
|
RANGE_BASE=${OPTARG}
|
|
isFR=false
|
|
;;
|
|
|
|
|
|
d)
|
|
DEMO_MODE=${OPTARG}
|
|
;;
|
|
f)
|
|
FOUR_COLOR="-f"
|
|
;;
|
|
H)
|
|
HIGHLIGHT_MODE=${OPTARG}
|
|
;;
|
|
c)
|
|
mode=${OPTARG}
|
|
case ${mode} in
|
|
"0") CHROMA_SMOOTH="--no-cs"
|
|
;;
|
|
"1") CHROMA_SMOOTH="--cs2x2"
|
|
;;
|
|
"2") CHROMA_SMOOTH="--cs3x3"
|
|
;;
|
|
"3") CHROMA_SMOOTH="--cs5x5"
|
|
;;
|
|
*) invOption "c: Invalid Chroma Smoothing Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
n)
|
|
WAVE_NOISE="-n ${OPTARG}"
|
|
;;
|
|
N)
|
|
vals=${OPTARG}
|
|
|
|
aVal=$(echo "${vals}" | cut -d"-" -f1)
|
|
bVal=$(echo "${vals}" | cut -d"-" -f2)
|
|
|
|
TEMP_NOISE="atadenoise=0a=${aVal}:0b=${bVal}:1a=${aVal}:1b=${bVal}:2a=${aVal}:2b=${bVal}"
|
|
tempDesc="Temporal Denoiser"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
Q)
|
|
vals=${OPTARG}
|
|
|
|
S=`echo "${vals}" | cut -d$':' -f1`
|
|
T=`echo "${vals}" | cut -d$':' -f2`
|
|
|
|
LS=`echo "${S}" | cut -d$'-' -f1`
|
|
CS=`echo "${S}" | cut -d$'-' -f2`
|
|
LT=`echo "${T}" | cut -d$'-' -f1`
|
|
CT=`echo "${T}" | cut -d$'-' -f2`
|
|
|
|
HQ_NOISE="hqdn3d=luma_spatial=${LS}:chroma_spatial=${CS}:luma_tmp=${LT}:chroma_tmp=${CT}"
|
|
hqDesc="3D Denoiser"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
O)
|
|
vals=${OPTARG}
|
|
|
|
m1=`echo "${vals}" | cut -d$'-' -f1`
|
|
m2=`echo "${vals}" | cut -d$'-' -f2`
|
|
m3=`echo "${vals}" | cut -d$'-' -f3`
|
|
m4=`echo "${vals}" | cut -d$'-' -f4`
|
|
|
|
REM_NOISE="removegrain=m0=${m1}:m1=${m2}:m2=${m3}:m3=${m4}"
|
|
remDesc="RemoveGrain Modal Denoiser"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
g)
|
|
mode=${OPTARG}
|
|
|
|
case ${mode} in
|
|
"0")
|
|
COLOR_GAMMA="STANDARD" #Lets CM know that it should correspond to the gamut, or be 2.2.
|
|
;;
|
|
"1")
|
|
COLOR_GAMMA="lin" #Linear
|
|
;;
|
|
"2")
|
|
COLOR_GAMMA="cineon" #Cineon
|
|
;;
|
|
"3")
|
|
COLOR_GAMMA="clog2" #C-Log2. Req: color-ext.
|
|
;;
|
|
"4")
|
|
COLOR_GAMMA="slog3" #S-Log3. Req: color-ext.
|
|
;;
|
|
#~ "5")
|
|
#~ COLOR_GAMMA="logc" #LogC 4.X . Req: color-ext.
|
|
#~ ;;
|
|
#~ "6")
|
|
#~ COLOR_GAMMA="acescc" #ACEScc Log Gamma. Req: color-aces.
|
|
#~ ;;
|
|
*)
|
|
invOption "g: Invalid Gamma Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
G)
|
|
mode=${OPTARG}
|
|
|
|
case ${mode} in
|
|
"0")
|
|
COLOR_GAMUT="srgb" #sRGB
|
|
;;
|
|
"1")
|
|
COLOR_GAMUT="argb" #Adobe RGB
|
|
;;
|
|
"2")
|
|
COLOR_GAMUT="rec709" #Rec.709
|
|
;;
|
|
"3")
|
|
COLOR_GAMUT="xyz" #XYZ. Linear Only.
|
|
;;
|
|
#~ "4")
|
|
#~ COLOR_GAMUT="aces" #ACES. Standard is Linear. Req: color-aces (all gammas will work, even without color-ext)/
|
|
#~ ;;
|
|
"4")
|
|
COLOR_GAMUT="rec2020" #Rec.2020. Req: color-ext.
|
|
;;
|
|
"5")
|
|
COLOR_GAMUT="dcip3" #DCI-P3. Req: color-ext.
|
|
;;
|
|
"6")
|
|
COLOR_GAMUT="ssg3c" #Sony S-Gamut3.cine. Req: color-ext.
|
|
;;
|
|
*)
|
|
invOption "G: Invalid Gamut Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
w)
|
|
mode=${OPTARG}
|
|
|
|
case ${mode} in
|
|
"0") CAMERA_WB=false; GEN_WHITE=true #Will generate white balance.
|
|
;;
|
|
"1") CAMERA_WB=true; GEN_WHITE=false; #Will use camera white balance.
|
|
;;
|
|
"2") WHITE="-r 1 1 1 1"; CAMERA_WB=false; GEN_WHITE=false #Will not apply any white balance.
|
|
;;
|
|
*)
|
|
invOption "w: Invalid White Balance Choice: ${mode}"
|
|
;;
|
|
esac
|
|
;;
|
|
A)
|
|
val=${OPTARG}
|
|
|
|
lSize=`echo "${val}" | cut -d$':' -f1`
|
|
lStr=`echo "${val}" | cut -d$':' -f2`
|
|
cSize=`echo "${val}" | cut -d$':' -f3`
|
|
cStr=`echo "${val}" | cut -d$':' -f4`
|
|
|
|
SHARP="unsharp=${lSize}:${lSize}:${lStr}:${cSize}:${cSize}:${cStr}"
|
|
sharpDesc="Sharpen/Blur"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
l)
|
|
LUT_PATH=${OPTARG}
|
|
|
|
if [ ! -f $LUT_PATH ]; then invOption "Invalid LUT Path: ${LUT_PATH}"; fi
|
|
|
|
#Check LUT_SIZE
|
|
i=0
|
|
while read line; do
|
|
sLine=$(echo $line | sed -e 's/^[ \t]*//')
|
|
if [[ $(echo $sLine | cut -c1-11) == "LUT_3D_SIZE" ]]; then
|
|
if [[ $(echo $sLine | cut -c13-) -le 64 && $(echo $sLine | cut -c13-) -ge 2 ]]; then
|
|
break
|
|
else
|
|
size=$(echo $sLine | cut -c13-)
|
|
invOption "$(basename $LUT_PATH): Invalid LUT Size of $size x $size x $size - Must be between x2 and x64 (you can resize using pylut - see 'convmlv -h') ! "
|
|
fi
|
|
elif [[ $i -gt 20 ]]; then
|
|
invOption "$(basename $LUT_PATH): Invalid LUT - LUT_3D_SIZE not found in first 20 non-commented lines."
|
|
fi
|
|
|
|
if [[ ! $(echo $sLine | cut -c1-1) == "#" ]]; then ((i++)); fi
|
|
done < $LUT_PATH
|
|
|
|
LUTS+=( "lut3d=${LUT_PATH}" )
|
|
lutDesc="3D LUTs"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
S)
|
|
SATPOINT="-S ${OPTARG}"
|
|
;;
|
|
|
|
|
|
D)
|
|
DESHAKE="deshake"
|
|
deshakeDesc="Deshake Filter"
|
|
FFMPEG_FILTERS=true
|
|
;;
|
|
|
|
u)
|
|
DUAL_ISO=true
|
|
;;
|
|
b)
|
|
isBP=true
|
|
;;
|
|
a)
|
|
BADPIXEL_PATH=${OPTARG}
|
|
BADPIXEL_PATH=${OPTARG}
|
|
;;
|
|
F)
|
|
DARKFRAME=`echo "${line}" | cut -d$' ' -f2`;
|
|
|
|
if [ ! -f $DARKFRAME ]; then invOption "F: Invalid Darkframe: ${DARKFRAME}"; fi
|
|
|
|
useDF=true
|
|
;;
|
|
R)
|
|
PROGRAM="darkframe"
|
|
#~ MK_DARK=true
|
|
DARK_OUT=${OPTARG}
|
|
;;
|
|
|
|
|
|
q)
|
|
PROGRAM="settings"
|
|
#~ SETTINGS_OUTPUT=true
|
|
;;
|
|
K)
|
|
mode=${OPTARG}
|
|
|
|
case ${mode} in
|
|
"0") echo $DEB_DEPS
|
|
;;
|
|
"1") echo $UBU_DEPS
|
|
;;
|
|
"2") echo $FED_DEPS
|
|
;;
|
|
"3") echo $BREW_DEPS
|
|
;;
|
|
*)
|
|
invOption "K: Invalid Dist Choice: ${mode}"
|
|
;;
|
|
esac
|
|
|
|
exit 0
|
|
;;
|
|
Y)
|
|
echo $PIP_DEPS
|
|
exit 0
|
|
;;
|
|
M)
|
|
echo $MAN_DEPS
|
|
exit 0
|
|
;;
|
|
|
|
|
|
*)
|
|
echo "Invalid option: -$OPTARG" >&2
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
|
|
parseAll() {
|
|
#Big parse/reparse, making sure global, local, command line options all override each other correctly.
|
|
set -- $INPUT_ARGS #Reset the argument input for reparsing.
|
|
setDefaults #Hard set/reset all the lovely globals.
|
|
OPTIND=1 #Reset argument parsing.
|
|
|
|
parseConf "$GCONFIG" false #Parse global config file.
|
|
|
|
parseArgs "$@" #First, parse all cli args. We only need the -C flag, but that forces us to just parse everything.
|
|
shift $((OPTIND-1)) #Shift past all of the options to the file arguments.
|
|
|
|
parseConf "$LCONFIG" false #Parse local config file.
|
|
set -- $INPUT_ARGS #Reset $@ for cli option reparsing.
|
|
OPTIND=1 #To reset argument parsing, we must set OPTIND to 1.
|
|
|
|
parseArgs "$@" #Reparse cli to overwrite local config options.
|
|
shift $((OPTIND-1)) #Shift past all of the options to the file arguments.
|
|
OPTIND=1 #Reset argument index.
|
|
}
|