OLD | NEW |
(Empty) | |
| 1 #ifndef MEDIA_CAST_RTP_COMMON_RTP_DEFINES_H_ |
| 2 #define MEDIA_CAST_RTP_COMMON_RTP_DEFINES_H_ |
| 3 |
| 4 #include "media/cast/cast_config.h" |
| 5 #include "media/cast/rtcp/rtcp_defines.h" |
| 6 #include "third_party/webrtc/modules/interface/module_common_types.h" |
| 7 |
| 8 namespace media { |
| 9 namespace cast { |
| 10 |
| 11 const uint8 kRtpMarkerBitMask = 0x80; |
| 12 |
| 13 struct RtpCastHeader { |
| 14 void InitRTPVideoHeaderCast() { |
| 15 is_key_frame = false; |
| 16 frame_id = 0; |
| 17 packet_id = 0; |
| 18 max_packet_id = 0; |
| 19 is_reference = false; |
| 20 reference_frame_id = 0; |
| 21 } |
| 22 webrtc::WebRtcRTPHeader webrtc; |
| 23 bool is_key_frame; |
| 24 uint8 frame_id; |
| 25 uint16 packet_id; |
| 26 uint16 max_packet_id; |
| 27 bool is_reference; // Set to true if the previous frame is not available, |
| 28 // and the reference frame id is available. |
| 29 uint8 reference_frame_id; |
| 30 }; |
| 31 |
| 32 class RtpPayloadFeedback { |
| 33 public: |
| 34 virtual void CastFeedback(const RtcpCastMessage& cast_feedback) = 0; |
| 35 virtual void RequestKeyFrame() = 0; // TODO(pwestin): can we remove this? |
| 36 |
| 37 protected: |
| 38 virtual ~RtpPayloadFeedback() {} |
| 39 }; |
| 40 |
| 41 inline bool IsNewerFrameId(uint8 frame_id, uint8 prev_frame_id) { |
| 42 return (frame_id != prev_frame_id) && |
| 43 static_cast<uint8>(frame_id - prev_frame_id) < 0x80; |
| 44 } |
| 45 |
| 46 inline bool IsOlderFrameId(uint8 frame_id, uint8 prev_frame_id) { |
| 47 return (frame_id == prev_frame_id) || IsNewerFrameId(prev_frame_id, frame_id); |
| 48 } |
| 49 |
| 50 inline bool IsNewerPacketId(uint16 packet_id, uint16 prev_packet_id) { |
| 51 return (packet_id != prev_packet_id) && |
| 52 static_cast<uint16>(packet_id - prev_packet_id) < 0x8000; |
| 53 } |
| 54 |
| 55 inline bool IsNewerSequenceNumber(uint16 sequence_number, |
| 56 uint16 prev_sequence_number) { |
| 57 // Same function as IsNewerPacketId just different data and name. |
| 58 return IsNewerPacketId(sequence_number, prev_sequence_number); |
| 59 } |
| 60 |
| 61 } // namespace cast |
| 62 } // namespace media |
| 63 |
| 64 #endif // MEDIA_CAST_RTP_COMMON_RTP_DEFINES_H_ |
OLD | NEW |