O'Reilly logo

Mastering Android NDK by Viktor Latypov, Sergey Kosarevsky

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Decoding compressed audio

Now that we have implemented the basic audio streaming system, it is time to use a couple of third-party libraries to read compressed audio files. Basically, what we need to do is to override the StreamWaveData() function inside the clStreamingWaveDataProvider class. This function, in turn, calls the ReadFromFile() method where the actual decoding is done. The initialization of the decoder is done in the constructor and, for the abstract iDecodingProvider class, we only store the reference to a data blob. All the compressed data for the file is stored in a clBlob object:

 class iDecodingProvider: public StreamingWaveDataProvider { protected: virtual int ReadFromFile( int Size, int BytesRead ) = 0; clPtr<clBlob> FRawData; ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required