Home | History | Annotate | Download | only in AppRTCDemo
      1 /*
      2  *  Copyright 2015 The WebRTC Project Authors. All rights reserved.
      3  *
      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
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #import "ARDBitrateTracker.h"
     12 
     13 #import <QuartzCore/QuartzCore.h>
     14 
     15 @implementation ARDBitrateTracker {
     16   CFTimeInterval _prevTime;
     17   NSInteger _prevByteCount;
     18 }
     19 
     20 @synthesize bitrate = _bitrate;
     21 
     22 + (NSString *)bitrateStringForBitrate:(double)bitrate {
     23   if (bitrate > 1e6) {
     24     return [NSString stringWithFormat:@"%.2fMbps", bitrate * 1e-6];
     25   } else if (bitrate > 1e3) {
     26     return [NSString stringWithFormat:@"%.0fKbps", bitrate * 1e-3];
     27   } else {
     28     return [NSString stringWithFormat:@"%.0fbps", bitrate];
     29   }
     30 }
     31 
     32 - (NSString *)bitrateString {
     33   return [[self class] bitrateStringForBitrate:_bitrate];
     34 }
     35 
     36 - (void)updateBitrateWithCurrentByteCount:(NSInteger)byteCount {
     37   CFTimeInterval currentTime = CACurrentMediaTime();
     38   if (_prevTime && (byteCount > _prevByteCount)) {
     39     _bitrate = (byteCount - _prevByteCount) * 8 / (currentTime - _prevTime);
     40   }
     41   _prevByteCount = byteCount;
     42   _prevTime = currentTime;
     43 }
     44 
     45 @end
     46