| Index: webrtc/modules/audio_coding/neteq/decoder_database.h
|
| diff --git a/webrtc/modules/audio_coding/neteq/decoder_database.h b/webrtc/modules/audio_coding/neteq/decoder_database.h
|
| index 01ff0c9fdb365fcccc24153352d352fbcc79ff2f..3706b9025d0320b283981b36da82a63d67809c3c 100644
|
| --- a/webrtc/modules/audio_coding/neteq/decoder_database.h
|
| +++ b/webrtc/modules/audio_coding/neteq/decoder_database.h
|
| @@ -34,30 +34,31 @@ class DecoderDatabase {
|
| kInvalidPointer = -6
|
| };
|
|
|
| - // Struct used to store decoder info in the database.
|
| - struct DecoderInfo {
|
| - DecoderInfo() = default;
|
| - DecoderInfo(NetEqDecoder ct, int fs, AudioDecoder* dec, bool ext)
|
| - : DecoderInfo(ct, "", fs, dec, ext) {}
|
| + // Class that stores decoder info in the database.
|
| + class DecoderInfo {
|
| + public:
|
| DecoderInfo(NetEqDecoder ct,
|
| const std::string& nm,
|
| int fs,
|
| - AudioDecoder* dec,
|
| - bool ext)
|
| - : codec_type(ct),
|
| - name(nm),
|
| - fs_hz(fs),
|
| - rtp_sample_rate_hz(fs),
|
| - decoder(dec),
|
| - external(ext) {}
|
| + AudioDecoder* ext_dec);
|
| + DecoderInfo(DecoderInfo&&);
|
| ~DecoderInfo();
|
|
|
| - NetEqDecoder codec_type = NetEqDecoder::kDecoderArbitrary;
|
| - std::string name;
|
| - int fs_hz = 8000;
|
| - int rtp_sample_rate_hz = 8000;
|
| - AudioDecoder* decoder = nullptr;
|
| - bool external = false;
|
| + // Get the AudioDecoder object, creating it first if necessary.
|
| + AudioDecoder* GetDecoder();
|
| +
|
| + // Delete the AudioDecoder object, unless it's external. (This means we can
|
| + // always recreate it later if we need it.)
|
| + void DropDecoder() { decoder_.reset(); }
|
| +
|
| + const NetEqDecoder codec_type;
|
| + const std::string name;
|
| + const int fs_hz;
|
| + const int rtp_sample_rate_hz;
|
| + AudioDecoder* const external_decoder;
|
| +
|
| + private:
|
| + std::unique_ptr<AudioDecoder> decoder_;
|
| };
|
|
|
| // Maximum value for 8 bits, and an invalid RTP payload type (since it is
|
|
|