% --------------------------------------------------------------------------------------- % 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{', ", @, \#, \$, \%, \&, *, [, ], ?, 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}