ogg
ogg copied to clipboard
Ogg container decoder and encoder written in pure Rust
Implemented my proposal to resolve #12 . Instead of `Seek`, the (non-seeking) functionality of the `PacketReader` now requires a new trait `RevRead` which allows making a single reversible read operation....
Currently, readers like `PacketReader` requires `std::io::Seek`. But the parsing process of Ogg container is actually streamable. Therefore, it may be more useful to remove those constraints for most of functions,...
As mentioned in https://github.com/RustAudio/ogg/pull/32#issuecomment-1107841292, it'd be nice to make this crate work with `#![no_std]`, which would allow its usage by embedded developers or other freestanding environments. Moreover, as this requires...
Pushing every page of a complete ogg file before attempting to read any packets will result in lost packets.
closes #12 I simplified the algorithm of finding the page header. This method requires a lot of `read()` function called, but the performance degression can be avoided by wrapping the...
Current `PacketReader:seek_absgp` has several issues: - It may misbehave if it encounters to a page where no packet ends ( #10 ) - It does not check for the integrity...
Although extremely rare, the `OggS` magic pattern may occur in the places where a page does not start. Current `UntilPageHeaderReader` does not check for the integrity it captured, so it...
One possible solution for RustAudio/lewton#84 requires to look ahead future packets. This issue is for discussing the API and internal design. My idea is as follows: * Add a function...
While `seek_absgp` function performs binary searching, it compares the `absgp` value of the page found with `pos_goal` parameter. However, `absgp` may be set to `-1` when no packet ends in...
The `square-with-junk.ogg` file from the libnogg test suite has junk at the end of the file. This doesn't seem to be a problem for libvorbis or libnogg. But the ogg...