Update aduc_framework/orchestrator.py
Browse files
aduc_framework/orchestrator.py
CHANGED
|
@@ -2,14 +2,11 @@
|
|
| 2 |
#
|
| 3 |
# Copyright (C) August 4, 2025 Carlos Rodrigues dos Santos
|
| 4 |
#
|
| 5 |
-
#
|
| 6 |
#
|
| 7 |
# Esta versão do orquestrador opera com uma arquitetura de múltiplos pools de
|
| 8 |
-
# especialistas
|
| 9 |
-
#
|
| 10 |
-
# SeedVrPoolManager, MMAudioPoolManager), cada um operando em um conjunto
|
| 11 |
-
# dedicado de GPUs. O orquestrador agora foca exclusivamente na lógica de
|
| 12 |
-
# alto nível do fluxo de trabalho.
|
| 13 |
|
| 14 |
import logging
|
| 15 |
from typing import List, Dict, Any, Tuple, Callable, Optional, Generator
|
|
@@ -81,7 +78,6 @@ class AducOrchestrator:
|
|
| 81 |
self.director.update_pre_production_state(params.prompt, params.ref_paths, storyboard_list)
|
| 82 |
|
| 83 |
if progress_callback: progress_callback(0.2, "Iniciando geração de keyframes...")
|
| 84 |
-
# O 'painter' (Deformes3D) internamente usará o LTX Pool Manager para gerar as imagens
|
| 85 |
keyframes_detailed_data = self.painter.generate_keyframes_from_storyboard(generation_state=self.director.get_full_state_as_dict(), progress_callback=progress_callback)
|
| 86 |
self.director.update_keyframes_state(keyframes_detailed_data)
|
| 87 |
|
|
@@ -96,7 +92,6 @@ class AducOrchestrator:
|
|
| 96 |
logger.info("Maestro: Iniciando tarefa de Produção do Filme Original.")
|
| 97 |
self.director.update_parameters("producao", params)
|
| 98 |
|
| 99 |
-
# O 'editor' (Deformes4D) usa intensivamente o LTX Pool Manager
|
| 100 |
result_data = self.editor.generate_original_movie(full_generation_state=self.director.get_full_state_as_dict(), progress_callback=progress_callback)
|
| 101 |
self.director.update_video_state(result_data["video_data"])
|
| 102 |
|
|
@@ -146,22 +141,18 @@ class AducOrchestrator:
|
|
| 146 |
logger.info(f"Upscaling de latentes completo! Vídeo final em: {final_video_path}")
|
| 147 |
yield {"final_path": final_video_path}
|
| 148 |
|
| 149 |
-
def task_run_hd_mastering(self, source_video_path: str,
|
| 150 |
-
"""Aplica masterização em HD usando o pool de GPUs do SeedVR."""
|
| 151 |
if not self.director.workspace_dir: raise RuntimeError("Orchestrator não inicializado.")
|
| 152 |
-
logger.info(f"--- ORQUESTRADOR: Tarefa de Masterização HD com SeedVR
|
| 153 |
-
|
| 154 |
-
# Com pools dedicados, não há mais necessidade de descarregar modelos LTX.
|
| 155 |
-
# A chamada é direta e o SeedVrPoolManager gerencia seus próprios recursos.
|
| 156 |
|
| 157 |
run_timestamp = int(time.time())
|
| 158 |
-
output_path = os.path.join(self.director.workspace_dir, f"
|
| 159 |
|
| 160 |
final_path = seedvr_manager_singleton.process_video(
|
| 161 |
input_video_path=source_video_path,
|
| 162 |
output_video_path=output_path,
|
| 163 |
prompt=prompt,
|
| 164 |
-
model_version=model_version,
|
| 165 |
steps=steps
|
| 166 |
)
|
| 167 |
logger.info(f"Masterização HD completa! Vídeo final em: {final_path}")
|
|
@@ -191,7 +182,6 @@ class AducOrchestrator:
|
|
| 191 |
|
| 192 |
if progress_callback: progress_callback(0.5, "Gerando trilha de áudio...")
|
| 193 |
|
| 194 |
-
# A chamada é direta. O MMAudioPoolManager gerencia suas GPUs dedicadas.
|
| 195 |
final_path = mmaudio_manager_singleton.generate_audio_for_video(
|
| 196 |
video_path=source_video_path,
|
| 197 |
prompt=audio_prompt,
|
|
|
|
| 2 |
#
|
| 3 |
# Copyright (C) August 4, 2025 Carlos Rodrigues dos Santos
|
| 4 |
#
|
| 5 |
+
# Version: 4.1.0 (Multi-Pool with Forced SeedVR 3B)
|
| 6 |
#
|
| 7 |
# Esta versão do orquestrador opera com uma arquitetura de múltiplos pools de
|
| 8 |
+
# especialistas e simplifica a tarefa de masterização HD, fixando o uso do
|
| 9 |
+
# modelo SeedVR 3B e removendo a necessidade de selecionar a versão do modelo.
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
import logging
|
| 12 |
from typing import List, Dict, Any, Tuple, Callable, Optional, Generator
|
|
|
|
| 78 |
self.director.update_pre_production_state(params.prompt, params.ref_paths, storyboard_list)
|
| 79 |
|
| 80 |
if progress_callback: progress_callback(0.2, "Iniciando geração de keyframes...")
|
|
|
|
| 81 |
keyframes_detailed_data = self.painter.generate_keyframes_from_storyboard(generation_state=self.director.get_full_state_as_dict(), progress_callback=progress_callback)
|
| 82 |
self.director.update_keyframes_state(keyframes_detailed_data)
|
| 83 |
|
|
|
|
| 92 |
logger.info("Maestro: Iniciando tarefa de Produção do Filme Original.")
|
| 93 |
self.director.update_parameters("producao", params)
|
| 94 |
|
|
|
|
| 95 |
result_data = self.editor.generate_original_movie(full_generation_state=self.director.get_full_state_as_dict(), progress_callback=progress_callback)
|
| 96 |
self.director.update_video_state(result_data["video_data"])
|
| 97 |
|
|
|
|
| 141 |
logger.info(f"Upscaling de latentes completo! Vídeo final em: {final_video_path}")
|
| 142 |
yield {"final_path": final_video_path}
|
| 143 |
|
| 144 |
+
def task_run_hd_mastering(self, source_video_path: str, steps: int, prompt: str, progress_callback: ProgressCallback = None) -> Generator[Dict[str, Any], None, None]:
|
| 145 |
+
"""Aplica masterização em HD usando o pool de GPUs do SeedVR com o modelo 3B."""
|
| 146 |
if not self.director.workspace_dir: raise RuntimeError("Orchestrator não inicializado.")
|
| 147 |
+
logger.info(f"--- ORQUESTRADOR: Tarefa de Masterização HD com SeedVR 3B ---")
|
|
|
|
|
|
|
|
|
|
| 148 |
|
| 149 |
run_timestamp = int(time.time())
|
| 150 |
+
output_path = os.path.join(self.director.workspace_dir, f"hd_mastered_movie_3B_{run_timestamp}.mp4")
|
| 151 |
|
| 152 |
final_path = seedvr_manager_singleton.process_video(
|
| 153 |
input_video_path=source_video_path,
|
| 154 |
output_video_path=output_path,
|
| 155 |
prompt=prompt,
|
|
|
|
| 156 |
steps=steps
|
| 157 |
)
|
| 158 |
logger.info(f"Masterização HD completa! Vídeo final em: {final_path}")
|
|
|
|
| 182 |
|
| 183 |
if progress_callback: progress_callback(0.5, "Gerando trilha de áudio...")
|
| 184 |
|
|
|
|
| 185 |
final_path = mmaudio_manager_singleton.generate_audio_for_video(
|
| 186 |
video_path=source_video_path,
|
| 187 |
prompt=audio_prompt,
|