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

Side by Side Diff: webrtc/examples/objc/AppRTCDemo/ARDStatsBuilder.m

Issue 1690313002: Update iOS AppRTCDemo to use the updated Objective-C API. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Update Mac demo and other changes after updating against master Created 4 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2015 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #import "ARDStatsBuilder.h" 11 #import "ARDStatsBuilder.h"
12 12
13 #import "RTCPair.h" 13 #import "webrtc/api/objc/RTCStatsReport.h"
14 #import "RTCStatsReport.h"
15 14
16 #import "ARDBitrateTracker.h" 15 #import "ARDBitrateTracker.h"
17 #import "ARDUtilities.h" 16 #import "ARDUtilities.h"
18 17
19 @implementation ARDStatsBuilder { 18 @implementation ARDStatsBuilder {
20 // Connection stats. 19 // Connection stats.
21 NSString *_connRecvBitrate; 20 NSString *_connRecvBitrate;
22 NSString *_connRtt; 21 NSString *_connRtt;
23 NSString *_connSendBitrate; 22 NSString *_connSendBitrate;
24 NSString *_localCandType; 23 NSString *_localCandType;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 [result appendString:[NSString stringWithFormat:audioReceiveFormat, 125 [result appendString:[NSString stringWithFormat:audioReceiveFormat,
127 _audioRecvBitrate, _audioRecvCodec, _audioCurrentDelay, 126 _audioRecvBitrate, _audioRecvCodec, _audioCurrentDelay,
128 _audioExpandRate]]; 127 _audioExpandRate]];
129 128
130 return result; 129 return result;
131 } 130 }
132 131
133 - (void)parseStatsReport:(RTCStatsReport *)statsReport { 132 - (void)parseStatsReport:(RTCStatsReport *)statsReport {
134 NSString *reportType = statsReport.type; 133 NSString *reportType = statsReport.type;
135 if ([reportType isEqualToString:@"ssrc"] && 134 if ([reportType isEqualToString:@"ssrc"] &&
136 [statsReport.reportId rangeOfString:@"ssrc"].location != NSNotFound) { 135 [statsReport.statsId rangeOfString:@"ssrc"].location != NSNotFound) {
137 if ([statsReport.reportId rangeOfString:@"send"].location != NSNotFound) { 136 if ([statsReport.statsId rangeOfString:@"send"].location != NSNotFound) {
138 [self parseSendSsrcStatsReport:statsReport]; 137 [self parseSendSsrcStatsReport:statsReport];
139 } 138 }
140 if ([statsReport.reportId rangeOfString:@"recv"].location != NSNotFound) { 139 if ([statsReport.statsId rangeOfString:@"recv"].location != NSNotFound) {
141 [self parseRecvSsrcStatsReport:statsReport]; 140 [self parseRecvSsrcStatsReport:statsReport];
142 } 141 }
143 } else if ([reportType isEqualToString:@"VideoBwe"]) { 142 } else if ([reportType isEqualToString:@"VideoBwe"]) {
144 [self parseBweStatsReport:statsReport]; 143 [self parseBweStatsReport:statsReport];
145 } else if ([reportType isEqualToString:@"googCandidatePair"]) { 144 } else if ([reportType isEqualToString:@"googCandidatePair"]) {
146 [self parseConnectionStatsReport:statsReport]; 145 [self parseConnectionStatsReport:statsReport];
147 } 146 }
148 } 147 }
149 148
150 #pragma mark - Private 149 #pragma mark - Private
151 150
152 - (void)parseBweStatsReport:(RTCStatsReport *)statsReport { 151 - (void)parseBweStatsReport:(RTCStatsReport *)statsReport {
153 for (RTCPair *pair in statsReport.values) { 152 NSDictionary *values = statsReport.values;
tkchin_webrtc 2016/03/08 19:51:21 use an enumerator to iterate over keys + values. H
hjon_webrtc 2016/03/10 03:32:43 Done.
154 NSString *key = pair.key; 153 for (NSString* key in values) {
155 NSString *value = pair.value; 154 NSString *value = values[key];
156 if ([key isEqualToString:@"googAvailableSendBandwidth"]) { 155 if ([key isEqualToString:@"googAvailableSendBandwidth"]) {
157 _availableSendBw = 156 _availableSendBw =
158 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue]; 157 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue];
159 } else if ([key isEqualToString:@"googAvailableReceiveBandwidth"]) { 158 } else if ([key isEqualToString:@"googAvailableReceiveBandwidth"]) {
160 _availableRecvBw = 159 _availableRecvBw =
161 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue]; 160 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue];
162 } else if ([key isEqualToString:@"googActualEncBitrate"]) { 161 } else if ([key isEqualToString:@"googActualEncBitrate"]) {
163 _actualEncBitrate = 162 _actualEncBitrate =
164 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue]; 163 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue];
165 } else if ([key isEqualToString:@"googTargetEncBitrate"]) { 164 } else if ([key isEqualToString:@"googTargetEncBitrate"]) {
166 _targetEncBitrate = 165 _targetEncBitrate =
167 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue]; 166 [ARDBitrateTracker bitrateStringForBitrate:value.doubleValue];
168 } 167 }
169 } 168 }
170 } 169 }
171 170
172 - (void)parseConnectionStatsReport:(RTCStatsReport *)statsReport { 171 - (void)parseConnectionStatsReport:(RTCStatsReport *)statsReport {
173 NSDictionary *values = [self dictionaryForReport:statsReport]; 172 NSDictionary *values = statsReport.values;
174 NSString *activeConnection = [values[@"googActiveConnection"] firstObject]; 173 NSString *activeConnection = values[@"googActiveConnection"];
175 if (![activeConnection isEqualToString:@"true"]) { 174 if (![activeConnection isEqualToString:@"true"]) {
176 return; 175 return;
177 } 176 }
178 for (RTCPair *pair in statsReport.values) { 177 for (NSString* key in values) {
179 NSString *key = pair.key; 178 NSString *value = values[key];
180 NSString *value = pair.value;
181 if ([key isEqualToString:@"googRtt"]) { 179 if ([key isEqualToString:@"googRtt"]) {
182 _connRtt = value; 180 _connRtt = value;
183 } else if ([key isEqualToString:@"googLocalCandidateType"]) { 181 } else if ([key isEqualToString:@"googLocalCandidateType"]) {
184 _localCandType = value; 182 _localCandType = value;
185 } else if ([key isEqualToString:@"googRemoteCandidateType"]) { 183 } else if ([key isEqualToString:@"googRemoteCandidateType"]) {
186 _remoteCandType = value; 184 _remoteCandType = value;
187 } else if ([key isEqualToString:@"googTransportType"]) { 185 } else if ([key isEqualToString:@"googTransportType"]) {
188 _transportType = value; 186 _transportType = value;
189 } else if ([key isEqualToString:@"bytesReceived"]) { 187 } else if ([key isEqualToString:@"bytesReceived"]) {
190 NSInteger byteCount = value.integerValue; 188 NSInteger byteCount = value.integerValue;
191 [_connRecvBitrateTracker updateBitrateWithCurrentByteCount:byteCount]; 189 [_connRecvBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
192 _connRecvBitrate = _connRecvBitrateTracker.bitrateString; 190 _connRecvBitrate = _connRecvBitrateTracker.bitrateString;
193 } else if ([key isEqualToString:@"bytesSent"]) { 191 } else if ([key isEqualToString:@"bytesSent"]) {
194 NSInteger byteCount = value.integerValue; 192 NSInteger byteCount = value.integerValue;
195 [_connSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount]; 193 [_connSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
196 _connSendBitrate = _connSendBitrateTracker.bitrateString; 194 _connSendBitrate = _connSendBitrateTracker.bitrateString;
197 } 195 }
198 } 196 }
199 } 197 }
200 198
201 - (void)parseSendSsrcStatsReport:(RTCStatsReport *)statsReport { 199 - (void)parseSendSsrcStatsReport:(RTCStatsReport *)statsReport {
202 NSDictionary *values = [self dictionaryForReport:statsReport]; 200 NSDictionary *values = statsReport.values;
203 NSString *trackId = [values[@"googTrackId"] firstObject]; 201 NSString *trackId = values[@"googTrackId"];
204 if (trackId.length && [trackId hasPrefix:@"ARDAMSv0"]) { 202 if (trackId.length && [trackId hasPrefix:@"ARDAMSv0"]) {
205 // Video track. 203 // Video track.
206 [self parseVideoSendStatsReport:statsReport]; 204 [self parseVideoSendStatsReport:statsReport];
207 } else { 205 } else {
208 // Audio track. 206 // Audio track.
209 [self parseAudioSendStatsReport:statsReport]; 207 [self parseAudioSendStatsReport:statsReport];
210 } 208 }
211 } 209 }
212 210
213 - (void)parseAudioSendStatsReport:(RTCStatsReport *)statsReport { 211 - (void)parseAudioSendStatsReport:(RTCStatsReport *)statsReport {
214 for (RTCPair *pair in statsReport.values) { 212 NSDictionary *values = statsReport.values;
215 NSString *key = pair.key; 213 for (NSString* key in values) {
216 NSString *value = pair.value; 214 NSString *value = values[key];
217 if ([key isEqualToString:@"googCodecName"]) { 215 if ([key isEqualToString:@"googCodecName"]) {
218 _audioSendCodec = value; 216 _audioSendCodec = value;
219 } else if ([key isEqualToString:@"bytesSent"]) { 217 } else if ([key isEqualToString:@"bytesSent"]) {
220 NSInteger byteCount = value.integerValue; 218 NSInteger byteCount = value.integerValue;
221 [_audioSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount]; 219 [_audioSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
222 _audioSendBitrate = _audioSendBitrateTracker.bitrateString; 220 _audioSendBitrate = _audioSendBitrateTracker.bitrateString;
223 } 221 }
224 } 222 }
225 } 223 }
226 224
227 - (void)parseVideoSendStatsReport:(RTCStatsReport *)statsReport { 225 - (void)parseVideoSendStatsReport:(RTCStatsReport *)statsReport {
228 for (RTCPair *pair in statsReport.values) { 226 NSDictionary *values = statsReport.values;
229 NSString *key = pair.key; 227 for (NSString* key in values) {
230 NSString *value = pair.value; 228 NSString *value = values[key];
231 if ([key isEqualToString:@"googCodecName"]) { 229 if ([key isEqualToString:@"googCodecName"]) {
232 _videoSendCodec = value; 230 _videoSendCodec = value;
233 } else if ([key isEqualToString:@"googFrameHeightInput"]) { 231 } else if ([key isEqualToString:@"googFrameHeightInput"]) {
234 _videoInputHeight = value; 232 _videoInputHeight = value;
235 } else if ([key isEqualToString:@"googFrameWidthInput"]) { 233 } else if ([key isEqualToString:@"googFrameWidthInput"]) {
236 _videoInputWidth = value; 234 _videoInputWidth = value;
237 } else if ([key isEqualToString:@"googFrameRateInput"]) { 235 } else if ([key isEqualToString:@"googFrameRateInput"]) {
238 _videoInputFps = value; 236 _videoInputFps = value;
239 } else if ([key isEqualToString:@"googFrameHeightSent"]) { 237 } else if ([key isEqualToString:@"googFrameHeightSent"]) {
240 _videoSendHeight = value; 238 _videoSendHeight = value;
241 } else if ([key isEqualToString:@"googFrameWidthSent"]) { 239 } else if ([key isEqualToString:@"googFrameWidthSent"]) {
242 _videoSendWidth = value; 240 _videoSendWidth = value;
243 } else if ([key isEqualToString:@"googFrameRateSent"]) { 241 } else if ([key isEqualToString:@"googFrameRateSent"]) {
244 _videoSendFps = value; 242 _videoSendFps = value;
245 } else if ([key isEqualToString:@"googAvgEncodeMs"]) { 243 } else if ([key isEqualToString:@"googAvgEncodeMs"]) {
246 _videoEncodeMs = value; 244 _videoEncodeMs = value;
247 } else if ([key isEqualToString:@"bytesSent"]) { 245 } else if ([key isEqualToString:@"bytesSent"]) {
248 NSInteger byteCount = value.integerValue; 246 NSInteger byteCount = value.integerValue;
249 [_videoSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount]; 247 [_videoSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
250 _videoSendBitrate = _videoSendBitrateTracker.bitrateString; 248 _videoSendBitrate = _videoSendBitrateTracker.bitrateString;
251 } 249 }
252 } 250 }
253 } 251 }
254 252
255 - (void)parseRecvSsrcStatsReport:(RTCStatsReport *)statsReport { 253 - (void)parseRecvSsrcStatsReport:(RTCStatsReport *)statsReport {
256 NSDictionary *values = [self dictionaryForReport:statsReport]; 254 NSDictionary *values = statsReport.values;
257 NSString *transportId = [values[@"transportId"] firstObject]; 255 if (values[@"googFrameWidthReceived"]) {
258 if ([values[@"googFrameWidthReceived"] firstObject]) {
259 [self parseVideoRecvStatsReport:statsReport]; 256 [self parseVideoRecvStatsReport:statsReport];
260 } else { 257 } else {
261 [self parseAudioRecvStatsReport:statsReport]; 258 [self parseAudioRecvStatsReport:statsReport];
262 } 259 }
263 } 260 }
264 261
265 - (void)parseAudioRecvStatsReport:(RTCStatsReport *)statsReport { 262 - (void)parseAudioRecvStatsReport:(RTCStatsReport *)statsReport {
266 for (RTCPair *pair in statsReport.values) { 263 NSDictionary *values = statsReport.values;
267 NSString *key = pair.key; 264 for (NSString* key in values) {
268 NSString *value = pair.value; 265 NSString *value = values[key];
269 if ([key isEqualToString:@"googCodecName"]) { 266 if ([key isEqualToString:@"googCodecName"]) {
270 _audioRecvCodec = value; 267 _audioRecvCodec = value;
271 } else if ([key isEqualToString:@"bytesReceived"]) { 268 } else if ([key isEqualToString:@"bytesReceived"]) {
272 NSInteger byteCount = value.integerValue; 269 NSInteger byteCount = value.integerValue;
273 [_audioRecvBitrateTracker updateBitrateWithCurrentByteCount:byteCount]; 270 [_audioRecvBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
274 _audioRecvBitrate = _audioRecvBitrateTracker.bitrateString; 271 _audioRecvBitrate = _audioRecvBitrateTracker.bitrateString;
275 } else if ([key isEqualToString:@"googSpeechExpandRate"]) { 272 } else if ([key isEqualToString:@"googSpeechExpandRate"]) {
276 _audioExpandRate = value; 273 _audioExpandRate = value;
277 } else if ([key isEqualToString:@"googCurrentDelayMs"]) { 274 } else if ([key isEqualToString:@"googCurrentDelayMs"]) {
278 _audioCurrentDelay = value; 275 _audioCurrentDelay = value;
279 } 276 }
280 } 277 }
281 } 278 }
282 279
283 - (void)parseVideoRecvStatsReport:(RTCStatsReport *)statsReport { 280 - (void)parseVideoRecvStatsReport:(RTCStatsReport *)statsReport {
284 for (RTCPair *pair in statsReport.values) { 281 NSDictionary *values = statsReport.values;
285 NSString *key = pair.key; 282 for (NSString* key in values) {
286 NSString *value = pair.value; 283 NSString *value = values[key];
287 if ([key isEqualToString:@"googFrameHeightReceived"]) { 284 if ([key isEqualToString:@"googFrameHeightReceived"]) {
288 _videoRecvHeight = value; 285 _videoRecvHeight = value;
289 } else if ([key isEqualToString:@"googFrameWidthReceived"]) { 286 } else if ([key isEqualToString:@"googFrameWidthReceived"]) {
290 _videoRecvWidth = value; 287 _videoRecvWidth = value;
291 } else if ([key isEqualToString:@"googFrameRateReceived"]) { 288 } else if ([key isEqualToString:@"googFrameRateReceived"]) {
292 _videoRecvFps = value; 289 _videoRecvFps = value;
293 } else if ([key isEqualToString:@"googFrameRateDecoded"]) { 290 } else if ([key isEqualToString:@"googFrameRateDecoded"]) {
294 _videoDecodedFps = value; 291 _videoDecodedFps = value;
295 } else if ([key isEqualToString:@"googFrameRateOutput"]) { 292 } else if ([key isEqualToString:@"googFrameRateOutput"]) {
296 _videoOutputFps = value; 293 _videoOutputFps = value;
297 } else if ([key isEqualToString:@"googDecodeMs"]) { 294 } else if ([key isEqualToString:@"googDecodeMs"]) {
298 _videoDecodeMs = value; 295 _videoDecodeMs = value;
299 } else if ([key isEqualToString:@"bytesReceived"]) { 296 } else if ([key isEqualToString:@"bytesReceived"]) {
300 NSInteger byteCount = value.integerValue; 297 NSInteger byteCount = value.integerValue;
301 [_videoRecvBitrateTracker updateBitrateWithCurrentByteCount:byteCount]; 298 [_videoRecvBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
302 _videoRecvBitrate = _videoRecvBitrateTracker.bitrateString; 299 _videoRecvBitrate = _videoRecvBitrateTracker.bitrateString;
303 } 300 }
304 } 301 }
305 } 302 }
306 303
307 - (NSDictionary *)dictionaryForReport:(RTCStatsReport *)statsReport {
308 NSMutableDictionary *dict = [NSMutableDictionary dictionary];
309 for (RTCPair *pair in statsReport.values) {
310 NSMutableArray *values = dict[pair.key];
311 if (!values) {
312 values = [NSMutableArray arrayWithCapacity:1];
313 dict[pair.key] = values;
314 }
315 [values addObject:pair.value];
316 }
317 return dict;
318 }
319
320 @end 304 @end
321 305
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698