@echo off
chcp 65001
:: ^ NO HO TOQUIS ^

:: --- FITXERS ---
:: Nom del fitxer de la RAW
SET raw=[Moozzi2] Princess Tutu - 01 (BD 1440x1080 x.264 Flac).mkv
:: Nom del fitxer de subtítols
SET subtitles=01.ass

:: --- DADES ---
:: Títol del fitxer comprimit
SET title=Princesa Tutú - 01
:: Títol del vídeo (el %title% és el títol del fitxer a la línia anterior)
SET title_long=%title% - L'ànec i el príncep
:: Autor del fitxer
SET author=CatSub
:: Any d'edició de l'anime (no de la subtitulació)
SET year=2002
:: Gènere del vídeo
SET genre=Anime

:: --- COMPRESSIÓ ---
:: Qualitat de la compressió: low (ràpid però mal comprimit) o high (lent però ben comprimit)
SET quality=high

:: Això defineix el nom del fitxer resultant i els paràmetres del còdec depenent de la qualitat de la compressió (low o high)
:: Afegim "[QC]" a les versions comprimides amb baixa qualitat per a diferenciar-les de les definitives.
IF "%quality%"=="low" (
	SET preset=ultrafast
	SET crf=23
	SET output=[%author%] %title% [QC].mp4
) ELSE (
	SET preset=slower
	SET crf=17
	SET output=[%author%] %title%.mp4
)

:: --- EXECUCIÓ ---

:: Primer comprovem que els fitxers existeixin:
IF NOT EXIST "%raw%" (
	ECHO El fitxer de la RAW no existeix, verifica que sigui correcte.
	PAUSE
	EXIT
)
IF NOT EXIST "%subtitles%" (
	ECHO El fitxer de subtítols no existeix, verifica que sigui correcte.
	PAUSE
	EXIT
)

:: Aquest és el programa que fa la compressió, l'ffmpeg. Paràmetres que s'hi passen:
:: -i "%raw%" -> Indica que el fitxer d'origen és la RAW que hem especificat abans
:: -map_metadata -1 -> Descarta totes les metadades del fitxer original (títol, autor, nom, etc.)
:: -map_chapters -1 -> Descarta els capítols del fitxer original (marques de temps que permeten saltar a opening, ending, etc.)
:: -pix_fmt yuv420p -> Indica el format de color, per si la RAW té algun format de color diferent (p.ex. 10bits)
:: -vf subtitles="%subtitles%" -> Indica que cal aplicar el filtre de vídeo que afegeix subtítols amb el fitxer especificat abans
:: -c:v libx264 -> Còdec de vídeo H264
:: -preset %preset% -> Velocitat del còdec H264: com més lent, millor compressió resultant. Normalment fem servir "slower"
:: -profile:v high -> Perfil del còdec H264 (sempre High)
:: -level 4.1 -> Nivell del còdec H264 (sempre 4.1)
:: -crf %crf% -> Ràtio de compressió: com més baix, menys pèrdua de qualitat, però fitxer més gros. Normalment 17 per a llançaments, 14 si no són HD
:: -ac 2 -> Redueix l'àudio a dos canals (estèreo), per si l'origen és surround
:: -c:a aac -> Còdec d'àudio AAC
:: -b:a 128k -> Bitrate (nombre de mostres per segon) del còdec AAC 8sempre 128k)
:: -movflags faststart -> Optimitza el vídeo per a streaming
:: -max_muxing_queue_size 1024 -> A causa d'un bug, sense aquesta opció de vegades el compressor es penja
:: -metadata title="%title_long%" -> Defineix el títol del vídeo
:: -metadata date="%year%" -> Defineix l'any del vídeo
:: -metadata artist="%author%" -> Defineix l'autor del vídeo
:: -metadata genre="%genre%" -> Defineix el gènere del vídeo
:: "%output%" -> Nom del fitxer resultant
ffmpeg\bin\ffmpeg -i "%raw%" -map_metadata -1 -map_chapters -1 -pix_fmt yuv420p -vf ass="%subtitles%" -c:v libx264 -preset %preset% -profile:v high -level 4.1 -crf %crf% -ac 2 -c:a aac -b:a 128k -movflags faststart -max_muxing_queue_size 1024 -metadata title="%title_long%" -metadata date="%year%" -metadata artist="%author%" -metadata genre="%genre%" "%output%"

IF %ERRORLEVEL% EQU 0 (
	ECHO El procés ha finalitzat correctament!
) ElSE (
	ECHO El procés ha finalitzat amb error!
)

PAUSE
EXIT
