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}
diff --git a/audio/channel_send.cc b/audio/channel_send.cc
index 793a7dd..0404640 100644
--- a/audio/channel_send.cc
+++ b/audio/channel_send.cc
@@ -507,7 +507,11 @@
// 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(
diff --git a/modules/rtp_rtcp/source/rtp_sender_audio.cc b/modules/rtp_rtcp/source/rtp_sender_audio.cc
index 86026ff..c54cb91 100644
--- a/modules/rtp_rtcp/source/rtp_sender_audio.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_audio.cc
@@ -224,7 +224,8 @@
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;