Convert CNG into C++ and remove it from AudioDecoder
Broke out CNG from AudioDecoder as they didn't really share an interface. Converted the CNG code to C++, to make initialization and resource handling easier. This includes several changes to the behavior, favoring RTC_CHECKs over returning error codes. Review URL: https://codereview.webrtc.org/1868143002 Cr-Commit-Position: refs/heads/master@{#12491}
This commit is contained in:
@ -16,7 +16,6 @@
|
||||
#include "webrtc/engine_configurations.h"
|
||||
#include "webrtc/base/constructormagic.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/audio_decoder.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/cng/webrtc_cng.h"
|
||||
#ifdef WEBRTC_CODEC_G722
|
||||
#include "webrtc/modules/audio_coding/codecs/g722/g722_interface.h"
|
||||
#endif
|
||||
@ -25,38 +24,6 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// AudioDecoderCng is a special type of AudioDecoder. It inherits from
|
||||
// AudioDecoder just to fit in the DecoderDatabase. None of the class methods
|
||||
// should be used, except constructor, destructor, and accessors.
|
||||
// TODO(hlundin): Consider the possibility to create a super-class to
|
||||
// AudioDecoder that is stored in DecoderDatabase. Then AudioDecoder and a
|
||||
// specific CngDecoder class could both inherit from that class.
|
||||
class AudioDecoderCng : public AudioDecoder {
|
||||
public:
|
||||
explicit AudioDecoderCng();
|
||||
~AudioDecoderCng() override;
|
||||
void Reset() override;
|
||||
int IncomingPacket(const uint8_t* payload,
|
||||
size_t payload_len,
|
||||
uint16_t rtp_sequence_number,
|
||||
uint32_t rtp_timestamp,
|
||||
uint32_t arrival_timestamp) override;
|
||||
|
||||
CNG_dec_inst* CngDecoderInstance() override;
|
||||
size_t Channels() const override;
|
||||
|
||||
protected:
|
||||
int DecodeInternal(const uint8_t* encoded,
|
||||
size_t encoded_len,
|
||||
int sample_rate_hz,
|
||||
int16_t* decoded,
|
||||
SpeechType* speech_type) override;
|
||||
|
||||
private:
|
||||
CNG_dec_inst* dec_state_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderCng);
|
||||
};
|
||||
|
||||
using NetEqDecoder = acm2::RentACodec::NetEqDecoder;
|
||||
|
||||
// Returns true if |codec_type| is supported.
|
||||
|
||||
Reference in New Issue
Block a user