webrtc/modules/audio_coding/codecs
Alex Loiko 83ed89a45f Opus multistream.
This is a backwards-compatible change. It makes WebRTC use the Opus
multistream decoder for all Opus packets. Single-stream packets are a
special case of multistream ones (with stream=1).

The tricky parts are 'WebRtcOpus_GetMaxPlaybackRate' and
'WebRtcOpus_GetSurroundParameters'. GetMaxPlaybackRate is supposed to
do what opus_encoder_ctl(encoder, OPUS_GET_MAX_BANDWIDTH(&bandwidth))
did when we had single-stream encoders. Now there may be several
independent encoders with possibly different BANDWIDTH. The new
GetMaxPlaybackRate queries all of them, and returns a playback rate if
all the encoder's rates are equal.

WebRtcOpus_GetSurroundParameters is a configuration convention. It
maps the number of channels to a multi-stream encoder/decoder
configuration. As described in RFC 7845
https://tools.ietf.org/html/rfc7845#section-5.1.1, a multi-stream
encoder/decoder needs a number of streams, number of coupled streams
and a 255-byte mapping array. The function GetSurroundParameters
computes all of these from the number of channels. [1, 2, 4, 6, 8]
channels are supported.

Bug: webrtc:8649
Change-Id: I271de8e387d738254d6aa53af7fcf8644a53edb5
Reviewed-on: https://webrtc-review.googlesource.com/c/111750
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26293}
2019-01-17 12:23:23 +00:00
..
cng (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
g711 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
g722 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
ilbc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
isac (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
opus Opus multistream. 2019-01-17 12:23:23 +00:00
pcm16b (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
red (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
tools (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
audio_decoder.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
audio_encoder.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
builtin_audio_decoder_factory_unittest.cc Replace rtc::Optional with absl::optional in modules/audio_coding 2018-06-19 12:46:20 +00:00
builtin_audio_encoder_factory_unittest.cc Replace rtc::Optional with absl::optional in modules/audio_coding 2018-06-19 12:46:20 +00:00
legacy_encoded_audio_frame.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
legacy_encoded_audio_frame.h [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
legacy_encoded_audio_frame_unittest.cc Delete enum NetEqDecoder. 2019-01-11 13:52:25 +00:00
OWNERS Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00