From dcccab3ebb623df74fbb1425da2cb9d9a42439fa Mon Sep 17 00:00:00 2001 From: Karl Wiberg Date: Thu, 7 May 2015 12:35:12 +0200 Subject: New interface: AudioEncoderMutable With implementations for all codecs. It has no users yet. This new interface is the same as AudioEncoder (in fact it is a subclass) but it allows changing some parameters after construction. COAUTHOR=henrik.lundin@webrtc.org BUG=4228 R=jmarusic@webrtc.org, minyue@webrtc.org Review URL: https://webrtc-codereview.appspot.com/51679004 Cr-Commit-Position: refs/heads/master@{#9149} --- .../codecs/pcm16b/audio_encoder_pcm16b.cc | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'webrtc/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.cc') diff --git a/webrtc/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.cc b/webrtc/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.cc index f761922201..491fdfdb14 100644 --- a/webrtc/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.cc +++ b/webrtc/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.cc @@ -9,14 +9,41 @@ */ #include "webrtc/modules/audio_coding/codecs/pcm16b/include/audio_encoder_pcm16b.h" + +#include "webrtc/base/checks.h" +#include "webrtc/common_types.h" #include "webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h" namespace webrtc { +bool AudioEncoderPcm16B::Config::IsOk() const { + if ((sample_rate_hz != 8000) && (sample_rate_hz != 16000) && + (sample_rate_hz != 32000) && (sample_rate_hz != 48000)) + return false; + return AudioEncoderPcm::Config::IsOk(); +} + int16_t AudioEncoderPcm16B::EncodeCall(const int16_t* audio, size_t input_len, uint8_t* encoded) { return WebRtcPcm16b_Encode(audio, static_cast(input_len), encoded); } +namespace { +AudioEncoderPcm16B::Config CreateConfig(const CodecInst& codec_inst) { + AudioEncoderPcm16B::Config config; + config.num_channels = codec_inst.channels; + config.sample_rate_hz = codec_inst.plfreq; + config.frame_size_ms = rtc::CheckedDivExact( + codec_inst.pacsize, rtc::CheckedDivExact(config.sample_rate_hz, 1000)); + config.payload_type = codec_inst.pltype; + return config; +} +} // namespace + +AudioEncoderMutablePcm16B::AudioEncoderMutablePcm16B( + const CodecInst& codec_inst) + : AudioEncoderMutableImpl(CreateConfig(codec_inst)) { +} + } // namespace webrtc -- cgit v1.2.3