Reland of Unify the macOS and iOS capturer implementations (patchset #1 id:1 of https://codereview.webrtc.org/2381853002/ )
Reason for revert:
Internal project has been fixed
Original issue's description:
> Revert of Unify the macOS and iOS capturer implementations (patchset #4 id:60001 of https://codereview.webrtc.org/2309253005/ )
>
> Reason for revert:
> Breaks internal project
>
> Original issue's description:
> > Unify the macOS and iOS capturer implementations
> >
> > This removes the QTKit based capturer for mac, and removes the need
> > to link against deprecated system libraries on macOS.
> >
> > BUG=webrtc:3968,webrtc:6275,webrtc:6333
> >
> > Committed: https://crrev.com/242d8bdddd77109781cbb70c59d161be7566ac98
> > Cr-Commit-Position: refs/heads/master@{#14418}
>
> TBR=magjed@webrtc.org,tkchin@webrtc.org,perkj@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:3968,webrtc:6275,webrtc:6333
>
> Committed: https://crrev.com/eddb7571d81e51a66f4abaf55013c85b4132c837
> Cr-Commit-Position: refs/heads/master@{#14429}
TBR=magjed@webrtc.org,tkchin@webrtc.org,perkj@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:3968,webrtc:6275,webrtc:6333
Review-Url: https://codereview.webrtc.org/2375273004
Cr-Commit-Position: refs/heads/master@{#14451}
diff --git a/webrtc/modules/video_capture/BUILD.gn b/webrtc/modules/video_capture/BUILD.gn
index 60573ba..cd4d3c9 100644
--- a/webrtc/modules/video_capture/BUILD.gn
+++ b/webrtc/modules/video_capture/BUILD.gn
@@ -60,7 +60,7 @@
if (!build_with_chromium) {
config("video_capture_internal_impl_config") {
- if (is_ios) {
+ if (is_ios || is_mac) {
libs = [
"AVFoundation.framework",
"CoreMedia.framework",
@@ -104,30 +104,6 @@
]
deps += [ "../..:webrtc_common" ]
}
- if (is_mac) {
- sources = [
- "mac/qtkit/video_capture_qtkit.h",
- "mac/qtkit/video_capture_qtkit.mm",
- "mac/qtkit/video_capture_qtkit_info.h",
- "mac/qtkit/video_capture_qtkit_info.mm",
- "mac/qtkit/video_capture_qtkit_info_objc.h",
- "mac/qtkit/video_capture_qtkit_info_objc.mm",
- "mac/qtkit/video_capture_qtkit_objc.h",
- "mac/qtkit/video_capture_qtkit_objc.mm",
- "mac/qtkit/video_capture_qtkit_utility.h",
- "mac/video_capture_mac.mm",
- ]
-
- libs = [
- # For NSAlert in video_capture_qtkit_info_objc.mm.
- "Cocoa.framework",
-
- # For GetGestalt in video_capture_mac.mm.
- "CoreServices.framework",
- "CoreVideo.framework",
- "QTKit.framework",
- ]
- }
if (is_win) {
sources = [
"windows/device_info_ds.cc",
@@ -149,16 +125,16 @@
deps += [ "//third_party/winsdk_samples" ]
}
- if (is_ios) {
+ if (is_ios || is_mac) {
sources = [
- "ios/device_info_ios.h",
- "ios/device_info_ios.mm",
- "ios/device_info_ios_objc.h",
- "ios/device_info_ios_objc.mm",
- "ios/rtc_video_capture_ios_objc.h",
- "ios/rtc_video_capture_ios_objc.mm",
- "ios/video_capture_ios.h",
- "ios/video_capture_ios.mm",
+ "objc/device_info.h",
+ "objc/device_info.mm",
+ "objc/device_info_objc.h",
+ "objc/device_info_objc.mm",
+ "objc/rtc_video_capture_objc.h",
+ "objc/rtc_video_capture_objc.mm",
+ "objc/video_capture.h",
+ "objc/video_capture.mm",
]
cflags = [
@@ -183,7 +159,6 @@
if (!is_android && rtc_include_tests) {
rtc_test("video_capture_tests") {
sources = [
- "test/video_capture_main_mac.mm",
"test/video_capture_unittest.cc",
]
@@ -215,11 +190,7 @@
"../utility",
"//testing/gtest",
]
- if (is_mac) {
- deps += [ "//webrtc/test:test_support_main_threaded_mac" ]
- } else {
- deps += [ "//webrtc/test:test_support_main" ]
- }
+ deps += [ "//webrtc/test:test_support_main" ]
if (is_clang) {
# Suppress warnings from Chrome's Clang plugins.
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.h b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.h
deleted file mode 100644
index e3ddd9f..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.h
+++ /dev/null
@@ -1,79 +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.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_H_
-
-#import <QTKit/QTKit.h>
-#include <stdio.h>
-
-#include "webrtc/modules/video_capture/device_info_impl.h"
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h"
-#include "webrtc/modules/video_capture/video_capture_impl.h"
-
-@class VideoCaptureMacQTKitObjC;
-@class VideoCaptureMacQTKitInfoObjC;
-
-namespace webrtc
-{
-namespace videocapturemodule
-{
-
-class VideoCaptureMacQTKit : public VideoCaptureImpl
-{
-public:
- VideoCaptureMacQTKit(const int32_t id);
- virtual ~VideoCaptureMacQTKit();
-
- /*
- * Create a video capture module object
- *
- * id - unique identifier of this video capture module object
- * deviceUniqueIdUTF8 - name of the device. Available names can be found
- * by using GetDeviceName
- * deviceUniqueIdUTF8Length - length of deviceUniqueIdUTF8
- */
- static void Destroy(VideoCaptureModule* module);
-
- int32_t Init(const int32_t id, const char* deviceUniqueIdUTF8);
-
-
- // Start/Stop
- virtual int32_t StartCapture(
- const VideoCaptureCapability& capability);
- virtual int32_t StopCapture();
-
- // Properties of the set device
-
- virtual bool CaptureStarted();
-
- int32_t CaptureSettings(VideoCaptureCapability& settings);
-
-protected:
- // Help functions
- int32_t SetCameraOutput();
-
-private:
- VideoCaptureMacQTKitObjC* _captureDevice;
- VideoCaptureMacQTKitInfoObjC* _captureInfo;
- bool _isCapturing;
- int32_t _id;
- int32_t _captureWidth;
- int32_t _captureHeight;
- int32_t _captureFrameRate;
- char _currentDeviceNameUTF8[MAX_NAME_LENGTH];
- char _currentDeviceUniqueIdUTF8[MAX_NAME_LENGTH];
- char _currentDeviceProductUniqueIDUTF8[MAX_NAME_LENGTH];
- int32_t _frameCount;
-};
-} // namespace videocapturemodule
-} // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_H_
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm
deleted file mode 100644
index ad057b4..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm
+++ /dev/null
@@ -1,211 +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.
- */
-
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.h"
-#import "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.h"
-#import "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.h"
-#include "webrtc/modules/video_capture/video_capture_config.h"
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc
-{
-
-namespace videocapturemodule
-{
-
-VideoCaptureMacQTKit::VideoCaptureMacQTKit(const int32_t id) :
- VideoCaptureImpl(id),
- _captureDevice(NULL),
- _captureInfo(NULL),
- _isCapturing(false),
- _id(id),
- _captureWidth(QTKIT_DEFAULT_WIDTH),
- _captureHeight(QTKIT_DEFAULT_HEIGHT),
- _captureFrameRate(QTKIT_DEFAULT_FRAME_RATE),
- _frameCount(0)
-{
-
- memset(_currentDeviceNameUTF8, 0, MAX_NAME_LENGTH);
- memset(_currentDeviceUniqueIdUTF8, 0, MAX_NAME_LENGTH);
- memset(_currentDeviceProductUniqueIDUTF8, 0, MAX_NAME_LENGTH);
-}
-
-VideoCaptureMacQTKit::~VideoCaptureMacQTKit()
-{
-
- WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCapture, _id,
- "~VideoCaptureMacQTKit() called");
- if(_captureDevice)
- {
- [_captureDevice registerOwner:nil];
- [_captureDevice stopCapture];
- [_captureDevice release];
- }
-
- if(_captureInfo)
- {
- [_captureInfo release];
- }
-}
-
-int32_t VideoCaptureMacQTKit::Init(
- const int32_t id, const char* iDeviceUniqueIdUTF8)
-{
- CriticalSectionScoped cs(&_apiCs);
-
-
- const int32_t nameLength =
- (int32_t) strlen((char*)iDeviceUniqueIdUTF8);
- if(nameLength>kVideoCaptureUniqueNameLength)
- return -1;
-
- // Store the device name
- _deviceUniqueId = new char[nameLength+1];
- memcpy(_deviceUniqueId, iDeviceUniqueIdUTF8,nameLength+1);
-
- _captureDevice = [[VideoCaptureMacQTKitObjC alloc] init];
- if(NULL == _captureDevice)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "Failed to create an instance of "
- "VideoCaptureMacQTKitObjC");
- return -1;
- }
-
- [_captureDevice registerOwner:this];
-
- if(0 == strcmp((char*)iDeviceUniqueIdUTF8, ""))
- {
- // the user doesn't want to set a capture device at this time
- return 0;
- }
-
- _captureInfo = [[VideoCaptureMacQTKitInfoObjC alloc]init];
- if(nil == _captureInfo)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "Failed to create an instance of VideoCaptureMacQTKitInfoObjC");
- return -1;
- }
-
- int captureDeviceCount = [[_captureInfo getCaptureDeviceCount]intValue];
- if(captureDeviceCount < 0)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "No Capture Devices Present");
- return -1;
- }
-
- const int NAME_LENGTH = 1024;
- char deviceNameUTF8[1024] = "";
- char deviceUniqueIdUTF8[1024] = "";
- char deviceProductUniqueIDUTF8[1024] = "";
-
- bool captureDeviceFound = false;
- for(int index = 0; index < captureDeviceCount; index++){
-
- memset(deviceNameUTF8, 0, NAME_LENGTH);
- memset(deviceUniqueIdUTF8, 0, NAME_LENGTH);
- memset(deviceProductUniqueIDUTF8, 0, NAME_LENGTH);
- if(-1 == [[_captureInfo getDeviceNamesFromIndex:index
- DefaultName:deviceNameUTF8 WithLength:NAME_LENGTH
- AndUniqueID:deviceUniqueIdUTF8 WithLength:NAME_LENGTH
- AndProductID:deviceProductUniqueIDUTF8
- WithLength:NAME_LENGTH]intValue])
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id,
- "GetDeviceName returned -1 for index %d", index);
- return -1;
- }
- if(0 == strcmp((const char*)iDeviceUniqueIdUTF8,
- (char*)deviceUniqueIdUTF8))
- {
- // we have a match
- captureDeviceFound = true;
- break;
- }
- }
-
- if(false == captureDeviceFound)
- {
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, _id,
- "Failed to find capture device unique ID %s",
- iDeviceUniqueIdUTF8);
- return -1;
- }
-
- // at this point we know that the user has passed in a valid camera. Let's
- // set it as the current.
- if(![_captureDevice setCaptureDeviceById:(char*)deviceUniqueIdUTF8])
- {
- strcpy((char*)_deviceUniqueId, (char*)deviceUniqueIdUTF8);
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id,
- "Failed to set capture device %s (unique ID %s) even "
- "though it was a valid return from "
- "VideoCaptureMacQTKitInfo", deviceNameUTF8,
- iDeviceUniqueIdUTF8);
- return -1;
- }
-
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, _id,
- "successfully Init VideoCaptureMacQTKit" );
- return 0;
-}
-
-int32_t VideoCaptureMacQTKit::StartCapture(
- const VideoCaptureCapability& capability)
-{
-
- _captureWidth = capability.width;
- _captureHeight = capability.height;
- _captureFrameRate = capability.maxFPS;
- _captureDelay = 120;
-
- [_captureDevice setCaptureHeight:_captureHeight
- width:_captureWidth
- frameRate:_captureFrameRate];
-
- [_captureDevice startCapture];
- _isCapturing = true;
- return 0;
-}
-
-int32_t VideoCaptureMacQTKit::StopCapture()
-{
- [_captureDevice stopCapture];
- _isCapturing = false;
- return 0;
-}
-
-bool VideoCaptureMacQTKit::CaptureStarted()
-{
- return _isCapturing;
-}
-
-int32_t VideoCaptureMacQTKit::CaptureSettings(VideoCaptureCapability& settings)
-{
- settings.width = _captureWidth;
- settings.height = _captureHeight;
- settings.maxFPS = _captureFrameRate;
- return 0;
-}
-
-
-// ********** begin functions inherited from DeviceInfoImpl **********
-
-struct VideoCaptureCapabilityMacQTKit:public VideoCaptureCapability
-{
- VideoCaptureCapabilityMacQTKit()
- {
- }
-};
-} // namespace videocapturemodule
-} // namespace webrtc
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.h b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.h
deleted file mode 100644
index fd994ad..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.h
+++ /dev/null
@@ -1,93 +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.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_H_
-
-#include "webrtc/modules/video_capture/device_info_impl.h"
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h"
-#include "webrtc/modules/video_capture/video_capture_impl.h"
-
-
-@class VideoCaptureMacQTKitInfoObjC;
-
-namespace webrtc
-{
-namespace videocapturemodule
-{
-
-class VideoCaptureMacQTKitInfo: public DeviceInfoImpl
-{
-public:
-
- VideoCaptureMacQTKitInfo(const int32_t id);
- virtual ~VideoCaptureMacQTKitInfo();
-
- int32_t Init();
-
- virtual uint32_t NumberOfDevices();
-
- /*
- * Returns the available capture devices.
- * deviceNumber -[in] index of capture device
- * deviceNameUTF8 - friendly name of the capture device
- * deviceUniqueIdUTF8 - unique name of the capture device if it exist.
- * Otherwise same as deviceNameUTF8
- * productUniqueIdUTF8 - unique product id if it exist. Null terminated
- * otherwise.
- */
- virtual int32_t GetDeviceName(
- uint32_t deviceNumber, char* deviceNameUTF8,
- uint32_t deviceNameLength, char* deviceUniqueIdUTF8,
- uint32_t deviceUniqueIdUTF8Length,
- char* productUniqueIdUTF8 = 0,
- uint32_t productUniqueIdUTF8Length = 0);
-
- /*
- * Returns the number of capabilities for this device
- */
- virtual int32_t NumberOfCapabilities(
- const char* deviceUniqueIdUTF8);
-
- /*
- * Gets the capabilities of the named device
- */
- virtual int32_t GetCapability(
- const char* deviceUniqueIdUTF8,
- const uint32_t deviceCapabilityNumber,
- VideoCaptureCapability& capability);
-
- /*
- * Gets the capability that best matches the requested width, height and frame rate.
- * Returns the deviceCapabilityNumber on success.
- */
- virtual int32_t GetBestMatchedCapability(
- const char* deviceUniqueIdUTF8,
- const VideoCaptureCapability& requested,
- VideoCaptureCapability& resulting);
-
- /*
- * Display OS /capture device specific settings dialog
- */
- virtual int32_t DisplayCaptureSettingsDialogBox(
- const char* deviceUniqueIdUTF8,
- const char* dialogTitleUTF8, void* parentWindow,
- uint32_t positionX, uint32_t positionY);
-
-protected:
- virtual int32_t CreateCapabilityMap(
- const char* deviceUniqueIdUTF8);
-
- VideoCaptureMacQTKitInfoObjC* _captureInfo;
-};
-} // namespace videocapturemodule
-} // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_H_
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.mm b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.mm
deleted file mode 100644
index 0c0c6a1..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.mm
+++ /dev/null
@@ -1,125 +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.
- */
-
-#import "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.h"
-#include "webrtc/modules/video_capture/video_capture.h"
-#include "webrtc/modules/video_capture/video_capture_config.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc
-{
-namespace videocapturemodule
-{
-
-VideoCaptureMacQTKitInfo::VideoCaptureMacQTKitInfo(const int32_t id) :
- DeviceInfoImpl(id)
-{
- _captureInfo = [[VideoCaptureMacQTKitInfoObjC alloc] init];
-}
-
-VideoCaptureMacQTKitInfo::~VideoCaptureMacQTKitInfo()
-{
- [_captureInfo release];
-
-}
-
-int32_t VideoCaptureMacQTKitInfo::Init()
-{
-
- return 0;
-}
-
-uint32_t VideoCaptureMacQTKitInfo::NumberOfDevices()
-{
-
- uint32_t captureDeviceCount =
- [[_captureInfo getCaptureDeviceCount]intValue];
- return captureDeviceCount;
-
-}
-
-int32_t VideoCaptureMacQTKitInfo::GetDeviceName(
- uint32_t deviceNumber, char* deviceNameUTF8,
- uint32_t deviceNameLength, char* deviceUniqueIdUTF8,
- uint32_t deviceUniqueIdUTF8Length, char* productUniqueIdUTF8,
- uint32_t productUniqueIdUTF8Length)
-{
- int errNum = [[_captureInfo getDeviceNamesFromIndex:deviceNumber
- DefaultName:deviceNameUTF8 WithLength:deviceNameLength
- AndUniqueID:deviceUniqueIdUTF8
- WithLength:deviceUniqueIdUTF8Length
- AndProductID:productUniqueIdUTF8
- WithLength:productUniqueIdUTF8Length]intValue];
- return errNum;
-}
-
-int32_t VideoCaptureMacQTKitInfo::NumberOfCapabilities(
- const char* deviceUniqueIdUTF8)
-{
- // Not implemented. Mac doesn't use discrete steps in capabilities, rather
- // "analog". QTKit will do it's best to convert frames to what ever format
- // you ask for.
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id,
- "NumberOfCapabilities is not supported on the Mac platform.");
- return -1;
-}
-
-
-int32_t VideoCaptureMacQTKitInfo::GetCapability(
- const char* deviceUniqueIdUTF8,
- const uint32_t deviceCapabilityNumber,
- VideoCaptureCapability& capability)
-{
- // Not implemented. Mac doesn't use discrete steps in capabilities, rather
- // "analog". QTKit will do it's best to convert frames to what ever format
- // you ask for.
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id,
- "NumberOfCapabilities is not supported on the Mac platform.");
- return -1;
-}
-
-
-int32_t VideoCaptureMacQTKitInfo::GetBestMatchedCapability(
- const char*deviceUniqueIdUTF8,
- const VideoCaptureCapability& requested, VideoCaptureCapability& resulting)
-{
- // Not implemented. Mac doesn't use discrete steps in capabilities, rather
- // "analog". QTKit will do it's best to convert frames to what ever format
- // you ask for.
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, _id,
- "NumberOfCapabilities is not supported on the Mac platform.");
- return -1;
-}
-
-int32_t VideoCaptureMacQTKitInfo::DisplayCaptureSettingsDialogBox(
- const char* deviceUniqueIdUTF8,
- const char* dialogTitleUTF8, void* parentWindow,
- uint32_t positionX, uint32_t positionY)
-{
-
- return [[_captureInfo
- displayCaptureSettingsDialogBoxWithDevice:deviceUniqueIdUTF8
- AndTitle:dialogTitleUTF8
- AndParentWindow:parentWindow AtX:positionX AndY:positionY]
- intValue];
-}
-
-int32_t VideoCaptureMacQTKitInfo::CreateCapabilityMap(
- const char* deviceUniqueIdUTF8)
-{
- // Not implemented. Mac doesn't use discrete steps in capabilities, rather
- // "analog". QTKit will do it's best to convert frames to what ever format
- // you ask for.
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, _id,
- "NumberOfCapabilities is not supported on the Mac platform.");
- return -1;
-}
-} // namespace videocapturemodule
-} // namespace webrtc
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.h b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.h
deleted file mode 100644
index c03aa93..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.h
+++ /dev/null
@@ -1,67 +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.
- */
-
-//
-// video_capture_qtkit_info_objc.h
-//
-//
-
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_OBJC_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_OBJC_H_
-
-#import <Foundation/Foundation.h>
-#import <QTKit/QTKit.h>
-
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.h"
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h"
-
-@interface VideoCaptureMacQTKitInfoObjC : NSObject{
- bool _OSSupportedInfo;
- NSArray* _captureDevicesInfo;
- NSAutoreleasePool* _poolInfo;
- int _captureDeviceCountInfo;
-
-}
-
-/**************************************************************************
- *
- * The following functions are considered to be private
- *
- ***************************************************************************/
-
-- (NSNumber*)getCaptureDevices;
-- (NSNumber*)initializeVariables;
-- (void)checkOSSupported;
-
-
-/**************************************************************************
- *
- * The following functions are considered to be public and called by VideoCaptureMacQTKitInfo class
- *
- ***************************************************************************/
-
-- (NSNumber*)getCaptureDeviceCount;
-
-- (NSNumber*)getDeviceNamesFromIndex:(uint32_t)index
- DefaultName:(char*)deviceName
- WithLength:(uint32_t)deviceNameLength
- AndUniqueID:(char*)deviceUniqueID
- WithLength:(uint32_t)deviceUniqueIDLength
- AndProductID:(char*)deviceProductID
- WithLength:(uint32_t)deviceProductIDLength;
-
-- (NSNumber*)displayCaptureSettingsDialogBoxWithDevice:
- (const char*)deviceUniqueIdUTF8
- AndTitle:(const char*)dialogTitleUTF8
- AndParentWindow:(void*) parentWindow AtX:(uint32_t)positionX
- AndY:(uint32_t) positionY;
-@end
-
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_OBJC_H_
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.mm b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.mm
deleted file mode 100644
index d3f2188..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.mm
+++ /dev/null
@@ -1,191 +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.
- */
-
-#pragma mark **** imports/includes
-
-#import "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info_objc.h"
-
-#include "webrtc/system_wrappers/include/trace.h"
-
-using namespace webrtc;
-
-#pragma mark **** hidden class interface
-
-@implementation VideoCaptureMacQTKitInfoObjC
-
-// ****************** over-written OS methods ***********************
-#pragma mark **** over-written OS methods
-
-/// ***** Objective-C. Similar to C++ constructor, although invoked manually
-/// ***** Potentially returns an instance of self
--(id)init{
- self = [super init];
- if(nil != self){
- [self checkOSSupported];
- [self initializeVariables];
- }
- else
- {
- return nil;
- }
- return self;
-}
-
-/// ***** Objective-C. Similar to C++ destructor
-/// ***** Returns nothing
-- (void)dealloc {
-
- [_captureDevicesInfo release];
-
- [super dealloc];
-}
-
-// ****************** public methods ******************
-#pragma mark **** public method implementations
-
-/// ***** Creates a message box with Cocoa framework
-/// ***** Returns 0 on success, -1 otherwise.
-- (NSNumber*)displayCaptureSettingsDialogBoxWithDevice:(const char*)deviceUniqueIdUTF8
- AndTitle:(const char*)dialogTitleUTF8
- AndParentWindow:(void*) parentWindow
- AtX:(uint32_t)positionX
- AndY:(uint32_t) positionY
-{
- NSString* strTitle = [NSString stringWithFormat:@"%s", dialogTitleUTF8];
- NSString* strButton = @"Alright";
- NSAlert* alert = [NSAlert alertWithMessageText:strTitle
- defaultButton:strButton
- alternateButton:nil otherButton:nil
- informativeTextWithFormat:@"Device %s is capturing", deviceUniqueIdUTF8];
- [alert setAlertStyle:NSInformationalAlertStyle];
- [alert runModal];
- return [NSNumber numberWithInt:0];
-}
-
-- (NSNumber*)getCaptureDeviceCount{
- [self getCaptureDevices];
- return [NSNumber numberWithInt:_captureDeviceCountInfo];
-}
-
-
-- (NSNumber*)getDeviceNamesFromIndex:(uint32_t)index
- DefaultName:(char*)deviceName
- WithLength:(uint32_t)deviceNameLength
- AndUniqueID:(char*)deviceUniqueID
- WithLength:(uint32_t)deviceUniqueIDLength
- AndProductID:(char*)deviceProductID
- WithLength:(uint32_t)deviceProductIDLength
-{
- if(NO == _OSSupportedInfo)
- {
- return [NSNumber numberWithInt:0];
- }
-
- if(index >= (uint32_t)_captureDeviceCountInfo)
- {
- return [NSNumber numberWithInt:-1];
- }
-
- QTCaptureDevice* tempCaptureDevice =
- (QTCaptureDevice*)[_captureDevicesInfo objectAtIndex:index];
- if(!tempCaptureDevice)
- {
- return [NSNumber numberWithInt:-1];
- }
-
- memset(deviceName, 0, deviceNameLength);
- memset(deviceUniqueID, 0, deviceUniqueIDLength);
-
- bool successful = NO;
-
- NSString* tempString = [tempCaptureDevice localizedDisplayName];
- successful = [tempString getCString:(char*)deviceName
- maxLength:deviceNameLength encoding:NSUTF8StringEncoding];
- if(NO == successful)
- {
- memset(deviceName, 0, deviceNameLength);
- return [NSNumber numberWithInt:-1];
- }
-
- tempString = [tempCaptureDevice uniqueID];
- successful = [tempString getCString:(char*)deviceUniqueID
- maxLength:deviceUniqueIDLength encoding:NSUTF8StringEncoding];
- if(NO == successful)
- {
- memset(deviceUniqueID, 0, deviceNameLength);
- return [NSNumber numberWithInt:-1];
- }
-
- return [NSNumber numberWithInt:0];
-
-}
-
-// ****************** "private" category functions below here ******************
-#pragma mark **** "private" method implementations
-
-- (NSNumber*)initializeVariables
-{
- if(NO == _OSSupportedInfo)
- {
- return [NSNumber numberWithInt:0];
- }
-
- _poolInfo = [[NSAutoreleasePool alloc]init];
- _captureDeviceCountInfo = 0;
- [self getCaptureDevices];
-
- return [NSNumber numberWithInt:0];
-}
-
-// ***** Checks to see if the QTCaptureSession framework is available in the OS
-// ***** If it is not, isOSSupprted = NO
-// ***** Throughout the rest of the class isOSSupprted is checked and functions
-// ***** are/aren't called depending
-// ***** The user can use weak linking to the QTKit framework and run on older
-// ***** versions of the OS
-// ***** I.E. Backwards compaitibility
-// ***** Returns nothing. Sets member variable
-- (void)checkOSSupported
-{
- Class osSupportedTest = NSClassFromString(@"QTCaptureSession");
- if(nil == osSupportedTest)
- {
- _OSSupportedInfo = NO;
- }
- else
- {
- _OSSupportedInfo = YES;
- }
-}
-
-/// ***** Retrieves the number of capture devices currently available
-/// ***** Stores them in an NSArray instance
-/// ***** Returns 0 on success, -1 otherwise.
-- (NSNumber*)getCaptureDevices
-{
- if(NO == _OSSupportedInfo)
- {
- return [NSNumber numberWithInt:0];
- }
-
- if(_captureDevicesInfo)
- {
- [_captureDevicesInfo release];
- }
- _captureDevicesInfo = [[NSArray alloc]
- initWithArray:[QTCaptureDevice
- inputDevicesWithMediaType:QTMediaTypeVideo]];
-
- _captureDeviceCountInfo = _captureDevicesInfo.count;
-
- return [NSNumber numberWithInt:0];
-}
-
-@end
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.h b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.h
deleted file mode 100644
index 5007600..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_objc.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2011 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.
- */
-
-//
-// video_capture_qtkit_objc.h
-//
-//
-
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_OBJC_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_OBJC_H_
-
-#import <AppKit/AppKit.h>
-#import <CoreData/CoreData.h>
-#import <CoreFoundation/CoreFoundation.h>
-#import <CoreVideo/CoreVideo.h>
-#import <Foundation/Foundation.h>
-#import <QTKit/QTKit.h>
-
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.h"
-
-@interface VideoCaptureMacQTKitObjC : NSObject {
- bool _capturing;
- int _frameRate;
- int _frameWidth;
- int _frameHeight;
- int _framesDelivered;
- int _framesRendered;
- bool _captureInitialized;
-
- webrtc::videocapturemodule::VideoCaptureMacQTKit* _owner;
- NSLock* _lock;
-
- QTCaptureSession* _captureSession;
- QTCaptureDeviceInput* _captureVideoDeviceInput;
- QTCaptureDecompressedVideoOutput* _captureDecompressedVideoOutput;
- NSArray* _captureDevices;
- int _captureDeviceCount;
- char _captureDeviceNameUTF8[1024];
- char _captureDeviceNameUniqueID[1024];
-}
-
-- (void)getCaptureDevices;
-- (BOOL)initializeVideoCapture;
-- (BOOL)initializeVariables;
-
-- (void)registerOwner:(webrtc::videocapturemodule::VideoCaptureMacQTKit*)owner;
-- (BOOL)setCaptureDeviceById:(char*)uniqueId;
-- (void)setCaptureHeight:(int)height width:(int)width frameRate:(int)frameRate;
-- (void)startCapture;
-- (void)stopCapture;
-
-@end
-
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_OBJC_H_
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 53e9db7..0000000
--- 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
diff --git a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h b/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h
deleted file mode 100644
index 5ef0b96..0000000
--- a/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2011 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.
- */
-
-/*
- * video_capture_qtkit_utility.h
- *
- */
-
-
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_UTILITY_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_UTILITY_H_
-
-#define MAX_NAME_LENGTH 1024
-
-#define QTKIT_MIN_WIDTH 0
-#define QTKIT_MAX_WIDTH 2560
-#define QTKIT_DEFAULT_WIDTH 352
-
-#define QTKIT_MIN_HEIGHT 0
-#define QTKIT_MAX_HEIGHT 1440
-#define QTKIT_DEFAULT_HEIGHT 288
-
-#define QTKIT_MIN_FRAME_RATE 1
-#define QTKIT_MAX_FRAME_RATE 60
-#define QTKIT_DEFAULT_FRAME_RATE 30
-
-#define RELEASE_AND_CLEAR(p) if (p) { (p) -> Release () ; (p) = NULL ; }
-
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_UTILITY_H_
diff --git a/webrtc/modules/video_capture/mac/video_capture_mac.mm b/webrtc/modules/video_capture/mac/video_capture_mac.mm
deleted file mode 100644
index 08b2aeb..0000000
--- a/webrtc/modules/video_capture/mac/video_capture_mac.mm
+++ /dev/null
@@ -1,252 +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.
- */
-
-/*
- * video_capture_mac.cc
- *
- */
-
-#include <QuickTime/QuickTime.h>
-
-#include "webrtc/base/refcount.h"
-#include "webrtc/base/scoped_ref_ptr.h"
-#include "webrtc/modules/video_capture/device_info_impl.h"
-#include "webrtc/modules/video_capture/video_capture_config.h"
-#include "webrtc/modules/video_capture/video_capture_impl.h"
-#include "webrtc/system_wrappers/include/trace.h"
-
-// 10.4 support must be decided runtime. We will just decide which framework to
-// use at compile time "work" classes. One for QTKit, one for QuickTime
-#if __MAC_OS_X_VERSION_MIN_REQUIRED == __MAC_10_4 // QuickTime version
-#include <QuickTime/video_capture_quick_time.h>
-#include <QuickTime/video_capture_quick_time_info.h>
-#else
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.h"
-#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_info.h"
-#endif
-
-namespace webrtc
-{
-namespace videocapturemodule
-{
-
-// static
-bool CheckOSVersion()
-{
- // Check OSX version
- OSErr err = noErr;
-
- SInt32 version;
-
- err = Gestalt(gestaltSystemVersion, &version);
- if (err != noErr)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
- "Could not get OS version");
- return false;
- }
-
- if (version < 0x00001040) // Older version than Mac OSX 10.4
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
- "OS version too old: 0x%x", version);
- return false;
- }
-
- WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCapture, 0,
- "OS version compatible: 0x%x", version);
-
- return true;
-}
-
-// static
-bool CheckQTVersion()
-{
- // Check OSX version
- OSErr err = noErr;
-
- SInt32 version;
-
- err = Gestalt(gestaltQuickTime, &version);
- if (err != noErr)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
- "Could not get QuickTime version");
- return false;
- }
-
- if (version < 0x07000000) // QT v. 7.x or newer (QT 5.0.2 0x05020000)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
- "QuickTime version too old: 0x%x", version);
- return false;
- }
-
- WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCapture, 0,
- "QuickTime version compatible: 0x%x", version);
- return true;
-}
-
-/**************************************************************************
- *
- * Create/Destroy a VideoCaptureModule
- *
- ***************************************************************************/
-
-/*
- * Returns version of the module and its components
- *
- * version - buffer to which the version will be written
- * remainingBufferInBytes - remaining number of int8_t in the version
- * buffer
- * position - position of the next empty int8_t in the
- * version buffer
- */
-
-rtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create(
- const int32_t id,
- const char* deviceUniqueIdUTF8) {
- if (!CheckOSVersion()) {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "OS version is too old. Could not create video capture "
- "module. Returning NULL");
- return nullptr;
- }
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED == __MAC_10_4 // QuickTime version
- if (!CheckQTVersion())
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "QuickTime version is too old. Could not create video "
- "capture module. Returning NULL");
- return nullptr;
- }
-
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "%s line %d. QTKit is not supported on this machine. Using "
- "QuickTime framework to capture video",
- __FILE__, __LINE__);
-
- rtc::scoped_refptr<VideoCaptureMacQuickTime> newCaptureModule(
- new rtc::RefCountedObject<VideoCaptureMacQuickTime>(id));
-
- if (newCaptureModule->Init(id, deviceUniqueIdUTF8) != 0)
- {
- WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCapture, id,
- "could not Create for unique device %s, "
- "newCaptureModule->Init()!=0",
- deviceUniqueIdUTF8);
- return nullptr;
- }
-
- // Successfully created VideoCaptureMacQuicktime. Return it
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "Module created for unique device %s. Will use QuickTime "
- "framework to capture",
- deviceUniqueIdUTF8);
- return newCaptureModule;
-
-#else // QTKit version
-
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "Using QTKit framework to capture video", id);
-
- rtc::scoped_refptr<VideoCaptureMacQTKit> newCaptureModule(
- new rtc::RefCountedObject<VideoCaptureMacQTKit>(id));
-
- if(newCaptureModule->Init(id, deviceUniqueIdUTF8) != 0)
- {
- WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCapture, id,
- "could not Create for unique device %s, "
- "newCaptureModule->Init()!=0", deviceUniqueIdUTF8);
- return nullptr;
- }
-
- // Successfully created VideoCaptureMacQuicktime. Return it
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "Module created for unique device %s, will use QTKit "
- "framework",deviceUniqueIdUTF8);
- return newCaptureModule;
-#endif
-}
-
-/**************************************************************************
- *
- * Create/Destroy a DeviceInfo
- *
- ***************************************************************************/
-
-VideoCaptureModule::DeviceInfo*
-VideoCaptureImpl::CreateDeviceInfo(const int32_t id)
-{
-
-
- if (webrtc::videocapturemodule::CheckOSVersion() == false)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "OS version is too old. Could not create video capture "
- "module. Returning NULL");
- return NULL;
- }
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED == __MAC_10_4 // QuickTime version
- if (webrtc::videocapturemodule::CheckQTVersion() == false)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, id,
- "QuickTime version is too old. Could not create video "
- "capture module. Returning NULL");
- return NULL;
- }
-
- webrtc::videocapturemodule::VideoCaptureMacQuickTimeInfo* newCaptureInfoModule =
- new webrtc::videocapturemodule::VideoCaptureMacQuickTimeInfo(id);
-
- if (!newCaptureInfoModule || newCaptureInfoModule->Init() != 0)
- {
- Destroy(newCaptureInfoModule);
- newCaptureInfoModule = NULL;
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "Failed to Init newCaptureInfoModule created with id %d "
- "and device \"\" ", id);
- return NULL;
- }
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "VideoCaptureModule created for id", id);
- return newCaptureInfoModule;
-
-#else // QTKit version
- webrtc::videocapturemodule::VideoCaptureMacQTKitInfo* newCaptureInfoModule =
- new webrtc::videocapturemodule::VideoCaptureMacQTKitInfo(id);
-
- if(!newCaptureInfoModule || newCaptureInfoModule->Init() != 0)
- {
- //Destroy(newCaptureInfoModule);
- delete newCaptureInfoModule;
- newCaptureInfoModule = NULL;
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "Failed to Init newCaptureInfoModule created with id %d "
- "and device \"\" ", id);
- return NULL;
- }
- WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideoCapture, id,
- "VideoCaptureModule created for id", id);
- return newCaptureInfoModule;
-
-#endif
-
-}
-
-/**************************************************************************
- *
- * End Create/Destroy VideoCaptureModule
- *
- ***************************************************************************/
-} // namespace videocapturemodule
-} // namespace webrtc
diff --git a/webrtc/modules/video_capture/ios/device_info_ios.h b/webrtc/modules/video_capture/objc/device_info.h
similarity index 91%
rename from webrtc/modules/video_capture/ios/device_info_ios.h
rename to webrtc/modules/video_capture/objc/device_info.h
index 6af7c33..bec5c69 100644
--- a/webrtc/modules/video_capture/ios/device_info_ios.h
+++ b/webrtc/modules/video_capture/objc/device_info.h
@@ -8,12 +8,13 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_IOS_DEVICE_INFO_IOS_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_IOS_DEVICE_INFO_IOS_H_
+#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_DEVICE_INFO_H_
+#define WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_DEVICE_INFO_H_
#include "webrtc/modules/video_capture/device_info_impl.h"
#include <map>
+#include <string>
namespace webrtc {
namespace videocapturemodule {
@@ -57,4 +58,4 @@
} // namespace videocapturemodule
} // namespace webrtc
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_IOS_DEVICE_INFO_IOS_H_
+#endif // WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_DEVICE_INFO_H_
diff --git a/webrtc/modules/video_capture/ios/device_info_ios.mm b/webrtc/modules/video_capture/objc/device_info.mm
similarity index 81%
rename from webrtc/modules/video_capture/ios/device_info_ios.mm
rename to webrtc/modules/video_capture/objc/device_info.mm
index 307e5d3..2535f1c 100644
--- a/webrtc/modules/video_capture/ios/device_info_ios.mm
+++ b/webrtc/modules/video_capture/objc/device_info.mm
@@ -16,26 +16,22 @@
#include <string>
-#include "webrtc/modules/video_capture/ios/device_info_ios.h"
-#include "webrtc/modules/video_capture/ios/device_info_ios_objc.h"
+#include "webrtc/modules/video_capture/objc/device_info.h"
+#include "webrtc/modules/video_capture/objc/device_info_objc.h"
#include "webrtc/modules/video_capture/video_capture_impl.h"
#include "webrtc/system_wrappers/include/trace.h"
using namespace webrtc;
using namespace videocapturemodule;
-static NSArray *camera_presets = @[AVCaptureSessionPreset352x288,
- AVCaptureSessionPreset640x480,
- AVCaptureSessionPreset1280x720,
- AVCaptureSessionPreset1920x1080];
+static NSArray* camera_presets = @[
+ AVCaptureSessionPreset352x288, AVCaptureSessionPreset640x480,
+ AVCaptureSessionPreset1280x720
+];
-
-#define IOS_UNSUPPORTED() \
- WEBRTC_TRACE(kTraceError, \
- kTraceVideoCapture, \
- _id, \
- "%s is not supported on the iOS platform.", \
- __FUNCTION__); \
+#define IOS_UNSUPPORTED() \
+ WEBRTC_TRACE(kTraceError, kTraceVideoCapture, _id, \
+ "%s is not supported on the iOS platform.", __FUNCTION__); \
return -1;
VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo(
@@ -56,10 +52,10 @@
int deviceCount = [DeviceInfoIosObjC captureDeviceCount];
for (int i = 0; i < deviceCount; i++) {
- AVCaptureDevice *avDevice = [DeviceInfoIosObjC captureDeviceForIndex:i];
+ AVCaptureDevice* avDevice = [DeviceInfoIosObjC captureDeviceForIndex:i];
VideoCaptureCapabilities capabilityVector;
- for (NSString *preset in camera_presets) {
+ for (NSString* preset in camera_presets) {
BOOL support = [avDevice supportsAVCaptureSessionPreset:preset];
if (support) {
VideoCaptureCapability capability =
@@ -73,8 +69,8 @@
this->GetDeviceName(i, deviceNameUTF8, 256, deviceId, 256);
std::string deviceIdCopy(deviceId);
std::pair<std::string, VideoCaptureCapabilities> mapPair =
- std::pair<std::string, VideoCaptureCapabilities>
- (deviceIdCopy, capabilityVector);
+ std::pair<std::string, VideoCaptureCapabilities>(deviceIdCopy,
+ capabilityVector);
_capabilitiesMap.insert(mapPair);
}
@@ -100,9 +96,7 @@
strncpy(deviceNameUTF8, [deviceName UTF8String], deviceNameUTF8Length);
deviceNameUTF8[deviceNameUTF8Length - 1] = '\0';
- strncpy(deviceUniqueIdUTF8,
- [deviceUniqueId UTF8String],
- deviceUniqueIdUTF8Length);
+ strncpy(deviceUniqueIdUTF8, deviceUniqueId.UTF8String, deviceUniqueIdUTF8Length);
deviceUniqueIdUTF8[deviceUniqueIdUTF8Length - 1] = '\0';
if (productUniqueIdUTF8) {
diff --git a/webrtc/modules/video_capture/ios/device_info_ios_objc.h b/webrtc/modules/video_capture/objc/device_info_objc.h
similarity index 82%
rename from webrtc/modules/video_capture/ios/device_info_ios_objc.h
rename to webrtc/modules/video_capture/objc/device_info_objc.h
index d67b559..b5db689 100644
--- a/webrtc/modules/video_capture/ios/device_info_ios_objc.h
+++ b/webrtc/modules/video_capture/objc/device_info_objc.h
@@ -8,8 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_IOS_DEVICE_INFO_IOS_OBJC_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_IOS_DEVICE_INFO_IOS_OBJC_H_
+#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_DEVICE_INFO_OBJC_H_
+#define WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_DEVICE_INFO_OBJC_H_
#import <AVFoundation/AVFoundation.h>
@@ -26,4 +26,4 @@
@end
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_IOS_DEVICE_INFO_IOS_OBJC_H_
+#endif // WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_DEVICE_INFO_OBJC_H_
diff --git a/webrtc/modules/video_capture/ios/device_info_ios_objc.mm b/webrtc/modules/video_capture/objc/device_info_objc.mm
similarity index 86%
rename from webrtc/modules/video_capture/ios/device_info_ios_objc.mm
rename to webrtc/modules/video_capture/objc/device_info_objc.mm
index 818f862..d46fa5c 100644
--- a/webrtc/modules/video_capture/ios/device_info_ios_objc.mm
+++ b/webrtc/modules/video_capture/objc/device_info_objc.mm
@@ -14,7 +14,7 @@
#import <AVFoundation/AVFoundation.h>
-#import "webrtc/modules/video_capture/ios/device_info_ios_objc.h"
+#import "webrtc/modules/video_capture/objc/device_info_objc.h"
#include "webrtc/modules/video_capture/video_capture_config.h"
@implementation DeviceInfoIosObjC
@@ -83,15 +83,6 @@
capability.rawType = webrtc::kVideoNV12;
capability.codecType = webrtc::kVideoCodecUnknown;
capability.interlaced = false;
- } else if ([preset isEqualToString:AVCaptureSessionPreset1920x1080]) {
- capability.width = 1920;
- capability.height = 1080;
- capability.maxFPS = 30;
- capability.expectedCaptureDelay =
- webrtc::videocapturemodule::kDefaultCaptureDelay;
- capability.rawType = webrtc::kVideoNV12;
- capability.codecType = webrtc::kVideoCodecUnknown;
- capability.interlaced = false;
}
return capability;
diff --git a/webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.h b/webrtc/modules/video_capture/objc/rtc_video_capture_objc.h
similarity index 77%
rename from webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.h
rename to webrtc/modules/video_capture/objc/rtc_video_capture_objc.h
index 2653958..e108ee1 100644
--- a/webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.h
+++ b/webrtc/modules/video_capture/objc/rtc_video_capture_objc.h
@@ -8,13 +8,15 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_IOS_VIDEO_CAPTURE_IOS_OBJC_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_IOS_VIDEO_CAPTURE_IOS_OBJC_H_
+#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_RTC_VIDEO_CAPTURE_OBJC_H_
+#define WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_RTC_VIDEO_CAPTURE_OBJC_H_
#import <Foundation/Foundation.h>
+#ifdef WEBRTC_IOS
#import <UIKit/UIKit.h>
+#endif
-#include "webrtc/modules/video_capture/ios/video_capture_ios.h"
+#include "webrtc/modules/video_capture/objc/video_capture.h"
// The following class listens to a notification with name:
// 'StatusBarOrientationDidChange'.
@@ -32,8 +34,8 @@
captureId:(int)captureId;
- (BOOL)setCaptureDeviceByUniqueId:(NSString*)uniqueId;
- (BOOL)startCaptureWithCapability:
- (const webrtc::VideoCaptureCapability&)capability;
+ (const webrtc::VideoCaptureCapability&)capability;
- (BOOL)stopCapture;
@end
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_IOS_VIDEO_CAPTURE_IOS_OBJC_H_
+#endif // WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_RTC_VIDEO_CAPTURE_OBJC_H_
diff --git a/webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.mm b/webrtc/modules/video_capture/objc/rtc_video_capture_objc.mm
similarity index 78%
rename from webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.mm
rename to webrtc/modules/video_capture/objc/rtc_video_capture_objc.mm
index f12ff000..4f2f6bb 100644
--- a/webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.mm
+++ b/webrtc/modules/video_capture/objc/rtc_video_capture_objc.mm
@@ -12,10 +12,13 @@
#error "This file requires ARC support."
#endif
+#import <AVFoundation/AVFoundation.h>
+#ifdef WEBRTC_IOS
#import <UIKit/UIKit.h>
+#endif
-#import "webrtc/modules/video_capture/ios/device_info_ios_objc.h"
-#import "webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.h"
+#import "webrtc/modules/video_capture/objc/device_info_objc.h"
+#import "webrtc/modules/video_capture/objc/rtc_video_capture_objc.h"
#include "webrtc/system_wrappers/include/trace.h"
@@ -69,15 +72,12 @@
if ([_captureSession canAddOutput:captureOutput]) {
[_captureSession addOutput:captureOutput];
} else {
- WEBRTC_TRACE(kTraceError,
- kTraceVideoCapture,
- _captureId,
+ WEBRTC_TRACE(kTraceError, kTraceVideoCapture, _captureId,
"%s:%s:%d Could not add output to AVCaptureSession ",
- __FILE__,
- __FUNCTION__,
- __LINE__);
+ __FILE__, __FUNCTION__, __LINE__);
}
+#ifdef WEBRTC_IOS
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
NSNotificationCenter* notify = [NSNotificationCenter defaultCenter];
@@ -89,6 +89,7 @@
selector:@selector(deviceOrientationDidChange:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
+#endif
}
return self;
@@ -141,12 +142,7 @@
return NO;
}
- if ([_captureSession canSetSessionPreset:AVCaptureSessionPreset1920x1080]) {
- if (capability.width > 1920 || capability.height > 1080) {
- return NO;
- }
- } else if ([_captureSession
- canSetSessionPreset:AVCaptureSessionPreset1280x720]) {
+ if ([_captureSession canSetSessionPreset:AVCaptureSessionPreset1280x720]) {
if (capability.width > 1280 || capability.height > 720) {
return NO;
}
@@ -174,9 +170,10 @@
_orientationHasChanged = NO;
_captureChanging = YES;
- dispatch_async(
- dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
- ^(void) { [self startCaptureInBackgroundWithOutput:currentOutput]; });
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
+ ^{
+ [self startCaptureInBackgroundWithOutput:currentOutput];
+ });
return YES;
}
@@ -185,13 +182,10 @@
}
- (void)startCaptureInBackgroundWithOutput:
- (AVCaptureVideoDataOutput*)currentOutput {
+ (AVCaptureVideoDataOutput*)currentOutput {
NSString* captureQuality =
[NSString stringWithString:AVCaptureSessionPresetLow];
- if (_capability.width >= 1920 || _capability.height >= 1080) {
- captureQuality =
- [NSString stringWithString:AVCaptureSessionPreset1920x1080];
- } else if (_capability.width >= 1280 || _capability.height >= 720) {
+ if (_capability.width >= 1280 || _capability.height >= 720) {
captureQuality = [NSString stringWithString:AVCaptureSessionPreset1280x720];
} else if (_capability.width >= 640 || _capability.height >= 480) {
captureQuality = [NSString stringWithString:AVCaptureSessionPreset640x480];
@@ -205,30 +199,6 @@
// picture resolution
[_captureSession setSessionPreset:captureQuality];
- // take care of capture framerate now
- NSArray* sessionInputs = _captureSession.inputs;
- AVCaptureDeviceInput* deviceInput = [sessionInputs count] > 0 ?
- sessionInputs[0] : nil;
- AVCaptureDevice* inputDevice = deviceInput.device;
- if (inputDevice) {
- AVCaptureDeviceFormat* activeFormat = inputDevice.activeFormat;
- NSArray* supportedRanges = activeFormat.videoSupportedFrameRateRanges;
- AVFrameRateRange* targetRange = [supportedRanges count] > 0 ?
- supportedRanges[0] : nil;
- // Find the largest supported framerate less than capability maxFPS.
- for (AVFrameRateRange* range in supportedRanges) {
- if (range.maxFrameRate <= _capability.maxFPS &&
- targetRange.maxFrameRate <= range.maxFrameRate) {
- targetRange = range;
- }
- }
- if (targetRange && [inputDevice lockForConfiguration:NULL]) {
- inputDevice.activeVideoMinFrameDuration = targetRange.minFrameDuration;
- inputDevice.activeVideoMaxFrameDuration = targetRange.minFrameDuration;
- [inputDevice unlockForConfiguration];
- }
- }
-
_connection = [currentOutput connectionWithMediaType:AVMediaTypeVideo];
[self setRelativeVideoOrientation];
@@ -243,49 +213,47 @@
if (!_connection.supportsVideoOrientation) {
return;
}
-
+#ifndef WEBRTC_IOS
+ _connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight;
+ return;
+#else
switch ([UIDevice currentDevice].orientation) {
case UIDeviceOrientationPortrait:
- _connection.videoOrientation =
- AVCaptureVideoOrientationPortrait;
+ _connection.videoOrientation = AVCaptureVideoOrientationPortrait;
break;
case UIDeviceOrientationPortraitUpsideDown:
_connection.videoOrientation =
AVCaptureVideoOrientationPortraitUpsideDown;
break;
case UIDeviceOrientationLandscapeLeft:
- _connection.videoOrientation =
- AVCaptureVideoOrientationLandscapeRight;
+ _connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight;
break;
case UIDeviceOrientationLandscapeRight:
- _connection.videoOrientation =
- AVCaptureVideoOrientationLandscapeLeft;
+ _connection.videoOrientation = AVCaptureVideoOrientationLandscapeLeft;
break;
case UIDeviceOrientationFaceUp:
case UIDeviceOrientationFaceDown:
case UIDeviceOrientationUnknown:
if (!_orientationHasChanged) {
- _connection.videoOrientation =
- AVCaptureVideoOrientationPortrait;
+ _connection.videoOrientation = AVCaptureVideoOrientationPortrait;
}
break;
}
+#endif
}
- (void)onVideoError:(NSNotification*)notification {
NSLog(@"onVideoError: %@", notification);
// TODO(sjlee): make the specific error handling with this notification.
- WEBRTC_TRACE(kTraceError,
- kTraceVideoCapture,
- _captureId,
- "%s:%s:%d [AVCaptureSession startRunning] error.",
- __FILE__,
- __FUNCTION__,
- __LINE__);
+ WEBRTC_TRACE(kTraceError, kTraceVideoCapture, _captureId,
+ "%s:%s:%d [AVCaptureSession startRunning] error.", __FILE__,
+ __FUNCTION__, __LINE__);
}
- (BOOL)stopCapture {
+#ifdef WEBRTC_IOS
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
+#endif
_orientationHasChanged = NO;
[self waitForCaptureChangeToFinish];
[self directOutputToNil];
@@ -296,7 +264,9 @@
_captureChanging = YES;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
- ^(void) { [self stopCaptureInBackground]; });
+ ^(void) {
+ [self stopCaptureInBackground];
+ });
return YES;
}
@@ -339,14 +309,9 @@
if (!newCaptureInput) {
const char* errorMessage = [[deviceError localizedDescription] UTF8String];
- WEBRTC_TRACE(kTraceError,
- kTraceVideoCapture,
- _captureId,
- "%s:%s:%d deviceInputWithDevice error:%s",
- __FILE__,
- __FUNCTION__,
- __LINE__,
- errorMessage);
+ WEBRTC_TRACE(kTraceError, kTraceVideoCapture, _captureId,
+ "%s:%s:%d deviceInputWithDevice error:%s", __FILE__,
+ __FUNCTION__, __LINE__, errorMessage);
return NO;
}
diff --git a/webrtc/modules/video_capture/ios/video_capture_ios.h b/webrtc/modules/video_capture/objc/video_capture.h
similarity index 86%
rename from webrtc/modules/video_capture/ios/video_capture_ios.h
rename to webrtc/modules/video_capture/objc/video_capture.h
index 5172855..1f9f420 100644
--- a/webrtc/modules/video_capture/ios/video_capture_ios.h
+++ b/webrtc/modules/video_capture/objc/video_capture.h
@@ -8,8 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_IOS_VIDEO_CAPTURE_IOS_H_
-#define WEBRTC_MODULES_VIDEO_CAPTURE_IOS_VIDEO_CAPTURE_IOS_H_
+#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_VIDEO_CAPTURE_H_
+#define WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_VIDEO_CAPTURE_H_
#include "webrtc/base/scoped_ref_ptr.h"
#include "webrtc/modules/video_capture/video_capture_impl.h"
@@ -43,4 +43,4 @@
} // namespace videocapturemodule
} // namespace webrtc
-#endif // WEBRTC_MODULES_VIDEO_CAPTURE_IOS_VIDEO_CAPTURE_IOS_H_
+#endif // WEBRTC_MODULES_VIDEO_CAPTURE_OBJC_VIDEO_CAPTURE_H_
diff --git a/webrtc/modules/video_capture/ios/video_capture_ios.mm b/webrtc/modules/video_capture/objc/video_capture.mm
similarity index 86%
rename from webrtc/modules/video_capture/ios/video_capture_ios.mm
rename to webrtc/modules/video_capture/objc/video_capture.mm
index 7a1f17b..e73b47a 100644
--- a/webrtc/modules/video_capture/ios/video_capture_ios.mm
+++ b/webrtc/modules/video_capture/objc/video_capture.mm
@@ -14,8 +14,8 @@
#include "webrtc/base/refcount.h"
#include "webrtc/base/scoped_ref_ptr.h"
-#include "webrtc/modules/video_capture/ios/device_info_ios_objc.h"
-#include "webrtc/modules/video_capture/ios/rtc_video_capture_ios_objc.h"
+#include "webrtc/modules/video_capture/objc/device_info_objc.h"
+#include "webrtc/modules/video_capture/objc/rtc_video_capture_objc.h"
#include "webrtc/system_wrappers/include/trace.h"
using namespace webrtc;
@@ -67,9 +67,10 @@
return nullptr;
}
- if (![capture_module->capture_device_ setCaptureDeviceByUniqueId:[
- [NSString alloc] initWithCString:deviceUniqueIdUTF8
- encoding:NSUTF8StringEncoding]]) {
+ if (![capture_module->capture_device_
+ setCaptureDeviceByUniqueId:
+ [[NSString alloc] initWithCString:deviceUniqueIdUTF8
+ encoding:NSUTF8StringEncoding]]) {
return nullptr;
}
return capture_module;
@@ -97,7 +98,9 @@
return 0;
}
-bool VideoCaptureIos::CaptureStarted() { return is_capturing_; }
+bool VideoCaptureIos::CaptureStarted() {
+ return is_capturing_;
+}
int32_t VideoCaptureIos::CaptureSettings(VideoCaptureCapability& settings) {
settings = capability_;
diff --git a/webrtc/modules/video_capture/video_capture.gypi b/webrtc/modules/video_capture/video_capture.gypi
index eb10147..9027706 100644
--- a/webrtc/modules/video_capture/video_capture.gypi
+++ b/webrtc/modules/video_capture/video_capture.gypi
@@ -68,29 +68,6 @@
'linux/video_capture_linux.h',
],
}], # linux
- ['OS=="mac"', {
- 'sources': [
- 'mac/qtkit/video_capture_qtkit.h',
- 'mac/qtkit/video_capture_qtkit.mm',
- 'mac/qtkit/video_capture_qtkit_info.h',
- 'mac/qtkit/video_capture_qtkit_info.mm',
- 'mac/qtkit/video_capture_qtkit_info_objc.h',
- 'mac/qtkit/video_capture_qtkit_info_objc.mm',
- 'mac/qtkit/video_capture_qtkit_objc.h',
- 'mac/qtkit/video_capture_qtkit_objc.mm',
- 'mac/qtkit/video_capture_qtkit_utility.h',
- 'mac/video_capture_mac.mm',
- ],
- 'link_settings': {
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-framework Cocoa',
- '-framework CoreVideo',
- '-framework QTKit',
- ],
- },
- },
- }], # mac
['OS=="win"', {
'dependencies': [
'<(DEPTH)/third_party/winsdk_samples/winsdk_samples.gyp:directshow_baseclasses',
@@ -133,16 +110,16 @@
},
},
}],
- ['OS=="ios"', {
+ ['OS=="ios" or OS=="mac"', {
'sources': [
- 'ios/device_info_ios.h',
- 'ios/device_info_ios.mm',
- 'ios/device_info_ios_objc.h',
- 'ios/device_info_ios_objc.mm',
- 'ios/rtc_video_capture_ios_objc.h',
- 'ios/rtc_video_capture_ios_objc.mm',
- 'ios/video_capture_ios.h',
- 'ios/video_capture_ios.mm',
+ 'objc/device_info.h',
+ 'objc/device_info.mm',
+ 'objc/device_info_objc.h',
+ 'objc/device_info_objc.mm',
+ 'objc/rtc_video_capture_objc.h',
+ 'objc/rtc_video_capture_objc.mm',
+ 'objc/video_capture.h',
+ 'objc/video_capture.mm',
],
'xcode_settings': {
'CLANG_ENABLE_OBJC_ARC': 'YES',
@@ -153,6 +130,14 @@
'-framework AVFoundation',
'-framework CoreMedia',
'-framework CoreVideo',
+ ],
+ },
+ },
+ }], # ios
+ ['OS=="ios"', {
+ 'all_dependent_settings': {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
'-framework UIKit',
],
},