Blackberry: Add camera support for BB10 platform
Reimplement all camera related controls as they are supported by the BB10 camera API. Change-Id: Ie7d2258be22c1c1821489bd7074b80cff4242afa Reviewed-by: Bernd Weimer <bweimer@rim.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
This commit is contained in:
committed by
The Qt Project
parent
7c1d490d1a
commit
36655ccdfb
@@ -39,7 +39,12 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include "bbserviceplugin.h"
|
#include "bbserviceplugin.h"
|
||||||
|
|
||||||
|
#include "bbcameraservice.h"
|
||||||
#include "bbmediaplayerservice.h"
|
#include "bbmediaplayerservice.h"
|
||||||
|
#include "bbvideodeviceselectorcontrol.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
@@ -49,6 +54,9 @@ BbServicePlugin::BbServicePlugin()
|
|||||||
|
|
||||||
QMediaService *BbServicePlugin::create(const QString &key)
|
QMediaService *BbServicePlugin::create(const QString &key)
|
||||||
{
|
{
|
||||||
|
if (key == QLatin1String(Q_MEDIASERVICE_CAMERA))
|
||||||
|
return new BbCameraService();
|
||||||
|
|
||||||
if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER))
|
if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER))
|
||||||
return new BbMediaPlayerService();
|
return new BbMediaPlayerService();
|
||||||
|
|
||||||
@@ -66,4 +74,39 @@ QMediaServiceProviderHint::Features BbServicePlugin::supportedFeatures(const QBy
|
|||||||
return QMediaServiceProviderHint::Features();
|
return QMediaServiceProviderHint::Features();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<QByteArray> BbServicePlugin::devices(const QByteArray &service) const
|
||||||
|
{
|
||||||
|
if (service == Q_MEDIASERVICE_CAMERA) {
|
||||||
|
if (m_cameraDevices.isEmpty())
|
||||||
|
updateDevices();
|
||||||
|
|
||||||
|
return m_cameraDevices;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QList<QByteArray>();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbServicePlugin::deviceDescription(const QByteArray &service, const QByteArray &device)
|
||||||
|
{
|
||||||
|
if (service == Q_MEDIASERVICE_CAMERA) {
|
||||||
|
if (m_cameraDevices.isEmpty())
|
||||||
|
updateDevices();
|
||||||
|
|
||||||
|
for (int i = 0; i < m_cameraDevices.count(); i++)
|
||||||
|
if (m_cameraDevices[i] == device)
|
||||||
|
return m_cameraDescriptions[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbServicePlugin::updateDevices() const
|
||||||
|
{
|
||||||
|
BbVideoDeviceSelectorControl::enumerateDevices(&m_cameraDevices, &m_cameraDescriptions);
|
||||||
|
|
||||||
|
if (m_cameraDevices.isEmpty()) {
|
||||||
|
qWarning() << "No camera devices found";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|||||||
@@ -47,9 +47,11 @@ QT_BEGIN_NAMESPACE
|
|||||||
|
|
||||||
class BbServicePlugin
|
class BbServicePlugin
|
||||||
: public QMediaServiceProviderPlugin,
|
: public QMediaServiceProviderPlugin,
|
||||||
|
public QMediaServiceSupportedDevicesInterface,
|
||||||
public QMediaServiceFeaturesInterface
|
public QMediaServiceFeaturesInterface
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Q_INTERFACES(QMediaServiceSupportedDevicesInterface)
|
||||||
Q_INTERFACES(QMediaServiceFeaturesInterface)
|
Q_INTERFACES(QMediaServiceFeaturesInterface)
|
||||||
Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "blackberry_mediaservice.json")
|
Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "blackberry_mediaservice.json")
|
||||||
public:
|
public:
|
||||||
@@ -58,6 +60,16 @@ public:
|
|||||||
QMediaService *create(const QString &key) Q_DECL_OVERRIDE;
|
QMediaService *create(const QString &key) Q_DECL_OVERRIDE;
|
||||||
void release(QMediaService *service) Q_DECL_OVERRIDE;
|
void release(QMediaService *service) Q_DECL_OVERRIDE;
|
||||||
QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const Q_DECL_OVERRIDE;
|
QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
QList<QByteArray> devices(const QByteArray &service) const Q_DECL_OVERRIDE;
|
||||||
|
QString deviceDescription(const QByteArray &service, const QByteArray &device) Q_DECL_OVERRIDE;
|
||||||
|
QVariant deviceProperty(const QByteArray &service, const QByteArray &device, const QByteArray &property) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateDevices() const;
|
||||||
|
|
||||||
|
mutable QList<QByteArray> m_cameraDevices;
|
||||||
|
mutable QStringList m_cameraDescriptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ LIBS += -lscreen
|
|||||||
HEADERS += bbserviceplugin.h
|
HEADERS += bbserviceplugin.h
|
||||||
SOURCES += bbserviceplugin.cpp
|
SOURCES += bbserviceplugin.cpp
|
||||||
|
|
||||||
|
include(camera/camera.pri)
|
||||||
include(mediaplayer/mediaplayer.pri)
|
include(mediaplayer/mediaplayer.pri)
|
||||||
|
|
||||||
OTHER_FILES += blackberry_mediaservice.json
|
OTHER_FILES += blackberry_mediaservice.json
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"Keys": ["org.qt-project.qt.mediaplayer"]
|
"Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraaudioencodersettingscontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraAudioEncoderSettingsControl::BbCameraAudioEncoderSettingsControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QAudioEncoderSettingsControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList BbCameraAudioEncoderSettingsControl::supportedAudioCodecs() const
|
||||||
|
{
|
||||||
|
return QStringList() << QLatin1String("none") << QLatin1String("aac") << QLatin1String("raw");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbCameraAudioEncoderSettingsControl::codecDescription(const QString &codecName) const
|
||||||
|
{
|
||||||
|
if (codecName == QLatin1String("none"))
|
||||||
|
return tr("No compression");
|
||||||
|
else if (codecName == QLatin1String("aac"))
|
||||||
|
return tr("AAC compression");
|
||||||
|
else if (codecName == QLatin1String("raw"))
|
||||||
|
return tr("PCM uncompressed");
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<int> BbCameraAudioEncoderSettingsControl::supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(settings);
|
||||||
|
Q_UNUSED(continuous);
|
||||||
|
|
||||||
|
// no API provided by BB10 yet
|
||||||
|
return QList<int>();
|
||||||
|
}
|
||||||
|
|
||||||
|
QAudioEncoderSettings BbCameraAudioEncoderSettingsControl::audioSettings() const
|
||||||
|
{
|
||||||
|
return m_session->audioSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraAudioEncoderSettingsControl::setAudioSettings(const QAudioEncoderSettings &settings)
|
||||||
|
{
|
||||||
|
m_session->setAudioSettings(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAAUDIOENCODERSETTINGSCONTROL_H
|
||||||
|
#define BBCAMERAAUDIOENCODERSETTINGSCONTROL_H
|
||||||
|
|
||||||
|
#include <qaudioencodersettingscontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraAudioEncoderSettingsControl : public QAudioEncoderSettingsControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraAudioEncoderSettingsControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QStringList supportedAudioCodecs() const Q_DECL_OVERRIDE;
|
||||||
|
QString codecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
|
||||||
|
QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
|
||||||
|
QAudioEncoderSettings audioSettings() const Q_DECL_OVERRIDE;
|
||||||
|
void setAudioSettings(const QAudioEncoderSettings &settings) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameracapturebufferformatcontrol.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraCaptureBufferFormatControl::BbCameraCaptureBufferFormatControl(QObject *parent)
|
||||||
|
: QCameraCaptureBufferFormatControl(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QVideoFrame::PixelFormat> BbCameraCaptureBufferFormatControl::supportedBufferFormats() const
|
||||||
|
{
|
||||||
|
return (QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_Jpeg);
|
||||||
|
}
|
||||||
|
|
||||||
|
QVideoFrame::PixelFormat BbCameraCaptureBufferFormatControl::bufferFormat() const
|
||||||
|
{
|
||||||
|
return QVideoFrame::Format_Jpeg;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraCaptureBufferFormatControl::setBufferFormat(QVideoFrame::PixelFormat format)
|
||||||
|
{
|
||||||
|
Q_UNUSED(format)
|
||||||
|
// Do nothing, we support only Jpeg for now
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERACAPTUREBUFFERFORMATCONTROL_H
|
||||||
|
#define BBCAMERACAPTUREBUFFERFORMATCONTROL_H
|
||||||
|
|
||||||
|
#include <qcameracapturebufferformatcontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraCaptureBufferFormatControl : public QCameraCaptureBufferFormatControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraCaptureBufferFormatControl(QObject *parent = 0);
|
||||||
|
|
||||||
|
QList<QVideoFrame::PixelFormat> supportedBufferFormats() const Q_DECL_OVERRIDE;
|
||||||
|
QVideoFrame::PixelFormat bufferFormat() const Q_DECL_OVERRIDE;
|
||||||
|
void setBufferFormat(QVideoFrame::PixelFormat format) Q_DECL_OVERRIDE;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameracapturedestinationcontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraCaptureDestinationControl::BbCameraCaptureDestinationControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraCaptureDestinationControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(captureDestinationChanged(QCameraImageCapture::CaptureDestinations)),
|
||||||
|
this, SIGNAL(captureDestinationChanged(QCameraImageCapture::CaptureDestinations)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraCaptureDestinationControl::isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const
|
||||||
|
{
|
||||||
|
return m_session->isCaptureDestinationSupported(destination);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraImageCapture::CaptureDestinations BbCameraCaptureDestinationControl::captureDestination() const
|
||||||
|
{
|
||||||
|
return m_session->captureDestination();;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraCaptureDestinationControl::setCaptureDestination(QCameraImageCapture::CaptureDestinations destination)
|
||||||
|
{
|
||||||
|
m_session->setCaptureDestination(destination);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERACAPTUREDESTINATIONCONTROL_H
|
||||||
|
#define BBCAMERACAPTUREDESTINATIONCONTROL_H
|
||||||
|
|
||||||
|
#include <qcameracapturedestinationcontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraCaptureDestinationControl : public QCameraCaptureDestinationControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraCaptureDestinationControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const Q_DECL_OVERRIDE;
|
||||||
|
QCameraImageCapture::CaptureDestinations captureDestination() const Q_DECL_OVERRIDE;
|
||||||
|
void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
92
src/plugins/blackberry/camera/bbcameracontrol.cpp
Normal file
92
src/plugins/blackberry/camera/bbcameracontrol.cpp
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameracontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraControl::BbCameraControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(statusChanged(QCamera::Status)), this, SIGNAL(statusChanged(QCamera::Status)));
|
||||||
|
connect(m_session, SIGNAL(stateChanged(QCamera::State)), this, SIGNAL(stateChanged(QCamera::State)));
|
||||||
|
connect(m_session, SIGNAL(error(int,QString)), this, SIGNAL(error(int,QString)));
|
||||||
|
connect(m_session, SIGNAL(captureModeChanged(QCamera::CaptureModes)), this, SIGNAL(captureModeChanged(QCamera::CaptureModes)));
|
||||||
|
}
|
||||||
|
|
||||||
|
QCamera::State BbCameraControl::state() const
|
||||||
|
{
|
||||||
|
return m_session->state();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraControl::setState(QCamera::State state)
|
||||||
|
{
|
||||||
|
m_session->setState(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCamera::CaptureModes BbCameraControl::captureMode() const
|
||||||
|
{
|
||||||
|
return m_session->captureMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraControl::setCaptureMode(QCamera::CaptureModes mode)
|
||||||
|
{
|
||||||
|
m_session->setCaptureMode(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
QCamera::Status BbCameraControl::status() const
|
||||||
|
{
|
||||||
|
return m_session->status();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraControl::isCaptureModeSupported(QCamera::CaptureModes mode) const
|
||||||
|
{
|
||||||
|
return m_session->isCaptureModeSupported(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraControl::canChangeProperty(PropertyChangeType /* changeType */, QCamera::Status /* status */) const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
73
src/plugins/blackberry/camera/bbcameracontrol.h
Normal file
73
src/plugins/blackberry/camera/bbcameracontrol.h
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERACONTROL_H
|
||||||
|
#define BBCAMERACONTROL_H
|
||||||
|
|
||||||
|
#include <qcameracontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraControl : public QCameraControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QCamera::State state() const Q_DECL_OVERRIDE;
|
||||||
|
void setState(QCamera::State state) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
QCamera::Status status() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
QCamera::CaptureModes captureMode() const Q_DECL_OVERRIDE;
|
||||||
|
void setCaptureMode(QCamera::CaptureModes) Q_DECL_OVERRIDE;
|
||||||
|
bool isCaptureModeSupported(QCamera::CaptureModes mode) const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
232
src/plugins/blackberry/camera/bbcameraexposurecontrol.cpp
Normal file
232
src/plugins/blackberry/camera/bbcameraexposurecontrol.cpp
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraexposurecontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraExposureControl::BbCameraExposureControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraExposureControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
, m_requestedExposureMode(QCameraExposure::ExposureAuto)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(statusChanged(QCamera::Status)), this, SLOT(statusChanged(QCamera::Status)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraExposureControl::isParameterSupported(ExposureParameter parameter) const
|
||||||
|
{
|
||||||
|
switch (parameter) {
|
||||||
|
case QCameraExposureControl::ISO:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::Aperture:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::ShutterSpeed:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::ExposureCompensation:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::FlashPower:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::FlashCompensation:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::TorchPower:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::SpotMeteringPoint:
|
||||||
|
return false;
|
||||||
|
case QCameraExposureControl::ExposureMode:
|
||||||
|
return true;
|
||||||
|
case QCameraExposureControl::MeteringMode:
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantList BbCameraExposureControl::supportedParameterRange(ExposureParameter parameter, bool *continuous) const
|
||||||
|
{
|
||||||
|
if (parameter != QCameraExposureControl::ExposureMode) // no other parameter supported by BB10 API at the moment
|
||||||
|
return QVariantList();
|
||||||
|
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus) // we can query supported exposure modes only with active viewfinder
|
||||||
|
return QVariantList();
|
||||||
|
|
||||||
|
if (continuous)
|
||||||
|
*continuous = false;
|
||||||
|
|
||||||
|
int supported = 0;
|
||||||
|
camera_scenemode_t modes[20];
|
||||||
|
const camera_error_t result = camera_get_scene_modes(m_session->handle(), 20, &supported, modes);
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve supported scene modes:" << result;
|
||||||
|
return QVariantList();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantList exposureModes;
|
||||||
|
for (int i = 0; i < supported; ++i) {
|
||||||
|
switch (modes[i]) {
|
||||||
|
case CAMERA_SCENE_AUTO:
|
||||||
|
exposureModes << QVariant::fromValue(QCameraExposure::ExposureAuto);
|
||||||
|
break;
|
||||||
|
case CAMERA_SCENE_SPORTS:
|
||||||
|
exposureModes << QVariant::fromValue(QCameraExposure::ExposureSports);
|
||||||
|
break;
|
||||||
|
case CAMERA_SCENE_CLOSEUP:
|
||||||
|
exposureModes << QVariant::fromValue(QCameraExposure::ExposurePortrait);
|
||||||
|
break;
|
||||||
|
case CAMERA_SCENE_ACTION:
|
||||||
|
exposureModes << QVariant::fromValue(QCameraExposure::ExposureSports);
|
||||||
|
break;
|
||||||
|
case CAMERA_SCENE_BEACHANDSNOW:
|
||||||
|
exposureModes << QVariant::fromValue(QCameraExposure::ExposureBeach) << QVariant::fromValue(QCameraExposure::ExposureSnow);
|
||||||
|
break;
|
||||||
|
case CAMERA_SCENE_NIGHT:
|
||||||
|
exposureModes << QVariant::fromValue(QCameraExposure::ExposureNight);
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return exposureModes;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant BbCameraExposureControl::requestedValue(ExposureParameter parameter) const
|
||||||
|
{
|
||||||
|
if (parameter != QCameraExposureControl::ExposureMode) // no other parameter supported by BB10 API at the moment
|
||||||
|
return QVariant();
|
||||||
|
|
||||||
|
return QVariant::fromValue(m_requestedExposureMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant BbCameraExposureControl::actualValue(ExposureParameter parameter) const
|
||||||
|
{
|
||||||
|
if (parameter != QCameraExposureControl::ExposureMode) // no other parameter supported by BB10 API at the moment
|
||||||
|
return QVariantList();
|
||||||
|
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus) // we can query actual scene modes only with active viewfinder
|
||||||
|
return QVariantList();
|
||||||
|
|
||||||
|
camera_scenemode_t sceneMode = CAMERA_SCENE_DEFAULT;
|
||||||
|
const camera_error_t result = camera_get_scene_mode(m_session->handle(), &sceneMode);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve scene mode:" << result;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (sceneMode) {
|
||||||
|
case CAMERA_SCENE_AUTO:
|
||||||
|
return QVariant::fromValue(QCameraExposure::ExposureAuto);
|
||||||
|
case CAMERA_SCENE_SPORTS:
|
||||||
|
return QVariant::fromValue(QCameraExposure::ExposureSports);
|
||||||
|
case CAMERA_SCENE_CLOSEUP:
|
||||||
|
return QVariant::fromValue(QCameraExposure::ExposurePortrait);
|
||||||
|
case CAMERA_SCENE_ACTION:
|
||||||
|
return QVariant::fromValue(QCameraExposure::ExposureSports);
|
||||||
|
case CAMERA_SCENE_BEACHANDSNOW:
|
||||||
|
return (m_requestedExposureMode == QCameraExposure::ExposureBeach ? QVariant::fromValue(QCameraExposure::ExposureBeach)
|
||||||
|
: QVariant::fromValue(QCameraExposure::ExposureSnow));
|
||||||
|
case CAMERA_SCENE_NIGHT:
|
||||||
|
return QVariant::fromValue(QCameraExposure::ExposureNight);
|
||||||
|
default:
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraExposureControl::setValue(ExposureParameter parameter, const QVariant& value)
|
||||||
|
{
|
||||||
|
if (parameter != QCameraExposureControl::ExposureMode) // no other parameter supported by BB10 API at the moment
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus) // we can set actual scene modes only with active viewfinder
|
||||||
|
return false;
|
||||||
|
|
||||||
|
camera_scenemode_t sceneMode = CAMERA_SCENE_DEFAULT;
|
||||||
|
|
||||||
|
if (value.isValid()) {
|
||||||
|
m_requestedExposureMode = value.value<QCameraExposure::ExposureMode>();
|
||||||
|
emit requestedValueChanged(QCameraExposureControl::ExposureMode);
|
||||||
|
|
||||||
|
switch (m_requestedExposureMode) {
|
||||||
|
case QCameraExposure::ExposureAuto:
|
||||||
|
sceneMode = CAMERA_SCENE_AUTO;
|
||||||
|
break;
|
||||||
|
case QCameraExposure::ExposureSports:
|
||||||
|
sceneMode = CAMERA_SCENE_SPORTS;
|
||||||
|
break;
|
||||||
|
case QCameraExposure::ExposurePortrait:
|
||||||
|
sceneMode = CAMERA_SCENE_CLOSEUP;
|
||||||
|
break;
|
||||||
|
case QCameraExposure::ExposureBeach:
|
||||||
|
sceneMode = CAMERA_SCENE_BEACHANDSNOW;
|
||||||
|
break;
|
||||||
|
case QCameraExposure::ExposureSnow:
|
||||||
|
sceneMode = CAMERA_SCENE_BEACHANDSNOW;
|
||||||
|
break;
|
||||||
|
case QCameraExposure::ExposureNight:
|
||||||
|
sceneMode = CAMERA_SCENE_NIGHT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sceneMode = CAMERA_SCENE_DEFAULT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const camera_error_t result = camera_set_scene_mode(m_session->handle(), sceneMode);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to set scene mode:" << result;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit actualValueChanged(QCameraExposureControl::ExposureMode);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraExposureControl::statusChanged(QCamera::Status status)
|
||||||
|
{
|
||||||
|
if (status == QCamera::ActiveStatus || status == QCamera::LoadedStatus)
|
||||||
|
emit parameterRangeChanged(QCameraExposureControl::ExposureMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
73
src/plugins/blackberry/camera/bbcameraexposurecontrol.h
Normal file
73
src/plugins/blackberry/camera/bbcameraexposurecontrol.h
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAEXPOSURECONTROL_H
|
||||||
|
#define BBCAMERAEXPOSURECONTROL_H
|
||||||
|
|
||||||
|
#include <qcameraexposurecontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraExposureControl : public QCameraExposureControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraExposureControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
virtual bool isParameterSupported(ExposureParameter parameter) const Q_DECL_OVERRIDE;
|
||||||
|
virtual QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
virtual QVariant requestedValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
|
||||||
|
virtual QVariant actualValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
|
||||||
|
virtual bool setValue(ExposureParameter parameter, const QVariant& value) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void statusChanged(QCamera::Status status);
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
QCameraExposure::ExposureMode m_requestedExposureMode;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
113
src/plugins/blackberry/camera/bbcameraflashcontrol.cpp
Normal file
113
src/plugins/blackberry/camera/bbcameraflashcontrol.cpp
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraflashcontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraFlashControl::BbCameraFlashControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraFlashControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
, m_flashMode(QCameraExposure::FlashAuto)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraExposure::FlashModes BbCameraFlashControl::flashMode() const
|
||||||
|
{
|
||||||
|
return m_flashMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraFlashControl::setFlashMode(QCameraExposure::FlashModes mode)
|
||||||
|
{
|
||||||
|
if (m_flashMode == mode)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus) // can only be changed when viewfinder is active
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (m_flashMode == QCameraExposure::FlashVideoLight) {
|
||||||
|
const camera_error_t result = camera_config_videolight(m_session->handle(), CAMERA_VIDEOLIGHT_OFF);
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to switch off video light:" << result;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_flashMode = mode;
|
||||||
|
|
||||||
|
if (m_flashMode == QCameraExposure::FlashVideoLight) {
|
||||||
|
const camera_error_t result = camera_config_videolight(m_session->handle(), CAMERA_VIDEOLIGHT_ON);
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to switch on video light:" << result;
|
||||||
|
} else {
|
||||||
|
camera_flashmode_t flashMode = CAMERA_FLASH_AUTO;
|
||||||
|
|
||||||
|
if (m_flashMode.testFlag(QCameraExposure::FlashAuto)) flashMode = CAMERA_FLASH_AUTO;
|
||||||
|
else if (mode.testFlag(QCameraExposure::FlashOff)) flashMode = CAMERA_FLASH_OFF;
|
||||||
|
else if (mode.testFlag(QCameraExposure::FlashOn)) flashMode = CAMERA_FLASH_ON;
|
||||||
|
|
||||||
|
const camera_error_t result = camera_config_flash(m_session->handle(), flashMode);
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to configure flash:" << result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraFlashControl::isFlashModeSupported(QCameraExposure::FlashModes mode) const
|
||||||
|
{
|
||||||
|
bool supportsVideoLight = false;
|
||||||
|
if (m_session->handle() != CAMERA_HANDLE_INVALID) {
|
||||||
|
supportsVideoLight = camera_has_feature(m_session->handle(), CAMERA_FEATURE_VIDEOLIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (mode == QCameraExposure::FlashOff ||
|
||||||
|
mode == QCameraExposure::FlashOn ||
|
||||||
|
mode == QCameraExposure::FlashAuto ||
|
||||||
|
((mode == QCameraExposure::FlashVideoLight) && supportsVideoLight));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraFlashControl::isFlashReady() const
|
||||||
|
{
|
||||||
|
//TODO: check for flash charge-level here?!?
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
68
src/plugins/blackberry/camera/bbcameraflashcontrol.h
Normal file
68
src/plugins/blackberry/camera/bbcameraflashcontrol.h
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAFLASHCONTROL_H
|
||||||
|
#define BBCAMERAFLASHCONTROL_H
|
||||||
|
|
||||||
|
#include <qcameraflashcontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraFlashControl : public QCameraFlashControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraFlashControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QCameraExposure::FlashModes flashMode() const Q_DECL_OVERRIDE;
|
||||||
|
void setFlashMode(QCameraExposure::FlashModes mode) Q_DECL_OVERRIDE;
|
||||||
|
bool isFlashModeSupported(QCameraExposure::FlashModes mode) const Q_DECL_OVERRIDE;
|
||||||
|
bool isFlashReady() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
QCameraExposure::FlashModes m_flashMode;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
331
src/plugins/blackberry/camera/bbcamerafocuscontrol.cpp
Normal file
331
src/plugins/blackberry/camera/bbcamerafocuscontrol.cpp
Normal file
@@ -0,0 +1,331 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcamerafocuscontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraFocusControl::BbCameraFocusControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraFocusControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
, m_focusMode(QCameraFocus::FocusModes())
|
||||||
|
, m_focusPointMode(QCameraFocus::FocusPointAuto)
|
||||||
|
, m_customFocusPoint(QPointF(0, 0))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraFocus::FocusModes BbCameraFocusControl::focusMode() const
|
||||||
|
{
|
||||||
|
camera_focusmode_t focusMode = CAMERA_FOCUSMODE_OFF;
|
||||||
|
|
||||||
|
const camera_error_t result = camera_get_focus_mode(m_session->handle(), &focusMode);
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve focus mode from camera:" << result;
|
||||||
|
return QCameraFocus::FocusModes();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (focusMode) {
|
||||||
|
case CAMERA_FOCUSMODE_EDOF:
|
||||||
|
return QCameraFocus::HyperfocalFocus;
|
||||||
|
case CAMERA_FOCUSMODE_MANUAL:
|
||||||
|
return QCameraFocus::ManualFocus;
|
||||||
|
case CAMERA_FOCUSMODE_AUTO:
|
||||||
|
return QCameraFocus::AutoFocus;
|
||||||
|
case CAMERA_FOCUSMODE_MACRO:
|
||||||
|
return QCameraFocus::MacroFocus;
|
||||||
|
case CAMERA_FOCUSMODE_CONTINUOUS_AUTO:
|
||||||
|
return QCameraFocus::ContinuousFocus;
|
||||||
|
case CAMERA_FOCUSMODE_CONTINUOUS_MACRO: // fall through
|
||||||
|
case CAMERA_FOCUSMODE_OFF: // fall through
|
||||||
|
default:
|
||||||
|
return QCameraFocus::FocusModes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraFocusControl::setFocusMode(QCameraFocus::FocusModes mode)
|
||||||
|
{
|
||||||
|
if (m_focusMode == mode)
|
||||||
|
return;
|
||||||
|
|
||||||
|
camera_focusmode_t focusMode = CAMERA_FOCUSMODE_OFF;
|
||||||
|
|
||||||
|
if (mode == QCameraFocus::HyperfocalFocus)
|
||||||
|
focusMode = CAMERA_FOCUSMODE_EDOF;
|
||||||
|
else if (mode == QCameraFocus::ManualFocus)
|
||||||
|
focusMode = CAMERA_FOCUSMODE_MANUAL;
|
||||||
|
else if (mode == QCameraFocus::AutoFocus)
|
||||||
|
focusMode = CAMERA_FOCUSMODE_AUTO;
|
||||||
|
else if (mode == QCameraFocus::MacroFocus)
|
||||||
|
focusMode = CAMERA_FOCUSMODE_MACRO;
|
||||||
|
else if (mode == QCameraFocus::ContinuousFocus)
|
||||||
|
focusMode = CAMERA_FOCUSMODE_CONTINUOUS_AUTO;
|
||||||
|
|
||||||
|
const camera_error_t result = camera_set_focus_mode(m_session->handle(), focusMode);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to set focus mode:" << result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_focusMode = mode;
|
||||||
|
emit focusModeChanged(m_focusMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraFocusControl::isFocusModeSupported(QCameraFocus::FocusModes mode) const
|
||||||
|
{
|
||||||
|
if (m_session->state() == QCamera::UnloadedState)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (mode == QCameraFocus::HyperfocalFocus)
|
||||||
|
return false; //TODO how to check?
|
||||||
|
else if (mode == QCameraFocus::ManualFocus)
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_MANUALFOCUS);
|
||||||
|
else if (mode == QCameraFocus::AutoFocus)
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOFOCUS);
|
||||||
|
else if (mode == QCameraFocus::MacroFocus)
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_MACROFOCUS);
|
||||||
|
else if (mode == QCameraFocus::ContinuousFocus)
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOFOCUS);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraFocus::FocusPointMode BbCameraFocusControl::focusPointMode() const
|
||||||
|
{
|
||||||
|
return m_focusPointMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraFocusControl::setFocusPointMode(QCameraFocus::FocusPointMode mode)
|
||||||
|
{
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (m_focusPointMode == mode)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_focusPointMode = mode;
|
||||||
|
emit focusPointModeChanged(m_focusPointMode);
|
||||||
|
|
||||||
|
if (m_focusPointMode == QCameraFocus::FocusPointAuto) {
|
||||||
|
//TODO: is this correct?
|
||||||
|
const camera_error_t result = camera_set_focus_regions(m_session->handle(), 0, 0);
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to set focus region:" << result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit focusZonesChanged();
|
||||||
|
} else if (m_focusPointMode == QCameraFocus::FocusPointCenter) {
|
||||||
|
// get the size of the viewfinder
|
||||||
|
int viewfinderWidth = 0;
|
||||||
|
int viewfinderHeight = 0;
|
||||||
|
|
||||||
|
if (!retrieveViewfinderSize(&viewfinderWidth, &viewfinderHeight))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// define a 40x40 pixel focus region in the center of the viewfinder
|
||||||
|
camera_region_t focusRegion;
|
||||||
|
focusRegion.left = (viewfinderWidth / 2) - 20;
|
||||||
|
focusRegion.top = (viewfinderHeight / 2) - 20;
|
||||||
|
focusRegion.width = 40;
|
||||||
|
focusRegion.height = 40;
|
||||||
|
|
||||||
|
camera_error_t result = camera_set_focus_regions(m_session->handle(), 1, &focusRegion);
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to set focus region:" << result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// re-set focus mode to apply focus region changes
|
||||||
|
camera_focusmode_t focusMode = CAMERA_FOCUSMODE_OFF;
|
||||||
|
result = camera_get_focus_mode(m_session->handle(), &focusMode);
|
||||||
|
camera_set_focus_mode(m_session->handle(), focusMode);
|
||||||
|
|
||||||
|
emit focusZonesChanged();
|
||||||
|
|
||||||
|
} else if (m_focusPointMode == QCameraFocus::FocusPointFaceDetection) {
|
||||||
|
//TODO: implement later
|
||||||
|
} else if (m_focusPointMode == QCameraFocus::FocusPointCustom) {
|
||||||
|
updateCustomFocusRegion();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraFocusControl::isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const
|
||||||
|
{
|
||||||
|
if (m_session->state() == QCamera::UnloadedState)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (mode == QCameraFocus::FocusPointAuto) {
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOFOCUS);
|
||||||
|
} else if (mode == QCameraFocus::FocusPointCenter) {
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_REGIONFOCUS);
|
||||||
|
} else if (mode == QCameraFocus::FocusPointFaceDetection) {
|
||||||
|
return false; //TODO: implement via custom region in combination with face detection in viewfinder
|
||||||
|
} else if (mode == QCameraFocus::FocusPointCustom) {
|
||||||
|
return camera_has_feature(m_session->handle(), CAMERA_FEATURE_REGIONFOCUS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointF BbCameraFocusControl::customFocusPoint() const
|
||||||
|
{
|
||||||
|
return m_customFocusPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraFocusControl::setCustomFocusPoint(const QPointF &point)
|
||||||
|
{
|
||||||
|
if (m_customFocusPoint == point)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_customFocusPoint = point;
|
||||||
|
emit customFocusPointChanged(m_customFocusPoint);
|
||||||
|
|
||||||
|
updateCustomFocusRegion();
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraFocusZoneList BbCameraFocusControl::focusZones() const
|
||||||
|
{
|
||||||
|
if (m_session->state() == QCamera::UnloadedState)
|
||||||
|
return QCameraFocusZoneList();
|
||||||
|
|
||||||
|
camera_region_t regions[20];
|
||||||
|
int supported = 0;
|
||||||
|
int asked = 0;
|
||||||
|
camera_error_t result = camera_get_focus_regions(m_session->handle(), 20, &supported, &asked, regions);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve focus regions:" << result;
|
||||||
|
return QCameraFocusZoneList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// retrieve width and height of viewfinder
|
||||||
|
int viewfinderWidth = 0;
|
||||||
|
int viewfinderHeight = 0;
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_get_photovf_property(m_session->handle(),
|
||||||
|
CAMERA_IMGPROP_WIDTH, &viewfinderWidth,
|
||||||
|
CAMERA_IMGPROP_HEIGHT, &viewfinderHeight);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_get_videovf_property(m_session->handle(),
|
||||||
|
CAMERA_IMGPROP_WIDTH, &viewfinderWidth,
|
||||||
|
CAMERA_IMGPROP_HEIGHT, &viewfinderHeight);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve viewfinder size:" << result;
|
||||||
|
return QCameraFocusZoneList();
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraFocusZoneList list;
|
||||||
|
for (int i = 0; i < asked; ++i) {
|
||||||
|
const int x = regions[i].left;
|
||||||
|
const int y = regions[i].top;
|
||||||
|
const int width = regions[i].width;
|
||||||
|
const int height = regions[i].height;
|
||||||
|
|
||||||
|
QRectF rect(static_cast<float>(x)/static_cast<float>(viewfinderWidth),
|
||||||
|
static_cast<float>(y)/static_cast<float>(viewfinderHeight),
|
||||||
|
static_cast<float>(width)/static_cast<float>(viewfinderWidth),
|
||||||
|
static_cast<float>(height)/static_cast<float>(viewfinderHeight));
|
||||||
|
|
||||||
|
list << QCameraFocusZone(rect, QCameraFocusZone::Focused); //TODO: how to know if a zone is unused/selected/focused?!?
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraFocusControl::updateCustomFocusRegion()
|
||||||
|
{
|
||||||
|
// get the size of the viewfinder
|
||||||
|
int viewfinderWidth = 0;
|
||||||
|
int viewfinderHeight = 0;
|
||||||
|
|
||||||
|
if (!retrieveViewfinderSize(&viewfinderWidth, &viewfinderHeight))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// define a 40x40 pixel focus region around the custom focus point
|
||||||
|
camera_region_t focusRegion;
|
||||||
|
focusRegion.left = qMax(0, static_cast<int>(m_customFocusPoint.x() * viewfinderWidth) - 20);
|
||||||
|
focusRegion.top = qMax(0, static_cast<int>(m_customFocusPoint.y() * viewfinderHeight) - 20);
|
||||||
|
focusRegion.width = 40;
|
||||||
|
focusRegion.height = 40;
|
||||||
|
|
||||||
|
camera_error_t result = camera_set_focus_regions(m_session->handle(), 1, &focusRegion);
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to set focus region:" << result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// re-set focus mode to apply focus region changes
|
||||||
|
camera_focusmode_t focusMode = CAMERA_FOCUSMODE_OFF;
|
||||||
|
result = camera_get_focus_mode(m_session->handle(), &focusMode);
|
||||||
|
camera_set_focus_mode(m_session->handle(), focusMode);
|
||||||
|
|
||||||
|
emit focusZonesChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraFocusControl::retrieveViewfinderSize(int *width, int *height)
|
||||||
|
{
|
||||||
|
if (!width || !height)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_get_photovf_property(m_session->handle(),
|
||||||
|
CAMERA_IMGPROP_WIDTH, width,
|
||||||
|
CAMERA_IMGPROP_HEIGHT, height);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_get_videovf_property(m_session->handle(),
|
||||||
|
CAMERA_IMGPROP_WIDTH, width,
|
||||||
|
CAMERA_IMGPROP_HEIGHT, height);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve viewfinder size:" << result;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
79
src/plugins/blackberry/camera/bbcamerafocuscontrol.h
Normal file
79
src/plugins/blackberry/camera/bbcamerafocuscontrol.h
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAFOCUSCONTROL_H
|
||||||
|
#define BBCAMERAFOCUSCONTROL_H
|
||||||
|
|
||||||
|
#include <qcamerafocuscontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraFocusControl : public QCameraFocusControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraFocusControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QCameraFocus::FocusModes focusMode() const Q_DECL_OVERRIDE;
|
||||||
|
void setFocusMode(QCameraFocus::FocusModes mode) Q_DECL_OVERRIDE;
|
||||||
|
bool isFocusModeSupported(QCameraFocus::FocusModes mode) const Q_DECL_OVERRIDE;
|
||||||
|
QCameraFocus::FocusPointMode focusPointMode() const Q_DECL_OVERRIDE;
|
||||||
|
void setFocusPointMode(QCameraFocus::FocusPointMode mode) Q_DECL_OVERRIDE;
|
||||||
|
bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const Q_DECL_OVERRIDE;
|
||||||
|
QPointF customFocusPoint() const Q_DECL_OVERRIDE;
|
||||||
|
void setCustomFocusPoint(const QPointF &point) Q_DECL_OVERRIDE;
|
||||||
|
QCameraFocusZoneList focusZones() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateCustomFocusRegion();
|
||||||
|
bool retrieveViewfinderSize(int *width, int *height);
|
||||||
|
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
|
||||||
|
QCameraFocus::FocusModes m_focusMode;
|
||||||
|
QCameraFocus::FocusPointMode m_focusPointMode;
|
||||||
|
QPointF m_customFocusPoint;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraimagecapturecontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraImageCaptureControl::BbCameraImageCaptureControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraImageCaptureControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(readyForCaptureChanged(bool)), this, SIGNAL(readyForCaptureChanged(bool)));
|
||||||
|
connect(m_session, SIGNAL(imageExposed(int)), this, SIGNAL(imageExposed(int)));
|
||||||
|
connect(m_session, SIGNAL(imageCaptured(int,QImage)), this, SIGNAL(imageCaptured(int,QImage)));
|
||||||
|
connect(m_session, SIGNAL(imageMetadataAvailable(int,QString,QVariant)), this, SIGNAL(imageMetadataAvailable(int,QString,QVariant)));
|
||||||
|
connect(m_session, SIGNAL(imageAvailable(int,QVideoFrame)), this, SIGNAL(imageAvailable(int,QVideoFrame)));
|
||||||
|
connect(m_session, SIGNAL(imageSaved(int,QString)), this, SIGNAL(imageSaved(int,QString)));
|
||||||
|
connect(m_session, SIGNAL(imageCaptureError(int,int,QString)), this, SIGNAL(error(int,int,QString)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraImageCaptureControl::isReadyForCapture() const
|
||||||
|
{
|
||||||
|
return m_session->isReadyForCapture();
|
||||||
|
}
|
||||||
|
|
||||||
|
QCameraImageCapture::DriveMode BbCameraImageCaptureControl::driveMode() const
|
||||||
|
{
|
||||||
|
return m_session->driveMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraImageCaptureControl::setDriveMode(QCameraImageCapture::DriveMode mode)
|
||||||
|
{
|
||||||
|
m_session->setDriveMode(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
int BbCameraImageCaptureControl::capture(const QString &fileName)
|
||||||
|
{
|
||||||
|
return m_session->capture(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraImageCaptureControl::cancelCapture()
|
||||||
|
{
|
||||||
|
m_session->cancelCapture();
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
70
src/plugins/blackberry/camera/bbcameraimagecapturecontrol.h
Normal file
70
src/plugins/blackberry/camera/bbcameraimagecapturecontrol.h
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAIMAGECAPTURECONTROL_H
|
||||||
|
#define BBCAMERAIMAGECAPTURECONTROL_H
|
||||||
|
|
||||||
|
#include <qcameraimagecapturecontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraImageCaptureControl : public QCameraImageCaptureControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraImageCaptureControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
bool isReadyForCapture() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
QCameraImageCapture::DriveMode driveMode() const Q_DECL_OVERRIDE;
|
||||||
|
void setDriveMode(QCameraImageCapture::DriveMode mode) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
int capture(const QString &fileName) Q_DECL_OVERRIDE;
|
||||||
|
void cancelCapture() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
146
src/plugins/blackberry/camera/bbcameraimageprocessingcontrol.cpp
Normal file
146
src/plugins/blackberry/camera/bbcameraimageprocessingcontrol.cpp
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraimageprocessingcontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraImageProcessingControl::BbCameraImageProcessingControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraImageProcessingControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraImageProcessingControl::isParameterSupported(ProcessingParameter parameter) const
|
||||||
|
{
|
||||||
|
return (parameter == QCameraImageProcessingControl::WhiteBalancePreset);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraImageProcessingControl::isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const
|
||||||
|
{
|
||||||
|
if (parameter != QCameraImageProcessingControl::WhiteBalancePreset)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (m_session->handle() == CAMERA_HANDLE_INVALID)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int supported = 0;
|
||||||
|
camera_whitebalancemode_t modes[20];
|
||||||
|
const camera_error_t result = camera_get_whitebalance_modes(m_session->handle(), 20, &supported, modes);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve supported whitebalance modes:" << result;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSet<QCameraImageProcessing::WhiteBalanceMode> supportedModes;
|
||||||
|
for (int i = 0; i < supported; ++i) {
|
||||||
|
switch (modes[i]) {
|
||||||
|
case CAMERA_WHITEBALANCEMODE_AUTO:
|
||||||
|
supportedModes.insert(QCameraImageProcessing::WhiteBalanceAuto);
|
||||||
|
break;
|
||||||
|
case CAMERA_WHITEBALANCEMODE_MANUAL:
|
||||||
|
supportedModes.insert(QCameraImageProcessing::WhiteBalanceManual);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return supportedModes.contains(value.value<QCameraImageProcessing::WhiteBalanceMode>());
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant BbCameraImageProcessingControl::parameter(ProcessingParameter parameter) const
|
||||||
|
{
|
||||||
|
if (parameter != QCameraImageProcessingControl::WhiteBalancePreset)
|
||||||
|
return QVariant();
|
||||||
|
|
||||||
|
if (m_session->handle() == CAMERA_HANDLE_INVALID)
|
||||||
|
return QVariant();
|
||||||
|
|
||||||
|
camera_whitebalancemode_t mode;
|
||||||
|
const camera_error_t result = camera_get_whitebalance_mode(m_session->handle(), &mode);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve current whitebalance mode:" << result;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (mode) {
|
||||||
|
case CAMERA_WHITEBALANCEMODE_AUTO:
|
||||||
|
return QVariant::fromValue(QCameraImageProcessing::WhiteBalanceAuto);
|
||||||
|
case CAMERA_WHITEBALANCEMODE_MANUAL:
|
||||||
|
return QVariant::fromValue(QCameraImageProcessing::WhiteBalanceManual);
|
||||||
|
default:
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraImageProcessingControl::setParameter(ProcessingParameter parameter, const QVariant &value)
|
||||||
|
{
|
||||||
|
if (parameter != QCameraImageProcessingControl::WhiteBalancePreset)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (m_session->handle() == CAMERA_HANDLE_INVALID)
|
||||||
|
return;
|
||||||
|
|
||||||
|
camera_whitebalancemode_t mode = CAMERA_WHITEBALANCEMODE_DEFAULT;
|
||||||
|
switch (value.value<QCameraImageProcessing::WhiteBalanceMode>()) {
|
||||||
|
case QCameraImageProcessing::WhiteBalanceAuto:
|
||||||
|
mode = CAMERA_WHITEBALANCEMODE_AUTO;
|
||||||
|
break;
|
||||||
|
case QCameraImageProcessing::WhiteBalanceManual:
|
||||||
|
mode = CAMERA_WHITEBALANCEMODE_MANUAL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const camera_error_t result = camera_set_whitebalance_mode(m_session->handle(), mode);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to set whitebalance mode:" << result;
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAIMAGEPROCESSINGCONTROL_H
|
||||||
|
#define BBCAMERAIMAGEPROCESSINGCONTROL_H
|
||||||
|
|
||||||
|
#include <qcameraimageprocessingcontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraImageProcessingControl : public QCameraImageProcessingControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraImageProcessingControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
bool isParameterSupported(ProcessingParameter) const Q_DECL_OVERRIDE;
|
||||||
|
bool isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const Q_DECL_OVERRIDE;
|
||||||
|
QVariant parameter(ProcessingParameter parameter) const Q_DECL_OVERRIDE;
|
||||||
|
void setParameter(ProcessingParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
75
src/plugins/blackberry/camera/bbcameralockscontrol.cpp
Normal file
75
src/plugins/blackberry/camera/bbcameralockscontrol.cpp
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameralockscontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraLocksControl::BbCameraLocksControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraLocksControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason)),
|
||||||
|
this, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason)));
|
||||||
|
}
|
||||||
|
|
||||||
|
QCamera::LockTypes BbCameraLocksControl::supportedLocks() const
|
||||||
|
{
|
||||||
|
return m_session->supportedLocks();
|
||||||
|
}
|
||||||
|
|
||||||
|
QCamera::LockStatus BbCameraLocksControl::lockStatus(QCamera::LockType lock) const
|
||||||
|
{
|
||||||
|
return m_session->lockStatus(lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraLocksControl::searchAndLock(QCamera::LockTypes locks)
|
||||||
|
{
|
||||||
|
m_session->searchAndLock(locks);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraLocksControl::unlock(QCamera::LockTypes locks)
|
||||||
|
{
|
||||||
|
m_session->unlock(locks);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
67
src/plugins/blackberry/camera/bbcameralockscontrol.h
Normal file
67
src/plugins/blackberry/camera/bbcameralockscontrol.h
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERALOCKSCONTROL_H
|
||||||
|
#define BBCAMERALOCKSCONTROL_H
|
||||||
|
|
||||||
|
#include <qcameralockscontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraLocksControl : public QCameraLocksControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraLocksControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QCamera::LockTypes supportedLocks() const Q_DECL_OVERRIDE;
|
||||||
|
QCamera::LockStatus lockStatus(QCamera::LockType lock) const Q_DECL_OVERRIDE;
|
||||||
|
void searchAndLock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
|
||||||
|
void unlock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
158
src/plugins/blackberry/camera/bbcameramediarecordercontrol.cpp
Normal file
158
src/plugins/blackberry/camera/bbcameramediarecordercontrol.cpp
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameramediarecordercontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
|
#include <audio/audio_manager_device.h>
|
||||||
|
#include <audio/audio_manager_volume.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
static audio_manager_device_t currentAudioInputDevice()
|
||||||
|
{
|
||||||
|
audio_manager_device_t device = AUDIO_DEVICE_HEADSET;
|
||||||
|
|
||||||
|
const int result = audio_manager_get_default_input_device(&device);
|
||||||
|
if (result != EOK) {
|
||||||
|
qWarning() << "Unable to retrieve default audio input device:" << result;
|
||||||
|
return AUDIO_DEVICE_HEADSET;
|
||||||
|
}
|
||||||
|
|
||||||
|
return device;
|
||||||
|
}
|
||||||
|
|
||||||
|
BbCameraMediaRecorderControl::BbCameraMediaRecorderControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QMediaRecorderControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(videoStateChanged(QMediaRecorder::State)), this, SIGNAL(stateChanged(QMediaRecorder::State)));
|
||||||
|
connect(m_session, SIGNAL(videoStatusChanged(QMediaRecorder::Status)), this, SIGNAL(statusChanged(QMediaRecorder::Status)));
|
||||||
|
connect(m_session, SIGNAL(durationChanged(qint64)), this, SIGNAL(durationChanged(qint64)));
|
||||||
|
connect(m_session, SIGNAL(actualLocationChanged(QUrl)), this, SIGNAL(actualLocationChanged(QUrl)));
|
||||||
|
connect(m_session, SIGNAL(videoError(int,QString)), this, SIGNAL(error(int,QString)));
|
||||||
|
}
|
||||||
|
|
||||||
|
QUrl BbCameraMediaRecorderControl::outputLocation() const
|
||||||
|
{
|
||||||
|
return m_session->outputLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraMediaRecorderControl::setOutputLocation(const QUrl &location)
|
||||||
|
{
|
||||||
|
return m_session->setOutputLocation(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMediaRecorder::State BbCameraMediaRecorderControl::state() const
|
||||||
|
{
|
||||||
|
return m_session->videoState();
|
||||||
|
}
|
||||||
|
|
||||||
|
QMediaRecorder::Status BbCameraMediaRecorderControl::status() const
|
||||||
|
{
|
||||||
|
return m_session->videoStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
qint64 BbCameraMediaRecorderControl::duration() const
|
||||||
|
{
|
||||||
|
return m_session->duration();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraMediaRecorderControl::isMuted() const
|
||||||
|
{
|
||||||
|
bool muted = false;
|
||||||
|
|
||||||
|
const int result = audio_manager_get_input_mute(currentAudioInputDevice(), &muted);
|
||||||
|
if (result != EOK) {
|
||||||
|
emit const_cast<BbCameraMediaRecorderControl*>(this)->error(QMediaRecorder::ResourceError, tr("Unable to retrieve mute status"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return muted;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraMediaRecorderControl::volume() const
|
||||||
|
{
|
||||||
|
double level = 0.0;
|
||||||
|
|
||||||
|
const int result = audio_manager_get_input_level(currentAudioInputDevice(), &level);
|
||||||
|
if (result != EOK) {
|
||||||
|
emit const_cast<BbCameraMediaRecorderControl*>(this)->error(QMediaRecorder::ResourceError, tr("Unable to retrieve audio input volume"));
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (level / 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraMediaRecorderControl::applySettings()
|
||||||
|
{
|
||||||
|
m_session->applySettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraMediaRecorderControl::setState(QMediaRecorder::State state)
|
||||||
|
{
|
||||||
|
m_session->setVideoState(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraMediaRecorderControl::setMuted(bool muted)
|
||||||
|
{
|
||||||
|
const int result = audio_manager_set_input_mute(currentAudioInputDevice(), muted);
|
||||||
|
if (result != EOK) {
|
||||||
|
emit error(QMediaRecorder::ResourceError, tr("Unable to set mute status"));
|
||||||
|
} else {
|
||||||
|
emit mutedChanged(muted);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraMediaRecorderControl::setVolume(qreal volume)
|
||||||
|
{
|
||||||
|
const int result = audio_manager_set_input_level(currentAudioInputDevice(), (volume * 100));
|
||||||
|
if (result != EOK) {
|
||||||
|
emit error(QMediaRecorder::ResourceError, tr("Unable to set audio input volume"));
|
||||||
|
} else {
|
||||||
|
emit volumeChanged(volume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
76
src/plugins/blackberry/camera/bbcameramediarecordercontrol.h
Normal file
76
src/plugins/blackberry/camera/bbcameramediarecordercontrol.h
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAMEDIARECORDERCONTROL_H
|
||||||
|
#define BBCAMERAMEDIARECORDERCONTROL_H
|
||||||
|
|
||||||
|
#include <qmediarecordercontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraMediaRecorderControl : public QMediaRecorderControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraMediaRecorderControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QUrl outputLocation() const Q_DECL_OVERRIDE;
|
||||||
|
bool setOutputLocation(const QUrl &location) Q_DECL_OVERRIDE;
|
||||||
|
QMediaRecorder::State state() const Q_DECL_OVERRIDE;
|
||||||
|
QMediaRecorder::Status status() const Q_DECL_OVERRIDE;
|
||||||
|
qint64 duration() const Q_DECL_OVERRIDE;
|
||||||
|
bool isMuted() const Q_DECL_OVERRIDE;
|
||||||
|
qreal volume() const Q_DECL_OVERRIDE;
|
||||||
|
void applySettings() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void setState(QMediaRecorder::State state) Q_DECL_OVERRIDE;
|
||||||
|
void setMuted(bool muted) Q_DECL_OVERRIDE;
|
||||||
|
void setVolume(qreal volume) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
100
src/plugins/blackberry/camera/bbcameraorientationhandler.cpp
Normal file
100
src/plugins/blackberry/camera/bbcameraorientationhandler.cpp
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraorientationhandler.h"
|
||||||
|
|
||||||
|
#include <QAbstractEventDispatcher>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include <bps/orientation.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraOrientationHandler::BbCameraOrientationHandler(QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_orientation(0)
|
||||||
|
{
|
||||||
|
QCoreApplication::eventDispatcher()->installNativeEventFilter(this);
|
||||||
|
int result = orientation_request_events(0);
|
||||||
|
if (result == BPS_FAILURE)
|
||||||
|
qWarning() << "Unable to register for orientation change events";
|
||||||
|
|
||||||
|
orientation_direction_t direction = ORIENTATION_FACE_UP;
|
||||||
|
int angle = 0;
|
||||||
|
|
||||||
|
result = orientation_get(&direction, &angle);
|
||||||
|
if (result == BPS_FAILURE) {
|
||||||
|
qWarning() << "Unable to retrieve initial orientation";
|
||||||
|
} else {
|
||||||
|
m_orientation = angle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BbCameraOrientationHandler::~BbCameraOrientationHandler()
|
||||||
|
{
|
||||||
|
const int result = orientation_stop_events(0);
|
||||||
|
if (result == BPS_FAILURE)
|
||||||
|
qWarning() << "Unable to unregister for orientation change events";
|
||||||
|
|
||||||
|
QCoreApplication::eventDispatcher()->removeNativeEventFilter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraOrientationHandler::nativeEventFilter(const QByteArray&, void *message, long*)
|
||||||
|
{
|
||||||
|
bps_event_t* const event = static_cast<bps_event_t*>(message);
|
||||||
|
if (!event || bps_event_get_domain(event) != orientation_get_domain())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const int angle = orientation_event_get_angle(event);
|
||||||
|
if (angle != m_orientation) {
|
||||||
|
m_orientation = angle;
|
||||||
|
emit orientationChanged(m_orientation);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false; // do not drop the event
|
||||||
|
}
|
||||||
|
|
||||||
|
int BbCameraOrientationHandler::orientation() const
|
||||||
|
{
|
||||||
|
return m_orientation;
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
69
src/plugins/blackberry/camera/bbcameraorientationhandler.h
Normal file
69
src/plugins/blackberry/camera/bbcameraorientationhandler.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAORIENTATIONHANDLER_H
|
||||||
|
#define BBCAMERAORIENTATIONHANDLER_H
|
||||||
|
|
||||||
|
#include <QAbstractNativeEventFilter>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraOrientationHandler : public QObject, public QAbstractNativeEventFilter
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraOrientationHandler(QObject *parent = 0);
|
||||||
|
~BbCameraOrientationHandler();
|
||||||
|
|
||||||
|
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
int orientation() const;
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void orientationChanged(int degree);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_orientation;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
141
src/plugins/blackberry/camera/bbcameraservice.cpp
Normal file
141
src/plugins/blackberry/camera/bbcameraservice.cpp
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraservice.h"
|
||||||
|
|
||||||
|
#include "bbcameraaudioencodersettingscontrol.h"
|
||||||
|
#include "bbcameracapturebufferformatcontrol.h"
|
||||||
|
#include "bbcameracapturedestinationcontrol.h"
|
||||||
|
#include "bbcameracontrol.h"
|
||||||
|
#include "bbcameraexposurecontrol.h"
|
||||||
|
#include "bbcameraflashcontrol.h"
|
||||||
|
#include "bbcamerafocuscontrol.h"
|
||||||
|
#include "bbcameraimagecapturecontrol.h"
|
||||||
|
#include "bbcameraimageprocessingcontrol.h"
|
||||||
|
#include "bbcameralockscontrol.h"
|
||||||
|
#include "bbcameramediarecordercontrol.h"
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
#include "bbcameravideoencodersettingscontrol.h"
|
||||||
|
#include "bbcameraviewfindersettingscontrol.h"
|
||||||
|
#include "bbcamerazoomcontrol.h"
|
||||||
|
#include "bbimageencodercontrol.h"
|
||||||
|
#include "bbvideodeviceselectorcontrol.h"
|
||||||
|
#include "bbvideorenderercontrol.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraService::BbCameraService(QObject *parent)
|
||||||
|
: QMediaService(parent)
|
||||||
|
, m_cameraSession(new BbCameraSession(this))
|
||||||
|
, m_cameraAudioEncoderSettingsControl(new BbCameraAudioEncoderSettingsControl(m_cameraSession, this))
|
||||||
|
, m_cameraCaptureBufferFormatControl(new BbCameraCaptureBufferFormatControl(this))
|
||||||
|
, m_cameraCaptureDestinationControl(new BbCameraCaptureDestinationControl(m_cameraSession, this))
|
||||||
|
, m_cameraControl(new BbCameraControl(m_cameraSession, this))
|
||||||
|
, m_cameraExposureControl(new BbCameraExposureControl(m_cameraSession, this))
|
||||||
|
, m_cameraFlashControl(new BbCameraFlashControl(m_cameraSession, this))
|
||||||
|
, m_cameraFocusControl(new BbCameraFocusControl(m_cameraSession, this))
|
||||||
|
, m_cameraImageCaptureControl(new BbCameraImageCaptureControl(m_cameraSession, this))
|
||||||
|
, m_cameraImageProcessingControl(new BbCameraImageProcessingControl(m_cameraSession, this))
|
||||||
|
, m_cameraLocksControl(new BbCameraLocksControl(m_cameraSession, this))
|
||||||
|
, m_cameraMediaRecorderControl(new BbCameraMediaRecorderControl(m_cameraSession, this))
|
||||||
|
, m_cameraVideoEncoderSettingsControl(new BbCameraVideoEncoderSettingsControl(m_cameraSession, this))
|
||||||
|
, m_cameraViewfinderSettingsControl(new BbCameraViewfinderSettingsControl(m_cameraSession, this))
|
||||||
|
, m_cameraZoomControl(new BbCameraZoomControl(m_cameraSession, this))
|
||||||
|
, m_imageEncoderControl(new BbImageEncoderControl(m_cameraSession, this))
|
||||||
|
, m_videoDeviceSelectorControl(new BbVideoDeviceSelectorControl(m_cameraSession, this))
|
||||||
|
, m_videoRendererControl(new BbVideoRendererControl(m_cameraSession, this))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BbCameraService::~BbCameraService()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QMediaControl* BbCameraService::requestControl(const char *name)
|
||||||
|
{
|
||||||
|
if (qstrcmp(name, QAudioEncoderSettingsControl_iid) == 0)
|
||||||
|
return m_cameraAudioEncoderSettingsControl;
|
||||||
|
else if (qstrcmp(name, QCameraCaptureBufferFormatControl_iid) == 0)
|
||||||
|
return m_cameraCaptureBufferFormatControl;
|
||||||
|
else if (qstrcmp(name, QCameraCaptureDestinationControl_iid) == 0)
|
||||||
|
return m_cameraCaptureDestinationControl;
|
||||||
|
else if (qstrcmp(name, QCameraControl_iid) == 0)
|
||||||
|
return m_cameraControl;
|
||||||
|
else if (qstrcmp(name, QCameraExposureControl_iid) == 0)
|
||||||
|
return m_cameraExposureControl;
|
||||||
|
else if (qstrcmp(name, QCameraFlashControl_iid) == 0)
|
||||||
|
return m_cameraFlashControl;
|
||||||
|
else if (qstrcmp(name, QCameraFocusControl_iid) == 0)
|
||||||
|
return m_cameraFocusControl;
|
||||||
|
else if (qstrcmp(name, QCameraImageCaptureControl_iid) == 0)
|
||||||
|
return m_cameraImageCaptureControl;
|
||||||
|
else if (qstrcmp(name, QCameraImageProcessingControl_iid) == 0)
|
||||||
|
return m_cameraImageProcessingControl;
|
||||||
|
else if (qstrcmp(name, QCameraLocksControl_iid) == 0)
|
||||||
|
return m_cameraLocksControl;
|
||||||
|
else if (qstrcmp(name, QMediaRecorderControl_iid) == 0)
|
||||||
|
return m_cameraMediaRecorderControl;
|
||||||
|
else if (qstrcmp(name, QVideoEncoderSettingsControl_iid) == 0)
|
||||||
|
return m_cameraVideoEncoderSettingsControl;
|
||||||
|
else if (qstrcmp(name, QCameraViewfinderSettingsControl_iid) == 0)
|
||||||
|
return m_cameraViewfinderSettingsControl;
|
||||||
|
else if (qstrcmp(name, QCameraZoomControl_iid) == 0)
|
||||||
|
return m_cameraZoomControl;
|
||||||
|
else if (qstrcmp(name, QImageEncoderControl_iid) == 0)
|
||||||
|
return m_imageEncoderControl;
|
||||||
|
else if (qstrcmp(name, QVideoDeviceSelectorControl_iid) == 0)
|
||||||
|
return m_videoDeviceSelectorControl;
|
||||||
|
else if (qstrcmp(name, QVideoRendererControl_iid) == 0)
|
||||||
|
return m_videoRendererControl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraService::releaseControl(QMediaControl *control)
|
||||||
|
{
|
||||||
|
Q_UNUSED(control)
|
||||||
|
|
||||||
|
// Implemented as a singleton, so we do nothing.
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
104
src/plugins/blackberry/camera/bbcameraservice.h
Normal file
104
src/plugins/blackberry/camera/bbcameraservice.h
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERASERVICE_H
|
||||||
|
#define BBCAMERASERVICE_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include <qmediaservice.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraAudioEncoderSettingsControl;
|
||||||
|
class BbCameraCaptureBufferFormatControl;
|
||||||
|
class BbCameraCaptureDestinationControl;
|
||||||
|
class BbCameraControl;
|
||||||
|
class BbCameraExposureControl;
|
||||||
|
class BbCameraFlashControl;
|
||||||
|
class BbCameraFocusControl;
|
||||||
|
class BbCameraImageCaptureControl;
|
||||||
|
class BbCameraImageProcessingControl;
|
||||||
|
class BbCameraLocksControl;
|
||||||
|
class BbCameraMediaRecorderControl;
|
||||||
|
class BbCameraSession;
|
||||||
|
class BbCameraVideoEncoderSettingsControl;
|
||||||
|
class BbCameraViewfinderSettingsControl;
|
||||||
|
class BbCameraZoomControl;
|
||||||
|
class BbImageEncoderControl;
|
||||||
|
class BbVideoDeviceSelectorControl;
|
||||||
|
class BbVideoRendererControl;
|
||||||
|
|
||||||
|
class BbCameraService : public QMediaService
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit BbCameraService(QObject *parent = 0);
|
||||||
|
~BbCameraService();
|
||||||
|
|
||||||
|
virtual QMediaControl* requestControl(const char *name);
|
||||||
|
virtual void releaseControl(QMediaControl *control);
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession* m_cameraSession;
|
||||||
|
|
||||||
|
BbCameraAudioEncoderSettingsControl* m_cameraAudioEncoderSettingsControl;
|
||||||
|
BbCameraCaptureBufferFormatControl* m_cameraCaptureBufferFormatControl;
|
||||||
|
BbCameraCaptureDestinationControl* m_cameraCaptureDestinationControl;
|
||||||
|
BbCameraControl* m_cameraControl;
|
||||||
|
BbCameraExposureControl* m_cameraExposureControl;
|
||||||
|
BbCameraFlashControl* m_cameraFlashControl;
|
||||||
|
BbCameraFocusControl* m_cameraFocusControl;
|
||||||
|
BbCameraImageCaptureControl* m_cameraImageCaptureControl;
|
||||||
|
BbCameraImageProcessingControl* m_cameraImageProcessingControl;
|
||||||
|
BbCameraLocksControl* m_cameraLocksControl;
|
||||||
|
BbCameraMediaRecorderControl* m_cameraMediaRecorderControl;
|
||||||
|
BbCameraVideoEncoderSettingsControl* m_cameraVideoEncoderSettingsControl;
|
||||||
|
BbCameraViewfinderSettingsControl* m_cameraViewfinderSettingsControl;
|
||||||
|
BbCameraZoomControl* m_cameraZoomControl;
|
||||||
|
BbImageEncoderControl* m_imageEncoderControl;
|
||||||
|
BbVideoDeviceSelectorControl* m_videoDeviceSelectorControl;
|
||||||
|
BbVideoRendererControl* m_videoRendererControl;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
1343
src/plugins/blackberry/camera/bbcamerasession.cpp
Normal file
1343
src/plugins/blackberry/camera/bbcamerasession.cpp
Normal file
File diff suppressed because it is too large
Load Diff
234
src/plugins/blackberry/camera/bbcamerasession.h
Normal file
234
src/plugins/blackberry/camera/bbcamerasession.h
Normal file
@@ -0,0 +1,234 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERASESSION_H
|
||||||
|
#define BBCAMERASESSION_H
|
||||||
|
|
||||||
|
#include "bbmediastoragelocation.h"
|
||||||
|
|
||||||
|
#include <QCamera>
|
||||||
|
#include <QCameraImageCapture>
|
||||||
|
#include <QCameraViewfinderSettingsControl>
|
||||||
|
#include <QElapsedTimer>
|
||||||
|
#include <QMediaRecorder>
|
||||||
|
#include <QMutex>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
#include <camera/camera_api.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraOrientationHandler;
|
||||||
|
|
||||||
|
class BbCameraSession : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraSession(QObject *parent = 0);
|
||||||
|
~BbCameraSession();
|
||||||
|
|
||||||
|
camera_handle_t handle() const;
|
||||||
|
|
||||||
|
// camera control
|
||||||
|
QCamera::State state() const;
|
||||||
|
void setState(QCamera::State state);
|
||||||
|
QCamera::Status status() const;
|
||||||
|
QCamera::CaptureModes captureMode() const;
|
||||||
|
void setCaptureMode(QCamera::CaptureModes);
|
||||||
|
bool isCaptureModeSupported(QCamera::CaptureModes mode) const;
|
||||||
|
|
||||||
|
// video device selector control
|
||||||
|
static QByteArray cameraIdentifierFront();
|
||||||
|
static QByteArray cameraIdentifierRear();
|
||||||
|
static QByteArray cameraIdentifierDesktop();
|
||||||
|
|
||||||
|
void setDevice(const QByteArray &device);
|
||||||
|
QByteArray device() const;
|
||||||
|
|
||||||
|
// video renderer control
|
||||||
|
QAbstractVideoSurface *surface() const;
|
||||||
|
void setSurface(QAbstractVideoSurface *surface);
|
||||||
|
|
||||||
|
// image capture control
|
||||||
|
bool isReadyForCapture() const;
|
||||||
|
QCameraImageCapture::DriveMode driveMode() const;
|
||||||
|
void setDriveMode(QCameraImageCapture::DriveMode mode);
|
||||||
|
int capture(const QString &fileName);
|
||||||
|
void cancelCapture();
|
||||||
|
|
||||||
|
// capture destination control
|
||||||
|
bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const;
|
||||||
|
QCameraImageCapture::CaptureDestinations captureDestination() const;
|
||||||
|
void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination);
|
||||||
|
|
||||||
|
// image encoder control
|
||||||
|
QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous) const;
|
||||||
|
QImageEncoderSettings imageSettings() const;
|
||||||
|
void setImageSettings(const QImageEncoderSettings &settings);
|
||||||
|
|
||||||
|
// locks control
|
||||||
|
enum LocksApplyMode
|
||||||
|
{
|
||||||
|
IndependentMode,
|
||||||
|
FocusExposureBoundMode,
|
||||||
|
AllBoundMode,
|
||||||
|
FocusOnlyMode
|
||||||
|
};
|
||||||
|
|
||||||
|
QCamera::LockTypes supportedLocks() const;
|
||||||
|
QCamera::LockStatus lockStatus(QCamera::LockType lock) const;
|
||||||
|
void searchAndLock(QCamera::LockTypes locks);
|
||||||
|
void unlock(QCamera::LockTypes locks);
|
||||||
|
|
||||||
|
// media recorder control
|
||||||
|
QUrl outputLocation() const;
|
||||||
|
bool setOutputLocation(const QUrl &location);
|
||||||
|
QMediaRecorder::State videoState() const;
|
||||||
|
void setVideoState(QMediaRecorder::State state);
|
||||||
|
QMediaRecorder::Status videoStatus() const;
|
||||||
|
qint64 duration() const;
|
||||||
|
void applySettings();
|
||||||
|
|
||||||
|
// video encoder settings control
|
||||||
|
QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous) const;
|
||||||
|
QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous) const;
|
||||||
|
QVideoEncoderSettings videoSettings() const;
|
||||||
|
void setVideoSettings(const QVideoEncoderSettings &settings);
|
||||||
|
|
||||||
|
// audio encoder settings control
|
||||||
|
QAudioEncoderSettings audioSettings() const;
|
||||||
|
void setAudioSettings(const QAudioEncoderSettings &settings);
|
||||||
|
|
||||||
|
// methods invoked from BB10 camera API callbacks in separated thread
|
||||||
|
void handlePhotoViewFinderData(camera_buffer_t*);
|
||||||
|
void handleVideoViewFinderData(camera_buffer_t*);
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
// camera control
|
||||||
|
void statusChanged(QCamera::Status);
|
||||||
|
void stateChanged(QCamera::State);
|
||||||
|
void error(int error, const QString &errorString);
|
||||||
|
void captureModeChanged(QCamera::CaptureModes);
|
||||||
|
|
||||||
|
// image capture control
|
||||||
|
void readyForCaptureChanged(bool);
|
||||||
|
void imageExposed(int id);
|
||||||
|
void imageCaptured(int id, const QImage &preview);
|
||||||
|
void imageMetadataAvailable(int id, const QString &key, const QVariant &value);
|
||||||
|
void imageAvailable(int id, const QVideoFrame &buffer);
|
||||||
|
void imageSaved(int id, const QString &fileName);
|
||||||
|
void imageCaptureError(int id, int error, const QString &errorString);
|
||||||
|
|
||||||
|
// capture destination control
|
||||||
|
void captureDestinationChanged(QCameraImageCapture::CaptureDestinations destination);
|
||||||
|
|
||||||
|
// locks control
|
||||||
|
void lockStatusChanged(QCamera::LockType type, QCamera::LockStatus status, QCamera::LockChangeReason reason);
|
||||||
|
|
||||||
|
// media recorder control
|
||||||
|
void videoStateChanged(QMediaRecorder::State state);
|
||||||
|
void videoStatusChanged(QMediaRecorder::Status status);
|
||||||
|
void durationChanged(qint64 duration);
|
||||||
|
void actualLocationChanged(const QUrl &location);
|
||||||
|
void videoError(int error, const QString &errorString);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void updateReadyForCapture();
|
||||||
|
void imageCaptured(int, const QImage&, const QString&);
|
||||||
|
void handleFocusStatusChanged(int);
|
||||||
|
void handleVideoRecordingPaused();
|
||||||
|
void handleVideoRecordingResumed();
|
||||||
|
void deviceOrientationChanged(int);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool openCamera();
|
||||||
|
void closeCamera();
|
||||||
|
bool startViewFinder();
|
||||||
|
void stopViewFinder();
|
||||||
|
void applyConfiguration();
|
||||||
|
bool startVideoRecording();
|
||||||
|
void stopVideoRecording();
|
||||||
|
|
||||||
|
bool isCaptureModeSupported(camera_handle_t handle, QCamera::CaptureModes mode) const;
|
||||||
|
QList<QSize> supportedResolutions(QCamera::CaptureMode mode) const;
|
||||||
|
QList<QSize> supportedViewfinderResolutions(QCamera::CaptureMode mode) const;
|
||||||
|
QSize currentViewfinderResolution(QCamera::CaptureMode mode) const;
|
||||||
|
|
||||||
|
quint32 m_nativeCameraOrientation;
|
||||||
|
BbCameraOrientationHandler* m_orientationHandler;
|
||||||
|
|
||||||
|
QCamera::Status m_status;
|
||||||
|
QCamera::State m_state;
|
||||||
|
QCamera::CaptureModes m_captureMode;
|
||||||
|
|
||||||
|
QByteArray m_device;
|
||||||
|
|
||||||
|
QPointer<QAbstractVideoSurface> m_surface;
|
||||||
|
QMutex m_surfaceMutex;
|
||||||
|
|
||||||
|
QCameraImageCapture::DriveMode m_captureImageDriveMode;
|
||||||
|
int m_lastImageCaptureId;
|
||||||
|
QCameraImageCapture::CaptureDestinations m_captureDestination;
|
||||||
|
|
||||||
|
QImageEncoderSettings m_imageEncoderSettings;
|
||||||
|
|
||||||
|
LocksApplyMode m_locksApplyMode;
|
||||||
|
QCamera::LockStatus m_focusLockStatus;
|
||||||
|
QCamera::LockTypes m_currentLockTypes;
|
||||||
|
|
||||||
|
QString m_videoOutputLocation;
|
||||||
|
QMediaRecorder::State m_videoState;
|
||||||
|
QMediaRecorder::Status m_videoStatus;
|
||||||
|
QElapsedTimer m_videoRecordingDuration;
|
||||||
|
|
||||||
|
QVideoEncoderSettings m_videoEncoderSettings;
|
||||||
|
QAudioEncoderSettings m_audioEncoderSettings;
|
||||||
|
|
||||||
|
BbMediaStorageLocation m_mediaStorageLocation;
|
||||||
|
|
||||||
|
camera_handle_t m_handle;
|
||||||
|
};
|
||||||
|
|
||||||
|
QDebug operator<<(QDebug debug, camera_error_t error);
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameravideoencodersettingscontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraVideoEncoderSettingsControl::BbCameraVideoEncoderSettingsControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QVideoEncoderSettingsControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QSize> BbCameraVideoEncoderSettingsControl::supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous) const
|
||||||
|
{
|
||||||
|
return m_session->supportedResolutions(settings, continuous);
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<qreal> BbCameraVideoEncoderSettingsControl::supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous) const
|
||||||
|
{
|
||||||
|
return m_session->supportedFrameRates(settings, continuous);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList BbCameraVideoEncoderSettingsControl::supportedVideoCodecs() const
|
||||||
|
{
|
||||||
|
return QStringList() << QLatin1String("none") << QLatin1String("avc1") << QLatin1String("h264");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbCameraVideoEncoderSettingsControl::videoCodecDescription(const QString &codecName) const
|
||||||
|
{
|
||||||
|
if (codecName == QLatin1String("none"))
|
||||||
|
return tr("No compression");
|
||||||
|
else if (codecName == QLatin1String("avc1"))
|
||||||
|
return tr("AVC1 compression");
|
||||||
|
else if (codecName == QLatin1String("h264"))
|
||||||
|
return tr("H264 compression");
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVideoEncoderSettings BbCameraVideoEncoderSettingsControl::videoSettings() const
|
||||||
|
{
|
||||||
|
return m_session->videoSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraVideoEncoderSettingsControl::setVideoSettings(const QVideoEncoderSettings &settings)
|
||||||
|
{
|
||||||
|
m_session->setVideoSettings(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAVIDEOENCODERSETTINGSCONTROL_H
|
||||||
|
#define BBCAMERAVIDEOENCODERSETTINGSCONTROL_H
|
||||||
|
|
||||||
|
#include <qvideoencodersettingscontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraVideoEncoderSettingsControl : public QVideoEncoderSettingsControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraVideoEncoderSettingsControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
|
||||||
|
QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
|
||||||
|
QStringList supportedVideoCodecs() const Q_DECL_OVERRIDE;
|
||||||
|
QString videoCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
|
||||||
|
QVideoEncoderSettings videoSettings() const Q_DECL_OVERRIDE;
|
||||||
|
void setVideoSettings(const QVideoEncoderSettings &settings) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcameraviewfindersettingscontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraViewfinderSettingsControl::BbCameraViewfinderSettingsControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraViewfinderSettingsControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BbCameraViewfinderSettingsControl::isViewfinderParameterSupported(ViewfinderParameter parameter) const
|
||||||
|
{
|
||||||
|
switch (parameter) {
|
||||||
|
case QCameraViewfinderSettingsControl::Resolution:
|
||||||
|
return true;
|
||||||
|
case QCameraViewfinderSettingsControl::PixelAspectRatio:
|
||||||
|
return false;
|
||||||
|
case QCameraViewfinderSettingsControl::MinimumFrameRate:
|
||||||
|
return true;
|
||||||
|
case QCameraViewfinderSettingsControl::MaximumFrameRate:
|
||||||
|
return true;
|
||||||
|
case QCameraViewfinderSettingsControl::PixelFormat:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant BbCameraViewfinderSettingsControl::viewfinderParameter(ViewfinderParameter parameter) const
|
||||||
|
{
|
||||||
|
if (parameter == QCameraViewfinderSettingsControl::Resolution) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
unsigned int width = 0;
|
||||||
|
unsigned int height = 0;
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage) {
|
||||||
|
result = camera_get_photovf_property(m_session->handle(), CAMERA_IMGPROP_WIDTH, &width,
|
||||||
|
CAMERA_IMGPROP_HEIGHT, &height);
|
||||||
|
} else if (m_session->captureMode() & QCamera::CaptureVideo) {
|
||||||
|
result = camera_get_videovf_property(m_session->handle(), CAMERA_IMGPROP_WIDTH, &width,
|
||||||
|
CAMERA_IMGPROP_HEIGHT, &height);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve resolution of viewfinder:" << result;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
return QSize(width, height);
|
||||||
|
|
||||||
|
} else if (parameter == QCameraViewfinderSettingsControl::MinimumFrameRate) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
double minimumFrameRate = 0;
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_get_photovf_property(m_session->handle(), CAMERA_IMGPROP_MINFRAMERATE, &minimumFrameRate);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_get_videovf_property(m_session->handle(), CAMERA_IMGPROP_MINFRAMERATE, &minimumFrameRate);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve minimum framerate of viewfinder:" << result;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
return QVariant(static_cast<qreal>(minimumFrameRate));
|
||||||
|
|
||||||
|
} else if (parameter == QCameraViewfinderSettingsControl::MaximumFrameRate) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
double maximumFrameRate = 0;
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_get_photovf_property(m_session->handle(), CAMERA_IMGPROP_FRAMERATE, &maximumFrameRate);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_get_videovf_property(m_session->handle(), CAMERA_IMGPROP_FRAMERATE, &maximumFrameRate);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve maximum framerate of viewfinder:" << result;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
return QVariant(static_cast<qreal>(maximumFrameRate));
|
||||||
|
} else if (parameter == QCameraViewfinderSettingsControl::PixelFormat) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
camera_frametype_t format = CAMERA_FRAMETYPE_UNSPECIFIED;
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_get_photovf_property(m_session->handle(), CAMERA_IMGPROP_FORMAT, &format);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_get_videovf_property(m_session->handle(), CAMERA_IMGPROP_FORMAT, &format);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve pixel format of viewfinder:" << result;
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (format) {
|
||||||
|
case CAMERA_FRAMETYPE_UNSPECIFIED:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
case CAMERA_FRAMETYPE_NV12:
|
||||||
|
return QVideoFrame::Format_NV12;
|
||||||
|
case CAMERA_FRAMETYPE_RGB8888:
|
||||||
|
return QVideoFrame::Format_ARGB32;
|
||||||
|
case CAMERA_FRAMETYPE_RGB888:
|
||||||
|
return QVideoFrame::Format_RGB24;
|
||||||
|
case CAMERA_FRAMETYPE_JPEG:
|
||||||
|
return QVideoFrame::Format_Jpeg;
|
||||||
|
case CAMERA_FRAMETYPE_GRAY8:
|
||||||
|
return QVideoFrame::Format_Y8;
|
||||||
|
case CAMERA_FRAMETYPE_METADATA:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
case CAMERA_FRAMETYPE_BAYER:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
case CAMERA_FRAMETYPE_CBYCRY:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
case CAMERA_FRAMETYPE_COMPRESSEDVIDEO:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
case CAMERA_FRAMETYPE_COMPRESSEDAUDIO:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
default:
|
||||||
|
return QVideoFrame::Format_Invalid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraViewfinderSettingsControl::setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value)
|
||||||
|
{
|
||||||
|
if (parameter == QCameraViewfinderSettingsControl::Resolution) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
const QSize size = value.toSize();
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage) {
|
||||||
|
result = camera_set_photovf_property(m_session->handle(), CAMERA_IMGPROP_WIDTH, size.width(),
|
||||||
|
CAMERA_IMGPROP_HEIGHT, size.height());
|
||||||
|
} else if (m_session->captureMode() & QCamera::CaptureVideo) {
|
||||||
|
result = camera_set_videovf_property(m_session->handle(), CAMERA_IMGPROP_WIDTH, size.width(),
|
||||||
|
CAMERA_IMGPROP_HEIGHT, size.height());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to set resolution of viewfinder:" << result;
|
||||||
|
|
||||||
|
} else if (parameter == QCameraViewfinderSettingsControl::MinimumFrameRate) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
const double minimumFrameRate = value.toReal();
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_set_photovf_property(m_session->handle(), CAMERA_IMGPROP_MINFRAMERATE, minimumFrameRate);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_set_videovf_property(m_session->handle(), CAMERA_IMGPROP_MINFRAMERATE, minimumFrameRate);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to set minimum framerate of viewfinder:" << result;
|
||||||
|
|
||||||
|
} else if (parameter == QCameraViewfinderSettingsControl::MaximumFrameRate) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
const double maximumFrameRate = value.toReal();
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_set_photovf_property(m_session->handle(), CAMERA_IMGPROP_FRAMERATE, maximumFrameRate);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_set_videovf_property(m_session->handle(), CAMERA_IMGPROP_FRAMERATE, maximumFrameRate);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to set maximum framerate of viewfinder:" << result;
|
||||||
|
|
||||||
|
} else if (parameter == QCameraViewfinderSettingsControl::PixelFormat) {
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
camera_frametype_t format = CAMERA_FRAMETYPE_UNSPECIFIED;
|
||||||
|
|
||||||
|
switch (value.value<QVideoFrame::PixelFormat>()) {
|
||||||
|
case QVideoFrame::Format_NV12:
|
||||||
|
format = CAMERA_FRAMETYPE_NV12;
|
||||||
|
break;
|
||||||
|
case QVideoFrame::Format_ARGB32:
|
||||||
|
format = CAMERA_FRAMETYPE_RGB8888;
|
||||||
|
break;
|
||||||
|
case QVideoFrame::Format_RGB24:
|
||||||
|
format = CAMERA_FRAMETYPE_RGB888;
|
||||||
|
break;
|
||||||
|
case QVideoFrame::Format_Jpeg:
|
||||||
|
format = CAMERA_FRAMETYPE_JPEG;
|
||||||
|
break;
|
||||||
|
case QVideoFrame::Format_Y8:
|
||||||
|
format = CAMERA_FRAMETYPE_GRAY8;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
format = CAMERA_FRAMETYPE_UNSPECIFIED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_set_photovf_property(m_session->handle(), CAMERA_IMGPROP_FORMAT, format);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_set_videovf_property(m_session->handle(), CAMERA_IMGPROP_FORMAT, format);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
qWarning() << "Unable to set pixel format of viewfinder:" << result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAVIEWVINDERSETTINGSCONTROL_H
|
||||||
|
#define BBCAMERAVIEWVINDERSETTINGSCONTROL_H
|
||||||
|
|
||||||
|
#include <qcameraviewfindersettingscontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraViewfinderSettingsControl : public QCameraViewfinderSettingsControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraViewfinderSettingsControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
bool isViewfinderParameterSupported(ViewfinderParameter parameter) const Q_DECL_OVERRIDE;
|
||||||
|
QVariant viewfinderParameter(ViewfinderParameter parameter) const Q_DECL_OVERRIDE;
|
||||||
|
void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
157
src/plugins/blackberry/camera/bbcamerazoomcontrol.cpp
Normal file
157
src/plugins/blackberry/camera/bbcamerazoomcontrol.cpp
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbcamerazoomcontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbCameraZoomControl::BbCameraZoomControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QCameraZoomControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
, m_minimumZoomFactor(1.0)
|
||||||
|
, m_maximumZoomFactor(1.0)
|
||||||
|
, m_supportsSmoothZoom(false)
|
||||||
|
, m_requestedZoomFactor(1.0)
|
||||||
|
{
|
||||||
|
connect(m_session, SIGNAL(statusChanged(QCamera::Status)), this, SLOT(statusChanged(QCamera::Status)));
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraZoomControl::maximumOpticalZoom() const
|
||||||
|
{
|
||||||
|
//TODO: optical zoom support not available in BB10 API yet
|
||||||
|
return 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraZoomControl::maximumDigitalZoom() const
|
||||||
|
{
|
||||||
|
return m_maximumZoomFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraZoomControl::requestedOpticalZoom() const
|
||||||
|
{
|
||||||
|
//TODO: optical zoom support not available in BB10 API yet
|
||||||
|
return 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraZoomControl::requestedDigitalZoom() const
|
||||||
|
{
|
||||||
|
return currentDigitalZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraZoomControl::currentOpticalZoom() const
|
||||||
|
{
|
||||||
|
//TODO: optical zoom support not available in BB10 API yet
|
||||||
|
return 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal BbCameraZoomControl::currentDigitalZoom() const
|
||||||
|
{
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus)
|
||||||
|
return 1.0;
|
||||||
|
|
||||||
|
unsigned int zoomFactor = 0;
|
||||||
|
camera_error_t result = CAMERA_EOK;
|
||||||
|
|
||||||
|
if (m_session->captureMode() & QCamera::CaptureStillImage)
|
||||||
|
result = camera_get_photovf_property(m_session->handle(), CAMERA_IMGPROP_ZOOMFACTOR, &zoomFactor);
|
||||||
|
else if (m_session->captureMode() & QCamera::CaptureVideo)
|
||||||
|
result = camera_get_videovf_property(m_session->handle(), CAMERA_IMGPROP_ZOOMFACTOR, &zoomFactor);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK)
|
||||||
|
return 1.0;
|
||||||
|
|
||||||
|
return zoomFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraZoomControl::zoomTo(qreal optical, qreal digital)
|
||||||
|
{
|
||||||
|
Q_UNUSED(optical)
|
||||||
|
|
||||||
|
if (m_session->status() != QCamera::ActiveStatus)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const qreal actualZoom = qBound(m_minimumZoomFactor, digital, m_maximumZoomFactor);
|
||||||
|
|
||||||
|
const camera_error_t result = camera_set_zoom(m_session->handle(), actualZoom, false);
|
||||||
|
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to change zoom factor:" << result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_requestedZoomFactor != digital) {
|
||||||
|
m_requestedZoomFactor = digital;
|
||||||
|
emit requestedDigitalZoomChanged(m_requestedZoomFactor);
|
||||||
|
}
|
||||||
|
|
||||||
|
emit currentDigitalZoomChanged(actualZoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbCameraZoomControl::statusChanged(QCamera::Status status)
|
||||||
|
{
|
||||||
|
if (status == QCamera::ActiveStatus) {
|
||||||
|
// retrieve information about zoom limits
|
||||||
|
unsigned int maximumZoomLimit = 0;
|
||||||
|
unsigned int minimumZoomLimit = 0;
|
||||||
|
bool smoothZoom = false;
|
||||||
|
|
||||||
|
const camera_error_t result = camera_get_zoom_limits(m_session->handle(), &maximumZoomLimit, &minimumZoomLimit, &smoothZoom);
|
||||||
|
if (result == CAMERA_EOK) {
|
||||||
|
const qreal oldMaximumZoomFactor = m_maximumZoomFactor;
|
||||||
|
m_maximumZoomFactor = maximumZoomLimit;
|
||||||
|
|
||||||
|
if (oldMaximumZoomFactor != m_maximumZoomFactor)
|
||||||
|
emit maximumDigitalZoomChanged(m_maximumZoomFactor);
|
||||||
|
|
||||||
|
m_minimumZoomFactor = minimumZoomLimit;
|
||||||
|
m_supportsSmoothZoom = smoothZoom;
|
||||||
|
} else {
|
||||||
|
m_maximumZoomFactor = 1.0;
|
||||||
|
m_minimumZoomFactor = 1.0;
|
||||||
|
m_supportsSmoothZoom = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
79
src/plugins/blackberry/camera/bbcamerazoomcontrol.h
Normal file
79
src/plugins/blackberry/camera/bbcamerazoomcontrol.h
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBCAMERAZOOMCONTROL_H
|
||||||
|
#define BBCAMERAZOOMCONTROL_H
|
||||||
|
|
||||||
|
#include <qcamera.h>
|
||||||
|
#include <qcamerazoomcontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbCameraZoomControl : public QCameraZoomControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbCameraZoomControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
qreal maximumOpticalZoom() const Q_DECL_OVERRIDE;
|
||||||
|
qreal maximumDigitalZoom() const Q_DECL_OVERRIDE;
|
||||||
|
qreal requestedOpticalZoom() const Q_DECL_OVERRIDE;
|
||||||
|
qreal requestedDigitalZoom() const Q_DECL_OVERRIDE;
|
||||||
|
qreal currentOpticalZoom() const Q_DECL_OVERRIDE;
|
||||||
|
qreal currentDigitalZoom() const Q_DECL_OVERRIDE;
|
||||||
|
void zoomTo(qreal optical, qreal digital) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void statusChanged(QCamera::Status status);
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
|
||||||
|
qreal m_minimumZoomFactor;
|
||||||
|
qreal m_maximumZoomFactor;
|
||||||
|
bool m_supportsSmoothZoom;
|
||||||
|
qreal m_requestedZoomFactor;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
81
src/plugins/blackberry/camera/bbimageencodercontrol.cpp
Normal file
81
src/plugins/blackberry/camera/bbimageencodercontrol.cpp
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbimageencodercontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbImageEncoderControl::BbImageEncoderControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QImageEncoderControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList BbImageEncoderControl::supportedImageCodecs() const
|
||||||
|
{
|
||||||
|
return QStringList() << QLatin1String("jpeg");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbImageEncoderControl::imageCodecDescription(const QString &codecName) const
|
||||||
|
{
|
||||||
|
if (codecName == QLatin1String("jpeg"))
|
||||||
|
return tr("JPEG image");
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QSize> BbImageEncoderControl::supportedResolutions(const QImageEncoderSettings &settings, bool *continuous) const
|
||||||
|
{
|
||||||
|
return m_session->supportedResolutions(settings, continuous);
|
||||||
|
}
|
||||||
|
|
||||||
|
QImageEncoderSettings BbImageEncoderControl::imageSettings() const
|
||||||
|
{
|
||||||
|
return m_session->imageSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbImageEncoderControl::setImageSettings(const QImageEncoderSettings &settings)
|
||||||
|
{
|
||||||
|
m_session->setImageSettings(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
68
src/plugins/blackberry/camera/bbimageencodercontrol.h
Normal file
68
src/plugins/blackberry/camera/bbimageencodercontrol.h
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBIMAGEENCODERCONTROL_H
|
||||||
|
#define BBIMAGEENCODERCONTROL_H
|
||||||
|
|
||||||
|
#include <qimageencodercontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbImageEncoderControl : public QImageEncoderControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbImageEncoderControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QStringList supportedImageCodecs() const Q_DECL_OVERRIDE;
|
||||||
|
QString imageCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
|
||||||
|
QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
|
||||||
|
QImageEncoderSettings imageSettings() const Q_DECL_OVERRIDE;
|
||||||
|
void setImageSettings(const QImageEncoderSettings &settings) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
119
src/plugins/blackberry/camera/bbmediastoragelocation.cpp
Normal file
119
src/plugins/blackberry/camera/bbmediastoragelocation.cpp
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbmediastoragelocation.h"
|
||||||
|
|
||||||
|
#include <QStandardPaths>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbMediaStorageLocation::BbMediaStorageLocation()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QDir BbMediaStorageLocation::defaultDir(QCamera::CaptureMode mode) const
|
||||||
|
{
|
||||||
|
QStringList dirCandidates;
|
||||||
|
|
||||||
|
dirCandidates << QLatin1String("shared/camera");
|
||||||
|
|
||||||
|
if (mode == QCamera::CaptureVideo) {
|
||||||
|
dirCandidates << QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
|
||||||
|
} else {
|
||||||
|
dirCandidates << QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
dirCandidates << QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
|
||||||
|
dirCandidates << QDir::homePath();
|
||||||
|
dirCandidates << QDir::currentPath();
|
||||||
|
dirCandidates << QDir::tempPath();
|
||||||
|
|
||||||
|
Q_FOREACH (const QString &path, dirCandidates) {
|
||||||
|
if (QFileInfo(path).isWritable())
|
||||||
|
return QDir(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDir();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbMediaStorageLocation::generateFileName(const QString &requestedName, QCamera::CaptureMode mode, const QString &prefix, const QString &extension) const
|
||||||
|
{
|
||||||
|
if (requestedName.isEmpty())
|
||||||
|
return generateFileName(prefix, defaultDir(mode), extension);
|
||||||
|
|
||||||
|
if (QFileInfo(requestedName).isDir())
|
||||||
|
return generateFileName(prefix, QDir(requestedName), extension);
|
||||||
|
|
||||||
|
return requestedName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbMediaStorageLocation::generateFileName(const QString &prefix, const QDir &dir, const QString &extension) const
|
||||||
|
{
|
||||||
|
const QString lastMediaKey = dir.absolutePath() + QLatin1Char(' ') + prefix + QLatin1Char(' ') + extension;
|
||||||
|
qint64 lastMediaIndex = m_lastUsedIndex.value(lastMediaKey, 0);
|
||||||
|
|
||||||
|
if (lastMediaIndex == 0) {
|
||||||
|
// first run, find the maximum media number during the fist capture
|
||||||
|
Q_FOREACH (const QString &fileName, dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(extension))) {
|
||||||
|
const qint64 mediaIndex = fileName.mid(prefix.length(), fileName.size() - prefix.length() - extension.length() - 1).toInt();
|
||||||
|
lastMediaIndex = qMax(lastMediaIndex, mediaIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// don't just rely on cached lastMediaIndex value,
|
||||||
|
// someone else may create a file after camera started
|
||||||
|
while (true) {
|
||||||
|
const QString name = QString("%1%2.%3").arg(prefix)
|
||||||
|
.arg(lastMediaIndex + 1, 8, 10, QLatin1Char('0'))
|
||||||
|
.arg(extension);
|
||||||
|
|
||||||
|
const QString path = dir.absoluteFilePath(name);
|
||||||
|
if (!QFileInfo(path).exists()) {
|
||||||
|
m_lastUsedIndex[lastMediaKey] = lastMediaIndex + 1;
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastMediaIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
66
src/plugins/blackberry/camera/bbmediastoragelocation.h
Normal file
66
src/plugins/blackberry/camera/bbmediastoragelocation.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBMEDIASTORAGELOCATION_H
|
||||||
|
#define BBMEDIASTORAGELOCATION_H
|
||||||
|
|
||||||
|
#include <QCamera>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbMediaStorageLocation
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BbMediaStorageLocation();
|
||||||
|
|
||||||
|
QDir defaultDir(QCamera::CaptureMode mode) const;
|
||||||
|
|
||||||
|
QString generateFileName(const QString &requestedName, QCamera::CaptureMode mode, const QString &prefix, const QString &extension) const;
|
||||||
|
QString generateFileName(const QString &prefix, const QDir &dir, const QString &extension) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutable QHash<QString, qint64> m_lastUsedIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
146
src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.cpp
Normal file
146
src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.cpp
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#include "bbvideodeviceselectorcontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbVideoDeviceSelectorControl::BbVideoDeviceSelectorControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QVideoDeviceSelectorControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
, m_selected(0)
|
||||||
|
{
|
||||||
|
enumerateDevices(&m_devices, &m_descriptions);
|
||||||
|
|
||||||
|
// pre-select the rear camera
|
||||||
|
const int index = m_devices.indexOf(BbCameraSession::cameraIdentifierRear());
|
||||||
|
if (index != -1)
|
||||||
|
m_selected = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BbVideoDeviceSelectorControl::deviceCount() const
|
||||||
|
{
|
||||||
|
return m_devices.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbVideoDeviceSelectorControl::deviceName(int index) const
|
||||||
|
{
|
||||||
|
if (index < 0 || index >= m_devices.count())
|
||||||
|
return QString();
|
||||||
|
|
||||||
|
return QString::fromUtf8(m_devices.at(index));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BbVideoDeviceSelectorControl::deviceDescription(int index) const
|
||||||
|
{
|
||||||
|
if (index < 0 || index >= m_descriptions.count())
|
||||||
|
return QString();
|
||||||
|
|
||||||
|
return m_descriptions.at(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
int BbVideoDeviceSelectorControl::defaultDevice() const
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BbVideoDeviceSelectorControl::selectedDevice() const
|
||||||
|
{
|
||||||
|
return m_selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbVideoDeviceSelectorControl::enumerateDevices(QList<QByteArray> *devices, QStringList *descriptions)
|
||||||
|
{
|
||||||
|
devices->clear();
|
||||||
|
descriptions->clear();
|
||||||
|
|
||||||
|
camera_unit_t cameras[10];
|
||||||
|
|
||||||
|
unsigned int knownCameras = 0;
|
||||||
|
const camera_error_t result = camera_get_supported_cameras(10, &knownCameras, cameras);
|
||||||
|
if (result != CAMERA_EOK) {
|
||||||
|
qWarning() << "Unable to retrieve supported camera types:" << result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < knownCameras; ++i) {
|
||||||
|
switch (cameras[i]) {
|
||||||
|
case CAMERA_UNIT_FRONT:
|
||||||
|
devices->append(BbCameraSession::cameraIdentifierFront());
|
||||||
|
descriptions->append(tr("Front Camera"));
|
||||||
|
break;
|
||||||
|
case CAMERA_UNIT_REAR:
|
||||||
|
devices->append(BbCameraSession::cameraIdentifierRear());
|
||||||
|
descriptions->append(tr("Rear Camera"));
|
||||||
|
break;
|
||||||
|
case CAMERA_UNIT_DESKTOP:
|
||||||
|
devices->append(BbCameraSession::cameraIdentifierDesktop());
|
||||||
|
descriptions->append(tr("Desktop Camera"));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbVideoDeviceSelectorControl::setSelectedDevice(int index)
|
||||||
|
{
|
||||||
|
if (index < 0 || index >= m_devices.count())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!m_session)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const QByteArray device = m_devices.at(index);
|
||||||
|
if (device == m_session->device())
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_session->setDevice(device);
|
||||||
|
m_selected = index;
|
||||||
|
|
||||||
|
emit selectedDeviceChanged(QString::fromUtf8(device));
|
||||||
|
emit selectedDeviceChanged(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
79
src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.h
Normal file
79
src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.h
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBVIDEODEVICESELECTORCONTROL_H
|
||||||
|
#define BBVIDEODEVICESELECTORCONTROL_H
|
||||||
|
|
||||||
|
#include <qvideodeviceselectorcontrol.h>
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbVideoDeviceSelectorControl : public QVideoDeviceSelectorControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbVideoDeviceSelectorControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
int deviceCount() const Q_DECL_OVERRIDE;
|
||||||
|
QString deviceName(int index) const Q_DECL_OVERRIDE;
|
||||||
|
QString deviceDescription(int index) const Q_DECL_OVERRIDE;
|
||||||
|
int defaultDevice() const Q_DECL_OVERRIDE;
|
||||||
|
int selectedDevice() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
static void enumerateDevices(QList<QByteArray> *devices, QStringList *descriptions);
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void setSelectedDevice(int index) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession* m_session;
|
||||||
|
|
||||||
|
QList<QByteArray> m_devices;
|
||||||
|
QStringList m_descriptions;
|
||||||
|
|
||||||
|
int m_selected;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
64
src/plugins/blackberry/camera/bbvideorenderercontrol.cpp
Normal file
64
src/plugins/blackberry/camera/bbvideorenderercontrol.cpp
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "bbvideorenderercontrol.h"
|
||||||
|
|
||||||
|
#include "bbcamerasession.h"
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
BbVideoRendererControl::BbVideoRendererControl(BbCameraSession *session, QObject *parent)
|
||||||
|
: QVideoRendererControl(parent)
|
||||||
|
, m_session(session)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QAbstractVideoSurface* BbVideoRendererControl::surface() const
|
||||||
|
{
|
||||||
|
return m_session->surface();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BbVideoRendererControl::setSurface(QAbstractVideoSurface *surface)
|
||||||
|
{
|
||||||
|
m_session->setSurface(surface);
|
||||||
|
}
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
65
src/plugins/blackberry/camera/bbvideorenderercontrol.h
Normal file
65
src/plugins/blackberry/camera/bbvideorenderercontrol.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Research In Motion
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3.0 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU General Public License version 3.0 requirements will be
|
||||||
|
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
#ifndef BBVIDEORENDERERCONTROL_H
|
||||||
|
#define BBVIDEORENDERERCONTROL_H
|
||||||
|
|
||||||
|
#include <qvideorenderercontrol.h>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class BbCameraSession;
|
||||||
|
|
||||||
|
class BbVideoRendererControl : public QVideoRendererControl
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit BbVideoRendererControl(BbCameraSession *session, QObject *parent = 0);
|
||||||
|
|
||||||
|
QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE;
|
||||||
|
void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BbCameraSession *m_session;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
||||||
49
src/plugins/blackberry/camera/camera.pri
Normal file
49
src/plugins/blackberry/camera/camera.pri
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
INCLUDEPATH += $$PWD
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/bbcameraaudioencodersettingscontrol.h \
|
||||||
|
$$PWD/bbcameracapturebufferformatcontrol.h \
|
||||||
|
$$PWD/bbcameracapturedestinationcontrol.h \
|
||||||
|
$$PWD/bbcameracontrol.h \
|
||||||
|
$$PWD/bbcameraexposurecontrol.h \
|
||||||
|
$$PWD/bbcameraflashcontrol.h \
|
||||||
|
$$PWD/bbcamerafocuscontrol.h \
|
||||||
|
$$PWD/bbcameraimagecapturecontrol.h \
|
||||||
|
$$PWD/bbcameraimageprocessingcontrol.h \
|
||||||
|
$$PWD/bbcameralockscontrol.h \
|
||||||
|
$$PWD/bbcameramediarecordercontrol.h \
|
||||||
|
$$PWD/bbcameraorientationhandler.h \
|
||||||
|
$$PWD/bbcameraservice.h \
|
||||||
|
$$PWD/bbcamerasession.h \
|
||||||
|
$$PWD/bbcameravideoencodersettingscontrol.h \
|
||||||
|
$$PWD/bbcameraviewfindersettingscontrol.h \
|
||||||
|
$$PWD/bbcamerazoomcontrol.h \
|
||||||
|
$$PWD/bbimageencodercontrol.h \
|
||||||
|
$$PWD/bbmediastoragelocation.h \
|
||||||
|
$$PWD/bbvideodeviceselectorcontrol.h \
|
||||||
|
$$PWD/bbvideorenderercontrol.h
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
$$PWD/bbcameraaudioencodersettingscontrol.cpp \
|
||||||
|
$$PWD/bbcameracapturebufferformatcontrol.cpp \
|
||||||
|
$$PWD/bbcameracapturedestinationcontrol.cpp \
|
||||||
|
$$PWD/bbcameracontrol.cpp \
|
||||||
|
$$PWD/bbcameraexposurecontrol.cpp \
|
||||||
|
$$PWD/bbcameraflashcontrol.cpp \
|
||||||
|
$$PWD/bbcamerafocuscontrol.cpp \
|
||||||
|
$$PWD/bbcameraimagecapturecontrol.cpp \
|
||||||
|
$$PWD/bbcameraimageprocessingcontrol.cpp \
|
||||||
|
$$PWD/bbcameralockscontrol.cpp \
|
||||||
|
$$PWD/bbcameramediarecordercontrol.cpp \
|
||||||
|
$$PWD/bbcameraorientationhandler.cpp \
|
||||||
|
$$PWD/bbcameraservice.cpp \
|
||||||
|
$$PWD/bbcamerasession.cpp \
|
||||||
|
$$PWD/bbcameravideoencodersettingscontrol.cpp \
|
||||||
|
$$PWD/bbcameraviewfindersettingscontrol.cpp \
|
||||||
|
$$PWD/bbcamerazoomcontrol.cpp \
|
||||||
|
$$PWD/bbimageencodercontrol.cpp \
|
||||||
|
$$PWD/bbmediastoragelocation.cpp \
|
||||||
|
$$PWD/bbvideodeviceselectorcontrol.cpp \
|
||||||
|
$$PWD/bbvideorenderercontrol.cpp
|
||||||
|
|
||||||
|
LIBS += -lcamapi -laudio_manager
|
||||||
Reference in New Issue
Block a user