summaryrefslogtreecommitdiff
path: root/media/cast/logging/logging_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/cast/logging/logging_impl.cc')
-rw-r--r--media/cast/logging/logging_impl.cc90
1 files changed, 61 insertions, 29 deletions
diff --git a/media/cast/logging/logging_impl.cc b/media/cast/logging/logging_impl.cc
index 7f91df2737..16117b031f 100644
--- a/media/cast/logging/logging_impl.cc
+++ b/media/cast/logging/logging_impl.cc
@@ -5,17 +5,16 @@
#include "base/debug/trace_event.h"
#include "base/metrics/histogram.h"
#include "media/cast/logging/logging_impl.h"
+#include "net/base/big_endian.h"
namespace media {
namespace cast {
LoggingImpl::LoggingImpl(base::TickClock* clock,
- bool enable_data_collection,
- bool enable_uma_stats,
- bool enable_tracing)
- : enable_data_collection_(enable_data_collection),
- enable_uma_stats_(enable_uma_stats),
- enable_tracing_(enable_tracing),
+ scoped_refptr<base::TaskRunner> main_thread_proxy,
+ const CastLoggingConfig& config)
+ : main_thread_proxy_(main_thread_proxy),
+ config_(config),
raw_(clock),
stats_(clock) {}
@@ -23,12 +22,13 @@ LoggingImpl::~LoggingImpl() {}
void LoggingImpl::InsertFrameEvent(CastLoggingEvent event,
uint32 rtp_timestamp,
- uint8 frame_id) {
- if (enable_data_collection_) {
+ uint32 frame_id) {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ if (config_.enable_data_collection) {
raw_.InsertFrameEvent(event, rtp_timestamp, frame_id);
stats_.InsertFrameEvent(event, rtp_timestamp, frame_id);
}
- if (enable_tracing_) {
+ if (config_.enable_tracing) {
std::string event_string = CastLoggingToString(event);
TRACE_EVENT_INSTANT2(event_string.c_str(), "FE",
TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "frame_id",
@@ -38,16 +38,17 @@ void LoggingImpl::InsertFrameEvent(CastLoggingEvent event,
void LoggingImpl::InsertFrameEventWithSize(CastLoggingEvent event,
uint32 rtp_timestamp,
- uint8 frame_id,
+ uint32 frame_id,
int frame_size) {
- if (enable_data_collection_) {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ if (config_.enable_data_collection) {
raw_.InsertFrameEventWithSize(event, rtp_timestamp, frame_id, frame_size);
stats_.InsertFrameEventWithSize(event, rtp_timestamp, frame_id, frame_size);
}
- if (enable_uma_stats_) {
+ if (config_.enable_uma_stats) {
UMA_HISTOGRAM_COUNTS(CastLoggingToString(event), frame_size);
}
- if (enable_tracing_) {
+ if (config_.enable_tracing) {
std::string event_string = CastLoggingToString(event);
TRACE_EVENT_INSTANT2(event_string.c_str(), "FES",
TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "frame_size",
@@ -58,16 +59,17 @@ void LoggingImpl::InsertFrameEventWithSize(CastLoggingEvent event,
void LoggingImpl::InsertFrameEventWithDelay(CastLoggingEvent event,
uint32 rtp_timestamp,
- uint8 frame_id,
+ uint32 frame_id,
base::TimeDelta delay) {
- if (enable_data_collection_) {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ if (config_.enable_data_collection) {
raw_.InsertFrameEventWithDelay(event, rtp_timestamp, frame_id, delay);
stats_.InsertFrameEventWithDelay(event, rtp_timestamp, frame_id, delay);
}
- if (enable_uma_stats_) {
+ if (config_.enable_uma_stats) {
UMA_HISTOGRAM_TIMES(CastLoggingToString(event), delay);
}
- if (enable_tracing_) {
+ if (config_.enable_tracing) {
std::string event_string = CastLoggingToString(event);
TRACE_EVENT_INSTANT2(event_string.c_str(), "FED",
TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "delay",
@@ -75,19 +77,41 @@ void LoggingImpl::InsertFrameEventWithDelay(CastLoggingEvent event,
}
}
+void LoggingImpl::InsertPacketListEvent(CastLoggingEvent event,
+ const PacketList& packets) {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ for (unsigned int i = 0; i < packets.size(); ++i) {
+ const Packet& packet = packets[i];
+ // Parse basic properties.
+ uint32 rtp_timestamp;
+ uint16 packet_id, max_packet_id;
+ const uint8* packet_data = &packet[0];
+ net::BigEndianReader big_endian_reader(packet_data + 4, 4);
+ big_endian_reader.ReadU32(&rtp_timestamp);
+ net::BigEndianReader cast_big_endian_reader(packet_data + 12 + 2, 4);
+ cast_big_endian_reader.ReadU16(&packet_id);
+ cast_big_endian_reader.ReadU16(&max_packet_id);
+ // rtp_timestamp is enough - no need for frame_id as well.
+ InsertPacketEvent(event, rtp_timestamp, kFrameIdUnknown, packet_id,
+ max_packet_id, packet.size());
+ }
+
+}
+
void LoggingImpl::InsertPacketEvent(CastLoggingEvent event,
uint32 rtp_timestamp,
- uint8 frame_id,
+ uint32 frame_id,
uint16 packet_id,
uint16 max_packet_id,
- int size) {
- if (enable_data_collection_) {
+ size_t size) {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ if (config_.enable_data_collection) {
raw_.InsertPacketEvent(event, rtp_timestamp, frame_id, packet_id,
max_packet_id, size);
stats_.InsertPacketEvent(event, rtp_timestamp, frame_id, packet_id,
max_packet_id, size);
}
- if (enable_tracing_) {
+ if (config_.enable_tracing) {
std::string event_string = CastLoggingToString(event);
TRACE_EVENT_INSTANT2(event_string.c_str(), "PE",
TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp,
@@ -96,14 +120,15 @@ void LoggingImpl::InsertPacketEvent(CastLoggingEvent event,
}
void LoggingImpl::InsertGenericEvent(CastLoggingEvent event, int value) {
- if (enable_data_collection_) {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ if (config_.enable_data_collection) {
raw_.InsertGenericEvent(event, value);
stats_.InsertGenericEvent(event, value);
}
- if (enable_uma_stats_) {
+ if (config_.enable_uma_stats) {
UMA_HISTOGRAM_COUNTS(CastLoggingToString(event), value);
}
- if (enable_tracing_) {
+ if (config_.enable_tracing) {
std::string event_string = CastLoggingToString(event);
TRACE_EVENT_INSTANT1(event_string.c_str(), "GE",
TRACE_EVENT_SCOPE_THREAD, "value", value);
@@ -113,21 +138,25 @@ void LoggingImpl::InsertGenericEvent(CastLoggingEvent event, int value) {
// should just get the entire class, would be much easier.
FrameRawMap LoggingImpl::GetFrameRawData() {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
return raw_.GetFrameData();
}
PacketRawMap LoggingImpl::GetPacketRawData() {
- return raw_.GetPacketData();
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ return raw_.GetPacketData();
}
GenericRawMap LoggingImpl::GetGenericRawData() {
- return raw_.GetGenericData();
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
+ return raw_.GetGenericData();
}
const FrameStatsMap* LoggingImpl::GetFrameStatsData() {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
// Get stats data.
const FrameStatsMap* stats = stats_.GetFrameStatsData();
- if (enable_uma_stats_) {
+ if (config_.enable_uma_stats) {
FrameStatsMap::const_iterator it;
for (it = stats->begin(); it != stats->end(); ++it) {
// Check for an active event.
@@ -159,9 +188,10 @@ const FrameStatsMap* LoggingImpl::GetFrameStatsData() {
}
const PacketStatsMap* LoggingImpl::GetPacketStatsData() {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
// Get stats data.
const PacketStatsMap* stats = stats_.GetPacketStatsData();
- if (enable_uma_stats_) {
+ if (config_.enable_uma_stats) {
PacketStatsMap::const_iterator it;
for (it = stats->begin(); it != stats->end(); ++it) {
if (it->second > 0) {
@@ -174,9 +204,10 @@ const PacketStatsMap* LoggingImpl::GetPacketStatsData() {
}
const GenericStatsMap* LoggingImpl::GetGenericStatsData() {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
// Get stats data.
const GenericStatsMap* stats = stats_.GetGenericStatsData();
- if (enable_uma_stats_) {
+ if (config_.enable_uma_stats) {
GenericStatsMap::const_iterator it;
for (it = stats->begin(); it != stats->end(); ++it) {
if (it->second > 0) {
@@ -188,6 +219,7 @@ const GenericStatsMap* LoggingImpl::GetGenericStatsData() {
}
void LoggingImpl::Reset() {
+ DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
raw_.Reset();
stats_.Reset();
}