diff options
Diffstat (limited to 'webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc')
-rw-r--r-- | webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc | 29 |
1 files changed, 24 insertions, 5 deletions
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 fad531f6bb..4fea44babd 100644 --- a/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc +++ b/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc @@ -13,6 +13,7 @@ #include <cstring> #include <limits> #include "webrtc/base/checks.h" +#include "webrtc/common_types.h" #include "webrtc/modules/audio_coding/codecs/ilbc/interface/ilbc.h" namespace webrtc { @@ -23,15 +24,20 @@ const int kSampleRateHz = 8000; } // namespace +bool AudioEncoderIlbc::Config::IsOk() const { + if (!(frame_size_ms == 20 || frame_size_ms == 30 || frame_size_ms == 40 || + frame_size_ms == 60)) + return false; + if (kSampleRateHz / 100 * (frame_size_ms / 10) > kMaxSamplesPerPacket) + return false; + return true; +} + AudioEncoderIlbc::AudioEncoderIlbc(const Config& config) : payload_type_(config.payload_type), num_10ms_frames_per_packet_(config.frame_size_ms / 10), num_10ms_frames_buffered_(0) { - CHECK(config.frame_size_ms == 20 || config.frame_size_ms == 30 || - config.frame_size_ms == 40 || config.frame_size_ms == 60) - << "Frame size must be 20, 30, 40, or 60 ms."; - DCHECK_LE(kSampleRateHz / 100 * num_10ms_frames_per_packet_, - kMaxSamplesPerPacket); + 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 @@ -112,4 +118,17 @@ 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 |