summaryrefslogtreecommitdiffstats
path: root/src/plugins/avfoundation/camera/avfvideodevicecontrol.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/avfoundation/camera/avfvideodevicecontrol.mm')
-rw-r--r--src/plugins/avfoundation/camera/avfvideodevicecontrol.mm35
1 files changed, 16 insertions, 19 deletions
diff --git a/src/plugins/avfoundation/camera/avfvideodevicecontrol.mm b/src/plugins/avfoundation/camera/avfvideodevicecontrol.mm
index 776707549..d049859c3 100644
--- a/src/plugins/avfoundation/camera/avfvideodevicecontrol.mm
+++ b/src/plugins/avfoundation/camera/avfvideodevicecontrol.mm
@@ -42,6 +42,7 @@
#include "avfcameradebug.h"
#include "avfvideodevicecontrol.h"
#include "avfcameraservice.h"
+#include "avfcamerasession.h"
QT_USE_NAMESPACE
@@ -50,18 +51,7 @@ AVFVideoDeviceControl::AVFVideoDeviceControl(AVFCameraService *service, QObject
, m_service(service)
, m_selectedDevice(0)
, m_dirty(true)
- , m_defaultDevice(0)
{
- AVCaptureDevice *defaultDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
- NSArray *videoDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
- int i = 0;
- for (AVCaptureDevice *device in videoDevices) {
- m_devices << QString::fromUtf8([[device uniqueID] UTF8String]);
- m_deviceDescriptions << QString::fromUtf8([[device localizedName] UTF8String]);
- if (defaultDevice && [[device uniqueID] isEqualToString:[defaultDevice uniqueID]])
- m_defaultDevice = i;
- ++i;
- }
}
AVFVideoDeviceControl::~AVFVideoDeviceControl()
@@ -70,22 +60,30 @@ AVFVideoDeviceControl::~AVFVideoDeviceControl()
int AVFVideoDeviceControl::deviceCount() const
{
- return m_devices.size();
+ return AVFCameraSession::availableCameraDevices().count();
}
QString AVFVideoDeviceControl::deviceName(int index) const
{
- return m_devices[index];
+ const QList<QByteArray> &devices = AVFCameraSession::availableCameraDevices();
+ if (index >= devices.count())
+ return QString();
+
+ return QString::fromUtf8(devices.at(index));
}
QString AVFVideoDeviceControl::deviceDescription(int index) const
{
- return m_deviceDescriptions[index];
+ const QList<QByteArray> &devices = AVFCameraSession::availableCameraDevices();
+ if (index >= devices.count())
+ return QString();
+
+ return AVFCameraSession::cameraDeviceInfo(devices.at(index)).description;
}
int AVFVideoDeviceControl::defaultDevice() const
{
- return m_defaultDevice;
+ return AVFCameraSession::availableCameraDevices().indexOf(AVFCameraSession::defaultCameraDevice());
}
int AVFVideoDeviceControl::selectedDevice() const
@@ -99,7 +97,7 @@ void AVFVideoDeviceControl::setSelectedDevice(int index)
m_dirty = true;
m_selectedDevice = index;
Q_EMIT selectedDeviceChanged(index);
- Q_EMIT selectedDeviceChanged(m_devices[index]);
+ Q_EMIT selectedDeviceChanged(deviceName(index));
}
}
@@ -108,9 +106,8 @@ AVCaptureDevice *AVFVideoDeviceControl::createCaptureDevice()
m_dirty = false;
AVCaptureDevice *device = 0;
- if (!m_devices.isEmpty()) {
- QString deviceId = m_devices.at(m_selectedDevice);
-
+ QString deviceId = deviceName(m_selectedDevice);
+ if (!deviceId.isEmpty()) {
device = [AVCaptureDevice deviceWithUniqueID:
[NSString stringWithUTF8String:
deviceId.toUtf8().constData()]];