#!/bin/bash

# Caminho para o executável realesrgan-ncnn-vulkan
REALESRGAN_EXEC="$PWD/realesrgan-ncnn-vulkan"

# Modelo a ser utilizado (realesr-animevideov3)
MODEL="realesr-animevideov3"

# Escala (nesse caso, 2x)
SCALE=2

# Verifica se foram passados os argumentos corretos (espera 3: pasta de entrada, saída e GPU)
if [ "$#" -ne 3 ]; then
    echo "Uso: $0 <pasta de entrada> <pasta de saída> <índice da GPU>"
    exit 1
fi

# Pasta de origem (primeiro argumento passado)
INPUT_FOLDER="$1"

# Pasta de destino (segundo argumento passado)
OUTPUT_FOLDER="$2"

# Índice da GPU (terceiro argumento passado)
GPU_INDEX="$3"

# Verifica se a pasta de destino existe, se não, cria
mkdir -p "$OUTPUT_FOLDER"

# Formatos de imagem suportados
EXTENSIONS="jpg jpeg png bmp"

# Loop para processar todas as imagens na pasta de origem
for ext in $EXTENSIONS; do
    for img in "$INPUT_FOLDER"/*.$ext; do
        if [ -f "$img" ]; then
            # Nome da imagem sem o caminho completo
            filename=$(basename "$img")
            # Realiza o upscale usando o modelo realesr-animevideov3 com escala 2x e a GPU especificada
            "$REALESRGAN_EXEC" -i "$img" -o "$OUTPUT_FOLDER/$filename" -n "$MODEL" -s "$SCALE" -g "$GPU_INDEX"
            echo "Processado: $filename usando GPU $GPU_INDEX"
        fi
    done
done

echo "Processamento concluído!"
