Index: webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc |
index 0bf95b7fe4b14f10d60d4cea44504d5a2083ee0e..df20601554d42c46552dad27dec8215459fb5ec2 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc |
@@ -248,7 +248,6 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType, |
cvo_mode = _rtpSender.ActivateCVORtpHeaderExtension(); |
} |
- uint16_t rtp_header_length = _rtpSender.RTPHeaderLength(); |
size_t payload_bytes_to_send = payloadSize; |
const uint8_t* data = payloadData; |
@@ -265,15 +264,22 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType, |
while (!last) { |
uint8_t dataBuffer[IP_PACKET_SIZE] = {0}; |
size_t payload_bytes_in_packet = 0; |
+ |
+ // Write RTP header. |
+ // Note that RTP header size is dynamically computed since there may be |
+ // an optional RTP header extension. |
+ uint16_t rtp_header_length = _rtpSender.BuildRTPheader( |
+ dataBuffer, payloadType, false, captureTimeStamp, capture_time_ms); |
+ |
if (!packetizer->NextPacket(&dataBuffer[rtp_header_length], |
&payload_bytes_in_packet, &last)) { |
return -1; |
} |
- // Write RTP header. |
// Set marker bit true if this is the last packet in frame. |
- _rtpSender.BuildRTPheader( |
- dataBuffer, payloadType, last, captureTimeStamp, capture_time_ms); |
+ if (last) |
+ dataBuffer[1] |= kRtpMarkerBitMask; |
+ |
// According to |
// http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/ |
// ts_126114v120700p.pdf Section 7.4.5: |