Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender.h

Issue 1247293002: Add support for transport wide sequence numbers (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase, again Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtp_sender.h
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.h b/webrtc/modules/rtp_rtcp/source/rtp_sender.h
index a4703989d6e4a33323a68325b13efe392839499d..3b93ae40b69eb3925349b9596bc8064706b05aa4 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.h
@@ -18,6 +18,7 @@
#include "webrtc/base/thread_annotations.h"
#include "webrtc/common_types.h"
#include "webrtc/modules/pacing/include/paced_sender.h"
+#include "webrtc/modules/pacing/include/packet_router.h"
#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h"
#include "webrtc/modules/rtp_rtcp/source/bitrate.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
@@ -91,6 +92,8 @@ class RTPSender : public RTPSenderInterface {
Transport* transport,
RtpAudioFeedback* audio_feedback,
PacedSender* paced_sender,
+ PacketRouter* packet_router,
+ SendTimeObserver* send_time_observer,
BitrateStatisticsObserver* bitrate_callback,
FrameCountObserver* frame_count_observer,
SendSideDelayObserver* send_side_delay_observer);
@@ -171,7 +174,27 @@ class RTPSender : public RTPSenderInterface {
uint8_t BuildAudioLevelExtension(uint8_t* data_buffer) const;
uint8_t BuildAbsoluteSendTimeExtension(uint8_t* data_buffer) const;
uint8_t BuildVideoRotationExtension(uint8_t* data_buffer) const;
- uint8_t BuildTransportSequenceNumberExtension(uint8_t* data_buffer) const;
+ uint8_t BuildTransportSequenceNumberExtension(uint8_t* data_buffer,
+ uint16_t sequence_number) const;
+
+ // Verifies that the specified extension is registered, and that it is
+ // present in rtp packet. If extension is not registered kNotRegistered is
+ // returned. If extension cannot be found in the rtp header, or if it is
+ // malformed, kError is returned. Otherwise *extension_offset is set to the
+ // offset of the extension from the beginning of the rtp packet and kOk is
+ // returned.
+ enum class ExtensionStatus {
+ kNotRegistered,
+ kOk,
+ kError,
+ };
+ ExtensionStatus VerifyExtension(RTPExtensionType extension_type,
+ uint8_t* rtp_packet,
+ size_t rtp_packet_length,
+ const RTPHeader& rtp_header,
+ size_t extension_length_bytes,
+ size_t* extension_offset) const
+ EXCLUSIVE_LOCKS_REQUIRED(send_critsect_.get());
bool UpdateAudioLevel(uint8_t* rtp_packet,
size_t rtp_packet_length,
@@ -345,6 +368,12 @@ class RTPSender : public RTPSenderInterface {
size_t rtp_packet_length,
const RTPHeader& rtp_header,
int64_t now_ms) const;
+ // Update the transport sequence number of the packet using a new sequence
+ // number allocated by PacketRouter. Returns the assigned sequence number,
+ // or 0 if extension could not be updated.
+ uint16_t UpdateTransportSequenceNumber(uint8_t* rtp_packet,
+ size_t rtp_packet_length,
+ const RTPHeader& rtp_header) const;
void UpdateRtpStats(const uint8_t* buffer,
size_t packet_length,
@@ -365,7 +394,9 @@ class RTPSender : public RTPSenderInterface {
rtc::scoped_ptr<RTPSenderAudio> audio_;
rtc::scoped_ptr<RTPSenderVideo> video_;
- PacedSender *paced_sender_;
+ PacedSender* const paced_sender_;
+ PacketRouter* const packet_router_;
+ SendTimeObserver* const send_time_observer_;
int64_t last_capture_time_ms_sent_;
rtc::scoped_ptr<CriticalSectionWrapper> send_critsect_;
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698