summaryrefslogtreecommitdiffstats
path: root/chromium/media/cast/rtcp/rtcp_defines.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/cast/rtcp/rtcp_defines.h')
-rw-r--r--chromium/media/cast/rtcp/rtcp_defines.h118
1 files changed, 50 insertions, 68 deletions
diff --git a/chromium/media/cast/rtcp/rtcp_defines.h b/chromium/media/cast/rtcp/rtcp_defines.h
index 0277bd1feaf..31795648c64 100644
--- a/chromium/media/cast/rtcp/rtcp_defines.h
+++ b/chromium/media/cast/rtcp/rtcp_defines.h
@@ -5,45 +5,42 @@
#ifndef MEDIA_CAST_RTCP_RTCP_DEFINES_H_
#define MEDIA_CAST_RTCP_RTCP_DEFINES_H_
-#include <list>
#include <map>
#include <set>
#include "media/cast/cast_config.h"
#include "media/cast/cast_defines.h"
#include "media/cast/logging/logging_defines.h"
+#include "media/cast/transport/cast_transport_defines.h"
namespace media {
namespace cast {
+static const size_t kRtcpCastLogHeaderSize = 12;
+static const size_t kRtcpReceiverFrameLogSize = 8;
+static const size_t kRtcpReceiverEventLogSize = 4;
+
// Handle the per frame ACK and NACK messages.
class RtcpCastMessage {
public:
explicit RtcpCastMessage(uint32 media_ssrc);
~RtcpCastMessage();
+ void Copy(const RtcpCastMessage& cast_message);
+
uint32 media_ssrc_;
uint32 ack_frame_id_;
+ uint16 target_delay_ms_;
MissingFramesAndPacketsMap missing_frames_and_packets_;
-};
-
-// Log messages form sender to receiver.
-enum RtcpSenderFrameStatus {
- kRtcpSenderFrameStatusUnknown = 0,
- kRtcpSenderFrameStatusDroppedByEncoder = 1,
- kRtcpSenderFrameStatusDroppedByFlowControl = 2,
- kRtcpSenderFrameStatusSentToNetwork = 3,
-};
-struct RtcpSenderFrameLogMessage {
- RtcpSenderFrameStatus frame_status;
- uint32 rtp_timestamp;
+ DISALLOW_COPY_AND_ASSIGN(RtcpCastMessage);
};
-typedef std::list<RtcpSenderFrameLogMessage> RtcpSenderLogMessage;
-
// Log messages from receiver to sender.
struct RtcpReceiverEventLogMessage {
+ RtcpReceiverEventLogMessage();
+ ~RtcpReceiverEventLogMessage();
+
CastLoggingEvent type;
base::TimeTicks event_timestamp;
base::TimeDelta delay_delta;
@@ -52,99 +49,84 @@ struct RtcpReceiverEventLogMessage {
typedef std::list<RtcpReceiverEventLogMessage> RtcpReceiverEventLogMessages;
-class RtcpReceiverFrameLogMessage {
- public:
+struct RtcpReceiverFrameLogMessage {
explicit RtcpReceiverFrameLogMessage(uint32 rtp_timestamp);
~RtcpReceiverFrameLogMessage();
uint32 rtp_timestamp_;
RtcpReceiverEventLogMessages event_log_messages_;
-};
-typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage;
-
-struct RtcpSenderInfo {
- // First three members are used for lipsync.
- // First two members are used for rtt.
- uint32 ntp_seconds;
- uint32 ntp_fraction;
- uint32 rtp_timestamp;
- uint32 send_packet_count;
- size_t send_octet_count;
+ // TODO(mikhal): Investigate what's the best way to allow adding
+ // DISALLOW_COPY_AND_ASSIGN, as currently it contradicts the implementation
+ // and possible changes have a big impact on design.
};
-struct RtcpReportBlock {
- uint32 remote_ssrc; // SSRC of sender of this report.
- uint32 media_ssrc; // SSRC of the RTP packet sender.
- uint8 fraction_lost;
- uint32 cumulative_lost; // 24 bits valid.
- uint32 extended_high_sequence_number;
- uint32 jitter;
- uint32 last_sr;
- uint32 delay_since_last_sr;
-};
+typedef std::list<RtcpReceiverFrameLogMessage> RtcpReceiverLogMessage;
struct RtcpRpsiMessage {
+ RtcpRpsiMessage();
+ ~RtcpRpsiMessage();
+
uint32 remote_ssrc;
uint8 payload_type;
uint64 picture_id;
};
-class RtcpNackMessage {
- public:
+struct RtcpNackMessage {
RtcpNackMessage();
~RtcpNackMessage();
uint32 remote_ssrc;
std::list<uint16> nack_list;
+
+ DISALLOW_COPY_AND_ASSIGN(RtcpNackMessage);
};
-class RtcpRembMessage {
- public:
+struct RtcpRembMessage {
RtcpRembMessage();
~RtcpRembMessage();
uint32 remb_bitrate;
std::list<uint32> remb_ssrcs;
+
+ DISALLOW_COPY_AND_ASSIGN(RtcpRembMessage);
};
struct RtcpReceiverReferenceTimeReport {
+ RtcpReceiverReferenceTimeReport();
+ ~RtcpReceiverReferenceTimeReport();
+
uint32 remote_ssrc;
uint32 ntp_seconds;
uint32 ntp_fraction;
};
-struct RtcpDlrrReportBlock {
- uint32 last_rr;
- uint32 delay_since_last_rr;
-};
-
-inline bool operator==(RtcpReportBlock lhs, RtcpReportBlock rhs) {
- return lhs.remote_ssrc == rhs.remote_ssrc &&
- lhs.media_ssrc == rhs.media_ssrc &&
- lhs.fraction_lost == rhs.fraction_lost &&
- lhs.cumulative_lost == rhs.cumulative_lost &&
- lhs.extended_high_sequence_number == rhs.extended_high_sequence_number &&
- lhs.jitter == rhs.jitter &&
- lhs.last_sr == rhs.last_sr &&
- lhs.delay_since_last_sr == rhs.delay_since_last_sr;
-}
-
-inline bool operator==(RtcpSenderInfo lhs, RtcpSenderInfo rhs) {
- return lhs.ntp_seconds == rhs.ntp_seconds &&
- lhs.ntp_fraction == rhs.ntp_fraction &&
- lhs.rtp_timestamp == rhs.rtp_timestamp &&
- lhs.send_packet_count == rhs.send_packet_count &&
- lhs.send_octet_count == rhs.send_octet_count;
-}
-
inline bool operator==(RtcpReceiverReferenceTimeReport lhs,
RtcpReceiverReferenceTimeReport rhs) {
return lhs.remote_ssrc == rhs.remote_ssrc &&
- lhs.ntp_seconds == rhs.ntp_seconds &&
- lhs.ntp_fraction == rhs.ntp_fraction;
+ lhs.ntp_seconds == rhs.ntp_seconds &&
+ lhs.ntp_fraction == rhs.ntp_fraction;
}
+// Struct used by raw event subscribers as an intermediate format before
+// sending off to the other side via RTCP.
+// (i.e., {Sender,Receiver}RtcpEventSubscriber)
+struct RtcpEvent {
+ RtcpEvent();
+ ~RtcpEvent();
+
+ CastLoggingEvent type;
+
+ // Time of event logged.
+ base::TimeTicks timestamp;
+
+ // Render/playout delay. Only set for FRAME_PLAYOUT events.
+ base::TimeDelta delay_delta;
+
+ // Only set for packet events.
+ uint16 packet_id;
+};
+
} // namespace cast
} // namespace media