| Index: webrtc/examples/objc/AppRTCMobile/ARDStatsBuilder.m
|
| diff --git a/webrtc/examples/objc/AppRTCMobile/ARDStatsBuilder.m b/webrtc/examples/objc/AppRTCMobile/ARDStatsBuilder.m
|
| index 0643b428273cc89c3d661d11423577fac07105a5..370b72e8677e4a3b4aecb58d62a9886ba925750b 100644
|
| --- a/webrtc/examples/objc/AppRTCMobile/ARDStatsBuilder.m
|
| +++ b/webrtc/examples/objc/AppRTCMobile/ARDStatsBuilder.m
|
| @@ -41,6 +41,12 @@
|
| NSString *_videoSendHeight;
|
| NSString *_videoSendWidth;
|
|
|
| + // QP stats.
|
| + int _videoQPSum;
|
| + int _framesEncoded;
|
| + int _oldVideoQPSum;
|
| + int _oldFramesEncoded;
|
| +
|
| // Video receive stats.
|
| NSString *_videoDecodeMs;
|
| NSString *_videoDecodedFps;
|
| @@ -77,6 +83,8 @@
|
| _connRecvBitrateTracker = [[ARDBitrateTracker alloc] init];
|
| _videoSendBitrateTracker = [[ARDBitrateTracker alloc] init];
|
| _videoRecvBitrateTracker = [[ARDBitrateTracker alloc] init];
|
| + _videoQPSum = 0;
|
| + _framesEncoded = 0;
|
| }
|
| return self;
|
| }
|
| @@ -96,14 +104,18 @@
|
|
|
| // Video send stats.
|
| NSString *videoSendFormat = @"VS (input) %@x%@@%@fps | (sent) %@x%@@%@fps\n"
|
| - "VS (enc) %@/%@ | (sent) %@/%@ | %@ms | %@\n";
|
| + "VS (enc) %@/%@ | (sent) %@/%@ | %@ms | %@\n"
|
| + "AvgQP (past %d encoded frames) = %d\n ";
|
| + int avgqp = [self calculateAvgQP];
|
| +
|
| [result appendString:[NSString stringWithFormat:videoSendFormat,
|
| _videoInputWidth, _videoInputHeight, _videoInputFps,
|
| _videoSendWidth, _videoSendHeight, _videoSendFps,
|
| _actualEncBitrate, _targetEncBitrate,
|
| _videoSendBitrate, _availableSendBw,
|
| _videoEncodeMs,
|
| - _videoSendCodec]];
|
| + _videoSendCodec,
|
| + _framesEncoded - _oldFramesEncoded, avgqp]];
|
|
|
| // Video receive stats.
|
| NSString *videoReceiveFormat =
|
| @@ -148,6 +160,13 @@
|
|
|
| #pragma mark - Private
|
|
|
| +- (int)calculateAvgQP {
|
| + int deltaFramesEncoded = _framesEncoded - _oldFramesEncoded;
|
| + int deltaQPSum = _videoQPSum - _oldVideoQPSum;
|
| +
|
| + return deltaFramesEncoded != 0 ? deltaQPSum / deltaFramesEncoded : 0;
|
| +}
|
| +
|
| - (void)parseBweStatsReport:(RTCLegacyStatsReport *)statsReport {
|
| [statsReport.values enumerateKeysAndObjectsUsingBlock:^(
|
| NSString *key, NSString *value, BOOL *stop) {
|
| @@ -241,6 +260,12 @@
|
| NSInteger byteCount = value.integerValue;
|
| [_videoSendBitrateTracker updateBitrateWithCurrentByteCount:byteCount];
|
| _videoSendBitrate = _videoSendBitrateTracker.bitrateString;
|
| + } else if ([key isEqualToString:@"qpSum"]) {
|
| + _oldVideoQPSum = _videoQPSum;
|
| + _videoQPSum = value.integerValue;
|
| + } else if ([key isEqualToString:@"framesEncoded"]) {
|
| + _oldFramesEncoded = _framesEncoded;
|
| + _framesEncoded = value.integerValue;
|
| }
|
| }];
|
| }
|
|
|