% ---------------------------------------------------------------------------------------
%   CONFIGURACIÓN DEL DOCUMENTO
% ---------------------------------------------------------------------------------------
% \documentclass define el tipo de documento y las opciones base.
% - 11pt: Tamaño de fuente base. Un buen equilibrio entre densidad y legibilidad.
% - a4paper: Define el tamaño del papel estándar internacional.
\documentclass[11pt, a4paper]{article}


% %%% --- IMPORTACIÓN DE PAQUETES --- %%%
% Los paquetes añaden nuevas funcionalidades a LaTeX.

% --- Paquetes Esenciales ---
\usepackage[utf8]{inputenc}             % Permite escribir caracteres UTF-8 (acentos, ñ) directamente.
\usepackage[T1]{fontenc}                % Codificación de fuentes moderna para una correcta visualización y copiado de PDF.
\usepackage[spanish,es-noshorthands]{babel} % Soporte para el idioma español. La opción 'es-noshorthands' es
                                            % CRÍTICA para evitar conflictos con otros paquetes.

% --- Configuración de Página y Diseño ---
\usepackage{geometry}                   % Para configurar los márgenes y el diseño de la página.
\usepackage{graphicx}                   % Para incluir imágenes (\includegraphics).
\usepackage{fancyhdr}                   % Para personalizar encabezados y pies de página.
\usepackage{xcolor}                     % Para usar colores por nombre o código (HTML, RGB, etc.).
\usepackage{float}                      % Proporciona el especificador [H] para "flotar aquí exactamente".

% --- Tipografía y Estilo de Texto ---
% \usepackage{firasans}                 % EJEMPLO: Fuente Sans-Serif moderna (mantener comentada si no está instalada).
\usepackage{textcomp}                   % Provee símbolos adicionales como el de copyright.
\usepackage{fontawesome5}               % Permite usar iconos de Font Awesome (ej: \faInfoCircle).

% --- Tablas, Listas y Cajas ---
\usepackage{booktabs}                   % Para crear tablas de aspecto profesional (\toprule, \midrule, \bottomrule).
\usepackage{longtable}                  % Para tablas que pueden ocupar varias páginas.
\usepackage{tabularx}                   % Para tablas con columnas de ancho flexible que ocupan todo el ancho del texto.
\usepackage{array}                      % Herramientas avanzadas para columnas en tablas.
\usepackage{enumitem}                   % Para un control avanzado sobre el formato de las listas (itemize, enumerate).
\usepackage{tcolorbox}                  % Para crear cajas de texto coloreadas y personalizables.
\usepackage{titlesec}                   % Para personalizar el formato de los títulos de sección (\section, \subsection).
\usepackage{titletoc}                   % Control sobre la tabla de contenidos.

% --- Utilidades y Enlaces ---
\usepackage{hyperref}                   % Para crear hipervínculos dentro del documento y a URLs externas.
                                        % Es una buena práctica cargarlo al final.


% %%% --- CONFIGURACIÓN DE GEOMETRÍA DE LA PÁGINA --- %%%
% Se definen los márgenes y espacios para el encabezado/pie de página.
\geometry{
  a4paper,          % Tamaño de papel
  margin=2.5cm,     % Margen uniforme para todos los lados
  headheight=15pt,  % Altura reservada para el encabezado
  footskip=30pt     % Distancia desde el final del texto hasta el pie de página
}


% %%% --- PALETA DE COLORES PERSONALIZADA --- %%%
% Se define una paleta de colores corporativa para mantener la consistencia visual.
% Se usa el modelo HTML para una fácil selección desde herramientas de diseño.
\definecolor{WarlockRed}{HTML}{C11919}
\definecolor{WarlockGold}{HTML}{ECD125}
\definecolor{WarlockDark}{HTML}{212325}
\definecolor{WarlockGray}{HTML}{333333}
\definecolor{WarlockLightGray}{HTML}{F5F5F5}
\definecolor{WarlockBlue}{HTML}{005A9B}
\definecolor{InfoBlue}{HTML}{E7F3FE}
\definecolor{WarnYellow}{HTML}{FFFBE6}
\definecolor{WarnBorder}{HTML}{FFBE0B}

