Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Side by Side Diff: media/cast/logging/log_deserializer.cc

Issue 1515433002: Replace uses of raw uint32's with a type-checked RtpTimeTicks data type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Speculative workaround fix for win8_chromium_ng compile error. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/cast/logging/log_deserializer.h ('k') | media/cast/logging/log_serializer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/cast/logging/log_deserializer.h" 5 #include "media/cast/logging/log_deserializer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/big_endian.h" 11 #include "base/big_endian.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "third_party/zlib/zlib.h" 13 #include "third_party/zlib/zlib.h"
14 14
15 using media::cast::FrameEventMap; 15 using media::cast::FrameEventMap;
16 using media::cast::PacketEventMap; 16 using media::cast::PacketEventMap;
17 using media::cast::RtpTimestamp; 17 using media::cast::RtpTimeDelta;
18 using media::cast::RtpTimeTicks;
18 using media::cast::proto::AggregatedFrameEvent; 19 using media::cast::proto::AggregatedFrameEvent;
19 using media::cast::proto::AggregatedPacketEvent; 20 using media::cast::proto::AggregatedPacketEvent;
20 using media::cast::proto::BasePacketEvent; 21 using media::cast::proto::BasePacketEvent;
21 using media::cast::proto::LogMetadata; 22 using media::cast::proto::LogMetadata;
22 23
23 namespace { 24 namespace {
24 25
25 // Use 60MB of temp buffer to hold uncompressed data if |compress| is true. 26 // Use 60MB of temp buffer to hold uncompressed data if |compress| is true.
26 // This is double the size of temp buffer used during compression (30MB) 27 // This is double the size of temp buffer used during compression (30MB)
27 // since the there are two streams in the blob. 28 // since the there are two streams in the blob.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 if (!to->has_target_bitrate() && from.has_target_bitrate()) 67 if (!to->has_target_bitrate() && from.has_target_bitrate())
67 to->set_target_bitrate(from.target_bitrate()); 68 to->set_target_bitrate(from.target_bitrate());
68 } 69 }
69 70
70 bool PopulateDeserializedLog(base::BigEndianReader* reader, 71 bool PopulateDeserializedLog(base::BigEndianReader* reader,
71 media::cast::DeserializedLog* log) { 72 media::cast::DeserializedLog* log) {
72 FrameEventMap frame_event_map; 73 FrameEventMap frame_event_map;
73 PacketEventMap packet_event_map; 74 PacketEventMap packet_event_map;
74 75
75 int num_frame_events = log->metadata.num_frame_events(); 76 int num_frame_events = log->metadata.num_frame_events();
76 RtpTimestamp relative_rtp_timestamp = 0; 77 RtpTimeTicks relative_rtp_timestamp;
77 uint16_t proto_size = 0; 78 uint16_t proto_size = 0;
78 for (int i = 0; i < num_frame_events; i++) { 79 for (int i = 0; i < num_frame_events; i++) {
79 if (!reader->ReadU16(&proto_size)) 80 if (!reader->ReadU16(&proto_size))
80 return false; 81 return false;
81 82
82 linked_ptr<AggregatedFrameEvent> frame_event(new AggregatedFrameEvent); 83 linked_ptr<AggregatedFrameEvent> frame_event(new AggregatedFrameEvent);
83 if (!frame_event->ParseFromArray(reader->ptr(), proto_size)) 84 if (!frame_event->ParseFromArray(reader->ptr(), proto_size))
84 return false; 85 return false;
85 if (!reader->Skip(proto_size)) 86 if (!reader->Skip(proto_size))
86 return false; 87 return false;
87 88
88 // During serialization the RTP timestamp in proto is relative to previous 89 // During serialization the RTP timestamp in proto is relative to previous
89 // frame. 90 // frame.
90 // Adjust RTP timestamp back to value relative to first RTP timestamp. 91 // Adjust RTP timestamp back to value relative to first RTP timestamp.
92 relative_rtp_timestamp +=
93 RtpTimeDelta::FromTicks(frame_event->relative_rtp_timestamp());
91 frame_event->set_relative_rtp_timestamp( 94 frame_event->set_relative_rtp_timestamp(
92 frame_event->relative_rtp_timestamp() + relative_rtp_timestamp); 95 relative_rtp_timestamp.lower_32_bits());
93 relative_rtp_timestamp = frame_event->relative_rtp_timestamp();
94 96
95 FrameEventMap::iterator it = frame_event_map.find( 97 FrameEventMap::iterator it = frame_event_map.find(relative_rtp_timestamp);
96 frame_event->relative_rtp_timestamp());
97 if (it == frame_event_map.end()) { 98 if (it == frame_event_map.end()) {
98 frame_event_map.insert( 99 frame_event_map.insert(
99 std::make_pair(frame_event->relative_rtp_timestamp(), frame_event)); 100 std::make_pair(relative_rtp_timestamp, frame_event));
100 } else { 101 } else {
101 // Events for the same frame might have been split into more than one 102 // Events for the same frame might have been split into more than one
102 // proto. Merge them. 103 // proto. Merge them.
103 MergeFrameEvent(*frame_event, it->second); 104 MergeFrameEvent(*frame_event, it->second);
104 } 105 }
105 } 106 }
106 107
107 log->frame_events.swap(frame_event_map); 108 log->frame_events.swap(frame_event_map);
108 109
109 int num_packet_events = log->metadata.num_packet_events(); 110 int num_packet_events = log->metadata.num_packet_events();
110 relative_rtp_timestamp = 0; 111 relative_rtp_timestamp = RtpTimeTicks();
111 for (int i = 0; i < num_packet_events; i++) { 112 for (int i = 0; i < num_packet_events; i++) {
112 if (!reader->ReadU16(&proto_size)) 113 if (!reader->ReadU16(&proto_size))
113 return false; 114 return false;
114 115
115 linked_ptr<AggregatedPacketEvent> packet_event(new AggregatedPacketEvent); 116 linked_ptr<AggregatedPacketEvent> packet_event(new AggregatedPacketEvent);
116 if (!packet_event->ParseFromArray(reader->ptr(), proto_size)) 117 if (!packet_event->ParseFromArray(reader->ptr(), proto_size))
117 return false; 118 return false;
118 if (!reader->Skip(proto_size)) 119 if (!reader->Skip(proto_size))
119 return false; 120 return false;
120 121
122 relative_rtp_timestamp +=
123 RtpTimeDelta::FromTicks(packet_event->relative_rtp_timestamp());
121 packet_event->set_relative_rtp_timestamp( 124 packet_event->set_relative_rtp_timestamp(
122 packet_event->relative_rtp_timestamp() + relative_rtp_timestamp); 125 relative_rtp_timestamp.lower_32_bits());
123 relative_rtp_timestamp = packet_event->relative_rtp_timestamp();
124 126
125 PacketEventMap::iterator it = packet_event_map.find( 127 PacketEventMap::iterator it = packet_event_map.find(relative_rtp_timestamp);
126 packet_event->relative_rtp_timestamp());
127 if (it == packet_event_map.end()) { 128 if (it == packet_event_map.end()) {
128 packet_event_map.insert( 129 packet_event_map.insert(
129 std::make_pair(packet_event->relative_rtp_timestamp(), packet_event)); 130 std::make_pair(relative_rtp_timestamp, packet_event));
130 } else { 131 } else {
131 // Events for the same frame might have been split into more than one 132 // Events for the same frame might have been split into more than one
132 // proto. Merge them. 133 // proto. Merge them.
133 MergePacketEvent(*packet_event, it->second); 134 MergePacketEvent(*packet_event, it->second);
134 } 135 }
135 } 136 }
136 137
137 log->packet_events.swap(packet_event_map); 138 log->packet_events.swap(packet_event_map);
138 139
139 return true; 140 return true;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 } else { 245 } else {
245 return DoDeserializeEvents(data, data_bytes, audio_log, video_log); 246 return DoDeserializeEvents(data, data_bytes, audio_log, video_log);
246 } 247 }
247 } 248 }
248 249
249 DeserializedLog::DeserializedLog() {} 250 DeserializedLog::DeserializedLog() {}
250 DeserializedLog::~DeserializedLog() {} 251 DeserializedLog::~DeserializedLog() {}
251 252
252 } // namespace cast 253 } // namespace cast
253 } // namespace media 254 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/log_deserializer.h ('k') | media/cast/logging/log_serializer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698