Change NetEq::GetAudio to use AudioFrame
With this change, NetEq now uses AudioFrame as output type, like the
surrounding functions in ACM and VoiceEngine already do.
The computational savings is probably slim, since one memcpy is
removed while another one is added (both in AcmReceiver::GetAudio).
More simplifications and clean-up will be done in
AcmReceiver::GetAudio in future CLs.
BUG=webrtc:5607
Review URL: https://codereview.webrtc.org/1750353002
Cr-Commit-Position: refs/heads/master@{#11874}
diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl.h b/webrtc/modules/audio_coding/neteq/neteq_impl.h
index 78c678c..4575864 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_impl.h
+++ b/webrtc/modules/audio_coding/neteq/neteq_impl.h
@@ -96,19 +96,7 @@
int InsertSyncPacket(const WebRtcRTPHeader& rtp_header,
uint32_t receive_timestamp) override;
- // Instructs NetEq to deliver 10 ms of audio data. The data is written to
- // |output_audio|, which can hold (at least) |max_length| elements.
- // The number of channels that were written to the output is provided in
- // the output variable |num_channels|, and each channel contains
- // |samples_per_channel| elements. If more than one channel is written,
- // the samples are interleaved.
- // The speech type is written to |type|, if |type| is not NULL.
- // Returns kOK on success, or kFail in case of an error.
- int GetAudio(size_t max_length,
- int16_t* output_audio,
- size_t* samples_per_channel,
- size_t* num_channels,
- NetEqOutputType* type) override;
+ int GetAudio(AudioFrame* audio_frame, NetEqOutputType* type) override;
int RegisterPayloadType(NetEqDecoder codec,
const std::string& codec_name,
@@ -211,16 +199,9 @@
bool is_sync_packet)
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
- // Delivers 10 ms of audio data. The data is written to |output|, which can
- // hold (at least) |max_length| elements. The number of channels that were
- // written to the output is provided in the output variable |num_channels|,
- // and each channel contains |samples_per_channel| elements. If more than one
- // channel is written, the samples are interleaved.
+ // Delivers 10 ms of audio data. The data is written to |audio_frame|.
// Returns 0 on success, otherwise an error code.
- int GetAudioInternal(size_t max_length,
- int16_t* output,
- size_t* samples_per_channel,
- size_t* num_channels)
+ int GetAudioInternal(AudioFrame* audio_frame)
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
// Provides a decision to the GetAudioInternal method. The decision what to