Browse Source

Implemented enumeration of video devices.

pull/2715/head
Andrew Novikov 10 years ago committed by tux3
parent
commit
cf6623cfc8
No known key found for this signature in database
GPG Key ID: 7E086DD661263264
  1. 8
      qtox.pro
  2. 37
      src/platform/camera/avfoundation.h
  3. 42
      src/platform/camera/avfoundation.mm
  4. 7
      src/video/cameradevice.cpp

8
qtox.pro

@ -159,7 +159,7 @@ win32 { @@ -159,7 +159,7 @@ win32 {
ICON = img/icons/qtox.icns
QMAKE_INFO_PLIST = osx/info.plist
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -ltoxencryptsave -ltoxdns -lsodium -lvpx -lopus -framework OpenAL -lavformat -lavdevice -lavcodec -lavutil -lswscale -mmacosx-version-min=10.7
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -ltoxencryptsave -ltoxdns -lsodium -lvpx -lopus -framework OpenAL -lavformat -lavdevice -lavcodec -lavutil -lswscale -framework AVFoundation -framework Foundation -mmacosx-version-min=10.7
LIBS += -lqrencode -lsqlcipher
contains(DEFINES, QTOX_PLATFORM_EXT) { LIBS += -framework IOKit -framework CoreFoundation }
contains(DEFINES, QTOX_FILTER_AUDIO) { LIBS += -lfilteraudio }
@ -462,7 +462,11 @@ macx { @@ -462,7 +462,11 @@ macx {
src/platform/install_osx.cpp
HEADERS += \
src/platform/install_osx.h
src/platform/install_osx.h \
src/platform/camera/avfoundation.h
OBJECTIVE_SOURCES += \
src/platform/camera/avfoundation.mm
}
SOURCES += \

37
src/platform/camera/avfoundation.h

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
/*
Copyright © 2015 by The qTox Project
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef AVFOUNDATION_H
#define AVFOUNDATION_H
#include <QString>
#include <QVector>
#include <QPair>
#include "src/video/videomode.h"
#ifndef Q_OS_MACX
#error "This file is only meant to be compiled for Mac OS X targets"
#endif
namespace avfoundation
{
QVector<VideoMode> getDeviceModes(QString devName);
QVector<QPair<QString, QString>> getDeviceList();
}
#endif // AVFOUNDATION_H

42
src/platform/camera/avfoundation.mm

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
/*
Copyright (c) 2014 Thilo Borgmann <thilo.borgmann@mail.de>
Copyright © 2015 by The qTox Project
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#include "avfoundation.h"
#import <AVFoundation/AVFoundation.h>
QVector<QPair<QString, QString> > avfoundation::getDeviceList()
{
QVector<QPair<QString, QString> > result;
NSArray* devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice* device in devices) {
result.append({ QString::number([devices indexOfObject:device]), [[device localizedName] UTF8String] });
}
return result;
}
QVector<VideoMode> avfoundation::getDeviceModes(QString devName)
{
QVector<VideoMode> result;
return result;
}

7
src/video/cameradevice.cpp

@ -34,6 +34,9 @@ extern "C" { @@ -34,6 +34,9 @@ extern "C" {
#ifdef Q_OS_LINUX
#include "src/platform/camera/v4l2.h"
#endif
#ifdef Q_OS_OSX
#include "src/platform/camera/avfoundation.h"
#endif
QHash<QString, CameraDevice*> CameraDevice::openDevices;
QMutex CameraDevice::openDeviceLock, CameraDevice::iformatLock;
@ -281,6 +284,10 @@ QVector<QPair<QString, QString>> CameraDevice::getDeviceList() @@ -281,6 +284,10 @@ QVector<QPair<QString, QString>> CameraDevice::getDeviceList()
#ifdef Q_OS_LINUX
else if (iformat->name == QString("video4linux2,v4l2"))
devices += v4l2::getDeviceList();
#endif
#ifdef Q_OS_OSX
else if (iformat->name == QString("avfoundation"))
devices += avfoundation::getDeviceList();
#endif
else
devices += getRawDeviceListGeneric();

Loading…
Cancel
Save