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

aom-decode

libaom AV1 解码器的最小安全封装

8 个版本

0.2.10 2024 年 7 月 7 日
0.2.7 2023 年 11 月 20 日
0.2.6 2023 年 6 月 15 日
0.2.5 2023 年 1 月 4 日
0.1.1 2020 年 11 月 21 日

#867图像

Download history 198/week @ 2024-05-04 132/week @ 2024-05-11 242/week @ 2024-05-18 103/week @ 2024-05-25 86/week @ 2024-06-01 64/week @ 2024-06-08 65/week @ 2024-06-15 72/week @ 2024-06-22 22/week @ 2024-06-29 187/week @ 2024-07-06 52/week @ 2024-07-13 96/week @ 2024-07-20 207/week @ 2024-07-27 97/week @ 2024-08-03 82/week @ 2024-08-10 78/week @ 2024-08-17

每月 481 次下载
用于 8 个 crate(直接使用 4 个)

BSD-2-Clause

32KB
669

Rust 对 AOMedia AV1 解码器的封装

它是一个最小的安全封装,允许解码单个 AV1 帧图像。它适用于解码 AVIF 图像。

用法

请参阅 examples/topng.rs 以获取完整代码。

您需要 avif-parse crate 来从 AVIF 文件中提取 AV1 数据,以及 yuv crate 将 YUV 像素转换为 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
                });
            },
        }
    },
}

依赖项

~20MB
~402K SLoC