Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/rtp_utility.cc |
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_utility.cc b/webrtc/modules/rtp_rtcp/source/rtp_utility.cc |
| index bdae3c4806fc24d0a55814f57747d1f80df6d86c..6c53a78a6c941c54ade9ed67b94484d3b2b953c5 100644 |
| --- a/webrtc/modules/rtp_rtcp/source/rtp_utility.cc |
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_utility.cc |
| @@ -248,6 +248,10 @@ bool RtpHeaderParser::Parse(RTPHeader* header, |
| header->extension.hasVideoRotation = false; |
| header->extension.videoRotation = 0; |
| + // May not be present in packet. |
| + header->extension.playout_delay.min_ms = -1; |
| + header->extension.playout_delay.max_ms = -1; |
| + |
| if (X) { |
| /* RTP header extension, RFC 3550. |
| 0 1 2 3 |
| @@ -407,6 +411,25 @@ void RtpHeaderParser::ParseOneByteExtensionHeader( |
| header->extension.hasTransportSequenceNumber = true; |
| break; |
| } |
| + case kRtpExtensionPlayoutDelay: { |
| + if (len != 2) { |
| + LOG(LS_WARNING) << "Incorrect playout delay len: " << len; |
| + return; |
| + } |
| + // 0 1 2 3 |
| + // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
| + // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| + // | ID | len=2 | MIN delay | MAX delay | |
| + // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| + |
| + uint16_t min_playout_delay = (ptr[0] << 4) | ((ptr[1] >> 4) & 0xf); |
| + uint16_t max_playout_delay = ((ptr[1] & 0xf) << 8) | ptr[2]; |
|
stefan-webrtc
2016/05/28 05:01:44
I guess these can be ints instead? No point making
Irfan
2016/06/01 08:38:33
Done.
|
| + header->extension.playout_delay.min_ms = |
| + min_playout_delay * kPlayoutDelayGranularityMs; |
| + header->extension.playout_delay.max_ms = |
| + max_playout_delay * kPlayoutDelayGranularityMs; |
| + break; |
| + } |
| default: { |
| LOG(LS_WARNING) << "Extension type not implemented: " << type; |
| return; |