
This reverts commit 83ed89a45f4578ca07efef48e772b9aafb263163. Reason for revert: breaks downstream project Original change's description: > 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} TBR=aleloi@webrtc.org,minyue@webrtc.org Change-Id: I1002e3273b44d3cccacdba84b8c363eefd537c4b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:8649 Reviewed-on: https://webrtc-review.googlesource.com/c/118201 Reviewed-by: Amit Hilbuch <amithi@webrtc.org> Commit-Queue: Amit Hilbuch <amithi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26306}
36 lines
924 B
C
36 lines
924 B
C
/*
|
|
* Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef MODULES_AUDIO_CODING_CODECS_OPUS_OPUS_INST_H_
|
|
#define MODULES_AUDIO_CODING_CODECS_OPUS_OPUS_INST_H_
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "rtc_base/ignore_wundef.h"
|
|
|
|
RTC_PUSH_IGNORING_WUNDEF()
|
|
#include "opus.h"
|
|
RTC_POP_IGNORING_WUNDEF()
|
|
|
|
struct WebRtcOpusEncInst {
|
|
OpusEncoder* encoder;
|
|
size_t channels;
|
|
int in_dtx_mode;
|
|
};
|
|
|
|
struct WebRtcOpusDecInst {
|
|
OpusDecoder* decoder;
|
|
int prev_decoded_samples;
|
|
size_t channels;
|
|
int in_dtx_mode;
|
|
};
|
|
|
|
#endif // MODULES_AUDIO_CODING_CODECS_OPUS_OPUS_INST_H_
|