| OLD | NEW |
| 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 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 // +-+-+-+-+-+-+-+-+ | 311 // +-+-+-+-+-+-+-+-+ |
| 312 // | ID | len | | 312 // | ID | len | |
| 313 // +-+-+-+-+-+-+-+-+ | 313 // +-+-+-+-+-+-+-+-+ |
| 314 | 314 |
| 315 // Note that 'len' is the header extension element length, which is the | 315 // Note that 'len' is the header extension element length, which is the |
| 316 // number of bytes - 1. | 316 // number of bytes - 1. |
| 317 const int id = (*ptr & 0xf0) >> 4; | 317 const int id = (*ptr & 0xf0) >> 4; |
| 318 const int len = (*ptr & 0x0f); | 318 const int len = (*ptr & 0x0f); |
| 319 ptr++; | 319 ptr++; |
| 320 | 320 |
| 321 if (id == 0) { |
| 322 // Padding byte, skip ignoring len. |
| 323 continue; |
| 324 } |
| 325 |
| 321 if (id == 15) { | 326 if (id == 15) { |
| 322 LOG(LS_WARNING) | 327 LOG(LS_VERBOSE) |
| 323 << "RTP extension header 15 encountered. Terminate parsing."; | 328 << "RTP extension header 15 encountered. Terminate parsing."; |
| 324 return; | 329 return; |
| 325 } | 330 } |
| 326 | 331 |
| 327 if (ptrRTPDataExtensionEnd - ptr < (len + 1)) { | 332 if (ptrRTPDataExtensionEnd - ptr < (len + 1)) { |
| 328 LOG(LS_WARNING) << "Incorrect one-byte extension len: " << (len + 1) | 333 LOG(LS_WARNING) << "Incorrect one-byte extension len: " << (len + 1) |
| 329 << ", bytes left in buffer: " | 334 << ", bytes left in buffer: " |
| 330 << (ptrRTPDataExtensionEnd - ptr); | 335 << (ptrRTPDataExtensionEnd - ptr); |
| 331 return; | 336 return; |
| 332 } | 337 } |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 max_playout_delay * kPlayoutDelayGranularityMs; | 444 max_playout_delay * kPlayoutDelayGranularityMs; |
| 440 break; | 445 break; |
| 441 } | 446 } |
| 442 default: { | 447 default: { |
| 443 LOG(LS_WARNING) << "Extension type not implemented: " << type; | 448 LOG(LS_WARNING) << "Extension type not implemented: " << type; |
| 444 return; | 449 return; |
| 445 } | 450 } |
| 446 } | 451 } |
| 447 } | 452 } |
| 448 ptr += (len + 1); | 453 ptr += (len + 1); |
| 449 uint8_t num_bytes = ParsePaddingBytes(ptrRTPDataExtensionEnd, ptr); | |
| 450 ptr += num_bytes; | |
| 451 } | 454 } |
| 452 } | 455 } |
| 453 | 456 |
| 454 uint8_t RtpHeaderParser::ParsePaddingBytes( | |
| 455 const uint8_t* ptrRTPDataExtensionEnd, | |
| 456 const uint8_t* ptr) const { | |
| 457 uint8_t num_zero_bytes = 0; | |
| 458 while (ptrRTPDataExtensionEnd - ptr > 0) { | |
| 459 if (*ptr != 0) { | |
| 460 return num_zero_bytes; | |
| 461 } | |
| 462 ptr++; | |
| 463 num_zero_bytes++; | |
| 464 } | |
| 465 return num_zero_bytes; | |
| 466 } | |
| 467 } // namespace RtpUtility | 457 } // namespace RtpUtility |
| 468 } // namespace webrtc | 458 } // namespace webrtc |
| OLD | NEW |