From 663da0a8fccef6ecfde780e42fda21ad46010038 Mon Sep 17 00:00:00 2001 From: "minyue@webrtc.org" Date: Thu, 26 Sep 2013 15:21:26 +0000 Subject: [PATCH] With ACM2 and NetEq4, VoE fuzz test very often fails. As far as I observe, there are several reasons for this: 1. webrtc/modules/audio_coding/neteq4/neteq_impl.cc : 870 assert(new_codec_); This is related to webrtc/modules/audio_coding/neteq4/decision_logic_normal.cc : 81 kUndefined can happen without new_codec_ being set 2. webrtc/modules/audio_coding/neteq4/neteq_impl.cc : 745 assert(sync_buffer_->FutureLength() >= expand_->overlap_length()); 3. some other assert triggered. The above happens not very often and goes away with no assertion. 3. (most common, this CL addresses this) webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc : 201 payload_data_length = payload_length - rtp_header->header.paddingLength; There are situations that payload_length < rtp_header->header.paddingLength; OLD ACM + NetEq3 can handle this: a) webrtc/modules/audio_coding/main/source/acm_neteq.cc : 477 int16_t payload_length = static_cast(length_payload); payload_length becomes negative in this situation b) webrtc/modules/audio_coding/neteq/recin.c WebRtcNetEQ_RecInInternal() handles negative payload length I do not want to touch VoE, so I tried to let ACM2 and NetEq4 handle negative payload length. This CL does not follow the exact way of OLD ACM + NetEq3. I stopped negative payload length at ACM and did not allow it go to NetEq4. To try this, apply my uploaded patch : https://webrtc-codereview.appspot.com/2281004/ Let me know if you see better solutions. R=henrik.lundin@webrtc.org, stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2292005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4860 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc index 04cfe14407..134548518e 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc @@ -198,12 +198,10 @@ int32_t RTPReceiverAudio::ParseRtpPacket(WebRtcRTPHeader* rtp_header, rtp_header->type.Audio.arrOfEnergy, rtp_header->type.Audio.numEnergy); } - const uint16_t payload_data_length = payload_length - - rtp_header->header.paddingLength; return ParseAudioCodecSpecific(rtp_header, payload, - payload_data_length, + payload_length, specific_payload.Audio, is_red); }