Generalize the C-language Opus interface.

Switch to explicit channel mappings (RFC 7845) when creating
multi-stream Opus en/de-coders. The responsibility of setting up the
channel mappings will shift from WebRTC to the WebRTC user.

See https://webrtc-review.googlesource.com/c/src/+/121764 for the
current vision. See also the first child CL
https://webrtc-review.googlesource.com/c/src/+/129768
that sets up the Decoder to use this code.

Bug: webrtc:8649
Change-Id: I55959a293d54bb4c982eff68ec107c5ef8666c5c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129767
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27452}
This commit is contained in:
Alex Loiko
2019-04-03 15:12:01 +02:00
committed by Commit Bot
parent 21f6fd79ad
commit 50b8c399c9
5 changed files with 311 additions and 165 deletions

View File

@ -21,19 +21,15 @@ RTC_PUSH_IGNORING_WUNDEF()
RTC_POP_IGNORING_WUNDEF()
struct WebRtcOpusEncInst {
union {
OpusEncoder* encoder;
OpusMSEncoder* multistream_encoder;
} encoder;
OpusEncoder* encoder;
OpusMSEncoder* multistream_encoder;
size_t channels;
int in_dtx_mode;
};
struct WebRtcOpusDecInst {
union {
OpusDecoder* decoder;
OpusMSDecoder* multistream_decoder;
} decoder;
OpusDecoder* decoder;
OpusMSDecoder* multistream_decoder;
int prev_decoded_samples;
size_t channels;
int in_dtx_mode;