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

Unified Diff: webrtc/common_types.h

Issue 2954503002: Implement FrameMarking header extension support
Patch Set: fix fuzzer Created 3 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 | « 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 4034d54ce6c32ef6d5beef837b81fa6a0c905f10..fb54a64282388c3547431ac3c8081142333eca0a 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -730,6 +730,57 @@ struct PlayoutDelay {
int max_ms;
};
+// For Frame Marking RTP Header Extension:
+// https://tools.ietf.org/html/draft-ietf-avtext-framemarking-05
+// This extensions provides meta-information about the RTP streams outside the
+// encrypted media payload, an RTP switch can do codec-agnostic
+// selective forwarding without decrypting the payload
+// o S: Start of Frame (1 bit) - MUST be 1 in the first packet in a
+// frame; otherwise MUST be 0.
+// o E: End of Frame (1 bit) - MUST be 1 in the last packet in a frame;
+// otherwise MUST be 0.
+// o I: Independent Frame (1 bit) - MUST be 1 for frames that can be
+// decoded independent of prior frames, e.g. intra-frame, VPX
+// keyframe, H.264 IDR [RFC6184], H.265 IDR/CRA/BLA/RAP [RFC7798];
+// otherwise MUST be 0.
+// o D: Discardable Frame (1 bit) - MUST be 1 for frames that can be
+// discarded, and still provide a decodable media stream; otherwise
+// MUST be 0.
+// o B: Base Layer Sync (1 bit) - MUST be 1 if this frame only depends
+// on the base layer; otherwise MUST be 0. If no scalability is
+// used, this MUST be 0.
+// o TID: Temporal ID (3 bits) - The base temporal layer starts with 0,
+// and increases with 1 for each higher temporal layer/sub-layer. If
+// no scalability is used, this MUST be 0.
+// o LID: Layer ID (8 bits) - Identifies the spatial and quality layer
+// encoded. If no scalability is used, this MUST be 0 or omitted.
+// When omitted, TL0PICIDX MUST also be omitted.
+// o TL0PICIDX: Temporal Layer 0 Picture Index (8 bits) - Running index
+// of base temporal layer 0 frames when TID is 0. When TID is not 0,
+// this indicates a dependency on the given index. If no scalability
+// is used, this MUST be 0 or omitted. When omitted, LID MUST also
+// be omitted.
+struct FrameMarks {
+ FrameMarks()
+ : start_of_frame(false),
+ end_of_frame(false),
+ independent(false),
+ discardable(false),
+ base_layer_sync(false),
+ temporal_layer_id(0),
+ layer_id(0),
+ tl0_pic_idx(0) {}
+
+ bool start_of_frame;
+ bool end_of_frame;
+ bool independent;
+ bool discardable;
+ bool base_layer_sync;
+ uint8_t temporal_layer_id;
+ uint8_t layer_id;
+ int16_t tl0_pic_idx;
+};
+
// Class to represent the value of RTP header extensions that are
// variable-length strings (e.g., RtpStreamId and RtpMid).
// Unlike std::string, it can be copied with memcpy and cleared with memset.
@@ -820,6 +871,11 @@ struct RTPHeaderExtension {
// For identifying the media section used to interpret this RTP packet. See
// https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-38
Mid mid;
+
+ // For Frame Marking RTP Header Extension:
+ // https://tools.ietf.org/html/draft-ietf-avtext-framemarking-05
+ bool has_frame_marks;
+ FrameMarks frame_marks;
};
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