Giter Site home page Giter Site logo

tzachshabtay / nvorbis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from adamslair/nvorbis

0.0 2.0 0.0 1.69 MB

Forked from Duality's version of NVorbis, to compile for PCL Profile 7.

License: Microsoft Public License

Makefile 0.25% C# 99.58% Batchfile 0.16%

nvorbis's Introduction

NVorbis
-------

NVorbis is a .Net library for decoding Xiph.org Vorbis files.  It is purely
managed code, and should run correctly in partial-trust environments.

This implementation is based on the Vorbis specification found on xiph.org.
The MDCT and Huffman codeword generator were borrowed from public domain
implementations at http://nothings.org/stb_vorbis/.

Currently the only container supported is Xiph.org Ogg.  Matroska and RTP
are planned.

To use:

- Create an instance of NVorbis.VorbisReader (pass the Ogg Vorbis filename in)
- Use these properties to gather data about the logical stream:
    - Channels
    - SampleRate
    - TotalTime		- A TimeSpan indicating the total length of the audio data
    - DecodedTime	- A TimeSpan indicating the last returned sample's timestamp
    - NominalBitrate, UpperBitrate, and LowerBitrate
        - These are the encoder's reported bitrates
    - Vendor	- The encoder's vendor string
    - Comments	- An array of comments in the file (usually tags)
- Call "int ReadSamples(float[], int, int)" to retrieve the next batch of
  samples.  It will return 0 when the logical Vorbis stream is done.


- For NAudio support:
    - Reference NVorbis.NAudioSupport.dll
    - Create an instance of NVorbis.NAudioSupport.VorbisWaveReader
    - VorbisWaveReader implements NAudio.Wave.WaveStream.

History
-------
0.1	- 08/03/2012
    * Initial Release
0.2 - 08/07/2012
    * Swapped out LGPL code for public domain implementations
    * Relicensed under Ms-PL
    * Added NAudio support project
    * Added test files & app
    * Performance improvements
0.3 - 08/08/2012
    * Fixed Page / Packet decode (packets overlapping 2 pages)
    * Fixed "no energy" packet handling
    * Fixed packet reader not merging when unsolicited packets are added
    * Added .gitignore
    * Added initial multi-stream support
    * Added statistics (see VorbisReader.Stats)
0.4 - 08/14/2012
    * Refactoring to clean up code and make room for later improvements
    * Changed lapping algorithm to be simpler
    * Switched to higher-performance clipping algorithm
    * Some cleanup
0.4.1 - 09/11/2012
    * Fixed a couple Ogg container bugs
    * Optimized memory allocations for better performance / memory usage
0.5 - 09/20/2012
    * Added seeking support
    * Changed OggPacketReader to use a doubly-linked list for the packet queue / history
    * Changed OggPacketReader.GetTotalPageCount() to count pages directly instead of making .AddPacket(...) keep a list
    * Fixed a few bugs (mostly race conditions in multi-threaded playback scenarios)
    * Added multi-stream support to VorbisWaveReader
    * Added several info properties to VorbisWaveReader
0.5.5 - 11/15/2012
    * Added OpenTK support
    * Added makefiles for Mono
    * Added constructor to NAudioSupport for already opened Stream instances
    * Made Ogg container logic thread-safe
    * Cleanup & Optimization
0.6.0 - 06/27/2013
    * Remove ACache from project
    * Make clipping optional (default: on)
    * Set clipping to clamp at +/-.99999994 instead of +/-1 as a courtesy to those not outputing float samples
    * Performance improvements for RingBuffer
    * Performance improvements in ThreadSafeStream
0.7.0 - 07/15/2013
    * Rewrite Ogg Reader buffering logic to vastly improve memory usage
    * Reorganize to more easily support other container types / work with other Ogg stream decoders
    * Exposed Ogg reading types
    * Performance improvements
    * Bugfix: Don't throw on Vorbis streams that only have a single mode
0.7.1 - 07/18/2013
    * Removed use of generics & lambda from Huffman decoder
    * Reduced computation by only processing samples that are required for output
    * Bugfix: Seeking now works again
    * Bugfix: OpenTKSupport.OggStream now only queues as many source buffers as it filled
0.7.2 - 07/22/2013
    * Bugfix: Floor 0 implementation is now correct
    * Bugfix: Residue 0 & 1 implementation is now correct
    * Bugfix: Seeking back less than the current buffer size no longer corrupts the read buffer
0.7.3 - 08/02/2013
    * Bugfix: Fix residue 1
0.7.4 - 09/16/2013
    * Bugfix: Some stereo files with sound on only one channel decoded noise on the silent channel.

nvorbis's People

Contributors

ioctllr avatar renaudbedard avatar jjxtra avatar ilexp avatar tzachshabtay avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.