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

Side by Side Diff: webrtc/common_types.h

Issue 2954503002: Implement FrameMarking header extension support
Patch Set: remove unneeded change in comment Created 3 years, 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 // min = x, max = y indicates that the receiver is free to adapt 709 // min = x, max = y indicates that the receiver is free to adapt
710 // in the range (x, y) based on network jitter. 710 // in the range (x, y) based on network jitter.
711 // 711 //
712 // Note: Given that this gets embedded in a union, it is up-to the owner to 712 // Note: Given that this gets embedded in a union, it is up-to the owner to
713 // initialize these values. 713 // initialize these values.
714 struct PlayoutDelay { 714 struct PlayoutDelay {
715 int min_ms; 715 int min_ms;
716 int max_ms; 716 int max_ms;
717 }; 717 };
718 718
719 // For Frame Marking RTP Header Extension:
720 // https://tools.ietf.org/html/draft-ietf-avtext-framemarking-04
721 // This extensions provides meta-information about the RTP streams outside the
722 // encrypted media payload, an RTP switch can do codec-agnostic
723 // selective forwarding without decrypting the payload
724 // o S: Start of Frame (1 bit) - MUST be 1 in the first packet in a
725 // frame; otherwise MUST be 0.
726 // o E: End of Frame (1 bit) - MUST be 1 in the last packet in a frame;
727 // otherwise MUST be 0.
728 // o I: Independent Frame (1 bit) - MUST be 1 for frames that can be
729 // decoded independent of prior frames, e.g. intra-frame, VPX
730 // keyframe, H.264 IDR [RFC6184], H.265 IDR/CRA/BLA/RAP [RFC7798];
731 // otherwise MUST be 0.
732 // o D: Discardable Frame (1 bit) - MUST be 1 for frames that can be
733 // discarded, and still provide a decodable media stream; otherwise
734 // MUST be 0.
735 // o B: Base Layer Sync (1 bit) - MUST be 1 if this frame only depends
736 // on the base layer; otherwise MUST be 0. If no scalability is
737 // used, this MUST be 0.
738 // o TID: Temporal ID (3 bits) - The base temporal layer starts with 0,
739 // and increases with 1 for each higher temporal layer/sub-layer. If
740 // no scalability is used, this MUST be 0.
741 // o LID: Layer ID (8 bits) - Identifies the spatial and quality layer
742 // encoded. If no scalability is used, this MUST be 0 or omitted.
743 // When omitted, TL0PICIDX MUST also be omitted.
744 // o TL0PICIDX: Temporal Layer 0 Picture Index (8 bits) - Running index
745 // of base temporal layer 0 frames when TID is 0. When TID is not 0,
746 // this indicates a dependency on the given index. If no scalability
747 // is used, this MUST be 0 or omitted. When omitted, LID MUST also
748 // be omitted.
749 struct FrameMarks {
750 bool start_of_frame;
751 bool end_of_frame;
752 bool independent;
753 bool discardable;
754 bool base_layer_sync;
755 uint8_t temporal_layer_id;
756 uint8_t layer_id;
757 int16_t tl0_pic_idx;
758 };
759
719 // Class to represent RtpStreamId which is a string. 760 // Class to represent RtpStreamId which is a string.
720 // Unlike std::string, it can be copied with memcpy and cleared with memset. 761 // Unlike std::string, it can be copied with memcpy and cleared with memset.
721 // Empty value represent unset RtpStreamId. 762 // Empty value represent unset RtpStreamId.
722 class StreamId { 763 class StreamId {
723 public: 764 public:
724 // Stream id is limited to 16 bytes because it is the maximum length 765 // Stream id is limited to 16 bytes because it is the maximum length
725 // that can be encoded with one-byte header extensions. 766 // that can be encoded with one-byte header extensions.
726 static constexpr size_t kMaxSize = 16; 767 static constexpr size_t kMaxSize = 16;
727 768
728 static bool IsLegalName(rtc::ArrayView<const char> name); 769 static bool IsLegalName(rtc::ArrayView<const char> name);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 bool has_video_timing; 825 bool has_video_timing;
785 VideoTiming video_timing; 826 VideoTiming video_timing;
786 827
787 PlayoutDelay playout_delay = {-1, -1}; 828 PlayoutDelay playout_delay = {-1, -1};
788 829
789 // For identification of a stream when ssrc is not signaled. See 830 // For identification of a stream when ssrc is not signaled. See
790 // https://tools.ietf.org/html/draft-ietf-avtext-rid-09 831 // https://tools.ietf.org/html/draft-ietf-avtext-rid-09
791 // TODO(danilchap): Update url from draft to release version. 832 // TODO(danilchap): Update url from draft to release version.
792 StreamId stream_id; 833 StreamId stream_id;
793 StreamId repaired_stream_id; 834 StreamId repaired_stream_id;
835
836 // For Frame Marking RTP Header Extension:
837 // https://tools.ietf.org/html/draft-ietf-avtext-framemarking-04#page-4
838 bool hasFrameMarks;
839 FrameMarks frame_marks = {false, false, false, false, false, 0, 0, 0};
794 }; 840 };
795 841
796 struct RTPHeader { 842 struct RTPHeader {
797 RTPHeader(); 843 RTPHeader();
798 844
799 bool markerBit; 845 bool markerBit;
800 uint8_t payloadType; 846 uint8_t payloadType;
801 uint16_t sequenceNumber; 847 uint16_t sequenceNumber;
802 uint32_t timestamp; 848 uint32_t timestamp;
803 uint32_t ssrc; 849 uint32_t ssrc;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 enum class RtcpMode { kOff, kCompound, kReducedSize }; 955 enum class RtcpMode { kOff, kCompound, kReducedSize };
910 956
911 enum NetworkState { 957 enum NetworkState {
912 kNetworkUp, 958 kNetworkUp,
913 kNetworkDown, 959 kNetworkDown,
914 }; 960 };
915 961
916 } // namespace webrtc 962 } // namespace webrtc
917 963
918 #endif // WEBRTC_COMMON_TYPES_H_ 964 #endif // WEBRTC_COMMON_TYPES_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/common_types.cc » ('j') | webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698