// 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 #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::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::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