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 |
11 #ifndef WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_H_ | 11 #ifndef WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_H_ |
12 #define WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_H_ | 12 #define WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_H_ |
13 | 13 |
14 #include <set> | 14 #include <set> |
15 #include <string> | 15 #include <string> |
16 #include <utility> | 16 #include <utility> |
17 #include <vector> | 17 #include <vector> |
18 | 18 |
19 #include "webrtc/modules/include/module.h" | 19 #include "webrtc/modules/include/module.h" |
20 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 20 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
| 21 #include "webrtc/modules/video_coding/include/video_coding_defines.h" |
21 | 22 |
22 namespace webrtc { | 23 namespace webrtc { |
23 // Forward declarations. | 24 // Forward declarations. |
24 class ReceiveStatistics; | 25 class ReceiveStatistics; |
25 class RemoteBitrateEstimator; | 26 class RemoteBitrateEstimator; |
26 class RtpReceiver; | 27 class RtpReceiver; |
27 class Transport; | 28 class Transport; |
28 class RtcEventLog; | 29 class RtcEventLog; |
29 | 30 |
30 RTPExtensionType StringToRtpExtensionType(const std::string& extension); | 31 RTPExtensionType StringToRtpExtensionType(const std::string& extension); |
31 | 32 |
32 namespace rtcp { | 33 namespace rtcp { |
33 class TransportFeedback; | 34 class TransportFeedback; |
34 } | 35 } |
35 | 36 |
36 class RtpRtcp : public Module { | 37 class RtpRtcp : public Module, public NackSender { |
37 public: | 38 public: |
38 struct Configuration { | 39 struct Configuration { |
39 Configuration(); | 40 Configuration(); |
40 | 41 |
41 /* id - Unique identifier of this RTP/RTCP module object | 42 /* id - Unique identifier of this RTP/RTCP module object |
42 * audio - True for a audio version of the RTP/RTCP module | 43 * audio - True for a audio version of the RTP/RTCP module |
43 * object false will create a video version | 44 * object false will create a video version |
44 * clock - The clock to use to read time. If NULL object | 45 * clock - The clock to use to read time. If NULL object |
45 * will be using the system clock. | 46 * will be using the system clock. |
46 * incoming_data - Callback object that will receive the incoming | 47 * incoming_data - Callback object that will receive the incoming |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 * | 528 * |
528 * Returns -1 on failure, otherwise 0. | 529 * Returns -1 on failure, otherwise 0. |
529 */ | 530 */ |
530 virtual int SetSelectiveRetransmissions(uint8_t settings) = 0; | 531 virtual int SetSelectiveRetransmissions(uint8_t settings) = 0; |
531 | 532 |
532 /* | 533 /* |
533 * Send a Negative acknowledgement packet | 534 * Send a Negative acknowledgement packet |
534 * | 535 * |
535 * return -1 on failure else 0 | 536 * return -1 on failure else 0 |
536 */ | 537 */ |
| 538 // TODO(philipel): Deprecate this and start using SendNack instead, |
| 539 // mostly because we want a function that actually send |
| 540 // NACK for the specified packets. |
537 virtual int32_t SendNACK(const uint16_t* nackList, uint16_t size) = 0; | 541 virtual int32_t SendNACK(const uint16_t* nackList, uint16_t size) = 0; |
538 | 542 |
539 /* | 543 /* |
| 544 * Implements NackSender |
| 545 * Send NACK for the packets specified. |
| 546 */ |
| 547 virtual void SendNack(const std::vector<uint16_t>& sequence_numbers) = 0; |
| 548 |
| 549 /* |
540 * Store the sent packets, needed to answer to a Negative acknowledgement | 550 * Store the sent packets, needed to answer to a Negative acknowledgement |
541 * requests | 551 * requests |
542 */ | 552 */ |
543 virtual void SetStorePacketsStatus(bool enable, uint16_t numberToStore) = 0; | 553 virtual void SetStorePacketsStatus(bool enable, uint16_t numberToStore) = 0; |
544 | 554 |
545 // Returns true if the module is configured to store packets. | 555 // Returns true if the module is configured to store packets. |
546 virtual bool StorePackets() const = 0; | 556 virtual bool StorePackets() const = 0; |
547 | 557 |
548 // Called on receipt of RTCP report block from remote side. | 558 // Called on receipt of RTCP report block from remote side. |
549 virtual void RegisterRtcpStatisticsCallback( | 559 virtual void RegisterRtcpStatisticsCallback( |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 | 661 |
652 /* | 662 /* |
653 * send a request for a keyframe | 663 * send a request for a keyframe |
654 * | 664 * |
655 * return -1 on failure else 0 | 665 * return -1 on failure else 0 |
656 */ | 666 */ |
657 virtual int32_t RequestKeyFrame() = 0; | 667 virtual int32_t RequestKeyFrame() = 0; |
658 }; | 668 }; |
659 } // namespace webrtc | 669 } // namespace webrtc |
660 #endif // WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_H_ | 670 #endif // WEBRTC_MODULES_RTP_RTCP_INCLUDE_RTP_RTCP_H_ |
OLD | NEW |