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 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 | 248 |
249 struct PacketFeedback { | 249 struct PacketFeedback { |
250 PacketFeedback(int64_t arrival_time_ms, uint16_t sequence_number) | 250 PacketFeedback(int64_t arrival_time_ms, uint16_t sequence_number) |
251 : PacketFeedback(-1, | 251 : PacketFeedback(-1, |
252 arrival_time_ms, | 252 arrival_time_ms, |
253 -1, | 253 -1, |
254 sequence_number, | 254 sequence_number, |
255 0, | 255 0, |
256 0, | 256 0, |
257 0, | 257 0, |
| 258 0, |
| 259 0, |
258 PacedPacketInfo()) {} | 260 PacedPacketInfo()) {} |
259 | 261 |
260 PacketFeedback(int64_t arrival_time_ms, | 262 PacketFeedback(int64_t arrival_time_ms, |
261 int64_t send_time_ms, | 263 int64_t send_time_ms, |
262 uint16_t sequence_number, | 264 uint16_t sequence_number, |
263 size_t payload_size, | 265 size_t payload_size, |
| 266 size_t rtp_headers_size, |
| 267 size_t transport_headers_size, |
264 const PacedPacketInfo& pacing_info) | 268 const PacedPacketInfo& pacing_info) |
265 : PacketFeedback(-1, | 269 : PacketFeedback(-1, |
266 arrival_time_ms, | 270 arrival_time_ms, |
267 send_time_ms, | 271 send_time_ms, |
268 sequence_number, | 272 sequence_number, |
269 payload_size, | 273 payload_size, |
| 274 rtp_headers_size, |
| 275 transport_headers_size, |
270 0, | 276 0, |
271 0, | 277 0, |
272 pacing_info) {} | 278 pacing_info) {} |
273 | 279 |
274 PacketFeedback(int64_t creation_time_ms, | 280 PacketFeedback(int64_t creation_time_ms, |
275 uint16_t sequence_number, | 281 uint16_t sequence_number, |
276 size_t payload_size, | 282 size_t payload_size, |
| 283 size_t rtp_headers_size, |
| 284 size_t transport_headers_size, |
277 uint16_t local_net_id, | 285 uint16_t local_net_id, |
278 uint16_t remote_net_id, | 286 uint16_t remote_net_id, |
279 const PacedPacketInfo& pacing_info) | 287 const PacedPacketInfo& pacing_info) |
280 : PacketFeedback(creation_time_ms, | 288 : PacketFeedback(creation_time_ms, |
281 -1, | 289 -1, |
282 -1, | 290 -1, |
283 sequence_number, | 291 sequence_number, |
284 payload_size, | 292 payload_size, |
| 293 rtp_headers_size, |
| 294 transport_headers_size, |
285 local_net_id, | 295 local_net_id, |
286 remote_net_id, | 296 remote_net_id, |
287 pacing_info) {} | 297 pacing_info) {} |
288 | 298 |
289 PacketFeedback(int64_t creation_time_ms, | 299 PacketFeedback(int64_t creation_time_ms, |
290 int64_t arrival_time_ms, | 300 int64_t arrival_time_ms, |
291 int64_t send_time_ms, | 301 int64_t send_time_ms, |
292 uint16_t sequence_number, | 302 uint16_t sequence_number, |
293 size_t payload_size, | 303 size_t payload_size, |
| 304 size_t rtp_headers_size, |
| 305 size_t transport_headers_size, |
294 uint16_t local_net_id, | 306 uint16_t local_net_id, |
295 uint16_t remote_net_id, | 307 uint16_t remote_net_id, |
296 const PacedPacketInfo& pacing_info) | 308 const PacedPacketInfo& pacing_info) |
297 : creation_time_ms(creation_time_ms), | 309 : creation_time_ms(creation_time_ms), |
298 arrival_time_ms(arrival_time_ms), | 310 arrival_time_ms(arrival_time_ms), |
299 send_time_ms(send_time_ms), | 311 send_time_ms(send_time_ms), |
300 sequence_number(sequence_number), | 312 sequence_number(sequence_number), |
301 payload_size(payload_size), | 313 payload_size(payload_size), |
| 314 rtp_headers_size(rtp_headers_size), |
| 315 transport_headers_size(transport_headers_size), |
302 local_net_id(local_net_id), | 316 local_net_id(local_net_id), |
303 remote_net_id(remote_net_id), | 317 remote_net_id(remote_net_id), |
304 pacing_info(pacing_info) {} | 318 pacing_info(pacing_info) {} |
305 | 319 |
306 static constexpr int kNotAProbe = -1; | 320 static constexpr int kNotAProbe = -1; |
307 static constexpr int64_t kNotReceived = -1; | 321 static constexpr int64_t kNotReceived = -1; |
308 | 322 |
309 // NOTE! The variable |creation_time_ms| is not used when testing equality. | 323 // NOTE! The variable |creation_time_ms| is not used when testing equality. |
310 // This is due to |creation_time_ms| only being used by SendTimeHistory | 324 // This is due to |creation_time_ms| only being used by SendTimeHistory |
311 // for book-keeping, and is of no interest outside that class. | 325 // for book-keeping, and is of no interest outside that class. |
312 // TODO(philipel): Remove |creation_time_ms| from PacketFeedback when cleaning | 326 // TODO(philipel): Remove |creation_time_ms| from PacketFeedback when cleaning |
313 // up SendTimeHistory. | 327 // up SendTimeHistory. |
314 bool operator==(const PacketFeedback& rhs) const { | 328 bool operator==(const PacketFeedback& rhs) const { |
315 return arrival_time_ms == rhs.arrival_time_ms && | 329 return arrival_time_ms == rhs.arrival_time_ms && |
316 send_time_ms == rhs.send_time_ms && | 330 send_time_ms == rhs.send_time_ms && |
317 sequence_number == rhs.sequence_number && | 331 sequence_number == rhs.sequence_number && |
318 payload_size == rhs.payload_size && pacing_info == rhs.pacing_info; | 332 payload_size == rhs.payload_size && |
| 333 rtp_headers_size == rhs.rtp_headers_size && |
| 334 transport_headers_size == rhs.transport_headers_size && |
| 335 pacing_info == rhs.pacing_info; |
319 } | 336 } |
320 | 337 |
321 // Time corresponding to when this object was created. | 338 // Time corresponding to when this object was created. |
322 int64_t creation_time_ms; | 339 int64_t creation_time_ms; |
323 // Time corresponding to when the packet was received. Timestamped with the | 340 // Time corresponding to when the packet was received. Timestamped with the |
324 // receiver's clock. For unreceived packet, the sentinel value kNotReceived | 341 // receiver's clock. For unreceived packet, the sentinel value kNotReceived |
325 // is used. | 342 // is used. |
326 int64_t arrival_time_ms; | 343 int64_t arrival_time_ms; |
327 // Time corresponding to when the packet was sent, timestamped with the | 344 // Time corresponding to when the packet was sent, timestamped with the |
328 // sender's clock. | 345 // sender's clock. |
329 int64_t send_time_ms; | 346 int64_t send_time_ms; |
330 // Packet identifier, incremented with 1 for every packet generated by the | 347 // Packet identifier, incremented with 1 for every packet generated by the |
331 // sender. | 348 // sender. |
332 uint16_t sequence_number; | 349 uint16_t sequence_number; |
333 // Size of the packet excluding RTP headers. | 350 // Size of the packet excluding RTP headers. |
334 size_t payload_size; | 351 size_t payload_size; |
| 352 // Size of the RTP headers. |
| 353 size_t rtp_headers_size; |
| 354 // Size of transport headers. |
| 355 size_t transport_headers_size; |
335 // The network route ids that this packet is associated with. | 356 // The network route ids that this packet is associated with. |
336 uint16_t local_net_id; | 357 uint16_t local_net_id; |
337 uint16_t remote_net_id; | 358 uint16_t remote_net_id; |
338 // Pacing information about this packet. | 359 // Pacing information about this packet. |
339 PacedPacketInfo pacing_info; | 360 PacedPacketInfo pacing_info; |
340 }; | 361 }; |
341 | 362 |
342 class TransportFeedbackObserver { | 363 class TransportFeedbackObserver { |
343 public: | 364 public: |
344 TransportFeedbackObserver() {} | 365 TransportFeedbackObserver() {} |
345 virtual ~TransportFeedbackObserver() {} | 366 virtual ~TransportFeedbackObserver() {} |
346 | 367 |
347 // Note: Transport-wide sequence number as sequence number. | 368 // Note: Transport-wide sequence number as sequence number. |
348 virtual void AddPacket(uint32_t ssrc, | 369 virtual void AddPacket(uint32_t ssrc, |
349 uint16_t sequence_number, | 370 uint16_t sequence_number, |
350 size_t length, | 371 size_t payload_size, |
| 372 size_t rtp_header_size, |
351 const PacedPacketInfo& pacing_info) = 0; | 373 const PacedPacketInfo& pacing_info) = 0; |
352 | 374 |
353 virtual void OnTransportFeedback(const rtcp::TransportFeedback& feedback) = 0; | 375 virtual void OnTransportFeedback(const rtcp::TransportFeedback& feedback) = 0; |
354 | 376 |
355 virtual std::vector<PacketFeedback> GetTransportFeedbackVector() const = 0; | 377 virtual std::vector<PacketFeedback> GetTransportFeedbackVector() const = 0; |
356 }; | 378 }; |
357 | 379 |
358 class PacketFeedbackObserver { | 380 class PacketFeedbackObserver { |
359 public: | 381 public: |
360 virtual ~PacketFeedbackObserver() = default; | 382 virtual ~PacketFeedbackObserver() = default; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 class TransportSequenceNumberAllocator { | 467 class TransportSequenceNumberAllocator { |
446 public: | 468 public: |
447 TransportSequenceNumberAllocator() {} | 469 TransportSequenceNumberAllocator() {} |
448 virtual ~TransportSequenceNumberAllocator() {} | 470 virtual ~TransportSequenceNumberAllocator() {} |
449 | 471 |
450 virtual uint16_t AllocateSequenceNumber() = 0; | 472 virtual uint16_t AllocateSequenceNumber() = 0; |
451 }; | 473 }; |
452 | 474 |
453 } // namespace webrtc | 475 } // namespace webrtc |
454 #endif // WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_DEFINES_H_ | 476 #endif // WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_DEFINES_H_ |
OLD | NEW |