// Copyright 2013 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_LOGGING_LOGGING_DEFINES_H_ #define MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ #include #include #include #include #include #include "base/time/time.h" #include "media/cast/common/rtp_time.h" namespace media { namespace cast { static const uint32_t kFrameIdUnknown = 0xFFFFFFFF; enum CastLoggingEvent { UNKNOWN, // Sender side frame events. FRAME_CAPTURE_BEGIN, FRAME_CAPTURE_END, FRAME_ENCODED, FRAME_ACK_RECEIVED, // Receiver side frame events. FRAME_ACK_SENT, FRAME_DECODED, FRAME_PLAYOUT, // Sender side packet events. PACKET_SENT_TO_NETWORK, PACKET_RETRANSMITTED, PACKET_RTX_REJECTED, // Receiver side packet events. PACKET_RECEIVED, }; enum { kNumOfLoggingEvents = PACKET_RECEIVED + 1, }; const char* CastLoggingToString(CastLoggingEvent event); // CastLoggingEvent are classified into one of three following types. enum EventMediaType { AUDIO_EVENT, VIDEO_EVENT, UNKNOWN_EVENT, EVENT_MEDIA_TYPE_LAST = UNKNOWN_EVENT }; struct FrameEvent { FrameEvent(); ~FrameEvent(); RtpTimeTicks rtp_timestamp; uint32_t frame_id; // Resolution of the frame. Only set for video FRAME_CAPTURE_END events. int width; int height; // Size of encoded frame in bytes. Only set for FRAME_ENCODED event. // Note: we use uint32_t instead of size_t for byte count because this struct // is sent over IPC which could span 32 & 64 bit processes. uint32_t size; // Time of event logged. base::TimeTicks timestamp; CastLoggingEvent type; EventMediaType media_type; // Only set for FRAME_PLAYOUT events. // If this value is zero the frame is rendered on time. // If this value is positive it means the frame is rendered late. // If this value is negative it means the frame is rendered early. base::TimeDelta delay_delta; // Whether the frame is a key frame. Only set for video FRAME_ENCODED event. bool key_frame; // The requested target bitrate of the encoder at the time the frame is // encoded. Only set for video FRAME_ENCODED event. int target_bitrate; // Encoding performance metrics. See media/cast/sender/sender_encoded_frame.h // for a description of these values. double encoder_cpu_utilization; double idealized_bitrate_utilization; }; struct PacketEvent { PacketEvent(); ~PacketEvent(); RtpTimeTicks rtp_timestamp; uint32_t frame_id; uint16_t max_packet_id; uint16_t packet_id; uint32_t size; // Time of event logged. base::TimeTicks timestamp; CastLoggingEvent type; EventMediaType media_type; }; } // namespace cast } // namespace media #endif // MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_