// // SCManagedVideoStreamReporter.m // Snapchat // // Created by Liu Liu on 5/16/15. // Copyright (c) 2015 Snapchat, Inc. All rights reserved. // #import "SCManagedVideoStreamReporter.h" #import #import static NSTimeInterval const SCManagedVideoStreamReporterInterval = 10; @implementation SCManagedVideoStreamReporter { NSUInteger _droppedSampleBuffers; NSUInteger _outputSampleBuffers; NSTimeInterval _lastReportTime; } - (instancetype)init { self = [super init]; if (self) { _lastReportTime = CACurrentMediaTime(); } return self; } - (void)_reportIfNeeded { NSTimeInterval currentTime = CACurrentMediaTime(); if (currentTime - _lastReportTime > SCManagedVideoStreamReporterInterval) { SCLogGeneralInfo(@"Time: (%.3f - %.3f], Video Streamer Dropped %tu, Output %tu", _lastReportTime, currentTime, _droppedSampleBuffers, _outputSampleBuffers); _droppedSampleBuffers = _outputSampleBuffers = 0; _lastReportTime = currentTime; } } - (void)managedVideoDataSource:(id)managedVideoDataSource didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer devicePosition:(SCManagedCaptureDevicePosition)devicePosition { ++_outputSampleBuffers; [self _reportIfNeeded]; } - (void)managedVideoDataSource:(id)managedVideoDataSource didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer devicePosition:(SCManagedCaptureDevicePosition)devicePosition { ++_droppedSampleBuffers; [self _reportIfNeeded]; } @end