fix directories, mime, and inference categories

This commit is contained in:
saltacc committed 2024-01-09 18:58:01 -08:00
1 parent c25cc3b126
commit dbdc5b3c9d
5 files changed
+17 -18

No files matched your search

@@ -55,6 +55,7 @@ impl InferenceCategory {
"text_to_speech" => Ok(Self::TextToSpeech),
"voice_conversion" => Ok(Self::VoiceConversion),
"video_filter" => Ok(Self::VideoFilter),
"mocap" => Ok(Self::Mocap),
_ => Err(format!("invalid value: {:?}", value)),
}
}
@@ -67,6 +68,7 @@ impl InferenceCategory {
Self::TextToSpeech,
Self::VoiceConversion,
Self::VideoFilter,
Self::Mocap,
])
}
}
@@ -33,7 +33,7 @@ static IGNORED_ENVIRONMENT_VARS : Lazy<HashSet<String>> = Lazy::new(|| {
#[derive(Clone)]
pub struct MocapnetInferenceCommand {
/// Where the code lives
mocapnet_root_code_directory: PathBuf,
pub(crate) mocapnet_root_code_directory: PathBuf,
/// A single executable script or a much larger bash command.
executable_or_command: ExecutableOrCommand,
@@ -152,8 +152,7 @@ impl MocapnetInferenceCommand {
// get video path
let video_path = args.video_file.as_ref();
command.push_str(&format!(" --from {}", path_to_string(video_path)));
command.push_str(" --all --save ");
command.push_str(" --all --save --headless 2");
// ===== End Python Args =====
@@ -15,7 +15,7 @@ use mimetypes::mimetype_for_file::get_mimetype_for_file;
use mysql_queries::payloads::generic_inference_args::generic_inference_args::PolymorphicInferenceArgs::Mc;
use mysql_queries::queries::generic_inference::job::list_available_generic_inference_jobs::AvailableInferenceJob;
use mysql_queries::queries::media_files::create::insert_media_file_from_mocapnet::{insert_media_file_from_mocapnet, InsertArgs};
use crate::job::job_types::mocap::mocap_net::mocapnet_inference_command::InferenceArgs;
use crate::job::job_types::mocap::mocap_net::mocapnet_inference_command::{InferenceArgs, MocapnetInferenceCommand};
use crate::job::job_loop::job_success_result::{JobSuccessResult, ResultEntity};
use crate::job::job_loop::process_single_job_error::ProcessSingleJobError;
@@ -95,11 +95,12 @@ pub async fn process_job(args: MocapNetProcessJobArgs<'_>) -> Result<JobSuccessR
job_progress_reporter.log_status("running inference")
.map_err(|e| ProcessSingleJobError::Other(e))?;
let output_video_fs_path = work_temp_dir.path().join("blend.mp4");
let output_bvh_path = model_dependencies.inference_command.mocapnet_root_code_directory.clone()
.join("out.bvh");
info!("Running MocapNET inference...");
info!("Expected output video filename: {:?}", &output_video_fs_path);
info!("Expected output bvh filename: {:?}", &output_bvh_path);
// TODO: Limit output length for non-premium (???)
@@ -143,7 +144,7 @@ pub async fn process_job(args: MocapNetProcessJobArgs<'_>) -> Result<JobSuccessR
}
safe_delete_temp_file(&video_path.filesystem_path);
safe_delete_temp_file(&output_video_fs_path);
safe_delete_temp_file(&output_bvh_path);
safe_delete_temp_file(&stderr_output_file);
safe_delete_temp_directory(&work_temp_dir);
@@ -152,13 +153,13 @@ pub async fn process_job(args: MocapNetProcessJobArgs<'_>) -> Result<JobSuccessR
// ==================== CHECK NON-WATERMARKED RESULT ==================== //
info!("Checking that output file exists: {:?} ...", output_video_fs_path);
info!("Checking that output file exists: {:?} ...", output_bvh_path);
check_file_exists(&output_video_fs_path).map_err(|e| ProcessSingleJobError::Other(e))?;
check_file_exists(&output_bvh_path).map_err(|e| ProcessSingleJobError::Other(e))?;
// ==================== OPTIONAL WATERMARK ==================== //
let finished_file = output_video_fs_path.clone();
let finished_file = output_bvh_path.clone();
// ==================== CHECK ALL FILES EXIST AND GET METADATA ==================== //
@@ -172,10 +173,7 @@ pub async fn process_job(args: MocapNetProcessJobArgs<'_>) -> Result<JobSuccessR
info!("Interrogating result mimetype ...");
let mimetype = get_mimetype_for_file(&finished_file)
.map_err(|err| ProcessSingleJobError::from_io_error(err))?
.map(|mime| mime.to_string())
.ok_or(ProcessSingleJobError::Other(anyhow!("Mimetype could not be determined")))?;
let mimetype = "application/octet-stream";
info!("Calculating sha256...");
@@ -209,7 +207,7 @@ pub async fn process_job(args: MocapNetProcessJobArgs<'_>) -> Result<JobSuccessR
// ==================== DELETE TEMP FILES ==================== //
safe_delete_temp_file(&video_path.filesystem_path);
safe_delete_temp_file(&output_video_fs_path);
safe_delete_temp_file(&output_bvh_path);
safe_delete_temp_file(&stderr_output_file);
safe_delete_temp_directory(&work_temp_dir);
@@ -188,7 +188,7 @@ pub async fn enqueue_mocapnet_handler(
maybe_raw_inference_text: None, // No text
maybe_max_duration_seconds: None,
maybe_inference_args: Some(GenericInferenceArgs {
inference_category: Some(InferenceCategoryAbbreviated::VideoFilter),
inference_category: Some(InferenceCategoryAbbreviated::Mocap),
args: Some(PolymorphicInferenceArgs::Mc(inference_args)),
}),
maybe_creator_user_token: maybe_user_token.as_ref(),
@@ -196,7 +196,7 @@ pub async fn enqueue_mocapnet_handler(
creator_ip_address: &ip_address,
creator_set_visibility: set_visibility,
priority_level,
requires_keepalive: plan.rerender_requires_frontent_keepalive(),
requires_keepalive: plan.mocapnet_requires_frontend_keepalive(),
is_debug_request,
maybe_routing_tag: maybe_routing_tag.as_deref(),
mysql_pool: &server_state.mysql_pool,
@@ -229,7 +229,7 @@ pub fn add_routes<T, B> (app: App<T>, server_environment: ServerEnvironment) ->
// ==================== Mocap ========================
let mut app = RouteBuilder::from_app(app)
.add_get("/v1/mocap/mocapnet/create", enqueue_mocapnet_handler)
.add_post("/v1/mocap/mocapnet/create", enqueue_mocapnet_handler)
.into_app();
// ==================== "Generic" Inference ====================