| // 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 <map> |
| #include <string> |
| #include <vector> |
| |
| #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<base::TimeTicks> timestamp; |
| std::vector<CastLoggingEvent> type; |
| base::TimeDelta delay_delta; // Render/playout delay. |
| }; |
| |
| // Internal map sorted by packet id. |
| struct BasePacketInfo { |
| BasePacketInfo(); |
| ~BasePacketInfo(); |
| |
| size_t size; |
| std::vector<base::TimeTicks> timestamp; |
| std::vector<CastLoggingEvent> type; |
| }; |
| |
| typedef std::map<uint16, BasePacketInfo> BasePacketMap; |
| |
| struct PacketEvent { |
| PacketEvent(); |
| ~PacketEvent(); |
| uint32 frame_id; |
| int max_packet_id; |
| BasePacketMap packet_map; |
| }; |
| |
| struct GenericEvent { |
| GenericEvent(); |
| ~GenericEvent(); |
| std::vector<int> value; |
| std::vector<base::TimeTicks> 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<uint32, FrameEvent> FrameRawMap; |
| typedef std::map<uint32, PacketEvent> PacketRawMap; |
| typedef std::map<CastLoggingEvent, GenericEvent> GenericRawMap; |
| |
| typedef std::map<CastLoggingEvent, linked_ptr<FrameLogStats > > FrameStatsMap; |
| typedef std::map<CastLoggingEvent, double> PacketStatsMap; |
| typedef std::map<CastLoggingEvent, double> GenericStatsMap; |
| |
| } // namespace cast |
| } // namespace media |
| |
| #endif // MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ |