1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "media/cast/logging/logging_raw.h" 6 7#include <algorithm> 8 9#include "base/logging.h" 10#include "base/time/time.h" 11 12namespace media { 13namespace cast { 14 15LoggingRaw::LoggingRaw() {} 16 17LoggingRaw::~LoggingRaw() {} 18 19void LoggingRaw::InsertFrameEvent(const base::TimeTicks& time_of_event, 20 CastLoggingEvent event, 21 EventMediaType event_media_type, 22 uint32 rtp_timestamp, 23 uint32 frame_id) { 24 InsertBaseFrameEvent(time_of_event, event, event_media_type, frame_id, 25 rtp_timestamp, base::TimeDelta(), 0, false, 0); 26} 27 28void LoggingRaw::InsertEncodedFrameEvent(const base::TimeTicks& time_of_event, 29 CastLoggingEvent event, 30 EventMediaType event_media_type, 31 uint32 rtp_timestamp, uint32 frame_id, 32 int size, bool key_frame, 33 int target_bitrate) { 34 InsertBaseFrameEvent(time_of_event, event, event_media_type, 35 frame_id, rtp_timestamp, base::TimeDelta(), size, 36 key_frame, target_bitrate); 37} 38 39void LoggingRaw::InsertFrameEventWithDelay(const base::TimeTicks& time_of_event, 40 CastLoggingEvent event, 41 EventMediaType event_media_type, 42 uint32 rtp_timestamp, 43 uint32 frame_id, 44 base::TimeDelta delay) { 45 InsertBaseFrameEvent(time_of_event, event, event_media_type, frame_id, 46 rtp_timestamp, delay, 0, false, 0); 47} 48 49void LoggingRaw::InsertBaseFrameEvent(const base::TimeTicks& time_of_event, 50 CastLoggingEvent event, 51 EventMediaType event_media_type, 52 uint32 frame_id, 53 uint32 rtp_timestamp, 54 base::TimeDelta delay, int size, 55 bool key_frame, int target_bitrate) { 56 FrameEvent frame_event; 57 frame_event.rtp_timestamp = rtp_timestamp; 58 frame_event.frame_id = frame_id; 59 frame_event.size = size; 60 frame_event.timestamp = time_of_event; 61 frame_event.type = event; 62 frame_event.media_type = event_media_type; 63 frame_event.delay_delta = delay; 64 frame_event.key_frame = key_frame; 65 frame_event.target_bitrate = target_bitrate; 66 for (std::vector<RawEventSubscriber*>::const_iterator it = 67 subscribers_.begin(); 68 it != subscribers_.end(); ++it) { 69 (*it)->OnReceiveFrameEvent(frame_event); 70 } 71} 72 73void LoggingRaw::InsertPacketEvent(const base::TimeTicks& time_of_event, 74 CastLoggingEvent event, 75 EventMediaType event_media_type, 76 uint32 rtp_timestamp, 77 uint32 frame_id, uint16 packet_id, 78 uint16 max_packet_id, size_t size) { 79 PacketEvent packet_event; 80 packet_event.rtp_timestamp = rtp_timestamp; 81 packet_event.frame_id = frame_id; 82 packet_event.max_packet_id = max_packet_id; 83 packet_event.packet_id = packet_id; 84 packet_event.size = size; 85 packet_event.timestamp = time_of_event; 86 packet_event.type = event; 87 packet_event.media_type = event_media_type; 88 for (std::vector<RawEventSubscriber*>::const_iterator it = 89 subscribers_.begin(); 90 it != subscribers_.end(); ++it) { 91 (*it)->OnReceivePacketEvent(packet_event); 92 } 93} 94 95void LoggingRaw::AddSubscriber(RawEventSubscriber* subscriber) { 96 DCHECK(subscriber); 97 DCHECK(std::find(subscribers_.begin(), subscribers_.end(), subscriber) == 98 subscribers_.end()); 99 100 subscribers_.push_back(subscriber); 101} 102 103void LoggingRaw::RemoveSubscriber(RawEventSubscriber* subscriber) { 104 DCHECK(subscriber); 105 DCHECK(std::find(subscribers_.begin(), subscribers_.end(), subscriber) != 106 subscribers_.end()); 107 108 subscribers_.erase( 109 std::remove(subscribers_.begin(), subscribers_.end(), subscriber), 110 subscribers_.end()); 111} 112 113} // namespace cast 114} // namespace media 115