Add files via upload
@@ -0,0 +1,13 @@
|
||||
Download the ZIP file containing the bin for FFmpeg (which includes ffmpeg.exe, ffplay.exe, and ffprobe.exe)
|
||||
Extract it, and place the exe files in this directory.
|
||||
You can get it FFmpeg 7.1.1 from the official repository:
|
||||
https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip
|
||||
or from my Google Drive:
|
||||
https://drive.google.com/file/d/1hduBRKnJnaXdaCvGGt2bQUE2w9YGOK4l/view?usp=sharing
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Download the ZIP file containing the bin for ExifTool (which includes exiftool.exe)
|
||||
Extract it, and place the exe files in this directory.
|
||||
You can get it ExifTool 13.32.64 from the official repository:
|
||||
https://exiftool.org/exiftool-13.32_64.zip
|
||||
|
After Width: | Height: | Size: 430 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 645 KiB |
|
After Width: | Height: | Size: 105 KiB |
@@ -0,0 +1,200 @@
|
||||
## Version 2.2
|
||||
|
||||
**Release date:** 7 July 2025
|
||||
|
||||
### 1. Major Enhancements and Stability Overhaul
|
||||
|
||||
1.1 **Comprehensive Logging System**
|
||||
|
||||
- Implemented a full-featured `logging` system that writes to files in the user's `Documents` folder (`warlock_studio.log` and `error_log.txt`). This provides detailed diagnostics for debugging without relying solely on console output.
|
||||
- A unified `log_and_report_error` function centralizes error handling, ensuring all critical issues are both logged and displayed to the user.
|
||||
|
||||
1.2 **Proactive Environment Validation**
|
||||
|
||||
- The application now performs pre-flight checks before processing begins to prevent common failures.
|
||||
- Includes validation for Python version, required modules (`validate_environment`), FFmpeg availability, disk space, and available RAM (`validate_system_requirements`).
|
||||
- Verifies that all input file paths exist and are accessible (`validate_file_paths`) and that the output directory is writable (`validate_output_path`).
|
||||
|
||||
1.3 **Resilient Video Encoding Pipeline**
|
||||
|
||||
- The entire `video_encoding` function was overhauled for maximum reliability.
|
||||
- **Codec Fallback:** The system now tests for hardware codec availability (NVENC, AMF, QSV) before encoding. If a selected hardware encoder is not functional, it automatically falls back to the highly compatible `libx264` software encoder.
|
||||
- **Robust Audio Handling:** Implements a fallback chain for audio processing. It first attempts to directly copy the audio stream; if that fails, it attempts to re-encode it; if that also fails, it finalizes the video without audio, ensuring a video file is always produced.
|
||||
|
||||
1.4 **Graceful Shutdown and Cleanup**
|
||||
|
||||
- Implemented `atexit` and `signal` handlers to ensure that temporary files are cleaned up and child processes are terminated safely, even on unexpected exits.
|
||||
- Replaced abrupt `process.kill()` calls with the more graceful `process.terminate()` to allow for cleaner process shutdown.
|
||||
|
||||
### 2. Performance and Memory Optimization
|
||||
|
||||
2.1 **Aggressive Memory Management**
|
||||
|
||||
- Video frame processing (`upscale_video_frames_async`) no longer holds large numbers of frames in RAM. It now writes small batches to disk and immediately calls the garbage collector (`gc.collect()`) to free memory, dramatically reducing the risk of crashes on long videos.
|
||||
|
||||
2.2 **Dynamic GPU VRAM Error Recovery**
|
||||
|
||||
- The AI orchestration logic can now recover from GPU "out of memory" errors during tiling. If an error is detected, it automatically reduces the tile resolution and retries the operation on that specific frame, preventing a total process failure.
|
||||
|
||||
### 3. Critical Bug Fixes
|
||||
|
||||
3.1 **Resolved Video Encoding Race Condition**
|
||||
|
||||
- Fixed a critical bug where video encoding could start before all frame-writing threads were complete. The system now tracks all writer threads and explicitly waits for them to finish (`thread.join()`) before beginning the final video encoding, preventing corrupted or incomplete videos.
|
||||
|
||||
3.2 **Corrected Persistent Stop Flag**
|
||||
|
||||
- The `stop_thread_flag` is now reset (`.clear()`) at the start of each "Make Magic" execution, fixing a bug where a previously stopped job would prevent a new one from running.
|
||||
|
||||
3.3 **Eliminated Status Update Race Condition**
|
||||
|
||||
- Implemented a `threading.Lock` (`global_status_lock`) to protect shared flags that update the GUI. This prevents race conditions where multiple threads could attempt to modify the status simultaneously.
|
||||
|
||||
### 4. UI / UX Refinements
|
||||
|
||||
4.1 **Updated Splash Screen**
|
||||
|
||||
- Reduced splash screen duration to 10 seconds for a faster application start-up.
|
||||
- Corrected asset path to `Assets/banner.png` for proper display.
|
||||
|
||||
4.2 **New Application Theme**
|
||||
|
||||
| Element | New Value | Old Value (v2.1) |
|
||||
| :---------------- | :--------------- | :------------------- |
|
||||
| App name | `#FF0000` (Red) | `#ECD125` (Gold) |
|
||||
| Widget background | `#5A5A5A` (Grey) | `#960707` (Dark Red) |
|
||||
| Accent/Border | Gold & Red | Blue & Red |
|
||||
|
||||
### 5. Codebase Health and Maintainability
|
||||
|
||||
5.1 **Enhanced Checkpointing and Recovery**
|
||||
|
||||
- Added functions (`create_checkpoint`, `load_checkpoint`) to save and resume the progress of video frame processing, allowing recovery from interruptions.
|
||||
|
||||
5.2 **Hardened Core Methods**
|
||||
|
||||
- Core methods in AI classes now include checks for `None` inputs and feature default fallbacks (`case _:`) in `match` statements to prevent unexpected errors with unsupported data.
|
||||
|
||||
## Version 2.1
|
||||
|
||||
**Release date:** 23 June 2025
|
||||
|
||||
### 1. Major Enhancements and Stability Overhaul
|
||||
|
||||
1.1 **Robust Error Handling**
|
||||
|
||||
- Model loading (`AI_upscale`, `AI_interpolation`) wrapped in `try…except FileNotFoundError, OSError`; meaningful error messages propagate to GUI.
|
||||
- `extract_video_frames()` validates file existence, `cv2.VideoCapture.isOpened()`, and frame count > 0.
|
||||
- `video_encoding()` captures `subprocess.CalledProcessError`, logs `stderr`, and continues with fallback strategies.
|
||||
- Audio passthrough failures now trigger a silent audio‑less encode instead of total job abort.
|
||||
|
||||
1.2 **Safe Thread and Process Management**
|
||||
|
||||
- Deprecated error‑raising thread stop replaced with `threading.Event` (`stop_thread_flag`) polled at defined checkpoints.
|
||||
|
||||
1.3 **Resilient Core Processing**
|
||||
|
||||
- `copy_file_metadata()` now verifies `exiftool.exe` availability and the existence of source/target before execution.
|
||||
|
||||
### 2. UI / UX Refinements
|
||||
|
||||
2.1 **Refined Colour Palette**
|
||||
|
||||
| Element | New Value |
|
||||
| ----------------- | ------------------------------- |
|
||||
| App name | `#ECD125` |
|
||||
| Widget background | `#960707` |
|
||||
| Active border | Red (same as widget background) |
|
||||
|
||||
### 3. Code‑base Maintainability
|
||||
|
||||
3.1 **Improved Code Organisation**
|
||||
|
||||
- File‑extension lists extracted to `filetypes.py` as `SUPPORTED_IMAGE_EXTENSIONS`, `SUPPORTED_VIDEO_EXTENSIONS`.
|
||||
|
||||
3.2 **Dependency and Initialisation**
|
||||
|
||||
- Added imports: `shutil.move`, `subprocess.CalledProcessError`, `threading.Event`.
|
||||
- Global variables initialised in `init_globals()` for deterministic start‑up.
|
||||
|
||||
---
|
||||
|
||||
## Version 2.0
|
||||
|
||||
**Release date:** 6 June 2025
|
||||
|
||||
### 1. Major Features
|
||||
|
||||
1.1 **AI Frame Interpolation Support** (`AI_interpolation` class)
|
||||
|
||||
- Supports RIFE‑based ONNX models; generates 1 (×2), 3 (×4), or 7 (×8) intermediate frames.
|
||||
- Provides both real‑time preview and batch processing modes.
|
||||
- Integrates with `FrameScheduler` for temporal upscaling pipelines.
|
||||
|
||||
1.2 **RIFE Models Integration**
|
||||
|
||||
- Added **RIFE** and **RIFE_Lite** to model repository.
|
||||
- `RIFE_models_list` enumerates available checkpoints; `AI_models_list` now merges SRVGGNetCompact, BSRGAN, IRCNN, and RIFE families.
|
||||
|
||||
### 2. Enhancements
|
||||
|
||||
2.1 **Visual/UI Redesign**
|
||||
|
||||
- Application renamed to **“Warlock‑Studio”** (with hyphen).
|
||||
- New dark palette (`#121212`, `#454242`) with bright white text (`#FFFFFF`) and accent red (`#FF0E0E`).
|
||||
|
||||
2.2 **Version‑Specific User Preferences**
|
||||
|
||||
- User configuration stored as `Warlock-Studio_<major>.<minor>_UserPreference.json` to avoid backward‑compatibility clashes.
|
||||
|
||||
2.3 **Modular and Scalable Layout System**
|
||||
|
||||
- Added GUI constants defined in `layout_constants.py` (e.g., `OFFSET_Y_OPTIONS`, `COLUMN_1_5`).
|
||||
|
||||
2.4 **Extended File‑Type Compatibility**
|
||||
|
||||
- Updated `SUPPORTED_FILE_EXTENSIONS` and `SUPPORTED_VIDEO_EXTENSIONS` to include modern codecs (e.g., HEIC, AVIF, WebM).
|
||||
|
||||
2.5 **Improved GPU Execution Support**
|
||||
|
||||
- `provider_options` enumerates up to four DirectML devices (Auto, GPU 1 – GPU 4); selection persists across sessions.
|
||||
|
||||
### 3. Technical Refinements
|
||||
|
||||
3.1 **Model List Structure**
|
||||
|
||||
- Menu drop‑downs now grouped by category separated by `MENU_LIST_SEPARATOR` for readability.
|
||||
|
||||
3.2 **Advanced Interpolation Logic**
|
||||
|
||||
- Implements tree‑based frame generation (e.g., D→A‑B‑C) with dependency tracking to avoid redundant inference passes.
|
||||
|
||||
3.3 **Improved Numeric Precision and Post‑Processing**
|
||||
|
||||
- Normalisation uses 32‑bit floats with epsilon guarding; RGBA conversion paths optimised using `numexpr`.
|
||||
|
||||
### 4. UI / UX Refinements
|
||||
|
||||
4.1 **Resizable Message Dialogs** (`MessageBox`; Tk `resizable(True, True)`).
|
||||
4.2 **Improved Dialog Formatting** – uniform spacing, font hierarchy, and default‑value display.
|
||||
|
||||
### 5. Minor Fixes
|
||||
|
||||
- Corrected typo `ttext_color` → `text_color`.
|
||||
- Expanded inline comments and reorganised sections for clarity.
|
||||
|
||||
---
|
||||
|
||||
## Version 1.1
|
||||
|
||||
**Release date:** 20 May 2025
|
||||
|
||||
### 1. Major Improvements
|
||||
|
||||
1.1 **Program Start‑up Optimisation** – launch time reduced via lazy module loading.
|
||||
1.2 **Model Loading Improvements** – parallel prefetch and checksum verification.
|
||||
1.3 **General Performance Optimisation** – core refactor, improved I/O scheduling, and smarter resource allocation.
|
||||
|
||||
### 2. Minor Fixes
|
||||
|
||||
- User‑interface tweaks for better accessibility (focus indicators, tab order).
|
||||
@@ -0,0 +1,440 @@
|
||||
% =======================================================================================
|
||||
% WARLOCK-STUDIO 2.2 - USER MANUAL & TECHNICAL DOCUMENTATION
|
||||
% =======================================================================================
|
||||
% Manual Version: 5.0 (Final Documented Edition)
|
||||
% Author: Iván Eduardo Chavez Ayub (Reviewed and Improved by AI)
|
||||
%
|
||||
% This document is a robust and professional LaTeX template designed for
|
||||
% technical manuals. It includes a clear structure, custom styles, and a
|
||||
% configuration optimized for readability and aesthetics.
|
||||
% =======================================================================================
|
||||
|
||||
|
||||
% ---------------------------------------------------------------------------------------
|
||||
% DOCUMENT SETUP
|
||||
% ---------------------------------------------------------------------------------------
|
||||
% \documentclass defines the document type and base options.
|
||||
% - 11pt: Base font size. A good balance between density and readability.
|
||||
% - a4paper: Defines the standard international paper size.
|
||||
\documentclass[11pt, a4paper]{article}
|
||||
|
||||
|
||||
% %%% --- PACKAGE IMPORTS --- %%%
|
||||
% Packages add new functionalities to LaTeX.
|
||||
|
||||
% --- Essential Packages ---
|
||||
\usepackage[utf8]{inputenc} % Allows writing UTF-8 characters (like accents) directly.
|
||||
\usepackage[T1]{fontenc} % Modern font encoding for correct display and copying from PDF.
|
||||
\usepackage[english]{babel} % Support for the English language (hyphenation, etc.).
|
||||
|
||||
% --- Page Layout and Design ---
|
||||
\usepackage{geometry} % For configuring margins and page layout.
|
||||
\usepackage{graphicx} % For including images (\includegraphics).
|
||||
\usepackage{fancyhdr} % For customizing headers and footers.
|
||||
\usepackage{xcolor} % To use colors by name or code (HTML, RGB, etc.).
|
||||
\usepackage{float} % Provides the [H] specifier to "float exactly here".
|
||||
|
||||
% --- Typography and Text Style ---
|
||||
% \usepackage{firasans} % EXAMPLE: Modern Sans-Serif font (keep commented if not installed).
|
||||
\usepackage{textcomp} % Provides additional symbols like the copyright symbol.
|
||||
\usepackage{fontawesome5} % Allows using Font Awesome icons (e.g., \faInfoCircle).
|
||||
|
||||
% --- Tables, Lists, and Boxes ---
|
||||
\usepackage{booktabs} % For creating professional-looking tables (\toprule, \midrule, \bottomrule).
|
||||
\usepackage{longtable} % For tables that can span multiple pages.
|
||||
\usepackage{tabularx} % For tables with flexible-width columns that occupy the full text width.
|
||||
\usepackage{array} % Advanced tools for table columns.
|
||||
\usepackage{enumitem} % For advanced control over the format of lists (itemize, enumerate).
|
||||
\usepackage{tcolorbox} % For creating colored and customizable text boxes.
|
||||
\usepackage{titlesec} % For customizing the format of section titles (\section, \subsection).
|
||||
\usepackage{titletoc} % Control over the table of contents.
|
||||
|
||||
% --- Utilities and Links ---
|
||||
\usepackage{hyperref} % To create hyperlinks within the document and to external URLs.
|
||||
% It's good practice to load it last.
|
||||
|
||||
|
||||
% %%% --- PAGE GEOMETRY SETUP --- %%%
|
||||
% Defines the margins and spaces for the header/footer.
|
||||
\geometry{
|
||||
a4paper, % Paper size
|
||||
margin=2.5cm, % Uniform margin for all sides
|
||||
headheight=15pt, % Height reserved for the header
|
||||
footskip=30pt % Distance from the bottom of the text to the footer
|
||||
}
|
||||
|
||||
|
||||
% %%% --- CUSTOM COLOR PALETTE --- %%%
|
||||
% A corporate color palette is defined to maintain visual consistency.
|
||||
% The HTML model is used for easy selection from design tools.
|
||||
\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}
|
||||
|
||||
% Sets the default text color for the entire document.
|
||||
\color{WarlockGray}
|
||||
|
||||
|
||||
% %%% --- HYPERLINK CONFIGURATION --- %%%
|
||||
% Customizes the appearance of links generated by 'hyperref'.
|
||||
\hypersetup{
|
||||
colorlinks=true, % Links will be colored instead of boxed.
|
||||
linkcolor=WarlockRed, % Color for internal links (to sections, figures, etc.).
|
||||
filecolor=WarlockRed, % Color for links to local files.
|
||||
urlcolor=WarlockRed, % Color for links to external URLs.
|
||||
pdftitle={Warlock-Studio 2.2 User Manual & Technical Documentation}, % PDF metadata.
|
||||
pdfauthor={Iván Eduardo Chavez Ayub (Reviewed by AI)} % PDF metadata.
|
||||
}
|
||||
|
||||
|
||||
% %%% --- SECTION TITLE STYLE --- %%%
|
||||
% 'titlesec' is used to define a custom style for sections.
|
||||
% \titleformat{<command>}[<shape>]{<format>}{<label>}{<sep>}{<before-code>}
|
||||
\titleformat{\section}
|
||||
{\normalfont\Large\bfseries\color{WarlockRed}} % Title format: Normal font, Large, bold, red color.
|
||||
{\thesection.} % Label: The section number followed by a period.
|
||||
{1em} % Horizontal separation between the label and the title.
|
||||
{} % Code to execute before the title (none in this case).
|
||||
|
||||
\titleformat{\subsection}
|
||||
{\normalfont\large\bfseries\color{WarlockRed!70!black}} % Similar to \section, but with a darker color.
|
||||
{\thesubsection.}
|
||||
{1em}
|
||||
{}
|
||||
|
||||
% \titlespacing*{<command>}{<left-space>}{<before-space>}{<after-space>}
|
||||
\titlespacing*{\section}
|
||||
{0pt} % Space to the left of the title.
|
||||
{3.5ex plus 1ex minus .2ex} % Vertical space BEFORE the title (with flexibility).
|
||||
{2.3ex plus .2ex} % Vertical space AFTER the title (with flexibility).
|
||||
|
||||
|
||||
% %%% --- CUSTOM TEXT BOX DEFINITIONS --- %%%
|
||||
% 'tcolorbox' is used to create "box" environments for information and warnings.
|
||||
\tcbuselibrary{skins, breakable, shadows} % Additional libraries are loaded for more styles.
|
||||
% 'breakable' allows boxes to split across pages.
|
||||
% 'shadows' adds shadow effects.
|
||||
|
||||
% Box for general information.
|
||||
\newtcolorbox{infobox}{
|
||||
colback=InfoBlue, % Background color of the box.
|
||||
colframe=WarlockBlue, % Border color.
|
||||
fonttitle=\bfseries, % Font for the box title (bold).
|
||||
coltitle=WarlockBlue, % Color of the title text.
|
||||
title=\faInfoCircle\hspace{0.5em} Information, % Title content (icon + text).
|
||||
breakable, % Allows the box to split across pages.
|
||||
pad at break=2mm, % Internal padding when the box breaks.
|
||||
enhanced, % Activates advanced rendering modes.
|
||||
drop shadow={WarlockGray!50!white} % Adds a subtle shadow.
|
||||
}
|
||||
|
||||
% Box for important warnings.
|
||||
\newtcolorbox{warnbox}{
|
||||
colback=WarnYellow,
|
||||
colframe=WarnBorder,
|
||||
fonttitle=\bfseries,
|
||||
coltitle=WarnBorder!80!black,
|
||||
title=\faExclamationTriangle\hspace{0.5em} Warning,
|
||||
breakable,
|
||||
pad at break=2mm,
|
||||
enhanced,
|
||||
drop shadow={WarnBorder!50!white}
|
||||
}
|
||||
|
||||
% Custom command to format inline code.
|
||||
% \newcommand{<name>}[<args>]{<definition>}
|
||||
\newcommand{\inlinecode}[1]{\colorbox{WarlockLightGray}{\small\texttt{#1}}}
|
||||
|
||||
|
||||
% %%% --- HEADER AND FOOTER SETUP --- %%%
|
||||
% 'fancyhdr' is used to control the content of headers and footers.
|
||||
\pagestyle{fancy}
|
||||
\fancyhf{} % Clears all header and footer fields.
|
||||
|
||||
% \fancyhead[L/C/R]{...} defines the header content (Left, Center, Right).
|
||||
\fancyhead[L]{\textit{Warlock-Studio 2.2}}
|
||||
\fancyhead[R]{\leftmark} % \leftmark displays the current section name.
|
||||
|
||||
% \fancyfoot[L/C/R]{...} defines the footer content.
|
||||
\fancyfoot[L]{\includegraphics[height=0.8cm]{logo.png}} % Assumes 'logo.png' is in the same folder.
|
||||
\fancyfoot[C]{\thepage} % Displays the current page number.
|
||||
\fancyfoot[R]{\textcopyright~2025 Warlock-Studio}
|
||||
|
||||
% Defines the thickness of the separator lines.
|
||||
\renewcommand{\headrulewidth}{0.4pt}
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
|
||||
% Redefines how the section mark is generated to include the number.
|
||||
\renewcommand{\sectionmark}[1]{\markboth{\thesection. #1}{}}
|
||||
|
||||
|
||||
% =======================================================================================
|
||||
% BEGIN DOCUMENT BODY
|
||||
% =======================================================================================
|
||||
\begin{document}
|
||||
|
||||
% %%% --- TITLE PAGE --- %%%
|
||||
% A striking and professional cover page is created using a full-page 'tcolorbox'.
|
||||
\begin{titlepage}
|
||||
\begin{tcolorbox}[
|
||||
%--- Box Style ---
|
||||
colback=WarlockDark, % Dark background.
|
||||
colframe=WarlockGold, % Gold border.
|
||||
sharp corners, % Straight corners instead of rounded.
|
||||
boxrule=1.5pt, % Border thickness.
|
||||
%--- Alignment and Size ---
|
||||
halign=center, % Horizontal content alignment.
|
||||
valign=center, % Vertical content alignment.
|
||||
height=\dimexpr\textheight-1cm\relax % Box height (full text height minus 1cm).
|
||||
]
|
||||
%--- Cover Page Content ---
|
||||
\centering % Centers the internal elements.
|
||||
|
||||
\includegraphics[width=0.5\textwidth]{logo.png}\par % Logo.
|
||||
|
||||
\vfill % Flexible space to push content.
|
||||
|
||||
\color{white} % Changes text color to white for contrast.
|
||||
|
||||
{\Huge\bfseries Warlock-Studio\par}
|
||||
\vspace{0.7cm} % Fixed vertical space.
|
||||
{\Large -- User Manual \& Technical Documentation --\par}
|
||||
\vspace{0.2cm}
|
||||
{\Large Version 2.2\par}
|
||||
|
||||
\vfill % Another flexible space.
|
||||
|
||||
{\large Iván Eduardo Chavez Ayub\par}
|
||||
\href{https://github.com/Ivan-Ayub97}{\texttt{\color{WarlockGold}@Ivan-Ayub97 on GitHub}}\par % Styled link.
|
||||
|
||||
\vspace{1.5cm}
|
||||
|
||||
{\large \today\par} % Displays the compilation date.
|
||||
\end{tcolorbox}
|
||||
\thispagestyle{empty} % Hides header and footer on the cover page.
|
||||
\end{titlepage}
|
||||
|
||||
|
||||
% %%% --- ABSTRACT AND TABLE OF CONTENTS --- %%%
|
||||
\pagestyle{fancy} % Restores the 'fancy' page style after the cover page.
|
||||
|
||||
% The 'abstract' environment creates a summary of the document.
|
||||
\begin{abstract}
|
||||
\noindent % Prevents indentation on the first line.
|
||||
This document is a comprehensive technical guide for Warlock-Studio 2.2. The information has been validated and enriched with a deep analysis of the source code to provide precise details about its architecture, an advanced optimization guide, and a robust troubleshooting manual.
|
||||
\end{abstract}
|
||||
|
||||
\newpage % Page break before the table of contents.
|
||||
\tableofcontents % Generates the table of contents automatically.
|
||||
\newpage % Page break after the table of contents.
|
||||
|
||||
|
||||
% %%% --- MAIN BODY OF THE MANUAL --- %%%
|
||||
|
||||
% --- Section 1: Introduction ---
|
||||
\section{Introduction}
|
||||
Warlock-Studio is an AI-powered media enhancement and upscaling suite, designed to deliver high-quality results through an accessible user interface. Version 2.2 introduces key improvements in stability, performance, and user experience, establishing it as a robust tool for content creators and enthusiasts.
|
||||
|
||||
\subsection{What's New in Version 2.2}
|
||||
The code analysis reveals the following substantial improvements:
|
||||
% 'itemize' is used for bulleted lists. [leftmargin=*] aligns the list with the paragraph margin.
|
||||
\begin{itemize}[leftmargin=*]
|
||||
\item \textbf{Thread Management and Safe Closures:} Concurrency management has been improved using \texttt{Lock} and \texttt{RLock} to ensure the process state is updated safely and to prevent race conditions when processing videos. The process termination (\texttt{terminate}) is now more robust.
|
||||
\item \textbf{Proactive Memory Optimization:} During long video processing, the application now explicitly calls Python's garbage collector (\texttt{gc.collect()}) after processing batches of frames, significantly reducing the likelihood of out-of-memory errors.
|
||||
\item \textbf{GPU Error Handling:} A specific handler for GPU memory errors during video upscaling has been added. If an "out of memory" error is detected, the application automatically reduces the \textit{tile} size and retries the process.
|
||||
\item \textbf{Splash Screen:} A 10-second splash screen has been added, improving the perception of the application's initial load time.
|
||||
\item \textbf{Logging and Diagnostics:} The application creates log files (\texttt{warlock\_studio.log} and \texttt{error\_log.txt}) in the user's \textbf{Documents} folder, making it easier to diagnose problems.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Main Features}
|
||||
\begin{itemize}[leftmargin=*]
|
||||
\item \textbf{AI Upscaling:} Uses state-of-the-art models like Real-ESRGAN, BSRGAN, and SRVGGNetCompact.
|
||||
\item \textbf{Frame Interpolation:} Increases FPS or creates smooth slow-motion effects using RIFE models.
|
||||
\item \textbf{Noise Reduction:} Includes dedicated IRCNN models for cleaning images and videos.
|
||||
\item \textbf{Hardware Acceleration:} Uses the ONNX Runtime engine with the DirectML provider (\texttt{DmlExecutionProvider}) for GPU acceleration compatible with DirectX 12.
|
||||
\item \textbf{Advanced Video Encoding:} Supports hardware-accelerated encoders from NVIDIA (NVENC), AMD (AMF), and Intel (QSV).
|
||||
\end{itemize}
|
||||
|
||||
|
||||
% --- Section 2: Installation ---
|
||||
\section{Installation and Program Architecture}
|
||||
|
||||
\subsection{System Requirements}
|
||||
% 'table' is used for tables that don't split across pages. [H] forces its position.
|
||||
\begin{table}[H]
|
||||
\centering % Centers the table on the page.
|
||||
% 'tabular' is the environment that draws the table. {ll} defines two left-aligned columns.
|
||||
\begin{tabular}{ll}
|
||||
\toprule % Top line of the table (from booktabs).
|
||||
\textbf{Component} & \textbf{Requirement} \\
|
||||
\midrule % Middle line of the table (from booktabs).
|
||||
Operating System & Windows 10 (64-bit) or later \\
|
||||
RAM & 8 GB (Minimum), 16 GB (Recommended) \\
|
||||
Graphics Card (GPU) & \textbf{DirectX 12} compatible. \textbf{Recommended: 4+ GB VRAM}. \\
|
||||
Storage & 2 GB of free space. An SSD is recommended for better performance. \\
|
||||
\bottomrule % Bottom line of the table (from booktabs).
|
||||
\end{tabular}
|
||||
\caption{Hardware and software requirements for Warlock-Studio 2.2.}
|
||||
\end{table}
|
||||
|
||||
\subsection{File Structure and Dependencies}
|
||||
\begin{infobox}
|
||||
Warlock-Studio is a self-contained application. The following components are included in the installation and require no action from the user.
|
||||
\end{infobox}
|
||||
\begin{itemize}[leftmargin=*]
|
||||
\item \inlinecode{ffmpeg.exe:} Located in the \texttt{Assets} folder, it is the engine for all video manipulation, encoding, and decoding.
|
||||
\item \inlinecode{exiftool.exe:} Also in \texttt{Assets}, it is used to read and write metadata (EXIF, XMP), ensuring that the original file information is preserved.
|
||||
\item \textbf{AI Models:} The models in \texttt{.onnx} format are located in the \texttt{AI-onnx} folder.
|
||||
\item \textbf{User Preferences:} A file named \inlinecode{Warlock-Studio_2.2_UserPreference.json} is saved in the user's \textbf{Documents} folder.
|
||||
\item \textbf{Logs:} Log files are stored in \texttt{Documents\textbackslash Warlock-Studio_2.2_Logs}.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
% --- Section 3: Model Guide ---
|
||||
\section{Detailed Guide to AI Models}
|
||||
The choice of AI model is the most important factor for quality and processing time.
|
||||
|
||||
\subsection{Model Comparison Table}
|
||||
The following table details the relative VRAM usage of each model.
|
||||
% 'longtable' is for tables that can span multiple pages. The column definition is similar to 'tabular'.
|
||||
% 'p{<width>}' is used for the last column, creating a fixed-width paragraph with automatic line wrapping.
|
||||
\begin{longtable}{l l c c p{6.5cm}}
|
||||
\toprule
|
||||
\textbf{Model} & \textbf{Main Function} & \textbf{Scale} & \textbf{VRAM Weight} & \textbf{Recommended Use Case} \\
|
||||
\midrule
|
||||
\endhead % \endhead defines the header that will be repeated on each page.
|
||||
|
||||
\multicolumn{5}{c}{\textit{Denoising Models}} \\
|
||||
\midrule
|
||||
\texttt{IRCNN\_Mx1} & Denoise & x1 & 4.0 & Moderate noise. \\
|
||||
\texttt{IRCNN\_Lx1} & Denoise & x1 & 4.0 & Intense noise. \\
|
||||
\midrule
|
||||
\multicolumn{5}{c}{\textit{High-Quality Upscaling Models (Slow)}} \\
|
||||
\midrule
|
||||
\texttt{BSRGANx4} & Upscale & x4 & 0.6 & Realistic photos. Excellent fine detail. \\
|
||||
\texttt{BSRGANx2} & Upscale & x2 & 0.7 & Similar to x4 but for a smaller upscale. \\
|
||||
\texttt{RealESRGANx4} & Upscale & x4 & 0.6 & General purpose, good for textures. \\
|
||||
\texttt{RealESRNetx4} & Upscale & x4 & 2.2 & Alternative to RealESRGAN, can be faster. \\
|
||||
\midrule
|
||||
\multicolumn{5}{c}{\textit{High-Speed Upscaling Models (Lightweight)}} \\
|
||||
\midrule
|
||||
\texttt{RealESR\_Gx4} & Upscale & x4 & 2.2 & Fast upscaling, ideal for videos. \\
|
||||
\texttt{RealESR\_Animex4} & Upscale & x4 & 2.2 & Optimized for anime and cartoons. \\
|
||||
\midrule
|
||||
\multicolumn{5}{c}{\textit{Frame Interpolation Models (Video Only)}} \\
|
||||
\midrule
|
||||
\texttt{RIFE} & Interpolate & N/A & N/A & Maximum interpolation quality. \\
|
||||
\texttt{RIFE\_Lite} & Interpolate & N/A & N/A & Faster version, ideal for GPUs with < 4 GB VRAM. \\
|
||||
\bottomrule
|
||||
\caption{Guide to AI model selection and their impact on VRAM.}
|
||||
\label{tab:modelos} % \label to be able to reference the table with \ref{tab:modelos}.
|
||||
\end{longtable}
|
||||
|
||||
|
||||
% --- Section 4: Optimization ---
|
||||
\section{Configuration and Performance Optimization}
|
||||
|
||||
\subsection{Critical Performance Parameters}
|
||||
\begin{itemize}[leftmargin=*]
|
||||
\item \textbf{Input Resolution \%:} The most effective adjustment for speed. It reduces the resolution before processing it with AI. A value between \textbf{50\% and 75\%} is usually ideal.
|
||||
\item \textbf{GPU VRAM Limiter (GB):} Define your GPU's VRAM. It is used to calculate the size of the processing \textit{tiles} and prevent memory errors.
|
||||
\item \textbf{AI Multithreading:} For videos only. It processes multiple frames in parallel, speeding up the process but consuming more VRAM and CPU.
|
||||
\item \textbf{AI Blending:} Blends the original image with the processed image. Useful for reducing artifacts when using a low \textit{Input Resolution}.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{The User Preferences File}
|
||||
The \inlinecode{Warlock-Studio_2.2_UserPreference.json} file saves your settings.
|
||||
% 'tabularx' is used for the table to automatically occupy 100% of the text width.
|
||||
% The 'X' column is a flexible column that expands to fill the available space.
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\small % Reduces the font size inside the table.
|
||||
\begin{tabularx}{\textwidth}{l X}
|
||||
\toprule
|
||||
\textbf{JSON Key} & \textbf{Description} \\
|
||||
\midrule
|
||||
\texttt{default\_AI\_model} & The last selected AI model. \\
|
||||
\texttt{default\_AI\_multithreading} & The number of processing threads for video. \\
|
||||
\texttt{default\_gpu} & The last selected GPU (Auto, GPU 1, etc.). \\
|
||||
\texttt{default\_keep\_frames} & Whether to keep the video frames ("ON" or "OFF"). \\
|
||||
\texttt{default\_image\_extension} & Default image extension (\texttt{.png}, \texttt{.jpg}, etc.). \\
|
||||
\texttt{default\_video\_extension} & Default video extension (\texttt{.mp4}, \texttt{.mkv}, etc.). \\
|
||||
\texttt{default\_video\_codec} & The default video encoder (x264, hevc\_nvenc, etc.). \\
|
||||
\texttt{default\_blending} & The selected blending level (Low, Medium, High). \\
|
||||
\texttt{default\_output\_path} & The last selected output path. \\
|
||||
\texttt{default\_input\_resize\_factor} & The input resolution percentage value. \\
|
||||
\texttt{default\_output\_resize\_factor} & The output resolution percentage value. \\
|
||||
\texttt{default\_VRAM\_limiter} & The GPU VRAM limiter value. \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\caption{Keys saved in the user preferences file.}
|
||||
\end{table}
|
||||
|
||||
% --- Section 5: Troubleshooting ---
|
||||
\section{Advanced Troubleshooting Guide}
|
||||
\begin{warnbox}
|
||||
The \textbf{Number 1} cause of errors is \textbf{special characters} in file paths and names. Avoid using: \texttt{', ", @, \#, \$, \%, \&, *, [, ], ?, etc.}.
|
||||
\end{warnbox}
|
||||
|
||||
% 'description' is for definition lists.
|
||||
% [style=nextline] places the text on the line following the term.
|
||||
\begin{description}[leftmargin=*, style=nextline, itemsep=0.8em]
|
||||
\item[\faBan\ Error: "FFmpeg encoding failed: Invalid argument"]
|
||||
\textbf{Cause:} Invalid file name or path.
|
||||
\textbf{Solution:} Rename the file and/or its containing folder, removing any special characters.
|
||||
|
||||
\item[\faMemory\ Error: "out of memory" or unexpected crash]
|
||||
\textbf{Cause:} The GPU ran out of video memory (VRAM).
|
||||
\textbf{Solution:}
|
||||
% 'enumerate' is for numbered lists. 'nosep' reduces space between items.
|
||||
\begin{enumerate}[nosep, leftmargin=*]
|
||||
\item Lower the \textbf{VRAM Limiter} to a value equal to or less than your GPU's actual VRAM.
|
||||
\item Lower the \textbf{Input Resolution \%} to 75\% or less.
|
||||
\item For videos, decrease the \textbf{AI Multithreading} threads or turn it "OFF".
|
||||
\item The application will try to recover from this error automatically.
|
||||
\end{enumerate}
|
||||
|
||||
\item[\faTachometerAlt\ Error: "cannot convert float NaN to integer"]
|
||||
\textbf{Cause:} GPU driver timeout, often due to overload or overheating.
|
||||
\textbf{Solution:} Restart the process \textbf{without deleting the generated frames folder}. The application will read the existing frames and resume work from where it failed.
|
||||
|
||||
\item[\faVolumeMute\ Issue: Output video has no audio]
|
||||
\textbf{Cause:} The original video had no audio track, a \textit{Slowmotion} mode was used, or the audio codec was incompatible.
|
||||
\textbf{Solution:} The program first tries to copy the audio stream directly. If that fails, it tries to re-encode to AAC. If all fails, it saves the video without audio. Using the \inlinecode{.mkv} container for the output may help.
|
||||
|
||||
\item[\faQuestionCircle\ Issue: Application won't open or closes on startup]
|
||||
\textbf{Cause:} Corrupt settings, lack of permissions, or an environment error.
|
||||
\textbf{Solution:}
|
||||
\begin{enumerate}[nosep, leftmargin=*]
|
||||
\item Go to your \textbf{Documents} folder and delete the \inlinecode{Warlock-Studio_2.2_UserPreference.json} file.
|
||||
\item Check the log files in \texttt{Documents\textbackslash Warlock-Studio_2.2_Logs} for detailed error messages.
|
||||
\item Ensure your GPU drivers are up to date.
|
||||
\end{enumerate}
|
||||
\end{description}
|
||||
|
||||
% --- Section 6: Architecture ---
|
||||
\section{Advanced Architecture and Processes}
|
||||
|
||||
\subsection{Inference Engine and Hardware Acceleration}
|
||||
Warlock-Studio uses \textbf{ONNX Runtime} with the \textbf{DirectML} provider (\inlinecode{DmlExecutionProvider}). This translates AI operations into \textbf{DirectX 12} calls, ensuring broad compatibility with NVIDIA, AMD, and Intel GPUs.
|
||||
|
||||
\subsection{Tiling System and Memory Management}
|
||||
To handle high-resolution files, the application splits each frame into fragments (\textit{tiles}). The size of these tiles is dynamically calculated using the \textbf{VRAM Limiter}. Additionally, Python's garbage collector (\inlinecode{gc.collect()}) is invoked to force memory release and ensure stability.
|
||||
|
||||
\subsection{Resume and Checkpoint Functionality}
|
||||
If a video process is interrupted, the processed frames are saved. When restarting the task, the \inlinecode{check\_video\_upscaling\_resume} function detects these files and resumes work from where it left off, saving time.
|
||||
|
||||
\subsection{Asynchronous Frame Writing}
|
||||
During video upscaling, the frames processed by the GPU are sent to a separate writer thread. This allows the GPU to immediately start processing the next batch without waiting for the (slower) disk writing operation to finish, thus maximizing performance.
|
||||
|
||||
|
||||
% =======================================================================================
|
||||
% END OF DOCUMENT
|
||||
% =======================================================================================
|
||||
\end{document}
|
||||
@@ -0,0 +1,429 @@
|
||||
% ---------------------------------------------------------------------------------------
|
||||
% 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 2.2 User Manual & Technical Documentation}, % 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{<comando>}[<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*{<comando>}{<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 2.2}}
|
||||
\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 2.2\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 2.2. 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 2.2 introduce mejoras clave en estabilidad, rendimiento y la experiencia del usuario, consolidándose como una herramienta robusta para creadores de contenido y entusiastas.
|
||||
|
||||
\subsection{Novedades en la Versión 2.2}
|
||||
El análisis del código revela las siguientes mejoras sustanciales:
|
||||
% Se usa 'itemize' para listas con viñetas. [leftmargin=*] alinea la lista con el margen del párrafo.
|
||||
\begin{itemize}[leftmargin=*]
|
||||
\item \textbf{Gestión de Hilos y Cierres Seguros:} Se ha mejorado la gestión de concurrencia mediante \texttt{Lock} y \texttt{RLock} para garantizar que el estado del proceso se actualice de forma segura y se eviten condiciones de carrera al procesar videos. La terminación del proceso (\texttt{terminate}) ahora es más robusta.
|
||||
\item \textbf{Optimización de Memoria Proactiva:} Durante el procesamiento de videos largos, la aplicación ahora invoca explícitamente al recolector de basura de Python (\texttt{gc.collect()}) después de procesar lotes de fotogramas, reduciendo significativamente la probabilidad de errores de memoria insuficiente.
|
||||
\item \textbf{Manejo de Errores de GPU:} Se ha añadido un manejador específico para errores de memoria de la GPU durante el escalado de video. Si se detecta un error "out of memory", la aplicación reduce automáticamente el tamaño de los \textit{tiles} y reintenta el proceso.
|
||||
\item \textbf{Pantalla de Bienvenida (Splash Screen):} Se ha añadido una pantalla de inicio de 10 segundos que mejora la percepción de la carga inicial de la aplicación.
|
||||
\item \textbf{Registro (Logging) y Diagnóstico:} La aplicación crea archivos de registro (\texttt{warlock\_studio.log} y \texttt{error\_log.txt}) en la carpeta de \textbf{Documentos} del usuario, facilitando el diagnóstico de problemas.
|
||||
\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{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} & \textbf{Requisito} \\
|
||||
\midrule % Línea media de la tabla (de booktabs).
|
||||
Sistema Operativo & Windows 10 (64-bit) o posterior \\
|
||||
Memoria RAM & 8 GB (Mínimo), 16 GB (Recomendado) \\
|
||||
Tarjeta Gráfica (GPU) & Compatible con \textbf{DirectX 12}. \textbf{Recomendado: 4+ GB VRAM}. \\
|
||||
Almacenamiento & 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 2.2.}
|
||||
\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_2.2_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_2.2_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} & \textbf{Función Principal} & \textbf{Escala} & \textbf{Peso VRAM} & \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} & Denoise & x1 & 4.0 & Ruido moderado. \\
|
||||
\texttt{IRCNN\_Lx1} & Denoise & x1 & 4.0 & Ruido intenso. \\
|
||||
\midrule
|
||||
\multicolumn{5}{c}{\textit{Modelos de Escalado - Alta Calidad (Lentos)}} \\
|
||||
\midrule
|
||||
\texttt{BSRGANx4} & Upscale & x4 & 0.6 & Fotografías realistas. Excelente detalle fino. \\
|
||||
\texttt{BSRGANx2} & Upscale & x2 & 0.7 & Similar a x4 pero para un escalado menor. \\
|
||||
\texttt{RealESRGANx4} & Upscale & x4 & 0.6 & Uso general, bueno para texturas. \\
|
||||
\texttt{RealESRNetx4} & Upscale & x4 & 2.2 & Alternativa a RealESRGAN, puede ser más rápido. \\
|
||||
\midrule
|
||||
\multicolumn{5}{c}{\textit{Modelos de Escalado - Alta Velocidad (Ligeros)}} \\
|
||||
\midrule
|
||||
\texttt{RealESR\_Gx4} & Upscale & x4 & 2.2 & Escalado rápido, ideal para videos. \\
|
||||
\texttt{RealESR\_Animex4} & Upscale & x4 & 2.2 & Optimizado para anime y dibujos animados. \\
|
||||
\midrule
|
||||
\multicolumn{5}{c}{\textit{Modelos de Interpolación de Fotogramas (Solo Video)}} \\
|
||||
\midrule
|
||||
\texttt{RIFE} & Interpolar & N/A & N/A & Máxima calidad de interpolación. \\
|
||||
\texttt{RIFE\_Lite} & Interpolar & N/A & N/A & Versión más rápida, ideal para GPUs con < 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.
|
||||
\end{itemize}
|
||||
|
||||
\subsection{El Fichero de Preferencias de Usuario}
|
||||
El archivo \inlinecode{Warlock-Studio_2.2_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} & \textbf{Descripción} \\
|
||||
\midrule
|
||||
\texttt{default\_AI\_model} & El último modelo de IA seleccionado. \\
|
||||
\texttt{default\_AI\_multithreading} & El número de hilos de procesamiento para video. \\
|
||||
\texttt{default\_gpu} & La última GPU seleccionada (Auto, GPU 1, etc.). \\
|
||||
\texttt{default\_keep\_frames} & Si se deben conservar los fotogramas de video ("ON" o "OFF"). \\
|
||||
\texttt{default\_image\_extension} & Extensión de imagen por defecto (\texttt{.png}, \texttt{.jpg}, etc.). \\
|
||||
\texttt{default\_video\_extension} & Extensión de video por defecto (\texttt{.mp4}, \texttt{.mkv}, etc.). \\
|
||||
\texttt{default\_video\_codec} & El codificador de video por defecto (x264, hevc\_nvenc, etc.). \\
|
||||
\texttt{default\_blending} & El nivel de mezcla seleccionado (Low, Medium, High). \\
|
||||
\texttt{default\_output\_path} & La última ruta de salida seleccionada. \\
|
||||
\texttt{default\_input\_resize\_factor} & El valor del porcentaje de resolución de entrada. \\
|
||||
\texttt{default\_output\_resize\_factor} & El valor del porcentaje de resolución de salida. \\
|
||||
\texttt{default\_VRAM\_limiter} & 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_2.2_UserPreference.json} en su carpeta de \textbf{Documentos}.
|
||||
\item Revise los archivos de registro en \texttt{Documentos\textbackslash Warlock-Studio_2.2_Logs}.
|
||||
\item Asegúrese de que sus controladores de GPU estén actualizados.
|
||||
\end{enumerate}
|
||||
\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.
|
||||
|
||||
|
||||
% =======================================================================================
|
||||
% FIN DEL DOCUMENTO
|
||||
% =======================================================================================
|
||||
\end{document}
|
||||
@@ -0,0 +1,256 @@
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Get Warlock-Studio Installer
|
||||
|
||||
You can download the installer (latest version **2.2**) from any of this platforms:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href="https://sourceforge.net/projects/warlock-studio/files/latest/download">
|
||||
<img src="https://a.fsdn.com/con/app/sf-download-button" alt="Download from SourceForge" />
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href="https://ivanayub97.itch.io/warlock-studio">
|
||||
<img src="rsc/badge-color.png" alt="Download from Itch.io" />
|
||||
</a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href="https://drive.google.com/file/d/1nqlBuxZKsk3FX_nWUqUnDUKUTfMSfjB4/view?usp=sharing">
|
||||
<img src="rsc/google_drive-logo.png" alt="Download from Google Drive" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### AI-Powered Media Enhancement & Upscaling Suite 2.2
|
||||
|
||||
**Warlock-Studio** is a powerful **open-source desktop application** inspired by the remarkable work of [Djdefrag](https://github.com/Djdefrag), integrating tools like **QualityScaler**, **RealScaler**, and **FluidFrames**. Built with performance and usability in mind, Warlock-Studio brings together the best of these technologies into a unified and user-friendly interface.
|
||||
|
||||
---
|
||||
|
||||
It features integration with state-of-the-art models for upscaling, restoration, and frame interpolation—all within an intuitive and streamlined user interface. Warlock-Studio delivers **professional-grade media processing** capabilities to everyone.
|
||||
|
||||
Version 2.2 introduces critical improvements focused on reliability and performance:
|
||||
|
||||
- **Comprehensive Logging System** for easier debugging.
|
||||
- **Proactive Environment Validation** to prevent common errors.
|
||||
- **Resilient Video Encoding** with automatic codec and audio fallbacks.
|
||||
- **Aggressive Memory Management** and dynamic GPU VRAM recovery to handle long processing tasks without crashing.
|
||||
|
||||
---
|
||||
|
||||
## Interface Previews
|
||||
|
||||
### 🔹 Main
|
||||
|
||||

|
||||
|
||||
### 🔹 RIFE (Frame Interpolation) Options
|
||||
|
||||

|
||||
|
||||
### 🔹 Icon App
|
||||
|
||||
## 
|
||||
|
||||
### 🔹 Installation Window
|
||||
|
||||
## 
|
||||
|
||||
## 
|
||||
|
||||
## 🛠️ Development Status — v2.2
|
||||
|
||||
| Component | Status | Notes |
|
||||
| :---------------------------------- | :--------------- | :------------------------------------------------------------------------ |
|
||||
| **Upscaling Models (ESRGAN, etc.)** | 🟢 **Stable** | Fully integrated with dynamic VRAM recovery for enhanced stability. |
|
||||
| **Frame Interpolation (RIFE)** | 🟢 **Stable** | Includes slow-motion and intermediate frame generation capabilities. |
|
||||
| **Batch Processing** | 🟢 **Stable** | Reliable processing with improved error handling and resource management. |
|
||||
| **User Interface (UI/UX)** | 🟢 **Improved** | Updated color palette and faster start-up time. |
|
||||
| **GPU Management** | 🟢 **Optimized** | Dynamic VRAM error recovery and graceful hardware codec fallbacks. |
|
||||
| **Installer and Packaging** | 🟢 **Stable** | Easy-to-use installer for Windows platforms. |
|
||||
|
||||
---
|
||||
|
||||
## Recent Enhancements (v2.2)
|
||||
|
||||
- ✅ **Stability Overhaul:** Major improvements in error handling, including a comprehensive logging system and proactive environment validation to prevent crashes.
|
||||
- ✅ **Resilient Video Processing:** The video encoding pipeline now features automatic fallbacks for hardware codecs and audio stream processing, ensuring a valid output file is always created.
|
||||
- ✅ **Performance and Memory Optimization:** Implemented aggressive memory management to handle large video files without crashing and added dynamic GPU VRAM recovery for tiling-based tasks.
|
||||
- ✅ **Critical Bug Fixes:** Resolved race conditions in video encoding and GUI status updates, ensuring process integrity and predictable behavior.
|
||||
- ✅ **Safe Thread Management:** Upgraded to ensure processes are terminated gracefully and system resources are properly cleaned up on exit.
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
Warlock-Studio/
|
||||
├──AI-onnx/
|
||||
│
|
||||
└──├──BSRGANx2_fp16.onnx
|
||||
├──BSRGANx4_fp16.onnx
|
||||
├──IRCNN_Lx1_fp16.onnx
|
||||
├──IRCNN_Mx1_fp16.onnx
|
||||
├──RealESR_Animex4_fp16.onnx
|
||||
├──RealESR_Gx4_fp16.onnx
|
||||
├──RealESRGANx4_fp16.onnx
|
||||
├──RealESRNetx4_fp16.onnx
|
||||
├──RealSRx4_Anime_fp16.onnx
|
||||
├──RIFE_fp32.onnx
|
||||
└──RIFE_Lite_fp32.onnx
|
||||
├──Assets/
|
||||
│
|
||||
└──├──banner.png
|
||||
├──clear_icon.png
|
||||
├──exiftool.exe
|
||||
├──ffmpeg.exe
|
||||
├──ffmplay.exe
|
||||
├──ffmprobe.exe
|
||||
├──info_icon.png
|
||||
├──logo.ico
|
||||
├──logo.png
|
||||
├──stop_icon.png
|
||||
├──upscale_icon.png
|
||||
├──wizard-image.bmp
|
||||
└──wizard-small.bmp
|
||||
├──rsc/
|
||||
│
|
||||
└──├──badge-color.png
|
||||
├──Capture.png
|
||||
├──CaptureRIFE.png
|
||||
├──google_drive-logo.png
|
||||
├──Installation_window.png
|
||||
└──Installation_window2.png
|
||||
│
|
||||
├──CHANGELOG.md
|
||||
├──CODE_OF_CONDUCT.md
|
||||
├──CONTRIBUTING.md
|
||||
├──LICENSE
|
||||
├──License.txt
|
||||
├──NOTICE.md
|
||||
├──README.md # This File
|
||||
├──SECURITY.md
|
||||
├──Setup.iss
|
||||
├──Manual_ES.pdf
|
||||
├──Manual_EN.pdf
|
||||
├──Warlock-Studio.py # Main
|
||||
└──Warlock-Studio.spec
|
||||
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
To get started with Warlock-Studio:
|
||||
|
||||
1. **Run the installer** and follow the setup instructions.
|
||||
2. **Launch the application** by opening `Warlock-Studio.exe`.
|
||||
3. **Begin enhancing** your images and videos with just a few clicks\!
|
||||
|
||||
Warlock-Studio uses [PyInstaller](https://www.pyinstaller.org/) and [Inno Setup](http://www.jrsoftware.org/isinfo.php) for a seamless packaging and installation experience.
|
||||
|
||||
## Key Features
|
||||
|
||||
- **State-of-the-Art AI Models**
|
||||
Real-ESRGAN, SRGAN, BSRGAN, IRCNN, Waifu2x, Anime4K, **RIFE**, and others for denoising, resolution enhancement, detail restoration, and smooth frame interpolation.
|
||||
|
||||
- **AI Frame Interpolation & Slow Motion**
|
||||
Generate new in-between frames using RIFE to create smooth **2x/4x/8x** motion or dramatic slow-motion effects.
|
||||
|
||||
- **Batch Processing**
|
||||
Simultaneously process multiple images or videos—ideal for large-scale media projects.
|
||||
|
||||
- **Customizable Workflows**
|
||||
Choose your preferred AI model, output resolution, format (PNG, JPEG, MP4, etc.), and quality settings for full creative control.
|
||||
|
||||
- **Intuitive Interface**
|
||||
Designed for both beginners and professionals—simple, clean, and efficient.
|
||||
|
||||
- **Open-Source & Extensible**
|
||||
Licensed under the MIT License. Additional usage terms can be found in the [NOTICE](https://www.google.com/search?q=NOTICE.md) file.
|
||||
|
||||
---
|
||||
|
||||
## How to Use
|
||||
|
||||
1. **Run as Administrator** (optional but recommended for optimal performance).
|
||||
|
||||
2. **Load your media**: select your images and videos into the app.
|
||||
|
||||
3. **Configure settings**:
|
||||
|
||||
- Select an **AI Model** (e.g., Real-ESRGAN, SRGAN, BSRGAN, IRCNN, Waifu2x, Anime4K, RIFE)
|
||||
- Set the **output resolution**, **file format**, and toggle features such as **interpolation** or **slow-motion**
|
||||
|
||||
4. **Start Processing**: click **"Make Magic"** to begin enhancement.
|
||||
|
||||
5. **Retrieve your files**: processed outputs will be saved in your chosen destination folder.
|
||||
|
||||
---
|
||||
|
||||
## Quality Comparison
|
||||
|
||||
**Comparison of an enhanced image using the BSRGANx2 model**
|
||||

|
||||
|
||||
---
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **Operating System:** Windows 10 or later
|
||||
- **Memory (RAM):** Minimum 4 GB (8 GB or more recommended)
|
||||
- **Graphics Card:** NVIDIA or DirectML-compatible GPU highly recommended for performance
|
||||
- **Storage:** Sufficient disk space for input and output media files
|
||||
|
||||
---
|
||||
|
||||
### Integrated Technologies & Licenses
|
||||
|
||||
| Technology | License | Author / Maintainer | Source Code / Homepage |
|
||||
| :------------ | :------------------------------- | :------------------------------------------------------ | :--------------------------------------------------------- |
|
||||
| QualityScaler | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/QualityScaler) |
|
||||
| RealScaler | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/RealScaler) |
|
||||
| FluidFrames | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/FluidFrames) |
|
||||
| Real-ESRGAN | BSD 3-Clause / Apache 2.0 | [Xintao Wang](https://github.com/xinntao) | [GitHub](https://github.com/xinntao/Real-ESRGAN) |
|
||||
| RealESRGAN-G | BSD 3-Clause / Apache 2.0 | [Xintao Wang](https://github.com/xinntao) | [GitHub](https://github.com/xinntao/Real-ESRGAN) |
|
||||
| RealESR-Anime | BSD 3-Clause / Apache 2.0 | [Xintao Wang](https://github.com/xinntao) | [GitHub](https://github.com/xinntao/Real-ESRGAN) |
|
||||
| RealESR-Net | BSD 3-Clause / Apache 2.0 | [Xintao Wang](https://github.com/xinntao) | [GitHub](https://github.com/xinntao/Real-ESRGAN) |
|
||||
| RIFE | Apache 2.0 | [hzwer](https://github.com/hzwer) | [GitHub](https://github.com/megvii-research/ECCV2022-RIFE) |
|
||||
| SRGAN | CC BY-NC-SA 4.0 (Non-Commercial) | [TensorLayer Community](https://github.com/tensorlayer) | [GitHub](https://github.com/tensorlayer/srgan) |
|
||||
| BSRGAN | Apache 2.0 | [Kai Zhang](https://github.com/cszn) | [GitHub](https://github.com/cszn/BSRGAN) |
|
||||
| IRCNN | BSD / Mixed | [Kai Zhang](https://github.com/cszn) | [GitHub](https://github.com/cszn/IRCNN) |
|
||||
| Anime4K | MIT | [Tianyang Zhang (bloc97)](https://github.com/bloc97) | [GitHub](https://github.com/bloc97/Anime4K) |
|
||||
| ONNX Runtime | MIT | [Microsoft](https://github.com/microsoft) | [GitHub](https://github.com/microsoft/onnxruntime) |
|
||||
| PyTorch | BSD 3-Clause | [Meta AI](https://pytorch.org/) | [GitHub](https://github.com/pytorch/pytorch) |
|
||||
| FFmpeg | LGPL-2.1 / GPL (varies) | [FFmpeg Team](https://ffmpeg.org/) | [Official Site](https://ffmpeg.org) |
|
||||
| ExifTool | Perl Artistic License 1.0 | [Phil Harvey](https://exiftool.org/) | [Official Site](https://exiftool.org/) |
|
||||
| DirectML | MIT | [Microsoft](https://github.com/microsoft/) | [GitHub](https://github.com/microsoft/DirectML) |
|
||||
| Python | Python Software Foundation (PSF) | [Python Software Foundation](https://www.python.org/) | [Official Site](https://www.python.org) |
|
||||
| PyInstaller | GPLv2+ | [PyInstaller Team](https://github.com/pyinstaller) | [GitHub](https://github.com/pyinstaller/pyinstaller) |
|
||||
| Inno Setup | Custom Inno License | [Jordan Russell](http://www.jrsoftware.org/) | [Official Site](http://www.jrsoftware.org/isinfo.php) |
|
||||
|
||||
---
|
||||
|
||||
## Contributions
|
||||
|
||||
We warmly welcome community contributions\!
|
||||
|
||||
1. **Fork** this repository.
|
||||
2. **Create a branch** for your feature or fix.
|
||||
3. **Submit a Pull Request** with a detailed explanation of your changes.
|
||||
|
||||
For bug reports, feature suggestions, or inquiries, contact us at: **[negroayub97@gmail.com](mailto:negroayub97@gmail.com)**
|
||||
|
||||
**Warlock-Studio** merges cutting-edge artificial intelligence with a powerful yet accessible interface—empowering creators to elevate their media effortlessly.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
© 2025 Iván Eduardo Chavez Ayub
|
||||
Distributed under the MIT License. Additional terms are available in the [NOTICE.md](https://www.google.com/search?q=NOTICE.md) file.
|
||||
@@ -0,0 +1,44 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
We aim to support the most recent stable release of Warlock-Studio. Security updates and fixes are only guaranteed for:
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | --------- |
|
||||
| 2.2.x | ✅ |
|
||||
| 2.1.x | ✅ |
|
||||
| 2.0.x | ✅ |
|
||||
| 1.1.x | ✅ |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you discover a security vulnerability in Warlock-Studio or any of its integrated components, **please report it responsibly**:
|
||||
|
||||
- **Contact Email:** [negroayub97@gmail.com](mailto:negroayub97@gmail.com)
|
||||
- **Do not** create a public GitHub issue to report security-related bugs.
|
||||
|
||||
Please include the following in your email:
|
||||
|
||||
- A detailed description of the vulnerability.
|
||||
- Steps to reproduce the issue (if applicable).
|
||||
- Your assessment of the potential impact.
|
||||
|
||||
We will acknowledge your report within **72 hours** and aim to provide a resolution or mitigation plan within **7 working days**, depending on severity.
|
||||
|
||||
## Scope
|
||||
|
||||
This security policy covers:
|
||||
|
||||
- The Warlock-Studio desktop application.
|
||||
- AI models and third-party dependencies used within the app (to the extent they affect Warlock-Studio).
|
||||
|
||||
**Note:** Vulnerabilities in third-party tools such as Real-ESRGAN, FFmpeg, ONNX Runtime, etc., should ideally be reported upstream to their maintainers.
|
||||
|
||||
## Responsible Disclosure
|
||||
|
||||
We support responsible disclosure. Please give us time to investigate and fix issues before any public disclosure.
|
||||
|
||||
---
|
||||
|
||||
Thank you for helping make Warlock-Studio safer for everyone!
|
||||
@@ -1,94 +1,76 @@
|
||||
; ===================================================================
|
||||
; Warlock-Studio 2.2 - Inno Setup Script
|
||||
; ===================================================================
|
||||
|
||||
#define AppName "Warlock-Studio"
|
||||
#define AppVersion "2.2"
|
||||
#define AppPublisher "Iván Eduardo Chavez Ayub"
|
||||
#define AppURL "https://github.com/Ivan-Ayub97/Warlock-Studio"
|
||||
#define AppExeName "Warlock-Studio.exe"
|
||||
|
||||
[Setup]
|
||||
; Basic installation configuration
|
||||
AppName=Warlock-Studio 2.1
|
||||
AppVersion=2.1
|
||||
DefaultDirName={pf}\Warlock-Studio
|
||||
DefaultGroupName=Warlock-Studio
|
||||
OutputDir=.\Output
|
||||
OutputBaseFilename=Warlock-Studio_Installer
|
||||
SetupIconFile=C:\Users\negro\Desktop\Warlock-Studio\logo.ico
|
||||
Compression=lzma
|
||||
; --- Configuración Básica ---
|
||||
AppName={#AppName}
|
||||
AppVersion={#AppVersion}
|
||||
AppPublisher={#AppPublisher}
|
||||
AppSupportURL={#AppURL}
|
||||
AppUpdatesURL={#AppURL}
|
||||
DefaultDirName={autopf}\{#AppName}
|
||||
DefaultGroupName={#AppName}
|
||||
AllowNoIcons=yes
|
||||
PrivilegesRequired=admin
|
||||
ArchitecturesInstallIn64BitMode=x64
|
||||
|
||||
; --- Configuración del Instalador ---
|
||||
OutputDir=Output
|
||||
OutputBaseFilename=Warlock-Studio-{#AppVersion}-Installer
|
||||
SetupIconFile=..\Warlock-Studio\logo.ico
|
||||
Compression=lzma2
|
||||
SolidCompression=yes
|
||||
WizardStyle=modern
|
||||
PrivilegesRequired=admin
|
||||
|
||||
; --- Imágenes del Asistente ---
|
||||
; NOTA: Asegúrate de que las rutas relativas sean correctas desde la ubicación de este script.
|
||||
WizardImageFile=..\Warlock-Studio\Assets\wizard-image.bmp
|
||||
WizardSmallImageFile=..\Warlock-Studio\Assets\wizard-small.bmp
|
||||
UninstallDisplayIcon={app}\{#AppExeName}
|
||||
|
||||
; CORRECTO: LicenseFile se define ahora en la sección [Languages]
|
||||
; para que cada idioma muestre su propia licencia.
|
||||
|
||||
[Languages]
|
||||
; --- Definición de Idiomas y Licencias ---
|
||||
; NOTA: Asegúrate de tener los archivos de licencia en la ruta especificada.
|
||||
Name: "english"; MessagesFile: "compiler:Default.isl"; LicenseFile: "..\Warlock-Studio\License.txt"
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||
|
||||
[Files]
|
||||
; Files to include in the installation
|
||||
Source: "Warlock-Studio.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\Users\negro\Desktop\Warlock-Studio\Assets\logo.ico"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\Users\negro\Desktop\Warlock-Studio\AI-onnx"; DestDir: "{app}\AI-onnx"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "C:\Users\negro\Desktop\Warlock-Studio\Assets"; DestDir: "{app}\Assets"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "C:\Users\negro\Desktop\Warlock-Studio\rsc"; DestDir: "{app}\rsc"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
; --- Archivos de la Aplicación ---
|
||||
; NOTA: La estructura de carpetas asumida es:
|
||||
; - Proyecto/
|
||||
; - InnoSetup_Script/ (Aquí va este archivo .iss)
|
||||
; - Warlock-Studio/ (Aquí van los archivos de la aplicación)
|
||||
Source: "..\Warlock-Studio\{#AppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\Warlock-Studio\logo.ico"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\Warlock-Studio\AI-onnx\*"; DestDir: "{app}\AI-onnx"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "..\Warlock-Studio\Assets\*"; DestDir: "{app}\Assets"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "..\Warlock-Studio\rsc\*"; DestDir: "{app}\rsc"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "..\Warlock-Studio\LICENSE"; DestDir: "{app}"; DestName: "License.txt"; Flags: ignoreversion
|
||||
Source: "..\Warlock-Studio\NOTICE.md"; DestDir: "{app}"; Flags: ignoreversion
|
||||
|
||||
[Icons]
|
||||
; Create shortcuts in the menu group and on the desktop
|
||||
Name: "{group}\Warlock-Studio"; Filename: "{app}\Warlock-Studio.exe"; IconFilename: "{app}\logo.ico"; WorkingDir: "{app}"
|
||||
Name: "{commondesktop}\Warlock-Studio"; Filename: "{app}\Warlock-Studio.exe"; IconFilename: "{app}\logo.ico"; WorkingDir: "{app}"
|
||||
; --- Accesos Directos ---
|
||||
Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"; IconFilename: "{app}\logo.ico"; WorkingDir: "{app}"
|
||||
Name: "{group}\{cm:UninstallProgram,{#AppName}}"; Filename: "{uninstallexe}"
|
||||
Name: "{autodesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; IconFilename: "{app}\logo.ico"; WorkingDir: "{app}"; Tasks: desktopicon
|
||||
|
||||
[Registry]
|
||||
; Associate Warlock-Studio with files
|
||||
Root: HKCU; Subkey: "Software\Classes\.tif"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.bmp"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.webm"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.heic"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.fiv"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.avi"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.gif"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.mp4"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.mov"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.mkv"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.png"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.jpg"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
Root: HKCU; Subkey: "Software\Classes\.mpg"; ValueType: string; ValueData: "Warlock-Studio.File"
|
||||
[Run]
|
||||
Filename: "{app}\{#AppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(AppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||
|
||||
Root: HKCU; Subkey: "Software\Classes\Warlock-Studio.File\shell\open\command"; ValueType: string; ValueData: """{app}\\Warlock-Studio.exe"" ""%1"""
|
||||
|
||||
[Code]
|
||||
function ShowCustomLicensePage(): Boolean;
|
||||
begin
|
||||
MsgBox('© 2025 Iván Eduardo Chavez Ayub'#13#10 +
|
||||
'Licensed under the MIT License. Additional conditions are described in the NOTICE file.'#13#10#13#10 +
|
||||
|
||||
'This software, Warlock-Studio 2.1, is distributed under the MIT License and extended with an additional NOTICE file.'#13#10 +
|
||||
'By installing or using this software, you agree to comply with both the MIT License and the additional terms specified in the NOTICE document.'#13#10#13#10 +
|
||||
|
||||
'*** PROJECT OVERVIEW ***'#13#10 +
|
||||
'Warlock-Studio unifies the MedIA-Wizard and MedIA-Witch tools. It is developed by Iván Eduardo Chavez Ayub (@Ivan-Ayub97 on GitHub), and is based on tools such as QualityScaler, FluidFrames, and RealScaler originally developed by Djdefrag (@Djdefrag on GitHub).'#13#10 +
|
||||
'Its main goal is to improve image resolution using AI-powered models with an intuitive interface.'#13#10#13#10 +
|
||||
|
||||
'*** INTEGRATED TECHNOLOGIES & LICENSES ***'#13#10 +
|
||||
' - QualityScaler, RealScaler, FluidFrames: MIT License (Djdefrag)'#13#10 +
|
||||
' - Real-ESRGAN, RealESRGAN-G, RealESR-Anime, RealESR-Net: BSD 3-Clause / Apache 2.0 (Xintao Wang)'#13#10 +
|
||||
' - RIFE: Apache 2.0 (hzwer, Megvii Research)'#13#10 +
|
||||
' - SRGAN: CC BY-NC-SA 4.0 (TensorLayer Community)'#13#10 +
|
||||
' - BSRGAN: Apache 2.0 (Kai Zhang)'#13#10 +
|
||||
' - IRCNN: BSD / Mixed (Kai Zhang)'#13#10 +
|
||||
' - Anime4K: MIT License (Tianyang Zhang / bloc97)'#13#10 +
|
||||
' - ONNX Runtime: MIT License (Microsoft)'#13#10 +
|
||||
' - PyTorch: BSD 3-Clause (Meta AI)'#13#10 +
|
||||
' - FFmpeg: LGPL-2.1 / GPL (FFmpeg Team)'#13#10 +
|
||||
' - ExifTool: Perl Artistic License (Phil Harvey)'#13#10 +
|
||||
' - DirectML: MIT License (Microsoft)'#13#10 +
|
||||
' - Python: PSF License (Python Software Foundation)'#13#10 +
|
||||
' - PyInstaller: GPLv2+ (PyInstaller Team)'#13#10 +
|
||||
' - Inno Setup: Custom Inno License (Jordan Russell)'#13#10#13#10 +
|
||||
|
||||
'*** LIMITATION OF LIABILITY ***'#13#10 +
|
||||
'This software is provided "AS IS", without warranty of any kind, express or implied. The author and contributors are not liable for any damages, data loss, or consequences resulting from its use, misuse, or failure.'#13#10 +
|
||||
'Use of this software in critical or commercial systems is at your own risk.'#13#10#13#10 +
|
||||
|
||||
'*** INTELLECTUAL PROPERTY NOTICE ***'#13#10 +
|
||||
'All original branding belong to Iván Eduardo Chavez Ayub. The name "Warlock-Studio" and associated logos may not be used commercially without express written permission.'#13#10#13#10 +
|
||||
|
||||
'By continuing, you acknowledge that you have read, understood, and accepted these terms and conditions.'#13#10 +
|
||||
'If you do not agree, please cancel the installation.'#13#10#13#10 +
|
||||
'Refer to the LICENSE and NOTICE files for full legal terms.',
|
||||
mbInformation, MB_OK);
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure InitializeWizard();
|
||||
begin
|
||||
ShowCustomLicensePage(); // Muestra la página de licencia
|
||||
end;
|
||||
[UninstallDelete]
|
||||
; --- Limpieza Adicional Durante la Desinstalación ---
|
||||
Type: filesandordirs; Name: "{app}\AI-onnx"
|
||||
Type: filesandordirs; Name: "{app}\Assets"
|
||||
Type: filesandordirs; Name: "{app}\rsc"
|
||||
@@ -1,4 +1,4 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
|
||||
a = Analysis(
|
||||
@@ -10,7 +10,7 @@ a = Analysis(
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=['nltk', 'scipy', 'scipy.stats', 'scipy.stats.distributions', 'scipy.stats._distn_infrastructure'],
|
||||
excludes=[],
|
||||
noarchive=False,
|
||||
optimize=0,
|
||||
)
|
||||
|
||||
|
After Width: | Height: | Size: 951 KiB |
|
After Width: | Height: | Size: 923 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 3.3 MiB |