Chromium Code Reviews| 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 ddd6dde31c9e3594346fc08f82a0ba6f63c6d087..61f7920d81b8c093cafabe1a758c0a95dcb1f585 100644 |
| --- a/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc |
| +++ b/webrtc/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.cc |
| @@ -92,16 +92,13 @@ int AudioEncoderIlbc::GetTargetBitrate() const { |
| AudioEncoder::EncodedInfo AudioEncoderIlbc::EncodeInternal( |
| uint32_t rtp_timestamp, |
| rtc::ArrayView<const int16_t> audio, |
| - size_t max_encoded_bytes, |
| - uint8_t* encoded) { |
| - RTC_DCHECK_GE(max_encoded_bytes, RequiredOutputSizeBytes()); |
| + rtc::Buffer* encoded) { |
| // Save timestamp if starting a new packet. |
| if (num_10ms_frames_buffered_ == 0) |
| first_timestamp_in_buffer_ = rtp_timestamp; |
| // Buffer input. |
| - RTC_DCHECK_EQ(static_cast<size_t>(kSampleRateHz / 100), audio.size()); |
| std::copy(audio.cbegin(), audio.cend(), |
| input_buffer_ + kSampleRateHz / 100 * num_10ms_frames_buffered_); |
| @@ -114,15 +111,24 @@ AudioEncoder::EncodedInfo AudioEncoderIlbc::EncodeInternal( |
| // Encode buffered input. |
| RTC_DCHECK_EQ(num_10ms_frames_buffered_, num_10ms_frames_per_packet_); |
| num_10ms_frames_buffered_ = 0; |
| - const int output_len = WebRtcIlbcfix_Encode( |
| - encoder_, |
| - input_buffer_, |
| - kSampleRateHz / 100 * num_10ms_frames_per_packet_, |
| - encoded); |
| - RTC_CHECK_GE(output_len, 0); |
| + size_t encoded_bytes = |
| + encoded->AppendData( |
| + RequiredOutputSizeBytes(), |
| + [&] (rtc::ArrayView<uint8_t> encoded) { |
| + const int r = WebRtcIlbcfix_Encode( |
| + encoder_, |
| + input_buffer_, |
| + kSampleRateHz / 100 * num_10ms_frames_per_packet_, |
| + encoded.data()); |
| + RTC_CHECK_GE(r, 0); |
| + |
| + return (r >= 0) ? static_cast<size_t>(r) : 0; |
|
hlundin-webrtc
2016/02/29 12:46:47
You just CHECKed that r >= 0; no need to take care
ossu
2016/02/29 13:23:01
Acknowledged.
|
| + }); |
| + |
| + RTC_DCHECK_EQ(encoded_bytes, RequiredOutputSizeBytes()); |
| + |
| EncodedInfo info; |
| - info.encoded_bytes = static_cast<size_t>(output_len); |
| - RTC_DCHECK_EQ(info.encoded_bytes, RequiredOutputSizeBytes()); |
| + info.encoded_bytes = encoded_bytes; |
| info.encoded_timestamp = first_timestamp_in_buffer_; |
| info.payload_type = config_.payload_type; |
| return info; |