WinDOgg: A simple Ogg file decoder for games.The Ogg file format and its codecs are rapidly becoming a standard for playing sound and video in games. It is powerful, efficient, and most importantly, license free.
Unfortunately, anyone who has worked with the libogg, and libvorbis knows that they can be daunting. We have a solution for that!
WinDOgg.dll is a tool to simplify reading an ogg file. It is efficient enough for use in games. You can easily use it to open ogg files and read frames of audio and video data into buffers. It also supports fast seeking and reading sound data at a specific PCM or video data at a specific scan line.*
To give you an idea of how fast, when we started this project, the standard way of seeking audio to an individual PCM was to start at the end of the Ogg page prior to the sample and decode forward until the desired sample was reached. Since an Ogg page contains 1/2 to 1 second of sound at 48 kHz, the standard method resulted in an average of 1/4 to 1/2 second of sound being decoded just to reach the position you wanted. Our software finds the packet prior to the one that contains the sample and decodes from there. Packets contain 128 or 1024 samples, so this results in 3/1000th to 4/100ths of a second of sound being decoded, with 18/1000ths being typical. This is roughly a 14-fold decrease in the amount of decoding required to seek to a position.
WindDOgg currently supports Theora (video) and Vorbis (audio), the two most common codecs used by ogg files. In addition, WinDOgg.dll is designed to be safe for naive multi-threading: Any thread can enter the .dll and request any frame from any file without a problem.
* Note that obtaining a specific scan-line of video currently requires the entire frame to be decoded. Performing scan-line decoding instead is on our do list.
WinDWAV: A simple WAV reader.WinDWAV.dll provides the same interface for reading WAV files as WinDOgg does for ogg files, allowing you to use function pointers to abstract the reading of various file formats.
Free, but you can help.WinDOgg.dll and WinDWAV.dll are free to use for commercial and non-commercial purposes. If you would like to support their development and help make them better, donate coffee money on the right.
What's Next?Here are some things on our do list for improving these tools:
Upgrades to 1.x:
LicensingIf you like WinDOgg and WinDWAV, but you don't want to use our .dlls, or you want to improve the source code for your own purposes, we are happy to sell non-exclusive licenses to the source code. Contact us.
QuestionsIf you have questions or bug reports about these .dlls, contact us.