| 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 {
|
|
|