| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_CAST_NET_RTP_RTP_DEFINES_H_ |
| #define MEDIA_CAST_NET_RTP_RTP_DEFINES_H_ |
| |
| #include <stdint.h> |
| |
| #include "media/cast/net/rtcp/rtcp_defines.h" |
| |
| namespace media { |
| namespace cast { |
| |
| static const uint16_t kRtpHeaderLength = 12; |
| static const uint16_t kCastHeaderLength = 7; |
| |
| // RTP Header |
| static const uint8_t kRtpExtensionBitMask = 0x10; |
| static const uint8_t kRtpMarkerBitMask = 0x80; |
| static const uint8_t kRtpNumCsrcsMask = 0x0f; |
| |
| // Cast Header |
| static const uint8_t kCastKeyFrameBitMask = 0x80; |
| static const uint8_t kCastReferenceFrameIdBitMask = 0x40; |
| static const uint8_t kCastExtensionCountmask = 0x3f; |
| |
| // Cast RTP extensions. |
| static const uint8_t kCastRtpExtensionAdaptiveLatency = 1; |
| |
| struct RtpCastHeader { |
| RtpCastHeader(); |
| // Elements from RTP packet header. |
| bool marker; |
| uint8_t payload_type; |
| uint16_t sequence_number; |
| RtpTimeTicks rtp_timestamp; |
| uint32_t sender_ssrc; |
| uint8_t num_csrcs; |
| |
| // Elements from Cast header (at beginning of RTP payload). |
| bool is_key_frame; |
| bool is_reference; |
| FrameId frame_id; |
| uint16_t packet_id; |
| uint16_t max_packet_id; |
| FrameId reference_frame_id; |
| uint16_t new_playout_delay_ms; |
| uint8_t num_extensions; |
| }; |
| |
| class RtpPayloadFeedback { |
| public: |
| virtual void CastFeedback(const RtcpCastMessage& cast_feedback) = 0; |
| |
| protected: |
| virtual ~RtpPayloadFeedback(); |
| }; |
| |
| } // namespace cast |
| } // namespace media |
| |
| #endif // MEDIA_CAST_NET_RTP_RTP_DEFINES_H_ |