This is a prototype codec and for now it has limited functionality. To build from a distribution tarball, you only need to do the following: % ./configure % make To build from the git repository, the following steps are necessary: 1) Clone the repository: % git clone git://git.opus-codec.org/opus.git % cd opus 1) Compiling % ./autogen.sh % ./configure % make Once you have compiled the codec, there will be a test_opus executable in the top directory. Usage: test_opus [-e] <application> <sampling rate (Hz)> <channels (1/2)> <bits per second> [options] <input> <output> test_opus -d <sampling rate (Hz)> <channels (1/2)> [options] <input> <output> mode: voip | audio | restricted-lowdelay options: -e : only runs the encoder (output the bit-stream) -d : only runs the decoder (reads the bit-stream as input) -cbr : enable constant bitrate; default: variable bitrate -cvbr : enable constrained variable bitrate; default: -unconstrained -bandwidth <NB|MB|WB|SWB|FB> : audio bandwidth (from narrowband to fullband); default: sampling rate -framesize <2.5|5|10|20|40|60> : frame size in ms; default: 20 -max_payload <bytes> : maximum payload size in bytes, default: 1024 -complexity <comp> : complexity, 0 (lowest) ... 10 (highest); default: 10 -inbandfec : enable SILK inband FEC -forcemono : force mono encoding, even for stereo input -dtx : enable SILK DTX -loss <perc> : simulate packet loss, in percent (0-100); default: 0 input and output are 16-bit PCM files (machine endian) or opus bitstreams with simple test_opus propritary framing.
Forked from
Xiph.Org / Opus
Timothy B. Terriberry
authored
b24e5746 introduced changes to LastGainIndex which broke conditional coding for side frames after a mid-only frame (i.e., in a 60 ms frame where the side is coded, not coded, then coded again). These rules were a mess in general, however, because the side channel state kept a different nFramesDecoded count from the mid channel state, and had no way to tell if the prior side frame was coded. This patch attempts to rationalize them by moving the conditional coding decision up to the top level, where all this information is available. The first coded side frame after an uncoded side frame now always uses independent coding. If such a frame is also not the first side frame in an Opus frame, then it doesn't include an LTP scaling parameter (because the LTP state is well-defined).