% Se establece el color de texto por defecto para todo el documento.
\color{WarlockGray}


% %%% --- CONFIGURACIÓN DE HIPERVÍNCULOS --- %%%
% Se personaliza la apariencia de los enlaces generados por 'hyperref'.
\hypersetup{
    colorlinks=true,                  % Los enlaces serán coloreados en lugar de encajonados.
    linkcolor=WarlockRed,             % Color para enlaces internos (a secciones, figuras, etc.).
    filecolor=WarlockRed,             % Color para enlaces a archivos locales.
    urlcolor=WarlockRed,              % Color para enlaces a URLs externas.
    pdftitle={Warlock-Studio 3.0 Guía de Usuario 6 Documentación Técnica}, % Metadatos del PDF.
    pdfauthor={Iván Eduardo Chavez Ayub (Revisado por IA)}             % Metadatos del PDF.
}


% %%% --- ESTILO DE TÍTULOS DE SECCIÓN --- %%%
% Se usa 'titlesec' para definir un estilo personalizado para las secciones.
% \titleformat{command}[forma]{formato}{etiqueta}{separación}{código-antes}
\titleformat{\section}
  {\normalfont\Large\bfseries\color{WarlockRed}} % Formato del título: Fuente normal, grande, negrita, color rojo.
  {\thesection.}                                 % Etiqueta: El número de la sección seguido de un punto.
  {1em}                                          % Separación horizontal entre la etiqueta y el título.
  {}                                             % Código a ejecutar antes del título (en este caso, ninguno).

\titleformat{\subsection}
  {\normalfont\large\bfseries\color{WarlockRed!70!black}} % Similar a \section, pero con un color más oscuro.
  {\thesubsection.}
  {1em}
  {}

% \titlespacing*{command}{espacio-izq}{espacio-arriba}{espacio-abajo}
\titlespacing*{\section}
  {0pt}                 % Espaciado a la izquierda del título.
  {3.5ex plus 1ex minus .2ex} % Espaciado vertical ANTES del título (con flexibilidad).
  {2.3ex plus .2ex}     % Espaciado vertical DESPUÉS del título (con flexibilidad).


% %%% --- DEFINICIÓN DE CAJAS DE TEXTO PERSONALIZADAS --- %%%
% Se usa 'tcolorbox' para crear entornos de "cajas" para información y advertencias.
\tcbuselibrary{skins, breakable, shadows} % Se cargan bibliotecas adicionales para más estilos.
                                          % 'breakable' permite que las cajas se dividan entre páginas.
                                          % 'shadows' añade efectos de sombra.

% Caja para información general.
\newtcolorbox{infobox}{
    colback=InfoBlue,                       % Color de fondo de la caja.
    colframe=WarlockBlue,                   % Color del borde.
    fonttitle=\bfseries,                    % Fuente del título de la caja (negrita).
    coltitle=WarlockBlue,                   % Color del texto del título.
    title=\faInfoCircle\hspace{0.5em} Información, % Contenido del título (icono + texto).
    breakable,                              % Permite que la caja se parta entre páginas.
    pad at break=2mm,                       % Espaciado interno cuando la caja se rompe.
    enhanced,                               % Activa modos de renderizado avanzados.
    drop shadow={WarlockGray!50!white}      % Añade una sombra sutil.
}

% Caja para advertencias importantes.
\newtcolorbox{warnbox}{
    colback=WarnYellow,
    colframe=WarnBorder,
    fonttitle=\bfseries,
    coltitle=WarnBorder!80!black,
    title=\faExclamationTriangle\hspace{0.5em} Advertencia,
    breakable,
    pad at break=2mm,
    enhanced,
    drop shadow={WarnBorder!50!white}
}

