[INFO] fetching crate oximedia-denoise 0.1.5...
[INFO] testing oximedia-denoise-0.1.5 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate oximedia-denoise 0.1.5 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate oximedia-denoise 0.1.5
[INFO] finished tweaking crates.io crate oximedia-denoise 0.1.5
[INFO] tweaked toml for crates.io crate oximedia-denoise 0.1.5 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate oximedia-denoise 0.1.5 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate oximedia-denoise 0.1.5 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 353279816dc2a6baf6a11982491115fc7af229576454caaf6b7fabaa7fe667c9
[INFO] running `Command { std: "docker" "start" "-a" "353279816dc2a6baf6a11982491115fc7af229576454caaf6b7fabaa7fe667c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "353279816dc2a6baf6a11982491115fc7af229576454caaf6b7fabaa7fe667c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "353279816dc2a6baf6a11982491115fc7af229576454caaf6b7fabaa7fe667c9", kill_on_drop: false }`
[INFO] [stdout] 353279816dc2a6baf6a11982491115fc7af229576454caaf6b7fabaa7fe667c9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f1b6e676adc895ffaa1b4b2a34c1ef9a8f4521bd3e473472fb2ad288da44c86d
[INFO] running `Command { std: "docker" "start" "-a" "f1b6e676adc895ffaa1b4b2a34c1ef9a8f4521bd3e473472fb2ad288da44c86d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling audio-core v0.2.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling strength_reduce v0.2.4
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling oxifft v0.2.0
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling audioadapter v3.0.0
[INFO] [stderr]    Compiling transpose v0.2.3
[INFO] [stderr]    Compiling primal-check v0.3.4
[INFO] [stderr]    Compiling audioadapter-sample v3.0.0
[INFO] [stderr]    Compiling oximedia-core v0.1.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling audioadapter-buffers v3.0.0
[INFO] [stderr]    Compiling windowfunctions v0.1.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling rustfft v6.4.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling oxiarc-core v0.2.6
[INFO] [stderr]    Compiling visibility v0.1.1
[INFO] [stderr]    Compiling oxifft-codegen v0.2.0
[INFO] [stderr]    Compiling spin v0.10.0
[INFO] [stderr]    Compiling seahash v4.1.0
[INFO] [stderr]    Compiling oxiarc-deflate v0.2.6
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling ttf-parser v0.21.1
[INFO] [stderr]    Compiling jpeg-decoder v0.3.2
[INFO] [stderr]    Compiling fontdue v0.9.3
[INFO] [stderr]    Compiling realfft v3.5.0
[INFO] [stderr]    Compiling rubato v2.0.0
[INFO] [stderr]    Compiling oximedia-audio v0.1.5
[INFO] [stderr]    Compiling oximedia-io v0.1.5
[INFO] [stderr]    Compiling oximedia-codec v0.1.5
[INFO] [stderr]    Compiling oximedia-graph v0.1.5
[INFO] [stderr]    Compiling oximedia-denoise v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 00s
[INFO] running `Command { std: "docker" "inspect" "f1b6e676adc895ffaa1b4b2a34c1ef9a8f4521bd3e473472fb2ad288da44c86d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f1b6e676adc895ffaa1b4b2a34c1ef9a8f4521bd3e473472fb2ad288da44c86d", kill_on_drop: false }`
[INFO] [stdout] f1b6e676adc895ffaa1b4b2a34c1ef9a8f4521bd3e473472fb2ad288da44c86d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5acf866b5525c440782d7264a5834ace49f896d6f307f3bc866be45cb86a101b
[INFO] running `Command { std: "docker" "start" "-a" "5acf866b5525c440782d7264a5834ace49f896d6f307f3bc866be45cb86a101b", kill_on_drop: false }`
[INFO] [stderr]    Compiling oximedia-denoise v0.1.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 10.76s
[INFO] running `Command { std: "docker" "inspect" "5acf866b5525c440782d7264a5834ace49f896d6f307f3bc866be45cb86a101b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5acf866b5525c440782d7264a5834ace49f896d6f307f3bc866be45cb86a101b", kill_on_drop: false }`
[INFO] [stdout] 5acf866b5525c440782d7264a5834ace49f896d6f307f3bc866be45cb86a101b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 5140e40eb978252f8f8a585182888644747c1503c70aadba35b37ac2f4f55c98
[INFO] running `Command { std: "docker" "start" "-a" "5140e40eb978252f8f8a585182888644747c1503c70aadba35b37ac2f4f55c98", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oximedia_denoise-9db166466668a798)
[INFO] [stdout] 
[INFO] [stdout] running 517 tests
[INFO] [stdout] test adaptive_denoise::tests::test_adaptive_threshold_at_one ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_adaptive_threshold_at_zero ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_adaptive_threshold_clamping ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_adaptive_threshold_midpoint_linear ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_noise_estimator_constant_signal_zero_noise ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_noise_estimator_noisy_signal_nonzero ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_noise_estimator_reset ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_noise_estimator_starts_zero ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_noise_estimator_warm_after_window ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_from_snr_excellent ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_from_snr_fair ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_from_snr_good ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_from_snr_poor ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_label ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_ord ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_quality_snr_improvement_db_ordering ... ok
[INFO] [stdout] test audio::tests::test_click_remover_detect_impulse ... ok
[INFO] [stdout] test audio::tests::test_click_remover_detect_no_clicks ... ok
[INFO] [stdout] test audio::tests::test_click_remover_repair ... ok
[INFO] [stdout] test audio::tests::test_dft_roundtrip ... ok
[INFO] [stdout] test audio::tests::test_noise_profile_empty ... ok
[INFO] [stdout] test audio::tests::test_wiener_denoiser_empty ... ok
[INFO] [stdout] test audio::tests::test_wiener_filter_gain ... ok
[INFO] [stdout] test audio::tests::test_wiener_filter_gain_all_noise ... ok
[INFO] [stdout] test audio::tests::test_wiener_filter_gain_no_noise ... ok
[INFO] [stdout] test adaptive_denoise::tests::test_adaptive_threshold_would_suppress ... ok
[INFO] [stdout] test audio::tests::test_hiss_remover_high_freq ... ok
[INFO] [stdout] test audio_denoise::tests::test_audio_denoise_filter_closed_gate ... ok
[INFO] [stdout] test audio_denoise::tests::test_audio_denoise_filter_hold_prevents_early_close ... ok
[INFO] [stdout] test audio_denoise::tests::test_audio_denoise_filter_open_gate ... ok
[INFO] [stdout] test audio_denoise::tests::test_audio_denoise_filter_rms_empty ... ok
[INFO] [stdout] test audio_denoise::tests::test_audio_denoise_filter_rms_sine ... ok
[INFO] [stdout] test audio_denoise::tests::test_audio_denoise_filter_train_and_apply_spectral ... ok
[INFO] [stdout] test audio_denoise::tests::test_noise_profile_default ... ok
[INFO] [stdout] test audio_denoise::tests::test_noise_profile_is_not_stationary_high_variance ... ok
[INFO] [stdout] test audio_denoise::tests::test_noise_profile_is_stationary_flat ... ok
[INFO] [stdout] test audio_denoise::tests::test_spectral_subtraction_beta_floor ... ok
[INFO] [stdout] test audio_denoise::tests::test_spectral_subtraction_compute_noise_floor ... ok
[INFO] [stdout] test audio_denoise::tests::test_spectral_subtraction_noise_spectrum_length ... ok
[INFO] [stdout] test audio_denoise::tests::test_noise_profile_empty_bands_is_stationary ... ok
[INFO] [stdout] test bilateral::tests::test_bilateral_params_default ... ok
[INFO] [stdout] test bilateral::tests::test_bilateral_params_sigma_range ... ok
[INFO] [stdout] test bilateral::tests::test_bilateral_params_sigma_spatial ... ok
[INFO] [stdout] test bilateral::tests::test_bilateral_weight_large_diff_small ... ok
[INFO] [stdout] test bilateral::tests::test_bilateral_weight_symmetry ... ok
[INFO] [stdout] test bilateral::tests::test_bilateral_weight_zero_diff ... ok
[INFO] [stdout] test bilateral::tests::test_denoiser_output_finite ... ok
[INFO] [stdout] test bilateral::tests::test_denoiser_params_accessor ... ok
[INFO] [stdout] test bilateral::tests::test_denoiser_output_size ... ok
[INFO] [stdout] test audio_denoise::tests::test_spectral_subtraction_apply_reduces_magnitude ... ok
[INFO] [stdout] test bilateral::tests::test_denoiser_uniform_image_unchanged ... ok
[INFO] [stdout] test bilateral::tests::test_filter_apply_pixel_uniform_patch ... ok
[INFO] [stdout] test audio::tests::test_noise_profile_from_silence ... ok
[INFO] [stdout] test bilateral::tests::test_filter_apply_pixel_centre_dominant ... ok
[INFO] [stdout] test bilateral::tests::test_filter_params_accessor ... ok
[INFO] [stdout] test bm3d::tests::test_config_default_values ... ok
[INFO] [stdout] test bm3d::tests::test_config_light_preset ... ok
[INFO] [stdout] test bm3d::tests::test_config_strong_preset ... ok
[INFO] [stdout] test bm3d::tests::test_config_validate_bad_block_size ... ok
[INFO] [stdout] test bm3d::tests::test_config_validate_bad_h ... ok
[INFO] [stdout] test bm3d::tests::test_block_match_always_includes_reference ... ok
[INFO] [stdout] test bm3d::tests::test_config_validate_bad_sigma ... ok
[INFO] [stdout] test bm3d::tests::test_config_validate_zero_max_matches ... ok
[INFO] [stdout] test bm3d::tests::test_dct1d_roundtrip ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_empty_passthrough ... ok
[INFO] [stdout] test bm3d::tests::test_dct2d_roundtrip ... ok
[INFO] [stdout] test bm3d::tests::test_block_match_max_count ... ok
[INFO] [stdout] test audio::tests::test_wiener_denoiser ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_small_frame ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_tiny_frame_passthrough ... ok
[INFO] [stdout] test bm3d::tests::test_denoiser_new ... ok
[INFO] [stdout] test bm3d::tests::test_l2_distance_identical ... ok
[INFO] [stdout] test bm3d::tests::test_l2_distance_known ... ok
[INFO] [stdout] test bm3d::tests::test_wht_non_power_of_two_length ... ok
[INFO] [stdout] test bm3d::tests::test_wht_power_of_two ... ok
[INFO] [stdout] test chroma_denoise::tests::test_blend_full_strength ... ok
[INFO] [stdout] test chroma_denoise::tests::test_blend_zero_strength ... ok
[INFO] [stdout] test chroma_denoise::tests::test_box_blur_impulse ... ok
[INFO] [stdout] test chroma_denoise::tests::test_box_blur_uniform ... ok
[INFO] [stdout] test chroma_denoise::tests::test_chroma_method_default ... ok
[INFO] [stdout] test chroma_denoise::tests::test_config_default ... ok
[INFO] [stdout] test chroma_denoise::tests::test_config_presets ... ok
[INFO] [stdout] test chroma_denoise::tests::test_config_validate ... ok
[INFO] [stdout] test chroma_denoise::tests::test_estimate_psnr_different ... ok
[INFO] [stdout] test chroma_denoise::tests::test_estimate_psnr_identical ... ok
[INFO] [stdout] test chroma_denoise::tests::test_gaussian_blur_uniform ... ok
[INFO] [stdout] test audio::tests::test_hiss_remover_silence ... ok
[INFO] [stdout] test chroma_denoise::tests::test_median_filter_uniform ... ok
[INFO] [stdout] test deblock::tests::test_block_boundary_is_strong_above ... ok
[INFO] [stdout] test deblock::tests::test_block_boundary_is_strong_below ... ok
[INFO] [stdout] test deblock::tests::test_block_boundary_negative_delta_strong ... ok
[INFO] [stdout] test deblock::tests::test_config_accessor ... ok
[INFO] [stdout] test chroma_denoise::tests::test_mean_absolute_diff ... ok
[INFO] [stdout] test audio::tests::test_spectral_subtraction_sine ... ok
[INFO] [stdout] test audio::tests::test_spectral_subtraction_silence ... ok
[INFO] [stdout] test deblock::tests::test_config_is_strong_mode_false ... ok
[INFO] [stdout] test deblock::tests::test_deblock_strength_alpha_weak ... ok
[INFO] [stdout] test deblock::tests::test_deblock_strength_alpha_ordering ... ok
[INFO] [stdout] test deblock::tests::test_config_is_strong_mode_true ... ok
[INFO] [stdout] test deblock::tests::test_deblock_strength_beta_ordering ... ok
[INFO] [stdout] test deblock::tests::test_filter_apply_no_panic ... ok
[INFO] [stdout] test deblock::tests::test_filter_skip_horizontal_when_disabled ... ok
[INFO] [stdout] test denoise_config::tests::test_all_presets_validate ... ok
[INFO] [stdout] test deblock::tests::test_filter_horizontal_reduces_boundary_artifact ... ok
[INFO] [stdout] test deblock::tests::test_filter_large_delta_not_filtered ... ok
[INFO] [stdout] test deblock::tests::test_filter_vertical_reduces_boundary_artifact ... ok
[INFO] [stdout] test denoise_config::tests::test_config_validate_bad_edge ... ok
[INFO] [stdout] test denoise_config::tests::test_config_validate_bad_radius ... ok
[INFO] [stdout] test denoise_config::tests::test_config_default ... ok
[INFO] [stdout] test denoise_config::tests::test_preset_archival ... ok
[INFO] [stdout] test denoise_config::tests::test_config_validate_ok ... ok
[INFO] [stdout] test denoise_config::tests::test_preset_streaming ... ok
[INFO] [stdout] test denoise_config::tests::test_preset_description_nonempty ... ok
[INFO] [stdout] test denoise_config::tests::test_preset_display ... ok
[INFO] [stdout] test denoise_config::tests::test_strength_from_f32_boundaries ... ok
[INFO] [stdout] test denoise_config::tests::test_strength_display ... ok
[INFO] [stdout] test denoise_config::tests::test_strength_from_f32_clamps ... ok
[INFO] [stdout] test denoise_config::tests::test_strength_ordering ... ok
[INFO] [stdout] test denoise_config::tests::test_temporal_window_normal ... ok
[INFO] [stdout] test denoise_config::tests::test_temporal_window_realtime ... ok
[INFO] [stdout] test denoise_metrics::tests::test_compute_by_tag ... ok
[INFO] [stdout] test denoise_metrics::tests::test_empty_buffers ... ok
[INFO] [stdout] test denoise_metrics::tests::test_is_acceptable_psnr_bad ... ok
[INFO] [stdout] test denoise_metrics::tests::test_is_acceptable_psnr_good ... ok
[INFO] [stdout] test denoise_metrics::tests::test_metric_display ... ok
[INFO] [stdout] test denoise_metrics::tests::test_metric_result_display ... ok
[INFO] [stdout] test denoise_metrics::tests::test_mse_identical_frames ... ok
[INFO] [stdout] test denoise_metrics::tests::test_pixel_count ... ok
[INFO] [stdout] test denoise_metrics::tests::test_psnr_identical_frames ... ok
[INFO] [stdout] test denoise_metrics::tests::test_psnr_offset_frames ... ok
[INFO] [stdout] test denoise_metrics::tests::test_snr_identical_frames ... ok
[INFO] [stdout] test denoise_metrics::tests::test_snr_positive_for_offset ... ok
[INFO] [stdout] test denoise_metrics::tests::test_ssim_identical ... ok
[INFO] [stdout] test denoise_metrics::tests::test_ssim_range ... ok
[INFO] [stdout] test denoise_metrics::tests::test_total_variation_alternating ... ok
[INFO] [stdout] test denoise_metrics::tests::test_total_variation_flat ... ok
[INFO] [stdout] test estimator::noise::tests::test_block_variance ... ok
[INFO] [stdout] test estimator::noise::tests::test_estimator_reset ... ok
[INFO] [stdout] test estimator::noise::tests::test_estimator_with_frame ... ok
[INFO] [stdout] test denoise_config::tests::test_strength_as_f32 ... ok
[INFO] [stdout] test estimator::noise::tests::test_noise_estimation_block_variance ... ok
[INFO] [stdout] test denoise_metrics::tests::test_all_metrics_count ... ok
[INFO] [stdout] test estimator::noise::tests::test_noise_estimation_laplacian ... ok
[INFO] [stdout] test estimator::noise::tests::test_noise_estimation_mad ... ok
[INFO] [stdout] test estimator::variance::tests::test_local_variance ... ok
[INFO] [stdout] test estimator::noise::tests::test_noise_estimator_creation ... ok
[INFO] [stdout] test estimator::variance::tests::test_signal_dependent_variance ... ok
[INFO] [stdout] test estimator::variance::tests::test_block_stats ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_add ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_filled ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_from_vec_length_mismatch ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_get_out_of_bounds ... ok
[INFO] [stdout] test estimator::variance::tests::test_variance_map_creation ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_get_clamped ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_get_set ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_new ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_psnr_different ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_psnr_dim_mismatch ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_psnr_identical ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_u8_plane_too_short ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_u8_roundtrip ... ok
[INFO] [stdout] test frame2d::tests::test_frame2d_zero_dims_error ... ok
[INFO] [stdout] test grain::analysis::tests::test_analyze_grain ... ok
[INFO] [stdout] test grain::analysis::tests::test_characterize_grain_empty_planes ... ok
[INFO] [stdout] test grain::analysis::tests::test_box_blur_zero_radius ... ok
[INFO] [stdout] test grain::analysis::tests::test_characterize_grain_frequency_dominant_freq_range ... ok
[INFO] [stdout] test grain::analysis::tests::test_characterize_grain_frequency_flat_frame ... ok
[INFO] [stdout] test grain::analysis::tests::test_characterize_grain_frequency_noisy_frame ... ok
[INFO] [stdout] test grain::analysis::tests::test_box_blur_uniform ... ok
[INFO] [stdout] test grain::analysis::tests::test_grain_pattern_classification ... ok
[INFO] [stdout] test grain::analysis::tests::test_grain_size_estimation ... ok
[INFO] [stdout] test grain::analysis::tests::test_high_frequency_extraction ... ok
[INFO] [stdout] test grain::analysis::tests::test_resembles_film_grain_flat_content ... ok
[INFO] [stdout] test estimator::variance::tests::test_variance_classification ... ok
[INFO] [stdout] test grain::preserve::tests::test_grain_extraction ... ok
[INFO] [stdout] test grain::analysis::tests::test_characterize_grain_frequency_spectral_tilt_positive ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_constant_frame_stays_near_constant ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_output_finite ... ok
[INFO] [stdout] test hybrid::adaptive::tests::test_activity_map ... ok
[INFO] [stdout] test hybrid::adaptive::tests::test_frame_activity_analysis ... ok
[INFO] [stdout] test hybrid::adaptive::tests::test_local_variance ... ok
[INFO] [stdout] test hybrid::adaptive::tests::test_adaptive_denoise ... ok
[INFO] [stdout] test hybrid::spatiotemporal::tests::test_box_filter ... ok
[INFO] [stdout] test hybrid::spatiotemporal::tests::test_motion_detection ... ok
[INFO] [stdout] test hybrid::spatiotemporal::tests::test_adaptive_spatio_temporal ... ok
[INFO] [stdout] test hybrid::spatiotemporal::tests::test_spatio_temporal_few_frames ... ok
[INFO] [stdout] test motion::compensation::tests::test_bidirectional_motion_compensate ... ok
[INFO] [stdout] test motion::compensation::tests::test_motion_compensate ... ok
[INFO] [stdout] test motion::compensation::tests::test_weighted_motion_compensate ... ok
[INFO] [stdout] test motion::estimation::tests::test_diamond_search ... ok
[INFO] [stdout] test motion::estimation::tests::test_downsample_plane ... ok
[INFO] [stdout] test motion::estimation::tests::test_downsample_plane_small ... ok
[INFO] [stdout] test motion::estimation::tests::test_downsample_plane_zero ... ok
[INFO] [stdout] test grain::preserve::tests::test_extract_and_restore_grain ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_empty_planes ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_identical_frames ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_block_size_8 ... ok
[INFO] [stdout] test hybrid::spatiotemporal::tests::test_spatio_temporal_denoise ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_motion_estimation ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_larger_frame ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_produces_correct_count ... ok
[INFO] [stdout] test motion::estimation::tests::test_motion_estimator_creation ... ok
[INFO] [stdout] test motion::estimation::tests::test_hierarchical_unique_content_identical ... ok
[INFO] [stdout] test multiscale::pyramid::tests::test_downsample_upsample ... ok
[INFO] [stdout] test multiscale::pyramid::tests::test_pyramid_construction ... ok
[INFO] [stdout] test multiscale::pyramid::tests::test_pyramid_denoise ... ok
[INFO] [stdout] test motion::estimation::tests::test_motion_estimation ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_haar_forward_constant ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_haar_forward_even ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_haar_empty ... ok
[INFO] [stdout] test multiscale::pyramid::tests::test_pyramid_reconstruction ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_haar_inverse_roundtrip ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_soft_threshold_above_negative ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_soft_threshold_above_positive ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_universal_threshold ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_universal_threshold_zero_n ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_soft_threshold_below ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_wavelet_denoiser_1d_length_preserved ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_config_default ... ok
[INFO] [stdout] test multiscale::wavelet::haar_tests::test_wavelet_denoiser_suppresses_noise ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_adaptive_multiscale_wavelet ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_parallel_wavelet_all_threshold_methods ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_multiscale_wavelet_denoise ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_parallel_wavelet_uniform_preserves_values ... ok
[INFO] [stdout] test noise_estimate::tests::test_empty_frame ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_level_dependent_wavelet ... ok
[INFO] [stdout] test noise_estimate::tests::test_estimator_frame_diff_first_frame ... ok
[INFO] [stdout] test noise_estimate::tests::test_estimator_laplacian ... ok
[INFO] [stdout] test noise_estimate::tests::test_estimator_local_variance_flat ... ok
[INFO] [stdout] test multiscale::wavelet::tests::test_parallel_wavelet_denoise_basic ... ok
[INFO] [stdout] test noise_estimate::tests::test_is_noisy ... ok
[INFO] [stdout] test noise_estimate::tests::test_method_display ... ok
[INFO] [stdout] test noise_estimate::tests::test_noise_estimate_new ... ok
[INFO] [stdout] test noise_estimate::tests::test_noise_estimate_with_channels ... ok
[INFO] [stdout] test noise_estimate::tests::test_slice_mad_flat ... ok
[INFO] [stdout] test noise_estimate::tests::test_slice_variance_flat ... ok
[INFO] [stdout] test noise_estimate::tests::test_estimator_reset ... ok
[INFO] [stdout] test noise_estimate::tests::test_smoothed_sigma_empty ... ok
[INFO] [stdout] test noise_estimate::tests::test_snr_db_nonzero ... ok
[INFO] [stdout] test noise_estimate::tests::test_snr_db_zero_sigma ... ok
[INFO] [stdout] test noise_estimate::tests::test_smoothed_sigma_after_frames ... ok
[INFO] [stdout] test noise_model::tests::test_classify_noise_clean ... ok
[INFO] [stdout] test noise_estimate::tests::test_with_window ... ok
[INFO] [stdout] test noise_model::tests::test_estimate_gaussian_empty ... ok
[INFO] [stdout] test noise_model::tests::test_estimate_gaussian_spread ... ok
[INFO] [stdout] test noise_model::tests::test_estimate_gaussian_constant ... ok
[INFO] [stdout] test noise_model::tests::test_excess_kurtosis_uniform ... ok
[INFO] [stdout] test noise_model::tests::test_gaussian_model ... ok
[INFO] [stdout] test noise_model::tests::test_gaussian_snr ... ok
[INFO] [stdout] test noise_model::tests::test_gaussian_snr_db ... ok
[INFO] [stdout] test noise_model::tests::test_gaussian_snr_zero_noise ... ok
[INFO] [stdout] test noise_model::tests::test_noise_profile_clean ... ok
[INFO] [stdout] test noise_model::tests::test_noise_type_display ... ok
[INFO] [stdout] test noise_model::tests::test_salt_pepper_clamp ... ok
[INFO] [stdout] test noise_model::tests::test_salt_pepper_model ... ok
[INFO] [stdout] test noise_model::tests::test_skewness_symmetric ... ok
[INFO] [stdout] test profile::tests::test_estimate_constant_signal_zero_sigma ... ok
[INFO] [stdout] test noise_model::tests::test_estimate_salt_pepper ... ok
[INFO] [stdout] test profile::tests::test_estimate_empty_returns_zero ... ok
[INFO] [stdout] test profile::tests::test_estimate_known_noise ... ok
[INFO] [stdout] test profile::tests::test_estimate_single_pixel ... ok
[INFO] [stdout] test profile::tests::test_frequency_analysis_noisy_row_has_positive_energy ... ok
[INFO] [stdout] test profile::tests::test_frequency_analysis_returns_8_bands ... ok
[INFO] [stdout] test profile::tests::test_frequency_analysis_uniform_block_is_zero ... ok
[INFO] [stdout] test profile::tests::test_is_heavy_noise_boundary ... ok
[INFO] [stdout] test profile::tests::test_is_heavy_noise_false ... ok
[INFO] [stdout] test profile::tests::test_is_heavy_noise_true ... ok
[INFO] [stdout] test profile::tests::test_snr_estimate_decreases_with_more_noise ... ok
[INFO] [stdout] test profile::tests::test_snr_estimate_infinite_for_zero_sigma ... ok
[INFO] [stdout] test profile::tests::test_threshold_history_recorded ... ok
[INFO] [stdout] test profile::tests::test_snr_estimate_positive ... ok
[INFO] [stdout] test profile::tests::test_threshold_initial_equals_base ... ok
[INFO] [stdout] test profile::tests::test_threshold_rate_clamped ... ok
[INFO] [stdout] test profile::tests::test_threshold_update_moves_towards_measurement ... ok
[INFO] [stdout] test profile::tests::test_total_sigma_all_equal ... ok
[INFO] [stdout] test profile::tests::test_total_sigma_zero ... ok
[INFO] [stdout] test region_denoise::tests::test_apply_strength_map ... ok
[INFO] [stdout] test region_denoise::tests::test_config_add_region ... ok
[INFO] [stdout] test region_denoise::tests::test_region_contains ... ok
[INFO] [stdout] test region_denoise::tests::test_region_edges ... ok
[INFO] [stdout] test region_denoise::tests::test_region_intersect ... ok
[INFO] [stdout] test region_denoise::tests::test_region_intersect_disjoint ... ok
[INFO] [stdout] test region_denoise::tests::test_region_new ... ok
[INFO] [stdout] test region_denoise::tests::test_region_params_builder ... ok
[INFO] [stdout] test region_denoise::tests::test_region_params_strength_clamp ... ok
[INFO] [stdout] test region_denoise::tests::test_region_priority_ordering ... ok
[INFO] [stdout] test region_denoise::tests::test_strength_map_out_of_bounds ... ok
[INFO] [stdout] test region_denoise::tests::test_strength_map_uniform ... ok
[INFO] [stdout] test region_denoise::tests::test_strength_map_from_config ... ok
[INFO] [stdout] test noise_estimate::tests::test_estimator_mad_noisy ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_apply_simd_output_length ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_apply_simd_small_sigma ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_apply_simd_scalar_consistency ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_apply_simd_uniform_input_unchanged ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_bilateral_zero_strength ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_fast_bilateral_filter ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_different_sigmas ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_empty_frame_error ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_lut_range ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_bilateral_max_strength ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_scalar_output_shape ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_preserves_edges ... ok
[INFO] [stdout] test spatial::bilateral::tests::test_bilateral_filter ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_simd_creation ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_simd_invalid_sigma_color ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_simd_invalid_sigma_space ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_scalar_uniform_input ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_simd_vs_scalar_small_frame ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_block_size_too_large ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_block_size_too_small ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_scalar_smooths_noise ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_empty_frame_error ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_new_valid ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_output_length_matches_input ... ok
[INFO] [stdout] test spatial::bilateral_simd::tests::test_bilateral_simd_vs_scalar_ramp ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_search_window_too_small ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_sigma_negative ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_sigma_zero ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_small_frame_fallback ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_haar_1d_roundtrip ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_haar_2d_roundtrip ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_ssd_identical_patches ... ok
[INFO] [stdout] test spatial::nlm::tests::test_config_default_patch_size ... ok
[INFO] [stdout] test spatial::nlm::tests::test_config_mild_patch_size ... ok
[INFO] [stdout] test spatial::nlm::tests::test_config_search_size ... ok
[INFO] [stdout] test spatial::nlm::tests::test_config_strong_patch_size ... ok
[INFO] [stdout] test spatial::nlm::tests::test_denoiser_output_length ... ok
[INFO] [stdout] test bm3d::tests::test_denoise_reduces_variance ... ok
[INFO] [stdout] test spatial::nlm::tests::test_denoiser_uniform_image_unchanged ... ok
[INFO] [stdout] test spatial::nlm::tests::test_nlm_pixel_returns_value_in_range ... ok
[INFO] [stdout] test spatial::nlm::tests::test_nlm_pixel_uniform_image ... ok
[INFO] [stdout] test spatial::nlm::tests::test_nlm_weight_large_ssd_small_weight ... ok
[INFO] [stdout] test spatial::nlm::tests::test_nlm_weight_zero_h_returns_zero ... ok
[INFO] [stdout] test spatial::nlm::tests::test_nlm_weight_zero_ssd ... ok
[INFO] [stdout] test spatial::nlm::tests::test_patch_ssd_identical ... ok
[INFO] [stdout] test spatial::nlm::tests::test_patch_ssd_known ... ok
[INFO] [stdout] test spatial::nlm::tests::test_patch_ssd_mismatched_lengths_returns_zero ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_enhanced_bilateral_size_preserved ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_enhanced_bilateral_uniform ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_extract_patch_centre ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_extract_patch_corner ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_gaussian_kernel_length ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_gaussian_kernel_sums_to_one ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_gaussian_kernel_symmetry ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_nlm_approx_filter_size_preserved ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_nlm_approx_filter_uniform ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_nlm_config_defaults ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_nlm_config_fast ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_nlm_weight_different_patches ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_nlm_weight_identical_patches ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_patch_mse_different ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_patch_mse_identical ... ok
[INFO] [stdout] test spatial::nlm_approx::tests::test_patch_mse_length_mismatch ... ok
[INFO] [stdout] test grain::preserve::tests::test_preserve_grain_denoise ... ok
[INFO] [stdout] test spatial::nlm::tests::test_denoiser_reduces_noise ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_fast_nlmeans_filter ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_patch_distance ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_nlmeans_small_frame ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_psnr_improvement ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_output_shape ... ok
[INFO] [stdout] test spatial::wavelet::tests::test_haar_transform ... ok
[INFO] [stdout] test spatial::wavelet::tests::test_threshold_methods ... ok
[INFO] [stdout] test spatial::wavelet::tests::test_wavelet_all_methods ... ok
[INFO] [stdout] test spatial::bm3d::tests::test_bm3d_clean_signal_stability ... ok
[INFO] [stdout] test spatial::wiener::tests::test_adaptive_wiener_filter ... ok
[INFO] [stdout] test spatial::wavelet::tests::test_wavelet_denoise ... ok
[INFO] [stdout] test spatial::wiener::tests::test_local_statistics ... ok
[INFO] [stdout] test spatial::wiener::tests::test_local_statistics_varied ... ok
[INFO] [stdout] test spatial::wiener::tests::test_noise_estimation ... ok
[INFO] [stdout] test spatial::wiener::tests::test_two_step_denoise_max_strength ... ok
[INFO] [stdout] test spatial::wiener::tests::test_two_step_denoise_basic ... ok
[INFO] [stdout] test spatial::wiener::tests::test_two_step_denoise_zero_strength ... ok
[INFO] [stdout] test spatial::wiener::tests::test_two_step_empty_frame ... ok
[INFO] [stdout] test spatial::wiener::tests::test_wiener_filter ... ok
[INFO] [stdout] test spatial::wiener::tests::test_wiener_refinement_uniform ... ok
[INFO] [stdout] test spectral_gate::tests::test_config_default_attack_ms ... ok
[INFO] [stdout] test spectral_gate::tests::test_config_default_release_ms ... ok
[INFO] [stdout] test spectral_gate::tests::test_config_floor_db ... ok
[INFO] [stdout] test spectral_gate::tests::test_config_validate_bad_floor_db ... ok
[INFO] [stdout] test spectral_gate::tests::test_config_validate_ok ... ok
[INFO] [stdout] test spectral_gate::tests::test_config_validate_zero_bins ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_learn_noise_floor_and_open ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_process_frame_output_length ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_reduction_db_zero_before_processing ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_reset ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_threshold_is_above ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_threshold_is_below ... ok
[INFO] [stdout] test spectral_gate::tests::test_gate_threshold_value ... ok
[INFO] [stdout] test spectral_gate::tests::test_stats_avg_reduction ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_config_aggressive ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_config_default ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_config_gentle ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_config_validate_bad_alpha ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_config_validate_bad_beta ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_config_validate_small_fft ... ok
[INFO] [stdout] test spatial::wiener::tests::test_two_step_denoise_preserves_dimensions ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_denoise_no_profile_passthrough ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_denoise_empty_input ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_denoise_output_finite ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_denoise_output_length_equals_input ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_nlmeans_filter ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_hann_window_endpoints ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_hann_window_peak ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_new_has_no_profile ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_noise_profile_length ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_rdft_roundtrip ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_denoise_silent_input ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_reset_clears_profile ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_update_noise_profile_non_zero ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_update_noise_profile_short_segment ... ok
[INFO] [stdout] test temporal::average::tests::test_exponential_temporal_average ... ok
[INFO] [stdout] test temporal::average::tests::test_exponential_temporal_average_no_previous ... ok
[INFO] [stdout] test temporal::average::tests::test_temporal_average ... ok
[INFO] [stdout] test temporal::average::tests::test_temporal_average_empty_buffer ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_detect_motion_mask_all_motion ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_detect_motion_mask_no_motion ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_exponential_decay_centre_is_max ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_exponential_decay_weights_sum_to_one ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_inter_frame_mad_different ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_inter_frame_mad_identical ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_inter_frame_mad_length_mismatch ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_linear_decay_weights_sum_to_one ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_motion_adaptive_high_motion ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_motion_adaptive_no_motion ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_temporal_average_single_frame ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_temporal_average_two_values ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_temporal_average_uniform_frames ... ok
[INFO] [stdout] test temporal::frame_avg::tests::test_uniform_weights_sum_to_one ... ok
[INFO] [stdout] test temporal::kalman::tests::test_adaptive_kalman_filter ... ok
[INFO] [stdout] test temporal::kalman::tests::test_kalman_filter ... ok
[INFO] [stdout] test temporal::kalman::tests::test_kalman_multiple_frames ... ok
[INFO] [stdout] test temporal::kalman::tests::test_kalman_state_creation ... ok
[INFO] [stdout] test temporal::kalman::tests::test_noise_estimation ... ok
[INFO] [stdout] test temporal::median::tests::test_median_function ... ok
[INFO] [stdout] test temporal::median::tests::test_temporal_median ... ok
[INFO] [stdout] test temporal::median::tests::test_temporal_median_empty_buffer ... ok
[INFO] [stdout] test temporal::median::tests::test_weighted_temporal_median ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_block_sad_asymmetric ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_block_sad_identical ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_block_sad_known_value ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_full_search_mv_no_motion ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_full_search_mv_returns_mv ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_mc_denoiser_full_strength_copies_reference ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_mc_denoiser_output_length ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_mc_denoiser_temporal_strength_clamped ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_mc_denoiser_uniform_frames ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_mc_denoiser_zero_strength_unchanged ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_motion_vector_default_is_still ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_motion_vector_magnitude_3_4_is_5 ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_motion_vector_magnitude_zero ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_motion_vector_negative_components ... ok
[INFO] [stdout] test temporal::motion_comp::tests::test_motion_vector_not_still ... ok
[INFO] [stdout] test temporal::motioncomp::tests::test_motion_compensated_denoise ... ok
[INFO] [stdout] test temporal::motioncomp::tests::test_motion_compensated_insufficient_frames ... ok
[INFO] [stdout] test tests::test_channel_strength_chroma_heavy ... ok
[INFO] [stdout] test tests::test_channel_strength_for_plane ... ok
[INFO] [stdout] test tests::test_channel_strength_uniform ... ok
[INFO] [stdout] test tests::test_channel_strength_validate ... ok
[INFO] [stdout] test tests::test_combined_noise_model_and_channels ... ok
[INFO] [stdout] test tests::test_config_custom_builder ... ok
[INFO] [stdout] test tests::test_config_default ... ok
[INFO] [stdout] test tests::test_config_presets ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_denoise_reduces_noise_rms ... ok
[INFO] [stdout] test tests::test_config_with_noise_model ... ok
[INFO] [stdout] test tests::test_config_validation ... ok
[INFO] [stdout] test tests::test_custom_bilateral ... ok
[INFO] [stdout] test tests::test_custom_bm3d_two_step ... ok
[INFO] [stdout] test tests::test_custom_wavelet ... ok
[INFO] [stdout] test tests::test_custom_wiener ... ok
[INFO] [stdout] test tests::test_custom_with_grain_aware ... ok
[INFO] [stdout] test spectral_subtraction::tests::test_update_noise_profile_sets_flag ... ok
[INFO] [stdout] test tests::test_denoiser_creation ... ok
[INFO] [stdout] test hybrid::adaptive::tests::test_auto_adaptive_denoise ... ok
[INFO] [stdout] test tests::test_custom_with_temporal ... ok
[INFO] [stdout] test tests::test_effective_strength_with_channels ... ok
[INFO] [stdout] test tests::test_effective_strength_without_channels ... ok
[INFO] [stdout] test tests::test_noise_model_all_variants ... ok
[INFO] [stdout] test tests::test_noise_model_strength_scale_gaussian ... ok
[INFO] [stdout] test tests::test_noise_model_strength_scale_poisson ... ok
[INFO] [stdout] test tests::test_noise_model_strength_scale_salt_pepper ... ok
[INFO] [stdout] test tests::test_noise_model_strength_scale_speckle ... ok
[INFO] [stdout] test tests::test_denoiser_process ... ok
[INFO] [stdout] test grain::preserve::tests::test_adaptive_grain_preserve ... ok
[INFO] [stdout] test video::tests::test_bilateral_constant_frame ... ok
[INFO] [stdout] test video::tests::test_bilateral_output_size ... ok
[INFO] [stdout] test video::tests::test_gaussian_denoise_constant_frame ... ok
[INFO] [stdout] test video::tests::test_gaussian_denoise_output_size ... ok
[INFO] [stdout] test video::tests::test_gaussian_denoise_smooths_checkerboard ... ok
[INFO] [stdout] test video::tests::test_median_3x3_output_size ... ok
[INFO] [stdout] test video::tests::test_median_5x5_output_size ... ok
[INFO] [stdout] test video::tests::test_median_removes_impulse ... ok
[INFO] [stdout] test video::tests::test_noise_estimator_constant ... ok
[INFO] [stdout] test video::tests::test_noise_estimator_white_noise ... ok
[INFO] [stdout] test video::tests::test_temporal_averager_average ... ok
[INFO] [stdout] test video::tests::test_temporal_averager_empty ... ok
[INFO] [stdout] test video::tests::test_temporal_averager_ring_buffer ... ok
[INFO] [stdout] test video::tests::test_temporal_averager_single_frame ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_buffer_capped_at_window_plus_one ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_buffer_grows ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_passthrough ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_quality_mode_uses_motion_compensation ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_realtime_spatial_blur ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_reset_clears_buffer ... ok
[INFO] [stdout] test video_denoise::tests::test_pipeline_temporal_blend ... ok
[INFO] [stdout] test video_denoise::tests::test_spatial_config_is_strong_false ... ok
[INFO] [stdout] test video_denoise::tests::test_spatial_config_is_strong_large_radius ... ok
[INFO] [stdout] test video_denoise::tests::test_spatial_config_is_strong_true ... ok
[INFO] [stdout] test video_denoise::tests::test_temporal_config_default ... ok
[INFO] [stdout] test video_denoise::tests::test_video_denoise_mode_label ... ok
[INFO] [stdout] test video_denoise::tests::test_video_denoise_mode_needs_temporal_buffer ... ok
[INFO] [stdout] test tests::test_per_channel_zero_luma ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_tiled_nlmeans_large_tile ... ok
[INFO] [stdout] test tests::test_per_channel_denoising ... ok
[INFO] [stdout] test tests::test_denoiser_reset ... ok
[INFO] [stdout] test tests::test_custom_nlmeans ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_tiled_nlmeans_uniform_frame ... ok
[INFO] [stdout] test spatial::nlmeans::tests::test_tiled_nlmeans_basic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 517 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.15s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests oximedia_denoise
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test src/denoise_metrics.rs - denoise_metrics::DenoiseMetrics (line 95) ... ok
[INFO] [stdout] test src/spectral_subtraction.rs - spectral_subtraction (line 19) ... ok
[INFO] [stdout] test src/noise_estimate.rs - noise_estimate::NoiseEstimator (line 126) ... ok
[INFO] [stdout] test src/spatial/bm3d.rs - spatial::bm3d::Bm3dDenoiser (line 31) ... ok
[INFO] [stdout] test src/bm3d.rs - bm3d (line 17) ... ok
[INFO] [stdout] test src/lib.rs - (line 29) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 31.79s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5140e40eb978252f8f8a585182888644747c1503c70aadba35b37ac2f4f55c98", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5140e40eb978252f8f8a585182888644747c1503c70aadba35b37ac2f4f55c98", kill_on_drop: false }`
[INFO] [stdout] 5140e40eb978252f8f8a585182888644747c1503c70aadba35b37ac2f4f55c98
