// 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 "base/memory/linked_ptr.h" #include "base/time/time.h" namespace media { namespace cast { static const uint32 kFrameIdUnknown = 0xFFFF; struct CastLoggingConfig { CastLoggingConfig(); ~CastLoggingConfig(); bool enable_data_collection; bool enable_uma_stats; bool enable_tracing; }; // By default, enable raw and stats data collection. Disable tracing and UMA. CastLoggingConfig GetDefaultCastLoggingConfig(); enum CastLoggingEvent { // Generic events. kUnknown, kRttMs, kPacketLoss, kJitterMs, kAckReceived, kRembBitrate, kAckSent, kLastEvent, // Audio sender. kAudioFrameReceived, kAudioFrameCaptured, kAudioFrameEncoded, // Audio receiver. kAudioPlayoutDelay, kAudioFrameDecoded, // Video sender. kVideoFrameCaptured, kVideoFrameReceived, kVideoFrameSentToEncoder, kVideoFrameEncoded, // Video receiver. kVideoFrameDecoded, kVideoRenderDelay, // Send-side packet events. kPacketSentToPacer, kPacketSentToNetwork, kPacketRetransmited, // Receive-side packet events. kPacketReceived, kNumOfLoggingEvents, }; std::string CastLoggingToString(CastLoggingEvent event); struct FrameEvent { FrameEvent(); ~FrameEvent(); uint32 frame_id; size_t size; // Encoded size only. std::vector timestamp; std::vector type; base::TimeDelta delay_delta; // Render/playout delay. }; // Internal map sorted by packet id. struct BasePacketInfo { BasePacketInfo(); ~BasePacketInfo(); size_t size; std::vector timestamp; std::vector type; }; typedef std::map BasePacketMap; struct PacketEvent { PacketEvent(); ~PacketEvent(); uint32 frame_id; int max_packet_id; BasePacketMap packet_map; }; struct GenericEvent { GenericEvent(); ~GenericEvent(); std::vector value; std::vector timestamp; }; struct FrameLogStats { FrameLogStats(); ~FrameLogStats(); double framerate_fps; double bitrate_kbps; int max_delay_ms; int min_delay_ms; int avg_delay_ms; }; // Store all log types in a map based on the event. typedef std::map FrameRawMap; typedef std::map PacketRawMap; typedef std::map GenericRawMap; typedef std::map > FrameStatsMap; typedef std::map PacketStatsMap; typedef std::map GenericStatsMap; } // namespace cast } // namespace media #endif // MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_