1 个不稳定版本
0.2.0 | 2024年2月2日 |
---|
#12 in #ogg
被 toniefile 使用
13KB
314 代码行(不包括注释)
libogg 的安全 Rust 绑定
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