Add TVAI parameter validation and fix filter name
- Add comprehensive TVAI parameter validation in OutputSettings: * Validate scale, width, height ranges * Clamp enhancement parameters (-100 to 100) * Validate blend factor (0.0 to 1.0) * Validate device, VRAM, and instances settings * Set default TVAI model and parameters - Fix filter name in parameter analysis example: * tvai_stab -> tvai_stb (correct filter name) Files modified: - cargos/tvai-v2/src/template.rs (TVAI validation and defaults) - cargos/tvai/examples/parameter_usage_analysis.rs (filter name fix)
This commit is contained in:
parent
522c6ed5eb
commit
ffb226fe73
|
|
@ -862,6 +862,78 @@ impl OutputSettings {
|
||||||
self.hide_banner = Some(true);
|
self.hide_banner = Some(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate TVAI parameters
|
||||||
|
if let Some(tvai_scale) = self.tvai_scale {
|
||||||
|
if tvai_scale < 0 || tvai_scale > 10 {
|
||||||
|
self.tvai_scale = Some(tvai_scale.clamp(0, 10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(tvai_width) = self.tvai_width {
|
||||||
|
if tvai_width <= 0 || tvai_width > 16384 {
|
||||||
|
return Err(TvaiError::ValidationError(format!("Invalid TVAI width: {}", tvai_width)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(tvai_height) = self.tvai_height {
|
||||||
|
if tvai_height <= 0 || tvai_height > 16384 {
|
||||||
|
return Err(TvaiError::ValidationError(format!("Invalid TVAI height: {}", tvai_height)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate TVAI enhancement parameters (-100 to 100 range)
|
||||||
|
if let Some(preblur) = self.tvai_preblur {
|
||||||
|
self.tvai_preblur = Some(preblur.clamp(-100, 100));
|
||||||
|
}
|
||||||
|
if let Some(noise) = self.tvai_noise {
|
||||||
|
self.tvai_noise = Some(noise.clamp(-100, 100));
|
||||||
|
}
|
||||||
|
if let Some(details) = self.tvai_details {
|
||||||
|
self.tvai_details = Some(details.clamp(-100, 100));
|
||||||
|
}
|
||||||
|
if let Some(halo) = self.tvai_halo {
|
||||||
|
self.tvai_halo = Some(halo.clamp(-100, 100));
|
||||||
|
}
|
||||||
|
if let Some(blur) = self.tvai_blur {
|
||||||
|
self.tvai_blur = Some(blur.clamp(-100, 100));
|
||||||
|
}
|
||||||
|
if let Some(compression) = self.tvai_compression {
|
||||||
|
self.tvai_compression = Some(compression.clamp(-100, 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate TVAI blend factor (0.0 to 1.0)
|
||||||
|
if let Some(blend) = self.tvai_blend {
|
||||||
|
if blend < 0.0 || blend > 1.0 {
|
||||||
|
self.tvai_blend = Some(blend.clamp(0.0, 1.0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate TVAI device (-2 to reasonable GPU count)
|
||||||
|
if let Some(device) = self.tvai_device {
|
||||||
|
if device < -2 || device > 15 {
|
||||||
|
self.tvai_device = Some(device.clamp(-2, 15));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate TVAI VRAM setting (0 or 1)
|
||||||
|
if let Some(vram) = self.tvai_vram {
|
||||||
|
if vram < 0 || vram > 1 {
|
||||||
|
self.tvai_vram = Some(vram.clamp(0, 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate TVAI instances (1 to reasonable count)
|
||||||
|
if let Some(instances) = self.tvai_instances {
|
||||||
|
if instances < 1 || instances > 8 {
|
||||||
|
self.tvai_instances = Some(instances.clamp(1, 8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set default TVAI values if None
|
||||||
|
if self.tvai_model.is_none() {
|
||||||
|
self.tvai_model = Some("prob-4".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -958,6 +1030,27 @@ impl Default for OutputSettings {
|
||||||
copy_metadata: Some(true),
|
copy_metadata: Some(true),
|
||||||
no_audio: Some(false),
|
no_audio: Some(false),
|
||||||
hide_banner: Some(true),
|
hide_banner: Some(true),
|
||||||
|
|
||||||
|
// Filter and metadata defaults
|
||||||
|
filter_complex: None,
|
||||||
|
metadata: None,
|
||||||
|
|
||||||
|
// TVAI enhancement defaults
|
||||||
|
tvai_model: Some("prob-4".to_string()),
|
||||||
|
tvai_scale: Some(0), // Auto scale
|
||||||
|
tvai_width: None,
|
||||||
|
tvai_height: None,
|
||||||
|
tvai_preblur: Some(0),
|
||||||
|
tvai_noise: Some(0),
|
||||||
|
tvai_details: Some(0),
|
||||||
|
tvai_halo: Some(0),
|
||||||
|
tvai_blur: Some(0),
|
||||||
|
tvai_compression: Some(0),
|
||||||
|
tvai_estimate: Some(8),
|
||||||
|
tvai_blend: Some(0.2),
|
||||||
|
tvai_device: Some(-2), // Auto device
|
||||||
|
tvai_vram: Some(1), // High VRAM usage
|
||||||
|
tvai_instances: Some(1),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
|
||||||
if cmd.contains("tvai_up") {
|
if cmd.contains("tvai_up") {
|
||||||
println!("✅ Enhancement filter applied (uses: model, scale, compress, detail, sharpen, denoise, dehalo, deblur)");
|
println!("✅ Enhancement filter applied (uses: model, scale, compress, detail, sharpen, denoise, dehalo, deblur)");
|
||||||
}
|
}
|
||||||
if cmd.contains("tvai_stab") {
|
if cmd.contains("tvai_stb") {
|
||||||
println!("✅ Stabilization filter applied (uses: method, smooth)");
|
println!("✅ Stabilization filter applied (uses: method, smooth)");
|
||||||
}
|
}
|
||||||
if cmd.contains("tvai_fi") {
|
if cmd.contains("tvai_fi") {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue