add aspect ratio controls

This commit is contained in:
Brandon Thomas committed 2026-03-08 17:33:33 -04:00
1 parent 9720223e23
commit b8f481b094
2 files changed
+22 -4

No files matched your search

@@ -21,7 +21,7 @@ use enums::common::model_type::ModelType;
use enums::common::visibility::Visibility;
use fal_client::creds::open_ai_api_key::OpenAiApiKey;
use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator;
use fal_client::requests::webhook::video::image::enqueue_kling_3p0_pro_image_to_video_webhook::{enqueue_kling_3p0_pro_image_to_video_webhook, EnqueueKling3p0ProImageToVideoArgs, EnqueueKling3p0ProImageToVideoDuration};
use fal_client::requests::webhook::video::image::enqueue_kling_3p0_pro_image_to_video_webhook::{enqueue_kling_3p0_pro_image_to_video_webhook, EnqueueKling3p0ProImageToVideoArgs, EnqueueKling3p0ProImageToVideoAspectRatio, EnqueueKling3p0ProImageToVideoDuration};
use fal_client::requests::webhook::video::text::enqueue_kling_3p0_pro_text_to_video_webhook::{enqueue_kling_3p0_pro_text_to_video_webhook, EnqueueKling3p0ProTextToVideoArgs, EnqueueKling3p0ProTextToVideoAspectRatio, EnqueueKling3p0ProTextToVideoDuration};
use http_server_common::request::get_request_ip::get_request_ip;
use log::{error, info, warn};
@@ -87,6 +87,14 @@ fn map_aspect_ratio_t2v(aspect_ratio: Option<Kling3p0ProMultiFunctionVideoGenAsp
}
}
fn map_aspect_ratio_i2v(aspect_ratio: Option<Kling3p0ProMultiFunctionVideoGenAspectRatio>) -> Option<EnqueueKling3p0ProImageToVideoAspectRatio> {
aspect_ratio.map(|ar| match ar {
Kling3p0ProMultiFunctionVideoGenAspectRatio::Square => EnqueueKling3p0ProImageToVideoAspectRatio::Square,
Kling3p0ProMultiFunctionVideoGenAspectRatio::SixteenByNine => EnqueueKling3p0ProImageToVideoAspectRatio::SixteenByNine,
Kling3p0ProMultiFunctionVideoGenAspectRatio::NineBySixteen => EnqueueKling3p0ProImageToVideoAspectRatio::NineBySixteen,
})
}
/// Kling 3.0 Pro Multi-Function (text and image to video)
#[utoipa::path(
post,
@@ -198,6 +206,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
info!("image-to-video case");
let duration = map_duration_i2v(request.duration);
let aspect_ratio = map_aspect_ratio_i2v(request.aspect_ratio);
let args = EnqueueKling3p0ProImageToVideoArgs {
prompt: request.prompt.as_deref().unwrap_or("").to_string(),
@@ -206,7 +215,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
generate_audio: request.generate_audio,
negative_prompt: request.negative_prompt.clone(),
duration: Some(duration),
aspect_ratio: None,
aspect_ratio,
shot_type: None,
webhook_url: &server_state.fal.webhook_url,
api_key: &server_state.fal.api_key,
@@ -21,7 +21,7 @@ use enums::common::model_type::ModelType;
use enums::common::visibility::Visibility;
use fal_client::creds::open_ai_api_key::OpenAiApiKey;
use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator;
use fal_client::requests::webhook::video::image::enqueue_kling_3p0_standard_image_to_video_webhook::{enqueue_kling_3p0_standard_image_to_video_webhook, EnqueueKling3p0StandardImageToVideoArgs, EnqueueKling3p0StandardImageToVideoDuration};
use fal_client::requests::webhook::video::image::enqueue_kling_3p0_standard_image_to_video_webhook::{enqueue_kling_3p0_standard_image_to_video_webhook, EnqueueKling3p0StandardImageToVideoArgs, EnqueueKling3p0StandardImageToVideoAspectRatio, EnqueueKling3p0StandardImageToVideoDuration};
use fal_client::requests::webhook::video::text::enqueue_kling_3p0_standard_text_to_video_webhook::{enqueue_kling_3p0_standard_text_to_video_webhook, EnqueueKling3p0StandardTextToVideoArgs, EnqueueKling3p0StandardTextToVideoAspectRatio, EnqueueKling3p0StandardTextToVideoDuration};
use http_server_common::request::get_request_ip::get_request_ip;
use log::{error, info, warn};
@@ -87,6 +87,14 @@ fn map_aspect_ratio_t2v(aspect_ratio: Option<Kling3p0StandardMultiFunctionVideoG
}
}
fn map_aspect_ratio_i2v(aspect_ratio: Option<Kling3p0StandardMultiFunctionVideoGenAspectRatio>) -> Option<EnqueueKling3p0StandardImageToVideoAspectRatio> {
aspect_ratio.map(|ar| match ar {
Kling3p0StandardMultiFunctionVideoGenAspectRatio::Square => EnqueueKling3p0StandardImageToVideoAspectRatio::Square,
Kling3p0StandardMultiFunctionVideoGenAspectRatio::SixteenByNine => EnqueueKling3p0StandardImageToVideoAspectRatio::SixteenByNine,
Kling3p0StandardMultiFunctionVideoGenAspectRatio::NineBySixteen => EnqueueKling3p0StandardImageToVideoAspectRatio::NineBySixteen,
})
}
/// Kling 3.0 Standard Multi-Function (text and image to video)
#[utoipa::path(
post,
@@ -198,6 +206,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
info!("image-to-video case");
let duration = map_duration_i2v(request.duration);
let aspect_ratio = map_aspect_ratio_i2v(request.aspect_ratio);
let args = EnqueueKling3p0StandardImageToVideoArgs {
prompt: request.prompt.as_deref().unwrap_or("").to_string(),
@@ -206,7 +215,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
generate_audio: request.generate_audio,
negative_prompt: request.negative_prompt.clone(),
duration: Some(duration),
aspect_ratio: None,
aspect_ratio,
shot_type: None,
webhook_url: &server_state.fal.webhook_url,
api_key: &server_state.fal.api_key,