Index: media/cast/rtp_common/rtp_defines.h |
diff --git a/media/cast/rtp_common/rtp_defines.h b/media/cast/rtp_common/rtp_defines.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1bd0fea0ff6f627953377ff4f3798e3b6238d813 |
--- /dev/null |
+++ b/media/cast/rtp_common/rtp_defines.h |
@@ -0,0 +1,64 @@ |
+#ifndef MEDIA_CAST_RTP_COMMON_RTP_DEFINES_H_ |
+#define MEDIA_CAST_RTP_COMMON_RTP_DEFINES_H_ |
+ |
+#include "media/cast/cast_config.h" |
+#include "media/cast/rtcp/rtcp_defines.h" |
+#include "third_party/webrtc/modules/interface/module_common_types.h" |
+ |
+namespace media { |
+namespace cast { |
+ |
+const uint8 kRtpMarkerBitMask = 0x80; |
+ |
+struct RtpCastHeader { |
+ void InitRTPVideoHeaderCast() { |
+ is_key_frame = false; |
+ frame_id = 0; |
+ packet_id = 0; |
+ max_packet_id = 0; |
+ is_reference = false; |
+ reference_frame_id = 0; |
+ } |
+ webrtc::WebRtcRTPHeader webrtc; |
+ bool is_key_frame; |
+ uint8 frame_id; |
+ uint16 packet_id; |
+ uint16 max_packet_id; |
+ bool is_reference; // Set to true if the previous frame is not available, |
+ // and the reference frame id is available. |
+ uint8 reference_frame_id; |
+}; |
+ |
+class RtpPayloadFeedback { |
+ public: |
+ virtual void CastFeedback(const RtcpCastMessage& cast_feedback) = 0; |
+ virtual void RequestKeyFrame() = 0; // TODO(pwestin): can we remove this? |
+ |
+ protected: |
+ virtual ~RtpPayloadFeedback() {} |
+}; |
+ |
+inline bool IsNewerFrameId(uint8 frame_id, uint8 prev_frame_id) { |
+ return (frame_id != prev_frame_id) && |
+ static_cast<uint8>(frame_id - prev_frame_id) < 0x80; |
+} |
+ |
+inline bool IsOlderFrameId(uint8 frame_id, uint8 prev_frame_id) { |
+ return (frame_id == prev_frame_id) || IsNewerFrameId(prev_frame_id, frame_id); |
+} |
+ |
+inline bool IsNewerPacketId(uint16 packet_id, uint16 prev_packet_id) { |
+ return (packet_id != prev_packet_id) && |
+ static_cast<uint16>(packet_id - prev_packet_id) < 0x8000; |
+} |
+ |
+inline bool IsNewerSequenceNumber(uint16 sequence_number, |
+ uint16 prev_sequence_number) { |
+ // Same function as IsNewerPacketId just different data and name. |
+ return IsNewerPacketId(sequence_number, prev_sequence_number); |
+} |
+ |
+} // namespace cast |
+} // namespace media |
+ |
+#endif // MEDIA_CAST_RTP_COMMON_RTP_DEFINES_H_ |