blob: 229064d7b69277e9b41514981ea9144d708e30cd [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.
#include "media/cast/logging/logging_raw.h"
#include <algorithm>
#include "base/logging.h"
#include "base/time/time.h"
namespace media {
namespace cast {
LoggingRaw::LoggingRaw() {}
LoggingRaw::~LoggingRaw() {}
void LoggingRaw::InsertFrameEvent(const base::TimeTicks& time_of_event,
CastLoggingEvent event,
EventMediaType event_media_type,
uint32 rtp_timestamp,
uint32 frame_id) {
InsertBaseFrameEvent(time_of_event, event, event_media_type, frame_id,
rtp_timestamp, base::TimeDelta(), 0, false, 0);
}
void LoggingRaw::InsertEncodedFrameEvent(const base::TimeTicks& time_of_event,
CastLoggingEvent event,
EventMediaType event_media_type,
uint32 rtp_timestamp, uint32 frame_id,
int size, bool key_frame,
int target_bitrate) {
InsertBaseFrameEvent(time_of_event, event, event_media_type,
frame_id, rtp_timestamp, base::TimeDelta(), size,
key_frame, target_bitrate);
}
void LoggingRaw::InsertFrameEventWithDelay(const base::TimeTicks& time_of_event,
CastLoggingEvent event,
EventMediaType event_media_type,
uint32 rtp_timestamp,
uint32 frame_id,
base::TimeDelta delay) {
InsertBaseFrameEvent(time_of_event, event, event_media_type, frame_id,
rtp_timestamp, delay, 0, false, 0);
}
void LoggingRaw::InsertBaseFrameEvent(const base::TimeTicks& time_of_event,
CastLoggingEvent event,
EventMediaType event_media_type,
uint32 frame_id,
uint32 rtp_timestamp,
base::TimeDelta delay, int size,
bool key_frame, int target_bitrate) {
FrameEvent frame_event;
frame_event.rtp_timestamp = rtp_timestamp;
frame_event.frame_id = frame_id;
frame_event.size = size;
frame_event.timestamp = time_of_event;
frame_event.type = event;
frame_event.media_type = event_media_type;
frame_event.delay_delta = delay;
frame_event.key_frame = key_frame;
frame_event.target_bitrate = target_bitrate;
for (std::vector<RawEventSubscriber*>::const_iterator it =
subscribers_.begin();
it != subscribers_.end(); ++it) {
(*it)->OnReceiveFrameEvent(frame_event);
}
}
void LoggingRaw::InsertPacketEvent(const base::TimeTicks& time_of_event,
CastLoggingEvent event,
EventMediaType event_media_type,
uint32 rtp_timestamp,
uint32 frame_id, uint16 packet_id,
uint16 max_packet_id, size_t size) {
PacketEvent packet_event;
packet_event.rtp_timestamp = rtp_timestamp;
packet_event.frame_id = frame_id;
packet_event.max_packet_id = max_packet_id;
packet_event.packet_id = packet_id;
packet_event.size = size;
packet_event.timestamp = time_of_event;
packet_event.type = event;
packet_event.media_type = event_media_type;
for (std::vector<RawEventSubscriber*>::const_iterator it =
subscribers_.begin();
it != subscribers_.end(); ++it) {
(*it)->OnReceivePacketEvent(packet_event);
}
}
void LoggingRaw::AddSubscriber(RawEventSubscriber* subscriber) {
DCHECK(subscriber);
DCHECK(std::find(subscribers_.begin(), subscribers_.end(), subscriber) ==
subscribers_.end());
subscribers_.push_back(subscriber);
}
void LoggingRaw::RemoveSubscriber(RawEventSubscriber* subscriber) {
DCHECK(subscriber);
DCHECK(std::find(subscribers_.begin(), subscribers_.end(), subscriber) !=
subscribers_.end());
subscribers_.erase(
std::remove(subscribers_.begin(), subscribers_.end(), subscriber),
subscribers_.end());
}
} // namespace cast
} // namespace media