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 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1075 std::unique_ptr<RtpPacketToSend> RTPSender::AllocatePacket() const { | 1075 std::unique_ptr<RtpPacketToSend> RTPSender::AllocatePacket() const { |
1076 rtc::CritScope lock(&send_critsect_); | 1076 rtc::CritScope lock(&send_critsect_); |
1077 std::unique_ptr<RtpPacketToSend> packet( | 1077 std::unique_ptr<RtpPacketToSend> packet( |
1078 new RtpPacketToSend(&rtp_header_extension_map_, max_payload_length_)); | 1078 new RtpPacketToSend(&rtp_header_extension_map_, max_payload_length_)); |
1079 packet->SetSsrc(ssrc_); | 1079 packet->SetSsrc(ssrc_); |
1080 packet->SetCsrcs(csrcs_); | 1080 packet->SetCsrcs(csrcs_); |
1081 // Reserve extensions, if registered, RtpSender set in SendToNetwork. | 1081 // Reserve extensions, if registered, RtpSender set in SendToNetwork. |
1082 packet->ReserveExtension<AbsoluteSendTime>(); | 1082 packet->ReserveExtension<AbsoluteSendTime>(); |
1083 packet->ReserveExtension<TransmissionOffset>(); | 1083 packet->ReserveExtension<TransmissionOffset>(); |
1084 packet->ReserveExtension<TransportSequenceNumber>(); | 1084 packet->ReserveExtension<TransportSequenceNumber>(); |
| 1085 if (playout_delay_oracle_.send_playout_delay()) { |
| 1086 packet->SetExtension<PlayoutDelayLimits>( |
| 1087 playout_delay_oracle_.playout_delay()); |
| 1088 } |
1085 return packet; | 1089 return packet; |
1086 } | 1090 } |
1087 | 1091 |
1088 bool RTPSender::AssignSequenceNumber(RtpPacketToSend* packet) { | 1092 bool RTPSender::AssignSequenceNumber(RtpPacketToSend* packet) { |
1089 rtc::CritScope lock(&send_critsect_); | 1093 rtc::CritScope lock(&send_critsect_); |
1090 if (!sending_media_) | 1094 if (!sending_media_) |
1091 return false; | 1095 return false; |
1092 RTC_DCHECK_EQ(packet->Ssrc(), ssrc_); | 1096 RTC_DCHECK_EQ(packet->Ssrc(), ssrc_); |
1093 packet->SetSequenceNumber(sequence_number_++); | 1097 packet->SetSequenceNumber(sequence_number_++); |
1094 | 1098 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 case kRtpExtensionAbsoluteSendTime: | 1174 case kRtpExtensionAbsoluteSendTime: |
1171 block_length = BuildAbsoluteSendTimeExtension(extension_data); | 1175 block_length = BuildAbsoluteSendTimeExtension(extension_data); |
1172 break; | 1176 break; |
1173 case kRtpExtensionVideoRotation: | 1177 case kRtpExtensionVideoRotation: |
1174 block_length = BuildVideoRotationExtension(extension_data); | 1178 block_length = BuildVideoRotationExtension(extension_data); |
1175 break; | 1179 break; |
1176 case kRtpExtensionTransportSequenceNumber: | 1180 case kRtpExtensionTransportSequenceNumber: |
1177 block_length = BuildTransportSequenceNumberExtension( | 1181 block_length = BuildTransportSequenceNumberExtension( |
1178 extension_data, transport_sequence_number_); | 1182 extension_data, transport_sequence_number_); |
1179 break; | 1183 break; |
1180 case kRtpExtensionPlayoutDelay: | 1184 case kRtpExtensionPlayoutDelay: { |
| 1185 PlayoutDelay playout_delay = playout_delay_oracle_.playout_delay(); |
1181 block_length = BuildPlayoutDelayExtension( | 1186 block_length = BuildPlayoutDelayExtension( |
1182 extension_data, playout_delay_oracle_.min_playout_delay_ms(), | 1187 extension_data, playout_delay.min_ms, playout_delay.max_ms); |
1183 playout_delay_oracle_.max_playout_delay_ms()); | |
1184 break; | 1188 break; |
| 1189 } |
1185 default: | 1190 default: |
1186 assert(false); | 1191 assert(false); |
1187 } | 1192 } |
1188 total_block_length += block_length; | 1193 total_block_length += block_length; |
1189 type = rtp_header_extension_map_.Next(type); | 1194 type = rtp_header_extension_map_.Next(type); |
1190 } | 1195 } |
1191 if (total_block_length == 0) { | 1196 if (total_block_length == 0) { |
1192 // No extension added. | 1197 // No extension added. |
1193 return 0; | 1198 return 0; |
1194 } | 1199 } |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1751 rtc::CritScope lock(&send_critsect_); | 1756 rtc::CritScope lock(&send_critsect_); |
1752 | 1757 |
1753 RtpState state; | 1758 RtpState state; |
1754 state.sequence_number = sequence_number_rtx_; | 1759 state.sequence_number = sequence_number_rtx_; |
1755 state.start_timestamp = timestamp_offset_; | 1760 state.start_timestamp = timestamp_offset_; |
1756 | 1761 |
1757 return state; | 1762 return state; |
1758 } | 1763 } |
1759 | 1764 |
1760 } // namespace webrtc | 1765 } // namespace webrtc |
OLD | NEW |