diff options
Diffstat (limited to 'src/plugins/qnx')
75 files changed, 0 insertions, 10121 deletions
diff --git a/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.cpp b/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.cpp deleted file mode 100644 index 96686830f..000000000 --- a/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h b/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h deleted file mode 100644 index 38c01f86c..000000000 --- a/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QString codecDescription(const QString &codecName) const override; - QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const override; - QAudioEncoderSettings audioSettings() const override; - void setAudioSettings(const QAudioEncoderSettings &settings) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.cpp b/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.cpp deleted file mode 100644 index a2607ca93..000000000 --- a/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h b/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h deleted file mode 100644 index 4aac740c8..000000000 --- a/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QVideoFrame::PixelFormat bufferFormat() const override; - void setBufferFormat(QVideoFrame::PixelFormat format) override; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.cpp b/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.cpp deleted file mode 100644 index 8dad17208..000000000 --- a/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h b/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h deleted file mode 100644 index 9586ec56a..000000000 --- a/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QCameraImageCapture::CaptureDestinations captureDestination() const override; - void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameracontrol.cpp b/src/plugins/qnx/camera/bbcameracontrol.cpp deleted file mode 100644 index 8652c0528..000000000 --- a/src/plugins/qnx/camera/bbcameracontrol.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameracontrol.h b/src/plugins/qnx/camera/bbcameracontrol.h deleted file mode 100644 index 0c97bd83c..000000000 --- a/src/plugins/qnx/camera/bbcameracontrol.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - void setState(QCamera::State state) override; - - QCamera::Status status() const override; - - QCamera::CaptureModes captureMode() const override; - void setCaptureMode(QCamera::CaptureModes) override; - bool isCaptureModeSupported(QCamera::CaptureModes mode) const override; - - bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameraexposurecontrol.cpp b/src/plugins/qnx/camera/bbcameraexposurecontrol.cpp deleted file mode 100644 index 795e42877..000000000 --- a/src/plugins/qnx/camera/bbcameraexposurecontrol.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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: - break; - } - - 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 diff --git a/src/plugins/qnx/camera/bbcameraexposurecontrol.h b/src/plugins/qnx/camera/bbcameraexposurecontrol.h deleted file mode 100644 index 2d0da29bd..000000000 --- a/src/plugins/qnx/camera/bbcameraexposurecontrol.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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); - - bool isParameterSupported(ExposureParameter parameter) const override; - QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const override; - - QVariant requestedValue(ExposureParameter parameter) const override; - QVariant actualValue(ExposureParameter parameter) const override; - bool setValue(ExposureParameter parameter, const QVariant& value) override; - -private Q_SLOTS: - void statusChanged(QCamera::Status status); - -private: - BbCameraSession *m_session; - QCameraExposure::ExposureMode m_requestedExposureMode; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameraflashcontrol.cpp b/src/plugins/qnx/camera/bbcameraflashcontrol.cpp deleted file mode 100644 index 1cf8b38f9..000000000 --- a/src/plugins/qnx/camera/bbcameraflashcontrol.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameraflashcontrol.h b/src/plugins/qnx/camera/bbcameraflashcontrol.h deleted file mode 100644 index 8ce9c1f41..000000000 --- a/src/plugins/qnx/camera/bbcameraflashcontrol.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - void setFlashMode(QCameraExposure::FlashModes mode) override; - bool isFlashModeSupported(QCameraExposure::FlashModes mode) const override; - bool isFlashReady() const override; - -private: - BbCameraSession *m_session; - QCameraExposure::FlashModes m_flashMode; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcamerafocuscontrol.cpp b/src/plugins/qnx/camera/bbcamerafocuscontrol.cpp deleted file mode 100644 index a815882d2..000000000 --- a/src/plugins/qnx/camera/bbcamerafocuscontrol.cpp +++ /dev/null @@ -1,329 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcamerafocuscontrol.h b/src/plugins/qnx/camera/bbcamerafocuscontrol.h deleted file mode 100644 index bf11ea03e..000000000 --- a/src/plugins/qnx/camera/bbcamerafocuscontrol.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - void setFocusMode(QCameraFocus::FocusModes mode) override; - bool isFocusModeSupported(QCameraFocus::FocusModes mode) const override; - QCameraFocus::FocusPointMode focusPointMode() const override; - void setFocusPointMode(QCameraFocus::FocusPointMode mode) override; - bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const override; - QPointF customFocusPoint() const override; - void setCustomFocusPoint(const QPointF &point) override; - QCameraFocusZoneList focusZones() const 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 diff --git a/src/plugins/qnx/camera/bbcameraimagecapturecontrol.cpp b/src/plugins/qnx/camera/bbcameraimagecapturecontrol.cpp deleted file mode 100644 index 2fcd2baed..000000000 --- a/src/plugins/qnx/camera/bbcameraimagecapturecontrol.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h b/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h deleted file mode 100644 index b8013ba1f..000000000 --- a/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - - QCameraImageCapture::DriveMode driveMode() const override; - void setDriveMode(QCameraImageCapture::DriveMode mode) override; - - int capture(const QString &fileName) override; - void cancelCapture() override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.cpp b/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.cpp deleted file mode 100644 index 250a85ca0..000000000 --- a/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h b/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h deleted file mode 100644 index 0eefdd2a1..000000000 --- a/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - bool isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const override; - QVariant parameter(ProcessingParameter parameter) const override; - void setParameter(ProcessingParameter parameter, const QVariant &value) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcamerainfocontrol.cpp b/src/plugins/qnx/camera/bbcamerainfocontrol.cpp deleted file mode 100644 index 3d0481408..000000000 --- a/src/plugins/qnx/camera/bbcamerainfocontrol.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "bbcamerainfocontrol.h" - -#include "bbcamerasession.h" - -QT_BEGIN_NAMESPACE - -BbCameraInfoControl::BbCameraInfoControl(QObject *parent) - : QCameraInfoControl(parent) -{ -} - -QCamera::Position BbCameraInfoControl::position(const QString &deviceName) -{ - if (deviceName == QString::fromUtf8(BbCameraSession::cameraIdentifierFront())) - return QCamera::FrontFace; - else if (deviceName == QString::fromUtf8(BbCameraSession::cameraIdentifierRear())) - return QCamera::BackFace; - else - return QCamera::UnspecifiedPosition; -} - -int BbCameraInfoControl::orientation(const QString &deviceName) -{ - // The camera sensor orientation could be retrieved with camera_get_native_orientation() - // but since the sensor angular offset is compensated with camera_set_videovf_property() and - // camera_set_photovf_property() we should always return 0 here. - Q_UNUSED(deviceName); - return 0; -} - -QCamera::Position BbCameraInfoControl::cameraPosition(const QString &deviceName) const -{ - return position(deviceName); -} - -int BbCameraInfoControl::cameraOrientation(const QString &deviceName) const -{ - return orientation(deviceName); -} - -QT_END_NAMESPACE - diff --git a/src/plugins/qnx/camera/bbcamerainfocontrol.h b/src/plugins/qnx/camera/bbcamerainfocontrol.h deleted file mode 100644 index 1c51410f7..000000000 --- a/src/plugins/qnx/camera/bbcamerainfocontrol.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef BBCAMERAINFOCONTROL_H -#define BBCAMERAINFOCONTROL_H - -#include <qcamerainfocontrol.h> - -QT_BEGIN_NAMESPACE - -class BbCameraInfoControl : public QCameraInfoControl -{ - Q_OBJECT -public: - explicit BbCameraInfoControl(QObject *parent = 0); - - QCamera::Position cameraPosition(const QString &deviceName) const; - int cameraOrientation(const QString &deviceName) const; - - static QCamera::Position position(const QString &deviceName); - static int orientation(const QString &deviceName); -}; - -QT_END_NAMESPACE - -#endif // BBCAMERAINFOCONTROL_H - diff --git a/src/plugins/qnx/camera/bbcameralockscontrol.cpp b/src/plugins/qnx/camera/bbcameralockscontrol.cpp deleted file mode 100644 index 5802064e6..000000000 --- a/src/plugins/qnx/camera/bbcameralockscontrol.cpp +++ /dev/null @@ -1,256 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "bbcameralockscontrol.h" - -#include "bbcamerasession.h" - -QT_BEGIN_NAMESPACE - -BbCameraLocksControl::BbCameraLocksControl(BbCameraSession *session, QObject *parent) - : QCameraLocksControl(parent) - , m_session(session) - , m_locksApplyMode(IndependentMode) - , m_focusLockStatus(QCamera::Unlocked) - , m_exposureLockStatus(QCamera::Unlocked) - , m_whiteBalanceLockStatus(QCamera::Unlocked) - , m_currentLockTypes(QCamera::NoLock) - , m_supportedLockTypes(QCamera::NoLock) -{ - connect(m_session, SIGNAL(cameraOpened()), SLOT(cameraOpened())); - connect(m_session, SIGNAL(focusStatusChanged(int)), SLOT(focusStatusChanged(int))); -} - -QCamera::LockTypes BbCameraLocksControl::supportedLocks() const -{ - return (QCamera::LockFocus | QCamera::LockExposure | QCamera::LockWhiteBalance); -} - -QCamera::LockStatus BbCameraLocksControl::lockStatus(QCamera::LockType lock) const -{ - if (!m_supportedLockTypes.testFlag(lock) || (m_session->handle() == CAMERA_HANDLE_INVALID)) - return QCamera::Locked; - - switch (lock) { - case QCamera::LockExposure: - return m_exposureLockStatus; - case QCamera::LockWhiteBalance: - return m_whiteBalanceLockStatus; - case QCamera::LockFocus: - return m_focusLockStatus; - default: - return QCamera::Locked; - } -} - -void BbCameraLocksControl::searchAndLock(QCamera::LockTypes locks) -{ - if (m_session->handle() == CAMERA_HANDLE_INVALID) - return; - - // filter out unsupported locks - locks &= m_supportedLockTypes; - - m_currentLockTypes |= locks; - - uint32_t lockModes = CAMERA_3A_NONE; - - switch (m_locksApplyMode) { - case IndependentMode: - if (m_currentLockTypes & QCamera::LockExposure) - lockModes |= CAMERA_3A_AUTOEXPOSURE; - if (m_currentLockTypes & QCamera::LockWhiteBalance) - lockModes |= CAMERA_3A_AUTOWHITEBALANCE; - if (m_currentLockTypes & QCamera::LockFocus) - lockModes |= CAMERA_3A_AUTOFOCUS; - break; - case FocusExposureBoundMode: - if ((m_currentLockTypes & QCamera::LockExposure) || (m_currentLockTypes & QCamera::LockFocus)) - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS); - break; - case AllBoundMode: - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS | CAMERA_3A_AUTOWHITEBALANCE); - break; - case FocusOnlyMode: - lockModes = CAMERA_3A_AUTOFOCUS; - break; - } - - const camera_error_t result = camera_set_3a_lock(m_session->handle(), lockModes); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to set lock modes:" << result; - } else { - if (lockModes & CAMERA_3A_AUTOFOCUS) { - // handled by focusStatusChanged() - } - - if (lockModes & CAMERA_3A_AUTOEXPOSURE) { - m_exposureLockStatus = QCamera::Locked; - emit lockStatusChanged(QCamera::LockExposure, QCamera::Locked, QCamera::LockAcquired); - } - - if (lockModes & CAMERA_3A_AUTOWHITEBALANCE) { - m_whiteBalanceLockStatus = QCamera::Locked; - emit lockStatusChanged(QCamera::LockWhiteBalance, QCamera::Locked, QCamera::LockAcquired); - } - } -} - -void BbCameraLocksControl::unlock(QCamera::LockTypes locks) -{ - // filter out unsupported locks - locks &= m_supportedLockTypes; - - m_currentLockTypes &= ~locks; - - uint32_t lockModes = CAMERA_3A_NONE; - - switch (m_locksApplyMode) { - case IndependentMode: - if (m_currentLockTypes & QCamera::LockExposure) - lockModes |= CAMERA_3A_AUTOEXPOSURE; - if (m_currentLockTypes & QCamera::LockWhiteBalance) - lockModes |= CAMERA_3A_AUTOWHITEBALANCE; - if (m_currentLockTypes & QCamera::LockFocus) - lockModes |= CAMERA_3A_AUTOFOCUS; - break; - case FocusExposureBoundMode: - if ((m_currentLockTypes & QCamera::LockExposure) || (m_currentLockTypes & QCamera::LockFocus)) - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS); - break; - case AllBoundMode: - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS | CAMERA_3A_AUTOWHITEBALANCE); - break; - case FocusOnlyMode: - lockModes = CAMERA_3A_AUTOFOCUS; - break; - } - - const camera_error_t result = camera_set_3a_lock(m_session->handle(), lockModes); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to set lock modes:" << result; - } else { - if (locks.testFlag(QCamera::LockFocus)) { - // handled by focusStatusChanged() - } - - if (locks.testFlag(QCamera::LockExposure)) { - m_exposureLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockExposure, QCamera::Unlocked, QCamera::UserRequest); - } - - if (locks.testFlag(QCamera::LockWhiteBalance)) { - m_whiteBalanceLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockWhiteBalance, QCamera::Unlocked, QCamera::UserRequest); - } - } -} - -void BbCameraLocksControl::cameraOpened() -{ - // retrieve information about lock apply modes - int supported = 0; - uint32_t modes[20]; - - const camera_error_t result = camera_get_3a_lock_modes(m_session->handle(), 20, &supported, modes); - - if (result == CAMERA_EOK) { - // see API documentation of camera_get_3a_lock_modes for explanation of case discrimination below - if (supported == 4) { - m_locksApplyMode = IndependentMode; - } else if (supported == 3) { - m_locksApplyMode = FocusExposureBoundMode; - } else if (supported == 2) { - if (modes[0] == (CAMERA_3A_AUTOFOCUS | CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOWHITEBALANCE)) - m_locksApplyMode = AllBoundMode; - else - m_locksApplyMode = FocusOnlyMode; - } - } - - // retrieve information about supported lock types - m_supportedLockTypes = QCamera::NoLock; - - if (camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOFOCUS)) - m_supportedLockTypes |= QCamera::LockFocus; - - if (camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOEXPOSURE)) - m_supportedLockTypes |= QCamera::LockExposure; - - if (camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOWHITEBALANCE)) - m_supportedLockTypes |= QCamera::LockWhiteBalance; - - m_focusLockStatus = QCamera::Unlocked; - m_exposureLockStatus = QCamera::Unlocked; - m_whiteBalanceLockStatus = QCamera::Unlocked; -} - -void BbCameraLocksControl::focusStatusChanged(int value) -{ - const camera_focusstate_t focusState = static_cast<camera_focusstate_t>(value); - - switch (focusState) { - case CAMERA_FOCUSSTATE_NONE: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::UserRequest); - break; - case CAMERA_FOCUSSTATE_WAITING: - case CAMERA_FOCUSSTATE_SEARCHING: - m_focusLockStatus = QCamera::Searching; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Searching, QCamera::UserRequest); - break; - case CAMERA_FOCUSSTATE_FAILED: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::LockFailed); - break; - case CAMERA_FOCUSSTATE_LOCKED: - m_focusLockStatus = QCamera::Locked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Locked, QCamera::LockAcquired); - break; - case CAMERA_FOCUSSTATE_SCENECHANGE: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::LockTemporaryLost); - break; - default: - break; - } -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/camera/bbcameralockscontrol.h b/src/plugins/qnx/camera/bbcameralockscontrol.h deleted file mode 100644 index be3d1bd02..000000000 --- a/src/plugins/qnx/camera/bbcameralockscontrol.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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: - enum LocksApplyMode - { - IndependentMode, - FocusExposureBoundMode, - AllBoundMode, - FocusOnlyMode - }; - - explicit BbCameraLocksControl(BbCameraSession *session, QObject *parent = 0); - - QCamera::LockTypes supportedLocks() const override; - QCamera::LockStatus lockStatus(QCamera::LockType lock) const override; - void searchAndLock(QCamera::LockTypes locks) override; - void unlock(QCamera::LockTypes locks) override; - -private Q_SLOTS: - void cameraOpened(); - void focusStatusChanged(int value); - -private: - BbCameraSession *m_session; - - LocksApplyMode m_locksApplyMode; - QCamera::LockStatus m_focusLockStatus; - QCamera::LockStatus m_exposureLockStatus; - QCamera::LockStatus m_whiteBalanceLockStatus; - QCamera::LockTypes m_currentLockTypes; - QCamera::LockTypes m_supportedLockTypes; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameramediarecordercontrol.cpp b/src/plugins/qnx/camera/bbcameramediarecordercontrol.cpp deleted file mode 100644 index 3cb9ed38d..000000000 --- a/src/plugins/qnx/camera/bbcameramediarecordercontrol.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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->applyVideoSettings(); -} - -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 diff --git a/src/plugins/qnx/camera/bbcameramediarecordercontrol.h b/src/plugins/qnx/camera/bbcameramediarecordercontrol.h deleted file mode 100644 index af46479a5..000000000 --- a/src/plugins/qnx/camera/bbcameramediarecordercontrol.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - bool setOutputLocation(const QUrl &location) override; - QMediaRecorder::State state() const override; - QMediaRecorder::Status status() const override; - qint64 duration() const override; - bool isMuted() const override; - qreal volume() const override; - void applySettings() override; - -public Q_SLOTS: - void setState(QMediaRecorder::State state) override; - void setMuted(bool muted) override; - void setVolume(qreal volume) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameraorientationhandler.cpp b/src/plugins/qnx/camera/bbcameraorientationhandler.cpp deleted file mode 100644 index d600f3db0..000000000 --- a/src/plugins/qnx/camera/bbcameraorientationhandler.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "bbcameraorientationhandler.h" - -#include <QAbstractEventDispatcher> -#include <QGuiApplication> -#include <QScreen> -#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, qintptr *) -{ - 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) { - if (angle == 180) // The screen does not rotate at 180 degrees - return false; - - m_orientation = angle; - emit orientationChanged(m_orientation); - } - - return false; // do not drop the event -} - -int BbCameraOrientationHandler::viewfinderOrientation() const -{ - // On a keyboard device we do not rotate the screen at all - if (qGuiApp->primaryScreen()->nativeOrientation() - != qGuiApp->primaryScreen()->primaryOrientation()) { - return m_orientation; - } - - return 0; -} - -int BbCameraOrientationHandler::orientation() const -{ - return m_orientation; -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/camera/bbcameraorientationhandler.h b/src/plugins/qnx/camera/bbcameraorientationhandler.h deleted file mode 100644 index af80bd4e1..000000000 --- a/src/plugins/qnx/camera/bbcameraorientationhandler.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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, qintptr *result) override; - - int orientation() const; - - int viewfinderOrientation() const; - -Q_SIGNALS: - void orientationChanged(int degree); - -private: - int m_orientation; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameraservice.cpp b/src/plugins/qnx/camera/bbcameraservice.cpp deleted file mode 100644 index 2879f6981..000000000 --- a/src/plugins/qnx/camera/bbcameraservice.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 "bbcamerainfocontrol.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_cameraInfoControl(new BbCameraInfoControl(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, QCameraInfoControl_iid) == 0) - return m_cameraInfoControl; - 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 diff --git a/src/plugins/qnx/camera/bbcameraservice.h b/src/plugins/qnx/camera/bbcameraservice.h deleted file mode 100644 index b13da6a4a..000000000 --- a/src/plugins/qnx/camera/bbcameraservice.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 BbCameraInfoControl; -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; - BbCameraInfoControl* m_cameraInfoControl; - 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 diff --git a/src/plugins/qnx/camera/bbcamerasession.cpp b/src/plugins/qnx/camera/bbcamerasession.cpp deleted file mode 100644 index 7b3974084..000000000 --- a/src/plugins/qnx/camera/bbcamerasession.cpp +++ /dev/null @@ -1,1154 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "bbcamerasession.h" - -#include "bbcameraorientationhandler.h" -#include "bbcameraviewfindersettingscontrol.h" -#include "windowgrabber.h" - -#include <QAbstractVideoSurface> -#include <QBuffer> -#include <QDebug> -#include <QImage> -#include <QUrl> -#include <QVideoSurfaceFormat> -#include <qmath.h> - -#include <algorithm> - -QT_BEGIN_NAMESPACE - -static QString errorToString(camera_error_t error) -{ - switch (error) { - case CAMERA_EOK: - return QLatin1String("No error"); - case CAMERA_EAGAIN: - return QLatin1String("Camera unavailable"); - case CAMERA_EINVAL: - return QLatin1String("Invalid argument"); - case CAMERA_ENODEV: - return QLatin1String("Camera not found"); - case CAMERA_EMFILE: - return QLatin1String("File table overflow"); - case CAMERA_EBADF: - return QLatin1String("Invalid handle passed"); - case CAMERA_EACCESS: - return QLatin1String("No permission"); - case CAMERA_EBADR: - return QLatin1String("Invalid file descriptor"); - case CAMERA_ENOENT: - return QLatin1String("File or directory does not exists"); - case CAMERA_ENOMEM: - return QLatin1String("Memory allocation failed"); - case CAMERA_EOPNOTSUPP: - return QLatin1String("Operation not supported"); - case CAMERA_ETIMEDOUT: - return QLatin1String("Communication timeout"); - case CAMERA_EALREADY: - return QLatin1String("Operation already in progress"); - case CAMERA_EUNINIT: - return QLatin1String("Camera library not initialized"); - case CAMERA_EREGFAULT: - return QLatin1String("Callback registration failed"); - case CAMERA_EMICINUSE: - return QLatin1String("Microphone in use already"); - case CAMERA_ENODATA: - return QLatin1String("Data does not exist"); - case CAMERA_EBUSY: - return QLatin1String("Camera busy"); - case CAMERA_EDESKTOPCAMERAINUSE: - return QLatin1String("Desktop camera in use already"); - case CAMERA_ENOSPC: - return QLatin1String("Disk is full"); - case CAMERA_EPOWERDOWN: - return QLatin1String("Camera in power down state"); - case CAMERA_3ALOCKED: - return QLatin1String("3A have been locked"); -// case CAMERA_EVIEWFINDERFROZEN: // not yet available in 10.2 NDK -// return QLatin1String("Freeze flag set"); - default: - return QLatin1String("Unknown error"); - } -} - -QDebug operator<<(QDebug debug, camera_error_t error) -{ - debug.nospace() << errorToString(error); - return debug.space(); -} - -BbCameraSession::BbCameraSession(QObject *parent) - : QObject(parent) - , m_nativeCameraOrientation(0) - , m_orientationHandler(new BbCameraOrientationHandler(this)) - , m_status(QCamera::UnloadedStatus) - , m_state(QCamera::UnloadedState) - , m_captureMode(QCamera::CaptureStillImage) - , m_device("bb:RearCamera") - , m_previewIsVideo(true) - , m_surface(0) - , m_captureImageDriveMode(QCameraImageCapture::SingleImageCapture) - , m_lastImageCaptureId(0) - , m_captureDestination(QCameraImageCapture::CaptureToFile) - , m_videoState(QMediaRecorder::StoppedState) - , m_videoStatus(QMediaRecorder::LoadedStatus) - , m_handle(CAMERA_HANDLE_INVALID) - , m_windowGrabber(new WindowGrabber(this)) -{ - connect(this, SIGNAL(statusChanged(QCamera::Status)), SLOT(updateReadyForCapture())); - connect(this, SIGNAL(captureModeChanged(QCamera::CaptureModes)), SLOT(updateReadyForCapture())); - connect(m_orientationHandler, SIGNAL(orientationChanged(int)), SLOT(deviceOrientationChanged(int))); - - connect(m_windowGrabber, SIGNAL(frameGrabbed(QImage, int)), SLOT(viewfinderFrameGrabbed(QImage))); -} - -BbCameraSession::~BbCameraSession() -{ - stopViewFinder(); - closeCamera(); -} - -camera_handle_t BbCameraSession::handle() const -{ - return m_handle; -} - -QCamera::State BbCameraSession::state() const -{ - return m_state; -} - -void BbCameraSession::setState(QCamera::State state) -{ - if (m_state == state) - return; - - const QCamera::State previousState = m_state; - - if (previousState == QCamera::UnloadedState) { - if (state == QCamera::LoadedState) { - if (openCamera()) { - m_state = state; - } - } else if (state == QCamera::ActiveState) { - if (openCamera()) { - QMetaObject::invokeMethod(this, "applyConfiguration", Qt::QueuedConnection); - m_state = state; - } - } - } else if (previousState == QCamera::LoadedState) { - if (state == QCamera::UnloadedState) { - closeCamera(); - m_state = state; - } else if (state == QCamera::ActiveState) { - QMetaObject::invokeMethod(this, "applyConfiguration", Qt::QueuedConnection); - m_state = state; - } - } else if (previousState == QCamera::ActiveState) { - if (state == QCamera::LoadedState) { - stopViewFinder(); - m_state = state; - } else if (state == QCamera::UnloadedState) { - stopViewFinder(); - closeCamera(); - m_state = state; - } - } - - if (m_state != previousState) - emit stateChanged(m_state); -} - -QCamera::Status BbCameraSession::status() const -{ - return m_status; -} - -QCamera::CaptureModes BbCameraSession::captureMode() const -{ - return m_captureMode; -} - -void BbCameraSession::setCaptureMode(QCamera::CaptureModes captureMode) -{ - if (m_captureMode == captureMode) - return; - - m_captureMode = captureMode; - emit captureModeChanged(m_captureMode); -} - -bool BbCameraSession::isCaptureModeSupported(QCamera::CaptureModes mode) const -{ - if (m_handle == CAMERA_HANDLE_INVALID) { - // the camera has not been loaded yet via QCamera::load(), so - // we open it temporarily to peek for the supported capture modes - - camera_unit_t unit = CAMERA_UNIT_REAR; - if (m_device == cameraIdentifierFront()) - unit = CAMERA_UNIT_FRONT; - else if (m_device == cameraIdentifierRear()) - unit = CAMERA_UNIT_REAR; - else if (m_device == cameraIdentifierDesktop()) - unit = CAMERA_UNIT_DESKTOP; - - camera_handle_t handle; - const camera_error_t result = camera_open(unit, CAMERA_MODE_RW, &handle); - if (result != CAMERA_EOK) - return true; - - const bool supported = isCaptureModeSupported(handle, mode); - - camera_close(handle); - - return supported; - } else { - return isCaptureModeSupported(m_handle, mode); - } -} - -QByteArray BbCameraSession::cameraIdentifierFront() -{ - return "bb:FrontCamera"; -} - -QByteArray BbCameraSession::cameraIdentifierRear() -{ - return "bb:RearCamera"; -} - -QByteArray BbCameraSession::cameraIdentifierDesktop() -{ - return "bb:DesktopCamera"; -} - -void BbCameraSession::setDevice(const QByteArray &device) -{ - m_device = device; -} - -QByteArray BbCameraSession::device() const -{ - return m_device; -} - -QAbstractVideoSurface* BbCameraSession::surface() const -{ - return m_surface; -} - -void BbCameraSession::setSurface(QAbstractVideoSurface *surface) -{ - QMutexLocker locker(&m_surfaceMutex); - - if (m_surface == surface) - return; - - m_surface = surface; -} - -bool BbCameraSession::isReadyForCapture() const -{ - if (m_captureMode & QCamera::CaptureStillImage) - return (m_status == QCamera::ActiveStatus); - - if (m_captureMode & QCamera::CaptureVideo) - return (m_status == QCamera::ActiveStatus); - - return false; -} - -QCameraImageCapture::DriveMode BbCameraSession::driveMode() const -{ - return m_captureImageDriveMode; -} - -void BbCameraSession::setDriveMode(QCameraImageCapture::DriveMode mode) -{ - m_captureImageDriveMode = mode; -} - -/** - * A helper structure that keeps context data for image capture callbacks. - */ -struct ImageCaptureData -{ - int requestId; - QString fileName; - BbCameraSession *session; -}; - -static void imageCaptureShutterCallback(camera_handle_t handle, void *context) -{ - Q_UNUSED(handle); - - const ImageCaptureData *data = static_cast<ImageCaptureData*>(context); - - // We are inside a worker thread here, so emit imageExposed inside the main thread - QMetaObject::invokeMethod(data->session, "imageExposed", Qt::QueuedConnection, - Q_ARG(int, data->requestId)); -} - -static void imageCaptureImageCallback(camera_handle_t handle, camera_buffer_t *buffer, void *context) -{ - Q_UNUSED(handle); - - QScopedPointer<ImageCaptureData> data(static_cast<ImageCaptureData*>(context)); - - if (buffer->frametype != CAMERA_FRAMETYPE_JPEG) { - // We are inside a worker thread here, so emit error signal inside the main thread - QMetaObject::invokeMethod(data->session, "imageCaptureError", Qt::QueuedConnection, - Q_ARG(int, data->requestId), - Q_ARG(QCameraImageCapture::Error, QCameraImageCapture::FormatError), - Q_ARG(QString, BbCameraSession::tr("Camera provides image in unsupported format"))); - return; - } - - const QByteArray rawData((const char*)buffer->framebuf, buffer->framedesc.jpeg.bufsize); - - QImage image; - const bool ok = image.loadFromData(rawData, "JPG"); - if (!ok) { - const QString errorMessage = BbCameraSession::tr("Could not load JPEG data from frame"); - // We are inside a worker thread here, so emit error signal inside the main thread - QMetaObject::invokeMethod(data->session, "imageCaptureError", Qt::QueuedConnection, - Q_ARG(int, data->requestId), - Q_ARG(QCameraImageCapture::Error, QCameraImageCapture::FormatError), - Q_ARG(QString, errorMessage)); - return; - } - - - // We are inside a worker thread here, so invoke imageCaptured inside the main thread - QMetaObject::invokeMethod(data->session, "imageCaptured", Qt::QueuedConnection, - Q_ARG(int, data->requestId), - Q_ARG(QImage, image), - Q_ARG(QString, data->fileName)); -} - -int BbCameraSession::capture(const QString &fileName) -{ - m_lastImageCaptureId++; - - if (!isReadyForCapture()) { - emit imageCaptureError(m_lastImageCaptureId, QCameraImageCapture::NotReadyError, tr("Camera not ready")); - return m_lastImageCaptureId; - } - - if (m_captureImageDriveMode == QCameraImageCapture::SingleImageCapture) { - // prepare context object for callback - ImageCaptureData *context = new ImageCaptureData; - context->requestId = m_lastImageCaptureId; - context->fileName = fileName; - context->session = this; - - const camera_error_t result = camera_take_photo(m_handle, - imageCaptureShutterCallback, - 0, - 0, - imageCaptureImageCallback, - context, false); - - if (result != CAMERA_EOK) - qWarning() << "Unable to take photo:" << result; - } else { - // TODO: implement burst mode when available in Qt API - } - - return m_lastImageCaptureId; -} - -void BbCameraSession::cancelCapture() -{ - // BB10 API doesn't provide functionality for that -} - -bool BbCameraSession::isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const -{ - // capture to buffer, file and both are supported. - return destination & (QCameraImageCapture::CaptureToFile | QCameraImageCapture::CaptureToBuffer); -} - -QCameraImageCapture::CaptureDestinations BbCameraSession::captureDestination() const -{ - return m_captureDestination; -} - -void BbCameraSession::setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) -{ - if (m_captureDestination != destination) { - m_captureDestination = destination; - emit captureDestinationChanged(m_captureDestination); - } -} - -QList<QSize> BbCameraSession::supportedResolutions(const QImageEncoderSettings&, bool *continuous) const -{ - if (continuous) - *continuous = false; - - if (m_status == QCamera::UnloadedStatus) - return QList<QSize>(); - - if (m_captureMode & QCamera::CaptureStillImage) { - return supportedResolutions(QCamera::CaptureStillImage); - } else if (m_captureMode & QCamera::CaptureVideo) { - return supportedResolutions(QCamera::CaptureVideo); - } - - return QList<QSize>(); -} - -QImageEncoderSettings BbCameraSession::imageSettings() const -{ - return m_imageEncoderSettings; -} - -void BbCameraSession::setImageSettings(const QImageEncoderSettings &settings) -{ - m_imageEncoderSettings = settings; - if (m_imageEncoderSettings.codec().isEmpty()) - m_imageEncoderSettings.setCodec(QLatin1String("jpeg")); -} - -QUrl BbCameraSession::outputLocation() const -{ - return QUrl::fromLocalFile(m_videoOutputLocation); -} - -bool BbCameraSession::setOutputLocation(const QUrl &location) -{ - m_videoOutputLocation = location.toLocalFile(); - - return true; -} - -QMediaRecorder::State BbCameraSession::videoState() const -{ - return m_videoState; -} - -void BbCameraSession::setVideoState(QMediaRecorder::State state) -{ - if (m_videoState == state) - return; - - const QMediaRecorder::State previousState = m_videoState; - - if (previousState == QMediaRecorder::StoppedState) { - if (state == QMediaRecorder::RecordingState) { - if (startVideoRecording()) { - m_videoState = state; - } - } else if (state == QMediaRecorder::PausedState) { - // do nothing - } - } else if (previousState == QMediaRecorder::RecordingState) { - if (state == QMediaRecorder::StoppedState) { - stopVideoRecording(); - m_videoState = state; - } else if (state == QMediaRecorder::PausedState) { - //TODO: (pause) not supported by BB10 API yet - } - } else if (previousState == QMediaRecorder::PausedState) { - if (state == QMediaRecorder::StoppedState) { - stopVideoRecording(); - m_videoState = state; - } else if (state == QMediaRecorder::RecordingState) { - //TODO: (resume) not supported by BB10 API yet - } - } - - emit videoStateChanged(m_videoState); -} - -QMediaRecorder::Status BbCameraSession::videoStatus() const -{ - return m_videoStatus; -} - -qint64 BbCameraSession::duration() const -{ - return (m_videoRecordingDuration.isValid() ? m_videoRecordingDuration.elapsed() : 0); -} - -void BbCameraSession::applyVideoSettings() -{ - if (m_handle == CAMERA_HANDLE_INVALID) - return; - - // apply viewfinder configuration - const QList<QSize> videoOutputResolutions = supportedResolutions(QCamera::CaptureVideo); - - if (!m_videoEncoderSettings.resolution().isValid() || !videoOutputResolutions.contains(m_videoEncoderSettings.resolution())) - m_videoEncoderSettings.setResolution(videoOutputResolutions.first()); - - QSize viewfinderResolution; - - if (m_previewIsVideo) { - // The viewfinder is responsible for encoding the video frames, so the resolutions must match. - viewfinderResolution = m_videoEncoderSettings.resolution(); - } else { - // The frames are encoded separately from the viewfinder, so only the aspect ratio must match. - const QSize videoResolution = m_videoEncoderSettings.resolution(); - const qreal aspectRatio = static_cast<qreal>(videoResolution.width())/static_cast<qreal>(videoResolution.height()); - - QList<QSize> sizes = supportedViewfinderResolutions(QCamera::CaptureVideo); - std::reverse(sizes.begin(), sizes.end()); // use smallest possible resolution - for (const QSize &size : qAsConst(sizes)) { - // search for viewfinder resolution with the same aspect ratio - if (qFuzzyCompare(aspectRatio, (static_cast<qreal>(size.width())/static_cast<qreal>(size.height())))) { - viewfinderResolution = size; - break; - } - } - } - - Q_ASSERT(viewfinderResolution.isValid()); - - const QByteArray windowId = QString().sprintf("qcamera_vf_%p", this).toLatin1(); - m_windowGrabber->setWindowId(windowId); - - const QByteArray windowGroupId = m_windowGrabber->windowGroupId(); - - const int rotationAngle = (360 - m_nativeCameraOrientation); - - camera_error_t result = CAMERA_EOK; - result = camera_set_videovf_property(m_handle, - CAMERA_IMGPROP_WIN_GROUPID, windowGroupId.data(), - CAMERA_IMGPROP_WIN_ID, windowId.data(), - CAMERA_IMGPROP_WIDTH, viewfinderResolution.width(), - CAMERA_IMGPROP_HEIGHT, viewfinderResolution.height(), - CAMERA_IMGPROP_ROTATION, rotationAngle); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to apply video viewfinder settings:" << result; - return; - } - - const QSize resolution = m_videoEncoderSettings.resolution(); - - QString videoCodec = m_videoEncoderSettings.codec(); - if (videoCodec.isEmpty()) - videoCodec = QLatin1String("h264"); - - camera_videocodec_t cameraVideoCodec = CAMERA_VIDEOCODEC_H264; - if (videoCodec == QLatin1String("none")) - cameraVideoCodec = CAMERA_VIDEOCODEC_NONE; - else if (videoCodec == QLatin1String("avc1")) - cameraVideoCodec = CAMERA_VIDEOCODEC_AVC1; - else if (videoCodec == QLatin1String("h264")) - cameraVideoCodec = CAMERA_VIDEOCODEC_H264; - - qreal frameRate = m_videoEncoderSettings.frameRate(); - if (frameRate == 0) { - const QList<qreal> frameRates = supportedFrameRates(QVideoEncoderSettings(), 0); - if (!frameRates.isEmpty()) - frameRate = frameRates.last(); - } - - QString audioCodec = m_audioEncoderSettings.codec(); - if (audioCodec.isEmpty()) - audioCodec = QLatin1String("aac"); - - camera_audiocodec_t cameraAudioCodec = CAMERA_AUDIOCODEC_AAC; - if (audioCodec == QLatin1String("none")) - cameraAudioCodec = CAMERA_AUDIOCODEC_NONE; - else if (audioCodec == QLatin1String("aac")) - cameraAudioCodec = CAMERA_AUDIOCODEC_AAC; - else if (audioCodec == QLatin1String("raw")) - cameraAudioCodec = CAMERA_AUDIOCODEC_RAW; - - result = camera_set_video_property(m_handle, - CAMERA_IMGPROP_WIDTH, resolution.width(), - CAMERA_IMGPROP_HEIGHT, resolution.height(), - CAMERA_IMGPROP_ROTATION, rotationAngle, - CAMERA_IMGPROP_VIDEOCODEC, cameraVideoCodec, - CAMERA_IMGPROP_AUDIOCODEC, cameraAudioCodec); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to apply video settings:" << result; - emit videoError(QMediaRecorder::ResourceError, tr("Unable to apply video settings")); - } -} - -QList<QSize> BbCameraSession::supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous) const -{ - Q_UNUSED(settings); - - if (continuous) - *continuous = false; - - return supportedResolutions(QCamera::CaptureVideo); -} - -QList<qreal> BbCameraSession::supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous) const -{ - Q_UNUSED(settings); - - if (m_handle == CAMERA_HANDLE_INVALID) - return QList<qreal>(); - - int supported = 0; - double rates[20]; - bool maxmin = false; - - /** - * Since in current version of the BB10 platform the video viewfinder encodes the video frames, we use - * the values as returned by camera_get_video_vf_framerates(). - */ - const camera_error_t result = camera_get_video_vf_framerates(m_handle, 20, &supported, rates, &maxmin); - if (result != CAMERA_EOK) { - qWarning() << "Unable to retrieve supported viewfinder framerates:" << result; - return QList<qreal>(); - } - - QList<qreal> frameRates; - for (int i = 0; i < supported; ++i) - frameRates << rates[i]; - - if (continuous) - *continuous = maxmin; - - return frameRates; -} - -QVideoEncoderSettings BbCameraSession::videoSettings() const -{ - return m_videoEncoderSettings; -} - -void BbCameraSession::setVideoSettings(const QVideoEncoderSettings &settings) -{ - m_videoEncoderSettings = settings; -} - -QAudioEncoderSettings BbCameraSession::audioSettings() const -{ - return m_audioEncoderSettings; -} - -void BbCameraSession::setAudioSettings(const QAudioEncoderSettings &settings) -{ - m_audioEncoderSettings = settings; -} - -void BbCameraSession::updateReadyForCapture() -{ - emit readyForCaptureChanged(isReadyForCapture()); -} - -void BbCameraSession::imageCaptured(int requestId, const QImage &rawImage, const QString &fileName) -{ - QTransform transform; - - // subtract out the native rotation - transform.rotate(m_nativeCameraOrientation); - - // subtract out the current device orientation - if (m_device == cameraIdentifierRear()) - transform.rotate(360 - m_orientationHandler->orientation()); - else - transform.rotate(m_orientationHandler->orientation()); - - const QImage image = rawImage.transformed(transform); - - // Generate snap preview as downscaled image - { - QSize previewSize = image.size(); - int downScaleSteps = 0; - while (previewSize.width() > 800 && downScaleSteps < 8) { - previewSize.rwidth() /= 2; - previewSize.rheight() /= 2; - downScaleSteps++; - } - - const QImage snapPreview = image.scaled(previewSize); - - emit imageCaptured(requestId, snapPreview); - } - - if (m_captureDestination & QCameraImageCapture::CaptureToBuffer) { - QVideoFrame frame(image); - - emit imageAvailable(requestId, frame); - } - - if (m_captureDestination & QCameraImageCapture::CaptureToFile) { - const QString actualFileName = m_mediaStorageLocation.generateFileName(fileName, - QCamera::CaptureStillImage, - QLatin1String("IMG_"), - QLatin1String("jpg")); - - QFile file(actualFileName); - if (file.open(QFile::WriteOnly)) { - if (image.save(&file, "JPG")) { - emit imageSaved(requestId, actualFileName); - } else { - emit imageCaptureError(requestId, QCameraImageCapture::OutOfSpaceError, file.errorString()); - } - } else { - const QString errorMessage = tr("Could not open destination file:\n%1").arg(actualFileName); - emit imageCaptureError(requestId, QCameraImageCapture::ResourceError, errorMessage); - } - } -} - -void BbCameraSession::handleVideoRecordingPaused() -{ - //TODO: implement once BB10 API supports pausing a video -} - -void BbCameraSession::handleVideoRecordingResumed() -{ - if (m_videoStatus == QMediaRecorder::StartingStatus) { - m_videoStatus = QMediaRecorder::RecordingStatus; - emit videoStatusChanged(m_videoStatus); - - m_videoRecordingDuration.restart(); - } -} - -void BbCameraSession::deviceOrientationChanged(int angle) -{ - if (m_handle != CAMERA_HANDLE_INVALID) - camera_set_device_orientation(m_handle, angle); -} - -void BbCameraSession::handleCameraPowerUp() -{ - stopViewFinder(); - startViewFinder(); -} - -void BbCameraSession::viewfinderFrameGrabbed(const QImage &image) -{ - QTransform transform; - - // subtract out the native rotation - transform.rotate(m_nativeCameraOrientation); - - // subtract out the current device orientation - if (m_device == cameraIdentifierRear()) - transform.rotate(360 - m_orientationHandler->viewfinderOrientation()); - else - transform.rotate(m_orientationHandler->viewfinderOrientation()); - - QImage frame = image.copy().transformed(transform); - - QMutexLocker locker(&m_surfaceMutex); - if (m_surface) { - if (frame.size() != m_surface->surfaceFormat().frameSize()) { - m_surface->stop(); - m_surface->start(QVideoSurfaceFormat(frame.size(), QVideoFrame::Format_ARGB32)); - } - - QVideoFrame videoFrame(frame); - - m_surface->present(videoFrame); - } -} - -bool BbCameraSession::openCamera() -{ - if (m_handle != CAMERA_HANDLE_INVALID) // camera is already open - return true; - - m_status = QCamera::LoadingStatus; - emit statusChanged(m_status); - - camera_unit_t unit = CAMERA_UNIT_REAR; - if (m_device == cameraIdentifierFront()) - unit = CAMERA_UNIT_FRONT; - else if (m_device == cameraIdentifierRear()) - unit = CAMERA_UNIT_REAR; - else if (m_device == cameraIdentifierDesktop()) - unit = CAMERA_UNIT_DESKTOP; - - camera_error_t result = camera_open(unit, CAMERA_MODE_RW, &m_handle); - if (result != CAMERA_EOK) { - m_handle = CAMERA_HANDLE_INVALID; - m_status = QCamera::UnloadedStatus; - emit statusChanged(m_status); - - qWarning() << "Unable to open camera:" << result; - emit error(QCamera::CameraError, tr("Unable to open camera")); - return false; - } - - result = camera_get_native_orientation(m_handle, &m_nativeCameraOrientation); - if (result != CAMERA_EOK) { - qWarning() << "Unable to retrieve native camera orientation:" << result; - emit error(QCamera::CameraError, tr("Unable to retrieve native camera orientation")); - return false; - } - - m_previewIsVideo = camera_has_feature(m_handle, CAMERA_FEATURE_PREVIEWISVIDEO); - - m_status = QCamera::LoadedStatus; - emit statusChanged(m_status); - - emit cameraOpened(); - - return true; -} - -void BbCameraSession::closeCamera() -{ - if (m_handle == CAMERA_HANDLE_INVALID) // camera is closed already - return; - - m_status = QCamera::UnloadingStatus; - emit statusChanged(m_status); - - const camera_error_t result = camera_close(m_handle); - if (result != CAMERA_EOK) { - m_status = QCamera::LoadedStatus; - emit statusChanged(m_status); - - qWarning() << "Unable to close camera:" << result; - emit error(QCamera::CameraError, tr("Unable to close camera")); - return; - } - - m_handle = CAMERA_HANDLE_INVALID; - - m_status = QCamera::UnloadedStatus; - emit statusChanged(m_status); -} - -static void viewFinderStatusCallback(camera_handle_t handle, camera_devstatus_t status, uint16_t value, void *context) -{ - Q_UNUSED(handle); - - if (status == CAMERA_STATUS_FOCUS_CHANGE) { - BbCameraSession *session = static_cast<BbCameraSession*>(context); - QMetaObject::invokeMethod(session, "focusStatusChanged", Qt::QueuedConnection, Q_ARG(int, value)); - return; - } else if (status == CAMERA_STATUS_POWERUP) { - BbCameraSession *session = static_cast<BbCameraSession*>(context); - QMetaObject::invokeMethod(session, "handleCameraPowerUp", Qt::QueuedConnection); - } -} - -bool BbCameraSession::startViewFinder() -{ - m_status = QCamera::StartingStatus; - emit statusChanged(m_status); - - QSize viewfinderResolution; - camera_error_t result = CAMERA_EOK; - if (m_captureMode & QCamera::CaptureStillImage) { - result = camera_start_photo_viewfinder(m_handle, 0, viewFinderStatusCallback, this); - viewfinderResolution = currentViewfinderResolution(QCamera::CaptureStillImage); - } else if (m_captureMode & QCamera::CaptureVideo) { - result = camera_start_video_viewfinder(m_handle, 0, viewFinderStatusCallback, this); - viewfinderResolution = currentViewfinderResolution(QCamera::CaptureVideo); - } - - if (result != CAMERA_EOK) { - qWarning() << "Unable to start viewfinder:" << result; - return false; - } - - const int angle = m_orientationHandler->viewfinderOrientation(); - - const QSize rotatedSize = ((angle == 0 || angle == 180) ? viewfinderResolution - : viewfinderResolution.transposed()); - - m_surfaceMutex.lock(); - if (m_surface) { - const bool ok = m_surface->start(QVideoSurfaceFormat(rotatedSize, QVideoFrame::Format_ARGB32)); - if (!ok) - qWarning() << "Unable to start camera viewfinder surface"; - } - m_surfaceMutex.unlock(); - - m_status = QCamera::ActiveStatus; - emit statusChanged(m_status); - - return true; -} - -void BbCameraSession::stopViewFinder() -{ - m_windowGrabber->stop(); - - m_status = QCamera::StoppingStatus; - emit statusChanged(m_status); - - m_surfaceMutex.lock(); - if (m_surface) { - m_surface->stop(); - } - m_surfaceMutex.unlock(); - - camera_error_t result = CAMERA_EOK; - if (m_captureMode & QCamera::CaptureStillImage) - result = camera_stop_photo_viewfinder(m_handle); - else if (m_captureMode & QCamera::CaptureVideo) - result = camera_stop_video_viewfinder(m_handle); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to stop viewfinder:" << result; - return; - } - - m_status = QCamera::LoadedStatus; - emit statusChanged(m_status); -} - -void BbCameraSession::applyConfiguration() -{ - if (m_captureMode & QCamera::CaptureStillImage) { - const QList<QSize> photoOutputResolutions = supportedResolutions(QCamera::CaptureStillImage); - - if (!m_imageEncoderSettings.resolution().isValid() || !photoOutputResolutions.contains(m_imageEncoderSettings.resolution())) - m_imageEncoderSettings.setResolution(photoOutputResolutions.first()); - - const QSize photoResolution = m_imageEncoderSettings.resolution(); - const qreal aspectRatio = static_cast<qreal>(photoResolution.width())/static_cast<qreal>(photoResolution.height()); - - // apply viewfinder configuration - QSize viewfinderResolution; - QList<QSize> sizes = supportedViewfinderResolutions(QCamera::CaptureStillImage); - std::reverse(sizes.begin(), sizes.end()); // use smallest possible resolution - for (const QSize &size : qAsConst(sizes)) { - // search for viewfinder resolution with the same aspect ratio - if (qFuzzyCompare(aspectRatio, (static_cast<qreal>(size.width())/static_cast<qreal>(size.height())))) { - viewfinderResolution = size; - break; - } - } - - Q_ASSERT(viewfinderResolution.isValid()); - - const QByteArray windowId = QString().sprintf("qcamera_vf_%p", this).toLatin1(); - m_windowGrabber->setWindowId(windowId); - - const QByteArray windowGroupId = m_windowGrabber->windowGroupId(); - - camera_error_t result = camera_set_photovf_property(m_handle, - CAMERA_IMGPROP_WIN_GROUPID, windowGroupId.data(), - CAMERA_IMGPROP_WIN_ID, windowId.data(), - CAMERA_IMGPROP_WIDTH, viewfinderResolution.width(), - CAMERA_IMGPROP_HEIGHT, viewfinderResolution.height(), - CAMERA_IMGPROP_FORMAT, CAMERA_FRAMETYPE_NV12, - CAMERA_IMGPROP_ROTATION, 360 - m_nativeCameraOrientation); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to apply photo viewfinder settings:" << result; - return; - } - - - int jpegQuality = 100; - switch (m_imageEncoderSettings.quality()) { - case QMultimedia::VeryLowQuality: - jpegQuality = 20; - break; - case QMultimedia::LowQuality: - jpegQuality = 40; - break; - case QMultimedia::NormalQuality: - jpegQuality = 60; - break; - case QMultimedia::HighQuality: - jpegQuality = 80; - break; - case QMultimedia::VeryHighQuality: - jpegQuality = 100; - break; - } - - // apply photo configuration - result = camera_set_photo_property(m_handle, - CAMERA_IMGPROP_WIDTH, photoResolution.width(), - CAMERA_IMGPROP_HEIGHT, photoResolution.height(), - CAMERA_IMGPROP_JPEGQFACTOR, jpegQuality, - CAMERA_IMGPROP_ROTATION, 360 - m_nativeCameraOrientation); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to apply photo settings:" << result; - return; - } - - } else if (m_captureMode & QCamera::CaptureVideo) { - applyVideoSettings(); - } - - startViewFinder(); -} - -static void videoRecordingStatusCallback(camera_handle_t handle, camera_devstatus_t status, uint16_t value, void *context) -{ - Q_UNUSED(handle); - Q_UNUSED(value); - - if (status == CAMERA_STATUS_VIDEO_PAUSE) { - BbCameraSession *session = static_cast<BbCameraSession*>(context); - QMetaObject::invokeMethod(session, "handleVideoRecordingPaused", Qt::QueuedConnection); - } else if (status == CAMERA_STATUS_VIDEO_RESUME) { - BbCameraSession *session = static_cast<BbCameraSession*>(context); - QMetaObject::invokeMethod(session, "handleVideoRecordingResumed", Qt::QueuedConnection); - } -} - -bool BbCameraSession::startVideoRecording() -{ - m_videoRecordingDuration.invalidate(); - - m_videoStatus = QMediaRecorder::StartingStatus; - emit videoStatusChanged(m_videoStatus); - - if (m_videoOutputLocation.isEmpty()) - m_videoOutputLocation = m_mediaStorageLocation.generateFileName(QLatin1String("VID_"), m_mediaStorageLocation.defaultDir(QCamera::CaptureVideo), QLatin1String("mp4")); - - emit actualLocationChanged(m_videoOutputLocation); - - const camera_error_t result = camera_start_video(m_handle, QFile::encodeName(m_videoOutputLocation), 0, videoRecordingStatusCallback, this); - if (result != CAMERA_EOK) { - m_videoStatus = QMediaRecorder::LoadedStatus; - emit videoStatusChanged(m_videoStatus); - - emit videoError(QMediaRecorder::ResourceError, tr("Unable to start video recording")); - return false; - } - - return true; -} - -void BbCameraSession::stopVideoRecording() -{ - m_videoStatus = QMediaRecorder::FinalizingStatus; - emit videoStatusChanged(m_videoStatus); - - const camera_error_t result = camera_stop_video(m_handle); - if (result != CAMERA_EOK) { - emit videoError(QMediaRecorder::ResourceError, tr("Unable to stop video recording")); - } - - m_videoStatus = QMediaRecorder::LoadedStatus; - emit videoStatusChanged(m_videoStatus); - - m_videoRecordingDuration.invalidate(); -} - -bool BbCameraSession::isCaptureModeSupported(camera_handle_t handle, QCamera::CaptureModes mode) const -{ - if (mode & QCamera::CaptureStillImage) - return camera_has_feature(handle, CAMERA_FEATURE_PHOTO); - - if (mode & QCamera::CaptureVideo) - return camera_has_feature(handle, CAMERA_FEATURE_VIDEO); - - return false; -} - -QList<QSize> BbCameraSession::supportedResolutions(QCamera::CaptureMode mode) const -{ - Q_ASSERT(m_handle != CAMERA_HANDLE_INVALID); - - QList<QSize> list; - - camera_error_t result = CAMERA_EOK; - camera_res_t resolutions[20]; - unsigned int supported = 0; - - if (mode == QCamera::CaptureStillImage) - result = camera_get_photo_output_resolutions(m_handle, CAMERA_FRAMETYPE_JPEG, 20, &supported, resolutions); - else if (mode == QCamera::CaptureVideo) - result = camera_get_video_output_resolutions(m_handle, 20, &supported, resolutions); - - if (result != CAMERA_EOK) - return list; - - for (unsigned int i = 0; i < supported; ++i) - list << QSize(resolutions[i].width, resolutions[i].height); - - return list; -} - -QList<QSize> BbCameraSession::supportedViewfinderResolutions(QCamera::CaptureMode mode) const -{ - Q_ASSERT(m_handle != CAMERA_HANDLE_INVALID); - - QList<QSize> list; - - camera_error_t result = CAMERA_EOK; - camera_res_t resolutions[20]; - unsigned int supported = 0; - - if (mode == QCamera::CaptureStillImage) - result = camera_get_photo_vf_resolutions(m_handle, 20, &supported, resolutions); - else if (mode == QCamera::CaptureVideo) - result = camera_get_video_vf_resolutions(m_handle, 20, &supported, resolutions); - - if (result != CAMERA_EOK) - return list; - - for (unsigned int i = 0; i < supported; ++i) - list << QSize(resolutions[i].width, resolutions[i].height); - - return list; -} - -QSize BbCameraSession::currentViewfinderResolution(QCamera::CaptureMode mode) const -{ - Q_ASSERT(m_handle != CAMERA_HANDLE_INVALID); - - camera_error_t result = CAMERA_EOK; - int width = 0; - int height = 0; - - if (mode == QCamera::CaptureStillImage) - result = camera_get_photovf_property(m_handle, CAMERA_IMGPROP_WIDTH, &width, - CAMERA_IMGPROP_HEIGHT, &height); - else if (mode == QCamera::CaptureVideo) - result = camera_get_videovf_property(m_handle, CAMERA_IMGPROP_WIDTH, &width, - CAMERA_IMGPROP_HEIGHT, &height); - - if (result != CAMERA_EOK) - return QSize(); - - return QSize(width, height); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/camera/bbcamerasession.h b/src/plugins/qnx/camera/bbcamerasession.h deleted file mode 100644 index 70523f1e3..000000000 --- a/src/plugins/qnx/camera/bbcamerasession.h +++ /dev/null @@ -1,215 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 WindowGrabber; - -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); - - // 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 applyVideoSettings(); - - // 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); - -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); - - // 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); - - void cameraOpened(); - void focusStatusChanged(int status); - -private slots: - void updateReadyForCapture(); - void imageCaptured(int, const QImage&, const QString&); - void handleVideoRecordingPaused(); - void handleVideoRecordingResumed(); - void deviceOrientationChanged(int); - void handleCameraPowerUp(); - void viewfinderFrameGrabbed(const QImage &image); - void applyConfiguration(); - -private: - bool openCamera(); - void closeCamera(); - bool startViewFinder(); - void stopViewFinder(); - 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; - bool m_previewIsVideo; - - QPointer<QAbstractVideoSurface> m_surface; - QMutex m_surfaceMutex; - - QCameraImageCapture::DriveMode m_captureImageDriveMode; - int m_lastImageCaptureId; - QCameraImageCapture::CaptureDestinations m_captureDestination; - - QImageEncoderSettings m_imageEncoderSettings; - - 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; - - WindowGrabber* m_windowGrabber; -}; - -QDebug operator<<(QDebug debug, camera_error_t error); - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.cpp b/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.cpp deleted file mode 100644 index 5e3a902c2..000000000 --- a/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h b/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h deleted file mode 100644 index f67196be1..000000000 --- a/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous = 0) const override; - QStringList supportedVideoCodecs() const override; - QString videoCodecDescription(const QString &codecName) const override; - QVideoEncoderSettings videoSettings() const override; - void setVideoSettings(const QVideoEncoderSettings &settings) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.cpp b/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.cpp deleted file mode 100644 index d800ffe13..000000000 --- a/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h b/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h deleted file mode 100644 index 7a8e57a13..000000000 --- a/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QVariant viewfinderParameter(ViewfinderParameter parameter) const override; - void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbcamerazoomcontrol.cpp b/src/plugins/qnx/camera/bbcamerazoomcontrol.cpp deleted file mode 100644 index 21f328b4f..000000000 --- a/src/plugins/qnx/camera/bbcamerazoomcontrol.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbcamerazoomcontrol.h b/src/plugins/qnx/camera/bbcamerazoomcontrol.h deleted file mode 100644 index 7b5e06f8d..000000000 --- a/src/plugins/qnx/camera/bbcamerazoomcontrol.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - qreal maximumDigitalZoom() const override; - qreal requestedOpticalZoom() const override; - qreal requestedDigitalZoom() const override; - qreal currentOpticalZoom() const override; - qreal currentDigitalZoom() const override; - void zoomTo(qreal optical, qreal digital) 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 diff --git a/src/plugins/qnx/camera/bbimageencodercontrol.cpp b/src/plugins/qnx/camera/bbimageencodercontrol.cpp deleted file mode 100644 index cd564a1d4..000000000 --- a/src/plugins/qnx/camera/bbimageencodercontrol.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbimageencodercontrol.h b/src/plugins/qnx/camera/bbimageencodercontrol.h deleted file mode 100644 index bb246def6..000000000 --- a/src/plugins/qnx/camera/bbimageencodercontrol.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QString imageCodecDescription(const QString &codecName) const override; - QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const override; - QImageEncoderSettings imageSettings() const override; - void setImageSettings(const QImageEncoderSettings &settings) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbmediastoragelocation.cpp b/src/plugins/qnx/camera/bbmediastoragelocation.cpp deleted file mode 100644 index c3aaed55d..000000000 --- a/src/plugins/qnx/camera/bbmediastoragelocation.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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(); - - for (const QString &path : qAsConst(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 - const auto list = dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(extension)); - for (const QString &fileName : list) { - const qint64 mediaIndex = QStringView{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 diff --git a/src/plugins/qnx/camera/bbmediastoragelocation.h b/src/plugins/qnx/camera/bbmediastoragelocation.h deleted file mode 100644 index 8a953c27d..000000000 --- a/src/plugins/qnx/camera/bbmediastoragelocation.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.cpp b/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.cpp deleted file mode 100644 index fd7deb179..000000000 --- a/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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_default(0) - , 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_default = 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 m_default; -} - -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 diff --git a/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h b/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h deleted file mode 100644 index 08d6cbb14..000000000 --- a/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - QString deviceName(int index) const override; - QString deviceDescription(int index) const override; - int defaultDevice() const override; - int selectedDevice() const override; - - static void enumerateDevices(QList<QByteArray> *devices, QStringList *descriptions); - -public Q_SLOTS: - void setSelectedDevice(int index) override; - -private: - BbCameraSession* m_session; - - QList<QByteArray> m_devices; - QStringList m_descriptions; - - int m_default; - int m_selected; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/bbvideorenderercontrol.cpp b/src/plugins/qnx/camera/bbvideorenderercontrol.cpp deleted file mode 100644 index fd271c9de..000000000 --- a/src/plugins/qnx/camera/bbvideorenderercontrol.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 diff --git a/src/plugins/qnx/camera/bbvideorenderercontrol.h b/src/plugins/qnx/camera/bbvideorenderercontrol.h deleted file mode 100644 index 441ff369d..000000000 --- a/src/plugins/qnx/camera/bbvideorenderercontrol.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.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 override; - void setSurface(QAbstractVideoSurface *surface) override; - -private: - BbCameraSession *m_session; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/camera/camera.pri b/src/plugins/qnx/camera/camera.pri deleted file mode 100644 index 886351862..000000000 --- a/src/plugins/qnx/camera/camera.pri +++ /dev/null @@ -1,52 +0,0 @@ -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/bbcamerainfocontrol.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/bbcamerainfocontrol.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 - diff --git a/src/plugins/qnx/common/common.pri b/src/plugins/qnx/common/common.pri deleted file mode 100644 index 1a6693474..000000000 --- a/src/plugins/qnx/common/common.pri +++ /dev/null @@ -1,7 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/windowgrabber.h - -SOURCES += \ - $$PWD/windowgrabber.cpp diff --git a/src/plugins/qnx/common/windowgrabber.cpp b/src/plugins/qnx/common/windowgrabber.cpp deleted file mode 100644 index 65037fcce..000000000 --- a/src/plugins/qnx/common/windowgrabber.cpp +++ /dev/null @@ -1,419 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "windowgrabber.h" - -#include <QAbstractEventDispatcher> -#include <QDebug> -#include <QGuiApplication> -#include <QImage> -#include <QThread> -#include <qpa/qplatformnativeinterface.h> - -#include <QOpenGLContext> -#include <QOpenGLFunctions> - -#include <errno.h> - -QT_BEGIN_NAMESPACE - -static PFNEGLCREATEIMAGEKHRPROC s_eglCreateImageKHR; -static PFNEGLDESTROYIMAGEKHRPROC s_eglDestroyImageKHR; - -WindowGrabber::WindowGrabber(QObject *parent) - : QObject(parent), - m_windowParent(nullptr), - m_screenContext(0), - m_active(false), - m_currentFrame(0), - m_eglImageSupported(false), - m_eglImageCheck(false) -{ - // grab the window frame with 60 frames per second - m_timer.setInterval(1000/60); - - connect(&m_timer, SIGNAL(timeout()), SLOT(triggerUpdate())); - - QCoreApplication::eventDispatcher()->installNativeEventFilter(this); - - for ( int i = 0; i < 2; ++i ) - m_images[i] = 0; - - // Use of EGL images can be disabled by setting QQNX_MM_DISABLE_EGLIMAGE_SUPPORT to something - // non-zero. This is probably useful only to test that this path still works since it results - // in a high CPU load. - if (!s_eglCreateImageKHR && qgetenv("QQNX_MM_DISABLE_EGLIMAGE_SUPPORT").toInt() == 0) { - s_eglCreateImageKHR = reinterpret_cast<PFNEGLCREATEIMAGEKHRPROC>(eglGetProcAddress("eglCreateImageKHR")); - s_eglDestroyImageKHR = reinterpret_cast<PFNEGLDESTROYIMAGEKHRPROC>(eglGetProcAddress("eglDestroyImageKHR")); - } - - QPlatformNativeInterface *const nativeInterface = QGuiApplication::platformNativeInterface(); - if (nativeInterface) { - m_screenContext = static_cast<screen_context_t>( - nativeInterface->nativeResourceForIntegration("screenContext")); - } - - // Create a parent window for the window whose content will be grabbed. Since the - // window is only a buffer conduit, the characteristics of the parent window are - // irrelevant. The contents of the window can be grabbed so long as the window - // joins the parent window's group and the parent window is in this process. - // Using the window that displays this content isn't possible because there's no - // way to reliably retrieve it from this code or any calling code. - screen_create_window(&m_windowParent, m_screenContext); - screen_create_window_group(m_windowParent, nullptr); -} - -WindowGrabber::~WindowGrabber() -{ - screen_destroy_window(m_windowParent); - QCoreApplication::eventDispatcher()->removeNativeEventFilter(this); - cleanup(); -} - -void WindowGrabber::setFrameRate(int frameRate) -{ - m_timer.setInterval(1000/frameRate); -} - - -void WindowGrabber::setWindowId(const QByteArray &windowId) -{ - m_windowId = windowId; -} - -void WindowGrabber::start() -{ - if (m_active) - return; - - if (!m_screenContext) - screen_get_window_property_pv(m_window, SCREEN_PROPERTY_CONTEXT, reinterpret_cast<void**>(&m_screenContext)); - - m_timer.start(); - - m_active = true; -} - -void WindowGrabber::stop() -{ - if (!m_active) - return; - - cleanup(); - - m_timer.stop(); - - m_active = false; -} - -void WindowGrabber::pause() -{ - m_timer.stop(); -} - -void WindowGrabber::resume() -{ - if (!m_active) - return; - - m_timer.start(); -} - -bool WindowGrabber::handleScreenEvent(screen_event_t screen_event) -{ - - int eventType; - if (screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &eventType) != 0) { - qWarning() << "WindowGrabber: Failed to query screen event type"; - return false; - } - - if (eventType != SCREEN_EVENT_CREATE) - return false; - - screen_window_t window = 0; - if (screen_get_event_property_pv(screen_event, SCREEN_PROPERTY_WINDOW, (void**)&window) != 0) { - qWarning() << "WindowGrabber: Failed to query window property"; - return false; - } - - const int maxIdStrLength = 128; - char idString[maxIdStrLength]; - if (screen_get_window_property_cv(window, SCREEN_PROPERTY_ID_STRING, maxIdStrLength, idString) != 0) { - qWarning() << "WindowGrabber: Failed to query window ID string"; - return false; - } - - // Grab windows that have a non-empty ID string and a matching window id to grab - if (idString[0] != '\0' && m_windowId == idString) { - m_window = window; - start(); - } - - return false; -} - -bool WindowGrabber::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) -{ - if (eventType == "screen_event_t") { - const screen_event_t event = static_cast<screen_event_t>(message); - return handleScreenEvent(event); - } - - return false; -} - -QByteArray WindowGrabber::windowGroupId() const -{ - char groupName[256]; - memset(groupName, 0, sizeof(groupName)); - screen_get_window_property_cv(m_windowParent, - SCREEN_PROPERTY_GROUP, - sizeof(groupName) - 1, - groupName); - return QByteArray(groupName); -} - -bool WindowGrabber::eglImageSupported() -{ - return m_eglImageSupported; -} - -void WindowGrabber::checkForEglImageExtension() -{ - QOpenGLContext *m_context = QOpenGLContext::currentContext(); - if (!m_context) //Should not happen, because we are called from the render thread - return; - - QByteArray eglExtensions = QByteArray(eglQueryString(eglGetDisplay(EGL_DEFAULT_DISPLAY), - EGL_EXTENSIONS)); - m_eglImageSupported = m_context->hasExtension(QByteArrayLiteral("GL_OES_EGL_image")) - && eglExtensions.contains(QByteArrayLiteral("EGL_KHR_image")) - && s_eglCreateImageKHR && s_eglDestroyImageKHR; - - if (strstr(reinterpret_cast<const char*>(glGetString(GL_VENDOR)), "VMware")) - m_eglImageSupported = false; - - m_eglImageCheck = true; -} - -void WindowGrabber::triggerUpdate() -{ - if (!m_eglImageCheck) // We did not check for egl images yet - return; - - int size[2] = { 0, 0 }; - - int result = screen_get_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_SIZE, size); - if (result != 0) { - cleanup(); - qWarning() << "WindowGrabber: cannot get window size:" << strerror(errno); - return; - } - - if (m_size.width() != size[0] || m_size.height() != size[1]) - m_size = QSize(size[0], size[1]); - - emit updateScene(m_size); -} - -bool WindowGrabber::selectBuffer() -{ - // If we're using egl images we need to double buffer since the gpu may still be using the last - // video frame. If we're not, it doesn't matter since the data is immediately copied. - if (eglImageSupported()) - m_currentFrame = (m_currentFrame + 1) % 2; - - if (!m_images[m_currentFrame]) { - m_images[m_currentFrame] = new WindowGrabberImage(); - if (!m_images[m_currentFrame]->initialize(m_screenContext)) { - delete m_images[m_currentFrame]; - m_images[m_currentFrame] = 0; - return false; - } - } - return true; -} - -int WindowGrabber::getNextTextureId() -{ - if (!selectBuffer()) - return 0; - return m_images[m_currentFrame]->getTexture(m_window, m_size); -} - -QImage WindowGrabber::getNextImage() -{ - if (!selectBuffer()) - return QImage(); - - return m_images[m_currentFrame]->getImage(m_window, m_size); -} - -void WindowGrabber::cleanup() -{ - for ( int i = 0; i < 2; ++i ) { - if (m_images[i]) { - m_images[i]->destroy(); - m_images[i] = 0; - } - } -} - - -WindowGrabberImage::WindowGrabberImage() - : m_pixmap(0), m_pixmapBuffer(0), m_eglImage(0), m_glTexture(0), m_bufferAddress(0), m_bufferStride(0) -{ -} - -WindowGrabberImage::~WindowGrabberImage() -{ - if (m_glTexture) - glDeleteTextures(1, &m_glTexture); - if (m_eglImage) - s_eglDestroyImageKHR(eglGetDisplay(EGL_DEFAULT_DISPLAY), m_eglImage); - if (m_pixmap) - screen_destroy_pixmap(m_pixmap); -} - -bool -WindowGrabberImage::initialize(screen_context_t screenContext) -{ - if (screen_create_pixmap(&m_pixmap, screenContext) != 0) { - qWarning() << "WindowGrabber: cannot create pixmap:" << strerror(errno); - return false; - } - const int usage = SCREEN_USAGE_WRITE | SCREEN_USAGE_READ | SCREEN_USAGE_NATIVE; - screen_set_pixmap_property_iv(m_pixmap, SCREEN_PROPERTY_USAGE, &usage); - - const int format = SCREEN_FORMAT_RGBX8888; - screen_set_pixmap_property_iv(m_pixmap, SCREEN_PROPERTY_FORMAT, &format); - - return true; -} - -void -WindowGrabberImage::destroy() -{ - // We want to delete in the thread we were created in since we need the thread that - // has called eglMakeCurrent on the right EGL context. This doesn't actually guarantee - // this but that would be hard to achieve and in practice it works. - if (QThread::currentThread() == thread()) - delete this; - else - deleteLater(); -} - -bool -WindowGrabberImage::resize(const QSize &newSize) -{ - if (m_pixmapBuffer) { - screen_destroy_pixmap_buffer(m_pixmap); - m_pixmapBuffer = 0; - m_bufferAddress = 0; - m_bufferStride = 0; - } - - int size[2] = { newSize.width(), newSize.height() }; - - screen_set_pixmap_property_iv(m_pixmap, SCREEN_PROPERTY_BUFFER_SIZE, size); - - if (screen_create_pixmap_buffer(m_pixmap) == 0) { - screen_get_pixmap_property_pv(m_pixmap, SCREEN_PROPERTY_RENDER_BUFFERS, - reinterpret_cast<void**>(&m_pixmapBuffer)); - screen_get_buffer_property_pv(m_pixmapBuffer, SCREEN_PROPERTY_POINTER, - reinterpret_cast<void**>(&m_bufferAddress)); - screen_get_buffer_property_iv(m_pixmapBuffer, SCREEN_PROPERTY_STRIDE, &m_bufferStride); - m_size = newSize; - - return true; - } else { - m_size = QSize(); - return false; - } -} - -bool -WindowGrabberImage::grab(screen_window_t window) -{ - const int rect[] = { 0, 0, m_size.width(), m_size.height() }; - return screen_read_window(window, m_pixmapBuffer, 1, rect, 0) == 0; -} - -QImage -WindowGrabberImage::getImage(screen_window_t window, const QSize &size) -{ - if (size != m_size) { - if (!resize(size)) - return QImage(); - } - if (!m_bufferAddress || !grab(window)) - return QImage(); - - return QImage(m_bufferAddress, m_size.width(), m_size.height(), m_bufferStride, QImage::Format_ARGB32); -} - -GLuint -WindowGrabberImage::getTexture(screen_window_t window, const QSize &size) -{ - if (size != m_size) { - if (!m_glTexture) - glGenTextures(1, &m_glTexture); - glBindTexture(GL_TEXTURE_2D, m_glTexture); - if (m_eglImage) { - glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, 0); - s_eglDestroyImageKHR(eglGetDisplay(EGL_DEFAULT_DISPLAY), m_eglImage); - m_eglImage = 0; - } - if (!resize(size)) - return 0; - m_eglImage = s_eglCreateImageKHR(eglGetDisplay(EGL_DEFAULT_DISPLAY), EGL_NO_CONTEXT, - EGL_NATIVE_PIXMAP_KHR, m_pixmap, 0); - glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage); - } - - if (!m_pixmap || !grab(window)) - return 0; - - return m_glTexture; -} - - - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/common/windowgrabber.h b/src/plugins/qnx/common/windowgrabber.h deleted file mode 100644 index c4c1f6a53..000000000 --- a/src/plugins/qnx/common/windowgrabber.h +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef WINDOWGRABBER_H -#define WINDOWGRABBER_H - -#define EGL_EGLEXT_PROTOTYPES -#define GL_GLEXT_PROTOTYPES -#include <EGL/egl.h> -#include <GLES2/gl2.h> -#include <GLES2/gl2ext.h> -#include <EGL/eglext.h> -#include <QAbstractNativeEventFilter> -#include <QObject> -#include <QSize> -#include <QTimer> - -#include <screen/screen.h> - -QT_BEGIN_NAMESPACE - -class WindowGrabberImage : public QObject -{ - Q_OBJECT - -public: - WindowGrabberImage(); - ~WindowGrabberImage(); - - bool initialize(screen_context_t screenContext); - - void destroy(); - - QImage getImage(screen_window_t window, const QSize &size); - GLuint getTexture(screen_window_t window, const QSize &size); - -private: - bool grab(screen_window_t window); - bool resize(const QSize &size); - - QSize m_size; - screen_pixmap_t m_pixmap; - screen_buffer_t m_pixmapBuffer; - EGLImageKHR m_eglImage; - GLuint m_glTexture; - unsigned char *m_bufferAddress; - int m_bufferStride; -}; - -class WindowGrabber : public QObject, public QAbstractNativeEventFilter -{ - Q_OBJECT - -public: - explicit WindowGrabber(QObject *parent = 0); - ~WindowGrabber(); - - void setFrameRate(int frameRate); - - void setWindowId(const QByteArray &windowId); - - void start(); - void stop(); - - void pause(); - void resume(); - - bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; - - bool handleScreenEvent(screen_event_t event); - - QByteArray windowGroupId() const; - - bool eglImageSupported(); - void checkForEglImageExtension(); - - int getNextTextureId(); - QImage getNextImage(); - -signals: - void updateScene(const QSize &size); - -private slots: - void triggerUpdate(); - -private: - bool selectBuffer(); - void cleanup(); - - QTimer m_timer; - - QByteArray m_windowId; - - screen_window_t m_windowParent; - screen_window_t m_window; - screen_context_t m_screenContext; - - WindowGrabberImage *m_images[2]; - QSize m_size; - - bool m_active; - int m_currentFrame; - bool m_eglImageSupported; - bool m_eglImageCheck; // We must not send a grabed frame before this is true -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mediaplayer.pri b/src/plugins/qnx/mediaplayer/mediaplayer.pri deleted file mode 100644 index f39b542cc..000000000 --- a/src/plugins/qnx/mediaplayer/mediaplayer.pri +++ /dev/null @@ -1,28 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/mmrendereraudiorolecontrol.h \ - $$PWD/mmrenderermediaplayercontrol.h \ - $$PWD/mmrenderermediaplayerservice.h \ - $$PWD/mmrenderermetadata.h \ - $$PWD/mmrenderermetadatareadercontrol.h \ - $$PWD/mmrendererplayervideorenderercontrol.h \ - $$PWD/mmrendererutil.h \ - $$PWD/mmrenderervideowindowcontrol.h \ - $$PWD/mmreventmediaplayercontrol.h \ - $$PWD/mmreventthread.h \ - $$PWD/mmrenderercustomaudiorolecontrol.h -SOURCES += \ - $$PWD/mmrendereraudiorolecontrol.cpp \ - $$PWD/mmrenderermediaplayercontrol.cpp \ - $$PWD/mmrenderermediaplayerservice.cpp \ - $$PWD/mmrenderermetadata.cpp \ - $$PWD/mmrenderermetadatareadercontrol.cpp \ - $$PWD/mmrendererplayervideorenderercontrol.cpp \ - $$PWD/mmrendererutil.cpp \ - $$PWD/mmrenderervideowindowcontrol.cpp \ - $$PWD/mmreventmediaplayercontrol.cpp \ - $$PWD/mmreventthread.cpp \ - $$PWD/mmrenderercustomaudiorolecontrol.cpp - -QMAKE_USE += mmrenderer diff --git a/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.cpp b/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.cpp deleted file mode 100644 index e470ed4c5..000000000 --- a/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrendereraudiorolecontrol.h" -#include "mmrendererutil.h" - -QT_BEGIN_NAMESPACE - -MmRendererAudioRoleControl::MmRendererAudioRoleControl(QObject *parent) - : QAudioRoleControl(parent) - , m_role(QAudio::UnknownRole) -{ -} - -QAudio::Role MmRendererAudioRoleControl::audioRole() const -{ - return m_role; -} - -void MmRendererAudioRoleControl::setAudioRole(QAudio::Role role) -{ - if (m_role != role) { - m_role = role; - emit audioRoleChanged(m_role); - } -} - -QList<QAudio::Role> MmRendererAudioRoleControl::supportedAudioRoles() const -{ - return qnxSupportedAudioRoles(); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h b/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h deleted file mode 100644 index d0d2165eb..000000000 --- a/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERAUDIOROLECONTROL_H -#define MMRENDERERAUDIOROLECONTROL_H - -#include <qaudiorolecontrol.h> - -QT_BEGIN_NAMESPACE - -class MmRendererAudioRoleControl : public QAudioRoleControl -{ - Q_OBJECT -public: - explicit MmRendererAudioRoleControl(QObject *parent = 0); - - QAudio::Role audioRole() const override; - void setAudioRole(QAudio::Role role) override; - - QList<QAudio::Role> supportedAudioRoles() const override; - -private: - QAudio::Role m_role; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp deleted file mode 100644 index c8971d41c..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrenderercustomaudiorolecontrol.h" -#include "mmrendererutil.h" - -QT_BEGIN_NAMESPACE - -MmRendererCustomAudioRoleControl::MmRendererCustomAudioRoleControl(QObject *parent) - : QCustomAudioRoleControl(parent) -{ -} - -QString MmRendererCustomAudioRoleControl::customAudioRole() const -{ - return m_role; -} - -void MmRendererCustomAudioRoleControl::setCustomAudioRole(const QString &role) -{ - if (m_role != role) { - m_role = role; - emit customAudioRoleChanged(m_role); - } -} - -QStringList MmRendererCustomAudioRoleControl::supportedCustomAudioRoles() const -{ - return QStringList(); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h b/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h deleted file mode 100644 index ff16f9355..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERCUSTOMAUDIOROLECONTROL_H -#define MMRENDERERCUSTOMAUDIOROLECONTROL_H - -#include <qcustomaudiorolecontrol.h> - -QT_BEGIN_NAMESPACE - -class MmRendererCustomAudioRoleControl : public QCustomAudioRoleControl -{ - Q_OBJECT -public: - explicit MmRendererCustomAudioRoleControl(QObject *parent = 0); - - QString customAudioRole() const Q_DECL_OVERRIDE; - void setCustomAudioRole(const QString &role) Q_DECL_OVERRIDE; - - QStringList supportedCustomAudioRoles() const Q_DECL_OVERRIDE; - -private: - QString m_role; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp deleted file mode 100644 index fc48ed818..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp +++ /dev/null @@ -1,653 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrendereraudiorolecontrol.h" -#include "mmrenderercustomaudiorolecontrol.h" -#include "mmrenderermediaplayercontrol.h" -#include "mmrenderermetadatareadercontrol.h" -#include "mmrendererplayervideorenderercontrol.h" -#include "mmrendererutil.h" -#include "mmrenderervideowindowcontrol.h" -#include <QtCore/qabstracteventdispatcher.h> -#include <QtCore/qcoreapplication.h> -#include <QtCore/qdir.h> -#include <QtCore/qfileinfo.h> -#include <QtCore/quuid.h> -#include <mm/renderer.h> - -#include <errno.h> -#include <sys/strm.h> -#include <sys/stat.h> - -QT_BEGIN_NAMESPACE - -static int idCounter = 0; - -MmRendererMediaPlayerControl::MmRendererMediaPlayerControl(QObject *parent) - : QMediaPlayerControl(parent), - m_context(0), - m_id(-1), - m_connection(0), - m_audioId(-1), - m_state(QMediaPlayer::StoppedState), - m_volume(100), - m_muted(false), - m_rate(1), - m_position(0), - m_mediaStatus(QMediaPlayer::NoMedia), - m_playAfterMediaLoaded(false), - m_inputAttached(false), - m_bufferLevel(0) -{ - m_loadingTimer.setSingleShot(true); - m_loadingTimer.setInterval(0); - connect(&m_loadingTimer, SIGNAL(timeout()), this, SLOT(continueLoadMedia())); - QCoreApplication::eventDispatcher()->installNativeEventFilter(this); -} - -void MmRendererMediaPlayerControl::destroy() -{ - stop(); - detach(); - closeConnection(); - QCoreApplication::eventDispatcher()->removeNativeEventFilter(this); -} - -void MmRendererMediaPlayerControl::openConnection() -{ - m_connection = mmr_connect(NULL); - if (!m_connection) { - emitPError("Unable to connect to the multimedia renderer"); - return; - } - - m_id = idCounter++; - m_contextName = QString("MmRendererMediaPlayerControl_%1_%2").arg(m_id) - .arg(QCoreApplication::applicationPid()); - m_context = mmr_context_create(m_connection, m_contextName.toLatin1(), - 0, S_IRWXU|S_IRWXG|S_IRWXO); - if (!m_context) { - emitPError("Unable to create context"); - closeConnection(); - return; - } - - startMonitoring(); -} - -void MmRendererMediaPlayerControl::handleMmStopped() -{ - // Only react to stop events that happen when the end of the stream is reached and - // playback is stopped because of this. - // Ignore other stop event sources, such as calling mmr_stop() ourselves. - if (m_state != QMediaPlayer::StoppedState) { - setMediaStatus(QMediaPlayer::EndOfMedia); - stopInternal(IgnoreMmRenderer); - } -} - -void MmRendererMediaPlayerControl::handleMmSuspend(const QString &reason) -{ - if (m_state == QMediaPlayer::StoppedState) - return; - - Q_UNUSED(reason); - setMediaStatus(QMediaPlayer::StalledMedia); -} - -void MmRendererMediaPlayerControl::handleMmSuspendRemoval(const QString &bufferStatus) -{ - if (m_state == QMediaPlayer::StoppedState) - return; - - if (bufferStatus == QLatin1String("buffering")) - setMediaStatus(QMediaPlayer::BufferingMedia); - else - setMediaStatus(QMediaPlayer::BufferedMedia); -} - -void MmRendererMediaPlayerControl::handleMmPause() -{ - if (m_state == QMediaPlayer::PlayingState) { - setState(QMediaPlayer::PausedState); - } -} - -void MmRendererMediaPlayerControl::handleMmPlay() -{ - if (m_state == QMediaPlayer::PausedState) { - setState(QMediaPlayer::PlayingState); - } -} - -void MmRendererMediaPlayerControl::closeConnection() -{ - stopMonitoring(); - - if (m_context) { - mmr_context_destroy(m_context); - m_context = 0; - m_contextName.clear(); - } - - if (m_connection) { - mmr_disconnect(m_connection); - m_connection = 0; - } -} - -QByteArray MmRendererMediaPlayerControl::resourcePathForUrl(const QUrl &url) -{ - // If this is a local file, mmrenderer expects the file:// prefix and an absolute path. - // We treat URLs without scheme as local files, most likely someone just forgot to set the - // file:// prefix when constructing the URL. - if (url.isLocalFile() || url.scheme().isEmpty()) { - QString relativeFilePath; - if (!url.scheme().isEmpty()) - relativeFilePath = url.toLocalFile(); - else - relativeFilePath = url.path(); - const QFileInfo fileInfo(relativeFilePath); - return QFile::encodeName(QStringLiteral("file://") + fileInfo.absoluteFilePath()); - - // HTTP or similar URL - } else { - return url.toEncoded(); - } -} - -void MmRendererMediaPlayerControl::attach() -{ - // Should only be called in detached state - Q_ASSERT(m_audioId == -1 && !m_inputAttached); - - if (m_media.isNull() || !m_context) { - setMediaStatus(QMediaPlayer::NoMedia); - return; - } - - resetMonitoring(); - - if (m_videoRendererControl) - m_videoRendererControl->attachDisplay(m_context); - - if (m_videoWindowControl) - m_videoWindowControl->attachDisplay(m_context); - - const QByteArray defaultAudioDevice = qgetenv("QQNX_RENDERER_DEFAULT_AUDIO_SINK"); - m_audioId = mmr_output_attach(m_context, defaultAudioDevice.isEmpty() ? "audio:default" : defaultAudioDevice.constData(), "audio"); - if (m_audioId == -1) { - emitMmError("mmr_output_attach() for audio failed"); - return; - } - - if (m_audioId != -1 && m_audioRoleControl) { - QAudio::Role audioRole = m_audioRoleControl->audioRole(); - QString audioType = (audioRole == QAudio::CustomRole && m_customAudioRoleControl) - ? m_customAudioRoleControl->customAudioRole() - : qnxAudioType(audioRole); - QByteArray latin1AudioType = audioType.toLatin1(); - if (!audioType.isEmpty() && latin1AudioType == audioType) { - strm_dict_t *dict = strm_dict_new(); - dict = strm_dict_set(dict, "audio_type", latin1AudioType.constData()); - if (mmr_output_parameters(m_context, m_audioId, dict) != 0) - emitMmError("mmr_output_parameters: Setting audio_type failed"); - } - } - - const QByteArray resourcePath = resourcePathForUrl(m_media.request().url()); - if (resourcePath.isEmpty()) { - detach(); - return; - } - - if (mmr_input_attach(m_context, resourcePath.constData(), "track") != 0) { - emitMmError(QStringLiteral("mmr_input_attach() failed for ") + QString(resourcePath)); - setMediaStatus(QMediaPlayer::InvalidMedia); - detach(); - return; - } - - m_inputAttached = true; - setMediaStatus(QMediaPlayer::LoadedMedia); - - // mm-renderer has buffer properties "status" and "level" - // QMediaPlayer's buffer status maps to mm-renderer's buffer level - m_bufferLevel = 0; - emit bufferStatusChanged(m_bufferLevel); -} - -void MmRendererMediaPlayerControl::detach() -{ - if (m_context) { - if (m_inputAttached) { - mmr_input_detach(m_context); - m_inputAttached = false; - } - if (m_videoRendererControl) - m_videoRendererControl->detachDisplay(); - if (m_videoWindowControl) - m_videoWindowControl->detachDisplay(); - if (m_audioId != -1 && m_context) { - mmr_output_detach(m_context, m_audioId); - m_audioId = -1; - } - } - - m_loadingTimer.stop(); -} - -QMediaPlayer::State MmRendererMediaPlayerControl::state() const -{ - return m_state; -} - -QMediaPlayer::MediaStatus MmRendererMediaPlayerControl::mediaStatus() const -{ - return m_mediaStatus; -} - -qint64 MmRendererMediaPlayerControl::duration() const -{ - return m_metaData.duration(); -} - -qint64 MmRendererMediaPlayerControl::position() const -{ - return m_position; -} - -void MmRendererMediaPlayerControl::setPosition(qint64 position) -{ - if (m_position != position) { - m_position = position; - - // Don't update in stopped state, it would not have any effect. Instead, the position is - // updated in play(). - if (m_state != QMediaPlayer::StoppedState) - setPositionInternal(m_position); - - emit positionChanged(m_position); - } -} - -int MmRendererMediaPlayerControl::volume() const -{ - return m_volume; -} - -void MmRendererMediaPlayerControl::setVolumeInternal(int newVolume) -{ - if (!m_context) - return; - - newVolume = qBound(0, newVolume, 100); - if (m_audioId != -1) { - strm_dict_t * dict = strm_dict_new(); - dict = strm_dict_set(dict, "volume", QString::number(newVolume).toLatin1()); - if (mmr_output_parameters(m_context, m_audioId, dict) != 0) - emitMmError("mmr_output_parameters: Setting volume failed"); - } -} - -void MmRendererMediaPlayerControl::setPlaybackRateInternal(qreal rate) -{ - if (!m_context) - return; - - const int mmRate = rate * 1000; - if (mmr_speed_set(m_context, mmRate) != 0) - emitMmError("mmr_speed_set failed"); -} - -void MmRendererMediaPlayerControl::setPositionInternal(qint64 position) -{ - if (!m_context) - return; - - if (m_metaData.isSeekable()) { - if (mmr_seek(m_context, QString::number(position).toLatin1()) != 0) - emitMmError("Seeking failed"); - } -} - -void MmRendererMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status) -{ - if (m_mediaStatus != status) { - m_mediaStatus = status; - emit mediaStatusChanged(m_mediaStatus); - } -} - -void MmRendererMediaPlayerControl::setState(QMediaPlayer::State state) -{ - if (m_state != state) { - if (m_videoRendererControl) { - if (state == QMediaPlayer::PausedState || state == QMediaPlayer::StoppedState) { - m_videoRendererControl->pause(); - } else if ((state == QMediaPlayer::PlayingState) - && (m_state == QMediaPlayer::PausedState - || m_state == QMediaPlayer::StoppedState)) { - m_videoRendererControl->resume(); - } - } - - m_state = state; - emit stateChanged(m_state); - } -} - -void MmRendererMediaPlayerControl::stopInternal(StopCommand stopCommand) -{ - resetMonitoring(); - setPosition(0); - - if (m_state != QMediaPlayer::StoppedState) { - - if (stopCommand == StopMmRenderer) { - mmr_stop(m_context); - } - - setState(QMediaPlayer::StoppedState); - } -} - -void MmRendererMediaPlayerControl::setVolume(int volume) -{ - const int newVolume = qBound(0, volume, 100); - if (m_volume != newVolume) { - m_volume = newVolume; - if (!m_muted) - setVolumeInternal(m_volume); - emit volumeChanged(m_volume); - } -} - -bool MmRendererMediaPlayerControl::isMuted() const -{ - return m_muted; -} - -void MmRendererMediaPlayerControl::setMuted(bool muted) -{ - if (m_muted != muted) { - m_muted = muted; - setVolumeInternal(muted ? 0 : m_volume); - emit mutedChanged(muted); - } -} - -int MmRendererMediaPlayerControl::bufferStatus() const -{ - // mm-renderer has buffer properties "status" and "level" - // QMediaPlayer's buffer status maps to mm-renderer's buffer level - return m_bufferLevel; -} - -bool MmRendererMediaPlayerControl::isAudioAvailable() const -{ - return m_metaData.hasAudio(); -} - -bool MmRendererMediaPlayerControl::isVideoAvailable() const -{ - return m_metaData.hasVideo(); -} - -bool MmRendererMediaPlayerControl::isSeekable() const -{ - return m_metaData.isSeekable(); -} - -QMediaTimeRange MmRendererMediaPlayerControl::availablePlaybackRanges() const -{ - // We can't get this information from the mmrenderer API yet, so pretend we can seek everywhere - return QMediaTimeRange(0, m_metaData.duration()); -} - -qreal MmRendererMediaPlayerControl::playbackRate() const -{ - return m_rate; -} - -void MmRendererMediaPlayerControl::setPlaybackRate(qreal rate) -{ - if (m_rate != rate) { - m_rate = rate; - setPlaybackRateInternal(m_rate); - emit playbackRateChanged(m_rate); - } -} - -QMediaContent MmRendererMediaPlayerControl::media() const -{ - return m_media; -} - -const QIODevice *MmRendererMediaPlayerControl::mediaStream() const -{ - // Always 0, we don't support QIODevice streams - return 0; -} - -void MmRendererMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *stream) -{ - Q_UNUSED(stream); // not supported - - stop(); - detach(); - - m_media = media; - emit mediaChanged(m_media); - - // Slight hack: With MediaPlayer QtQuick elements that have autoPlay set to true, playback - // would start before the QtQuick canvas is propagated to all elements, and therefore our - // video output would not work. Therefore, delay actually playing the media a bit so that the - // canvas is ready. - // The mmrenderer doesn't allow to attach video outputs after playing has started, otherwise - // this would be unnecessary. - if (!m_media.isNull()) { - setMediaStatus(QMediaPlayer::LoadingMedia); - m_loadingTimer.start(); // singleshot timer to continueLoadMedia() - } else { - continueLoadMedia(); // still needed, as it will update the media status and clear metadata - } -} - -void MmRendererMediaPlayerControl::continueLoadMedia() -{ - updateMetaData(nullptr); - attach(); - if (m_playAfterMediaLoaded) - play(); -} - -MmRendererVideoWindowControl *MmRendererMediaPlayerControl::videoWindowControl() const -{ - return m_videoWindowControl; -} - -void MmRendererMediaPlayerControl::play() -{ - if (m_playAfterMediaLoaded) - m_playAfterMediaLoaded = false; - - // No-op if we are already playing, except if we were called from continueLoadMedia(), in which - // case m_playAfterMediaLoaded is true (hence the 'else'). - else if (m_state == QMediaPlayer::PlayingState) - return; - - if (m_mediaStatus == QMediaPlayer::LoadingMedia) { - - // State changes are supposed to be synchronous - setState(QMediaPlayer::PlayingState); - - // Defer playing to later, when the timer triggers continueLoadMedia() - m_playAfterMediaLoaded = true; - return; - } - - // Un-pause the state when it is paused - if (m_state == QMediaPlayer::PausedState) { - setPlaybackRateInternal(m_rate); - setState(QMediaPlayer::PlayingState); - return; - } - - if (m_media.isNull() || !m_connection || !m_context || m_audioId == -1) { - setState(QMediaPlayer::StoppedState); - return; - } - - if (m_mediaStatus == QMediaPlayer::EndOfMedia) - m_position = 0; - - resetMonitoring(); - setPositionInternal(m_position); - setVolumeInternal(m_muted ? 0 : m_volume); - setPlaybackRateInternal(m_rate); - - if (mmr_play(m_context) != 0) { - setState(QMediaPlayer::StoppedState); - emitMmError("mmr_play() failed"); - return; - } - - setState( QMediaPlayer::PlayingState); -} - -void MmRendererMediaPlayerControl::pause() -{ - if (m_state == QMediaPlayer::PlayingState) { - setPlaybackRateInternal(0); - setState(QMediaPlayer::PausedState); - } -} - -void MmRendererMediaPlayerControl::stop() -{ - stopInternal(StopMmRenderer); -} - -MmRendererPlayerVideoRendererControl *MmRendererMediaPlayerControl::videoRendererControl() const -{ - return m_videoRendererControl; -} - -void MmRendererMediaPlayerControl::setVideoRendererControl(MmRendererPlayerVideoRendererControl *videoControl) -{ - m_videoRendererControl = videoControl; -} - -void MmRendererMediaPlayerControl::setVideoWindowControl(MmRendererVideoWindowControl *videoControl) -{ - m_videoWindowControl = videoControl; -} - -void MmRendererMediaPlayerControl::setMetaDataReaderControl(MmRendererMetaDataReaderControl *metaDataReaderControl) -{ - m_metaDataReaderControl = metaDataReaderControl; -} - -void MmRendererMediaPlayerControl::setAudioRoleControl(MmRendererAudioRoleControl *audioRoleControl) -{ - m_audioRoleControl = audioRoleControl; -} - -void MmRendererMediaPlayerControl::setCustomAudioRoleControl(MmRendererCustomAudioRoleControl *customAudioRoleControl) -{ - m_customAudioRoleControl = customAudioRoleControl; -} - -void MmRendererMediaPlayerControl::setMmPosition(qint64 newPosition) -{ - if (newPosition != 0 && newPosition != m_position) { - m_position = newPosition; - emit positionChanged(m_position); - } -} - -void MmRendererMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus) -{ - if (bufferStatus == QLatin1String("buffering")) - setMediaStatus(QMediaPlayer::BufferingMedia); - else if (bufferStatus == QLatin1String("playing")) - setMediaStatus(QMediaPlayer::BufferedMedia); - // ignore "idle" buffer status -} - -void MmRendererMediaPlayerControl::setMmBufferLevel(int level, int capacity) -{ - m_bufferLevel = capacity == 0 ? 0 : level / static_cast<float>(capacity) * 100.0f; - m_bufferLevel = qBound(0, m_bufferLevel, 100); - emit bufferStatusChanged(m_bufferLevel); -} - -void MmRendererMediaPlayerControl::updateMetaData(const strm_dict *dict) -{ - m_metaData.update(dict); - - if (m_videoWindowControl) - m_videoWindowControl->setMetaData(m_metaData); - - if (m_metaDataReaderControl) - m_metaDataReaderControl->setMetaData(m_metaData); - - emit durationChanged(m_metaData.duration()); - emit audioAvailableChanged(m_metaData.hasAudio()); - emit videoAvailableChanged(m_metaData.hasVideo()); - emit availablePlaybackRangesChanged(availablePlaybackRanges()); - emit seekableChanged(m_metaData.isSeekable()); -} - -void MmRendererMediaPlayerControl::emitMmError(const QString &msg) -{ - int errorCode = MMR_ERROR_NONE; - const QString errorMessage = mmErrorMessage(msg, m_context, &errorCode); - qDebug() << errorMessage; - emit error(errorCode, errorMessage); -} - -void MmRendererMediaPlayerControl::emitPError(const QString &msg) -{ - const QString errorMessage = QString("%1: %2").arg(msg).arg(strerror(errno)); - qDebug() << errorMessage; - emit error(errno, errorMessage); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h deleted file mode 100644 index 3426ef2f2..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERMEDIAPLAYERCONTROL_H -#define MMRENDERERMEDIAPLAYERCONTROL_H - -#include "mmrenderermetadata.h" -#include <qmediaplayercontrol.h> -#include <QtCore/qabstractnativeeventfilter.h> -#include <QtCore/qpointer.h> -#include <QtCore/qtimer.h> - -typedef struct mmr_connection mmr_connection_t; -typedef struct mmr_context mmr_context_t; -typedef struct mmrenderer_monitor mmrenderer_monitor_t; -typedef struct strm_dict strm_dict_t; - -QT_BEGIN_NAMESPACE - -class MmRendererAudioRoleControl; -class MmRendererCustomAudioRoleControl; -class MmRendererMetaDataReaderControl; -class MmRendererPlayerVideoRendererControl; -class MmRendererVideoWindowControl; - -class MmRendererMediaPlayerControl : public QMediaPlayerControl, public QAbstractNativeEventFilter -{ - Q_OBJECT -public: - explicit MmRendererMediaPlayerControl(QObject *parent = 0); - - QMediaPlayer::State state() const override; - - QMediaPlayer::MediaStatus mediaStatus() const override; - - qint64 duration() const override; - - qint64 position() const override; - void setPosition(qint64 position) override; - - int volume() const override; - void setVolume(int volume) override; - - bool isMuted() const override; - void setMuted(bool muted) override; - - int bufferStatus() const override; - - bool isAudioAvailable() const override; - bool isVideoAvailable() const override; - - bool isSeekable() const override; - - QMediaTimeRange availablePlaybackRanges() const override; - - qreal playbackRate() const override; - void setPlaybackRate(qreal rate) override; - - QMediaContent media() const override; - const QIODevice *mediaStream() const override; - void setMedia(const QMediaContent &media, QIODevice *stream) override; - - void play() override; - void pause() override; - void stop() override; - - MmRendererPlayerVideoRendererControl *videoRendererControl() const; - void setVideoRendererControl(MmRendererPlayerVideoRendererControl *videoControl); - - MmRendererVideoWindowControl *videoWindowControl() const; - void setVideoWindowControl(MmRendererVideoWindowControl *videoControl); - void setMetaDataReaderControl(MmRendererMetaDataReaderControl *metaDataReaderControl); - void setAudioRoleControl(MmRendererAudioRoleControl *audioRoleControl); - void setCustomAudioRoleControl(MmRendererCustomAudioRoleControl *customAudioRoleControl); - -protected: - virtual void startMonitoring() = 0; - virtual void stopMonitoring() = 0; - virtual void resetMonitoring() = 0; - - void openConnection(); - void emitMmError(const QString &msg); - void emitPError(const QString &msg); - void setMmPosition(qint64 newPosition); - void setMmBufferStatus(const QString &bufferStatus); - void setMmBufferLevel(int level, int capacity); - void handleMmStopped(); - void handleMmSuspend(const QString &reason); - void handleMmSuspendRemoval(const QString &bufferStatus); - void handleMmPause(); - void handleMmPlay(); - void updateMetaData(const strm_dict_t *dict); - - // must be called from subclass dtors (calls virtual function stopMonitoring()) - void destroy(); - - mmr_context_t *m_context; - int m_id; - QString m_contextName; - -private Q_SLOTS: - void continueLoadMedia(); - -private: - QByteArray resourcePathForUrl(const QUrl &url); - void closeConnection(); - void attach(); - void detach(); - - // All these set the specified value to the backend, but neither emit changed signals - // nor change the member value. - void setVolumeInternal(int newVolume); - void setPlaybackRateInternal(qreal rate); - void setPositionInternal(qint64 position); - - void setMediaStatus(QMediaPlayer::MediaStatus status); - void setState(QMediaPlayer::State state); - - enum StopCommand { StopMmRenderer, IgnoreMmRenderer }; - void stopInternal(StopCommand stopCommand); - - QMediaContent m_media; - mmr_connection_t *m_connection; - int m_audioId; - QMediaPlayer::State m_state; - int m_volume; - bool m_muted; - qreal m_rate; - QPointer<MmRendererPlayerVideoRendererControl> m_videoRendererControl; - QPointer<MmRendererVideoWindowControl> m_videoWindowControl; - QPointer<MmRendererMetaDataReaderControl> m_metaDataReaderControl; - QPointer<MmRendererAudioRoleControl> m_audioRoleControl; - QPointer<MmRendererCustomAudioRoleControl> m_customAudioRoleControl; - MmRendererMetaData m_metaData; - qint64 m_position; - QMediaPlayer::MediaStatus m_mediaStatus; - bool m_playAfterMediaLoaded; - bool m_inputAttached; - int m_bufferLevel; - QTimer m_loadingTimer; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp deleted file mode 100644 index 190cb8b80..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrenderermediaplayerservice.h" - -#include "mmrendereraudiorolecontrol.h" -#include "mmrenderercustomaudiorolecontrol.h" -#include "mmrenderermediaplayercontrol.h" -#include "mmrenderermetadatareadercontrol.h" -#include "mmrendererplayervideorenderercontrol.h" -#include "mmrendererutil.h" -#include "mmrenderervideowindowcontrol.h" - -#include "mmreventmediaplayercontrol.h" - -QT_BEGIN_NAMESPACE - -MmRendererMediaPlayerService::MmRendererMediaPlayerService(QObject *parent) - : QMediaService(parent), - m_videoRendererControl(0), - m_videoWindowControl(0), - m_mediaPlayerControl(0), - m_metaDataReaderControl(0), - m_appHasDrmPermission(false), - m_appHasDrmPermissionChecked(false) -{ -} - -MmRendererMediaPlayerService::~MmRendererMediaPlayerService() -{ - // Someone should have called releaseControl(), but better be safe - delete m_videoRendererControl; - delete m_videoWindowControl; - delete m_mediaPlayerControl; - delete m_metaDataReaderControl; - delete m_audioRoleControl; - delete m_customAudioRoleControl; -} - -QMediaControl *MmRendererMediaPlayerService::requestControl(const char *name) -{ - if (qstrcmp(name, QMediaPlayerControl_iid) == 0) { - if (!m_mediaPlayerControl) { - m_mediaPlayerControl = new MmrEventMediaPlayerControl; - updateControls(); - } - return m_mediaPlayerControl; - } else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) { - if (!m_metaDataReaderControl) { - m_metaDataReaderControl = new MmRendererMetaDataReaderControl(); - updateControls(); - } - return m_metaDataReaderControl; - } else if (qstrcmp(name, QAudioRoleControl_iid) == 0) { - if (!m_audioRoleControl) { - m_audioRoleControl = new MmRendererAudioRoleControl(); - updateControls(); - } - return m_audioRoleControl; - } else if (qstrcmp(name, QCustomAudioRoleControl_iid) == 0) { - if (!m_customAudioRoleControl) { - m_customAudioRoleControl = new MmRendererCustomAudioRoleControl(); - updateControls(); - } - return m_customAudioRoleControl; - } else if (qstrcmp(name, QVideoRendererControl_iid) == 0) { - if (!m_appHasDrmPermissionChecked) { - m_appHasDrmPermission = checkForDrmPermission(); - m_appHasDrmPermissionChecked = true; - } - - if (m_appHasDrmPermission) { - // When the application wants to play back DRM secured media, we can't use - // the QVideoRendererControl, because we won't have access to the pixel data - // in this case. - return 0; - } - - if (!m_videoRendererControl) { - m_videoRendererControl = new MmRendererPlayerVideoRendererControl(); - updateControls(); - } - return m_videoRendererControl; - } else if (qstrcmp(name, QVideoWindowControl_iid) == 0) { - if (!m_videoWindowControl) { - m_videoWindowControl = new MmRendererVideoWindowControl(); - updateControls(); - } - return m_videoWindowControl; - } - return 0; -} - -void MmRendererMediaPlayerService::releaseControl(QMediaControl *control) -{ - if (control == m_videoRendererControl) - m_videoRendererControl = 0; - if (control == m_videoWindowControl) - m_videoWindowControl = 0; - if (control == m_mediaPlayerControl) - m_mediaPlayerControl = 0; - if (control == m_metaDataReaderControl) - m_metaDataReaderControl = 0; - if (control == m_audioRoleControl) - m_audioRoleControl = 0; - if (control == m_customAudioRoleControl) - m_customAudioRoleControl = 0; - delete control; -} - -void MmRendererMediaPlayerService::updateControls() -{ - if (m_videoRendererControl && m_mediaPlayerControl) - m_mediaPlayerControl->setVideoRendererControl(m_videoRendererControl); - - if (m_videoWindowControl && m_mediaPlayerControl) - m_mediaPlayerControl->setVideoWindowControl(m_videoWindowControl); - - if (m_metaDataReaderControl && m_mediaPlayerControl) - m_mediaPlayerControl->setMetaDataReaderControl(m_metaDataReaderControl); - - if (m_audioRoleControl && m_mediaPlayerControl) - m_mediaPlayerControl->setAudioRoleControl(m_audioRoleControl); - - if (m_customAudioRoleControl && m_mediaPlayerControl) - m_mediaPlayerControl->setCustomAudioRoleControl(m_customAudioRoleControl); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h deleted file mode 100644 index ab3054af5..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERMEDIAPLAYERSERVICE_H -#define MMRENDERERMEDIAPLAYERSERVICE_H - -#include <qmediaservice.h> -#include <QtCore/qpointer.h> - -QT_BEGIN_NAMESPACE - -class MmRendererAudioRoleControl; -class MmRendererCustomAudioRoleControl; -class MmRendererMediaPlayerControl; -class MmRendererMetaDataReaderControl; -class MmRendererPlayerVideoRendererControl; -class MmRendererVideoWindowControl; - -class MmRendererMediaPlayerService : public QMediaService -{ - Q_OBJECT -public: - explicit MmRendererMediaPlayerService(QObject *parent = 0); - ~MmRendererMediaPlayerService(); - - QMediaControl *requestControl(const char *name) override; - void releaseControl(QMediaControl *control) override; - -private: - void updateControls(); - - QPointer<MmRendererPlayerVideoRendererControl> m_videoRendererControl; - QPointer<MmRendererVideoWindowControl> m_videoWindowControl; - QPointer<MmRendererMediaPlayerControl> m_mediaPlayerControl; - QPointer<MmRendererMetaDataReaderControl> m_metaDataReaderControl; - QPointer<MmRendererAudioRoleControl> m_audioRoleControl; - QPointer<MmRendererCustomAudioRoleControl> m_customAudioRoleControl; - - bool m_appHasDrmPermission : 1; - bool m_appHasDrmPermissionChecked : 1; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp b/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp deleted file mode 100644 index a8b92c267..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrenderermetadata.h" - -#include <QtCore/qdebug.h> -#include <QtCore/qfile.h> -#include <QtCore/qstringlist.h> - -#include <mm/renderer/events.h> -#include <sys/neutrino.h> -#include <sys/strm.h> - -static const char *strm_string_getx(const strm_string_t *sstr, const char *defaultValue) -{ - return sstr ? strm_string_get(sstr) : defaultValue; -} - -#if _NTO_VERSION < 700 -static strm_dict_t *mmr_metadata_split(strm_dict_t const *, const char *, unsigned) -{ - return nullptr; -} -#endif - -QT_BEGIN_NAMESPACE - -MmRendererMetaData::MmRendererMetaData() -{ - clear(); -} - -static const char * titleKey = "md_title_name"; -static const char * artistKey = "md_title_artist"; -static const char * commentKey = "md_title_comment"; -static const char * genreKey = "md_title_genre"; -static const char * yearKey = "md_title_year"; -static const char * durationKey = "md_title_duration"; -static const char * bitRateKey = "md_title_bitrate"; -static const char * sampleKey = "md_title_samplerate"; -static const char * albumKey = "md_title_album"; -static const char * trackKey = "md_title_track"; -static const char * widthKey = "md_video_width"; -static const char * heightKey = "md_video_height"; -static const char * mediaTypeKey = "md_title_mediatype"; -static const char * pixelWidthKey = "md_video_pixel_width"; -static const char * pixelHeightKey = "md_video_pixel_height"; -static const char * seekableKey = "md_title_seekable"; -static const char * trackSampleKey = "sample_rate"; -static const char * trackBitRateKey = "bitrate"; -static const char * trackWidthKey = "width"; -static const char * trackHeightKey = "height"; -static const char * trackPixelWidthKey = "pixel_width"; -static const char * trackPixelHeightKey = "pixel_height"; - -static const int mediaTypeAudioFlag = 4; -static const int mediaTypeVideoFlag = 2; - -bool MmRendererMetaData::update(const strm_dict_t *dict) -{ - if (!dict) { - clear(); - return true; - } - - const strm_string_t *value; - - value = strm_dict_find_rstr(dict, durationKey); - m_duration = QByteArray(strm_string_getx(value, "0")).toLongLong(); - - value = strm_dict_find_rstr(dict, mediaTypeKey); - m_mediaType = QByteArray(strm_string_getx(value, "-1")).toInt(); - - value = strm_dict_find_rstr(dict, titleKey); - m_title = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr))); - - value = strm_dict_find_rstr(dict, seekableKey); - m_seekable = (strcmp(strm_string_getx(value, "1"), "0") != 0); - - value = strm_dict_find_rstr(dict, artistKey); - m_artist = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr))); - - value = strm_dict_find_rstr(dict, commentKey); - m_comment = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr))); - - value = strm_dict_find_rstr(dict, genreKey); - m_genre = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr))); - - value = strm_dict_find_rstr(dict, yearKey); - m_year = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(dict, albumKey); - m_album = QString::fromLatin1(QByteArray(strm_string_getx(value, nullptr))); - - value = strm_dict_find_rstr(dict, trackKey); - m_track = QByteArray(strm_string_getx(value, "0")).toInt(); - - strm_dict_t *at = mmr_metadata_split(dict, "audio", 0); - if (at) { - value = strm_dict_find_rstr(at, trackSampleKey); - m_sampleRate = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(at, trackBitRateKey); - m_audioBitRate = QByteArray(strm_string_getx(value, "0")).toInt(); - - strm_dict_destroy(at); - } else { - value = strm_dict_find_rstr(dict, sampleKey); - m_sampleRate = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(dict, bitRateKey); - m_audioBitRate = QByteArray(strm_string_getx(value, "0")).toInt(); - } - - strm_dict_t *vt = mmr_metadata_split(dict, "video", 0); - if (vt) { - value = strm_dict_find_rstr(vt, trackWidthKey); - m_width = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(vt, trackHeightKey); - m_height = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(vt, trackPixelWidthKey); - m_pixelWidth = QByteArray(strm_string_getx(value, "1")).toFloat(); - - value = strm_dict_find_rstr(vt, trackPixelHeightKey); - m_pixelHeight = QByteArray(strm_string_getx(value, "1")).toFloat(); - - strm_dict_destroy(vt); - } else { - value = strm_dict_find_rstr(dict, widthKey); - m_width = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(dict, heightKey); - m_height = QByteArray(strm_string_getx(value, "0")).toInt(); - - value = strm_dict_find_rstr(dict, pixelWidthKey); - m_pixelWidth = QByteArray(strm_string_getx(value, "1")).toFloat(); - - value = strm_dict_find_rstr(dict, pixelHeightKey); - m_pixelHeight = QByteArray(strm_string_getx(value, "1")).toFloat(); - } - - return true; -} - -void MmRendererMetaData::clear() -{ - strm_dict_t *dict; - dict = strm_dict_new(); - update(dict); - strm_dict_destroy(dict); -} - -qlonglong MmRendererMetaData::duration() const -{ - return m_duration; -} - -// Handling of pixel aspect ratio -// -// If the pixel aspect ratio is different from 1:1, it means the video needs to be stretched in -// order to look natural. -// For example, if the pixel width is 2, and the pixel height is 1, it means a video of 300x200 -// pixels needs to be displayed as 600x200 to look correct. -// In order to support this the easiest way, we simply pretend that the actual size of the video -// is 600x200, which will cause the video to be displayed in an aspect ratio of 3:1 instead of 3:2, -// and therefore look correct. - -int MmRendererMetaData::height() const -{ - return m_height * m_pixelHeight; -} - -int MmRendererMetaData::width() const -{ - return m_width * m_pixelWidth; -} - -bool MmRendererMetaData::hasVideo() const -{ - // By default, assume no video if we can't extract the information - if (m_mediaType == -1) - return false; - - return (m_mediaType & mediaTypeVideoFlag); -} - -bool MmRendererMetaData::hasAudio() const -{ - // By default, assume audio only if we can't extract the information - if (m_mediaType == -1) - return true; - - return (m_mediaType & mediaTypeAudioFlag); -} - -QString MmRendererMetaData::title() const -{ - return m_title; -} - -bool MmRendererMetaData::isSeekable() const -{ - return m_seekable; -} - -QString MmRendererMetaData::artist() const -{ - return m_artist; -} - -QString MmRendererMetaData::comment() const -{ - return m_comment; -} - -QString MmRendererMetaData::genre() const -{ - return m_genre; -} - -int MmRendererMetaData::year() const -{ - return m_year; -} - -QString MmRendererMetaData::mediaType() const -{ - if (hasVideo()) - return QLatin1String("video"); - else if (hasAudio()) - return QLatin1String("audio"); - else - return QString(); -} - -int MmRendererMetaData::audioBitRate() const -{ - return m_audioBitRate; -} - -int MmRendererMetaData::sampleRate() const -{ - return m_sampleRate; -} - -QString MmRendererMetaData::album() const -{ - return m_album; -} - -int MmRendererMetaData::track() const -{ - return m_track; -} - -QSize MmRendererMetaData::resolution() const -{ - return QSize(width(), height()); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrenderermetadata.h b/src/plugins/qnx/mediaplayer/mmrenderermetadata.h deleted file mode 100644 index ad2193d29..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermetadata.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERMETADATA_H -#define MMRENDERERMETADATA_H - -#include <QtCore/qglobal.h> -#include <QtCore/QSize> -#include <QtCore/QString> - -typedef struct strm_dict strm_dict_t; - -QT_BEGIN_NAMESPACE - -class MmRendererMetaData -{ -public: - MmRendererMetaData(); - bool update(const strm_dict_t *dict); - void clear(); - - // Duration in milliseconds - qlonglong duration() const; - - int height() const; - int width() const; - bool hasVideo() const; - bool hasAudio() const; - bool isSeekable() const; - - QString title() const; - QString artist() const; - QString comment() const; - QString genre() const; - int year() const; - QString mediaType() const; - int audioBitRate() const; - int sampleRate() const; - QString album() const; - int track() const; - QSize resolution() const; - -private: - qlonglong m_duration; - int m_height; - int m_width; - int m_mediaType; - float m_pixelWidth; - float m_pixelHeight; - bool m_seekable; - QString m_title; - QString m_artist; - QString m_comment; - QString m_genre; - int m_year; - int m_audioBitRate; - int m_sampleRate; - QString m_album; - int m_track; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp deleted file mode 100644 index 5367e0c54..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrenderermetadatareadercontrol.h" -#include <QtMultimedia/qmediametadata.h> - -QT_BEGIN_NAMESPACE - -MmRendererMetaDataReaderControl::MmRendererMetaDataReaderControl(QObject *parent) - : QMetaDataReaderControl(parent) -{ -} - -bool MmRendererMetaDataReaderControl::isMetaDataAvailable() const -{ - return !availableMetaData().isEmpty(); -} - -QVariant MmRendererMetaDataReaderControl::metaData(const QString &key) const -{ - if (key == QMediaMetaData::Title) - return m_metaData.title(); - else if (key == QMediaMetaData::AlbumArtist) - return m_metaData.artist(); - else if (key == QMediaMetaData::Comment) - return m_metaData.comment(); - else if (key == QMediaMetaData::Genre) - return m_metaData.genre(); - else if (key == QMediaMetaData::Year) - return m_metaData.year(); - else if (key == QMediaMetaData::MediaType) - return m_metaData.mediaType(); - else if (key == QMediaMetaData::Duration) - return m_metaData.duration(); - else if (key == QMediaMetaData::AudioBitRate) - return m_metaData.audioBitRate(); - else if (key == QMediaMetaData::SampleRate) - return m_metaData.sampleRate(); - else if (key == QMediaMetaData::AlbumTitle) - return m_metaData.album(); - else if (key == QMediaMetaData::TrackNumber) - return m_metaData.track(); - else if (key == QMediaMetaData::Resolution) - return m_metaData.resolution(); - - return QVariant(); -} - -QStringList MmRendererMetaDataReaderControl::availableMetaData() const -{ - QStringList metaData; - - if (!m_metaData.title().isEmpty()) - metaData << QMediaMetaData::Title; - if (!m_metaData.artist().isEmpty()) - metaData << QMediaMetaData::Author; - if (!m_metaData.comment().isEmpty()) - metaData << QMediaMetaData::Comment; - if (!m_metaData.genre().isEmpty()) - metaData << QMediaMetaData::Genre; - if (m_metaData.year() != 0) - metaData << QMediaMetaData::Year; - if (!m_metaData.mediaType().isEmpty()) - metaData << QMediaMetaData::MediaType; - if (m_metaData.duration() != 0) - metaData << QMediaMetaData::Duration; - if (m_metaData.audioBitRate() != 0) - metaData << QMediaMetaData::AudioBitRate; - if (m_metaData.sampleRate() != 0) - metaData << QMediaMetaData::SampleRate; - if (!m_metaData.album().isEmpty()) - metaData << QMediaMetaData::AlbumTitle; - if (m_metaData.track() != 0) - metaData << QMediaMetaData::TrackNumber; - if (m_metaData.resolution().isValid()) - metaData << QMediaMetaData::Resolution; - - return metaData; -} - -void MmRendererMetaDataReaderControl::setMetaData(const MmRendererMetaData &data) -{ - const MmRendererMetaData oldMetaData = m_metaData; - const bool oldMetaDataAvailable = isMetaDataAvailable(); - - m_metaData = data; - - bool changed = false; - if (m_metaData.title() != oldMetaData.title()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Title, m_metaData.title()); - } else if (m_metaData.artist() != oldMetaData.artist()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Author, m_metaData.artist()); - } else if (m_metaData.comment() != oldMetaData.comment()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Comment, m_metaData.comment()); - } else if (m_metaData.genre() != oldMetaData.genre()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Genre, m_metaData.genre()); - } else if (m_metaData.year() != oldMetaData.year()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Year, m_metaData.year()); - } else if (m_metaData.mediaType() != oldMetaData.mediaType()) { - changed = true; - emit metaDataChanged(QMediaMetaData::MediaType, m_metaData.mediaType()); - } else if (m_metaData.duration() != oldMetaData.duration()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Duration, m_metaData.duration()); - } else if (m_metaData.audioBitRate() != oldMetaData.audioBitRate()) { - changed = true; - emit metaDataChanged(QMediaMetaData::AudioBitRate, m_metaData.audioBitRate()); - } else if (m_metaData.sampleRate() != oldMetaData.sampleRate()) { - changed = true; - emit metaDataChanged(QMediaMetaData::SampleRate, m_metaData.sampleRate()); - } else if (m_metaData.album() != oldMetaData.album()) { - changed = true; - emit metaDataChanged(QMediaMetaData::AlbumTitle, m_metaData.album()); - } else if (m_metaData.track() != oldMetaData.track()) { - changed = true; - emit metaDataChanged(QMediaMetaData::TrackNumber, m_metaData.track()); - } else if (m_metaData.resolution() != oldMetaData.resolution()) { - changed = true; - emit metaDataChanged(QMediaMetaData::Resolution, m_metaData.resolution()); - } - - if (changed) - emit metaDataChanged(); - - const bool metaDataAvailable = isMetaDataAvailable(); - if (metaDataAvailable != oldMetaDataAvailable) - emit metaDataAvailableChanged(metaDataAvailable); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h deleted file mode 100644 index 878420460..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERMETADATAREADERCONTROL_H -#define MMRENDERERMETADATAREADERCONTROL_H - -#include "mmrenderermetadata.h" -#include <qmetadatareadercontrol.h> - -QT_BEGIN_NAMESPACE - -class MmRendererMetaDataReaderControl : public QMetaDataReaderControl -{ - Q_OBJECT -public: - explicit MmRendererMetaDataReaderControl(QObject *parent = 0); - - bool isMetaDataAvailable() const override; - - QVariant metaData(const QString &key) const override; - QStringList availableMetaData() const override; - - void setMetaData(const MmRendererMetaData &data); - -private: - MmRendererMetaData m_metaData; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp deleted file mode 100644 index 3b5715157..000000000 --- a/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "mmrendererplayervideorenderercontrol.h" - -#include "windowgrabber.h" - -#include <QCoreApplication> -#include <QDebug> -#include <QVideoSurfaceFormat> -#include <QOpenGLContext> - -#include <mm/renderer.h> - -QT_BEGIN_NAMESPACE - -static int winIdCounter = 0; - -MmRendererPlayerVideoRendererControl::MmRendererPlayerVideoRendererControl(QObject *parent) - : QVideoRendererControl(parent) - , m_windowGrabber(new WindowGrabber(this)) - , m_context(0) - , m_videoId(-1) -{ - connect(m_windowGrabber, SIGNAL(updateScene(const QSize &)), SLOT(updateScene(const QSize &))); -} - -MmRendererPlayerVideoRendererControl::~MmRendererPlayerVideoRendererControl() -{ - detachDisplay(); -} - -QAbstractVideoSurface *MmRendererPlayerVideoRendererControl::surface() const -{ - return m_surface; -} - -void MmRendererPlayerVideoRendererControl::setSurface(QAbstractVideoSurface *surface) -{ - m_surface = QPointer<QAbstractVideoSurface>(surface); - if (QOpenGLContext::currentContext()) - m_windowGrabber->checkForEglImageExtension(); - else if (m_surface) - m_surface->setProperty("_q_GLThreadCallback", QVariant::fromValue<QObject*>(this)); -} - -void MmRendererPlayerVideoRendererControl::attachDisplay(mmr_context_t *context) -{ - if (m_videoId != -1) { - qWarning() << "MmRendererPlayerVideoRendererControl: Video output already attached!"; - return; - } - - if (!context) { - qWarning() << "MmRendererPlayerVideoRendererControl: No media player context!"; - return; - } - - const QByteArray windowGroupId = m_windowGrabber->windowGroupId(); - if (windowGroupId.isEmpty()) { - qWarning() << "MmRendererPlayerVideoRendererControl: Unable to find window group"; - return; - } - - const QString windowName = QStringLiteral("MmRendererPlayerVideoRendererControl_%1_%2") - .arg(winIdCounter++) - .arg(QCoreApplication::applicationPid()); - - m_windowGrabber->setWindowId(windowName.toLatin1()); - - // Start with an invisible window, because we just want to grab the frames from it. - const QString videoDeviceUrl = QStringLiteral("screen:?winid=%1&wingrp=%2&initflags=invisible&nodstviewport=1") - .arg(windowName) - .arg(QString::fromLatin1(windowGroupId)); - - m_videoId = mmr_output_attach(context, videoDeviceUrl.toLatin1(), "video"); - if (m_videoId == -1) { - qWarning() << "mmr_output_attach() for video failed"; - return; - } - - m_context = context; -} - -void MmRendererPlayerVideoRendererControl::detachDisplay() -{ - m_windowGrabber->stop(); - - if (m_surface) - m_surface->stop(); - - if (m_context && m_videoId != -1) - mmr_output_detach(m_context, m_videoId); - - m_context = 0; - m_videoId = -1; -} - -void MmRendererPlayerVideoRendererControl::pause() -{ - m_windowGrabber->pause(); -} - -void MmRendererPlayerVideoRendererControl::resume() -{ - m_windowGrabber->resume(); -} - -class QnxTextureBuffer : public QAbstractVideoBuffer -{ -public: - QnxTextureBuffer(WindowGrabber *windowGrabber) : - QAbstractVideoBuffer(QAbstractVideoBuffer::GLTextureHandle) - { - m_windowGrabber = windowGrabber; - m_handle = 0; - } - MapMode mapMode() const { - return QAbstractVideoBuffer::ReadWrite; - } - void unmap() { - - } - uchar *map(MapMode mode, int * numBytes, int * bytesPerLine) { - Q_UNUSED(mode); - Q_UNUSED(numBytes); - Q_UNUSED(bytesPerLine); - return 0; - } - QVariant handle() const { - if (!m_handle) { - const_cast<QnxTextureBuffer*>(this)->m_handle = m_windowGrabber->getNextTextureId(); - } - return m_handle; - } -private: - WindowGrabber *m_windowGrabber; - int m_handle; -}; - -void MmRendererPlayerVideoRendererControl::updateScene(const QSize &size) -{ - if (m_surface) { - if (!m_surface->isActive()) { - if (m_windowGrabber->eglImageSupported()) { - m_surface->start(QVideoSurfaceFormat(size, QVideoFrame::Format_BGR32, - QAbstractVideoBuffer::GLTextureHandle)); - } else { - m_surface->start(QVideoSurfaceFormat(size, QVideoFrame::Format_ARGB32)); - } - } else { - if (m_surface->surfaceFormat().frameSize() != size) { - m_surface->stop(); - if (m_windowGrabber->eglImageSupported()) { - m_surface->start(QVideoSurfaceFormat(size, QVideoFrame::Format_BGR32, - QAbstractVideoBuffer::GLTextureHandle)); - } else { - m_surface->start(QVideoSurfaceFormat(size, QVideoFrame::Format_ARGB32)); - } - } - } - - // Depending on the support of EGL images on the current platform we either pass a texture - // handle or a copy of the image data - if (m_windowGrabber->eglImageSupported()) { - QnxTextureBuffer *textBuffer = new QnxTextureBuffer(m_windowGrabber); - QVideoFrame actualFrame(textBuffer, size, QVideoFrame::Format_BGR32); - m_surface->present(actualFrame); - } else { - m_surface->present(m_windowGrabber->getNextImage().copy()); - } - } -} - -void MmRendererPlayerVideoRendererControl::customEvent(QEvent *e) -{ - // This is running in the render thread (OpenGL enabled) - if (e->type() == QEvent::User) - m_windowGrabber->checkForEglImageExtension(); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h deleted file mode 100644 index c547ef534..000000000 --- a/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERPLAYERVIDEORENDERERCONTROL_H -#define MMRENDERERPLAYERVIDEORENDERERCONTROL_H - -#include <QPointer> -#include <qabstractvideosurface.h> -#include <qvideorenderercontrol.h> - -typedef struct mmr_context mmr_context_t; - -QT_BEGIN_NAMESPACE - -class WindowGrabber; - -class MmRendererPlayerVideoRendererControl : public QVideoRendererControl -{ - Q_OBJECT -public: - explicit MmRendererPlayerVideoRendererControl(QObject *parent = 0); - ~MmRendererPlayerVideoRendererControl(); - - QAbstractVideoSurface *surface() const override; - void setSurface(QAbstractVideoSurface *surface) override; - - // Called by media control - void attachDisplay(mmr_context_t *context); - void detachDisplay(); - void pause(); - void resume(); - - void customEvent(QEvent *) override; - -private Q_SLOTS: - void updateScene(const QSize &size); - -private: - QPointer<QAbstractVideoSurface> m_surface; - - WindowGrabber* m_windowGrabber; - mmr_context_t *m_context; - - int m_videoId; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrendererutil.cpp b/src/plugins/qnx/mediaplayer/mmrendererutil.cpp deleted file mode 100644 index d8af4a746..000000000 --- a/src/plugins/qnx/mediaplayer/mmrendererutil.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrendererutil.h" - -#include <QDebug> -#include <QDir> -#include <QFile> -#include <QJsonDocument> -#include <QJsonObject> -#include <QJsonValue> -#include <QMutex> -#include <QMutex> -#include <QString> -#include <QXmlStreamReader> - -#include <mm/renderer.h> - -QT_BEGIN_NAMESPACE - -struct MmError { - int errorCode; - const char *name; -}; - -#define MM_ERROR_ENTRY(error) { error, #error } -static const MmError mmErrors[] = { - MM_ERROR_ENTRY(MMR_ERROR_NONE), - MM_ERROR_ENTRY(MMR_ERROR_UNKNOWN ), - MM_ERROR_ENTRY(MMR_ERROR_INVALID_PARAMETER ), - MM_ERROR_ENTRY(MMR_ERROR_INVALID_STATE), - MM_ERROR_ENTRY(MMR_ERROR_UNSUPPORTED_VALUE), - MM_ERROR_ENTRY(MMR_ERROR_UNSUPPORTED_MEDIA_TYPE), - MM_ERROR_ENTRY(MMR_ERROR_MEDIA_PROTECTED), - MM_ERROR_ENTRY(MMR_ERROR_UNSUPPORTED_OPERATION), - MM_ERROR_ENTRY(MMR_ERROR_READ), - MM_ERROR_ENTRY(MMR_ERROR_WRITE), - MM_ERROR_ENTRY(MMR_ERROR_MEDIA_UNAVAILABLE), - MM_ERROR_ENTRY(MMR_ERROR_MEDIA_CORRUPTED), - MM_ERROR_ENTRY(MMR_ERROR_OUTPUT_UNAVAILABLE), - MM_ERROR_ENTRY(MMR_ERROR_NO_MEMORY), - MM_ERROR_ENTRY(MMR_ERROR_RESOURCE_UNAVAILABLE), - MM_ERROR_ENTRY(MMR_ERROR_MEDIA_DRM_NO_RIGHTS), - MM_ERROR_ENTRY(MMR_ERROR_DRM_CORRUPTED_DATA_STORE), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OUTPUT_PROTECTION), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_HDMI), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_DISPLAYPORT), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_DVI), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_ANALOG_VIDEO), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_ANALOG_AUDIO), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_TOSLINK), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_SPDIF), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_BLUETOOTH), - MM_ERROR_ENTRY(MMR_ERROR_DRM_OPL_WIRELESSHD), -}; -static const unsigned int numMmErrors = sizeof(mmErrors) / sizeof(MmError); - -static QBasicMutex roleMapMutex; -static bool roleMapInitialized = false; -static QString roleMap[QAudio::CustomRole + 1]; - -template <typename T, size_t N> -constexpr size_t countof(T (&)[N]) -{ - return N; -} - -constexpr bool inBounds(QAudio::Role r) -{ - return r >= 0 && r < countof(roleMap); -} - -QString keyValueMapsLocation() -{ - QByteArray qtKeyValueMaps = qgetenv("QT_KEY_VALUE_MAPS"); - if (qtKeyValueMaps.isNull()) - return QStringLiteral("/etc/qt/keyvaluemaps"); - else - return qtKeyValueMaps; -} - -QJsonObject loadMapObject(const QString &keyValueMapPath) -{ - QFile mapFile(keyValueMapsLocation() + keyValueMapPath); - if (mapFile.open(QIODevice::ReadOnly)) { - QByteArray mapFileContents = mapFile.readAll(); - QJsonDocument mapDocument = QJsonDocument::fromJson(mapFileContents); - if (mapDocument.isObject()) { - QJsonObject mapObject = mapDocument.object(); - return mapObject; - } - } - return QJsonObject(); -} - -static void loadRoleMap() -{ - QMutexLocker locker(&roleMapMutex); - - if (!roleMapInitialized) { - QJsonObject mapObject = loadMapObject("/QAudio/Role.json"); - if (!mapObject.isEmpty()) { - // Wrapping the loads in a switch like this ensures that anyone adding - // a new enumerator will be notified that this code must be updated. A - // compile error will occur because the enumerator is missing from the - // switch. A compile error will also occur if the enumerator used to - // size the mapping table isn't updated when a new enumerator is added. - // One or more enumerators will be outside the bounds of the array when - // the wrong enumerator is used to size the array. - // - // The code loads a mapping for each enumerator because role is set - // to UnknownRole and all the cases drop through to the next case. -#pragma GCC diagnostic push -#pragma GCC diagnostic error "-Wswitch" -#define loadRoleMapping(r) \ - case QAudio::r: \ - static_assert(inBounds(QAudio::r), #r " out-of-bounds." \ - " Do you need to change the enumerator used to size the mapping table" \ - " because you added new QAudio::Role enumerators?"); \ - roleMap[QAudio::r] = mapObject.value(QLatin1String(#r)).toString(); - - QAudio::Role role = QAudio::UnknownRole; - switch (role) { - loadRoleMapping(UnknownRole); - loadRoleMapping(MusicRole); - loadRoleMapping(VideoRole); - loadRoleMapping(VoiceCommunicationRole); - loadRoleMapping(AlarmRole); - loadRoleMapping(NotificationRole); - loadRoleMapping(RingtoneRole); - loadRoleMapping(AccessibilityRole); - loadRoleMapping(SonificationRole); - loadRoleMapping(GameRole); - loadRoleMapping(CustomRole); - } -#undef loadRoleMapping -#pragma GCC diagnostic pop - - if (!roleMap[QAudio::CustomRole].isEmpty()) { - qWarning("CustomRole mapping ignored"); - roleMap[QAudio::CustomRole].clear(); - } - } - - roleMapInitialized = true; - } -} - -QString mmErrorMessage(const QString &msg, mmr_context_t *context, int *errorCode) -{ - const mmr_error_info_t * const mmError = mmr_error_info(context); - - if (errorCode) - *errorCode = mmError->error_code; - - if (mmError->error_code < numMmErrors) { - return QString("%1: %2 (code %3)").arg(msg).arg(mmErrors[mmError->error_code].name) - .arg(mmError->error_code); - } else { - return QString("%1: Unknown error code %2").arg(msg).arg(mmError->error_code); - } -} - -bool checkForDrmPermission() -{ - QDir sandboxDir = QDir::home(); // always returns 'data' directory - sandboxDir.cdUp(); // change to app sandbox directory - - QFile file(sandboxDir.filePath("app/native/bar-descriptor.xml")); - if (!file.open(QIODevice::ReadOnly)) { - qWarning() << "checkForDrmPermission: Unable to open bar-descriptor.xml"; - return false; - } - - QXmlStreamReader reader(&file); - while (!reader.atEnd()) { - reader.readNextStartElement(); - if (reader.name() == QLatin1String("action") - || reader.name() == QLatin1String("permission")) { - if (reader.readElementText().trimmed() == QLatin1String("access_protected_media")) - return true; - } - } - - return false; -} - -QString qnxAudioType(QAudio::Role role) -{ - loadRoleMap(); - - if (role >= 0 && role < countof(roleMap)) - return roleMap[role]; - else - return QString(); -} - -QList<QAudio::Role> qnxSupportedAudioRoles() -{ - loadRoleMap(); - - QList<QAudio::Role> result; - for (size_t i = 0; i < countof(roleMap); ++i) { - if (!roleMap[i].isEmpty() || (i == QAudio::UnknownRole)) - result.append(static_cast<QAudio::Role>(i)); - } - - return result; -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrendererutil.h b/src/plugins/qnx/mediaplayer/mmrendererutil.h deleted file mode 100644 index ac6f73a7d..000000000 --- a/src/plugins/qnx/mediaplayer/mmrendererutil.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERUTIL_H -#define MMRENDERERUTIL_H - -#include <QtCore/qglobal.h> -#include <QtMultimedia/qaudio.h> - -typedef struct mmr_context mmr_context_t; - -QT_BEGIN_NAMESPACE - -class QString; - -QString mmErrorMessage(const QString &msg, mmr_context_t *context, int * errorCode = 0); - -bool checkForDrmPermission(); - -QString qnxAudioType(QAudio::Role role); -QList<QAudio::Role> qnxSupportedAudioRoles(); - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp deleted file mode 100644 index fbd698eea..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp +++ /dev/null @@ -1,413 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "mmrenderervideowindowcontrol.h" -#include "mmrendererutil.h" -#include <QtCore/qdebug.h> -#include <QtGui/qguiapplication.h> -#include <QtGui/qpa/qplatformnativeinterface.h> -#include <QtGui/qscreen.h> -#include <QtGui/qwindow.h> -#include <mm/renderer.h> - -QT_BEGIN_NAMESPACE - -static int winIdCounter = 0; - -MmRendererVideoWindowControl::MmRendererVideoWindowControl(QObject *parent) - : QVideoWindowControl(parent), - m_videoId(-1), - m_winId(0), - m_context(0), - m_fullscreen(false), - m_aspectRatioMode(Qt::IgnoreAspectRatio), - m_window(0), - m_hue(0), - m_brightness(0), - m_contrast(0), - m_saturation(0) -{ -} - -MmRendererVideoWindowControl::~MmRendererVideoWindowControl() -{ -} - -WId MmRendererVideoWindowControl::winId() const -{ - return m_winId; -} - -void MmRendererVideoWindowControl::setWinId(WId id) -{ - m_winId = id; -} - -QRect MmRendererVideoWindowControl::displayRect() const -{ - return m_displayRect ; -} - -void MmRendererVideoWindowControl::setDisplayRect(const QRect &rect) -{ - if (m_displayRect != rect) { - m_displayRect = rect; - updateVideoPosition(); - } -} - -bool MmRendererVideoWindowControl::isFullScreen() const -{ - return m_fullscreen; -} - -void MmRendererVideoWindowControl::setFullScreen(bool fullScreen) -{ - if (m_fullscreen != fullScreen) { - m_fullscreen = fullScreen; - updateVideoPosition(); - emit fullScreenChanged(m_fullscreen); - } -} - -void MmRendererVideoWindowControl::repaint() -{ - // Nothing we can or should do here -} - -QSize MmRendererVideoWindowControl::nativeSize() const -{ - return QSize(m_metaData.width(), m_metaData.height()); -} - -Qt::AspectRatioMode MmRendererVideoWindowControl::aspectRatioMode() const -{ - return m_aspectRatioMode; -} - -void MmRendererVideoWindowControl::setAspectRatioMode(Qt::AspectRatioMode mode) -{ - m_aspectRatioMode = mode; -} - -int MmRendererVideoWindowControl::brightness() const -{ - return m_brightness; -} - -void MmRendererVideoWindowControl::setBrightness(int brightness) -{ - if (m_brightness != brightness) { - m_brightness = brightness; - updateBrightness(); - emit brightnessChanged(m_brightness); - } -} - -int MmRendererVideoWindowControl::contrast() const -{ - return m_contrast; -} - -void MmRendererVideoWindowControl::setContrast(int contrast) -{ - if (m_contrast != contrast) { - m_contrast = contrast; - updateContrast(); - emit contrastChanged(m_contrast); - } -} - -int MmRendererVideoWindowControl::hue() const -{ - return m_hue; -} - -void MmRendererVideoWindowControl::setHue(int hue) -{ - if (m_hue != hue) { - m_hue = hue; - updateHue(); - emit hueChanged(m_hue); - } -} - -int MmRendererVideoWindowControl::saturation() const -{ - return m_saturation; -} - -void MmRendererVideoWindowControl::setSaturation(int saturation) -{ - if (m_saturation != saturation) { - m_saturation = saturation; - updateSaturation(); - emit saturationChanged(m_saturation); - } -} - -void MmRendererVideoWindowControl::attachDisplay(mmr_context_t *context) -{ - if (m_videoId != -1) { - qDebug() << "MmRendererVideoWindowControl: Video output already attached!"; - return; - } - - if (!context) { - qDebug() << "MmRendererVideoWindowControl: No media player context!"; - return; - } - - QWindow *window = findWindow(m_winId); - if (!window) { - qDebug() << "MmRendererVideoWindowControl: No video window!"; - return; - } - - QPlatformNativeInterface * const nativeInterface = QGuiApplication::platformNativeInterface(); - if (!nativeInterface) { - qDebug() << "MmRendererVideoWindowControl: Unable to get platform native interface"; - return; - } - - const char * const groupNameData = static_cast<const char *>( - nativeInterface->nativeResourceForWindow("windowGroup", window)); - if (!groupNameData) { - qDebug() << "MmRendererVideoWindowControl: Unable to find window group for window" - << window; - return; - } - - const QString groupName = QString::fromLatin1(groupNameData); - m_windowName = QString("MmRendererVideoWindowControl_%1_%2").arg(winIdCounter++) - .arg(QCoreApplication::applicationPid()); - - nativeInterface->setWindowProperty(window->handle(), - QStringLiteral("mmRendererWindowName"), m_windowName); - - // Start with an invisible window. If it would be visible right away, it would be at the wrong - // position, and we can only change the position once we get the window handle. - const QString videoDeviceUrl = - QString("screen:?winid=%1&wingrp=%2&initflags=invisible&nodstviewport=1").arg(m_windowName).arg(groupName); - - m_videoId = mmr_output_attach(context, videoDeviceUrl.toLatin1(), "video"); - if (m_videoId == -1) { - qDebug() << mmErrorMessage("mmr_output_attach() for video failed", context); - return; - } - - m_context = context; - updateVideoPosition(); - updateHue(); - updateContrast(); - updateBrightness(); - updateSaturation(); -} - -void MmRendererVideoWindowControl::updateVideoPosition() -{ - QWindow * const window = findWindow(m_winId); - if (m_context && m_videoId != -1 && window) { - QPoint topLeft = m_displayRect.topLeft(); - - QScreen * const screen = window->screen(); - int width = m_fullscreen ? - screen->size().width() : - m_displayRect.width(); - int height = m_fullscreen ? - screen->size().height() : - m_displayRect.height(); - - if (m_metaData.hasVideo() && m_metaData.width() > 0 && m_metaData.height() > 0) { - // We need the source size to do aspect ratio scaling - const qreal sourceRatio = m_metaData.width() / static_cast<float>(m_metaData.height()); - const qreal targetRatio = width / static_cast<float>(height); - - if (m_aspectRatioMode == Qt::KeepAspectRatio) { - if (targetRatio < sourceRatio) { - // Need to make height smaller - const int newHeight = width / sourceRatio; - const int heightDiff = height - newHeight; - topLeft.ry() += heightDiff / 2; - height = newHeight; - } else { - // Need to make width smaller - const int newWidth = sourceRatio * height; - const int widthDiff = width - newWidth; - topLeft.rx() += widthDiff / 2; - width = newWidth; - } - - } else if (m_aspectRatioMode == Qt::KeepAspectRatioByExpanding) { - if (targetRatio < sourceRatio) { - // Need to make width larger - const int newWidth = sourceRatio * height; - const int widthDiff = newWidth - width; - topLeft.rx() -= widthDiff / 2; - width = newWidth; - } else { - // Need to make height larger - const int newHeight = width / sourceRatio; - const int heightDiff = newHeight - height; - topLeft.ry() -= heightDiff / 2; - height = newHeight; - } - } - } - - if (m_window != 0) { - const int position[2] = { topLeft.x(), topLeft.y() }; - const int size[2] = { width, height }; - const int visible = m_displayRect.isValid(); - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_POSITION, position) != 0) - perror("Setting video position failed"); - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SIZE, size) != 0) - perror("Setting video size failed"); - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_VISIBLE, &visible) != 0) - perror("Setting video visibility failed"); - } - } -} - -void MmRendererVideoWindowControl::updateBrightness() -{ - if (m_window != 0) { - const int backendValue = m_brightness * 2.55f; - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_BRIGHTNESS, &backendValue) != 0) - perror("Setting brightness failed"); - } -} - -void MmRendererVideoWindowControl::updateContrast() -{ - if (m_window != 0) { - const int backendValue = m_contrast * 1.27f; - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_CONTRAST, &backendValue) != 0) - perror("Setting contrast failed"); - } -} - -void MmRendererVideoWindowControl::updateHue() -{ - if (m_window != 0) { - const int backendValue = m_hue * 1.27f; - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_HUE, &backendValue) != 0) - perror("Setting hue failed"); - } -} - -void MmRendererVideoWindowControl::updateSaturation() -{ - if (m_window != 0) { - const int backendValue = m_saturation * 1.27f; - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SATURATION, &backendValue) != 0) - perror("Setting saturation failed"); - } -} - -void MmRendererVideoWindowControl::detachDisplay() -{ - if (m_context && m_videoId != -1) - mmr_output_detach(m_context, m_videoId); - - m_context = 0; - m_videoId = -1; - m_metaData.clear(); - m_windowName.clear(); - m_window = 0; - m_hue = 0; - m_brightness = 0; - m_contrast = 0; - m_saturation = 0; -} - -void MmRendererVideoWindowControl::setMetaData(const MmRendererMetaData &metaData) -{ - m_metaData = metaData; - emit nativeSizeChanged(); - - // To handle the updated source size data - updateVideoPosition(); -} - -void MmRendererVideoWindowControl::screenEventHandler(const screen_event_t &screen_event) -{ - int eventType; - if (screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &eventType) != 0) { - perror("MmRendererVideoWindowControl: Failed to query screen event type"); - return; - } - - if (eventType != SCREEN_EVENT_CREATE) - return; - - screen_window_t window = 0; - if (screen_get_event_property_pv(screen_event, SCREEN_PROPERTY_WINDOW, (void**)&window) != 0) { - perror("MmRendererVideoWindowControl: Failed to query window property"); - return; - } - - const int maxIdStrLength = 128; - char idString[maxIdStrLength]; - if (screen_get_window_property_cv(window, SCREEN_PROPERTY_ID_STRING, maxIdStrLength, idString) != 0) { - perror("MmRendererVideoWindowControl: Failed to query window ID string"); - return; - } - - if (m_windowName == idString) { - m_window = window; - updateVideoPosition(); - - const int visibleFlag = 1; - if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_VISIBLE, &visibleFlag) != 0) { - perror("MmRendererVideoWindowControl: Failed to make window visible"); - return; - } - } -} - -QWindow *MmRendererVideoWindowControl::findWindow(WId id) const -{ - const auto allWindows = QGuiApplication::allWindows(); - for (QWindow *window : allWindows) - if (window->winId() == id) - return window; - return 0; -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h deleted file mode 100644 index 8327e259d..000000000 --- a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMRENDERERVIDEOWINDOWCONTROL_H -#define MMRENDERERVIDEOWINDOWCONTROL_H - -#include "mmrenderermetadata.h" -#include <qvideowindowcontrol.h> -#include <screen/screen.h> - -typedef struct mmr_context mmr_context_t; - -QT_BEGIN_NAMESPACE - -class MmRendererVideoWindowControl : public QVideoWindowControl -{ - Q_OBJECT -public: - explicit MmRendererVideoWindowControl(QObject *parent = 0); - ~MmRendererVideoWindowControl(); - - WId winId() const override; - void setWinId(WId id) override; - - QRect displayRect() const override; - void setDisplayRect(const QRect &rect) override; - - bool isFullScreen() const override; - void setFullScreen(bool fullScreen) override; - - void repaint() override; - - QSize nativeSize() const override; - - Qt::AspectRatioMode aspectRatioMode() const override; - void setAspectRatioMode(Qt::AspectRatioMode mode) override; - - int brightness() const override; - void setBrightness(int brightness) override; - - int contrast() const override; - void setContrast(int contrast) override; - - int hue() const override; - void setHue(int hue) override; - - int saturation() const override; - void setSaturation(int saturation) override; - - // - // Called by media control - // - void detachDisplay(); - void attachDisplay(mmr_context_t *context); - void setMetaData(const MmRendererMetaData &metaData); - void screenEventHandler(const screen_event_t &event); - -private: - QWindow *findWindow(WId id) const; - void updateVideoPosition(); - void updateBrightness(); - void updateContrast(); - void updateHue(); - void updateSaturation(); - - int m_videoId; - WId m_winId; - QRect m_displayRect; - mmr_context_t *m_context; - bool m_fullscreen; - MmRendererMetaData m_metaData; - Qt::AspectRatioMode m_aspectRatioMode; - QString m_windowName; - screen_window_t m_window; - int m_hue; - int m_brightness; - int m_contrast; - int m_saturation; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp deleted file mode 100644 index b5c9804ab..000000000 --- a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "mmreventmediaplayercontrol.h" -#include "mmreventthread.h" -#include "mmrenderervideowindowcontrol.h" - -#include <mm/renderer.h> -#include <tuple> - -QT_BEGIN_NAMESPACE - -static std::tuple<int, int, bool> parseBufferLevel(const QByteArray &value) -{ - const int slashPos = value.indexOf('/'); - if (slashPos <= 0) - return std::make_tuple(0, 0, false); - - bool ok = false; - const int level = value.left(slashPos).toInt(&ok); - if (!ok || level < 0) - return std::make_tuple(0, 0, false); - - const int capacity = value.mid(slashPos + 1).toInt(&ok); - if (!ok || capacity < 0) - return std::make_tuple(0, 0, false); - - return std::make_tuple(level, capacity, true); -} - -MmrEventMediaPlayerControl::MmrEventMediaPlayerControl(QObject *parent) - : MmRendererMediaPlayerControl(parent) - , m_eventThread(nullptr) - , m_bufferStatus("") - , m_bufferLevel(0) - , m_bufferCapacity(0) - , m_position(0) - , m_suspended(false) - , m_suspendedReason("unknown") - , m_state(MMR_STATE_IDLE) - , m_speed(0) -{ - openConnection(); -} - -MmrEventMediaPlayerControl::~MmrEventMediaPlayerControl() -{ - destroy(); -} - -void MmrEventMediaPlayerControl::startMonitoring() -{ - m_eventThread = new MmrEventThread(m_context); - - connect(m_eventThread, &MmrEventThread::eventPending, - this, &MmrEventMediaPlayerControl::readEvents); - - m_eventThread->setObjectName(QStringLiteral("MmrEventThread-") + QString::number(m_id)); - m_eventThread->start(); -} - -void MmrEventMediaPlayerControl::stopMonitoring() -{ - delete m_eventThread; - m_eventThread = nullptr; -} - -void MmrEventMediaPlayerControl::resetMonitoring() -{ - m_bufferStatus = ""; - m_bufferLevel = 0; - m_bufferCapacity = 0; - m_position = 0; - m_suspended = false; - m_suspendedReason = "unknown"; - m_state = MMR_STATE_IDLE; - m_speed = 0; -} - -bool MmrEventMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) -{ - Q_UNUSED(result); - if (eventType == "screen_event_t") { - screen_event_t event = static_cast<screen_event_t>(message); - if (MmRendererVideoWindowControl *control = videoWindowControl()) - control->screenEventHandler(event); - } - - return false; -} - -void MmrEventMediaPlayerControl::readEvents() -{ - const mmr_event_t *event; - - while ((event = mmr_event_get(m_context))) { - if (event->type == MMR_EVENT_NONE) - break; - - switch (event->type) { - case MMR_EVENT_STATUS: { - if (event->data) { - const strm_string_t *value; - value = strm_dict_find_rstr(event->data, "bufferstatus"); - if (value) { - m_bufferStatus = QByteArray(strm_string_get(value)); - if (!m_suspended) - setMmBufferStatus(m_bufferStatus); - } - - value = strm_dict_find_rstr(event->data, "bufferlevel"); - if (value) { - const char *cstrValue = strm_string_get(value); - int level; - int capacity; - bool ok; - std::tie(level, capacity, ok) = parseBufferLevel(QByteArray(cstrValue)); - if (!ok) { - qCritical("Could not parse buffer capacity from '%s'", cstrValue); - } else { - m_bufferLevel = level; - m_bufferCapacity = capacity; - setMmBufferLevel(level, capacity); - } - } - - value = strm_dict_find_rstr(event->data, "suspended"); - if (value) { - if (!m_suspended) { - m_suspended = true; - m_suspendedReason = strm_string_get(value); - handleMmSuspend(m_suspendedReason); - } - } else if (m_suspended) { - m_suspended = false; - handleMmSuspendRemoval(m_bufferStatus); - } - } - - if (event->pos_str) { - const QByteArray valueBa = QByteArray(event->pos_str); - bool ok; - m_position = valueBa.toLongLong(&ok); - if (!ok) { - qCritical("Could not parse position from '%s'", valueBa.constData()); - } else { - setMmPosition(m_position); - } - } - break; - } - case MMR_EVENT_STATE: { - if (event->state == MMR_STATE_PLAYING && m_speed != event->speed) { - m_speed = event->speed; - if (m_speed == 0) - handleMmPause(); - else - handleMmPlay(); - } - break; - } - case MMR_EVENT_METADATA: { - updateMetaData(event->data); - break; - } - case MMR_EVENT_ERROR: - case MMR_EVENT_NONE: - case MMR_EVENT_OVERFLOW: - case MMR_EVENT_WARNING: - case MMR_EVENT_PLAYLIST: - case MMR_EVENT_INPUT: - case MMR_EVENT_OUTPUT: - case MMR_EVENT_CTXTPAR: - case MMR_EVENT_TRKPAR: - case MMR_EVENT_OTHER: { - break; - } - } - - // Currently, any exit from the playing state is considered a stop (end-of-media). - // If you ever need to separate end-of-media from things like "stopped unexpectedly" - // or "stopped because of an error", you'll find that end-of-media is signaled by an - // MMR_EVENT_ERROR of MMR_ERROR_NONE with state changed to MMR_STATE_STOPPED. - if (event->state != m_state && m_state == MMR_STATE_PLAYING) - handleMmStopped(); - m_state = event->state; - } - - if (m_eventThread) - m_eventThread->signalRead(); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h b/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h deleted file mode 100644 index e6c138f89..000000000 --- a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef MMREVENTMEDIAPLAYERCONTROL_H -#define MMREVENTMEDIAPLAYERCONTROL_H - -#include "mmrenderermediaplayercontrol.h" - -#include <mm/renderer/events.h> - -QT_BEGIN_NAMESPACE - -class MmrEventThread; - -class MmrEventMediaPlayerControl final : public MmRendererMediaPlayerControl -{ - Q_OBJECT -public: - explicit MmrEventMediaPlayerControl(QObject *parent = 0); - ~MmrEventMediaPlayerControl() override; - - void startMonitoring() override; - void stopMonitoring() override; - void resetMonitoring() override; - - bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; - -private Q_SLOTS: - void readEvents(); - -private: - MmrEventThread *m_eventThread; - - // status properties. - QByteArray m_bufferStatus; - int m_bufferLevel; - int m_bufferCapacity; - qint64 m_position; - bool m_suspended; - QByteArray m_suspendedReason; - - // state properties. - mmr_state_t m_state; - int m_speed; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/mediaplayer/mmreventthread.cpp b/src/plugins/qnx/mediaplayer/mmreventthread.cpp deleted file mode 100644 index 25f26e216..000000000 --- a/src/plugins/qnx/mediaplayer/mmreventthread.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "mmreventthread.h" - -#include <QtCore/QDebug> - -#include <errno.h> -#include <mm/renderer/events.h> -#include <sys/neutrino.h> - -static const int c_mmrCode = _PULSE_CODE_MINAVAIL + 0; -static const int c_readCode = _PULSE_CODE_MINAVAIL + 1; -static const int c_quitCode = _PULSE_CODE_MINAVAIL + 2; - -MmrEventThread::MmrEventThread(mmr_context_t *context) - : QThread(), - m_mmrContext(context) -{ - if (Q_UNLIKELY((m_channelId = ChannelCreate(_NTO_CHF_DISCONNECT - | _NTO_CHF_UNBLOCK - | _NTO_CHF_PRIVATE)) == -1)) { - qFatal("MmrEventThread: Can't continue without a channel"); - } - - if (Q_UNLIKELY((m_connectionId = ConnectAttach(0, 0, m_channelId, - _NTO_SIDE_CHANNEL, 0)) == -1)) { - ChannelDestroy(m_channelId); - qFatal("MmrEventThread: Can't continue without a channel connection"); - } - - SIGEV_PULSE_INIT(&m_mmrEvent, m_connectionId, SIGEV_PULSE_PRIO_INHERIT, c_mmrCode, 0); -} - -MmrEventThread::~MmrEventThread() -{ - // block until thread terminates - shutdown(); - - ConnectDetach(m_connectionId); - ChannelDestroy(m_channelId); -} - -void MmrEventThread::run() -{ - int armResult = mmr_event_arm(m_mmrContext, &m_mmrEvent); - if (armResult > 0) - emit eventPending(); - - while (1) { - struct _pulse msg; - memset(&msg, 0, sizeof(msg)); - int receiveId = MsgReceive(m_channelId, &msg, sizeof(msg), nullptr); - if (receiveId == 0) { - if (msg.code == c_mmrCode) { - emit eventPending(); - } else if (msg.code == c_readCode) { - armResult = mmr_event_arm(m_mmrContext, &m_mmrEvent); - if (armResult > 0) - emit eventPending(); - } else if (msg.code == c_quitCode) { - break; - } else { - qWarning() << Q_FUNC_INFO << "Unexpected pulse" << msg.code; - } - } else if (receiveId > 0) { - qWarning() << Q_FUNC_INFO << "Unexpected message" << msg.code; - } else { - qWarning() << Q_FUNC_INFO << "MsgReceive error" << strerror(errno); - } - } -} - -void MmrEventThread::signalRead() -{ - MsgSendPulse(m_connectionId, SIGEV_PULSE_PRIO_INHERIT, c_readCode, 0); -} - -void MmrEventThread::shutdown() -{ - MsgSendPulse(m_connectionId, SIGEV_PULSE_PRIO_INHERIT, c_quitCode, 0); - - // block until thread terminates - wait(); -} diff --git a/src/plugins/qnx/mediaplayer/mmreventthread.h b/src/plugins/qnx/mediaplayer/mmreventthread.h deleted file mode 100644 index f7bc5cf5e..000000000 --- a/src/plugins/qnx/mediaplayer/mmreventthread.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 QNX Software Systems. All rights reserved. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef MMREVENTTHREAD_H -#define MMREVENTTHREAD_H - -#include <QtCore/QThread> - -#include <sys/neutrino.h> -#include <sys/siginfo.h> - -QT_BEGIN_NAMESPACE - -typedef struct mmr_context mmr_context_t; - -class MmrEventThread : public QThread -{ - Q_OBJECT - -public: - MmrEventThread(mmr_context_t *context); - ~MmrEventThread() override; - - void signalRead(); - -protected: - void run() override; - -Q_SIGNALS: - void eventPending(); - -private: - void shutdown(); - - int m_channelId; - int m_connectionId; - struct sigevent m_mmrEvent; - mmr_context_t *m_mmrContext; -}; - -QT_END_NAMESPACE - -#endif // MMREVENTTHREAD_H diff --git a/src/plugins/qnx/neutrino_mediaservice.json b/src/plugins/qnx/neutrino_mediaservice.json deleted file mode 100644 index 919368d73..000000000 --- a/src/plugins/qnx/neutrino_mediaservice.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Keys": ["neutrinomultimedia"], - "Services": ["org.qt-project.qt.mediaplayer"] -} diff --git a/src/plugins/qnx/neutrinoserviceplugin.cpp b/src/plugins/qnx/neutrinoserviceplugin.cpp deleted file mode 100644 index 842796c83..000000000 --- a/src/plugins/qnx/neutrinoserviceplugin.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "neutrinoserviceplugin.h" - -#include "mmrenderermediaplayerservice.h" - -QT_BEGIN_NAMESPACE - -NeutrinoServicePlugin::NeutrinoServicePlugin() -{ -} - -QMediaService *NeutrinoServicePlugin::create(const QString &key) -{ - if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) - return new MmRendererMediaPlayerService(); - - return 0; -} - -void NeutrinoServicePlugin::release(QMediaService *service) -{ - delete service; -} - -QMediaServiceProviderHint::Features NeutrinoServicePlugin::supportedFeatures(const QByteArray &service) const -{ - Q_UNUSED(service); - return QMediaServiceProviderHint::Features(); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qnx/neutrinoserviceplugin.h b/src/plugins/qnx/neutrinoserviceplugin.h deleted file mode 100644 index 62ed7f0bd..000000000 --- a/src/plugins/qnx/neutrinoserviceplugin.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Research In Motion -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef NEUTRINOSERVICEPLUGIN_H -#define NEUTRINOSERVICEPLUGIN_H - -#include <qmediaserviceproviderplugin.h> - -QT_BEGIN_NAMESPACE - -class NeutrinoServicePlugin - : public QMediaServiceProviderPlugin, - public QMediaServiceFeaturesInterface -{ - Q_OBJECT - Q_INTERFACES(QMediaServiceFeaturesInterface) - Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "neutrino_mediaservice.json") -public: - NeutrinoServicePlugin(); - - QMediaService *create(const QString &key) override; - void release(QMediaService *service) override; - QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const override; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro deleted file mode 100644 index 960c614e0..000000000 --- a/src/plugins/qnx/qnx.pro +++ /dev/null @@ -1,15 +0,0 @@ -TARGET = qtmedia_qnx -QT += multimedia-private gui-private core-private - -LIBS += -lscreen - -include(common/common.pri) -include(mediaplayer/mediaplayer.pri) - -HEADERS += neutrinoserviceplugin.h -SOURCES += neutrinoserviceplugin.cpp -OTHER_FILES += neutrino_mediaservice.json -PLUGIN_CLASS_NAME = NeutrinoServicePlugin - -PLUGIN_TYPE = mediaservice -load(qt_plugin) |