| Index: webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc
|
| diff --git a/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc b/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc
|
| index 33aba383342535a42f46ac1c9b2f50d07eae0ec2..8f16d660bc8d020e7ecb2574922be2d7575d11de 100644
|
| --- a/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc
|
| +++ b/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc
|
| @@ -22,6 +22,13 @@ namespace {
|
|
|
| const int kSampleRateHz = 8000;
|
|
|
| +AudioEncoderIlbc::Config CreateConfig(const CodecInst& codec_inst) {
|
| + AudioEncoderIlbc::Config config;
|
| + config.frame_size_ms = codec_inst.pacsize / 8;
|
| + config.payload_type = codec_inst.pltype;
|
| + return config;
|
| +}
|
| +
|
| } // namespace
|
|
|
| // static
|
| @@ -35,22 +42,24 @@ bool AudioEncoderIlbc::Config::IsOk() const {
|
| }
|
|
|
| AudioEncoderIlbc::AudioEncoderIlbc(const Config& config)
|
| - : payload_type_(config.payload_type),
|
| + : config_(config),
|
| num_10ms_frames_per_packet_(
|
| static_cast<size_t>(config.frame_size_ms / 10)),
|
| - num_10ms_frames_buffered_(0) {
|
| - CHECK(config.IsOk());
|
| - CHECK_EQ(0, WebRtcIlbcfix_EncoderCreate(&encoder_));
|
| - const int encoder_frame_size_ms = config.frame_size_ms > 30
|
| - ? config.frame_size_ms / 2
|
| - : config.frame_size_ms;
|
| - CHECK_EQ(0, WebRtcIlbcfix_EncoderInit(encoder_, encoder_frame_size_ms));
|
| + encoder_(nullptr) {
|
| + Reset();
|
| }
|
|
|
| +AudioEncoderIlbc::AudioEncoderIlbc(const CodecInst& codec_inst)
|
| + : AudioEncoderIlbc(CreateConfig(codec_inst)) {}
|
| +
|
| AudioEncoderIlbc::~AudioEncoderIlbc() {
|
| CHECK_EQ(0, WebRtcIlbcfix_EncoderFree(encoder_));
|
| }
|
|
|
| +size_t AudioEncoderIlbc::MaxEncodedBytes() const {
|
| + return RequiredOutputSizeBytes();
|
| +}
|
| +
|
| int AudioEncoderIlbc::SampleRateHz() const {
|
| return kSampleRateHz;
|
| }
|
| @@ -59,10 +68,6 @@ int AudioEncoderIlbc::NumChannels() const {
|
| return 1;
|
| }
|
|
|
| -size_t AudioEncoderIlbc::MaxEncodedBytes() const {
|
| - return RequiredOutputSizeBytes();
|
| -}
|
| -
|
| size_t AudioEncoderIlbc::Num10MsFramesInNextPacket() const {
|
| return num_10ms_frames_per_packet_;
|
| }
|
| @@ -119,10 +124,22 @@ AudioEncoder::EncodedInfo AudioEncoderIlbc::EncodeInternal(
|
| info.encoded_bytes = static_cast<size_t>(output_len);
|
| DCHECK_EQ(info.encoded_bytes, RequiredOutputSizeBytes());
|
| info.encoded_timestamp = first_timestamp_in_buffer_;
|
| - info.payload_type = payload_type_;
|
| + info.payload_type = config_.payload_type;
|
| return info;
|
| }
|
|
|
| +void AudioEncoderIlbc::Reset() {
|
| + if (encoder_)
|
| + CHECK_EQ(0, WebRtcIlbcfix_EncoderFree(encoder_));
|
| + CHECK(config_.IsOk());
|
| + CHECK_EQ(0, WebRtcIlbcfix_EncoderCreate(&encoder_));
|
| + const int encoder_frame_size_ms = config_.frame_size_ms > 30
|
| + ? config_.frame_size_ms / 2
|
| + : config_.frame_size_ms;
|
| + CHECK_EQ(0, WebRtcIlbcfix_EncoderInit(encoder_, encoder_frame_size_ms));
|
| + num_10ms_frames_buffered_ = 0;
|
| +}
|
| +
|
| size_t AudioEncoderIlbc::RequiredOutputSizeBytes() const {
|
| switch (num_10ms_frames_per_packet_) {
|
| case 2: return 38;
|
| @@ -133,17 +150,4 @@ size_t AudioEncoderIlbc::RequiredOutputSizeBytes() const {
|
| }
|
| }
|
|
|
| -namespace {
|
| -AudioEncoderIlbc::Config CreateConfig(const CodecInst& codec_inst) {
|
| - AudioEncoderIlbc::Config config;
|
| - config.frame_size_ms = codec_inst.pacsize / 8;
|
| - config.payload_type = codec_inst.pltype;
|
| - return config;
|
| -}
|
| -} // namespace
|
| -
|
| -AudioEncoderMutableIlbc::AudioEncoderMutableIlbc(const CodecInst& codec_inst)
|
| - : AudioEncoderMutableImpl<AudioEncoderIlbc>(CreateConfig(codec_inst)) {
|
| -}
|
| -
|
| } // namespace webrtc
|
|
|