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

Unified Diff: webrtc/common_types.h

Issue 2805023002: Add read support of RtpStreamId/RepairedRtpStreamId header extensions. (Closed)
Patch Set: +one more comment Created 3 years, 8 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 | « no previous file | webrtc/common_types.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/common_types.h
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index 750420196d957bde26f094368c9a3cee11519196..06733be168d6a08e351d0b954a2e84b03a7e4991 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -20,6 +20,7 @@
#include "webrtc/api/video/video_content_type.h"
#include "webrtc/api/video/video_rotation.h"
+#include "webrtc/base/array_view.h"
#include "webrtc/base/checks.h"
#include "webrtc/base/optional.h"
#include "webrtc/typedefs.h"
@@ -695,6 +696,42 @@ struct PlayoutDelay {
int max_ms;
};
+// Class to represent RtpStreamId which is a string.
+// Unlike std::string, it can be copied with memcpy and cleared with memset.
+// Empty value represent unset RtpStreamId.
+class StreamId {
+ public:
+ // Stream id is limited to 16 bytes because it is the maximum length
+ // that can be encoded with one-byte header extensions.
+ static constexpr size_t kMaxSize = 16;
+
+ StreamId() { value_[0] = 0; }
+ explicit StreamId(rtc::ArrayView<const char> value) {
+ Set(value.data(), value.size());
+ }
+ StreamId(const StreamId&) = default;
+ StreamId& operator=(const StreamId&) = default;
+
+ bool empty() const { return value_[0] == 0; }
+ const char* data() const { return value_; }
+ size_t size() const { return strnlen(value_, kMaxSize); }
+
+ void Set(rtc::ArrayView<const uint8_t> value) {
+ Set(reinterpret_cast<const char*>(value.data()), value.size());
+ }
+ void Set(const char* data, size_t size);
+
+ friend bool operator==(const StreamId& lhs, const StreamId& rhs) {
+ return strncmp(lhs.value_, rhs.value_, kMaxSize) == 0;
+ }
+ friend bool operator!=(const StreamId& lhs, const StreamId& rhs) {
+ return !(lhs == rhs);
+ }
+
+ private:
+ char value_[kMaxSize];
+};
+
struct RTPHeaderExtension {
RTPHeaderExtension();
@@ -723,6 +760,12 @@ struct RTPHeaderExtension {
VideoContentType videoContentType;
PlayoutDelay playout_delay = {-1, -1};
+
+ // For identification of a stream when ssrc is not signaled. See
+ // https://tools.ietf.org/html/draft-ietf-avtext-rid-09
+ // TODO(danilchap): Update url from draft to release version.
+ StreamId stream_id;
+ StreamId repaired_stream_id;
};
struct RTPHeader {
« no previous file with comments | « no previous file | webrtc/common_types.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698