create_test_vsf/
create_test_vsf.rs1use vsf::builders::{
4 build_raw_image, Aperture, BlackLevel, CameraSettings, CfaPattern, FlashFired, FocalLength,
5 FocusDistance, IsoSpeed, MeteringMode, RawMetadata, ShutterTime, WhiteLevel,
6};
7use vsf::types::BitPackedTensor;
8
9fn main() {
10 let samples: Vec<u64> = (0..64).map(|i| i * 4).collect(); let image = BitPackedTensor::pack(8, vec![8, 8], &samples);
13
14 let metadata = RawMetadata {
16 cfa_pattern: Some(CfaPattern::new(vec![b'R', b'G', b'G', b'B']).unwrap()), black_level: Some(BlackLevel::new(64.0).unwrap()),
18 white_level: Some(WhiteLevel::new(255.0).unwrap()),
19 dark_frame_hash: None,
20 flat_field_hash: None,
21 bias_frame_hash: None,
22 vignette_correction_hash: None,
23 distortion_correction_hash: None,
24 magic_9: None,
25 };
26
27 let camera = CameraSettings {
29 make: None,
30 model: None,
31 serial_number: None,
32 iso_speed: Some(IsoSpeed::new(800.0).unwrap()),
33 shutter_time_s: Some(ShutterTime::new(1.0 / 60.0).unwrap()), aperture_f_number: Some(Aperture::new(2.8).unwrap()),
35 focal_length_m: Some(FocalLength::new(0.050).unwrap()), exposure_compensation: None,
37 focus_distance_m: Some(FocusDistance::new(3.5).unwrap()),
38 flash_fired: Some(FlashFired::new(false).unwrap()),
39 metering_mode: Some(MeteringMode::new("matrix".to_string()).unwrap()),
40 };
41
42 let bytes = build_raw_image(image, Some(metadata), Some(camera), None)
44 .expect("Failed to build VSF file");
45
46 std::fs::write("test_sample.vsf", &bytes).expect("Failed to write file");
48
49 println!("Created test_sample.vsf ({} bytes)", bytes.len());
50}