1 个不稳定版本

0.2.0 2024年2月2日

#12 in #ogg


toniefile 使用

MIT/Apache

13KB
314 代码行(不包括注释)

libogg 的安全 Rust 绑定

CI

libogg 的简单绑定。

在大多数情况下,建议使用 ogg crate。然而,他们的 README 文件指出编码器测试不佳。在撰写本文时,它不提供一些选项(例如设置流 ID)。尽管如此,除非是特殊情况,否则你最好使用 ogg

这些绑定不是零拷贝!产生页面的函数不会返回引用,因为模拟它们的无效化会使 API 更加复杂。

简单示例

extern crate libogg;
use libogg::{Packet, Stream};

fn main() {
    let mut stream = Stream::new(1234); // provide a unique stream id

    // This loop puts data into the stream until a page is returned
    loop {
        match stream.pageout() {
            Some(page) => {
                // `page` holds a header and body, write them to a file
                println!("header: {:?}/body {:?}", page.header, page.body);
                break;
            },
            None => {
                let mut vec = Vec::new();
                for x in 0..255 {
                    vec.push(x);
                }
                // Push in new data
                let mut pkt = Packet::new(&mut vec);
                stream.packetin(&mut pkt)
            }
        }
    }
}

文档

这个 crate 有一些零散的文档,有关详细信息,请查看 libogg 文档

依赖项

~0.1–1.4MB
~20K SLoC