From e3bd0333de0b7632024cdd5e8e8833173c960549 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Wed, 23 Oct 2013 17:43:50 +0200 Subject: [PATCH 01/20] Blackberry: Fix video recording The latest BB10 firmware (10.2) requires to set the rotation property of the video explicitly to the value of the video viewfinder. Change-Id: Iec9d43480820655b5d3ecdd136917d5458f0e55b Reviewed-by: Fabian Bumberger Reviewed-by: Rafael Roquetto --- src/plugins/blackberry/camera/bbcamerasession.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/blackberry/camera/bbcamerasession.cpp index 70739799..8f8e666d 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.cpp +++ b/src/plugins/blackberry/camera/bbcamerasession.cpp @@ -637,13 +637,15 @@ void BbCameraSession::applyVideoSettings() 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, 360 - m_nativeCameraOrientation); + CAMERA_IMGPROP_ROTATION, rotationAngle); if (result != CAMERA_EOK) { qWarning() << "Unable to apply video viewfinder settings:" << result; @@ -683,9 +685,11 @@ void BbCameraSession::applyVideoSettings() 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); #else From a2f9f25d8577fefe8358eb848da206e5ebdf4178 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Wed, 23 Oct 2013 18:04:58 +0200 Subject: [PATCH 02/20] Blackberry: Fix camera viewfinder Enter the event loop between opening the camera and starting the viewfinder window grabber. The latter needs a windowGroup set, so in case the QCamera and QCameraViewfinder are constructed directly/indirectly inside the main window constructor, we have to wait for the top-level window of the application to be created, so that we can retrieve the windowGroup from it. Task-number: QTBUG-33739 Change-Id: Ib23781f0e4a2a07ba388e22debcb59b00509ed16 Reviewed-by: Rafael Roquetto Reviewed-by: Fabian Bumberger Reviewed-by: Tobias Koenig Reviewed-by: Sean Harmer --- src/plugins/blackberry/camera/bbcamerasession.cpp | 14 ++++++-------- src/plugins/blackberry/camera/bbcamerasession.h | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/blackberry/camera/bbcamerasession.cpp index 8f8e666d..0185dccb 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.cpp +++ b/src/plugins/blackberry/camera/bbcamerasession.cpp @@ -165,10 +165,8 @@ void BbCameraSession::setState(QCamera::State state) } } else if (state == QCamera::ActiveState) { if (openCamera()) { - applyConfiguration(); - if (startViewFinder()) { - m_state = state; - } + QMetaObject::invokeMethod(this, "applyConfiguration", Qt::QueuedConnection); + m_state = state; } } } else if (previousState == QCamera::LoadedState) { @@ -176,10 +174,8 @@ void BbCameraSession::setState(QCamera::State state) closeCamera(); m_state = state; } else if (state == QCamera::ActiveState) { - applyConfiguration(); - if (startViewFinder()) { - m_state = state; - } + QMetaObject::invokeMethod(this, "applyConfiguration", Qt::QueuedConnection); + m_state = state; } } else if (previousState == QCamera::ActiveState) { if (state == QCamera::LoadedState) { @@ -1157,6 +1153,8 @@ void BbCameraSession::applyConfiguration() } else if (m_captureMode & QCamera::CaptureVideo) { applyVideoSettings(); } + + startViewFinder(); } static void videoRecordingStatusCallback(camera_handle_t handle, camera_devstatus_t status, uint16_t value, void *context) diff --git a/src/plugins/blackberry/camera/bbcamerasession.h b/src/plugins/blackberry/camera/bbcamerasession.h index f57c7dab..f226d424 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.h +++ b/src/plugins/blackberry/camera/bbcamerasession.h @@ -176,13 +176,13 @@ private slots: void deviceOrientationChanged(int); void handleCameraPowerUp(); void viewfinderFrameGrabbed(const QImage &image); + void applyConfiguration(); private: bool openCamera(); void closeCamera(); bool startViewFinder(); void stopViewFinder(); - void applyConfiguration(); bool startVideoRecording(); void stopVideoRecording(); From 2858e6cc3ee0fc5d1a42f5f41722246ea9e2831e Mon Sep 17 00:00:00 2001 From: Rafael Roquetto Date: Fri, 18 Oct 2013 19:08:24 -0300 Subject: [PATCH 03/20] BlackBerry: fix BbVideoWindowControl window zorder Change-Id: I6c3b70d5d5a0afcb00ce2494ee071d6f3abd7626 Reviewed-by: Fabian Bumberger Reviewed-by: Thomas McGuire --- src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp b/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp index d29f36f0..8c1ca19d 100644 --- a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp +++ b/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp @@ -196,7 +196,7 @@ void BbVideoWindowControl::attachDisplay(mmr_context_t *context) return; } - QWindow * const window = findWindow(m_winId); + QWindow *window = findWindow(m_winId); if (!window) { qDebug() << "BbVideoWindowControl: No video window!"; return; @@ -218,6 +218,10 @@ void BbVideoWindowControl::attachDisplay(mmr_context_t *context) const QString groupName = QString::fromLatin1(groupNameData); m_windowName = QString("BbVideoWindowControl_%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 = From 1235fb99101d56694edfa018b4cf6cfae653fa36 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 25 Oct 2013 12:49:40 +0200 Subject: [PATCH 04/20] OpenSL ES: enable the plugin only on Android. Removed the configure test to enable or not the plugin (which solves the problem of the plugin not being built on Windows because of a bug in QMake). Even though it should work on other OpenSL ES implementations than the Android one, it hasn't been tested. Compile and use the plugin only on Android for now. Task-number: QTBUG-34275 Change-Id: I02d47c8be3be8163a17c68b44b8c4b18a218a3fe Reviewed-by: Christian Stromme --- config.tests/opensles/main.cpp | 47 ------------------------------ config.tests/opensles/opensles.pro | 2 -- qtmultimedia.pro | 1 - src/plugins/plugins.pro | 6 +--- 4 files changed, 1 insertion(+), 55 deletions(-) delete mode 100644 config.tests/opensles/main.cpp delete mode 100644 config.tests/opensles/opensles.pro diff --git a/config.tests/opensles/main.cpp b/config.tests/opensles/main.cpp deleted file mode 100644 index 45fd2f05..00000000 --- a/config.tests/opensles/main.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include - -int main() -{ - return 0; -} diff --git a/config.tests/opensles/opensles.pro b/config.tests/opensles/opensles.pro deleted file mode 100644 index def49c7a..00000000 --- a/config.tests/opensles/opensles.pro +++ /dev/null @@ -1,2 +0,0 @@ -LIBS += -lOpenSLES -SOURCES += main.cpp diff --git a/qtmultimedia.pro b/qtmultimedia.pro index f3ede6ca..489f81fa 100644 --- a/qtmultimedia.pro +++ b/qtmultimedia.pro @@ -2,7 +2,6 @@ requires(qtHaveModule(gui)) load(configure) qtCompileTest(openal) -qtCompileTest(opensles) win32 { qtCompileTest(directshow) { qtCompileTest(wshellitem) diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 15d5a0b9..20b0ccd9 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -9,7 +9,7 @@ TEMPLATE = subdirs SUBDIRS += m3u android { - SUBDIRS += android + SUBDIRS += android opensles } blackberry { @@ -52,10 +52,6 @@ mac:!simulator { !ios: SUBDIRS += qt7 } -config_opensles { - SUBDIRS += opensles -} - config_resourcepolicy { SUBDIRS += resourcepolicy } From 43bc5f65d2c0e909a3b4b9d32da692bc38b3e27a Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Thu, 24 Oct 2013 12:49:05 +0200 Subject: [PATCH 05/20] Blackberry: Improve camera focus handling Use different state variables for focus/exposure/whitebalance locks and update the exposure and whitebalance variables explicitly, since BB10 doesn't provide a status callback method as for focus. Change-Id: Ie6ba8f6a2a27f317c39994d21be8549c99daef6d Reviewed-by: Fabian Bumberger Reviewed-by: Rafael Roquetto --- .../camera/bbcameralockscontrol.cpp | 195 +++++++++++++++++- .../blackberry/camera/bbcameralockscontrol.h | 19 ++ .../blackberry/camera/bbcamerasession.cpp | 148 +------------ .../blackberry/camera/bbcamerasession.h | 25 +-- 4 files changed, 214 insertions(+), 173 deletions(-) diff --git a/src/plugins/blackberry/camera/bbcameralockscontrol.cpp b/src/plugins/blackberry/camera/bbcameralockscontrol.cpp index 47194054..d2537361 100644 --- a/src/plugins/blackberry/camera/bbcameralockscontrol.cpp +++ b/src/plugins/blackberry/camera/bbcameralockscontrol.cpp @@ -47,29 +47,212 @@ 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(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason)), - this, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); + connect(m_session, SIGNAL(cameraOpened()), SLOT(cameraOpened())); + connect(m_session, SIGNAL(focusStatusChanged(int)), SLOT(focusStatusChanged(int))); } QCamera::LockTypes BbCameraLocksControl::supportedLocks() const { - return m_session->supportedLocks(); + return (QCamera::LockFocus | QCamera::LockExposure | QCamera::LockWhiteBalance); } QCamera::LockStatus BbCameraLocksControl::lockStatus(QCamera::LockType lock) const { - return m_session->lockStatus(lock); + 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) { - m_session->searchAndLock(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) { - m_session->unlock(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(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/blackberry/camera/bbcameralockscontrol.h b/src/plugins/blackberry/camera/bbcameralockscontrol.h index 6c4b2da6..8257abdb 100644 --- a/src/plugins/blackberry/camera/bbcameralockscontrol.h +++ b/src/plugins/blackberry/camera/bbcameralockscontrol.h @@ -51,6 +51,14 @@ class BbCameraLocksControl : public QCameraLocksControl { Q_OBJECT public: + enum LocksApplyMode + { + IndependentMode, + FocusExposureBoundMode, + AllBoundMode, + FocusOnlyMode + }; + explicit BbCameraLocksControl(BbCameraSession *session, QObject *parent = 0); QCamera::LockTypes supportedLocks() const Q_DECL_OVERRIDE; @@ -58,8 +66,19 @@ public: void searchAndLock(QCamera::LockTypes locks) Q_DECL_OVERRIDE; void unlock(QCamera::LockTypes locks) Q_DECL_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 diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/blackberry/camera/bbcamerasession.cpp index 0185dccb..d673040a 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.cpp +++ b/src/plugins/blackberry/camera/bbcamerasession.cpp @@ -121,8 +121,6 @@ BbCameraSession::BbCameraSession(QObject *parent) , m_captureImageDriveMode(QCameraImageCapture::SingleImageCapture) , m_lastImageCaptureId(0) , m_captureDestination(QCameraImageCapture::CaptureToFile) - , m_locksApplyMode(IndependentMode) - , m_focusLockStatus(QCamera::Unlocked) , m_videoState(QMediaRecorder::StoppedState) , m_videoStatus(QMediaRecorder::LoadedStatus) , m_handle(CAMERA_HANDLE_INVALID) @@ -444,95 +442,6 @@ void BbCameraSession::setImageSettings(const QImageEncoderSettings &settings) m_imageEncoderSettings.setCodec(QLatin1String("jpeg")); } -QCamera::LockTypes BbCameraSession::supportedLocks() const -{ - if (m_locksApplyMode == FocusOnlyMode) - return QCamera::LockFocus; - else - return (QCamera::LockExposure | QCamera::LockWhiteBalance | QCamera::LockFocus); -} - -QCamera::LockStatus BbCameraSession::lockStatus(QCamera::LockType lock) const -{ - switch (lock) { - case QCamera::LockExposure: - return QCamera::Unlocked; - case QCamera::LockWhiteBalance: - return QCamera::Unlocked; - case QCamera::LockFocus: - return m_focusLockStatus; - default: - return QCamera::Unlocked; - } -} - -void BbCameraSession::searchAndLock(QCamera::LockTypes locks) -{ - 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_handle, lockModes); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to set lock modes:" << result; - } -} - -void BbCameraSession::unlock(QCamera::LockTypes locks) -{ - 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_handle, lockModes); - - if (result != CAMERA_EOK) - qWarning() << "Unable to set lock modes:" << result; -} - QUrl BbCameraSession::outputLocation() const { return QUrl::fromLocalFile(m_videoOutputLocation); @@ -822,37 +731,6 @@ void BbCameraSession::imageCaptured(int requestId, const QImage &rawImage, const } } -void BbCameraSession::handleFocusStatusChanged(int value) -{ - const camera_focusstate_t focusState = static_cast(value); - - switch (focusState) { - case CAMERA_FOCUSSTATE_NONE: - case CAMERA_FOCUSSTATE_WAITING: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::UserRequest); - break; - 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; - } -} - void BbCameraSession::handleVideoRecordingPaused() { //TODO: implement once BB10 API supports pausing a video @@ -942,6 +820,8 @@ bool BbCameraSession::openCamera() m_status = QCamera::LoadedStatus; emit statusChanged(m_status); + emit cameraOpened(); + return true; } @@ -975,7 +855,7 @@ static void viewFinderStatusCallback(camera_handle_t handle, camera_devstatus_t if (status == CAMERA_STATUS_FOCUS_CHANGE) { BbCameraSession *session = static_cast(context); - QMetaObject::invokeMethod(session, "handleFocusStatusChanged", Qt::QueuedConnection, Q_ARG(int, value)); + QMetaObject::invokeMethod(session, "focusStatusChanged", Qt::QueuedConnection, Q_ARG(int, value)); return; } #ifndef Q_OS_BLACKBERRY_TABLET @@ -1006,28 +886,6 @@ bool BbCameraSession::startViewFinder() return false; } - // retrieve information about lock apply modes - { - int supported = 0; - uint32_t modes[20]; - - const camera_error_t result = camera_get_3a_lock_modes(m_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; - } - } - } - const int angle = m_orientationHandler->orientation(); const QSize rotatedSize = ((angle == 0 || angle == 180) ? viewfinderResolution diff --git a/src/plugins/blackberry/camera/bbcamerasession.h b/src/plugins/blackberry/camera/bbcamerasession.h index f226d424..e757a83c 100644 --- a/src/plugins/blackberry/camera/bbcamerasession.h +++ b/src/plugins/blackberry/camera/bbcamerasession.h @@ -105,20 +105,6 @@ public: QImageEncoderSettings imageSettings() const; void setImageSettings(const QImageEncoderSettings &settings); - // locks control - enum LocksApplyMode - { - IndependentMode, - FocusExposureBoundMode, - AllBoundMode, - FocusOnlyMode - }; - - QCamera::LockTypes supportedLocks() const; - QCamera::LockStatus lockStatus(QCamera::LockType lock) const; - void searchAndLock(QCamera::LockTypes locks); - void unlock(QCamera::LockTypes locks); - // media recorder control QUrl outputLocation() const; bool setOutputLocation(const QUrl &location); @@ -157,9 +143,6 @@ Q_SIGNALS: // capture destination control void captureDestinationChanged(QCameraImageCapture::CaptureDestinations destination); - // locks control - void lockStatusChanged(QCamera::LockType type, QCamera::LockStatus status, QCamera::LockChangeReason reason); - // media recorder control void videoStateChanged(QMediaRecorder::State state); void videoStatusChanged(QMediaRecorder::Status status); @@ -167,10 +150,12 @@ Q_SIGNALS: 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 handleFocusStatusChanged(int); void handleVideoRecordingPaused(); void handleVideoRecordingResumed(); void deviceOrientationChanged(int); @@ -210,10 +195,6 @@ private: QImageEncoderSettings m_imageEncoderSettings; - LocksApplyMode m_locksApplyMode; - QCamera::LockStatus m_focusLockStatus; - QCamera::LockTypes m_currentLockTypes; - QString m_videoOutputLocation; QMediaRecorder::State m_videoState; QMediaRecorder::Status m_videoStatus; From acbd998749db4c09801647b21fcb081937160e3a Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Mon, 28 Oct 2013 16:50:59 +0100 Subject: [PATCH 06/20] WMF: emit positionChanged() signal when reaching the end of a media. This is necessary for QML MediaPlayer to report the correct position at the end of a media. Change-Id: Ifac2a721b850c726305d1a98e360da638b1fa87a Reviewed-by: Christian Stromme --- src/plugins/wmf/player/mfplayersession.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index cca42e2f..adc762d6 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -1936,10 +1936,12 @@ void MFPlayerSession::handleSessionEvent(IMFMediaEvent *sessionEvent) m_request.command = CmdNone; m_request.prevCmd = CmdNone; - changeStatus(QMediaPlayer::EndOfMedia); m_varStart.vt = VT_I8; //keep reporting the final position after end of media m_varStart.hVal.QuadPart = m_duration; + emit positionChanged(position()); + + changeStatus(QMediaPlayer::EndOfMedia); break; case MEEndOfPresentationSegment: break; From 30cf028fb158f08bc01357476f73426c43c35b4e Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 25 Oct 2013 15:07:02 +0200 Subject: [PATCH 07/20] Android: fix camera preview showing black frames after restarting it. Clear the camera preview size when stopping the preview in order to force it to be reset when starting it again. Task-number: QTBUG-34346 Change-Id: I0edf8d996348745b9aa7cf0790c16b6cd813b33b Reviewed-by: Christian Stromme --- .../android/src/mediacapture/qandroidcamerafocuscontrol.cpp | 4 ++++ .../android/src/mediacapture/qandroidcamerasession.cpp | 6 +++++- src/plugins/android/src/wrappers/jcamera.cpp | 6 ++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.cpp b/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.cpp index 899a3a49..345a2917 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.cpp @@ -238,6 +238,10 @@ void QAndroidCameraFocusControl::updateFocusZones(QCameraFocusZone::FocusZoneSta return; QSize viewportSize = m_session->camera()->previewSize(); + + if (!viewportSize.isValid()) + return; + QSizeF focusSize(50.f / viewportSize.width(), 50.f / viewportSize.height()); float x = qBound(qreal(0), m_actualFocusPoint.x() - (focusSize.width() / 2), diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp index 75b0c5e9..075fe78e 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp @@ -205,8 +205,11 @@ void QAndroidCameraSession::adjustViewfinderSize(const QSize &captureSize, bool QSize viewfinderResolution = m_camera->previewSize(); const qreal aspectRatio = qreal(captureSize.width()) / qreal(captureSize.height()); - if (qFuzzyCompare(aspectRatio, qreal(viewfinderResolution.width()) / qreal(viewfinderResolution.height()))) + if (viewfinderResolution.isValid() && + qFuzzyCompare(aspectRatio, + qreal(viewfinderResolution.width()) / viewfinderResolution.height())) { return; + } QList previewSizes = m_camera->getSupportedPreviewSizes(); for (int i = previewSizes.count() - 1; i >= 0; --i) { @@ -270,6 +273,7 @@ void QAndroidCameraSession::stopPreview() JMultimediaUtils::enableOrientationListener(false); m_camera->stopPreview(); + m_camera->setPreviewSize(QSize()); if (m_videoOutput) m_videoOutput->stop(); m_previewStarted = false; diff --git a/src/plugins/android/src/wrappers/jcamera.cpp b/src/plugins/android/src/wrappers/jcamera.cpp index f858f470..fc9b1806 100644 --- a/src/plugins/android/src/wrappers/jcamera.cpp +++ b/src/plugins/android/src/wrappers/jcamera.cpp @@ -261,8 +261,10 @@ void JCamera::setPreviewSize(const QSize &size) m_previewSize = size; - m_parameters.callMethod("setPreviewSize", "(II)V", size.width(), size.height()); - applyParameters(); + if (m_previewSize.isValid()) { + m_parameters.callMethod("setPreviewSize", "(II)V", size.width(), size.height()); + applyParameters(); + } emit previewSizeChanged(); } From 852f684973807531d16133815f4ed535ea3011dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Mon, 28 Oct 2013 16:36:49 +0100 Subject: [PATCH 08/20] QSoundEffect: Set playing to true before starting the audio-device. When the audio-device starts playing it should be able to read from the source immediately. The OpenSL plugin would fail because the source was blocking the audio-device from reading, as the state still was in its initial state (stopped). Change-Id: Ia26fa2eb442e239f5209947e6c9cd464b7d976a4 Reviewed-by: Yoann Lopes --- src/multimedia/audio/qsoundeffect_qaudio_p.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/multimedia/audio/qsoundeffect_qaudio_p.cpp b/src/multimedia/audio/qsoundeffect_qaudio_p.cpp index 524c856a..2de1b006 100644 --- a/src/multimedia/audio/qsoundeffect_qaudio_p.cpp +++ b/src/multimedia/audio/qsoundeffect_qaudio_p.cpp @@ -236,10 +236,9 @@ void QSoundEffectPrivate::play() setStatus(QSoundEffect::Null); return; } + setPlaying(true); if (d->m_audioOutput && d->m_audioOutput->state() == QAudio::StoppedState && d->m_sampleReady) d->m_audioOutput->start(d); - - setPlaying(true); } void QSoundEffectPrivate::stop() From 4edc0cc3b9d7e56e59eab64d0576e8fd511c27c4 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Thu, 31 Oct 2013 11:57:16 +0100 Subject: [PATCH 09/20] DirectShow: fix compilation with MSVC 2008. Task-number: QTBUG-34479 Change-Id: I48ab0760273e08678be5f057e2b39db8cbe10cff Reviewed-by: Christian Stromme --- .../player/directshowmetadatacontrol.cpp | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp index 3c81ae18..d60bce31 100644 --- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp +++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp @@ -389,86 +389,86 @@ void DirectShowMetaDataControl::updateGraph(IFilterGraph2 *graph, IBaseFilter *s if (FAILED(pStore->GetValue(key, &var))) continue; - if (key == PKEY_Author) { + if (IsEqualPropertyKey(key, PKEY_Author)) { m_metadata.insert(QMediaMetaData::Author, convertValue(var)); - } else if (key == PKEY_Title) { + } else if (IsEqualPropertyKey(key, PKEY_Title)) { m_metadata.insert(QMediaMetaData::Title, convertValue(var)); - } else if (key == PKEY_Media_SubTitle) { + } else if (IsEqualPropertyKey(key, PKEY_Media_SubTitle)) { m_metadata.insert(QMediaMetaData::SubTitle, convertValue(var)); - } else if (key == PKEY_ParentalRating) { + } else if (IsEqualPropertyKey(key, PKEY_ParentalRating)) { m_metadata.insert(QMediaMetaData::ParentalRating, convertValue(var)); - } else if (key == PKEY_Comment) { + } else if (IsEqualPropertyKey(key, PKEY_Comment)) { m_metadata.insert(QMediaMetaData::Description, convertValue(var)); - } else if (key == PKEY_Copyright) { + } else if (IsEqualPropertyKey(key, PKEY_Copyright)) { m_metadata.insert(QMediaMetaData::Copyright, convertValue(var)); - } else if (key == PKEY_Media_ProviderStyle) { + } else if (IsEqualPropertyKey(key, PKEY_Media_ProviderStyle)) { m_metadata.insert(QMediaMetaData::Genre, convertValue(var)); - } else if (key == PKEY_Media_Year) { + } else if (IsEqualPropertyKey(key, PKEY_Media_Year)) { m_metadata.insert(QMediaMetaData::Year, convertValue(var)); - } else if (key == PKEY_Media_DateEncoded) { + } else if (IsEqualPropertyKey(key, PKEY_Media_DateEncoded)) { m_metadata.insert(QMediaMetaData::Date, convertValue(var)); - } else if (key == PKEY_Rating) { + } else if (IsEqualPropertyKey(key, PKEY_Rating)) { m_metadata.insert(QMediaMetaData::UserRating, int((convertValue(var).toUInt() - 1) / qreal(98) * 100)); - } else if (key == PKEY_Keywords) { + } else if (IsEqualPropertyKey(key, PKEY_Keywords)) { m_metadata.insert(QMediaMetaData::Keywords, convertValue(var)); - } else if (key == PKEY_Language) { + } else if (IsEqualPropertyKey(key, PKEY_Language)) { m_metadata.insert(QMediaMetaData::Language, convertValue(var)); - } else if (key == PKEY_Media_Publisher) { + } else if (IsEqualPropertyKey(key, PKEY_Media_Publisher)) { m_metadata.insert(QMediaMetaData::Publisher, convertValue(var)); - } else if (key == PKEY_Media_Duration) { + } else if (IsEqualPropertyKey(key, PKEY_Media_Duration)) { m_metadata.insert(QMediaMetaData::Duration, (convertValue(var).toLongLong() + 10000) / 10000); - } else if (key == PKEY_Audio_EncodingBitrate) { + } else if (IsEqualPropertyKey(key, PKEY_Audio_EncodingBitrate)) { m_metadata.insert(QMediaMetaData::AudioBitRate, convertValue(var)); - } else if (key == PKEY_Media_AverageLevel) { + } else if (IsEqualPropertyKey(key, PKEY_Media_AverageLevel)) { m_metadata.insert(QMediaMetaData::AverageLevel, convertValue(var)); - } else if (key == PKEY_Audio_ChannelCount) { + } else if (IsEqualPropertyKey(key, PKEY_Audio_ChannelCount)) { m_metadata.insert(QMediaMetaData::ChannelCount, convertValue(var)); - } else if (key == PKEY_Audio_PeakValue) { + } else if (IsEqualPropertyKey(key, PKEY_Audio_PeakValue)) { m_metadata.insert(QMediaMetaData::PeakValue, convertValue(var)); - } else if (key == PKEY_Audio_SampleRate) { + } else if (IsEqualPropertyKey(key, PKEY_Audio_SampleRate)) { m_metadata.insert(QMediaMetaData::SampleRate, convertValue(var)); - } else if (key == PKEY_Music_AlbumTitle) { + } else if (IsEqualPropertyKey(key, PKEY_Music_AlbumTitle)) { m_metadata.insert(QMediaMetaData::AlbumTitle, convertValue(var)); - } else if (key == PKEY_Music_AlbumArtist) { + } else if (IsEqualPropertyKey(key, PKEY_Music_AlbumArtist)) { m_metadata.insert(QMediaMetaData::AlbumArtist, convertValue(var)); - } else if (key == PKEY_Music_Artist) { + } else if (IsEqualPropertyKey(key, PKEY_Music_Artist)) { m_metadata.insert(QMediaMetaData::ContributingArtist, convertValue(var)); - } else if (key == PKEY_Music_Composer) { + } else if (IsEqualPropertyKey(key, PKEY_Music_Composer)) { m_metadata.insert(QMediaMetaData::Composer, convertValue(var)); - } else if (key == PKEY_Music_Conductor) { + } else if (IsEqualPropertyKey(key, PKEY_Music_Conductor)) { m_metadata.insert(QMediaMetaData::Conductor, convertValue(var)); - } else if (key == PKEY_Music_Lyrics) { + } else if (IsEqualPropertyKey(key, PKEY_Music_Lyrics)) { m_metadata.insert(QMediaMetaData::Lyrics, convertValue(var)); - } else if (key == PKEY_Music_Mood) { + } else if (IsEqualPropertyKey(key, PKEY_Music_Mood)) { m_metadata.insert(QMediaMetaData::Mood, convertValue(var)); - } else if (key == PKEY_Music_TrackNumber) { + } else if (IsEqualPropertyKey(key, PKEY_Music_TrackNumber)) { m_metadata.insert(QMediaMetaData::TrackNumber, convertValue(var)); - } else if (key == PKEY_Music_Genre) { + } else if (IsEqualPropertyKey(key, PKEY_Music_Genre)) { m_metadata.insert(QMediaMetaData::Genre, convertValue(var)); - } else if (key == PKEY_ThumbnailStream) { + } else if (IsEqualPropertyKey(key, PKEY_ThumbnailStream)) { m_metadata.insert(QMediaMetaData::ThumbnailImage, convertValue(var)); - } else if (key == PKEY_Video_FrameHeight) { + } else if (IsEqualPropertyKey(key, PKEY_Video_FrameHeight)) { QSize res; res.setHeight(convertValue(var).toUInt()); if (SUCCEEDED(pStore->GetValue(PKEY_Video_FrameWidth, &var))) res.setWidth(convertValue(var).toUInt()); m_metadata.insert(QMediaMetaData::Resolution, res); - } else if (key == PKEY_Video_HorizontalAspectRatio) { + } else if (IsEqualPropertyKey(key, PKEY_Video_HorizontalAspectRatio)) { QSize aspectRatio; aspectRatio.setWidth(convertValue(var).toUInt()); if (SUCCEEDED(pStore->GetValue(PKEY_Video_VerticalAspectRatio, &var))) aspectRatio.setHeight(convertValue(var).toUInt()); m_metadata.insert(QMediaMetaData::PixelAspectRatio, aspectRatio); - } else if (key == PKEY_Video_FrameRate) { + } else if (IsEqualPropertyKey(key, PKEY_Video_FrameRate)) { m_metadata.insert(QMediaMetaData::VideoFrameRate, convertValue(var).toReal() / 1000); - } else if (key == PKEY_Video_EncodingBitrate) { + } else if (IsEqualPropertyKey(key, PKEY_Video_EncodingBitrate)) { m_metadata.insert(QMediaMetaData::VideoBitRate, convertValue(var)); - } else if (key == PKEY_Video_Director) { + } else if (IsEqualPropertyKey(key, PKEY_Video_Director)) { m_metadata.insert(QMediaMetaData::Director, convertValue(var)); - } else if (key == PKEY_Media_Writer) { + } else if (IsEqualPropertyKey(key, PKEY_Media_Writer)) { m_metadata.insert(QMediaMetaData::Writer, convertValue(var)); } From ac01ab654356435b6db1c8adbf087b4aed3ffc0a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 31 Oct 2013 13:39:22 +0100 Subject: [PATCH 10/20] use private linkage where possible Task-number: QTBUG-34463 Change-Id: Iffbeed2f1a27fd38b5960afa9715815ac11b722a Reviewed-by: Yoann Lopes --- src/gsttools/gsttools.pro | 16 ++++++++-------- src/multimedia/audio/audio.pri | 4 ++-- src/multimedia/multimedia.pro | 2 +- src/multimediawidgets/multimediawidgets.pro | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/gsttools/gsttools.pro b/src/gsttools/gsttools.pro index d24d8939..46184965 100644 --- a/src/gsttools/gsttools.pro +++ b/src/gsttools/gsttools.pro @@ -8,13 +8,13 @@ QT = core multimedia-private gui-private unix:!maemo*:contains(QT_CONFIG, alsa) { DEFINES += HAVE_ALSA -LIBS += \ +LIBS_PRIVATE += \ -lasound } CONFIG += link_pkgconfig -PKGCONFIG += \ +PKGCONFIG_PRIVATE += \ gstreamer-0.10 \ gstreamer-base-0.10 \ gstreamer-interfaces-0.10 \ @@ -22,11 +22,11 @@ PKGCONFIG += \ gstreamer-video-0.10 \ gstreamer-pbutils-0.10 -maemo*:PKGCONFIG +=gstreamer-plugins-bad-0.10 +maemo*: PKGCONFIG_PRIVATE +=gstreamer-plugins-bad-0.10 config_resourcepolicy { DEFINES += HAVE_RESOURCE_POLICY - PKGCONFIG += libresourceqt5 + PKGCONFIG_PRIVATE += libresourceqt5 } # Header files must go inside source directory of a module @@ -79,24 +79,24 @@ qtHaveModule(widgets) { } maemo6 { - PKGCONFIG += qmsystem2 + PKGCONFIG_PRIVATE += qmsystem2 contains(QT_CONFIG, opengles2):qtHaveModule(widgets) { PRIVATE_HEADERS += qgstreamergltexturerenderer_p.h SOURCES += qgstreamergltexturerenderer.cpp QT += opengl - LIBS += -lEGL -lgstmeegointerfaces-0.10 + LIBS_PRIVATE += -lEGL -lgstmeegointerfaces-0.10 } } config_gstreamer_appsrc { - PKGCONFIG += gstreamer-app-0.10 + PKGCONFIG_PRIVATE += gstreamer-app-0.10 PRIVATE_HEADERS += qgstappsrc_p.h SOURCES += qgstappsrc.cpp DEFINES += HAVE_GST_APPSRC - LIBS += -lgstapp-0.10 + LIBS_PRIVATE += -lgstapp-0.10 } HEADERS += $$PRIVATE_HEADERS diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri index f76d1326..6fad6604 100644 --- a/src/multimedia/audio/audio.pri +++ b/src/multimedia/audio/audio.pri @@ -44,14 +44,14 @@ win32 { SOURCES += audio/qaudiodeviceinfo_win32_p.cpp \ audio/qaudiooutput_win32_p.cpp \ audio/qaudioinput_win32_p.cpp - LIBS += -lwinmm -lstrmiids -lole32 -loleaut32 + LIBS_PRIVATE += -lwinmm -lstrmiids -lole32 -loleaut32 } unix:!mac { config_pulseaudio { DEFINES += QT_NO_AUDIO_BACKEND CONFIG += link_pkgconfig - PKGCONFIG += libpulse + PKGCONFIG_PRIVATE += libpulse DEFINES += QT_MULTIMEDIA_PULSEAUDIO PRIVATE_HEADERS += audio/qsoundeffect_pulse_p.h diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index ef6633b9..8bcfd02d 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -65,6 +65,6 @@ MODULE_PLUGIN_TYPES = \ audio \ video/videonode -win32:LIBS += -luuid +win32: LIBS_PRIVATE += -luuid HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS diff --git a/src/multimediawidgets/multimediawidgets.pro b/src/multimediawidgets/multimediawidgets.pro index d4774202..1cf35986 100644 --- a/src/multimediawidgets/multimediawidgets.pro +++ b/src/multimediawidgets/multimediawidgets.pro @@ -35,7 +35,7 @@ maemo6 { SOURCES += qgraphicsvideoitem_maemo6.cpp - LIBS += -lX11 + LIBS_PRIVATE += -lX11 } else { SOURCES += qgraphicsvideoitem.cpp } From 27e6611c0e49d0474bb300496c03b342a9b2740d Mon Sep 17 00:00:00 2001 From: Frank Osterfeld Date: Mon, 4 Nov 2013 10:03:55 +0100 Subject: [PATCH 11/20] BB10: do not mix up pixel width and height This fixes the aspect ratio calculation for video windows. Change-Id: Ie4762b98ee805a41031e1ba88f5cd353426dfdf8 Reviewed-by: Bernd Weimer Reviewed-by: Tobias Koenig Reviewed-by: Thomas McGuire --- src/plugins/blackberry/mediaplayer/bbmetadata.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/blackberry/mediaplayer/bbmetadata.cpp b/src/plugins/blackberry/mediaplayer/bbmetadata.cpp index 680833e8..4b51633b 100644 --- a/src/plugins/blackberry/mediaplayer/bbmetadata.cpp +++ b/src/plugins/blackberry/mediaplayer/bbmetadata.cpp @@ -64,8 +64,8 @@ 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_height"; -static const char * pixelHeightKey = "md_video_pixel_width"; +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 int mediaTypeAudioFlag = 4; From 4bbdf539c0f78f0da05d98025b512b9551a519d9 Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Fri, 1 Nov 2013 13:38:33 +0100 Subject: [PATCH 12/20] Add classnames for QML plugins. Needed for static builds on iOS Change-Id: I2e16353a50661ac5b65a80fd37363b6e29c8b4a7 Reviewed-by: Yoann Lopes --- src/imports/audioengine/qmldir | 1 + src/imports/multimedia/qmldir | 1 + 2 files changed, 2 insertions(+) diff --git a/src/imports/audioengine/qmldir b/src/imports/audioengine/qmldir index d853c802..ed54ce0a 100644 --- a/src/imports/audioengine/qmldir +++ b/src/imports/audioengine/qmldir @@ -1,3 +1,4 @@ module QtAudioEngine plugin declarative_audioengine typeinfo plugins.qmltypes +classname QAudioEngineDeclarativeModule \ No newline at end of file diff --git a/src/imports/multimedia/qmldir b/src/imports/multimedia/qmldir index 673f7ffd..3d2d7c46 100644 --- a/src/imports/multimedia/qmldir +++ b/src/imports/multimedia/qmldir @@ -1,4 +1,5 @@ module QtMultimedia plugin declarative_multimedia +classname QMultimediaDeclarativeModule typeinfo plugins.qmltypes Video 5.0 Video.qml From fb199a5045f6637a9ecbbf53bd32170a185b3854 Mon Sep 17 00:00:00 2001 From: Jerome Pasion Date: Tue, 5 Nov 2013 13:27:13 +0100 Subject: [PATCH 13/20] Doc: Updated url variable in qdocconf files. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In 5.2, the HTML output is in a flatter structure and when they are hosted in qt-project.org/doc, the documentation will be found at http://qt-project.org/doc/qt-$QT_VER The url variable is used by projects outside of Qt 5 which need to link to Qt 5 documentation, such as Qt Creator. Task-number: QTBUG-34584 Change-Id: I3971987490ef7c2f8060383ffc2e141558f827c9 Reviewed-by: Topi Reiniö Reviewed-by: Leena Miettinen --- src/multimedia/doc/qtmultimedia.qdocconf | 2 +- src/multimediawidgets/doc/qtmultimediawidgets.qdocconf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf index 5f82a330..83abf5b4 100644 --- a/src/multimedia/doc/qtmultimedia.qdocconf +++ b/src/multimedia/doc/qtmultimedia.qdocconf @@ -2,7 +2,7 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtMultimedia description = Qt Multimedia Documentation -url = http://qt-project.org/doc/qt-$QT_VER/qtmultimedia +url = http://qt-project.org/doc/qt-$QT_VER version = $QT_VERSION # The following parameters are for creating a qhp file, the qhelpgenerator diff --git a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf index 5648041a..92d4dc09 100644 --- a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf +++ b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf @@ -2,7 +2,7 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtMultimediaWidgets description = Qt Multimedia Widgets Documentation -url = http://qt-project.org/doc/qt-$QT_VER/qtmultimediawidgets +url = http://qt-project.org/doc/qt-$QT_VER version = $QT_VERSION # The following parameters are for creating a qhp file, the qhelpgenerator From 2412c298d4e8c112a63eb1e3ec9b5f2789bd3eeb Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Mon, 4 Nov 2013 19:14:22 +0100 Subject: [PATCH 14/20] Android: fix two race conditions in the media player. start() could be called before the media player was marked as prepared. When changing media, setMediaPath() could be called before the media player was reset. Task-number: QTBUG-34558 Change-Id: I886fd5f5008f76dcbc88c57d7b16a439b394d4a7 Reviewed-by: Christian Stromme --- .../qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java | 3 +-- .../android/src/mediaplayer/qandroidmediaplayercontrol.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java index 2ca07a63..cd79c979 100644 --- a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java +++ b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java @@ -159,7 +159,6 @@ public class QtAndroidMediaPlayer extends MediaPlayer public void onCompletion(final MediaPlayer mp) { onMediaPlayerInfoNative(MEDIA_PLAYER_FINISHED, 0, mID); - reset(); } } @@ -191,9 +190,9 @@ public class QtAndroidMediaPlayer extends MediaPlayer @Override public void onPrepared(final MediaPlayer mp) { + mPreparing = false; onMediaPlayerInfoNative(MEDIA_PLAYER_READY, 0, mID); onMediaPlayerInfoNative(MEDIA_PLAYER_DURATION, getDuration(), mID); - mPreparing = false; } } diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp index 3f3b599a..54c04e5c 100644 --- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp +++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp @@ -344,7 +344,7 @@ void QAndroidMediaPlayerControl::onMediaPlayerInfo(qint32 what, qint32 extra) Q_EMIT positionChanged(extra); break; case JMediaPlayer::MEDIA_PLAYER_FINISHED: - setState(QMediaPlayer::StoppedState); + stop(); setMediaStatus(QMediaPlayer::EndOfMedia); break; } From 301baf2b689bfdcc21a374b8831765a3fa63a174 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Wed, 6 Nov 2013 14:27:00 +0100 Subject: [PATCH 15/20] Android: use correct format when capturing a picture to a buffer. Don't decode the JPEG data to raw RGB using QImage. QCameraImageCapture reports anyway that JPEG is the only supported buffer format. Change-Id: Ib17760e4361b004775c002b686ef7529b3768aab Reviewed-by: Christian Stromme --- .../mediacapture/qandroidcamerasession.cpp | 49 +++++++++++++++---- .../src/mediacapture/qandroidcamerasession.h | 1 + 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp index 075fe78e..3a50139c 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp @@ -52,6 +52,41 @@ QT_BEGIN_NAMESPACE +class DataVideoBuffer : public QAbstractVideoBuffer +{ +public: + DataVideoBuffer(const QByteArray &d) + : QAbstractVideoBuffer(NoHandle) + , data(d) + , mode(NotMapped) + { } + + MapMode mapMode() const { return mode; } + + uchar *map(MapMode m, int *numBytes, int *bytesPerLine) + { + if (mode != NotMapped || m == NotMapped) + return 0; + + mode = m; + + if (numBytes) + *numBytes = data.size(); + + if (bytesPerLine) + *bytesPerLine = -1; + + return reinterpret_cast(data.data()); + } + + void unmap() { mode = NotMapped; } + +private: + QByteArray data; + MapMode mode; +}; + + QAndroidCameraSession::QAndroidCameraSession(QObject *parent) : QObject(parent) , m_selectedCamera(0) @@ -463,6 +498,7 @@ void QAndroidCameraSession::onCameraPictureCaptured(const QByteArray &data) QtConcurrent::run(this, &QAndroidCameraSession::processCapturedImage, m_currentImageCaptureId, data, + m_imageSettings.resolution(), m_captureDestination, m_currentImageCaptureFileName); } @@ -477,6 +513,7 @@ void QAndroidCameraSession::onCameraPictureCaptured(const QByteArray &data) void QAndroidCameraSession::processCapturedImage(int id, const QByteArray &data, + const QSize &resolution, QCameraImageCapture::CaptureDestinations dest, const QString &fileName) { @@ -509,16 +546,8 @@ void QAndroidCameraSession::processCapturedImage(int id, } if (dest & QCameraImageCapture::CaptureToBuffer) { - QImage image; - const bool ok = image.loadFromData(data, "JPG"); - - if (ok) { - QVideoFrame frame(image); - emit imageAvailable(id, frame); - } else { - emit imageCaptureError(id, QCameraImageCapture::FormatError, - tr("Could not load JPEG data from captured image")); - } + QVideoFrame frame(new DataVideoBuffer(data), resolution, QVideoFrame::Format_Jpeg); + emit imageAvailable(id, frame); } } diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.h b/src/plugins/android/src/mediacapture/qandroidcamerasession.h index de891522..897cf52d 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.h +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.h @@ -127,6 +127,7 @@ private: void processPreviewImage(int id, const QByteArray &data); void processCapturedImage(int id, const QByteArray &data, + const QSize &resolution, QCameraImageCapture::CaptureDestinations dest, const QString &fileName); From dabec6ae3485485105365e75c057cc35a7fe09d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Thu, 7 Nov 2013 14:41:04 +0100 Subject: [PATCH 16/20] Add classname entry to qmldir file. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Id2351ddd151ca917ba5d6f032a2bd7c2d62acd79 Reviewed-by: Morten Johan Sørvig --- src/imports/multimedia/qmldir | 1 + 1 file changed, 1 insertion(+) diff --git a/src/imports/multimedia/qmldir b/src/imports/multimedia/qmldir index 3d2d7c46..428bfc8d 100644 --- a/src/imports/multimedia/qmldir +++ b/src/imports/multimedia/qmldir @@ -3,3 +3,4 @@ plugin declarative_multimedia classname QMultimediaDeclarativeModule typeinfo plugins.qmltypes Video 5.0 Video.qml +classname QMultimediaDeclarativeModule From 3571a891d509965ffe7eb15def6da8e0367e261e Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Thu, 7 Nov 2013 13:43:05 +0100 Subject: [PATCH 17/20] Android: Add permissions/features for Qt Multimedia module To avoid potential exceptions when using Qt Multimedia, the applications needs to request camera and audio recording capabilities by default. Task-number: QTBUG-33953 Change-Id: I75061e24c65a24f7f45dcfdbb5edb1874c1eb4da Reviewed-by: Yoann Lopes --- src/multimedia/multimedia.pro | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index 8bcfd02d..63c3f19b 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -60,6 +60,11 @@ ANDROID_LIB_DEPENDENCIES = \ lib/libQt5MultimediaQuick_p.so:Qt5Quick ANDROID_BUNDLED_FILES += \ lib/libQt5MultimediaQuick_p.so +ANDROID_PERMISSIONS += \ + android.permission.CAMERA \ + android.permission.RECORD_AUDIO +ANDROID_FEATURES += \ + android.hardware.camera MODULE_PLUGIN_TYPES = \ mediaservice \ audio \ From 66219c9a289db01808a15b6416dea1b4cf9314dd Mon Sep 17 00:00:00 2001 From: Frank Osterfeld Date: Mon, 4 Nov 2013 15:52:43 +0100 Subject: [PATCH 18/20] Support plain QNX in mm-renderer mediaplayer impl On plain QNX, the native events are plain screen_event_t's, instead of being wrapped in bps_event_t. The bps/mm-renderer interface isn't available on QNX, thus those parts are replaced by reading directly from mm-renderer's PPS objects. Change-Id: I38772ddad04432ff099455a730ce0034f07db70d Reviewed-by: Thomas McGuire --- src/plugins/blackberry/blackberry.pro | 17 +- .../blackberry/common/windowgrabber.cpp | 74 ++++--- src/plugins/blackberry/common/windowgrabber.h | 2 + .../mediaplayer/bbmediaplayercontrol.cpp | 136 ++++++------ .../mediaplayer/bbmediaplayercontrol.h | 27 ++- .../mediaplayer/bbmediaplayerservice.cpp | 10 +- .../bbplayervideorenderercontrol.h | 1 - .../mediaplayer/bbvideowindowcontrol.cpp | 63 +++--- .../mediaplayer/bbvideowindowcontrol.h | 3 +- .../mediaplayer/bpsmediaplayercontrol.cpp | 117 ++++++++++ .../mediaplayer/bpsmediaplayercontrol.h | 66 ++++++ .../blackberry/mediaplayer/mediaplayer.pri | 10 + .../mediaplayer/ppsmediaplayercontrol.cpp | 199 ++++++++++++++++++ .../mediaplayer/ppsmediaplayercontrol.h | 75 +++++++ .../blackberry/neutrino_mediaservice.json | 4 + .../blackberry/neutrinoserviceplugin.cpp | 70 ++++++ .../blackberry/neutrinoserviceplugin.h | 65 ++++++ src/plugins/plugins.pro | 5 +- 18 files changed, 785 insertions(+), 159 deletions(-) create mode 100644 src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp create mode 100644 src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h create mode 100644 src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp create mode 100644 src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h create mode 100644 src/plugins/blackberry/neutrino_mediaservice.json create mode 100644 src/plugins/blackberry/neutrinoserviceplugin.cpp create mode 100644 src/plugins/blackberry/neutrinoserviceplugin.h diff --git a/src/plugins/blackberry/blackberry.pro b/src/plugins/blackberry/blackberry.pro index e0a6233c..fa1d07f8 100644 --- a/src/plugins/blackberry/blackberry.pro +++ b/src/plugins/blackberry/blackberry.pro @@ -7,13 +7,16 @@ load(qt_plugin) LIBS += -lscreen -HEADERS += bbserviceplugin.h -SOURCES += bbserviceplugin.cpp - include(common/common.pri) - -include(camera/camera.pri) - include(mediaplayer/mediaplayer.pri) -OTHER_FILES += blackberry_mediaservice.json +blackberry { + include(camera/camera.pri) + HEADERS += bbserviceplugin.h + SOURCES += bbserviceplugin.cpp + OTHER_FILES += blackberry_mediaservice.json +} else { + HEADERS += neutrinoserviceplugin.h + SOURCES += neutrinoserviceplugin.cpp + OTHER_FILES += neutrino_mediaservice.json +} diff --git a/src/plugins/blackberry/common/windowgrabber.cpp b/src/plugins/blackberry/common/windowgrabber.cpp index 144b5a69..5ed54b87 100644 --- a/src/plugins/blackberry/common/windowgrabber.cpp +++ b/src/plugins/blackberry/common/windowgrabber.cpp @@ -47,7 +47,10 @@ #include #include +#ifdef Q_OS_BLACKBERRY +#include #include +#endif #include QT_BEGIN_NAMESPACE @@ -232,40 +235,55 @@ void WindowGrabber::resume() m_timer.start(); } -bool WindowGrabber::nativeEventFilter(const QByteArray&, void *message, long*) +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; + } + + if (m_windowId == idString) { + m_window = window; + start(); + } + + return false; +} + +bool WindowGrabber::nativeEventFilter(const QByteArray &eventType, void *message, long*) +{ +#ifdef Q_OS_BLACKBERRY + Q_UNUSED(eventType) bps_event_t * const event = static_cast(message); if (event && bps_event_get_domain(event) == screen_get_domain()) { const screen_event_t screen_event = screen_event_get_event(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; - } - - if (m_windowId == idString) { - m_window = window; - start(); - } + return handleScreenEvent(screen_event); } +#else + if (eventType == "screen_event_t") { + const screen_event_t event = static_cast(message); + return handleScreenEvent(event); + } +#endif return false; } diff --git a/src/plugins/blackberry/common/windowgrabber.h b/src/plugins/blackberry/common/windowgrabber.h index f8e3686a..7ec4202a 100644 --- a/src/plugins/blackberry/common/windowgrabber.h +++ b/src/plugins/blackberry/common/windowgrabber.h @@ -69,6 +69,8 @@ public: bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; + bool handleScreenEvent(screen_event_t event); + QByteArray windowGroupId() const; signals: diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp b/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp index c7a0fdd0..6304b66d 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp +++ b/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp @@ -49,8 +49,7 @@ #include #include #include -#include -#include + #include #include #include @@ -69,7 +68,6 @@ BbMediaPlayerControl::BbMediaPlayerControl(QObject *parent) m_muted(false), m_rate(1), m_id(-1), - m_eventMonitor(0), m_position(0), m_mediaStatus(QMediaPlayer::NoMedia), m_playAfterMediaLoaded(false), @@ -81,10 +79,9 @@ BbMediaPlayerControl::BbMediaPlayerControl(QObject *parent) m_loadingTimer.setInterval(0); connect(&m_loadingTimer, SIGNAL(timeout()), this, SLOT(continueLoadMedia())); QCoreApplication::eventDispatcher()->installNativeEventFilter(this); - openConnection(); } -BbMediaPlayerControl::~BbMediaPlayerControl() +void BbMediaPlayerControl::destroy() { stop(); detach(); @@ -111,19 +108,41 @@ void BbMediaPlayerControl::openConnection() return; } - m_eventMonitor = mmrenderer_request_events(m_contextName.toLatin1(), 0, m_id); - if (!m_eventMonitor) { - qDebug() << "Unable to request multimedia events"; - emit error(0, "Unable to request multimedia events"); + startMonitoring(m_id, m_contextName); +} + +void BbMediaPlayerControl::handleMmStatusUpdate(qint64 newPosition) +{ + // Prevent spurious position change events from overriding our own position, for example + // when setting the position to 0 in stop(). + // Also, don't change the position while we're loading the media, as then play() would + // set a wrong initial position. + if (m_state != QMediaPlayer::PlayingState || + m_mediaStatus == QMediaPlayer::LoadingMedia || + m_mediaStatus == QMediaPlayer::NoMedia || + m_mediaStatus == QMediaPlayer::InvalidMedia) + return; + + setMmPosition(newPosition); +} + +void BbMediaPlayerControl::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, souch as calling mmr_stop() ourselves and + // mmr_input_attach(). + if (m_stopEventsToIgnore > 0) { + --m_stopEventsToIgnore; + } else { + setMediaStatus(QMediaPlayer::EndOfMedia); + stopInternal(IgnoreMmRenderer); } } void BbMediaPlayerControl::closeConnection() { - if (m_eventMonitor) { - mmrenderer_stop_events(m_eventMonitor); - m_eventMonitor = 0; - } + stopMonitoring(); if (m_context) { mmr_context_destroy(m_context); @@ -468,6 +487,16 @@ void BbMediaPlayerControl::continueLoadMedia() play(); } +QString BbMediaPlayerControl::contextName() const +{ + return m_contextName; +} + +BbVideoWindowControl *BbMediaPlayerControl::videoWindowControl() const +{ + return m_videoWindowControl; +} + void BbMediaPlayerControl::play() { if (m_playAfterMediaLoaded) @@ -526,6 +555,11 @@ void BbMediaPlayerControl::stop() stopInternal(StopMmRenderer); } +BbPlayerVideoRendererControl *BbMediaPlayerControl::videoRendererControl() const +{ + return m_videoRendererControl; +} + void BbMediaPlayerControl::setVideoRendererControl(BbPlayerVideoRendererControl *videoControl) { m_videoRendererControl = videoControl; @@ -541,71 +575,25 @@ void BbMediaPlayerControl::setMetaDataReaderControl(BbMetaDataReaderControl *met m_metaDataReaderControl = metaDataReaderControl; } -bool BbMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void *message, long *result) +void BbMediaPlayerControl::setMmPosition(qint64 newPosition) { - Q_UNUSED(eventType); - Q_UNUSED(result); + if (newPosition != 0 && newPosition != m_position) { + m_position = newPosition; + emit positionChanged(m_position); + } +} - bps_event_t * const event = static_cast(message); - if (!event || - (bps_event_get_domain(event) != mmrenderer_get_domain() && - bps_event_get_domain(event) != screen_get_domain())) - return false; - - if (m_videoWindowControl) - m_videoWindowControl->bpsEventHandler(event); - - if (bps_event_get_domain(event) == mmrenderer_get_domain()) { - if (bps_event_get_code(event) == MMRENDERER_STATE_CHANGE) { - const mmrenderer_state_t newState = mmrenderer_event_get_state(event); - if (newState == MMR_STOPPED) { - - // 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, souch as calling mmr_stop() ourselves and - // mmr_input_attach(). - if (m_stopEventsToIgnore > 0) { - --m_stopEventsToIgnore; - } else { - setMediaStatus(QMediaPlayer::EndOfMedia); - stopInternal(IgnoreMmRenderer); - } - return false; - } - } - - if (bps_event_get_code(event) == MMRENDERER_STATUS_UPDATE) { - - // Prevent spurious position change events from overriding our own position, for example - // when setting the position to 0 in stop(). - // Also, don't change the position while we're loading the media, as then play() would - // set a wrong initial position. - if (m_state != QMediaPlayer::PlayingState || - m_mediaStatus == QMediaPlayer::LoadingMedia || - m_mediaStatus == QMediaPlayer::NoMedia || - m_mediaStatus == QMediaPlayer::InvalidMedia) - return false; - - const qint64 newPosition = QString::fromLatin1(mmrenderer_event_get_position(event)).toLongLong(); - if (newPosition != 0 && newPosition != m_position) { - m_position = newPosition; - emit positionChanged(m_position); - } - - const QString bufferStatus = QString::fromLatin1(mmrenderer_event_get_bufferlevel(event)); - const int slashPos = bufferStatus.indexOf('/'); - if (slashPos != -1) { - const int fill = bufferStatus.left(slashPos).toInt(); - const int capacity = bufferStatus.mid(slashPos + 1).toInt(); - if (capacity != 0) { - m_bufferStatus = fill / static_cast(capacity) * 100.0f; - emit bufferStatusChanged(m_bufferStatus); - } - } +void BbMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus) +{ + const int slashPos = bufferStatus.indexOf('/'); + if (slashPos != -1) { + const int fill = bufferStatus.left(slashPos).toInt(); + const int capacity = bufferStatus.mid(slashPos + 1).toInt(); + if (capacity != 0) { + m_bufferStatus = fill / static_cast(capacity) * 100.0f; + emit bufferStatusChanged(m_bufferStatus); } } - - return false; } void BbMediaPlayerControl::updateMetaData() diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h b/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h index 16505fd5..6d6f5e81 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h +++ b/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h @@ -47,7 +47,6 @@ #include #include -struct bps_event_t; typedef struct mmr_connection mmr_connection_t; typedef struct mmr_context mmr_context_t; typedef struct mmrenderer_monitor mmrenderer_monitor_t; @@ -63,7 +62,6 @@ class BbMediaPlayerControl : public QMediaPlayerControl, public QAbstractNativeE Q_OBJECT public: explicit BbMediaPlayerControl(QObject *parent = 0); - ~BbMediaPlayerControl(); QMediaPlayer::State state() const Q_DECL_OVERRIDE; @@ -100,25 +98,39 @@ public: void pause() Q_DECL_OVERRIDE; void stop() Q_DECL_OVERRIDE; + BbPlayerVideoRendererControl *videoRendererControl() const; void setVideoRendererControl(BbPlayerVideoRendererControl *videoControl); + + BbVideoWindowControl *videoWindowControl() const; void setVideoWindowControl(BbVideoWindowControl *videoControl); void setMetaDataReaderControl(BbMetaDataReaderControl *metaDataReaderControl); - bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; + +protected: + virtual void startMonitoring(int contextId, const QString &contextName) = 0; + virtual void stopMonitoring() = 0; + + QString contextName() const; + void openConnection(); + void emitMmError(const QString &msg); + void emitPError(const QString &msg); + void setMmPosition(qint64 newPosition); + void setMmBufferStatus(const QString &bufferStatus); + void handleMmStopped(); + void handleMmStatusUpdate(qint64 position); + + // must be called from subclass dtors (calls virtual function stopMonitoring()) + void destroy(); private Q_SLOTS: void continueLoadMedia(); private: QByteArray resourcePathForUrl(const QUrl &url); - void openConnection(); void closeConnection(); void attach(); void detach(); void updateMetaData(); - void emitMmError(const QString &msg); - void emitPError(const QString &msg); - // All these set the specified value to the backend, but neither emit changed signals // nor change the member value. void setVolumeInternal(int newVolume); @@ -145,7 +157,6 @@ private: QPointer m_metaDataReaderControl; BbMetaData m_metaData; int m_id; - mmrenderer_monitor_t *m_eventMonitor; qint64 m_position; QMediaPlayer::MediaStatus m_mediaStatus; bool m_playAfterMediaLoaded; diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp b/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp index 5846cc02..5eb2ae6a 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp +++ b/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp @@ -46,6 +46,14 @@ #include "bbutil.h" #include "bbvideowindowcontrol.h" +#ifdef Q_OS_BLACKBERRY +#include "bpsmediaplayercontrol.h" +typedef BpsMediaPlayerControl PlatformSpecificMediaPlayerControl; +#else +#include "ppsmediaplayercontrol.h" +typedef PpsMediaPlayerControl PlatformSpecificMediaPlayerControl; +#endif + QT_BEGIN_NAMESPACE BbMediaPlayerService::BbMediaPlayerService(QObject *parent) @@ -72,7 +80,7 @@ QMediaControl *BbMediaPlayerService::requestControl(const char *name) { if (qstrcmp(name, QMediaPlayerControl_iid) == 0) { if (!m_mediaPlayerControl) { - m_mediaPlayerControl = new BbMediaPlayerControl(); + m_mediaPlayerControl = new PlatformSpecificMediaPlayerControl; updateControls(); } return m_mediaPlayerControl; diff --git a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h b/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h index fff80dfe..a2deaa27 100644 --- a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h +++ b/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h @@ -46,7 +46,6 @@ #include typedef struct mmr_context mmr_context_t; -struct bps_event_t; QT_BEGIN_NAMESPACE diff --git a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp b/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp index 8c1ca19d..28029c9b 100644 --- a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp +++ b/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp @@ -46,7 +46,6 @@ #include #include #include -#include QT_BEGIN_NAMESPACE @@ -368,43 +367,39 @@ void BbVideoWindowControl::setMetaData(const BbMetaData &metaData) updateVideoPosition(); } -void BbVideoWindowControl::bpsEventHandler(bps_event_t *event) +void BbVideoWindowControl::screenEventHandler(const screen_event_t &screen_event) { - if (event && bps_event_get_domain(event) == screen_get_domain()) { - const screen_event_t screen_event = screen_event_get_event(event); + int eventType; + if (screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &eventType) != 0) { + perror("BbVideoWindowControl: Failed to query screen event type"); + return; + } - int eventType; - if (screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &eventType) != 0) { - perror("BbVideoWindowControl: Failed to query screen event type"); + 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("BbVideoWindowControl: 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("BbVideoWindowControl: 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("BbVideoWindowControl: Failed to make window visible"); 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("BbVideoWindowControl: 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("BbVideoWindowControl: 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("BbVideoWindowControl: Failed to make window visible"); - return; - } - } } } diff --git a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h b/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h index 81bf7968..98751d3e 100644 --- a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h +++ b/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h @@ -46,7 +46,6 @@ #include typedef struct mmr_context mmr_context_t; -struct bps_event_t; QT_BEGIN_NAMESPACE @@ -91,7 +90,7 @@ public: void detachDisplay(); void attachDisplay(mmr_context_t *context); void setMetaData(const BbMetaData &metaData); - void bpsEventHandler(bps_event_t *event); + void screenEventHandler(const screen_event_t &event); private: QWindow *findWindow(WId id) const; diff --git a/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp b/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp new file mode 100644 index 00000000..7345d8a3 --- /dev/null +++ b/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "bpsmediaplayercontrol.h" +#include "bbvideowindowcontrol.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +BpsMediaPlayerControl::BpsMediaPlayerControl(QObject *parent) + : BbMediaPlayerControl(parent), + m_eventMonitor(0) +{ + openConnection(); +} + +BpsMediaPlayerControl::~BpsMediaPlayerControl() +{ + destroy(); +} + +void BpsMediaPlayerControl::startMonitoring(int contextId, const QString &contextName) +{ + m_eventMonitor = mmrenderer_request_events(contextName.toLatin1().constData(), 0, contextId); + if (!m_eventMonitor) { + qDebug() << "Unable to request multimedia events"; + emit error(0, "Unable to request multimedia events"); + } +} + +void BpsMediaPlayerControl::stopMonitoring() +{ + if (m_eventMonitor) { + mmrenderer_stop_events(m_eventMonitor); + m_eventMonitor = 0; + } +} + +bool BpsMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void *message, long *result) +{ + Q_UNUSED(result) + Q_UNUSED(eventType) + + bps_event_t * const event = static_cast(message); + if (!event || + (bps_event_get_domain(event) != mmrenderer_get_domain() && + bps_event_get_domain(event) != screen_get_domain())) + return false; + + if (event && bps_event_get_domain(event) == screen_get_domain()) { + const screen_event_t screen_event = screen_event_get_event(event); + if (BbVideoWindowControl *control = videoWindowControl()) + control->screenEventHandler(screen_event); + } + + if (bps_event_get_domain(event) == mmrenderer_get_domain()) { + if (bps_event_get_code(event) == MMRENDERER_STATE_CHANGE) { + const mmrenderer_state_t newState = mmrenderer_event_get_state(event); + if (newState == MMR_STOPPED) { + handleMmStopped(); + return false; + } + } + + if (bps_event_get_code(event) == MMRENDERER_STATUS_UPDATE) { + const qint64 newPosition = QString::fromLatin1(mmrenderer_event_get_position(event)).toLongLong(); + handleMmStatusUpdate(newPosition); + + const QString bufferStatus = QString::fromLatin1(mmrenderer_event_get_bufferlevel(event)); + setMmBufferStatus(bufferStatus); + } + } + + return false; +} + +QT_END_NAMESPACE diff --git a/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h b/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h new file mode 100644 index 00000000..a2d4e095 --- /dev/null +++ b/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef BPSMEDIAPLAYERCONTROL_H +#define BPSMEDIAPLAYERCONTROL_H + +#include "bbmediaplayercontrol.h" + +QT_BEGIN_NAMESPACE + +class BpsMediaPlayerControl Q_DECL_FINAL : public BbMediaPlayerControl +{ + Q_OBJECT +public: + explicit BpsMediaPlayerControl(QObject *parent = 0); + ~BpsMediaPlayerControl(); + + void startMonitoring(int contextId, const QString &contextName) Q_DECL_OVERRIDE; + void stopMonitoring() Q_DECL_OVERRIDE; + + bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; + +private: + mmrenderer_monitor_t *m_eventMonitor; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/blackberry/mediaplayer/mediaplayer.pri b/src/plugins/blackberry/mediaplayer/mediaplayer.pri index 065c799a..c5d012e5 100644 --- a/src/plugins/blackberry/mediaplayer/mediaplayer.pri +++ b/src/plugins/blackberry/mediaplayer/mediaplayer.pri @@ -19,3 +19,13 @@ SOURCES += \ $$PWD/bbvideowindowcontrol.cpp LIBS += -lmmrndclient -lstrm + +blackberry { + HEADERS += $$PWD/bpsmediaplayercontrol.h + SOURCES += $$PWD/bpsmediaplayercontrol.cpp +} else { + HEADERS += $$PWD/ppsmediaplayercontrol.h + SOURCES += $$PWD/ppsmediaplayercontrol.cpp + QT += core-private + LIBS += -lpps +} diff --git a/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp b/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp new file mode 100644 index 00000000..889819b5 --- /dev/null +++ b/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "ppsmediaplayercontrol.h" +#include "bbvideowindowcontrol.h" + +#include +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +PpsMediaPlayerControl::PpsMediaPlayerControl(QObject *parent) + : BbMediaPlayerControl(parent), + m_ppsStatusNotifier(0), + m_ppsStatusFd(-1), + m_ppsStateNotifier(0), + m_ppsStateFd(-1) + , m_previouslySeenState("STOPPED") +{ + openConnection(); +} + +PpsMediaPlayerControl::~PpsMediaPlayerControl() +{ + destroy(); +} + +void PpsMediaPlayerControl::startMonitoring(int, const QString &contextName) +{ + const QString ppsContextPath = QStringLiteral("/pps/services/multimedia/renderer/context/%1/").arg(contextName); + const QString ppsStatusPath = ppsContextPath + QStringLiteral("/status"); + + Q_ASSERT(m_ppsStatusFd == -1); + errno = 0; + m_ppsStatusFd = qt_safe_open(QFile::encodeName(ppsStatusPath).constData(), O_RDONLY); + if (m_ppsStatusFd == -1) { + emitPError(QStringLiteral("Unable to open %1: %2").arg(ppsStatusPath, qt_error_string(errno))); + return; + } + + Q_ASSERT(!m_ppsStatusNotifier); + m_ppsStatusNotifier = new QSocketNotifier(m_ppsStatusFd, QSocketNotifier::Read); + connect(m_ppsStatusNotifier, SIGNAL(activated(int)), this, SLOT(ppsReadyRead(int))); + + + const QString ppsStatePath = ppsContextPath + QStringLiteral("/state"); + + Q_ASSERT(m_ppsStateFd == -1); + errno = 0; + m_ppsStateFd = qt_safe_open(QFile::encodeName(ppsStatePath).constData(), O_RDONLY); + if (m_ppsStateFd == -1) { + emitPError(QStringLiteral("Unable to open %1: %2").arg(ppsStatePath, qt_error_string(errno))); + return; + } + + Q_ASSERT(!m_ppsStateNotifier); + m_ppsStateNotifier = new QSocketNotifier(m_ppsStateFd, QSocketNotifier::Read); + connect(m_ppsStateNotifier, SIGNAL(activated(int)), this, SLOT(ppsReadyRead(int))); + + //ensure we receive any initial state + ppsReadyRead(m_ppsStatusFd); + ppsReadyRead(m_ppsStateFd); +} + +void PpsMediaPlayerControl::stopMonitoring() +{ + + if (m_ppsStatusFd != -1) { + ::close(m_ppsStatusFd); + m_ppsStatusFd = -1; + } + + delete m_ppsStatusNotifier; + m_ppsStatusNotifier = 0; + + if (m_ppsStateFd != -1) { + ::close(m_ppsStateFd); + m_ppsStateFd = -1; + } + + delete m_ppsStateNotifier; + m_ppsStateNotifier = 0; +} + +bool PpsMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void *message, long *result) +{ + Q_UNUSED(result) + if (eventType == "screen_event_t") { + screen_event_t event = static_cast(message); + if (BbVideoWindowControl *control = videoWindowControl()) + control->screenEventHandler(event); + } + + return false; +} + +void PpsMediaPlayerControl::ppsReadyRead(int fd) +{ + Q_ASSERT(fd == m_ppsStateFd || fd == m_ppsStatusFd); + const int bufferSize = 2048; + char buffer[bufferSize]; + const ssize_t nread = qt_safe_read(fd, buffer, bufferSize - 1); + if (nread < 0) { + //TODO emit error? + } + + if (nread == 0) { + return; + } + + // nread is the real space necessary, not the amount read. + if (static_cast(nread) > bufferSize - 1) { + //TODO emit error? + qCritical("BBMediaPlayerControl: PPS buffer size too short; need %u.", nread + 1); + return; + } + + buffer[nread] = 0; + + pps_decoder_t decoder; + + if (pps_decoder_initialize(&decoder, buffer) != PPS_DECODER_OK) { + //TODO emit error? + qCritical("Could not initialize pps_decoder"); + pps_decoder_cleanup(&decoder); + return; + } + + pps_decoder_push(&decoder, 0); + + const char *value = 0; + if (pps_decoder_get_string(&decoder, "bufferlevel", &value) == PPS_DECODER_OK) { + setMmBufferStatus(QString::fromLatin1(value)); + } + + if (pps_decoder_get_string(&decoder, "state", &value) == PPS_DECODER_OK) { + const QByteArray state = value; + if (state != m_previouslySeenState && state == "STOPPED") + handleMmStopped(); + m_previouslySeenState = state; + } + + if (pps_decoder_get_string(&decoder, "position", &value) == PPS_DECODER_OK) { + const QByteArray valueBa = QByteArray(value); + bool ok; + const qint64 position = valueBa.toLongLong(&ok); + if (!ok) { + qCritical("Could not parse position from '%s'", valueBa.constData()); + } else { + setMmPosition(position); + } + } + + pps_decoder_cleanup(&decoder); +} + +QT_END_NAMESPACE diff --git a/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h b/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h new file mode 100644 index 00000000..20da6396 --- /dev/null +++ b/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef PPSMEDIAPLAYERCONTROL_H +#define PPSMEDIAPLAYERCONTROL_H + +#include "bbmediaplayercontrol.h" + +QT_BEGIN_NAMESPACE + +class QSocketNotifier; + +class PpsMediaPlayerControl Q_DECL_FINAL : public BbMediaPlayerControl +{ + Q_OBJECT +public: + explicit PpsMediaPlayerControl(QObject *parent = 0); + ~PpsMediaPlayerControl(); + + void startMonitoring(int contextId, const QString &contextName) Q_DECL_OVERRIDE; + void stopMonitoring() Q_DECL_OVERRIDE; + + bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void ppsReadyRead(int fd); + +private: + QSocketNotifier *m_ppsStatusNotifier; + int m_ppsStatusFd; + QSocketNotifier *m_ppsStateNotifier; + int m_ppsStateFd; + QByteArray m_previouslySeenState; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/blackberry/neutrino_mediaservice.json b/src/plugins/blackberry/neutrino_mediaservice.json new file mode 100644 index 00000000..919368d7 --- /dev/null +++ b/src/plugins/blackberry/neutrino_mediaservice.json @@ -0,0 +1,4 @@ +{ + "Keys": ["neutrinomultimedia"], + "Services": ["org.qt-project.qt.mediaplayer"] +} diff --git a/src/plugins/blackberry/neutrinoserviceplugin.cpp b/src/plugins/blackberry/neutrinoserviceplugin.cpp new file mode 100644 index 00000000..9ceae7d2 --- /dev/null +++ b/src/plugins/blackberry/neutrinoserviceplugin.cpp @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "neutrinoserviceplugin.h" + +#include "bbmediaplayerservice.h" + +QT_BEGIN_NAMESPACE + +NeutrinoServicePlugin::NeutrinoServicePlugin() +{ +} + +QMediaService *NeutrinoServicePlugin::create(const QString &key) +{ + if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) + return new BbMediaPlayerService(); + + 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/blackberry/neutrinoserviceplugin.h b/src/plugins/blackberry/neutrinoserviceplugin.h new file mode 100644 index 00000000..2fc28233 --- /dev/null +++ b/src/plugins/blackberry/neutrinoserviceplugin.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef NEUTRINOSERVICEPLUGIN_H +#define NEUTRINOSERVICEPLUGIN_H + +#include + +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) Q_DECL_OVERRIDE; + void release(QMediaService *service) Q_DECL_OVERRIDE; + QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const Q_DECL_OVERRIDE; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 20b0ccd9..d5e3e80d 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -12,11 +12,8 @@ android { SUBDIRS += android opensles } -blackberry { - SUBDIRS += blackberry -} - qnx { + SUBDIRS += blackberry SUBDIRS += audiocapture qnx } From 99667804e1c64cace1246d4ce342a218fc1fb1ba Mon Sep 17 00:00:00 2001 From: Frank Osterfeld Date: Tue, 5 Nov 2013 14:28:08 +0100 Subject: [PATCH 19/20] QNX: Restructure plugins Now that the MmRenderer implementation is ported to plain QNX, rename the directories and files accordingly: "blackberry" becomes "qnx", replace the Bb prefix with MmRenderer for classes concerned with mm-renderer. The legacy alsa support for plain qnx is now "qnx-audio". Change-Id: I6abd98ecdd713b2d5e554d42224dc30f13772f43 Reviewed-by: Thomas McGuire --- src/plugins/blackberry/blackberry.pro | 22 ---- .../blackberry/mediaplayer/mediaplayer.pri | 31 ----- src/plugins/plugins.pro | 7 +- .../{qnx => qnx-audio}/audio/audio.pro | 0 .../{qnx => qnx-audio}/audio/qnx_audio.json | 0 .../audio/qnxaudiodeviceinfo.cpp | 0 .../audio/qnxaudiodeviceinfo.h | 0 .../audio/qnxaudioinput.cpp | 0 .../{qnx => qnx-audio}/audio/qnxaudioinput.h | 0 .../audio/qnxaudiooutput.cpp | 0 .../{qnx => qnx-audio}/audio/qnxaudiooutput.h | 0 .../audio/qnxaudioplugin.cpp | 0 .../{qnx => qnx-audio}/audio/qnxaudioplugin.h | 0 .../audio/qnxaudioutils.cpp | 0 .../{qnx => qnx-audio}/audio/qnxaudioutils.h | 0 src/plugins/qnx-audio/qnx-audio.pro | 3 + .../{blackberry => qnx}/bbserviceplugin.cpp | 2 +- .../{blackberry => qnx}/bbserviceplugin.h | 0 .../blackberry_mediaservice.json | 0 .../bbcameraaudioencodersettingscontrol.cpp | 0 .../bbcameraaudioencodersettingscontrol.h | 0 .../bbcameracapturebufferformatcontrol.cpp | 0 .../bbcameracapturebufferformatcontrol.h | 0 .../bbcameracapturedestinationcontrol.cpp | 0 .../bbcameracapturedestinationcontrol.h | 0 .../camera/bbcameracontrol.cpp | 0 .../camera/bbcameracontrol.h | 0 .../camera/bbcameraexposurecontrol.cpp | 0 .../camera/bbcameraexposurecontrol.h | 0 .../camera/bbcameraflashcontrol.cpp | 0 .../camera/bbcameraflashcontrol.h | 0 .../camera/bbcamerafocuscontrol.cpp | 0 .../camera/bbcamerafocuscontrol.h | 0 .../camera/bbcameraimagecapturecontrol.cpp | 0 .../camera/bbcameraimagecapturecontrol.h | 0 .../camera/bbcameraimageprocessingcontrol.cpp | 0 .../camera/bbcameraimageprocessingcontrol.h | 0 .../camera/bbcameralockscontrol.cpp | 0 .../camera/bbcameralockscontrol.h | 0 .../camera/bbcameramediarecordercontrol.cpp | 0 .../camera/bbcameramediarecordercontrol.h | 0 .../camera/bbcameraorientationhandler.cpp | 0 .../camera/bbcameraorientationhandler.h | 0 .../camera/bbcameraservice.cpp | 0 .../camera/bbcameraservice.h | 0 .../camera/bbcamerasession.cpp | 0 .../camera/bbcamerasession.h | 0 .../bbcameravideoencodersettingscontrol.cpp | 0 .../bbcameravideoencodersettingscontrol.h | 0 .../bbcameraviewfindersettingscontrol.cpp | 0 .../bbcameraviewfindersettingscontrol.h | 0 .../camera/bbcamerazoomcontrol.cpp | 0 .../camera/bbcamerazoomcontrol.h | 0 .../camera/bbimageencodercontrol.cpp | 0 .../camera/bbimageencodercontrol.h | 0 .../camera/bbmediastoragelocation.cpp | 0 .../camera/bbmediastoragelocation.h | 0 .../camera/bbvideodeviceselectorcontrol.cpp | 0 .../camera/bbvideodeviceselectorcontrol.h | 0 .../camera/bbvideorenderercontrol.cpp | 0 .../camera/bbvideorenderercontrol.h | 0 .../{blackberry => qnx}/camera/camera.pri | 0 .../{blackberry => qnx}/common/common.pri | 0 .../common/windowgrabber.cpp | 0 .../common/windowgrabber.h | 0 .../mediaplayer/bpsmediaplayercontrol.cpp | 6 +- .../mediaplayer/bpsmediaplayercontrol.h | 4 +- src/plugins/qnx/mediaplayer/mediaplayer.pri | 31 +++++ .../mmrenderermediaplayercontrol.cpp} | 110 +++++++++--------- .../mmrenderermediaplayercontrol.h} | 34 +++--- .../mmrenderermediaplayerservice.cpp} | 28 ++--- .../mmrenderermediaplayerservice.h} | 26 ++--- .../mediaplayer/mmrenderermetadata.cpp} | 42 +++---- .../mediaplayer/mmrenderermetadata.h} | 8 +- .../mmrenderermetadatareadercontrol.cpp} | 14 +-- .../mmrenderermetadatareadercontrol.h} | 14 +-- .../mmrendererplayervideorenderercontrol.cpp} | 28 ++--- .../mmrendererplayervideorenderercontrol.h} | 10 +- .../mediaplayer/mmrendererutil.cpp} | 2 +- .../mediaplayer/mmrendererutil.h} | 4 +- .../mmrenderervideowindowcontrol.cpp} | 84 ++++++------- .../mmrenderervideowindowcontrol.h} | 16 +-- .../mediaplayer/ppsmediaplayercontrol.cpp | 6 +- .../mediaplayer/ppsmediaplayercontrol.h | 4 +- .../neutrino_mediaservice.json | 0 .../neutrinoserviceplugin.cpp | 4 +- .../neutrinoserviceplugin.h | 0 src/plugins/qnx/qnx.pro | 23 +++- 88 files changed, 283 insertions(+), 280 deletions(-) delete mode 100644 src/plugins/blackberry/blackberry.pro delete mode 100644 src/plugins/blackberry/mediaplayer/mediaplayer.pri rename src/plugins/{qnx => qnx-audio}/audio/audio.pro (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnx_audio.json (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudiodeviceinfo.cpp (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudiodeviceinfo.h (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudioinput.cpp (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudioinput.h (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudiooutput.cpp (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudiooutput.h (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudioplugin.cpp (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudioplugin.h (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudioutils.cpp (100%) rename src/plugins/{qnx => qnx-audio}/audio/qnxaudioutils.h (100%) create mode 100644 src/plugins/qnx-audio/qnx-audio.pro rename src/plugins/{blackberry => qnx}/bbserviceplugin.cpp (98%) rename src/plugins/{blackberry => qnx}/bbserviceplugin.h (100%) rename src/plugins/{blackberry => qnx}/blackberry_mediaservice.json (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraaudioencodersettingscontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraaudioencodersettingscontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameracapturebufferformatcontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameracapturebufferformatcontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameracapturedestinationcontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameracapturedestinationcontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameracontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameracontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraexposurecontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraexposurecontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraflashcontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraflashcontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcamerafocuscontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcamerafocuscontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraimagecapturecontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraimagecapturecontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraimageprocessingcontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraimageprocessingcontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameralockscontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameralockscontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameramediarecordercontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameramediarecordercontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraorientationhandler.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraorientationhandler.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraservice.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraservice.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcamerasession.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcamerasession.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameravideoencodersettingscontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameravideoencodersettingscontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraviewfindersettingscontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcameraviewfindersettingscontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbcamerazoomcontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbcamerazoomcontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbimageencodercontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbimageencodercontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbmediastoragelocation.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbmediastoragelocation.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbvideodeviceselectorcontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbvideodeviceselectorcontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/bbvideorenderercontrol.cpp (100%) rename src/plugins/{blackberry => qnx}/camera/bbvideorenderercontrol.h (100%) rename src/plugins/{blackberry => qnx}/camera/camera.pri (100%) rename src/plugins/{blackberry => qnx}/common/common.pri (100%) rename src/plugins/{blackberry => qnx}/common/windowgrabber.cpp (100%) rename src/plugins/{blackberry => qnx}/common/windowgrabber.h (100%) rename src/plugins/{blackberry => qnx}/mediaplayer/bpsmediaplayercontrol.cpp (96%) rename src/plugins/{blackberry => qnx}/mediaplayer/bpsmediaplayercontrol.h (95%) create mode 100644 src/plugins/qnx/mediaplayer/mediaplayer.pri rename src/plugins/{blackberry/mediaplayer/bbmediaplayercontrol.cpp => qnx/mediaplayer/mmrenderermediaplayercontrol.cpp} (81%) rename src/plugins/{blackberry/mediaplayer/bbmediaplayercontrol.h => qnx/mediaplayer/mmrenderermediaplayercontrol.h} (83%) rename src/plugins/{blackberry/mediaplayer/bbmediaplayerservice.cpp => qnx/mediaplayer/mmrenderermediaplayerservice.cpp} (85%) rename src/plugins/{blackberry/mediaplayer/bbmediaplayerservice.h => qnx/mediaplayer/mmrenderermediaplayerservice.h} (77%) rename src/plugins/{blackberry/mediaplayer/bbmetadata.cpp => qnx/mediaplayer/mmrenderermetadata.cpp} (88%) rename src/plugins/{blackberry/mediaplayer/bbmetadata.h => qnx/mediaplayer/mmrenderermetadata.h} (96%) rename src/plugins/{blackberry/mediaplayer/bbmetadatareadercontrol.cpp => qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp} (93%) rename src/plugins/{blackberry/mediaplayer/bbmetadatareadercontrol.h => qnx/mediaplayer/mmrenderermetadatareadercontrol.h} (86%) rename src/plugins/{blackberry/mediaplayer/bbplayervideorenderercontrol.cpp => qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp} (79%) rename src/plugins/{blackberry/mediaplayer/bbplayervideorenderercontrol.h => qnx/mediaplayer/mmrendererplayervideorenderercontrol.h} (90%) rename src/plugins/{blackberry/mediaplayer/bbutil.cpp => qnx/mediaplayer/mmrendererutil.cpp} (99%) rename src/plugins/{blackberry/mediaplayer/bbutil.h => qnx/mediaplayer/mmrendererutil.h} (97%) rename src/plugins/{blackberry/mediaplayer/bbvideowindowcontrol.cpp => qnx/mediaplayer/mmrenderervideowindowcontrol.cpp} (79%) rename src/plugins/{blackberry/mediaplayer/bbvideowindowcontrol.h => qnx/mediaplayer/mmrenderervideowindowcontrol.h} (90%) rename src/plugins/{blackberry => qnx}/mediaplayer/ppsmediaplayercontrol.cpp (97%) rename src/plugins/{blackberry => qnx}/mediaplayer/ppsmediaplayercontrol.h (95%) rename src/plugins/{blackberry => qnx}/neutrino_mediaservice.json (100%) rename src/plugins/{blackberry => qnx}/neutrinoserviceplugin.cpp (96%) rename src/plugins/{blackberry => qnx}/neutrinoserviceplugin.h (100%) diff --git a/src/plugins/blackberry/blackberry.pro b/src/plugins/blackberry/blackberry.pro deleted file mode 100644 index fa1d07f8..00000000 --- a/src/plugins/blackberry/blackberry.pro +++ /dev/null @@ -1,22 +0,0 @@ -TARGET = qtmedia_blackberry -QT += multimedia-private gui-private - -PLUGIN_TYPE=mediaservice -PLUGIN_CLASS_NAME = BbServicePlugin -load(qt_plugin) - -LIBS += -lscreen - -include(common/common.pri) -include(mediaplayer/mediaplayer.pri) - -blackberry { - include(camera/camera.pri) - HEADERS += bbserviceplugin.h - SOURCES += bbserviceplugin.cpp - OTHER_FILES += blackberry_mediaservice.json -} else { - HEADERS += neutrinoserviceplugin.h - SOURCES += neutrinoserviceplugin.cpp - OTHER_FILES += neutrino_mediaservice.json -} diff --git a/src/plugins/blackberry/mediaplayer/mediaplayer.pri b/src/plugins/blackberry/mediaplayer/mediaplayer.pri deleted file mode 100644 index c5d012e5..00000000 --- a/src/plugins/blackberry/mediaplayer/mediaplayer.pri +++ /dev/null @@ -1,31 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/bbmediaplayercontrol.h \ - $$PWD/bbmediaplayerservice.h \ - $$PWD/bbmetadata.h \ - $$PWD/bbmetadatareadercontrol.h \ - $$PWD/bbplayervideorenderercontrol.h \ - $$PWD/bbutil.h \ - $$PWD/bbvideowindowcontrol.h - -SOURCES += \ - $$PWD/bbmediaplayercontrol.cpp \ - $$PWD/bbmediaplayerservice.cpp \ - $$PWD/bbmetadata.cpp \ - $$PWD/bbmetadatareadercontrol.cpp \ - $$PWD/bbplayervideorenderercontrol.cpp \ - $$PWD/bbutil.cpp \ - $$PWD/bbvideowindowcontrol.cpp - -LIBS += -lmmrndclient -lstrm - -blackberry { - HEADERS += $$PWD/bpsmediaplayercontrol.h - SOURCES += $$PWD/bpsmediaplayercontrol.cpp -} else { - HEADERS += $$PWD/ppsmediaplayercontrol.h - SOURCES += $$PWD/ppsmediaplayercontrol.cpp - QT += core-private - LIBS += -lpps -} diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index d5e3e80d..4c70e3d1 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -13,8 +13,11 @@ android { } qnx { - SUBDIRS += blackberry - SUBDIRS += audiocapture qnx + SUBDIRS += qnx audiocapture +} + +qnx:!blackberry { + SUBDIRS += qnx-audio } win32 { diff --git a/src/plugins/qnx/audio/audio.pro b/src/plugins/qnx-audio/audio/audio.pro similarity index 100% rename from src/plugins/qnx/audio/audio.pro rename to src/plugins/qnx-audio/audio/audio.pro diff --git a/src/plugins/qnx/audio/qnx_audio.json b/src/plugins/qnx-audio/audio/qnx_audio.json similarity index 100% rename from src/plugins/qnx/audio/qnx_audio.json rename to src/plugins/qnx-audio/audio/qnx_audio.json diff --git a/src/plugins/qnx/audio/qnxaudiodeviceinfo.cpp b/src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.cpp similarity index 100% rename from src/plugins/qnx/audio/qnxaudiodeviceinfo.cpp rename to src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.cpp diff --git a/src/plugins/qnx/audio/qnxaudiodeviceinfo.h b/src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h similarity index 100% rename from src/plugins/qnx/audio/qnxaudiodeviceinfo.h rename to src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h diff --git a/src/plugins/qnx/audio/qnxaudioinput.cpp b/src/plugins/qnx-audio/audio/qnxaudioinput.cpp similarity index 100% rename from src/plugins/qnx/audio/qnxaudioinput.cpp rename to src/plugins/qnx-audio/audio/qnxaudioinput.cpp diff --git a/src/plugins/qnx/audio/qnxaudioinput.h b/src/plugins/qnx-audio/audio/qnxaudioinput.h similarity index 100% rename from src/plugins/qnx/audio/qnxaudioinput.h rename to src/plugins/qnx-audio/audio/qnxaudioinput.h diff --git a/src/plugins/qnx/audio/qnxaudiooutput.cpp b/src/plugins/qnx-audio/audio/qnxaudiooutput.cpp similarity index 100% rename from src/plugins/qnx/audio/qnxaudiooutput.cpp rename to src/plugins/qnx-audio/audio/qnxaudiooutput.cpp diff --git a/src/plugins/qnx/audio/qnxaudiooutput.h b/src/plugins/qnx-audio/audio/qnxaudiooutput.h similarity index 100% rename from src/plugins/qnx/audio/qnxaudiooutput.h rename to src/plugins/qnx-audio/audio/qnxaudiooutput.h diff --git a/src/plugins/qnx/audio/qnxaudioplugin.cpp b/src/plugins/qnx-audio/audio/qnxaudioplugin.cpp similarity index 100% rename from src/plugins/qnx/audio/qnxaudioplugin.cpp rename to src/plugins/qnx-audio/audio/qnxaudioplugin.cpp diff --git a/src/plugins/qnx/audio/qnxaudioplugin.h b/src/plugins/qnx-audio/audio/qnxaudioplugin.h similarity index 100% rename from src/plugins/qnx/audio/qnxaudioplugin.h rename to src/plugins/qnx-audio/audio/qnxaudioplugin.h diff --git a/src/plugins/qnx/audio/qnxaudioutils.cpp b/src/plugins/qnx-audio/audio/qnxaudioutils.cpp similarity index 100% rename from src/plugins/qnx/audio/qnxaudioutils.cpp rename to src/plugins/qnx-audio/audio/qnxaudioutils.cpp diff --git a/src/plugins/qnx/audio/qnxaudioutils.h b/src/plugins/qnx-audio/audio/qnxaudioutils.h similarity index 100% rename from src/plugins/qnx/audio/qnxaudioutils.h rename to src/plugins/qnx-audio/audio/qnxaudioutils.h diff --git a/src/plugins/qnx-audio/qnx-audio.pro b/src/plugins/qnx-audio/qnx-audio.pro new file mode 100644 index 00000000..3049729b --- /dev/null +++ b/src/plugins/qnx-audio/qnx-audio.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +SUBDIRS = audio diff --git a/src/plugins/blackberry/bbserviceplugin.cpp b/src/plugins/qnx/bbserviceplugin.cpp similarity index 98% rename from src/plugins/blackberry/bbserviceplugin.cpp rename to src/plugins/qnx/bbserviceplugin.cpp index dab3caf9..1a47b866 100644 --- a/src/plugins/blackberry/bbserviceplugin.cpp +++ b/src/plugins/qnx/bbserviceplugin.cpp @@ -58,7 +58,7 @@ QMediaService *BbServicePlugin::create(const QString &key) return new BbCameraService(); if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) - return new BbMediaPlayerService(); + return new MmRendererMediaPlayerService(); return 0; } diff --git a/src/plugins/blackberry/bbserviceplugin.h b/src/plugins/qnx/bbserviceplugin.h similarity index 100% rename from src/plugins/blackberry/bbserviceplugin.h rename to src/plugins/qnx/bbserviceplugin.h diff --git a/src/plugins/blackberry/blackberry_mediaservice.json b/src/plugins/qnx/blackberry_mediaservice.json similarity index 100% rename from src/plugins/blackberry/blackberry_mediaservice.json rename to src/plugins/qnx/blackberry_mediaservice.json diff --git a/src/plugins/blackberry/camera/bbcameraaudioencodersettingscontrol.cpp b/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraaudioencodersettingscontrol.cpp rename to src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameraaudioencodersettingscontrol.h b/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraaudioencodersettingscontrol.h rename to src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h diff --git a/src/plugins/blackberry/camera/bbcameracapturebufferformatcontrol.cpp b/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameracapturebufferformatcontrol.cpp rename to src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameracapturebufferformatcontrol.h b/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameracapturebufferformatcontrol.h rename to src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h diff --git a/src/plugins/blackberry/camera/bbcameracapturedestinationcontrol.cpp b/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameracapturedestinationcontrol.cpp rename to src/plugins/qnx/camera/bbcameracapturedestinationcontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameracapturedestinationcontrol.h b/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameracapturedestinationcontrol.h rename to src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h diff --git a/src/plugins/blackberry/camera/bbcameracontrol.cpp b/src/plugins/qnx/camera/bbcameracontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameracontrol.cpp rename to src/plugins/qnx/camera/bbcameracontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameracontrol.h b/src/plugins/qnx/camera/bbcameracontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameracontrol.h rename to src/plugins/qnx/camera/bbcameracontrol.h diff --git a/src/plugins/blackberry/camera/bbcameraexposurecontrol.cpp b/src/plugins/qnx/camera/bbcameraexposurecontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraexposurecontrol.cpp rename to src/plugins/qnx/camera/bbcameraexposurecontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameraexposurecontrol.h b/src/plugins/qnx/camera/bbcameraexposurecontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraexposurecontrol.h rename to src/plugins/qnx/camera/bbcameraexposurecontrol.h diff --git a/src/plugins/blackberry/camera/bbcameraflashcontrol.cpp b/src/plugins/qnx/camera/bbcameraflashcontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraflashcontrol.cpp rename to src/plugins/qnx/camera/bbcameraflashcontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameraflashcontrol.h b/src/plugins/qnx/camera/bbcameraflashcontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraflashcontrol.h rename to src/plugins/qnx/camera/bbcameraflashcontrol.h diff --git a/src/plugins/blackberry/camera/bbcamerafocuscontrol.cpp b/src/plugins/qnx/camera/bbcamerafocuscontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcamerafocuscontrol.cpp rename to src/plugins/qnx/camera/bbcamerafocuscontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcamerafocuscontrol.h b/src/plugins/qnx/camera/bbcamerafocuscontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcamerafocuscontrol.h rename to src/plugins/qnx/camera/bbcamerafocuscontrol.h diff --git a/src/plugins/blackberry/camera/bbcameraimagecapturecontrol.cpp b/src/plugins/qnx/camera/bbcameraimagecapturecontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraimagecapturecontrol.cpp rename to src/plugins/qnx/camera/bbcameraimagecapturecontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameraimagecapturecontrol.h b/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraimagecapturecontrol.h rename to src/plugins/qnx/camera/bbcameraimagecapturecontrol.h diff --git a/src/plugins/blackberry/camera/bbcameraimageprocessingcontrol.cpp b/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraimageprocessingcontrol.cpp rename to src/plugins/qnx/camera/bbcameraimageprocessingcontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameraimageprocessingcontrol.h b/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraimageprocessingcontrol.h rename to src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h diff --git a/src/plugins/blackberry/camera/bbcameralockscontrol.cpp b/src/plugins/qnx/camera/bbcameralockscontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameralockscontrol.cpp rename to src/plugins/qnx/camera/bbcameralockscontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameralockscontrol.h b/src/plugins/qnx/camera/bbcameralockscontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameralockscontrol.h rename to src/plugins/qnx/camera/bbcameralockscontrol.h diff --git a/src/plugins/blackberry/camera/bbcameramediarecordercontrol.cpp b/src/plugins/qnx/camera/bbcameramediarecordercontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameramediarecordercontrol.cpp rename to src/plugins/qnx/camera/bbcameramediarecordercontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameramediarecordercontrol.h b/src/plugins/qnx/camera/bbcameramediarecordercontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameramediarecordercontrol.h rename to src/plugins/qnx/camera/bbcameramediarecordercontrol.h diff --git a/src/plugins/blackberry/camera/bbcameraorientationhandler.cpp b/src/plugins/qnx/camera/bbcameraorientationhandler.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraorientationhandler.cpp rename to src/plugins/qnx/camera/bbcameraorientationhandler.cpp diff --git a/src/plugins/blackberry/camera/bbcameraorientationhandler.h b/src/plugins/qnx/camera/bbcameraorientationhandler.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraorientationhandler.h rename to src/plugins/qnx/camera/bbcameraorientationhandler.h diff --git a/src/plugins/blackberry/camera/bbcameraservice.cpp b/src/plugins/qnx/camera/bbcameraservice.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraservice.cpp rename to src/plugins/qnx/camera/bbcameraservice.cpp diff --git a/src/plugins/blackberry/camera/bbcameraservice.h b/src/plugins/qnx/camera/bbcameraservice.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraservice.h rename to src/plugins/qnx/camera/bbcameraservice.h diff --git a/src/plugins/blackberry/camera/bbcamerasession.cpp b/src/plugins/qnx/camera/bbcamerasession.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcamerasession.cpp rename to src/plugins/qnx/camera/bbcamerasession.cpp diff --git a/src/plugins/blackberry/camera/bbcamerasession.h b/src/plugins/qnx/camera/bbcamerasession.h similarity index 100% rename from src/plugins/blackberry/camera/bbcamerasession.h rename to src/plugins/qnx/camera/bbcamerasession.h diff --git a/src/plugins/blackberry/camera/bbcameravideoencodersettingscontrol.cpp b/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameravideoencodersettingscontrol.cpp rename to src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameravideoencodersettingscontrol.h b/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameravideoencodersettingscontrol.h rename to src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h diff --git a/src/plugins/blackberry/camera/bbcameraviewfindersettingscontrol.cpp b/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcameraviewfindersettingscontrol.cpp rename to src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcameraviewfindersettingscontrol.h b/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcameraviewfindersettingscontrol.h rename to src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h diff --git a/src/plugins/blackberry/camera/bbcamerazoomcontrol.cpp b/src/plugins/qnx/camera/bbcamerazoomcontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbcamerazoomcontrol.cpp rename to src/plugins/qnx/camera/bbcamerazoomcontrol.cpp diff --git a/src/plugins/blackberry/camera/bbcamerazoomcontrol.h b/src/plugins/qnx/camera/bbcamerazoomcontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbcamerazoomcontrol.h rename to src/plugins/qnx/camera/bbcamerazoomcontrol.h diff --git a/src/plugins/blackberry/camera/bbimageencodercontrol.cpp b/src/plugins/qnx/camera/bbimageencodercontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbimageencodercontrol.cpp rename to src/plugins/qnx/camera/bbimageencodercontrol.cpp diff --git a/src/plugins/blackberry/camera/bbimageencodercontrol.h b/src/plugins/qnx/camera/bbimageencodercontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbimageencodercontrol.h rename to src/plugins/qnx/camera/bbimageencodercontrol.h diff --git a/src/plugins/blackberry/camera/bbmediastoragelocation.cpp b/src/plugins/qnx/camera/bbmediastoragelocation.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbmediastoragelocation.cpp rename to src/plugins/qnx/camera/bbmediastoragelocation.cpp diff --git a/src/plugins/blackberry/camera/bbmediastoragelocation.h b/src/plugins/qnx/camera/bbmediastoragelocation.h similarity index 100% rename from src/plugins/blackberry/camera/bbmediastoragelocation.h rename to src/plugins/qnx/camera/bbmediastoragelocation.h diff --git a/src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.cpp b/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.cpp rename to src/plugins/qnx/camera/bbvideodeviceselectorcontrol.cpp diff --git a/src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.h b/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbvideodeviceselectorcontrol.h rename to src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h diff --git a/src/plugins/blackberry/camera/bbvideorenderercontrol.cpp b/src/plugins/qnx/camera/bbvideorenderercontrol.cpp similarity index 100% rename from src/plugins/blackberry/camera/bbvideorenderercontrol.cpp rename to src/plugins/qnx/camera/bbvideorenderercontrol.cpp diff --git a/src/plugins/blackberry/camera/bbvideorenderercontrol.h b/src/plugins/qnx/camera/bbvideorenderercontrol.h similarity index 100% rename from src/plugins/blackberry/camera/bbvideorenderercontrol.h rename to src/plugins/qnx/camera/bbvideorenderercontrol.h diff --git a/src/plugins/blackberry/camera/camera.pri b/src/plugins/qnx/camera/camera.pri similarity index 100% rename from src/plugins/blackberry/camera/camera.pri rename to src/plugins/qnx/camera/camera.pri diff --git a/src/plugins/blackberry/common/common.pri b/src/plugins/qnx/common/common.pri similarity index 100% rename from src/plugins/blackberry/common/common.pri rename to src/plugins/qnx/common/common.pri diff --git a/src/plugins/blackberry/common/windowgrabber.cpp b/src/plugins/qnx/common/windowgrabber.cpp similarity index 100% rename from src/plugins/blackberry/common/windowgrabber.cpp rename to src/plugins/qnx/common/windowgrabber.cpp diff --git a/src/plugins/blackberry/common/windowgrabber.h b/src/plugins/qnx/common/windowgrabber.h similarity index 100% rename from src/plugins/blackberry/common/windowgrabber.h rename to src/plugins/qnx/common/windowgrabber.h diff --git a/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/bpsmediaplayercontrol.cpp similarity index 96% rename from src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp rename to src/plugins/qnx/mediaplayer/bpsmediaplayercontrol.cpp index 7345d8a3..dde03ad5 100644 --- a/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.cpp +++ b/src/plugins/qnx/mediaplayer/bpsmediaplayercontrol.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "bpsmediaplayercontrol.h" -#include "bbvideowindowcontrol.h" +#include "mmrenderervideowindowcontrol.h" #include #include @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE BpsMediaPlayerControl::BpsMediaPlayerControl(QObject *parent) - : BbMediaPlayerControl(parent), + : MmRendererMediaPlayerControl(parent), m_eventMonitor(0) { openConnection(); @@ -89,7 +89,7 @@ bool BpsMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void if (event && bps_event_get_domain(event) == screen_get_domain()) { const screen_event_t screen_event = screen_event_get_event(event); - if (BbVideoWindowControl *control = videoWindowControl()) + if (MmRendererVideoWindowControl *control = videoWindowControl()) control->screenEventHandler(screen_event); } diff --git a/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h b/src/plugins/qnx/mediaplayer/bpsmediaplayercontrol.h similarity index 95% rename from src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h rename to src/plugins/qnx/mediaplayer/bpsmediaplayercontrol.h index a2d4e095..f0c13234 100644 --- a/src/plugins/blackberry/mediaplayer/bpsmediaplayercontrol.h +++ b/src/plugins/qnx/mediaplayer/bpsmediaplayercontrol.h @@ -41,11 +41,11 @@ #ifndef BPSMEDIAPLAYERCONTROL_H #define BPSMEDIAPLAYERCONTROL_H -#include "bbmediaplayercontrol.h" +#include "mmrenderermediaplayercontrol.h" QT_BEGIN_NAMESPACE -class BpsMediaPlayerControl Q_DECL_FINAL : public BbMediaPlayerControl +class BpsMediaPlayerControl Q_DECL_FINAL : public MmRendererMediaPlayerControl { Q_OBJECT public: diff --git a/src/plugins/qnx/mediaplayer/mediaplayer.pri b/src/plugins/qnx/mediaplayer/mediaplayer.pri new file mode 100644 index 00000000..9dedab0f --- /dev/null +++ b/src/plugins/qnx/mediaplayer/mediaplayer.pri @@ -0,0 +1,31 @@ +INCLUDEPATH += $$PWD + +HEADERS += \ + $$PWD/mmrenderermediaplayercontrol.h \ + $$PWD/mmrenderermediaplayerservice.h \ + $$PWD/mmrenderermetadata.h \ + $$PWD/mmrenderermetadatareadercontrol.h \ + $$PWD/mmrendererplayervideorenderercontrol.h \ + $$PWD/mmrendererutil.h \ + $$PWD/mmrenderervideowindowcontrol.h + +SOURCES += \ + $$PWD/mmrenderermediaplayercontrol.cpp \ + $$PWD/mmrenderermediaplayerservice.cpp \ + $$PWD/mmrenderermetadata.cpp \ + $$PWD/mmrenderermetadatareadercontrol.cpp \ + $$PWD/mmrendererplayervideorenderercontrol.cpp \ + $$PWD/mmrendererutil.cpp \ + $$PWD/mmrenderervideowindowcontrol.cpp + +LIBS += -lmmrndclient -lstrm + +blackberry { + HEADERS += $$PWD/bpsmediaplayercontrol.h + SOURCES += $$PWD/bpsmediaplayercontrol.cpp +} else { + HEADERS += $$PWD/ppsmediaplayercontrol.h + SOURCES += $$PWD/ppsmediaplayercontrol.cpp + QT += core-private + LIBS += -lpps +} diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp similarity index 81% rename from src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp rename to src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp index 6304b66d..2a376198 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.cpp +++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp @@ -38,11 +38,11 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include "bbmediaplayercontrol.h" -#include "bbmetadatareadercontrol.h" -#include "bbplayervideorenderercontrol.h" -#include "bbutil.h" -#include "bbvideowindowcontrol.h" +#include "mmrenderermediaplayercontrol.h" +#include "mmrenderermetadatareadercontrol.h" +#include "mmrendererplayervideorenderercontrol.h" +#include "mmrendererutil.h" +#include "mmrenderervideowindowcontrol.h" #include #include #include @@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE static int idCounter = 0; -BbMediaPlayerControl::BbMediaPlayerControl(QObject *parent) +MmRendererMediaPlayerControl::MmRendererMediaPlayerControl(QObject *parent) : QMediaPlayerControl(parent), m_connection(0), m_context(0), @@ -81,7 +81,7 @@ BbMediaPlayerControl::BbMediaPlayerControl(QObject *parent) QCoreApplication::eventDispatcher()->installNativeEventFilter(this); } -void BbMediaPlayerControl::destroy() +void MmRendererMediaPlayerControl::destroy() { stop(); detach(); @@ -89,7 +89,7 @@ void BbMediaPlayerControl::destroy() QCoreApplication::eventDispatcher()->removeNativeEventFilter(this); } -void BbMediaPlayerControl::openConnection() +void MmRendererMediaPlayerControl::openConnection() { m_connection = mmr_connect(NULL); if (!m_connection) { @@ -98,7 +98,7 @@ void BbMediaPlayerControl::openConnection() } m_id = idCounter++; - m_contextName = QString("BbMediaPlayerControl_%1_%2").arg(m_id) + 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); @@ -111,7 +111,7 @@ void BbMediaPlayerControl::openConnection() startMonitoring(m_id, m_contextName); } -void BbMediaPlayerControl::handleMmStatusUpdate(qint64 newPosition) +void MmRendererMediaPlayerControl::handleMmStatusUpdate(qint64 newPosition) { // Prevent spurious position change events from overriding our own position, for example // when setting the position to 0 in stop(). @@ -126,7 +126,7 @@ void BbMediaPlayerControl::handleMmStatusUpdate(qint64 newPosition) setMmPosition(newPosition); } -void BbMediaPlayerControl::handleMmStopped() +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. @@ -140,7 +140,7 @@ void BbMediaPlayerControl::handleMmStopped() } } -void BbMediaPlayerControl::closeConnection() +void MmRendererMediaPlayerControl::closeConnection() { stopMonitoring(); @@ -156,7 +156,7 @@ void BbMediaPlayerControl::closeConnection() } } -QByteArray BbMediaPlayerControl::resourcePathForUrl(const QUrl &url) +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 @@ -192,7 +192,7 @@ QByteArray BbMediaPlayerControl::resourcePathForUrl(const QUrl &url) } } -void BbMediaPlayerControl::attach() +void MmRendererMediaPlayerControl::attach() { // Should only be called in detached state Q_ASSERT(m_audioId == -1 && !m_inputAttached && m_tempMediaFileName.isEmpty()); @@ -238,7 +238,7 @@ void BbMediaPlayerControl::attach() emit bufferStatusChanged(m_bufferStatus); } -void BbMediaPlayerControl::detach() +void MmRendererMediaPlayerControl::detach() { if (m_context) { if (m_inputAttached) { @@ -262,27 +262,27 @@ void BbMediaPlayerControl::detach() m_loadingTimer.stop(); } -QMediaPlayer::State BbMediaPlayerControl::state() const +QMediaPlayer::State MmRendererMediaPlayerControl::state() const { return m_state; } -QMediaPlayer::MediaStatus BbMediaPlayerControl::mediaStatus() const +QMediaPlayer::MediaStatus MmRendererMediaPlayerControl::mediaStatus() const { return m_mediaStatus; } -qint64 BbMediaPlayerControl::duration() const +qint64 MmRendererMediaPlayerControl::duration() const { return m_metaData.duration(); } -qint64 BbMediaPlayerControl::position() const +qint64 MmRendererMediaPlayerControl::position() const { return m_position; } -void BbMediaPlayerControl::setPosition(qint64 position) +void MmRendererMediaPlayerControl::setPosition(qint64 position) { if (m_position != position) { m_position = position; @@ -296,12 +296,12 @@ void BbMediaPlayerControl::setPosition(qint64 position) } } -int BbMediaPlayerControl::volume() const +int MmRendererMediaPlayerControl::volume() const { return m_volume; } -void BbMediaPlayerControl::setVolumeInternal(int newVolume) +void MmRendererMediaPlayerControl::setVolumeInternal(int newVolume) { if (!m_context) return; @@ -315,7 +315,7 @@ void BbMediaPlayerControl::setVolumeInternal(int newVolume) } } -void BbMediaPlayerControl::setPlaybackRateInternal(qreal rate) +void MmRendererMediaPlayerControl::setPlaybackRateInternal(qreal rate) { if (!m_context) return; @@ -325,7 +325,7 @@ void BbMediaPlayerControl::setPlaybackRateInternal(qreal rate) emitMmError("mmr_speed_set failed"); } -void BbMediaPlayerControl::setPositionInternal(qint64 position) +void MmRendererMediaPlayerControl::setPositionInternal(qint64 position) { if (!m_context) return; @@ -336,7 +336,7 @@ void BbMediaPlayerControl::setPositionInternal(qint64 position) } } -void BbMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status) +void MmRendererMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status) { if (m_mediaStatus != status) { m_mediaStatus = status; @@ -344,7 +344,7 @@ void BbMediaPlayerControl::setMediaStatus(QMediaPlayer::MediaStatus status) } } -void BbMediaPlayerControl::setState(QMediaPlayer::State state) +void MmRendererMediaPlayerControl::setState(QMediaPlayer::State state) { if (m_state != state) { if (m_videoRendererControl) { @@ -361,7 +361,7 @@ void BbMediaPlayerControl::setState(QMediaPlayer::State state) } } -void BbMediaPlayerControl::stopInternal(StopCommand stopCommand) +void MmRendererMediaPlayerControl::stopInternal(StopCommand stopCommand) { if (m_state != QMediaPlayer::StoppedState) { @@ -379,7 +379,7 @@ void BbMediaPlayerControl::stopInternal(StopCommand stopCommand) } } -void BbMediaPlayerControl::setVolume(int volume) +void MmRendererMediaPlayerControl::setVolume(int volume) { const int newVolume = qBound(0, volume, 100); if (m_volume != newVolume) { @@ -390,12 +390,12 @@ void BbMediaPlayerControl::setVolume(int volume) } } -bool BbMediaPlayerControl::isMuted() const +bool MmRendererMediaPlayerControl::isMuted() const { return m_muted; } -void BbMediaPlayerControl::setMuted(bool muted) +void MmRendererMediaPlayerControl::setMuted(bool muted) { if (m_muted != muted) { m_muted = muted; @@ -404,38 +404,38 @@ void BbMediaPlayerControl::setMuted(bool muted) } } -int BbMediaPlayerControl::bufferStatus() const +int MmRendererMediaPlayerControl::bufferStatus() const { return m_bufferStatus; } -bool BbMediaPlayerControl::isAudioAvailable() const +bool MmRendererMediaPlayerControl::isAudioAvailable() const { return m_metaData.hasAudio(); } -bool BbMediaPlayerControl::isVideoAvailable() const +bool MmRendererMediaPlayerControl::isVideoAvailable() const { return m_metaData.hasVideo(); } -bool BbMediaPlayerControl::isSeekable() const +bool MmRendererMediaPlayerControl::isSeekable() const { return m_metaData.isSeekable(); } -QMediaTimeRange BbMediaPlayerControl::availablePlaybackRanges() const +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 BbMediaPlayerControl::playbackRate() const +qreal MmRendererMediaPlayerControl::playbackRate() const { return m_rate; } -void BbMediaPlayerControl::setPlaybackRate(qreal rate) +void MmRendererMediaPlayerControl::setPlaybackRate(qreal rate) { if (m_rate != rate) { m_rate = rate; @@ -444,18 +444,18 @@ void BbMediaPlayerControl::setPlaybackRate(qreal rate) } } -QMediaContent BbMediaPlayerControl::media() const +QMediaContent MmRendererMediaPlayerControl::media() const { return m_media; } -const QIODevice *BbMediaPlayerControl::mediaStream() const +const QIODevice *MmRendererMediaPlayerControl::mediaStream() const { // Always 0, we don't support QIODevice streams return 0; } -void BbMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *stream) +void MmRendererMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *stream) { Q_UNUSED(stream); // not supported @@ -479,7 +479,7 @@ void BbMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *strea } } -void BbMediaPlayerControl::continueLoadMedia() +void MmRendererMediaPlayerControl::continueLoadMedia() { attach(); updateMetaData(); @@ -487,17 +487,17 @@ void BbMediaPlayerControl::continueLoadMedia() play(); } -QString BbMediaPlayerControl::contextName() const +QString MmRendererMediaPlayerControl::contextName() const { return m_contextName; } -BbVideoWindowControl *BbMediaPlayerControl::videoWindowControl() const +MmRendererVideoWindowControl *MmRendererMediaPlayerControl::videoWindowControl() const { return m_videoWindowControl; } -void BbMediaPlayerControl::play() +void MmRendererMediaPlayerControl::play() { if (m_playAfterMediaLoaded) m_playAfterMediaLoaded = false; @@ -542,7 +542,7 @@ void BbMediaPlayerControl::play() setState( QMediaPlayer::PlayingState); } -void BbMediaPlayerControl::pause() +void MmRendererMediaPlayerControl::pause() { if (m_state == QMediaPlayer::PlayingState) { setPlaybackRateInternal(0); @@ -550,32 +550,32 @@ void BbMediaPlayerControl::pause() } } -void BbMediaPlayerControl::stop() +void MmRendererMediaPlayerControl::stop() { stopInternal(StopMmRenderer); } -BbPlayerVideoRendererControl *BbMediaPlayerControl::videoRendererControl() const +MmRendererPlayerVideoRendererControl *MmRendererMediaPlayerControl::videoRendererControl() const { return m_videoRendererControl; } -void BbMediaPlayerControl::setVideoRendererControl(BbPlayerVideoRendererControl *videoControl) +void MmRendererMediaPlayerControl::setVideoRendererControl(MmRendererPlayerVideoRendererControl *videoControl) { m_videoRendererControl = videoControl; } -void BbMediaPlayerControl::setVideoWindowControl(BbVideoWindowControl *videoControl) +void MmRendererMediaPlayerControl::setVideoWindowControl(MmRendererVideoWindowControl *videoControl) { m_videoWindowControl = videoControl; } -void BbMediaPlayerControl::setMetaDataReaderControl(BbMetaDataReaderControl *metaDataReaderControl) +void MmRendererMediaPlayerControl::setMetaDataReaderControl(MmRendererMetaDataReaderControl *metaDataReaderControl) { m_metaDataReaderControl = metaDataReaderControl; } -void BbMediaPlayerControl::setMmPosition(qint64 newPosition) +void MmRendererMediaPlayerControl::setMmPosition(qint64 newPosition) { if (newPosition != 0 && newPosition != m_position) { m_position = newPosition; @@ -583,7 +583,7 @@ void BbMediaPlayerControl::setMmPosition(qint64 newPosition) } } -void BbMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus) +void MmRendererMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus) { const int slashPos = bufferStatus.indexOf('/'); if (slashPos != -1) { @@ -596,7 +596,7 @@ void BbMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus) } } -void BbMediaPlayerControl::updateMetaData() +void MmRendererMediaPlayerControl::updateMetaData() { if (m_mediaStatus == QMediaPlayer::LoadedMedia) m_metaData.parse(m_contextName); @@ -616,7 +616,7 @@ void BbMediaPlayerControl::updateMetaData() emit seekableChanged(m_metaData.isSeekable()); } -void BbMediaPlayerControl::emitMmError(const QString &msg) +void MmRendererMediaPlayerControl::emitMmError(const QString &msg) { int errorCode = MMR_ERROR_NONE; const QString errorMessage = mmErrorMessage(msg, m_context, &errorCode); @@ -624,7 +624,7 @@ void BbMediaPlayerControl::emitMmError(const QString &msg) emit error(errorCode, errorMessage); } -void BbMediaPlayerControl::emitPError(const QString &msg) +void MmRendererMediaPlayerControl::emitPError(const QString &msg) { const QString errorMessage = QString("%1: %2").arg(msg).arg(strerror(errno)); qDebug() << errorMessage; diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h similarity index 83% rename from src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h rename to src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h index 6d6f5e81..a22e71bf 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayercontrol.h +++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h @@ -38,10 +38,10 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBMEDIAPLAYERCONTROL_H -#define BBMEDIAPLAYERCONTROL_H +#ifndef MMRENDERERMEDIAPLAYERCONTROL_H +#define MMRENDERERMEDIAPLAYERCONTROL_H -#include "bbmetadata.h" +#include "mmrenderermetadata.h" #include #include #include @@ -53,15 +53,15 @@ typedef struct mmrenderer_monitor mmrenderer_monitor_t; QT_BEGIN_NAMESPACE -class BbMetaDataReaderControl; -class BbPlayerVideoRendererControl; -class BbVideoWindowControl; +class MmRendererMetaDataReaderControl; +class MmRendererPlayerVideoRendererControl; +class MmRendererVideoWindowControl; -class BbMediaPlayerControl : public QMediaPlayerControl, public QAbstractNativeEventFilter +class MmRendererMediaPlayerControl : public QMediaPlayerControl, public QAbstractNativeEventFilter { Q_OBJECT public: - explicit BbMediaPlayerControl(QObject *parent = 0); + explicit MmRendererMediaPlayerControl(QObject *parent = 0); QMediaPlayer::State state() const Q_DECL_OVERRIDE; @@ -98,12 +98,12 @@ public: void pause() Q_DECL_OVERRIDE; void stop() Q_DECL_OVERRIDE; - BbPlayerVideoRendererControl *videoRendererControl() const; - void setVideoRendererControl(BbPlayerVideoRendererControl *videoControl); + MmRendererPlayerVideoRendererControl *videoRendererControl() const; + void setVideoRendererControl(MmRendererPlayerVideoRendererControl *videoControl); - BbVideoWindowControl *videoWindowControl() const; - void setVideoWindowControl(BbVideoWindowControl *videoControl); - void setMetaDataReaderControl(BbMetaDataReaderControl *metaDataReaderControl); + MmRendererVideoWindowControl *videoWindowControl() const; + void setVideoWindowControl(MmRendererVideoWindowControl *videoControl); + void setMetaDataReaderControl(MmRendererMetaDataReaderControl *metaDataReaderControl); protected: virtual void startMonitoring(int contextId, const QString &contextName) = 0; @@ -152,10 +152,10 @@ private: int m_volume; bool m_muted; qreal m_rate; - QPointer m_videoRendererControl; - QPointer m_videoWindowControl; - QPointer m_metaDataReaderControl; - BbMetaData m_metaData; + QPointer m_videoRendererControl; + QPointer m_videoWindowControl; + QPointer m_metaDataReaderControl; + MmRendererMetaData m_metaData; int m_id; qint64 m_position; QMediaPlayer::MediaStatus m_mediaStatus; diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp similarity index 85% rename from src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp rename to src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp index 5eb2ae6a..1e75674e 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.cpp +++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp @@ -38,13 +38,13 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include "bbmediaplayerservice.h" +#include "mmrenderermediaplayerservice.h" -#include "bbmediaplayercontrol.h" -#include "bbmetadatareadercontrol.h" -#include "bbplayervideorenderercontrol.h" -#include "bbutil.h" -#include "bbvideowindowcontrol.h" +#include "mmrenderermediaplayercontrol.h" +#include "mmrenderermetadatareadercontrol.h" +#include "mmrendererplayervideorenderercontrol.h" +#include "mmrendererutil.h" +#include "mmrenderervideowindowcontrol.h" #ifdef Q_OS_BLACKBERRY #include "bpsmediaplayercontrol.h" @@ -56,7 +56,7 @@ typedef PpsMediaPlayerControl PlatformSpecificMediaPlayerControl; QT_BEGIN_NAMESPACE -BbMediaPlayerService::BbMediaPlayerService(QObject *parent) +MmRendererMediaPlayerService::MmRendererMediaPlayerService(QObject *parent) : QMediaService(parent), m_videoRendererControl(0), m_videoWindowControl(0), @@ -67,7 +67,7 @@ BbMediaPlayerService::BbMediaPlayerService(QObject *parent) { } -BbMediaPlayerService::~BbMediaPlayerService() +MmRendererMediaPlayerService::~MmRendererMediaPlayerService() { // Someone should have called releaseControl(), but better be safe delete m_videoRendererControl; @@ -76,7 +76,7 @@ BbMediaPlayerService::~BbMediaPlayerService() delete m_metaDataReaderControl; } -QMediaControl *BbMediaPlayerService::requestControl(const char *name) +QMediaControl *MmRendererMediaPlayerService::requestControl(const char *name) { if (qstrcmp(name, QMediaPlayerControl_iid) == 0) { if (!m_mediaPlayerControl) { @@ -87,7 +87,7 @@ QMediaControl *BbMediaPlayerService::requestControl(const char *name) } else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) { if (!m_metaDataReaderControl) { - m_metaDataReaderControl = new BbMetaDataReaderControl(); + m_metaDataReaderControl = new MmRendererMetaDataReaderControl(); updateControls(); } return m_metaDataReaderControl; @@ -106,14 +106,14 @@ QMediaControl *BbMediaPlayerService::requestControl(const char *name) } if (!m_videoRendererControl) { - m_videoRendererControl = new BbPlayerVideoRendererControl(); + m_videoRendererControl = new MmRendererPlayerVideoRendererControl(); updateControls(); } return m_videoRendererControl; } else if (qstrcmp(name, QVideoWindowControl_iid) == 0) { if (!m_videoWindowControl) { - m_videoWindowControl = new BbVideoWindowControl(); + m_videoWindowControl = new MmRendererVideoWindowControl(); updateControls(); } return m_videoWindowControl; @@ -121,7 +121,7 @@ QMediaControl *BbMediaPlayerService::requestControl(const char *name) return 0; } -void BbMediaPlayerService::releaseControl(QMediaControl *control) +void MmRendererMediaPlayerService::releaseControl(QMediaControl *control) { if (control == m_videoRendererControl) m_videoRendererControl = 0; @@ -134,7 +134,7 @@ void BbMediaPlayerService::releaseControl(QMediaControl *control) delete control; } -void BbMediaPlayerService::updateControls() +void MmRendererMediaPlayerService::updateControls() { if (m_videoRendererControl && m_mediaPlayerControl) m_mediaPlayerControl->setVideoRendererControl(m_videoRendererControl); diff --git a/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.h b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h similarity index 77% rename from src/plugins/blackberry/mediaplayer/bbmediaplayerservice.h rename to src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h index 03aa7818..3d55de8d 100644 --- a/src/plugins/blackberry/mediaplayer/bbmediaplayerservice.h +++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h @@ -38,25 +38,25 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBMEDIAPLAYERSERVICE_H -#define BBMEDIAPLAYERSERVICE_H +#ifndef MMRENDERERMEDIAPLAYERSERVICE_H +#define MMRENDERERMEDIAPLAYERSERVICE_H #include #include QT_BEGIN_NAMESPACE -class BbMediaPlayerControl; -class BbMetaDataReaderControl; -class BbPlayerVideoRendererControl; -class BbVideoWindowControl; +class MmRendererMediaPlayerControl; +class MmRendererMetaDataReaderControl; +class MmRendererPlayerVideoRendererControl; +class MmRendererVideoWindowControl; -class BbMediaPlayerService : public QMediaService +class MmRendererMediaPlayerService : public QMediaService { Q_OBJECT public: - explicit BbMediaPlayerService(QObject *parent = 0); - ~BbMediaPlayerService(); + explicit MmRendererMediaPlayerService(QObject *parent = 0); + ~MmRendererMediaPlayerService(); QMediaControl *requestControl(const char *name) Q_DECL_OVERRIDE; void releaseControl(QMediaControl *control) Q_DECL_OVERRIDE; @@ -64,10 +64,10 @@ public: private: void updateControls(); - QPointer m_videoRendererControl; - QPointer m_videoWindowControl; - QPointer m_mediaPlayerControl; - QPointer m_metaDataReaderControl; + QPointer m_videoRendererControl; + QPointer m_videoWindowControl; + QPointer m_mediaPlayerControl; + QPointer m_metaDataReaderControl; bool m_appHasDrmPermission : 1; bool m_appHasDrmPermissionChecked : 1; diff --git a/src/plugins/blackberry/mediaplayer/bbmetadata.cpp b/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp similarity index 88% rename from src/plugins/blackberry/mediaplayer/bbmetadata.cpp rename to src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp index 4b51633b..07f5ddd6 100644 --- a/src/plugins/blackberry/mediaplayer/bbmetadata.cpp +++ b/src/plugins/qnx/mediaplayer/mmrenderermetadata.cpp @@ -38,7 +38,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include "bbmetadata.h" +#include "mmrenderermetadata.h" #include #include @@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE -BbMetaData::BbMetaData() +MmRendererMetaData::MmRendererMetaData() { clear(); } @@ -71,7 +71,7 @@ static const char * seekableKey = "md_title_seekable"; static const int mediaTypeAudioFlag = 4; static const int mediaTypeVideoFlag = 2; -bool BbMetaData::parse(const QString &contextName) +bool MmRendererMetaData::parse(const QString &contextName) { clear(); QString fileName = @@ -138,7 +138,7 @@ bool BbMetaData::parse(const QString &contextName) return true; } -void BbMetaData::clear() +void MmRendererMetaData::clear() { m_duration = 0; m_height = 0; @@ -158,7 +158,7 @@ void BbMetaData::clear() m_track = 0; } -qlonglong BbMetaData::duration() const +qlonglong MmRendererMetaData::duration() const { return m_duration; } @@ -173,17 +173,17 @@ qlonglong BbMetaData::duration() const // 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 BbMetaData::height() const +int MmRendererMetaData::height() const { return m_height * m_pixelHeight; } -int BbMetaData::width() const +int MmRendererMetaData::width() const { return m_width * m_pixelWidth; } -bool BbMetaData::hasVideo() const +bool MmRendererMetaData::hasVideo() const { // By default, assume no video if we can't extract the information if (m_mediaType == -1) @@ -192,7 +192,7 @@ bool BbMetaData::hasVideo() const return (m_mediaType & mediaTypeVideoFlag); } -bool BbMetaData::hasAudio() const +bool MmRendererMetaData::hasAudio() const { // By default, assume audio only if we can't extract the information if (m_mediaType == -1) @@ -201,37 +201,37 @@ bool BbMetaData::hasAudio() const return (m_mediaType & mediaTypeAudioFlag); } -QString BbMetaData::title() const +QString MmRendererMetaData::title() const { return m_title; } -bool BbMetaData::isSeekable() const +bool MmRendererMetaData::isSeekable() const { return m_seekable; } -QString BbMetaData::artist() const +QString MmRendererMetaData::artist() const { return m_artist; } -QString BbMetaData::comment() const +QString MmRendererMetaData::comment() const { return m_comment; } -QString BbMetaData::genre() const +QString MmRendererMetaData::genre() const { return m_genre; } -int BbMetaData::year() const +int MmRendererMetaData::year() const { return m_year; } -QString BbMetaData::mediaType() const +QString MmRendererMetaData::mediaType() const { if (hasVideo()) return QLatin1String("video"); @@ -241,27 +241,27 @@ QString BbMetaData::mediaType() const return QString(); } -int BbMetaData::audioBitRate() const +int MmRendererMetaData::audioBitRate() const { return m_audioBitRate; } -int BbMetaData::sampleRate() const +int MmRendererMetaData::sampleRate() const { return m_sampleRate; } -QString BbMetaData::album() const +QString MmRendererMetaData::album() const { return m_album; } -int BbMetaData::track() const +int MmRendererMetaData::track() const { return m_track; } -QSize BbMetaData::resolution() const +QSize MmRendererMetaData::resolution() const { return QSize(width(), height()); } diff --git a/src/plugins/blackberry/mediaplayer/bbmetadata.h b/src/plugins/qnx/mediaplayer/mmrenderermetadata.h similarity index 96% rename from src/plugins/blackberry/mediaplayer/bbmetadata.h rename to src/plugins/qnx/mediaplayer/mmrenderermetadata.h index f4b74229..deb848a8 100644 --- a/src/plugins/blackberry/mediaplayer/bbmetadata.h +++ b/src/plugins/qnx/mediaplayer/mmrenderermetadata.h @@ -38,8 +38,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBMETADATA_H -#define BBMETADATA_H +#ifndef MMRENDERERMETADATA_H +#define MMRENDERERMETADATA_H #include #include @@ -47,10 +47,10 @@ QT_BEGIN_NAMESPACE -class BbMetaData +class MmRendererMetaData { public: - BbMetaData(); + MmRendererMetaData(); bool parse(const QString &contextName); void clear(); diff --git a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp similarity index 93% rename from src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp rename to src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp index 99e3c512..c0fe7d08 100644 --- a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp +++ b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.cpp @@ -38,22 +38,22 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include "bbmetadatareadercontrol.h" +#include "mmrenderermetadatareadercontrol.h" #include QT_BEGIN_NAMESPACE -BbMetaDataReaderControl::BbMetaDataReaderControl(QObject *parent) +MmRendererMetaDataReaderControl::MmRendererMetaDataReaderControl(QObject *parent) : QMetaDataReaderControl(parent) { } -bool BbMetaDataReaderControl::isMetaDataAvailable() const +bool MmRendererMetaDataReaderControl::isMetaDataAvailable() const { return !availableMetaData().isEmpty(); } -QVariant BbMetaDataReaderControl::metaData(const QString &key) const +QVariant MmRendererMetaDataReaderControl::metaData(const QString &key) const { if (key == QMediaMetaData::Title) return m_metaData.title(); @@ -83,7 +83,7 @@ QVariant BbMetaDataReaderControl::metaData(const QString &key) const return QVariant(); } -QStringList BbMetaDataReaderControl::availableMetaData() const +QStringList MmRendererMetaDataReaderControl::availableMetaData() const { QStringList metaData; @@ -115,9 +115,9 @@ QStringList BbMetaDataReaderControl::availableMetaData() const return metaData; } -void BbMetaDataReaderControl::setMetaData(const BbMetaData &data) +void MmRendererMetaDataReaderControl::setMetaData(const MmRendererMetaData &data) { - const BbMetaData oldMetaData = m_metaData; + const MmRendererMetaData oldMetaData = m_metaData; const bool oldMetaDataAvailable = isMetaDataAvailable(); m_metaData = data; diff --git a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.h b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h similarity index 86% rename from src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.h rename to src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h index c825b54f..f824ca4d 100644 --- a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.h +++ b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h @@ -38,29 +38,29 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBMETADATAREADERCONTROL_H -#define BBMETADATAREADERCONTROL_H +#ifndef MMRENDERERMETADATAREADERCONTROL_H +#define MMRENDERERMETADATAREADERCONTROL_H -#include "bbmetadata.h" +#include "mmrenderermetadata.h" #include QT_BEGIN_NAMESPACE -class BbMetaDataReaderControl : public QMetaDataReaderControl +class MmRendererMetaDataReaderControl : public QMetaDataReaderControl { Q_OBJECT public: - explicit BbMetaDataReaderControl(QObject *parent = 0); + explicit MmRendererMetaDataReaderControl(QObject *parent = 0); bool isMetaDataAvailable() const Q_DECL_OVERRIDE; QVariant metaData(const QString &key) const Q_DECL_OVERRIDE; QStringList availableMetaData() const Q_DECL_OVERRIDE; - void setMetaData(const BbMetaData &data); + void setMetaData(const MmRendererMetaData &data); private: - BbMetaData m_metaData; + MmRendererMetaData m_metaData; }; QT_END_NAMESPACE diff --git a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp similarity index 79% rename from src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp rename to src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp index d9226d91..0abdfec4 100644 --- a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp +++ b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "bbplayervideorenderercontrol.h" +#include "mmrendererplayervideorenderercontrol.h" #include "windowgrabber.h" @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE static int winIdCounter = 0; -BbPlayerVideoRendererControl::BbPlayerVideoRendererControl(QObject *parent) +MmRendererPlayerVideoRendererControl::MmRendererPlayerVideoRendererControl(QObject *parent) : QVideoRendererControl(parent) , m_windowGrabber(new WindowGrabber(this)) , m_context(0) @@ -62,40 +62,40 @@ BbPlayerVideoRendererControl::BbPlayerVideoRendererControl(QObject *parent) connect(m_windowGrabber, SIGNAL(frameGrabbed(QImage)), SLOT(frameGrabbed(QImage))); } -BbPlayerVideoRendererControl::~BbPlayerVideoRendererControl() +MmRendererPlayerVideoRendererControl::~MmRendererPlayerVideoRendererControl() { detachDisplay(); } -QAbstractVideoSurface *BbPlayerVideoRendererControl::surface() const +QAbstractVideoSurface *MmRendererPlayerVideoRendererControl::surface() const { return m_surface; } -void BbPlayerVideoRendererControl::setSurface(QAbstractVideoSurface *surface) +void MmRendererPlayerVideoRendererControl::setSurface(QAbstractVideoSurface *surface) { m_surface = QPointer(surface); } -void BbPlayerVideoRendererControl::attachDisplay(mmr_context_t *context) +void MmRendererPlayerVideoRendererControl::attachDisplay(mmr_context_t *context) { if (m_videoId != -1) { - qWarning() << "BbPlayerVideoRendererControl: Video output already attached!"; + qWarning() << "MmRendererPlayerVideoRendererControl: Video output already attached!"; return; } if (!context) { - qWarning() << "BbPlayerVideoRendererControl: No media player context!"; + qWarning() << "MmRendererPlayerVideoRendererControl: No media player context!"; return; } const QByteArray windowGroupId = m_windowGrabber->windowGroupId(); if (windowGroupId.isEmpty()) { - qWarning() << "BbPlayerVideoRendererControl: Unable to find window group"; + qWarning() << "MmRendererPlayerVideoRendererControl: Unable to find window group"; return; } - const QString windowName = QStringLiteral("BbPlayerVideoRendererControl_%1_%2") + const QString windowName = QStringLiteral("MmRendererPlayerVideoRendererControl_%1_%2") .arg(winIdCounter++) .arg(QCoreApplication::applicationPid()); @@ -115,7 +115,7 @@ void BbPlayerVideoRendererControl::attachDisplay(mmr_context_t *context) m_context = context; } -void BbPlayerVideoRendererControl::detachDisplay() +void MmRendererPlayerVideoRendererControl::detachDisplay() { m_windowGrabber->stop(); @@ -129,17 +129,17 @@ void BbPlayerVideoRendererControl::detachDisplay() m_videoId = -1; } -void BbPlayerVideoRendererControl::pause() +void MmRendererPlayerVideoRendererControl::pause() { m_windowGrabber->pause(); } -void BbPlayerVideoRendererControl::resume() +void MmRendererPlayerVideoRendererControl::resume() { m_windowGrabber->resume(); } -void BbPlayerVideoRendererControl::frameGrabbed(const QImage &frame) +void MmRendererPlayerVideoRendererControl::frameGrabbed(const QImage &frame) { if (m_surface) { if (!m_surface->isActive()) { diff --git a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h similarity index 90% rename from src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h rename to src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h index a2deaa27..4e271ad5 100644 --- a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.h +++ b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h @@ -38,8 +38,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBPLAYERVIDEORENDERERCONTROL_H -#define BBPLAYERVIDEORENDERERCONTROL_H +#ifndef MMRENDERERPLAYERVIDEORENDERERCONTROL_H +#define MMRENDERERPLAYERVIDEORENDERERCONTROL_H #include #include @@ -51,12 +51,12 @@ QT_BEGIN_NAMESPACE class WindowGrabber; -class BbPlayerVideoRendererControl : public QVideoRendererControl +class MmRendererPlayerVideoRendererControl : public QVideoRendererControl { Q_OBJECT public: - explicit BbPlayerVideoRendererControl(QObject *parent = 0); - ~BbPlayerVideoRendererControl(); + explicit MmRendererPlayerVideoRendererControl(QObject *parent = 0); + ~MmRendererPlayerVideoRendererControl(); QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE; void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE; diff --git a/src/plugins/blackberry/mediaplayer/bbutil.cpp b/src/plugins/qnx/mediaplayer/mmrendererutil.cpp similarity index 99% rename from src/plugins/blackberry/mediaplayer/bbutil.cpp rename to src/plugins/qnx/mediaplayer/mmrendererutil.cpp index 2e95c357..61f85f3d 100644 --- a/src/plugins/blackberry/mediaplayer/bbutil.cpp +++ b/src/plugins/qnx/mediaplayer/mmrendererutil.cpp @@ -38,7 +38,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include "bbutil.h" +#include "mmrendererutil.h" #include #include diff --git a/src/plugins/blackberry/mediaplayer/bbutil.h b/src/plugins/qnx/mediaplayer/mmrendererutil.h similarity index 97% rename from src/plugins/blackberry/mediaplayer/bbutil.h rename to src/plugins/qnx/mediaplayer/mmrendererutil.h index 35d59fe4..4b9adc27 100644 --- a/src/plugins/blackberry/mediaplayer/bbutil.h +++ b/src/plugins/qnx/mediaplayer/mmrendererutil.h @@ -38,8 +38,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBUTIL_H -#define BBUTIL_H +#ifndef MMRENDERERUTIL_H +#define MMRENDERERUTIL_H #include diff --git a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp similarity index 79% rename from src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp rename to src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp index 28029c9b..c35c6d1a 100644 --- a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.cpp +++ b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp @@ -38,8 +38,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include "bbvideowindowcontrol.h" -#include "bbutil.h" +#include "mmrenderervideowindowcontrol.h" +#include "mmrendererutil.h" #include #include #include @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE static int winIdCounter = 0; -BbVideoWindowControl::BbVideoWindowControl(QObject *parent) +MmRendererVideoWindowControl::MmRendererVideoWindowControl(QObject *parent) : QVideoWindowControl(parent), m_videoId(-1), m_winId(0), @@ -66,26 +66,26 @@ BbVideoWindowControl::BbVideoWindowControl(QObject *parent) { } -BbVideoWindowControl::~BbVideoWindowControl() +MmRendererVideoWindowControl::~MmRendererVideoWindowControl() { } -WId BbVideoWindowControl::winId() const +WId MmRendererVideoWindowControl::winId() const { return m_winId; } -void BbVideoWindowControl::setWinId(WId id) +void MmRendererVideoWindowControl::setWinId(WId id) { m_winId = id; } -QRect BbVideoWindowControl::displayRect() const +QRect MmRendererVideoWindowControl::displayRect() const { return m_displayRect ; } -void BbVideoWindowControl::setDisplayRect(const QRect &rect) +void MmRendererVideoWindowControl::setDisplayRect(const QRect &rect) { if (m_displayRect != rect) { m_displayRect = rect; @@ -93,12 +93,12 @@ void BbVideoWindowControl::setDisplayRect(const QRect &rect) } } -bool BbVideoWindowControl::isFullScreen() const +bool MmRendererVideoWindowControl::isFullScreen() const { return m_fullscreen; } -void BbVideoWindowControl::setFullScreen(bool fullScreen) +void MmRendererVideoWindowControl::setFullScreen(bool fullScreen) { if (m_fullscreen != fullScreen) { m_fullscreen = fullScreen; @@ -107,32 +107,32 @@ void BbVideoWindowControl::setFullScreen(bool fullScreen) } } -void BbVideoWindowControl::repaint() +void MmRendererVideoWindowControl::repaint() { // Nothing we can or should do here } -QSize BbVideoWindowControl::nativeSize() const +QSize MmRendererVideoWindowControl::nativeSize() const { return QSize(m_metaData.width(), m_metaData.height()); } -Qt::AspectRatioMode BbVideoWindowControl::aspectRatioMode() const +Qt::AspectRatioMode MmRendererVideoWindowControl::aspectRatioMode() const { return m_aspectRatioMode; } -void BbVideoWindowControl::setAspectRatioMode(Qt::AspectRatioMode mode) +void MmRendererVideoWindowControl::setAspectRatioMode(Qt::AspectRatioMode mode) { m_aspectRatioMode = mode; } -int BbVideoWindowControl::brightness() const +int MmRendererVideoWindowControl::brightness() const { return m_brightness; } -void BbVideoWindowControl::setBrightness(int brightness) +void MmRendererVideoWindowControl::setBrightness(int brightness) { if (m_brightness != brightness) { m_brightness = brightness; @@ -141,12 +141,12 @@ void BbVideoWindowControl::setBrightness(int brightness) } } -int BbVideoWindowControl::contrast() const +int MmRendererVideoWindowControl::contrast() const { return m_contrast; } -void BbVideoWindowControl::setContrast(int contrast) +void MmRendererVideoWindowControl::setContrast(int contrast) { if (m_contrast != contrast) { m_contrast = contrast; @@ -155,12 +155,12 @@ void BbVideoWindowControl::setContrast(int contrast) } } -int BbVideoWindowControl::hue() const +int MmRendererVideoWindowControl::hue() const { return m_hue; } -void BbVideoWindowControl::setHue(int hue) +void MmRendererVideoWindowControl::setHue(int hue) { if (m_hue != hue) { m_hue = hue; @@ -169,12 +169,12 @@ void BbVideoWindowControl::setHue(int hue) } } -int BbVideoWindowControl::saturation() const +int MmRendererVideoWindowControl::saturation() const { return m_saturation; } -void BbVideoWindowControl::setSaturation(int saturation) +void MmRendererVideoWindowControl::setSaturation(int saturation) { if (m_saturation != saturation) { m_saturation = saturation; @@ -183,39 +183,39 @@ void BbVideoWindowControl::setSaturation(int saturation) } } -void BbVideoWindowControl::attachDisplay(mmr_context_t *context) +void MmRendererVideoWindowControl::attachDisplay(mmr_context_t *context) { if (m_videoId != -1) { - qDebug() << "BbVideoWindowControl: Video output already attached!"; + qDebug() << "MmRendererVideoWindowControl: Video output already attached!"; return; } if (!context) { - qDebug() << "BbVideoWindowControl: No media player context!"; + qDebug() << "MmRendererVideoWindowControl: No media player context!"; return; } QWindow *window = findWindow(m_winId); if (!window) { - qDebug() << "BbVideoWindowControl: No video window!"; + qDebug() << "MmRendererVideoWindowControl: No video window!"; return; } QPlatformNativeInterface * const nativeInterface = QGuiApplication::platformNativeInterface(); if (!nativeInterface) { - qDebug() << "BbVideoWindowControl: Unable to get platform native interface"; + qDebug() << "MmRendererVideoWindowControl: Unable to get platform native interface"; return; } const char * const groupNameData = static_cast( nativeInterface->nativeResourceForWindow("windowGroup", window)); if (!groupNameData) { - qDebug() << "BbVideoWindowControl: Unable to find window group for window" << window; + qDebug() << "MmRendererVideoWindowControl: Unable to find window group for window" << window; return; } const QString groupName = QString::fromLatin1(groupNameData); - m_windowName = QString("BbVideoWindowControl_%1_%2").arg(winIdCounter++) + m_windowName = QString("MmRendererVideoWindowControl_%1_%2").arg(winIdCounter++) .arg(QCoreApplication::applicationPid()); nativeInterface->setWindowProperty(window->handle(), @@ -240,7 +240,7 @@ void BbVideoWindowControl::attachDisplay(mmr_context_t *context) updateSaturation(); } -void BbVideoWindowControl::updateVideoPosition() +void MmRendererVideoWindowControl::updateVideoPosition() { QWindow * const window = findWindow(m_winId); if (m_context && m_videoId != -1 && window) { @@ -306,7 +306,7 @@ void BbVideoWindowControl::updateVideoPosition() } } -void BbVideoWindowControl::updateBrightness() +void MmRendererVideoWindowControl::updateBrightness() { if (m_window != 0) { const int backendValue = m_brightness * 2.55f; @@ -315,7 +315,7 @@ void BbVideoWindowControl::updateBrightness() } } -void BbVideoWindowControl::updateContrast() +void MmRendererVideoWindowControl::updateContrast() { if (m_window != 0) { const int backendValue = m_contrast * 1.27f; @@ -324,7 +324,7 @@ void BbVideoWindowControl::updateContrast() } } -void BbVideoWindowControl::updateHue() +void MmRendererVideoWindowControl::updateHue() { if (m_window != 0) { const int backendValue = m_hue * 1.27f; @@ -333,7 +333,7 @@ void BbVideoWindowControl::updateHue() } } -void BbVideoWindowControl::updateSaturation() +void MmRendererVideoWindowControl::updateSaturation() { if (m_window != 0) { const int backendValue = m_saturation * 1.27f; @@ -342,7 +342,7 @@ void BbVideoWindowControl::updateSaturation() } } -void BbVideoWindowControl::detachDisplay() +void MmRendererVideoWindowControl::detachDisplay() { if (m_context && m_videoId != -1) mmr_output_detach(m_context, m_videoId); @@ -358,7 +358,7 @@ void BbVideoWindowControl::detachDisplay() m_saturation = 0; } -void BbVideoWindowControl::setMetaData(const BbMetaData &metaData) +void MmRendererVideoWindowControl::setMetaData(const MmRendererMetaData &metaData) { m_metaData = metaData; emit nativeSizeChanged(); @@ -367,11 +367,11 @@ void BbVideoWindowControl::setMetaData(const BbMetaData &metaData) updateVideoPosition(); } -void BbVideoWindowControl::screenEventHandler(const screen_event_t &screen_event) +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("BbVideoWindowControl: Failed to query screen event type"); + perror("MmRendererVideoWindowControl: Failed to query screen event type"); return; } @@ -380,14 +380,14 @@ void BbVideoWindowControl::screenEventHandler(const screen_event_t &screen_event screen_window_t window = 0; if (screen_get_event_property_pv(screen_event, SCREEN_PROPERTY_WINDOW, (void**)&window) != 0) { - perror("BbVideoWindowControl: Failed to query window property"); + 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("BbVideoWindowControl: Failed to query window ID string"); + perror("MmRendererVideoWindowControl: Failed to query window ID string"); return; } @@ -397,13 +397,13 @@ void BbVideoWindowControl::screenEventHandler(const screen_event_t &screen_event const int visibleFlag = 1; if (screen_set_window_property_iv(m_window, SCREEN_PROPERTY_VISIBLE, &visibleFlag) != 0) { - perror("BbVideoWindowControl: Failed to make window visible"); + perror("MmRendererVideoWindowControl: Failed to make window visible"); return; } } } -QWindow *BbVideoWindowControl::findWindow(WId id) const +QWindow *MmRendererVideoWindowControl::findWindow(WId id) const { Q_FOREACH (QWindow *window, QGuiApplication::allWindows()) if (window->winId() == id) diff --git a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h similarity index 90% rename from src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h rename to src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h index 98751d3e..cfc9603b 100644 --- a/src/plugins/blackberry/mediaplayer/bbvideowindowcontrol.h +++ b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h @@ -38,10 +38,10 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef BBVIDEOWINDOWCONTROL_H -#define BBVIDEOWINDOWCONTROL_H +#ifndef MMRENDERERVIDEOWINDOWCONTROL_H +#define MMRENDERERVIDEOWINDOWCONTROL_H -#include "bbmetadata.h" +#include "mmrenderermetadata.h" #include #include @@ -49,12 +49,12 @@ typedef struct mmr_context mmr_context_t; QT_BEGIN_NAMESPACE -class BbVideoWindowControl : public QVideoWindowControl +class MmRendererVideoWindowControl : public QVideoWindowControl { Q_OBJECT public: - explicit BbVideoWindowControl(QObject *parent = 0); - ~BbVideoWindowControl(); + explicit MmRendererVideoWindowControl(QObject *parent = 0); + ~MmRendererVideoWindowControl(); WId winId() const Q_DECL_OVERRIDE; void setWinId(WId id) Q_DECL_OVERRIDE; @@ -89,7 +89,7 @@ public: // void detachDisplay(); void attachDisplay(mmr_context_t *context); - void setMetaData(const BbMetaData &metaData); + void setMetaData(const MmRendererMetaData &metaData); void screenEventHandler(const screen_event_t &event); private: @@ -105,7 +105,7 @@ private: QRect m_displayRect; mmr_context_t *m_context; bool m_fullscreen; - BbMetaData m_metaData; + MmRendererMetaData m_metaData; Qt::AspectRatioMode m_aspectRatioMode; QString m_windowName; screen_window_t m_window; diff --git a/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp similarity index 97% rename from src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp rename to src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp index 889819b5..eb0842fb 100644 --- a/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.cpp +++ b/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "ppsmediaplayercontrol.h" -#include "bbvideowindowcontrol.h" +#include "mmrenderervideowindowcontrol.h" #include #include @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE PpsMediaPlayerControl::PpsMediaPlayerControl(QObject *parent) - : BbMediaPlayerControl(parent), + : MmRendererMediaPlayerControl(parent), m_ppsStatusNotifier(0), m_ppsStatusFd(-1), m_ppsStateNotifier(0), @@ -129,7 +129,7 @@ bool PpsMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void Q_UNUSED(result) if (eventType == "screen_event_t") { screen_event_t event = static_cast(message); - if (BbVideoWindowControl *control = videoWindowControl()) + if (MmRendererVideoWindowControl *control = videoWindowControl()) control->screenEventHandler(event); } diff --git a/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h b/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.h similarity index 95% rename from src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h rename to src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.h index 20da6396..e00d44df 100644 --- a/src/plugins/blackberry/mediaplayer/ppsmediaplayercontrol.h +++ b/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.h @@ -41,13 +41,13 @@ #ifndef PPSMEDIAPLAYERCONTROL_H #define PPSMEDIAPLAYERCONTROL_H -#include "bbmediaplayercontrol.h" +#include "mmrenderermediaplayercontrol.h" QT_BEGIN_NAMESPACE class QSocketNotifier; -class PpsMediaPlayerControl Q_DECL_FINAL : public BbMediaPlayerControl +class PpsMediaPlayerControl Q_DECL_FINAL : public MmRendererMediaPlayerControl { Q_OBJECT public: diff --git a/src/plugins/blackberry/neutrino_mediaservice.json b/src/plugins/qnx/neutrino_mediaservice.json similarity index 100% rename from src/plugins/blackberry/neutrino_mediaservice.json rename to src/plugins/qnx/neutrino_mediaservice.json diff --git a/src/plugins/blackberry/neutrinoserviceplugin.cpp b/src/plugins/qnx/neutrinoserviceplugin.cpp similarity index 96% rename from src/plugins/blackberry/neutrinoserviceplugin.cpp rename to src/plugins/qnx/neutrinoserviceplugin.cpp index 9ceae7d2..423af1a8 100644 --- a/src/plugins/blackberry/neutrinoserviceplugin.cpp +++ b/src/plugins/qnx/neutrinoserviceplugin.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "neutrinoserviceplugin.h" -#include "bbmediaplayerservice.h" +#include "mmrenderermediaplayerservice.h" QT_BEGIN_NAMESPACE @@ -51,7 +51,7 @@ NeutrinoServicePlugin::NeutrinoServicePlugin() QMediaService *NeutrinoServicePlugin::create(const QString &key) { if (key == QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER)) - return new BbMediaPlayerService(); + return new MmRendererMediaPlayerService(); return 0; } diff --git a/src/plugins/blackberry/neutrinoserviceplugin.h b/src/plugins/qnx/neutrinoserviceplugin.h similarity index 100% rename from src/plugins/blackberry/neutrinoserviceplugin.h rename to src/plugins/qnx/neutrinoserviceplugin.h diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index 3049729b..f0156211 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -1,3 +1,22 @@ -TEMPLATE = subdirs +TARGET = qtmedia_qnx +QT += multimedia-private gui-private -SUBDIRS = audio +PLUGIN_TYPE=mediaservice +PLUGIN_CLASS_NAME = BbServicePlugin +load(qt_plugin) + +LIBS += -lscreen + +include(common/common.pri) +include(mediaplayer/mediaplayer.pri) + +blackberry { + include(camera/camera.pri) + HEADERS += bbserviceplugin.h + SOURCES += bbserviceplugin.cpp + OTHER_FILES += blackberry_mediaservice.json +} else { + HEADERS += neutrinoserviceplugin.h + SOURCES += neutrinoserviceplugin.cpp + OTHER_FILES += neutrino_mediaservice.json +} From 2c7e734c8b4decc89820cc946ff72c89aee5cde5 Mon Sep 17 00:00:00 2001 From: Frank Osterfeld Date: Sat, 9 Nov 2013 18:20:28 +0100 Subject: [PATCH 20/20] Fix BB10 build Change-Id: I0aa72c5ff8e86a8a4da6e9223f7168207174185d Reviewed-by: Andreas Holzammer Reviewed-by: Rafael Roquetto --- src/plugins/qnx/bbserviceplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qnx/bbserviceplugin.cpp b/src/plugins/qnx/bbserviceplugin.cpp index 1a47b866..59be4645 100644 --- a/src/plugins/qnx/bbserviceplugin.cpp +++ b/src/plugins/qnx/bbserviceplugin.cpp @@ -42,7 +42,7 @@ #include "bbcameraservice.h" #include "bbvideodeviceselectorcontrol.h" -#include "bbmediaplayerservice.h" +#include "mmrenderermediaplayerservice.h" #include