Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc

Issue 1880443002: Fixed rtcp rpsi parsing of invalid packets. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 1083 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSli; // received signal that we need to refresh a slice 1094 rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSli; // received signal that we need to refresh a slice
1095 rtcpPacketInformation.sliPictureId = rtcpPacket.SLIItem.PictureId; 1095 rtcpPacketInformation.sliPictureId = rtcpPacket.SLIItem.PictureId;
1096 } 1096 }
1097 1097
1098 void 1098 void
1099 RTCPReceiver::HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser, 1099 RTCPReceiver::HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser,
1100 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) 1100 RTCPHelp::RTCPPacketInformation& rtcpPacketInformation)
1101 { 1101 {
1102 const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); 1102 const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
1103 RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate(); 1103 RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate();
1104 if (pktType == RTCPPacketTypes::kPsfbRpsi) { 1104 if (pktType == RTCPPacketTypes::kPsfbRpsiItem) {
1105 rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRpsi; // received sign al that we have a confirmed reference picture
1106 if(rtcpPacket.RPSI.NumberOfValidBits%8 != 0) 1105 if(rtcpPacket.RPSI.NumberOfValidBits%8 != 0)
1107 { 1106 {
1108 // to us unknown 1107 // to us unknown
1109 // continue 1108 // continue
1110 rtcpParser.Iterate(); 1109 rtcpParser.Iterate();
1111 return; 1110 return;
1112 } 1111 }
1112 // Received signal that we have a confirmed reference picture.
1113 rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRpsi;
1113 rtcpPacketInformation.rpsiPictureId = 0; 1114 rtcpPacketInformation.rpsiPictureId = 0;
1114 1115
1115 // convert NativeBitString to rpsiPictureId 1116 // convert NativeBitString to rpsiPictureId
1116 uint8_t numberOfBytes = rtcpPacket.RPSI.NumberOfValidBits /8; 1117 uint8_t numberOfBytes = rtcpPacket.RPSI.NumberOfValidBits /8;
1117 for(uint8_t n = 0; n < (numberOfBytes-1); n++) 1118 for(uint8_t n = 0; n < (numberOfBytes-1); n++)
1118 { 1119 {
1119 rtcpPacketInformation.rpsiPictureId += (rtcpPacket.RPSI.NativeBitStr ing[n] & 0x7f); 1120 rtcpPacketInformation.rpsiPictureId += (rtcpPacket.RPSI.NativeBitStr ing[n] & 0x7f);
1120 rtcpPacketInformation.rpsiPictureId <<= 7; // prepare next 1121 rtcpPacketInformation.rpsiPictureId <<= 7; // prepare next
1121 } 1122 }
1122 rtcpPacketInformation.rpsiPictureId += (rtcpPacket.RPSI.NativeBitString[ numberOfBytes-1] & 0x7f); 1123 rtcpPacketInformation.rpsiPictureId += (rtcpPacket.RPSI.NativeBitString[ numberOfBytes-1] & 0x7f);
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 return -1; 1444 return -1;
1444 } 1445 }
1445 num += receiveInfo->TmmbrSet.lengthOfSet(); 1446 num += receiveInfo->TmmbrSet.lengthOfSet();
1446 receiveInfoIt++; 1447 receiveInfoIt++;
1447 } 1448 }
1448 } 1449 }
1449 return num; 1450 return num;
1450 } 1451 }
1451 1452
1452 } // namespace webrtc 1453 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698