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

Unified Diff: webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.mm

Issue 2375273004: Reland of Unify the macOS and iOS capturer implementations (Closed)
Patch Set: fix gyp build Created 4 years, 3 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/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.mm
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.mm b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.mm
deleted file mode 100644
index 53e9db7770b0fd96aac6682af96e892de45285e6..0000000000000000000000000000000000000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.mm
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 2012 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.
- */
-
-#define DEFAULT_CAPTURE_DEVICE_INDEX 1
-#define DEFAULT_FRAME_RATE 30
-#define DEFAULT_FRAME_WIDTH 352
-#define DEFAULT_FRAME_HEIGHT 288
-#define ROTATE_CAPTURED_FRAME 1
-#define LOW_QUALITY 1
-
-#import "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.h"
-
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-using namespace videocapturemodule;
-
-@implementation VideoCaptureMacQTKitObjC
-
--(id)init {
- self = [super init];
- if (self) {
- [self initializeVariables];
- }
- return self;
-}
-
-- (void)dealloc {
- if (_captureSession)
- [_captureSession stopRunning];
-
- if (_captureVideoDeviceInput) {
- if ([[_captureVideoDeviceInput device] isOpen])
- [[_captureVideoDeviceInput device] close];
-
- [_captureVideoDeviceInput release];
- }
-
- [_captureDecompressedVideoOutput release];
- [_captureSession release];
- [_captureDevices release];
- [_lock release];
-
- [super dealloc];
-}
-
-#pragma mark Public methods
-
-- (void)registerOwner:(VideoCaptureMacQTKit*)owner {
- [_lock lock];
- _owner = owner;
- [_lock unlock];
-}
-
-- (BOOL)setCaptureDeviceById:(char*)uniqueId {
- if (uniqueId == nil || !strcmp("", uniqueId)) {
- WEBRTC_TRACE(kTraceInfo, kTraceVideoCapture, 0,
- "Incorrect capture id argument");
- return NO;
- }
-
- if (!strcmp(uniqueId, _captureDeviceNameUniqueID))
- return YES;
-
- QTCaptureDevice* captureDevice;
- for(int index = 0; index < _captureDeviceCount; index++) {
- captureDevice = (QTCaptureDevice*)[_captureDevices objectAtIndex:index];
- char captureDeviceId[1024] = "";
- [[captureDevice uniqueID] getCString:captureDeviceId
- maxLength:1024
- encoding:NSUTF8StringEncoding];
- if (strcmp(uniqueId, captureDeviceId) == 0) {
- WEBRTC_TRACE(kTraceInfo, kTraceVideoCapture, 0,
- "%s:%d Found capture device id %s as index %d",
- __FUNCTION__, __LINE__, captureDeviceId, index);
- [[captureDevice localizedDisplayName] getCString:_captureDeviceNameUTF8
- maxLength:1024
- encoding:NSUTF8StringEncoding];
- [[captureDevice uniqueID] getCString:_captureDeviceNameUniqueID
- maxLength:1024
- encoding:NSUTF8StringEncoding];
- break;
- }
- captureDevice = nil;
- }
-
- if (!captureDevice)
- return NO;
-
- NSError* error;
- if (![captureDevice open:&error]) {
- WEBRTC_TRACE(kTraceError, kTraceVideoCapture, 0,
- "Failed to open capture device: %s", _captureDeviceNameUTF8);
- return NO;
- }
-
- if (_captureVideoDeviceInput) {
- [_captureVideoDeviceInput release];
- }
- _captureVideoDeviceInput =
- [[QTCaptureDeviceInput alloc] initWithDevice:captureDevice];
-
- if (![_captureSession addInput:_captureVideoDeviceInput error:&error]) {
- WEBRTC_TRACE(kTraceError, kTraceVideoCapture, 0,
- "Failed to add input from %s to the capture session",
- _captureDeviceNameUTF8);
- return NO;
- }
-
- WEBRTC_TRACE(kTraceInfo, kTraceVideoCapture, 0,
- "%s:%d successfully added capture device: %s", __FUNCTION__,
- __LINE__, _captureDeviceNameUTF8);
- return YES;
-}
-
-- (void)setCaptureHeight:(int)height width:(int)width frameRate:(int)frameRate {
- _frameWidth = width;
- _frameHeight = height;
- _frameRate = frameRate;
-
- NSDictionary* captureDictionary =
- [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithDouble:_frameWidth],
- (id)kCVPixelBufferWidthKey,
- [NSNumber numberWithDouble:_frameHeight],
- (id)kCVPixelBufferHeightKey,
- [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32ARGB],
- (id)kCVPixelBufferPixelFormatTypeKey,
- nil];
- [_captureDecompressedVideoOutput
- performSelectorOnMainThread:@selector(setPixelBufferAttributes:)
- withObject:captureDictionary
- waitUntilDone:YES];
-}
-
-- (void)startCapture {
- if (_capturing)
- return;
-
- [_captureSession startRunning];
- _capturing = YES;
-}
-
-- (void)stopCapture {
- if (!_capturing)
- return;
-
- [_captureSession stopRunning];
- _capturing = NO;
-}
-
-#pragma mark Private methods
-
-- (BOOL)initializeVariables {
- if (NSClassFromString(@"QTCaptureSession") == nil)
- return NO;
-
- memset(_captureDeviceNameUTF8, 0, 1024);
- _framesDelivered = 0;
- _framesRendered = 0;
- _captureDeviceCount = 0;
- _capturing = NO;
- _captureInitialized = NO;
- _frameRate = DEFAULT_FRAME_RATE;
- _frameWidth = DEFAULT_FRAME_WIDTH;
- _frameHeight = DEFAULT_FRAME_HEIGHT;
- _lock = [[NSLock alloc] init];
- _captureSession = [[QTCaptureSession alloc] init];
- _captureDecompressedVideoOutput =
- [[QTCaptureDecompressedVideoOutput alloc] init];
- [_captureDecompressedVideoOutput setDelegate:self];
-
- [self getCaptureDevices];
- if (![self initializeVideoCapture])
- return NO;
-
- return NO;
-}
-
-- (void)getCaptureDevices {
- if (_captureDevices)
- [_captureDevices release];
-
- _captureDevices = [[NSArray alloc] initWithArray:
- [QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo]];
-
- _captureDeviceCount = _captureDevices.count;
-}
-
-- (BOOL)initializeVideoCapture{
- NSDictionary *captureDictionary =
- [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithDouble:_frameWidth],
- (id)kCVPixelBufferWidthKey,
- [NSNumber numberWithDouble:_frameHeight],
- (id)kCVPixelBufferHeightKey,
- [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32ARGB],
- (id)kCVPixelBufferPixelFormatTypeKey,
- nil];
-
- [_captureDecompressedVideoOutput setPixelBufferAttributes:captureDictionary];
- [_captureDecompressedVideoOutput setAutomaticallyDropsLateVideoFrames:YES];
- [_captureDecompressedVideoOutput
- setMinimumVideoFrameInterval:(NSTimeInterval)1/(float)_frameRate];
-
- NSError *error;
- if (![_captureSession addOutput:_captureDecompressedVideoOutput error:&error])
- return NO;
-
- return YES;
-}
-
-- (void)captureOutput:(QTCaptureOutput *)captureOutput
- didDropVideoFrameWithSampleBuffer:(QTSampleBuffer *)sampleBuffer
- fromConnection:(QTCaptureConnection *)connection {
-}
-
-- (void)captureOutput:(QTCaptureOutput *)captureOutput
- didOutputVideoFrame:(CVImageBufferRef)videoFrame
- withSampleBuffer:(QTSampleBuffer *)sampleBuffer
- fromConnection:(QTCaptureConnection *)connection {
-
- [_lock lock];
- if (!_owner) {
- [_lock unlock];
- return;
- }
-
- const int kFlags = 0;
- if (CVPixelBufferLockBaseAddress(videoFrame, kFlags) == kCVReturnSuccess) {
- void *baseAddress = CVPixelBufferGetBaseAddress(videoFrame);
- size_t bytesPerRow = CVPixelBufferGetBytesPerRow(videoFrame);
- size_t frameHeight = CVPixelBufferGetHeight(videoFrame);
- size_t frameSize = bytesPerRow * frameHeight;
-
- VideoCaptureCapability tempCaptureCapability;
- tempCaptureCapability.width = _frameWidth;
- tempCaptureCapability.height = _frameHeight;
- tempCaptureCapability.maxFPS = _frameRate;
- // TODO(wu) : Update actual type and not hard-coded value.
- tempCaptureCapability.rawType = kVideoBGRA;
-
- _owner->IncomingFrame((unsigned char*)baseAddress, frameSize,
- tempCaptureCapability, 0);
- CVPixelBufferUnlockBaseAddress(videoFrame, kFlags);
- }
- [_lock unlock];
- _framesDelivered++;
- _framesRendered++;
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698