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

Unified Diff: webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCFileVideoCapturer.m

Issue 2993473002: Clean up ObjC BUILD file
Patch Set: Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCFileVideoCapturer.m
diff --git a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCFileVideoCapturer.m b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCFileVideoCapturer.m
deleted file mode 100644
index 178a9580414a10424e621b8a12c9e7cd5c24cea4..0000000000000000000000000000000000000000
--- a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCFileVideoCapturer.m
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#import "RTCFileVideoCapturer.h"
-
-#import "WebRTC/RTCLogging.h"
-#import "WebRTC/RTCVideoFrameBuffer.h"
-
-@implementation RTCFileVideoCapturer {
- AVAssetReader *_reader;
- AVAssetReaderTrackOutput *_outTrack;
- BOOL _capturerStopped;
- CMTime _lastPresentationTime;
- dispatch_queue_t _frameQueue;
-}
-
-- (void)startCapturingFromFileNamed:(NSString *)nameOfFile {
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- if (_reader && _reader.status == AVAssetReaderStatusReading) {
- RTCLog("Capturer exists and reads another file. Start capture request failed.");
- return;
- }
- NSString *pathForFile = [self pathForFileName:nameOfFile];
- if (!pathForFile) {
- RTCLog("File %@ not found in bundle", nameOfFile);
- return;
- }
-
- _lastPresentationTime = CMTimeMake(0, 0);
-
- NSURL *URLForFile = [NSURL fileURLWithPath:pathForFile];
- AVURLAsset *asset = [AVURLAsset URLAssetWithURL:URLForFile options:nil];
-
- NSArray *allTracks = [asset tracksWithMediaType:AVMediaTypeVideo];
- NSError *error = nil;
- _reader = [[AVAssetReader alloc] initWithAsset:asset error:&error];
- if (error) {
- RTCLog("File reader failed with error: %@", error);
- return;
- }
-
- NSDictionary *options = @{
- (NSString *)
- kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)
- };
- _outTrack = [[AVAssetReaderTrackOutput alloc] initWithTrack:allTracks.firstObject
- outputSettings:options];
- [_reader addOutput:_outTrack];
-
- [_reader startReading];
- RTCLog(@"File capturer started reading");
- [self readNextBuffer];
- });
-}
-
-- (void)stopCapture {
- _capturerStopped = YES;
- RTCLog(@"File capturer stopped.");
-}
-
-#pragma mark - Private
-
-- (nullable NSString *)pathForFileName:(NSString *)fileName {
- NSArray *nameComponents = [fileName componentsSeparatedByString:@"."];
- if (nameComponents.count != 2) {
- return nil;
- }
-
- NSString *path =
- [[NSBundle mainBundle] pathForResource:nameComponents[0] ofType:nameComponents[1]];
- return path;
-}
-
-- (dispatch_queue_t)frameQueue {
- if (!_frameQueue) {
- _frameQueue = dispatch_queue_create("org.webrtc.filecapturer.video", DISPATCH_QUEUE_SERIAL);
- dispatch_set_target_queue(_frameQueue,
- dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0));
- }
- return _frameQueue;
-}
-
-- (void)readNextBuffer {
- if (_reader.status != AVAssetReaderStatusReading || _capturerStopped) {
- [_reader cancelReading];
- _reader = nil;
- return;
- }
-
- CMSampleBufferRef sampleBuffer = [_outTrack copyNextSampleBuffer];
- if (!sampleBuffer) {
- [self readNextBuffer];
- return;
- }
- if (CMSampleBufferGetNumSamples(sampleBuffer) != 1 || !CMSampleBufferIsValid(sampleBuffer) ||
- !CMSampleBufferDataIsReady(sampleBuffer)) {
- [self readNextBuffer];
- return;
- }
-
- [self publishSampleBuffer:sampleBuffer];
-}
-
-- (void)publishSampleBuffer:(CMSampleBufferRef)sampleBuffer {
- CMTime presentationTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
- Float64 presentationDifference =
- CMTimeGetSeconds(CMTimeSubtract(presentationTime, _lastPresentationTime));
- _lastPresentationTime = presentationTime;
- int64_t presentationDifferenceRound = lroundf(presentationDifference * NSEC_PER_SEC);
-
- __block dispatch_source_t timer = [self createStrictTimer];
- // Strict timer that will fire |presentationDifferenceRound| ns from now and never again.
- dispatch_source_set_timer(timer,
- dispatch_time(DISPATCH_TIME_NOW, presentationDifferenceRound),
- DISPATCH_TIME_FOREVER,
- 0);
- dispatch_source_set_event_handler(timer, ^{
- dispatch_source_cancel(timer);
- timer = nil;
-
- CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
- if (!pixelBuffer) {
- CFRelease(sampleBuffer);
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- [self readNextBuffer];
- });
- return;
- }
-
- RTCCVPixelBuffer *rtcPixelBuffer = [[RTCCVPixelBuffer alloc] initWithPixelBuffer:pixelBuffer];
- NSTimeInterval timeStampSeconds = CACurrentMediaTime();
- int64_t timeStampNs = lroundf(timeStampSeconds * NSEC_PER_SEC);
- RTCVideoFrame *videoFrame =
- [[RTCVideoFrame alloc] initWithBuffer:rtcPixelBuffer rotation:0 timeStampNs:timeStampNs];
- CFRelease(sampleBuffer);
-
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- [self readNextBuffer];
- });
-
- [self.delegate capturer:self didCaptureVideoFrame:videoFrame];
- });
- dispatch_activate(timer);
-}
-
-- (dispatch_source_t)createStrictTimer {
- dispatch_source_t timer = dispatch_source_create(
- DISPATCH_SOURCE_TYPE_TIMER, 0, DISPATCH_TIMER_STRICT, [self frameQueue]);
- return timer;
-}
-
-- (void)dealloc {
- [self stopCapture];
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698