#decoder #av1 #libaom #cest-lavif #unavif

aom-decode

Minimal safe wrapper for libaom AV1 decoder

2 releases

0.1.1 Nov 21, 2020
0.1.0 Sep 9, 2020

#11 in #av1

Download history 22/week @ 2021-01-11 27/week @ 2021-01-18 30/week @ 2021-01-25 24/week @ 2021-02-01 26/week @ 2021-02-08 40/week @ 2021-02-15 13/week @ 2021-02-22 5/week @ 2021-03-01 2/week @ 2021-03-08 11/week @ 2021-03-15 6/week @ 2021-03-22 4/week @ 2021-03-29 18/week @ 2021-04-05 31/week @ 2021-04-12 20/week @ 2021-04-19 9/week @ 2021-04-26

90 downloads per month
Used in avif-decode

BSD-2-Clause

20KB
387 lines

Rust wrapper for AOMedia AV1 decoder

It's a minimal safe wrapper that allows decoding individual AV1 frames. It's meant for decoding AVIF images.

Usage

See examples/topng.rs for the full code.

You'll need the avif-parse crate to get AV1 data out of an AVIF file, and the yuv crate to convert YUV pixels into RGB.

let avif = avif_parse::read_avif(file)?;

let mut d = Decoder::new(&Config {
    threads: num_cpus::get(),
})?;

let img = d.decode_frame(&avif.primary_item)?;
match img.rows_iter()? {
    RowsIters::YuvPlanes8 {y,u,v,chroma_sampling} => {
        match chroma_sampling {
            color::ChromaSampling::Cs444 => {
                yuv_444(y, u, v).map(|px| {
                    // here's your YUV pixel
                });
            },
        }
    },
}

Dependencies

~17MB
~348K SLoC