% Comando personalizado para formatear código en línea.
% \newcommand{nombre}[argumentos]{definición}
\newcommand{\inlinecode}[1]{\colorbox{WarlockLightGray}{\small\texttt{#1}}}


% %%% --- CONFIGURACIÓN DE ENCABEZADO Y PIE DE PÁGINA --- %%%
% Se usa 'fancyhdr' para controlar el contenido de encabezados y pies.
\pagestyle{fancy}
\fancyhf{} % Limpia todos los campos del encabezado y pie de página.

% \fancyhead[L/C/R]{...} define el contenido de la cabecera (Izquierda, Centro, Derecha).
\fancyhead[L]{\textit{Warlock-Studio 3.0}}
\fancyhead[R]{\leftmark} % \leftmark muestra el nombre de la sección actual.

% \fancyfoot[L/C/R]{...} define el contenido del pie de página.
\fancyfoot[L]{\includegraphics[height=0.8cm]{logo.png}} % Asume que 'logo.png' está en la misma carpeta.
\fancyfoot[C]{\thepage} % Muestra el número de página actual.
\fancyfoot[R]{\textcopyright~2025 Warlock-Studio}

% Se definen los grosores de las líneas de separación.
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}

% Se redefine cómo se genera la marca de sección para que incluya el número.
\renewcommand{\sectionmark}[1]{\markboth{\thesection. #1}{}}


% =======================================================================================
%   INICIO DEL CUERPO DEL DOCUMENTO
% =======================================================================================
\begin{document}

% %%% --- PÁGINA DE TÍTULO --- %%%
% Se crea una portada impactante y profesional usando un 'tcolorbox' a toda página.
\begin{titlepage}
    \begin{tcolorbox}[
        %--- Estilo de la caja ---
        colback=WarlockDark,                    % Fondo oscuro.
        colframe=WarlockGold,                   % Borde dorado.
        sharp corners,                          % Esquinas rectas en lugar de redondeadas.
        boxrule=1.5pt,                          % Grosor del borde.
        %--- Alineación y Tamaño ---
        halign=center,                          % Alineación horizontal del contenido.
        valign=center,                          % Alineación vertical del contenido.
        height=\dimexpr\textheight-1cm\relax    % Altura de la caja (toda la altura del texto menos 1cm).
      ]
      %--- Contenido de la Portada ---
      \centering % Centra los elementos internos.

      \includegraphics[width=0.5\textwidth]{logo.png}\par % Logo.

      \vfill % Espacio flexible para empujar el contenido.

      \color{white} % Cambia el color del texto a blanco para contraste.

      {\Huge\bfseries Warlock-Studio\par}
      \vspace{0.7cm} % Espacio vertical fijo.
      {\Large -- Manual Técnico del Usuario y Documentación --\par}
      \vspace{0.2cm}
      {\Large Versión 3.0\par}

      \vfill % Otro espacio flexible.

      {\large Iván Eduardo Chavez Ayub\par}
      \href{https://github.com/Ivan-Ayub97}{\texttt{\color{WarlockGold}@Ivan-Ayub97 en GitHub}}\par % Enlace con estilo.

      \vspace{1.5cm}

      {\large \today\par} % Muestra la fecha de compilación.
    \end{tcolorbox}
    \thispagestyle{empty} % Oculta el encabezado y pie de página en la portada.
\end{titlepage}


% %%% --- RESUMEN Y TABLA DE CONTENIDOS --- %%%
\pagestyle{fancy} % Restaura el estilo de página 'fancy' después de la portada.

% El entorno 'abstract' crea un resumen del documento.
\begin{abstract}
\noindent % Evita la sangría en la primera línea.
Este documento es una guía técnica exhaustiva para Warlock-Studio 3.0. La información ha sido validada y enriquecida con un análisis profundo del código fuente para proporcionar detalles precisos sobre su arquitectura, una guía de optimización avanzada y un manual de solución de problemas robusto.
\end{abstract}

\newpage % Salto de página antes de la tabla de contenidos.
\tableofcontents % Genera la tabla de contenidos automáticamente.
\newpage % Salto de página después de la tabla de contenidos.


% %%% --- CUERPO PRINCIPAL DEL MANUAL --- %%%

% --- Sección 1: Introducción ---
\section{Introducción}
Warlock-Studio es una suite de mejora y escalado de medios impulsada por IA, diseñada para ofrecer resultados de alta calidad a través de una interfaz de usuario accesible. La versión 3.0 introduce mejoras clave en gestión de GPU, manejo de errores y eficiencia de rendimiento. Se consolida como una herramienta poderosa para creadores de contenido profesionales.

\subsection{Novedades en la Versión 3.0}
La última versión aporta las siguientes mejoras clave:
% Se usa 'itemize' para listas con viñetas. [leftmargin=*] alinea la lista con el margen del párrafo.
\begin{itemize}[leftmargin=*]
    \item \textbf{Soporte mejorado de modelos IA:} Nuevos modelos de última generación como Real-ESRGAN, RIFE y GFPGAN se han integrado para un superior escalado e interpolación.
    \item \textbf{Gestión avanzada de GPU:} Mejora en el manejo de errores para optimizar el rendimiento incluso en configuraciones de VRAM más bajas.
    \item \textbf{Gestión optimizada de memoria:} Incluye técnicas proactivas de optimización de memoria y mejor soporte de hilos para un procesamiento fluido.
    \item \textbf{Mejora en GUI y preferencias de usuario:} Una interfaz más amigable con opciones de configuración mejoradas y actualizaciones dinámicas en tiempo real.
    \item \textbf{Codificación de video mejorada:} Soporta múltiples codificadores acelerados por hardware de NVIDIA, AMD e Intel para un rendimiento óptimo.
\end{itemize}

\subsection{Características Principales}
\begin{itemize}[leftmargin=*]
    \item \textbf{Escalado por IA:} Utiliza modelos de última generación como Real-ESRGAN, BSRGAN y SRVGGNetCompact.
    \item \textbf{Interpolación de Fotogramas:} Aumenta los FPS o crea efectos de cámara lenta fluidos usando modelos RIFE.
    \item \textbf{Reducción de Ruido:} Incluye modelos IRCNN dedicados a la limpieza de imágenes y videos.
    \item \textbf{Restauración de Rostros:} Modelo GFPGAN para mejorar y restaurar rostros en fotos.
    \item \textbf{Aceleración por Hardware:} Usa el motor ONNX Runtime con el proveedor DirectML (\texttt{DmlExecutionProvider}) para una aceleración por GPU compatible con DirectX 12.
    \item \textbf{Codificación de Video Avanzada:} Soporte para codificadores acelerados por hardware de NVIDIA (NVENC), AMD (AMF) e Intel (QSV).
\end{itemize}


% --- Sección 2: Instalación ---
\section{Instalación y Arquitectura del Programa}

\subsection{Requisitos del Sistema}
% Se usa 'table' para tablas que no se dividen entre páginas. [H] fuerza su posición.
\begin{table}[H]
    \centering % Centra la tabla en la página.
    % 'tabular' es el entorno que dibuja la tabla. {ll} define dos columnas alineadas a la izquierda.
    \begin{tabular}{ll}
        \toprule % Línea superior de la tabla (de booktabs).
        \textbf{Componente} 6 \textbf{Requisito} \\
        \midrule % Línea media de la tabla (de booktabs).
        Sistema Operativo 6 Windows 10 (64-bit) o posterior \\
        Memoria RAM 6 8 GB (Mínimo), 16 GB (Recomendado) \\
        Tarjeta Gráfica (GPU) 6 Compatible con \textbf{DirectX 12}. \textbf{Recomendado: 4+ GB VRAM}. \\
        Almacenamiento 6 2 GB de espacio libre. Se recomienda un SSD para un mejor rendimiento. \\
        \bottomrule % Línea inferior de la tabla (de booktabs).
    \end{tabular}
    \caption{Requisitos de hardware y software para Warlock-Studio 3.0.}
\end{table}

\subsection{Estructura de Archivos y Dependencias}
\begin{infobox}
Warlock-Studio es una aplicación autocontenida. Los siguientes componentes se incluyen en la instalación y no requieren acción por parte del usuario.
\end{infobox}
\begin{itemize}[leftmargin=*]
    \item \inlinecode{ffmpeg.exe:} Ubicado en la carpeta \texttt{Assets}, es el motor para toda la manipulación, codificación y decodificación de video.
    \item \inlinecode{exiftool.exe:} También en \texttt{Assets}, se utiliza para leer y escribir metadatos (EXIF, XMP), asegurando que la información original del archivo se preserve.
    \item \textbf{Modelos IA:} Los modelos en formato \texttt{.onnx} se encuentran en la carpeta \texttt{AI-onnx}.
    \item \textbf{Preferencias de Usuario:} Se guarda un archivo \inlinecode{Warlock-Studio_3.0_UserPreference.json} en la carpeta de \textbf{Documentos} del usuario.
    \item \textbf{Registros (Logs):} Los archivos de registro se almacenan en \texttt{Documentos\textbackslash Warlock-Studio_3.0_Logs}.
\end{itemize}


% --- Sección 3: Guía de Modelos ---
\section{Guía Detallada de Modelos de IA}
La elección del modelo de IA es el factor más importante para la calidad y el tiempo de procesamiento.

\subsection{Tabla Comparativa de Modelos}
La siguiente tabla detalla el uso relativo de VRAM de cada modelo.
% 'longtable' es para tablas que pueden ocupar varias páginas. La definición de columnas es similar a 'tabular'.
% Se usa 'p{ancho}' para la última columna, creando un párrafo de ancho fijo con ajuste de línea automático.
\begin{longtable}{l l c c p{6.5cm}}
\toprule
\textbf{Modelo} 6 \textbf{Función Principal} 6 \textbf{Escala} 6 \textbf{Peso VRAM} 6 \textbf{Caso de Uso Recomendado} \\
\midrule
\endhead % \endhead define el encabezado que se repetirá en cada página.

\multicolumn{5}{c}{\textit{Modelos de Reducción de Ruido (Denoising)}} \\
\midrule
\texttt{IRCNN\_Mx1} 6 Denoise 6 x1 6 4.0 6 Ruido moderado. \\
\texttt{IRCNN\_Lx1} 6 Denoise 6 x1 6 4.0 6 Ruido intenso. \\
\midrule
\multicolumn{5}{c}{\textit{Modelos de Escalado - Alta Calidad (Lentos)}} \\
\midrule
\texttt{BSRGANx4} 6 Upscale 6 x4 6 0.6 6 Fotografías realistas. Excelente detalle fino. \\
\texttt{BSRGANx2} 6 Upscale 6 x2 6 0.7 6 Similar a x4 pero para un escalado menor. \\
\texttt{RealESRGANx4} 6 Upscale 6 x4 6 0.6 6 Uso general, bueno para texturas. \\
\texttt{RealESRNetx4} 6 Upscale 6 x4 6 2.2 6 Alternativa a RealESRGAN, puede ser más rápido. \\
\midrule
\multicolumn{5}{c}{\textit{Modelos de Escalado - Alta Velocidad (Ligeros)}} \\
\midrule
\texttt{RealESR\_Gx4} 6 Upscale 6 x4 6 2.2 6 Escalado rápido, ideal para videos. \\
\texttt{RealESR\_Animex4} 6 Upscale 6 x4 6 2.2 6 Optimizado para anime y dibujos animados. \\
\midrule
\multicolumn{5}{c}{\textit{Modelos de Restauración de Rostros}} \\
\midrule
\texttt{GFPGAN} 6 Restablecer 6 x1 6 1.8 6 Mejora y restauración de rostros. \\
\midrule
\multicolumn{5}{c}{\textit{Modelos de Interpolación de Fotogramas (Solo Video)}} \\
\midrule
\texttt{RIFE} 6 Interpolar 6 N/A 6 N/A 6 Máxima calidad de interpolación. \\
\texttt{RIFE\_Lite} 6 Interpolar 6 N/A 6 N/A 6 Versión más rápida, ideal para GPUs con c 4 GB VRAM. \\
\bottomrule
\caption{Guía de selección de modelos de IA y su impacto en VRAM.}
\label{tab:modelos} % \label para poder referenciar la tabla con \ref{tab:modelos}.
\end{longtable}


% --- Sección 4: Optimización ---
\section{Configuración y Optimización del Rendimiento}

\subsection{Parámetros Críticos de Rendimiento}
\begin{itemize}[leftmargin=*]
    \item \textbf{Input Resolution \%:} El ajuste más efectivo para la velocidad. Reduce la resolución antes de procesarla con IA. Un valor entre \textbf{50\% y 75\%} suele ser ideal.
    \item \textbf{GPU VRAM Limiter (GB):} Defina la VRAM de su GPU. Se usa para calcular el tamaño de los \textit{tiles} de procesamiento y evitar errores de memoria.
    \item \textbf{AI Multithreading:} Solo para videos. Procesa varios fotogramas en paralelo. Acelera el proceso pero consume más VRAM y CPU.
    \item \textbf{AI Blending:} Combina la imagen original con la procesada. Útil para reducir artefactos cuando se usa un \textit{Input Resolution} bajo.
    \item \textbf{Generación de fotogramas:} Para modelos RIFE, permite crear fotogramas interpolados para mayor FPS o efectos de cámara lenta.
\end{itemize}

\subsection{El Fichero de Preferencias de Usuario}
El archivo \inlinecode{Warlock-Studio_3.0_UserPreference.json} guarda su configuración.
% Se usa 'tabularx' para que la tabla ocupe automáticamente el 100% del ancho del texto.
% La columna 'X' es una columna flexible que se expande para llenar el espacio disponible.
\begin{table}[H]
    \centering
    \small % Reduce el tamaño de la fuente dentro de la tabla.
    \begin{tabularx}{\textwidth}{l X}
        \toprule
        \textbf{Clave JSON} 6 \textbf{Descripción} \\
        \midrule
        \texttt{default\_AI\_model} 6 El último modelo de IA seleccionado. \\
        \texttt{default\_AI\_multithreading} 6 El número de hilos de procesamiento para video. \\
        \texttt{default\_gpu} 6 La última GPU seleccionada (Auto, GPU 1, etc.). \\
        \texttt{default\_keep\_frames} 6 Si se deben conservar los fotogramas de video ("ON" o "OFF"). \\
        \texttt{default\_image\_extension} 6 Extensión de imagen por defecto (\texttt{.png}, \texttt{.jpg}, etc.). \\
        \texttt{default\_video\_extension} 6 Extensión de video por defecto (\texttt{.mp4}, \texttt{.mkv}, etc.). \\
        \texttt{default\_video\_codec} 6 El codificador de video por defecto (x264, hevc\_nvenc, etc.). \\
        \texttt{default\_blending} 6 El nivel de mezcla seleccionado (Low, Medium, High). \\
        \texttt{default\_output\_path} 6 La última ruta de salida seleccionada. \\
        \texttt{default\_input\_resize\_factor} 6 El valor del porcentaje de resolución de entrada. \\
        \texttt{default\_output\_resize\_factor} 6 El valor del porcentaje de resolución de salida. \\
        \texttt{default\_VRAM\_limiter} 6 El valor del limitador de VRAM de la GPU. \\
        \bottomrule
    \end{tabularx}
    \caption{Claves guardadas en el archivo de preferencias del usuario.}
\end{table}

% --- Sección 5: Solución de Problemas ---
\section{Guía Avanzada de Solución de Problemas}
\begin{warnbox}
La causa \textbf{Número 1} de errores son los \textbf{caracteres especiales} en rutas y nombres de archivo. Evite usar: \texttt{', ", @, \#, \$, \%, \&amp;, *, [, ], ?, etc.}.
\end{warnbox}

% 'description' es para listas de definiciones.
% [style=nextline] coloca el texto en la línea siguiente al término.
\begin{description}[leftmargin=*, style=nextline, itemsep=0.8em]
    \item[\faBan\ Error: "FFmpeg encoding failed: Invalid argument"]
        \textbf{Causa:} Nombre de archivo o ruta no válida.
        \textbf{Solución:} Renombre el archivo y/o la carpeta eliminando caracteres especiales.

    \item[\faMemory\ Error: "out of memory" o cierre inesperado]
        \textbf{Causa:} La GPU se quedó sin memoria de video (VRAM).
        \textbf{Solución:}
        % 'enumerate' es para listas numeradas. 'nosep' reduce el espacio entre ítems.
        \begin{enumerate}[nosep, leftmargin=*]
            \item Reduzca el \textbf{VRAM Limiter} a un valor igual o inferior al de su GPU.
            \item Baje el \textbf{Input Resolution \%} a 75\% o menos.
            \item Para videos, disminuya los hilos de \textbf{AI Multithreading} o apáguelo.
            \item La aplicación intentará recuperarse de este error automáticamente.
        \end{enumerate}

    \item[\faTachometerAlt\ Error: "cannot convert float NaN to integer"]
        \textbf{Causa:} Timeout del driver de la GPU, a menudo por sobrecarga o sobrecalentamiento.
        \textbf{Solución:} Reinicie el proceso \textbf{sin borrar la carpeta de fotogramas}. El programa reanudará el trabajo donde se quedó.

    \item[\faVolumeMute\ Problema: Video de salida sin audio]
        \textbf{Causa:} El video original no tenía audio, se usó un modo \textit{Slowmotion} o el códec de audio era incompatible.
        \textbf{Solución:} El programa intenta copiar el audio, si falla, lo re-codifica a AAC. Si todo falla, guarda el video sin audio. Usar \inlinecode{.mkv} en la salida puede ayudar.

    \item[\faQuestionCircle\ Problema: La aplicación no se abre]
        \textbf{Causa:} Configuración corrupta, falta de permisos o error del entorno.
        \textbf{Solución:}
        \begin{enumerate}[nosep, leftmargin=*]
            \item Elimine el archivo \inlinecode{Warlock-Studio_3.0_UserPreference.json} en su carpeta de \textbf{Documentos}.
            \item Revise los archivos de registro en \texttt{Documentos\textbackslash Warlock-Studio_3.0_Logs}.
            \item Asegúrese de que sus controladores de GPU estén actualizados.
        \end{enumerate}

    \item[\faExclamationTriangle\ Problema: La interpolación de fotogramas no funciona]
        \textbf{Causa:} Modelos RIFE no seleccionados o formato de video incompatible.
        \textbf{Solución:} Asegúrese de haber seleccionado un modelo RIFE (RIFE o RIFE\_Lite) y que la opción de generación de fotogramas esté correctamente configurada.
\end{description}

% --- Sección 6: Arquitectura ---
\section{Arquitectura y Procesos Avanzados}

\subsection{Motor de Inferencia y Aceleración por Hardware}
Warlock-Studio utiliza \textbf{ONNX Runtime} con el proveedor \textbf{DirectML} (\inlinecode{DmlExecutionProvider}). Este traduce las operaciones de IA a llamadas de \textbf{DirectX 12}, garantizando una amplia compatibilidad con GPUs de NVIDIA, AMD e Intel.

\subsection{Sistema de Tiles y Gestión de Memoria}
Para manejar archivos de alta resolución, la aplicación divide cada fotograma en fragmentos (\textit{tiles}). El tamaño de estos se calcula dinámicamente usando el \textbf{VRAM Limiter}. Además, se invoca al recolector de basura de Python (\inlinecode{gc.collect()}) para forzar la liberación de memoria y garantizar estabilidad.

\subsection{Funcionalidad de Reanudación y Checkpoints}
Si un proceso de video se interrumpe, los fotogramas procesados se guardan. Al reiniciar la tarea, la función \inlinecode{check\_video\_upscaling\_resume} detecta estos archivos y continúa el trabajo desde donde falló, ahorrando tiempo.

\subsection{Escritura Asíncrona de Fotogramas}
Durante el escalado de video, los fotogramas procesados se envían a un hilo de escritura separado. Esto permite a la GPU procesar el siguiente lote sin esperar a que la escritura en disco (más lenta) termine, maximizando el rendimiento.

\subsection{Pipeline de Interpolación de Fotogramas}
Los modelos RIFE utilizan un pipeline de interpolación especializado que analiza el movimiento entre fotogramas para generar fotogramas intermedios suaves. Esto permite mayores tasas de cuadros o efectos de cámara lenta con artefactos mínimos.


% =======================================================================================
%   FIN DEL DOCUMENTO
% =======================================================================================
\end{document}
