diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_api/generate/video/helpers/hydrate_router_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_api/generate/video/helpers/hydrate_router_request.rs index 13e594c125..8383841dec 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_api/generate/video/helpers/hydrate_router_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_api/generate/video/helpers/hydrate_router_request.rs @@ -3,6 +3,7 @@ use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost use artcraft_router::api::audio_list_ref::AudioListRef; use artcraft_router::api::character_list_ref::CharacterListRef; use artcraft_router::api::router_aspect_ratio::RouterAspectRatio; +use artcraft_router::api::router_bitrate::RouterBitrate; use artcraft_router::api::router_resolution::RouterResolution; use artcraft_router::api::router_video_model::RouterVideoModel; use artcraft_router::api::image_list_ref::ImageListRef; @@ -12,6 +13,7 @@ use artcraft_router::api::video_list_ref::VideoListRef; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use enums::common::generation::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioEnum; +use enums::common::generation::common_bitrate::CommonBitrate as CommonBitrateEnum; use enums::common::generation::common_resolution::CommonResolution as CommonResolutionEnum; use enums::common::generation::common_video_model::CommonVideoModel as CommonVideoModelEnum; @@ -36,6 +38,11 @@ pub fn hydrate_to_router_request( .map(convert_resolution) .transpose()?; + let bitrate = request.bitrate + .as_ref() + .map(convert_bitrate) + .transpose()?; + Ok(GenerateVideoRequestBuilder { model, provider: RouterProvider::Artcraft, @@ -55,7 +62,7 @@ pub fn hydrate_to_router_request( .map(CharacterListRef::CharacterTokens), resolution, aspect_ratio, - bitrate: None, + bitrate, duration_seconds: request.duration_seconds, video_batch_count: request.video_batch_count, generate_audio: request.generate_audio, @@ -96,3 +103,14 @@ fn convert_resolution( ) }) } + +fn convert_bitrate( + bitrate: &CommonBitrateEnum, +) -> Result { + let json = serde_json::to_string(bitrate)?; + serde_json::from_str(&json).map_err(|e| { + CommonWebError::BadInputWithSimpleMessage( + format!("Unsupported bitrate: {}", e), + ) + }) +} diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs index 13e594c125..8383841dec 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs @@ -3,6 +3,7 @@ use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost use artcraft_router::api::audio_list_ref::AudioListRef; use artcraft_router::api::character_list_ref::CharacterListRef; use artcraft_router::api::router_aspect_ratio::RouterAspectRatio; +use artcraft_router::api::router_bitrate::RouterBitrate; use artcraft_router::api::router_resolution::RouterResolution; use artcraft_router::api::router_video_model::RouterVideoModel; use artcraft_router::api::image_list_ref::ImageListRef; @@ -12,6 +13,7 @@ use artcraft_router::api::video_list_ref::VideoListRef; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use enums::common::generation::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioEnum; +use enums::common::generation::common_bitrate::CommonBitrate as CommonBitrateEnum; use enums::common::generation::common_resolution::CommonResolution as CommonResolutionEnum; use enums::common::generation::common_video_model::CommonVideoModel as CommonVideoModelEnum; @@ -36,6 +38,11 @@ pub fn hydrate_to_router_request( .map(convert_resolution) .transpose()?; + let bitrate = request.bitrate + .as_ref() + .map(convert_bitrate) + .transpose()?; + Ok(GenerateVideoRequestBuilder { model, provider: RouterProvider::Artcraft, @@ -55,7 +62,7 @@ pub fn hydrate_to_router_request( .map(CharacterListRef::CharacterTokens), resolution, aspect_ratio, - bitrate: None, + bitrate, duration_seconds: request.duration_seconds, video_batch_count: request.video_batch_count, generate_audio: request.generate_audio, @@ -96,3 +103,14 @@ fn convert_resolution( ) }) } + +fn convert_bitrate( + bitrate: &CommonBitrateEnum, +) -> Result { + let json = serde_json::to_string(bitrate)?; + serde_json::from_str(&json).map_err(|e| { + CommonWebError::BadInputWithSimpleMessage( + format!("Unsupported bitrate: {}", e), + ) + }) +}