blob: 568bff5360ec749970687e410968021b0353c2bc [file] [log] [blame]
// 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_IMPL_H_
#define MEDIA_CAST_LOGGING_LOGGING_IMPL_H_
// Generic class that handles event logging for the cast library.
// Logging has three possible optional forms:
// 1. Raw data and stats accessible by the application.
// 2. UMA stats.
// 3. Tracing of raw events.
#include "media/cast/logging/logging_defines.h"
#include "media/cast/logging/logging_raw.h"
#include "media/cast/logging/logging_stats.h"
namespace media {
namespace cast {
class LoggingImpl {
public:
LoggingImpl(base::TickClock* clock,
bool enable_data_collection,
bool enable_uma_stats,
bool enable_tracing);
~LoggingImpl();
void InsertFrameEvent(CastLoggingEvent event,
uint32 rtp_timestamp,
uint8 frame_id);
void InsertFrameEventWithSize(CastLoggingEvent event,
uint32 rtp_timestamp,
uint8 frame_id,
int frame_size);
void InsertFrameEventWithDelay(CastLoggingEvent event,
uint32 rtp_timestamp,
uint8 frame_id,
base::TimeDelta delay);
void InsertPacketEvent(CastLoggingEvent event,
uint32 rtp_timestamp,
uint8 frame_id,
uint16 packet_id,
uint16 max_packet_id,
int size);
void InsertGenericEvent(CastLoggingEvent event, int value);
// Get raw data.
FrameRawMap GetFrameRawData();
PacketRawMap GetPacketRawData();
GenericRawMap GetGenericRawData();
// Get stats only (computed when called). Triggers UMA stats when enabled.
const FrameStatsMap* GetFrameStatsData();
const PacketStatsMap* GetPacketStatsData();
const GenericStatsMap* GetGenericStatsData();
void Reset();
private:
LoggingRaw raw_;
LoggingStats stats_;
bool enable_data_collection_;
bool enable_uma_stats_;
bool enable_tracing_;
DISALLOW_COPY_AND_ASSIGN(LoggingImpl);
};
} // namespace cast
} // namespace media
#endif // MEDIA_CAST_LOGGING_LOGGING_IMPL_H_