av1-grain

Helpers for generating and parsing AV1 film grain data

Latest version: 0.2.5 registry icon
Maintenance score
48
Safety score
100
Popularity score
71
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Security
  Vulnerabilities
Version Suggest Low Medium High Critical
0.2.5 0 0 0 0 0
0.2.4 0 0 0 0 0
0.2.3 0 0 0 0 0
0.2.2 0 0 0 0 0
0.2.1 0 0 0 0 0
0.2.0 0 0 0 0 0
0.1.4 0 0 0 0 0
0.1.3 0 0 0 0 0
0.1.2 0 0 0 0 0
0.1.1 0 0 0 0 0
0.1.0 0 0 0 0 0

Stability
Latest release:

0.2.5 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform

Licensing

Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

BSD-2-Clause   -   BSD 2-Clause "Simplified" License

Not a wildcard

Not proprietary

OSI Compliant



av1-grain

docs.rs Crates.io LICENSE

This crate contains helper functions for parsing and generating AV1 film grain data.

This code was originally created for use in rav1e. It has been moved to this crate so it can be shared with other AV1 crates that need to deal with film grain.

Examples

The generate_photon_noise_params and write_grain_table APIs live behind the create feature. Enable it in your project to produce plain-text photon noise tables compatible with svt-av1, aomenc, and similar encoders:

use av1_grain::{
    generate_photon_noise_params, write_grain_table, NoiseGenArgs, TransferFunction,
};

fn main() -> anyhow::Result<()> {
    // This would apply to the entire video--we can use `u64::MAX` as the end timestamp for simplicity.
    let segment = generate_photon_noise_params(
        0,
        u64::MAX,
        NoiseGenArgs {
            // This setting can range from 100-6400 to adjust the noise strength
            iso_setting: 800,
            width: 1920,
            height: 1080,
            transfer_function: TransferFunction::BT1886,
            chroma_grain: true,
            random_seed: None,
        },
    );

    write_grain_table("example.tbl", &[segment])?;
    Ok(())
}

Running this program generates a photon noise table covering the entire video (start_time 0 to end_time u64::MAX) and stores it in example.tbl. The file extension is arbitrary; .tbl is a common choice.