From 7a1ce7c9fd77bd97e99c652aa1a176f2e8145c3f Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 5 Feb 2025 14:35:42 -0500 Subject: [PATCH] animate-x http args, refactor job --- .../inner_payloads/studio_gen2_payload.rs | 8 ++++++++ .../src/job/job_types/studio_gen2/animate_x/mod.rs | 0 .../inference_job/src/job/job_types/studio_gen2/mod.rs | 3 ++- .../studio_gen2/process_single_studio_gen2_job.rs | 8 ++++---- .../src/job/job_types/studio_gen2/stable_animator/mod.rs | 1 + .../{ => stable_animator}/stable_animator_command.rs | 0 .../job/job_types/studio_gen2/studio_gen2_dependencies.rs | 2 +- .../endpoints/studio_gen2/enqueue_studio_gen2_handler.rs | 6 ++++++ 8 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 crates/service/job/inference_job/src/job/job_types/studio_gen2/animate_x/mod.rs create mode 100644 crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator/mod.rs rename crates/service/job/inference_job/src/job/job_types/studio_gen2/{ => stable_animator}/stable_animator_command.rs (100%) diff --git a/crates/lib/mysql_queries/src/payloads/generic_inference_args/inner_payloads/studio_gen2_payload.rs b/crates/lib/mysql_queries/src/payloads/generic_inference_args/inner_payloads/studio_gen2_payload.rs index 0150fd7069..1c400e0f9d 100644 --- a/crates/lib/mysql_queries/src/payloads/generic_inference_args/inner_payloads/studio_gen2_payload.rs +++ b/crates/lib/mysql_queries/src/payloads/generic_inference_args/inner_payloads/studio_gen2_payload.rs @@ -38,4 +38,12 @@ pub struct StudioGen2Payload { #[serde(rename = "fp")] #[serde(skip_serializing_if = "Option::is_none")] pub fps: Option, + + #[serde(rename = "mf")] + #[serde(skip_serializing_if = "Option::is_none")] + pub max_frames: Option, + + #[serde(rename = "rnd")] + #[serde(skip_serializing_if = "Option::is_none")] + pub rounds: Option, } diff --git a/crates/service/job/inference_job/src/job/job_types/studio_gen2/animate_x/mod.rs b/crates/service/job/inference_job/src/job/job_types/studio_gen2/animate_x/mod.rs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/crates/service/job/inference_job/src/job/job_types/studio_gen2/mod.rs b/crates/service/job/inference_job/src/job/job_types/studio_gen2/mod.rs index 778c0ed19b..f5fa6da3cf 100644 --- a/crates/service/job/inference_job/src/job/job_types/studio_gen2/mod.rs +++ b/crates/service/job/inference_job/src/job/job_types/studio_gen2/mod.rs @@ -1,6 +1,7 @@ +pub mod animate_x; pub mod download_file_for_studio; pub mod process_single_studio_gen2_job; -pub mod stable_animator_command; +pub mod stable_animator; pub mod studio_gen2_dependencies; pub mod studio_gen2_dirs; pub mod validate_and_save_results; \ No newline at end of file diff --git a/crates/service/job/inference_job/src/job/job_types/studio_gen2/process_single_studio_gen2_job.rs b/crates/service/job/inference_job/src/job/job_types/studio_gen2/process_single_studio_gen2_job.rs index 246bcba4a0..2fc0ece929 100644 --- a/crates/service/job/inference_job/src/job/job_types/studio_gen2/process_single_studio_gen2_job.rs +++ b/crates/service/job/inference_job/src/job/job_types/studio_gen2/process_single_studio_gen2_job.rs @@ -1,7 +1,7 @@ use crate::job::job_loop::job_success_result::{JobSuccessResult, ResultEntity}; use crate::job::job_loop::process_single_job_error::ProcessSingleJobError; use crate::job::job_types::studio_gen2::download_file_for_studio::{download_file_for_studio, DownloadFileForStudioArgs}; -use crate::job::job_types::studio_gen2::stable_animator_command::InferenceArgs; +use crate::job::job_types::studio_gen2::stable_animator::stable_animator_command::InferenceArgs; use crate::job::job_types::studio_gen2::studio_gen2_dirs::StudioGen2Dirs; use crate::job::job_types::studio_gen2::validate_and_save_results::{validate_and_save_results, SaveResultsArgs}; use crate::job::job_types::workflow::face_fusion::process_face_fusion_job::process_face_fusion_job; @@ -19,6 +19,8 @@ use crate::job::job_types::workflow::video_style_transfer::util::process_preview use crate::job::job_types::workflow::video_style_transfer::util::video_pathing::{PrimaryInputVideoAndPaths, SecondaryInputVideoAndPaths, VideoPathing}; use crate::job::job_types::workflow::video_style_transfer::util::write_workflow_prompt::{write_workflow_prompt, WorkflowPromptArgs}; use crate::state::job_dependencies::JobDependencies; +use crate::util::common_commands::ffmpeg::ffmpeg_audio_replace_args::FfmpegAudioReplaceArgs; +use crate::util::common_commands::ffmpeg::ffmpeg_resample_fps_args::FfmpegResampleFpsArgs; use anyhow::anyhow; use bucket_paths::legacy::remote_file_manager_paths::remote_cloud_bucket_details::RemoteCloudBucketDetails; use bucket_paths::legacy::typified_paths::public::media_files::bucket_directory::MediaFileBucketDirectory; @@ -43,13 +45,11 @@ use std::io::{stdout, BufReader}; use std::path::{Path, PathBuf}; use std::thread; use std::time::{Duration, Instant}; +use subprocess_common::command_runner::command_runner_args::{RunAsSubprocessArgs, StreamRedirection}; use tokens::tokens::media_files::MediaFileToken; use tokio::sync::oneshot; use tokio::sync::oneshot::channel; -use subprocess_common::command_runner::command_runner_args::{RunAsSubprocessArgs, StreamRedirection}; use videos::ffprobe_get_dimensions::ffprobe_get_dimensions; -use crate::util::common_commands::ffmpeg::ffmpeg_audio_replace_args::FfmpegAudioReplaceArgs; -use crate::util::common_commands::ffmpeg::ffmpeg_resample_fps_args::FfmpegResampleFpsArgs; pub async fn process_single_studio_gen2_job( deps: &JobDependencies, diff --git a/crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator/mod.rs b/crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator/mod.rs new file mode 100644 index 0000000000..7c1ee67e71 --- /dev/null +++ b/crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator/mod.rs @@ -0,0 +1 @@ +pub mod stable_animator_command; \ No newline at end of file diff --git a/crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator_command.rs b/crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator/stable_animator_command.rs similarity index 100% rename from crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator_command.rs rename to crates/service/job/inference_job/src/job/job_types/studio_gen2/stable_animator/stable_animator_command.rs diff --git a/crates/service/job/inference_job/src/job/job_types/studio_gen2/studio_gen2_dependencies.rs b/crates/service/job/inference_job/src/job/job_types/studio_gen2/studio_gen2_dependencies.rs index f6d0b426a0..c550a65c9b 100644 --- a/crates/service/job/inference_job/src/job/job_types/studio_gen2/studio_gen2_dependencies.rs +++ b/crates/service/job/inference_job/src/job/job_types/studio_gen2/studio_gen2_dependencies.rs @@ -1,4 +1,4 @@ -use crate::job::job_types::studio_gen2::stable_animator_command::StableAnimatorCommand; +use crate::job::job_types::studio_gen2::stable_animator::stable_animator_command::StableAnimatorCommand; use crate::state::common::watermark_configs::WatermarkConfigs; use errors::AnyhowResult; use std::path::{Path, PathBuf}; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/studio_gen2/enqueue_studio_gen2_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/studio_gen2/enqueue_studio_gen2_handler.rs index f01758667e..1025fcc3c3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/studio_gen2/enqueue_studio_gen2_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/studio_gen2/enqueue_studio_gen2_handler.rs @@ -70,6 +70,10 @@ pub struct EnqueueStudioGen2Request { pub output_width: Option, pub output_height: Option, pub fps: Option, + + // TODO + pub max_frames: Option, + pub rounds: Option, } #[derive(Serialize, ToSchema)] @@ -257,6 +261,8 @@ pub async fn enqueue_studio_gen2_handler( output_width: request.output_width, output_height: request.output_height, fps: request.fps, + max_frames: request.max_frames, + rounds: request.rounds, }; info!("Creating ComfyUI job record...");