Reland "Avoid encrypting empty audio packet."

This is a reland of b0ac94307e1787f83de2b9a2dc3b58309ea8654b

Original change's description:
> Avoid encrypting empty audio packet.
> 
> Bug: b/132861665
> Change-Id: I161ba8697ae88857927f27fa6d3914b7201fdeab
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137049
> Commit-Queue: Minyue Li <minyue@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28006}

Bug: b/132861665
Change-Id: Ia9be25116c7d10fee847ee25c484e6422be24b31
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138218
Commit-Queue: Minyue Li <minyue@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28086}
This commit is contained in:
Minyue Li 2019-05-28 13:27:40 +02:00 committed by Commit Bot
parent 9a57350c6b
commit 9ab520e24b
2 changed files with 7 additions and 2 deletions

View File

@ -507,7 +507,11 @@ int32_t ChannelSend::SendRtpAudio(AudioFrameType frameType,
// E2EE Custom Audio Frame Encryption (This is optional).
// Keep this buffer around for the lifetime of the send call.
rtc::Buffer encrypted_audio_payload;
if (frame_encryptor_ != nullptr) {
// We don't invoke encryptor if payload is empty, which means we are to send
// DTMF, or the encoder entered DTX.
// TODO(minyue): see whether DTMF packets should be encrypted or not. In
// current implementation, they are not.
if (frame_encryptor_ != nullptr && !payload.empty()) {
// TODO(benwright@webrtc.org) - Allocate enough to always encrypt inline.
// Allocate a buffer to hold the maximum possible encrypted payload.
size_t max_ciphertext_size = frame_encryptor_->GetMaxCiphertextByteSize(

View File

@ -224,7 +224,8 @@ bool RTPSenderAudio::SendAudio(AudioFrameType frame_type,
if (payload_size == 0 || payload_data == NULL) {
if (frame_type == AudioFrameType::kEmptyFrame) {
// we don't send empty audio RTP packets
// no error since we use it to drive DTMF when we use VAD
// no error since we use it to either drive DTMF when we use VAD, or
// enter DTX.
return true;
}
return false;