From 3acbb56f872c99b1fd5b9854ea700cdf9f5b545d Mon Sep 17 00:00:00 2001 From: GenZmeY Date: Thu, 24 Dec 2020 14:02:48 +0300 Subject: [PATCH] v0.2 - add preview mode; - deps config; - upscale mode is selected automatically; - add scale mode support (i.e. without noise reduction); - refactoring. --- scripts/common.lib | 143 ++++++++++++++++++++- scripts/extract.sh | 7 +- scripts/frames.sh | 9 -- scripts/preview.sh | 121 ++++++++++++++++++ scripts/ranges.sh | 10 +- scripts/returncodes.lib | 18 --- scripts/upscale.sh | 157 ++++++++---------------- scripts/video.sh | 1 - settings/{video2d-2x.conf => deps.conf} | 0 settings/ffmpeg.conf | 1 - settings/waifu2x-caffe.conf | 1 - video2d-2x | 47 +------ 12 files changed, 319 insertions(+), 196 deletions(-) create mode 100644 scripts/preview.sh delete mode 100644 scripts/returncodes.lib rename settings/{video2d-2x.conf => deps.conf} (100%) diff --git a/scripts/common.lib b/scripts/common.lib index fc68585..4ca8beb 100644 --- a/scripts/common.lib +++ b/scripts/common.lib @@ -15,11 +15,64 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -DEF='\e[0m'; BLD='\e[1m'; RED='\e[31m'; GRN='\e[32m'; YLW='\e[33m'; WHT='\e[97m' +######## Filesystem ######## +readonly DepsDir="$BaseDir/dependencies" +readonly ScriptsDir="$BaseDir/scripts" +readonly SettingsDir="$BaseDir/settings" +readonly OutputDir="$BaseDir/output" -function clean_line () # $1: Fill size +readonly FramesDir="$OutputDir/frames" +readonly AudioDir="$OutputDir/audio" +readonly VideoDir="$OutputDir/video" +readonly SubtitlesDir="$OutputDir/subtitles" +readonly ChaptersDir="$OutputDir/chapters" +readonly AttachmentsDir="$OutputDir/attachments" +readonly ReleaseDir="$OutputDir/release" +readonly PreviewDir="$OutputDir/preview" + +readonly FramesUpscaledDir="${FramesDir}_upscaled" +readonly VideoUpscaledDir="${VideoDir}_upscaled" + +readonly FormatJson="$OutputDir/format.json" +readonly StreamsJson="$OutputDir/streams.json" +readonly ChaptersJson="$OutputDir/chapters.json" + +readonly RangesList="$OutputDir/ranges.list" + +readonly DepsConf="$SettingsDir/deps.conf" +readonly Waifu2xConf="$SettingsDir/waifu2x-caffe.conf" +readonly FfmpegConf="$SettingsDir/ffmpeg.conf" +readonly RangeGenConf="$SettingsDir/range-gen.conf" + +######## Return codes ######## +SUCCESS=0 +OPTION_ERROR=1 +PARAMETER_ERROR=2 +EXTRACT_AUDIO_ERROR=3 +EXTRACT_VIDEO_ERROR=4 +EXTRACT_SUBTITLE_ERROR=5 +EXTRACT_ATTACHMENT_ERROR=6 +UNKNOWN_CODEC_TYPE_ERROR=7 +NO_EXTENSION_FOR_CODEC=8 +CONVERT_TO_FRAMES_ERROR=9 +FILE_READ_ERROR=10 +RANGES_LIST_SYNTAX_ERROR=11 +SETTINGS_ERROR=12 +WAIFU2X_ERROR=13 +MERGE_RELEASE_ERROR=14 +NO_INFO_ERROR=15 +INTERRUPT=16 +CREATE_UPSCALED_VIDEO_ERROR=17 + +######## Functions ######## +function clean_line () { - printf "\r%$1s\r" "" + printf "\r%$(tput cols)s\r" "" +} + +function model_path () # $1: model name +{ + echo "$(dirname $(readlink -e $(which waifu2x-caffe-cui)))/models/$1" } function framerate () @@ -34,3 +87,87 @@ function framerate () fi done } + +function png_num () # $1: String +{ + echo "$1" | \ + sed 's|.png||' | \ + sed -r 's|0*([1-9][0-9]*)|\1|' +} + +function check_ranges () +{ + local Errors=0 + local ParamCount=0 + local LineIndex=0 + local LastEndFrame="" + + while read Line + do + ((LineIndex++)) + local RangeInfo=($Line) + local ParamCount=${#RangeInfo[@]} + + if [[ "$ParamCount" -eq 0 ]]; then + continue + elif [[ "$ParamCount" -eq 2 ]] || [[ "$ParamCount" -eq 3 ]]; then + local StartFrame=$(png_num ${RangeInfo[0]}) + local EndFrame=$(png_num ${RangeInfo[1]}) + local NoiseLevel=$(png_num ${RangeInfo[2]}) + + if [[ "$StartFrame" =~ ^[0-9]+$ ]]; then + if [[ -n "$LastEndFrame" ]] && [[ $(($LastEndFrame+1)) != $StartFrame ]]; then + echo "ERR [$LineIndex]: StartFrame ($StartFrame) doesn't follow the previous one ($LastEndFrame)" + ((Errors++)) + fi + else + echo "ERR [$LineIndex]: StartFrame $StartFrame is not valid integer" + ((Errors++)) + fi + + if [[ "$EndFrame" =~ ^[0-9]+$ ]]; then + LastEndFrame="$EndFrame" + else + LastEndFrame="" + echo "ERR [$LineIndex]: EndFrame $EndFrame is not valid integer" + ((Errors++)) + fi + if [[ "$NoiseLevel" =~ ^[0-9]+$ ]]; then + if [[ "$NoiseLevel" -lt 0 ]] || [[ "$NoiseLevel" -gt 3 ]]; then + echo "ERR [$LineIndex]: NoiseLevel $NoiseLevel incorrect value (should be in the range 0-3)" + ((Errors++)) + fi + elif [[ -n "$NoiseLevel" ]]; then + echo "ERR [$LineIndex]: NoiseLevel $NoiseLevel is not valid integer" + ((Errors++)) + fi + else + echo "ERR [$LineIndex]: $ParamCount parameters received (2 or 3 expected)" + ((Errors++)) + fi + done < <(cat "$RangesList"; echo) # make bash not skip the last line (if there is no empty line at the end) + if [[ "$Errors" -gt 0 ]]; then + echo "Ranges list syntax: $Errors errors" + fi + return "$Errors" +} + +######## Includes ######## +source "$DepsConf" + +######## Initialization ######## +if [[ -n "$Waifu2xCaffeDir" ]]; then + PATH="$PATH:$(readlink -e $Waifu2xCaffeDir)" +fi +if [[ -n "$MkvToolNixDir" ]]; then + PATH="$PATH:$(readlink -e $MkvToolNixDir)" +fi +if [[ -n "$FfmpegDir" ]]; then + PATH="$PATH:$(readlink -e $FfmpegDir)" +fi + +if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then + DEF='\e[0m'; BLD='\e[1m'; RED='\e[31m'; GRN='\e[32m'; YLW='\e[33m'; WHT='\e[97m' +else + DEF=''; BLD=''; RED=''; GRN=''; YLW=''; WHT='' +fi diff --git a/scripts/extract.sh b/scripts/extract.sh index f221537..6a1eb8a 100644 --- a/scripts/extract.sh +++ b/scripts/extract.sh @@ -36,12 +36,13 @@ function extract_attachments () { pushd "$AttachmentsDir" - ffmpeg -hide_banner -dump_attachment:t "" -i "$InputFile" - - # There is no error checking, + # Disable error checking # because ffmpeg always throws an error: # "At least one output file must be specified", # although it successfully saves attachments. + set +e + ffmpeg -hide_banner -dump_attachment:t "" -i "$InputFile" + set -e popd } diff --git a/scripts/frames.sh b/scripts/frames.sh index 3548668..7b729f3 100644 --- a/scripts/frames.sh +++ b/scripts/frames.sh @@ -17,15 +17,6 @@ InputFile=$(find "$VideoDir" -mindepth 1 -maxdepth 1 -type f | head -n 1) -if ! [[ -r "$InputFile" ]]; then - echo "Read file error: \"$InputFile\"" - exit "$FILE_READ_ERROR" -fi - rm -rf "$FramesDir"; mkdir -p "$FramesDir" ffmpeg -hide_banner -i "$InputFile" -r "$(framerate)" -f image2 "$FramesDir/%06d.png" - -if [[ "$?" != 0 ]]; then - exit "$CONVERT_TO_FRAMES_ERROR" -fi diff --git a/scripts/preview.sh b/scripts/preview.sh new file mode 100644 index 0000000..246a318 --- /dev/null +++ b/scripts/preview.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +# This file is part of video2d-2x. +# +# video2d-2x is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +source "$Waifu2xConf" + +readonly TmpFramesSrcDir="${PreviewDir}_tmpsrc" +readonly TmpFramesOutDir="${PreviewDir}_tmpout" + +if ! [[ -r "$RangesList" ]]; then + echo "Read file error: \"$RangesList\"" + exit "$FILE_READ_ERROR" +fi + +if ! check_ranges; then + exit "$RANGES_LIST_SYNTAX_ERROR" +fi + +rm -rf "$PreviewDir" "$TmpFramesSrcDir" "$TmpFramesOutDir" +mkdir -p "$PreviewDir" "$TmpFramesSrcDir" "$TmpFramesOutDir" + +# Prepare frames +CopyList="" +while read Line +do + if [[ -z "$Line" ]]; then + continue + fi + + RangeInfo=($Line) + StartFrame=$(png_num ${RangeInfo[0]}) + EndFrame=$(png_num ${RangeInfo[1]}) + TargetFrame=$((StartFrame + (EndFrame - StartFrame)/2)) + + CopyList+="$(printf "%06d" $TargetFrame).png " +done < <(cat "$RangesList"; echo) # make bash not skip the last line (if there is no empty line at the end) + +pushd "$FramesDir" > /dev/null +cp -f $CopyList "$TmpFramesSrcDir" +popd > /dev/null + +# Upscale (scale) +if [[ "$ScaleRatio" -ne 1 ]]; then + echo "Scale" + waifu2x-caffe-cui \ + --mode "scale" \ + --scale_ratio "$ScaleRatio" \ + --output_depth "$OutputDepth" \ + --tta "$TtaMode" \ + --gpu "$GpuNum" \ + --process "$Process" \ + --crop_size "$CropSize" \ + --batch_size "$BatchSize" \ + --model_dir "$(model_path $Model)" \ + --input_path "$TmpFramesSrcDir" \ + --output_path "$TmpFramesOutDir" \ + > /dev/null + + echo "Copy" + pushd "$TmpFramesOutDir" > /dev/null + while read Filename + do + NewFilename=$(echo "$Filename" | sed "s|.png|_scale${ScaleRatio}.png|") + mv "$Filename" "$PreviewDir/$NewFilename" + done < <(find "$TmpFramesOutDir" -type f -name '*.png' -printf "%f\n") + popd > /dev/null +fi + +# Upscale (noise_scale) +for NoiseLevel in 0 1 2 3 +do + if [[ "$ScaleRatio" -eq 1 ]]; then + UpscaleMode="noise" + else + UpscaleMode="noise_scale" + fi + + echo "$UpscaleMode $NoiseLevel" + waifu2x-caffe-cui \ + --mode "$UpscaleMode" \ + --scale_ratio "$ScaleRatio" \ + --output_depth "$OutputDepth" \ + --noise_level "$NoiseLevel" \ + --tta "$TtaMode" \ + --gpu "$GpuNum" \ + --process "$Process" \ + --crop_size "$CropSize" \ + --batch_size "$BatchSize" \ + --model_dir "$(model_path $Model)" \ + --input_path "$TmpFramesSrcDir" \ + --output_path "$TmpFramesOutDir" \ + > /dev/null + + echo "Copy" + pushd "$TmpFramesOutDir" > /dev/null + while read Filename + do + NewFilename=$(echo "$Filename" | sed "s|.png|_scale${ScaleRatio}_noise${NoiseLevel}.png|") + mv "$Filename" "$PreviewDir/$NewFilename" + done < <(find "$TmpFramesOutDir" -type f -name '*.png' -printf "%f\n") + popd > /dev/null +done + +pushd "$TmpFramesSrcDir" > /dev/null +mv *.png "$PreviewDir" +popd > /dev/null + +rm -rf "$TmpFramesSrcDir" "$TmpFramesOutDir" \ No newline at end of file diff --git a/scripts/ranges.sh b/scripts/ranges.sh index 9c877be..17860ac 100644 --- a/scripts/ranges.sh +++ b/scripts/ranges.sh @@ -15,18 +15,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# TODO: auto-detect ranges -# compare adjacent frames using the duplicate image search algorithm -# frames that are unlike each other will be the boundaries of the ranges - # Range list format: # START_FRAME END_FRAME NOISE_LEVEL # (separate line for each range) - -function add_range () # $1: Start frame, $2: End frame, $3: Noise level -{ - echo -e "$1\t$2\t$3" >> "$RangesList" -} +# (NOISE_LEVEL is optional) source "$RangeGenConf" diff --git a/scripts/returncodes.lib b/scripts/returncodes.lib deleted file mode 100644 index 27bc943..0000000 --- a/scripts/returncodes.lib +++ /dev/null @@ -1,18 +0,0 @@ -SUCCESS=0 -OPTION_ERROR=1 -PARAMETER_ERROR=2 -EXTRACT_AUDIO_ERROR=3 -EXTRACT_VIDEO_ERROR=4 -EXTRACT_SUBTITLE_ERROR=5 -EXTRACT_ATTACHMENT_ERROR=6 -UNKNOWN_CODEC_TYPE_ERROR=7 -NO_EXTENSION_FOR_CODEC=8 -CONVERT_TO_FRAMES_ERROR=9 -FILE_READ_ERROR=10 -RANGES_LIST_SYNTAX_ERROR=11 -SETTINGS_ERROR=12 -WAIFU2X_ERROR=13 -MERGE_RELEASE_ERROR=14 -NO_INFO_ERROR=15 -INTERRUPT=16 -CREATE_UPSCALED_VIDEO_ERROR=17 diff --git a/scripts/upscale.sh b/scripts/upscale.sh index 39396b7..f5e7954 100644 --- a/scripts/upscale.sh +++ b/scripts/upscale.sh @@ -15,53 +15,38 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +source "$Waifu2xConf" + readonly TmpFramesDir="${FramesDir}_tmp" -readonly ColumnWidth=8 -readonly RowTemplate="\r%-${ColumnWidth}s%-${ColumnWidth}s%-${ColumnWidth}s%-${ColumnWidth}s\n" +readonly RowTemplate="\r%-8s%-8s%-12s%-8s%-8s\n" -function create_default_conf () +function upscale_mode () # $1: ScaleRatio, $2: NoiseLevel { - echo "\ -Process=\"cudnn\"\ -GpuNum=\"0\"\ -ScaleRatio=\"3\"\ -OutputDepth=\"16\"\ -Mode=\"noise_scale\"\ -CropSize=\"256\"\ -BatchSize=\"1\"\ -Model=\"upresnet10\"\ -TtaMode=\"0\"\ -" > "$Waifu2xConf" -} - -function to_int () # $1: String -{ - echo "$1" | \ - sed 's|.png||' | \ - sed -r 's|0*([1-9][0-9]*)|\1|' -} - -function set_range () # $@: Line -{ - StartFrame=$(to_int "$1") - EndFrame=$(to_int "$2") - NoiseLevel=$(to_int "$3") + local ScaleRatio="$1" + local NoiseLevel="$2" - return $# -} - -function model_path () # $1: model name -{ - echo "$(dirname $(readlink -e $(which waifu2x-caffe-cui)))/models/$1" + if [[ "$ScaleRatio" -ne 1 ]] && [[ -n "$NoiseLevel" ]]; then + echo "noise_scale" + return 0 + fi + if [[ "$ScaleRatio" -eq 1 ]] && [[ -n "$NoiseLevel" ]]; then + echo "noise" + return 0 + fi + if [[ "$ScaleRatio" -ne 1 ]] && [[ -z "$NoiseLevel" ]]; then + echo "scale" + return 0 + fi + return 1 } function upscale_images () # $1: InputDir, $2: OutputDir, $3: ProgressBarPID, $4: ParentPID { waifu2x-caffe-cui \ + --mode "$UpscaleMode" \ --scale_ratio "$ScaleRatio" \ --output_depth "$OutputDepth" \ --noise_level "$NoiseLevel" \ - --mode "$Mode" \ --tta "$TtaMode" \ --gpu "$GpuNum" \ --process "$Process" \ @@ -78,69 +63,16 @@ function upscale_images () # $1: InputDir, $2: OutputDir, $3: ProgressBarPID, $4 fi } -function check_ranges () -{ - local Errors=0 - local ParamCount=0 - local LineIndex=0 - local LastEndFrame="" - - while read Line - do - ((LineIndex++)) - set_range $Line - ParamCount=$? - if [[ "$ParamCount" -eq 0 ]]; then - continue - fi - if [[ "$ParamCount" -eq 3 ]]; then - if [[ "$StartFrame" =~ ^[0-9]+$ ]]; then - if [[ -n "$LastEndFrame" ]] && [[ $(($LastEndFrame+1)) != $StartFrame ]]; then - echo "ERR [$LineIndex]: StartFrame ($StartFrame) doesn't follow the previous one ($LastEndFrame)" - ((Errors++)) - fi - else - echo "ERR [$LineIndex]: StartFrame $StartFrame is not valid integer" - ((Errors++)) - fi - - if [[ "$EndFrame" =~ ^[0-9]+$ ]]; then - LastEndFrame="$EndFrame" - else - LastEndFrame="" - echo "ERR [$LineIndex]: EndFrame $EndFrame is not valid integer" - ((Errors++)) - fi - if [[ "$NoiseLevel" =~ ^[0-9]+$ ]]; then - if [[ "$NoiseLevel" -lt 0 ]] || [[ "$NoiseLevel" -gt 3 ]]; then - echo "ERR [$LineIndex]: NoiseLevel $NoiseLevel incorrect value (should be in the range 0-3)" - ((Errors++)) - fi - else - echo "ERR [$LineIndex]: NoiseLevel $NoiseLevel is not valid integer" - ((Errors++)) - fi - else - echo "ERR [$LineIndex]: $ParamCount parameters received (3 expected)" - ((Errors++)) - fi - done < <(cat "$RangesList"; echo) # make bash not skip the last line (if there is no empty line at the end) - if [[ "$Errors" -gt 0 ]]; then - echo "Ranges list syntax: $Errors errors" - fi - return "$Errors" -} - function progress_bar () { local PreviousUpscaledFrame="" local LastUpscaledFrame="" - local Total=$(to_int $LastOriginalFrame) + local Total=$(png_num $LastOriginalFrame) while [[ "$LastUpscaledFrame" != "$LastOriginalFrame" ]] do LastUpscaledFrame=$(ls "$FramesUpscaledDir" | sort | tail -n 1) if [[ "$PreviousUpscaledFrame" != "$LastUpscaledFrame" ]]; then - local Done=$(to_int $LastUpscaledFrame) + local Done=$(png_num $LastUpscaledFrame) printf "\r[%3d%%] %d/%d" "$(($Done*100/$Total))" "$Done" "$Total" PreviousUpscaledFrame="$LastUpscaledFrame" fi @@ -148,12 +80,11 @@ function progress_bar () done } -if ! [[ -e "$Waifu2xConf" ]]; then - create_default_conf +if ! [[ -r "$RangesList" ]]; then + echo "Read file error: \"$RangesList\"" + exit "$FILE_READ_ERROR" fi -source "$Waifu2xConf" - if ! check_ranges; then exit "$RANGES_LIST_SYNTAX_ERROR" fi @@ -161,11 +92,6 @@ fi rm -rf "$TmpFramesDir" mkdir -p "$FramesUpscaledDir" -if ! [[ -r "$RangesList" ]]; then - echo "Read file error: \"$RangesList\"" - exit "$FILE_READ_ERROR" -fi - LastOriginalFrame=$(ls "$FramesDir" | sort | tail -n 1) LastUpscaledFrame=$(ls "$FramesUpscaledDir" | sort | tail -n 1) @@ -174,30 +100,43 @@ if [[ "$LastUpscaledFrame" == "$LastOriginalFrame" ]]; then exit "$SUCCESS" fi -LastUpscaledFrame=$(to_int "$LastUpscaledFrame") -echo "$WIDTH" -printf "${BLD}$RowTemplate${DEF}" "START" "END" "NOISE" "ACTION" +LastUpscaledFrame=$(png_num "$LastUpscaledFrame") + +printf "${BLD}$RowTemplate${DEF}" "START" "END" "MODE" "NOISE" "ACTION" while read Line do if [[ -z "$Line" ]]; then continue fi - set_range $Line - clean_line "$COLUMNS" + RangeInfo=($Line) + StartFrame=$(png_num ${RangeInfo[0]}) + EndFrame=$(png_num ${RangeInfo[1]}) + NoiseLevel=$(png_num ${RangeInfo[2]}) + + UpscaleMode=$(upscale_mode "$ScaleRatio" "$NoiseLevel") + + if [[ -z "$NoiseLevel" ]]; then + NoiseLevel="0" + NoiseLevelDisplay="-" + else + NoiseLevelDisplay="$NoiseLevel" + fi + + clean_line if [[ -n "$LastUpscaledFrame" ]] && [[ "$LastUpscaledFrame" -ge "$EndFrame" ]]; then - printf "$RowTemplate" "$StartFrame" "$EndFrame" "$NoiseLevel" "SKIP" + printf "$RowTemplate" "$StartFrame" "$EndFrame" "$UpscaleMode" "$NoiseLevelDisplay" "SKIP" continue fi if [[ -n "$LastUpscaledFrame" ]] && [[ "$StartFrame" -lt "$LastUpscaledFrame" ]]; then - printf "$RowTemplate" "$StartFrame" "$(($LastUpscaledFrame-1))" "$NoiseLevel" "SKIP" - printf "$RowTemplate" "$LastUpscaledFrame" "$EndFrame" "$NoiseLevel" "CONTINUE" + printf "$RowTemplate" "$StartFrame" "$(($LastUpscaledFrame-1))" "$UpscaleMode" "$NoiseLevelDisplay" "SKIP" + printf "$RowTemplate" "$LastUpscaledFrame" "$EndFrame" "$UpscaleMode" "$NoiseLevelDisplay" "CONTINUE" # if waifu2x-caffe was interrupted while saving the file, a corrupted file is saved # so it's better to start by overwriting the last upscaled file StartFrame="$LastUpscaledFrame" else - printf "$RowTemplate" "$StartFrame" "$EndFrame" "$NoiseLevel" + printf "$RowTemplate" "$StartFrame" "$EndFrame" "$UpscaleMode" "$NoiseLevelDisplay" fi rm -rf "$TmpFramesDir" @@ -214,7 +153,7 @@ do cp $CopyList "$TmpFramesDir" popd > /dev/null - clean_line "$COLUMNS" + clean_line (progress_bar) & ProgressBarPID=$! diff --git a/scripts/video.sh b/scripts/video.sh index 637d308..6cfbc57 100644 --- a/scripts/video.sh +++ b/scripts/video.sh @@ -41,7 +41,6 @@ function auto_bitrate () elif [[ -n "$VideoBitrate" ]]; then echo '-b:v' "$VideoBitrate" else - echo "You must set ConstantRateFactor or VideoBitrate in ffmpeg.conf" exit "$SETTINGS_ERROR" fi } diff --git a/settings/video2d-2x.conf b/settings/deps.conf similarity index 100% rename from settings/video2d-2x.conf rename to settings/deps.conf diff --git a/settings/ffmpeg.conf b/settings/ffmpeg.conf index f4b0f6d..b431d2a 100644 --- a/settings/ffmpeg.conf +++ b/settings/ffmpeg.conf @@ -2,5 +2,4 @@ VideoCodec="libx265" Preset="slow" PixelFormat="yuv420p10le" ConstantRateFactor="16" -VideoBitrate="" x265params="limit-sao=1:bframes=8:psy-rd=1:aq-mode=3" diff --git a/settings/waifu2x-caffe.conf b/settings/waifu2x-caffe.conf index 3061f36..6ac7259 100644 --- a/settings/waifu2x-caffe.conf +++ b/settings/waifu2x-caffe.conf @@ -7,7 +7,6 @@ Process="cudnn" GpuNum="0" ScaleRatio="3" OutputDepth="16" -Mode="noise_scale" CropSize="256" BatchSize="1" Model="upresnet10" diff --git a/video2d-2x b/video2d-2x index 88942c5..4b62c6b 100644 --- a/video2d-2x +++ b/video2d-2x @@ -19,41 +19,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +set -Eeuo pipefail + readonly ScriptName=$(basename "$0") -readonly ScriptVersion="0.1" +readonly ScriptVersion="0.2" readonly BaseDir=$(dirname $(readlink -e "$0")) -readonly DepsDir="$BaseDir/dependencies" -readonly ScriptsDir="$BaseDir/scripts" -readonly SettingsDir="$BaseDir/settings" -readonly OutputDir="$BaseDir/output" - -readonly FramesDir="$OutputDir/frames" -readonly AudioDir="$OutputDir/audio" -readonly VideoDir="$OutputDir/video" -readonly SubtitlesDir="$OutputDir/subtitles" -readonly ChaptersDir="$OutputDir/chapters" -readonly AttachmentsDir="$OutputDir/attachments" -readonly ReleaseDir="$OutputDir/release" - -readonly FramesUpscaledDir="${FramesDir}_upscaled" -readonly VideoUpscaledDir="${VideoDir}_upscaled" - -readonly FormatJson="$OutputDir/format.json" -readonly StreamsJson="$OutputDir/streams.json" -readonly ChaptersJson="$OutputDir/chapters.json" - -readonly RangesList="$OutputDir/ranges.list" - -readonly Video2d2xConf="$SettingsDir/video2d-2x.conf" -readonly Waifu2xConf="$SettingsDir/waifu2x-caffe.conf" -readonly FfmpegConf="$SettingsDir/ffmpeg.conf" -readonly RangeGenConf="$SettingsDir/range-gen.conf" - -source "$ScriptsDir/returncodes.lib" -source "$ScriptsDir/common.lib" - -source "$Video2d2xConf" +source "$BaseDir/scripts/common.lib" function show_version () { @@ -73,16 +45,6 @@ function show_help () echo " -h, --help show help" } -if [[ -n "$Waifu2xCaffeDir" ]]; then - PATH="$PATH:$(readlink -e $Waifu2xCaffeDir)" -fi -if [[ -n "$MkvToolNixDir" ]]; then - PATH="$PATH:$(readlink -e $MkvToolNixDir)" -fi -if [[ -n "$FfmpegDir" ]]; then - PATH="$PATH:$(readlink -e $FfmpegDir)" -fi - if [[ $# -eq 0 ]]; then show_help; exit 0; fi case $1 in -h|--help ) show_help ;; @@ -90,6 +52,7 @@ case $1 in -e|--extract ) shift; source "$ScriptsDir/extract.sh" ;; -f|--frames ) shift; source "$ScriptsDir/frames.sh" ;; -r|--ranges ) shift; source "$ScriptsDir/ranges.sh" ;; + -p|--preview ) shift; source "$ScriptsDir/preview.sh" ;; -u|--upscale ) shift; source "$ScriptsDir/upscale.sh" ;; -v|--video ) shift; source "$ScriptsDir/video.sh" ;; -m|--merge ) shift; source "$ScriptsDir/merge.sh" ;;