libogg 0.2.0

Safe bindings for libogg.
Documentation
# Safe Rust Bindings for libogg

![CI](https://github.com/hatzel/libogg-rs/workflows/CI/badge.svg)

Simple bindings for libogg.

In most cases it should be preferable to use the [ogg crate](https://github.com/RustAudio/ogg).
However, their README states that the encoder is not well tested.
It does at the time of writing not offer some options (e.g. setting a stream id).
Still, you are probably better off using `ogg` unless it's a very special case.

These bindings are not zero-copy!
The functions producing a page don't return a reference as modeling their
invalidation would make the API more complicated.

## Simple Example

```rust
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)
            }
        }
    }
}
```

## Documentation

This crate has some sporadic documentation, check out the [libogg docs](https://xiph.org/ogg/doc/libogg/)
for details.