135 lines
5.4 KiB
Rust
135 lines
5.4 KiB
Rust
//! Migration Demo: From Old Presets to New Template System
|
|
//!
|
|
//! This example shows how to migrate from the old preset system
|
|
//! to the new Topaz template system.
|
|
|
|
use tvai::*;
|
|
use std::path::Path;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
|
|
println!("=== Migration from Old Presets to New Template System ===\n");
|
|
|
|
// Show old preset system (now empty)
|
|
println!("Old Preset System (deprecated):");
|
|
let old_presets = global_presets().lock().unwrap();
|
|
let video_presets = old_presets.list_video_presets();
|
|
let image_presets = old_presets.list_image_presets();
|
|
|
|
if video_presets.is_empty() && image_presets.is_empty() {
|
|
println!(" ⚠ No presets available (moved to template system)");
|
|
} else {
|
|
println!(" Video presets: {:?}", video_presets);
|
|
println!(" Image presets: {:?}", image_presets);
|
|
}
|
|
drop(old_presets);
|
|
println!();
|
|
|
|
// Show new template system
|
|
println!("New Template System (recommended):");
|
|
let templates = list_available_templates();
|
|
println!(" Available templates: {}", templates.len());
|
|
|
|
for (i, template_name) in templates.iter().take(5).enumerate() {
|
|
if let Some((name, description)) = get_template_info(template_name) {
|
|
println!(" {}. {} ({})", i + 1, name, template_name);
|
|
println!(" {}", description);
|
|
}
|
|
}
|
|
|
|
if templates.len() > 5 {
|
|
println!(" ... and {} more templates", templates.len() - 5);
|
|
}
|
|
println!();
|
|
|
|
// Migration examples
|
|
println!("=== Migration Examples ===\n");
|
|
|
|
// Example 1: Video upscaling migration
|
|
println!("1. Video Upscaling Migration:");
|
|
println!(" Old way (deprecated):");
|
|
println!(" let presets = global_presets().lock().unwrap();");
|
|
println!(" let preset = presets.get_video_preset(\"general_2x\");");
|
|
println!();
|
|
println!(" New way (recommended):");
|
|
println!(" upscale_to_4k(input, output).await?;");
|
|
println!(" // or");
|
|
println!(" process_with_template(input, output, \"upscale_to_4k\").await?;");
|
|
println!();
|
|
|
|
// Example 2: Slow motion migration
|
|
println!("2. Slow Motion Migration:");
|
|
println!(" Old way (deprecated):");
|
|
println!(" let presets = global_presets().lock().unwrap();");
|
|
println!(" let preset = presets.get_video_preset(\"slow_motion_4x\");");
|
|
println!();
|
|
println!(" New way (recommended):");
|
|
println!(" slow_motion_4x(input, output).await?;");
|
|
println!(" // or");
|
|
println!(" process_with_template(input, output, \"4x_slow_motion\").await?;");
|
|
println!();
|
|
|
|
// Example 3: Custom processing migration
|
|
println!("3. Custom Processing Migration:");
|
|
println!(" Old way (deprecated):");
|
|
println!(" let mut presets = global_presets().lock().unwrap();");
|
|
println!(" presets.add_video_preset(name, custom_preset);");
|
|
println!();
|
|
println!(" New way (recommended):");
|
|
println!(" let manager = global_topaz_templates().lock().unwrap();");
|
|
println!(" manager.load_from_file(name, \"template.json\")?;");
|
|
println!(" process_with_template(input, output, name).await?;");
|
|
println!();
|
|
|
|
// Show advantages of new system
|
|
println!("=== Advantages of New Template System ===");
|
|
println!("✅ Based on official Topaz Video AI templates");
|
|
println!("✅ Complete parameter coverage (all Topaz settings)");
|
|
println!("✅ JSON format compatible with Topaz Video AI");
|
|
println!("✅ Built-in validation and error handling");
|
|
println!("✅ Easy template sharing and customization");
|
|
println!("✅ Convenient API functions for common tasks");
|
|
println!("✅ Better performance and memory usage");
|
|
println!();
|
|
|
|
// Demonstrate template application
|
|
println!("=== Template Application Demo ===");
|
|
let manager = global_topaz_templates().lock().unwrap();
|
|
|
|
if let Ok(applied) = manager.apply_template("upscale_to_4k") {
|
|
println!("Applied template: {}", applied.name);
|
|
println!("Description: {}", applied.description);
|
|
|
|
if let Some(upscale) = &applied.enhance_params.upscale {
|
|
println!("Upscale settings:");
|
|
println!(" • Scale factor: {}x", upscale.scale_factor);
|
|
println!(" • AI Model: {:?}", upscale.model);
|
|
println!(" • Quality preset: {:?}", upscale.quality_preset);
|
|
}
|
|
|
|
if let Some(interpolation) = &applied.enhance_params.interpolation {
|
|
println!("Interpolation settings:");
|
|
println!(" • Multiplier: {}x", interpolation.multiplier);
|
|
println!(" • Model: {:?}", interpolation.model);
|
|
}
|
|
}
|
|
drop(manager);
|
|
println!();
|
|
|
|
// Migration checklist
|
|
println!("=== Migration Checklist ===");
|
|
println!("□ Replace global_presets() calls with global_topaz_templates()");
|
|
println!("□ Use template-based functions: upscale_to_4k(), convert_to_60fps(), etc.");
|
|
println!("□ Convert custom presets to JSON template format");
|
|
println!("□ Update error handling for new template system");
|
|
println!("□ Test with new template validation");
|
|
println!("□ Update documentation and examples");
|
|
println!();
|
|
|
|
println!("=== Migration Complete! ===");
|
|
println!("The new template system provides better functionality and compatibility.");
|
|
println!("See docs/TEMPLATES.md for detailed documentation.");
|
|
|
|
Ok(())
|
|
}
|