Index: webrtc/modules/audio_coding/codecs/g722/audio_encoder_g722.cc |
diff --git a/webrtc/modules/audio_coding/codecs/g722/audio_encoder_g722.cc b/webrtc/modules/audio_coding/codecs/g722/audio_encoder_g722.cc |
index 9eb7a11524d4b13fcd1a23c82c9e0387f35fa99f..6df5430cba7c2f853c0b6e156a8ec62fafbf6bf6 100644 |
--- a/webrtc/modules/audio_coding/codecs/g722/audio_encoder_g722.cc |
+++ b/webrtc/modules/audio_coding/codecs/g722/audio_encoder_g722.cc |
@@ -21,6 +21,14 @@ namespace { |
const size_t kSampleRateHz = 16000; |
+AudioEncoderG722::Config CreateConfig(const CodecInst& codec_inst) { |
+ AudioEncoderG722::Config config; |
+ config.num_channels = codec_inst.channels; |
+ config.frame_size_ms = codec_inst.pacsize / 16; |
+ config.payload_type = codec_inst.pltype; |
+ return config; |
+} |
+ |
} // namespace |
bool AudioEncoderG722::Config::IsOk() const { |
@@ -28,15 +36,6 @@ bool AudioEncoderG722::Config::IsOk() const { |
(num_channels >= 1); |
} |
-AudioEncoderG722::EncoderState::EncoderState() { |
- CHECK_EQ(0, WebRtcG722_CreateEncoder(&encoder)); |
- CHECK_EQ(0, WebRtcG722_EncoderInit(encoder)); |
-} |
- |
-AudioEncoderG722::EncoderState::~EncoderState() { |
- CHECK_EQ(0, WebRtcG722_FreeEncoder(encoder)); |
-} |
- |
AudioEncoderG722::AudioEncoderG722(const Config& config) |
: num_channels_(config.num_channels), |
payload_type_(config.payload_type), |
@@ -53,26 +52,30 @@ AudioEncoderG722::AudioEncoderG722(const Config& config) |
encoders_[i].speech_buffer.reset(new int16_t[samples_per_channel]); |
encoders_[i].encoded_buffer.SetSize(samples_per_channel / 2); |
} |
+ Reset(); |
} |
-AudioEncoderG722::~AudioEncoderG722() {} |
+AudioEncoderG722::AudioEncoderG722(const CodecInst& codec_inst) |
+ : AudioEncoderG722(CreateConfig(codec_inst)) {} |
-int AudioEncoderG722::SampleRateHz() const { |
- return kSampleRateHz; |
+AudioEncoderG722::~AudioEncoderG722() = default; |
+ |
+size_t AudioEncoderG722::MaxEncodedBytes() const { |
+ return SamplesPerChannel() / 2 * num_channels_; |
} |
-int AudioEncoderG722::RtpTimestampRateHz() const { |
- // The RTP timestamp rate for G.722 is 8000 Hz, even though it is a 16 kHz |
- // codec. |
- return kSampleRateHz / 2; |
+int AudioEncoderG722::SampleRateHz() const { |
+ return kSampleRateHz; |
} |
int AudioEncoderG722::NumChannels() const { |
return num_channels_; |
} |
-size_t AudioEncoderG722::MaxEncodedBytes() const { |
- return SamplesPerChannel() / 2 * num_channels_; |
+int AudioEncoderG722::RtpTimestampRateHz() const { |
+ // The RTP timestamp rate for G.722 is 8000 Hz, even though it is a 16 kHz |
+ // codec. |
+ return kSampleRateHz / 2; |
} |
size_t AudioEncoderG722::Num10MsFramesInNextPacket() const { |
@@ -116,7 +119,7 @@ AudioEncoder::EncodedInfo AudioEncoderG722::EncodeInternal( |
for (int i = 0; i < num_channels_; ++i) { |
const size_t encoded = WebRtcG722_Encode( |
encoders_[i].encoder, encoders_[i].speech_buffer.get(), |
- samples_per_channel, encoders_[i].encoded_buffer.data<uint8_t>()); |
+ samples_per_channel, encoders_[i].encoded_buffer.data()); |
CHECK_EQ(encoded, samples_per_channel / 2); |
} |
@@ -140,22 +143,22 @@ AudioEncoder::EncodedInfo AudioEncoderG722::EncodeInternal( |
return info; |
} |
-size_t AudioEncoderG722::SamplesPerChannel() const { |
- return kSampleRateHz / 100 * num_10ms_frames_per_packet_; |
+void AudioEncoderG722::Reset() { |
+ num_10ms_frames_buffered_ = 0; |
+ for (int i = 0; i < num_channels_; ++i) |
+ CHECK_EQ(0, WebRtcG722_EncoderInit(encoders_[i].encoder)); |
} |
-namespace { |
-AudioEncoderG722::Config CreateConfig(const CodecInst& codec_inst) { |
- AudioEncoderG722::Config config; |
- config.num_channels = codec_inst.channels; |
- config.frame_size_ms = codec_inst.pacsize / 16; |
- config.payload_type = codec_inst.pltype; |
- return config; |
+AudioEncoderG722::EncoderState::EncoderState() { |
+ CHECK_EQ(0, WebRtcG722_CreateEncoder(&encoder)); |
} |
-} // namespace |
-AudioEncoderMutableG722::AudioEncoderMutableG722(const CodecInst& codec_inst) |
- : AudioEncoderMutableImpl<AudioEncoderG722>(CreateConfig(codec_inst)) { |
+AudioEncoderG722::EncoderState::~EncoderState() { |
+ CHECK_EQ(0, WebRtcG722_FreeEncoder(encoder)); |
+} |
+ |
+size_t AudioEncoderG722::SamplesPerChannel() const { |
+ return kSampleRateHz / 100 * num_10ms_frames_per_packet_; |
} |
} // namespace webrtc |