[opus] playback of opus files using portaudio

Timothy B. Terriberry tterribe at xiph.org
Thu Dec 5 13:36:10 PST 2013

Akshit Jain wrote:
> I am making a lightweight opus audio player. This is my portaudio
> callback function. But i hear a stammering song when i try to play a
> .opus song file. Can anybody say what is wrong or provide me link to any
> code which can play opus file written in c/c++(light). I tried to see
> some open source(vlc opus play) but was unable to follow.

See opusfile_example.c in the examples/ directory of libopusfile.
On Linux,
   ./opusfile_example foo.opus | aplay
makes a rudimentary player.

> smpls_decoded=op_read(data->sndFile,out,thisSize,NULL);

You're using op_read(), but ignoring the link number. This will do the 
wrong thing on chained files where the number of channels changes 
between links. You can use op_read_stereo() to get a fixed number (2) of 
channels out regardless of the number of channels in each link.

You're also not handling error return values. That should not be a 
problem on properly encoded files, but it is a potential security 
vulnerability, since you're using the return value to do pointer arithmetic.

What do your Pa_OpenStream() parameters look like?

More information about the opus mailing list