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