Index: webrtc/modules/audio_coding/codecs/opus/opus/src/README |
diff --git a/webrtc/modules/audio_coding/codecs/opus/opus/src/README b/webrtc/modules/audio_coding/codecs/opus/opus/src/README |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ac6264ec2923839e02945e8eaa2684e3580e4cf1 |
--- /dev/null |
+++ b/webrtc/modules/audio_coding/codecs/opus/opus/src/README |
@@ -0,0 +1,142 @@ |
+== Opus audio codec == |
+ |
+Opus is a codec for interactive speech and audio transmission over the Internet. |
+ |
+ Opus can handle a wide range of interactive audio applications, including |
+Voice over IP, videoconferencing, in-game chat, and even remote live music |
+performances. It can scale from low bit-rate narrowband speech to very high |
+quality stereo music. |
+ |
+ Opus, when coupled with an appropriate container format, is also suitable |
+for non-realtime stored-file applications such as music distribution, game |
+soundtracks, portable music players, jukeboxes, and other applications that |
+have historically used high latency formats such as MP3, AAC, or Vorbis. |
+ |
+ Opus is specified by IETF RFC 6716: |
+ https://tools.ietf.org/html/rfc6716 |
+ |
+ The Opus format and this implementation of it are subject to the royalty- |
+free patent and copyright licenses specified in the file COPYING. |
+ |
+This package implements a shared library for encoding and decoding raw Opus |
+bitstreams. Raw Opus bitstreams should be used over RTP according to |
+ https://tools.ietf.org/html/rfc7587 |
+ |
+The package also includes a number of test tools used for testing the |
+correct operation of the library. The bitstreams read/written by these |
+tools should not be used for Opus file distribution: They include |
+additional debugging data and cannot support seeking. |
+ |
+Opus stored in files should use the Ogg encapsulation for Opus which is |
+described at: |
+ https://wiki.xiph.org/OggOpus |
+ |
+An opus-tools package is available which provides encoding and decoding of |
+Ogg encapsulated Opus files and includes a number of useful features. |
+ |
+Opus-tools can be found at: |
+ https://git.xiph.org/?p=opus-tools.git |
+or on the main Opus website: |
+ https://opus-codec.org/ |
+ |
+== Compiling libopus == |
+ |
+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 https://git.xiph.org/opus.git |
+% cd opus |
+ |
+2) Compiling the source |
+ |
+% ./autogen.sh |
+% ./configure |
+% make |
+ |
+3) Install the codec libraries (optional) |
+ |
+% sudo make install |
+ |
+Once you have compiled the codec, there will be a opus_demo executable |
+in the top directory. |
+ |
+Usage: opus_demo [-e] <application> <sampling rate (Hz)> <channels (1/2)> |
+ <bits per second> [options] <input> <output> |
+ opus_demo -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 little-endian signed 16-bit PCM files or opus |
+bitstreams with simple opus_demo proprietary framing. |
+ |
+== Testing == |
+ |
+This package includes a collection of automated unit and system tests |
+which SHOULD be run after compiling the package especially the first |
+time it is run on a new platform. |
+ |
+To run the integrated tests: |
+% make check |
+ |
+There is also collection of standard test vectors which are not |
+included in this package for size reasons but can be obtained from: |
+https://opus-codec.org/testvectors/opus_testvectors.tar.gz |
+ |
+To run compare the code to these test vectors: |
+ |
+% curl -O https://opus-codec.org/testvectors/opus_testvectors.tar.gz |
+% tar -zxf opus_testvectors.tar.gz |
+% ./tests/run_vectors.sh ./ opus_testvectors 48000 |
+ |
+== Portability notes == |
+ |
+This implementation uses floating-point by default but can be compiled to |
+use only fixed-point arithmetic by setting --enable-fixed-point (if using |
+autoconf) or by defining the FIXED_POINT macro (if building manually). |
+The fixed point implementation has somewhat lower audio quality and is |
+slower on platforms with fast FPUs, it is normally only used in embedded |
+environments. |
+ |
+The implementation can be compiled with either a C89 or a C99 compiler. |
+While it does not rely on any _undefined behavior_ as defined by C89 or |
+C99, it relies on common _implementation-defined behavior_ for two's |
+complement architectures: |
+ |
+o Right shifts of negative values are consistent with two's |
+ complement arithmetic, so that a>>b is equivalent to |
+ floor(a/(2^b)), |
+ |
+o For conversion to a signed integer of N bits, the value is reduced |
+ modulo 2^N to be within range of the type, |
+ |
+o The result of integer division of a negative value is truncated |
+ towards zero, and |
+ |
+o The compiler provides a 64-bit integer type (a C99 requirement |
+ which is supported by most C89 compilers). |