diff --git a/webrtc/modules/audio_coding/codecs/audio_encoder.h b/webrtc/modules/audio_coding/codecs/audio_encoder.h index 45c0a855b7..6f68d5ca15 100644 --- a/webrtc/modules/audio_coding/codecs/audio_encoder.h +++ b/webrtc/modules/audio_coding/codecs/audio_encoder.h @@ -22,6 +22,10 @@ namespace webrtc { // codec type must have an implementation of this class. class AudioEncoder { public: + struct EncodedInfo { + uint32_t encoded_timestamp; + }; + virtual ~AudioEncoder() {} // Accepts one 10 ms block of input audio (i.e., sample_rate_hz() / 100 * @@ -37,7 +41,7 @@ class AudioEncoder { size_t max_encoded_bytes, uint8_t* encoded, size_t* encoded_bytes, - uint32_t* encoded_timestamp) { + EncodedInfo* info) { CHECK_EQ(num_samples_per_channel, static_cast(sample_rate_hz() / 100)); bool ret = Encode(timestamp, @@ -45,7 +49,7 @@ class AudioEncoder { max_encoded_bytes, encoded, encoded_bytes, - encoded_timestamp); + info); CHECK_LE(*encoded_bytes, max_encoded_bytes); return ret; } @@ -68,7 +72,7 @@ class AudioEncoder { size_t max_encoded_bytes, uint8_t* encoded, size_t* encoded_bytes, - uint32_t* encoded_timestamp) = 0; + EncodedInfo* info) = 0; }; } // namespace webrtc diff --git a/webrtc/modules/audio_coding/codecs/g711/audio_encoder_pcm.cc b/webrtc/modules/audio_coding/codecs/g711/audio_encoder_pcm.cc index 6454e93c4e..ee8dfebba2 100644 --- a/webrtc/modules/audio_coding/codecs/g711/audio_encoder_pcm.cc +++ b/webrtc/modules/audio_coding/codecs/g711/audio_encoder_pcm.cc @@ -57,7 +57,7 @@ bool AudioEncoderPcm::Encode(uint32_t timestamp, size_t max_encoded_bytes, uint8_t* encoded, size_t* encoded_bytes, - uint32_t* encoded_timestamp) { + EncodedInfo* info) { const int num_samples = sample_rate_hz() / 100 * num_channels(); if (speech_buffer_.empty()) { first_timestamp_in_buffer_ = timestamp; @@ -72,7 +72,7 @@ bool AudioEncoderPcm::Encode(uint32_t timestamp, CHECK_EQ(speech_buffer_.size(), static_cast(full_frame_samples_)); int16_t ret = EncodeCall(&speech_buffer_[0], full_frame_samples_, encoded); speech_buffer_.clear(); - *encoded_timestamp = first_timestamp_in_buffer_; + info->encoded_timestamp = first_timestamp_in_buffer_; if (ret < 0) return false; *encoded_bytes = static_cast(ret); diff --git a/webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h b/webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h index f668296970..b3866f039c 100644 --- a/webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h +++ b/webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h @@ -40,7 +40,7 @@ class AudioEncoderPcm : public AudioEncoder { size_t max_encoded_bytes, uint8_t* encoded, size_t* encoded_bytes, - uint32_t* encoded_timestamp) OVERRIDE; + EncodedInfo* info) OVERRIDE; virtual int16_t EncodeCall(const int16_t* audio, size_t input_len, diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc index 6349b5c222..d7ca1a4748 100644 --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -76,7 +76,7 @@ bool AudioEncoderOpus::Encode(uint32_t timestamp, size_t max_encoded_bytes, uint8_t* encoded, size_t* encoded_bytes, - uint32_t* encoded_timestamp) { + EncodedInfo* info) { if (input_buffer_.empty()) first_timestamp_in_buffer_ = timestamp; input_buffer_.insert(input_buffer_.end(), audio, @@ -97,7 +97,7 @@ bool AudioEncoderOpus::Encode(uint32_t timestamp, if (r < 0) return false; *encoded_bytes = r; - *encoded_timestamp = first_timestamp_in_buffer_; + info->encoded_timestamp = first_timestamp_in_buffer_; return true; } diff --git a/webrtc/modules/audio_coding/codecs/opus/interface/audio_encoder_opus.h b/webrtc/modules/audio_coding/codecs/opus/interface/audio_encoder_opus.h index e2e5c73fc3..2071c0f687 100644 --- a/webrtc/modules/audio_coding/codecs/opus/interface/audio_encoder_opus.h +++ b/webrtc/modules/audio_coding/codecs/opus/interface/audio_encoder_opus.h @@ -40,7 +40,7 @@ class AudioEncoderOpus : public AudioEncoder { size_t max_encoded_bytes, uint8_t* encoded, size_t* encoded_bytes, - uint32_t* encoded_timestamp) OVERRIDE; + EncodedInfo* info) OVERRIDE; private: const int num_10ms_frames_per_packet_; diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc index c95214b260..5ce9fea3b1 100644 --- a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc @@ -102,7 +102,6 @@ class AudioDecoderTest : public ::testing::Test { data_length_(0), encoded_bytes_(0), channels_(1), - output_timestamp_(0), decoder_(NULL) {} virtual ~AudioDecoderTest() {} @@ -152,7 +151,7 @@ class AudioDecoderTest : public ::testing::Test { EXPECT_TRUE(audio_encoder_->Encode( 0, interleaved_input.get(), audio_encoder_->sample_rate_hz() / 100, - data_length_ * 2, output, &enc_len_bytes, &output_timestamp_)); + data_length_ * 2, output, &enc_len_bytes, &encoded_info_)); } return static_cast(enc_len_bytes); } @@ -263,7 +262,7 @@ class AudioDecoderTest : public ::testing::Test { size_t data_length_; size_t encoded_bytes_; size_t channels_; - uint32_t output_timestamp_; + AudioEncoder::EncodedInfo encoded_info_; AudioDecoder* decoder_; scoped_ptr audio_encoder_; };