summaryrefslogtreecommitdiff
path: root/src/plugins/android
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-04-09 19:13:45 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-09 16:33:12 +0200
commit5339aed040d58f8486205df1525508b8c02faa9c (patch)
tree5c73f5fcd04165f29f37c5a3170145daf9c193a0 /src/plugins/android
parent703ee3879bf055787f2219f5b2212053d9535fe9 (diff)
downloadqtmultimedia-5339aed040d58f8486205df1525508b8c02faa9c.tar.gz
qtmultimedia-5339aed040d58f8486205df1525508b8c02faa9c.tar.bz2
qtmultimedia-5339aed040d58f8486205df1525508b8c02faa9c.zip
Moved QMediaStorageLocation out of the Android plugin.
It's now a private API in the QtMultimedia library in order to be accessible in other plugins. Change-Id: I63541de1e8c540cebc210f9037646ce74d866c6f Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/plugins/android')
-rw-r--r--src/plugins/android/src/mediacapture/mediacapture.pri2
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerasession.cpp8
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerasession.h6
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcapturesession.cpp14
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcapturesession.h6
-rw-r--r--src/plugins/android/src/mediacapture/qandroidmediastoragelocation.cpp130
-rw-r--r--src/plugins/android/src/mediacapture/qandroidmediastoragelocation.h75
7 files changed, 23 insertions, 218 deletions
diff --git a/src/plugins/android/src/mediacapture/mediacapture.pri b/src/plugins/android/src/mediacapture/mediacapture.pri
index 01274414..fde0e3d6 100644
--- a/src/plugins/android/src/mediacapture/mediacapture.pri
+++ b/src/plugins/android/src/mediacapture/mediacapture.pri
@@ -12,7 +12,6 @@ SOURCES += \
$$PWD/qandroidcameraimagecapturecontrol.cpp \
$$PWD/qandroidcameracapturedestinationcontrol.cpp \
$$PWD/qandroidcameracapturebufferformatcontrol.cpp \
- $$PWD/qandroidmediastoragelocation.cpp \
$$PWD/qandroidcameraflashcontrol.cpp \
$$PWD/qandroidcamerafocuscontrol.cpp \
$$PWD/qandroidcameralockscontrol.cpp \
@@ -37,7 +36,6 @@ HEADERS += \
$$PWD/qandroidcameraimagecapturecontrol.h \
$$PWD/qandroidcameracapturedestinationcontrol.h \
$$PWD/qandroidcameracapturebufferformatcontrol.h \
- $$PWD/qandroidmediastoragelocation.h \
$$PWD/qandroidcameraflashcontrol.h \
$$PWD/qandroidcamerafocuscontrol.h \
$$PWD/qandroidcameralockscontrol.h \
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
index 6051cf96..53fb2f51 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Toolkit.
@@ -111,6 +111,10 @@ QAndroidCameraSession::QAndroidCameraSession(QObject *parent)
, m_captureCanceled(false)
, m_currentImageCaptureId(-1)
{
+ m_mediaStorageLocation.addStorageLocation(
+ QMediaStorageLocation::Pictures,
+ JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::DCIM));
+
if (qApp) {
connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)),
this, SLOT(onApplicationStateChanged(Qt::ApplicationState)));
@@ -644,7 +648,7 @@ void QAndroidCameraSession::processCapturedImage(int id,
if (dest & QCameraImageCapture::CaptureToFile) {
const QString actualFileName = m_mediaStorageLocation.generateFileName(fileName,
- QAndroidMediaStorageLocation::Camera,
+ QMediaStorageLocation::Pictures,
QLatin1String("IMG_"),
QLatin1String("jpg"));
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.h b/src/plugins/android/src/mediacapture/qandroidcamerasession.h
index f3ac6789..4c58cab9 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerasession.h
+++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Toolkit.
@@ -47,7 +47,7 @@
#include <QCameraImageCapture>
#include <QSet>
#include <QMutex>
-#include "qandroidmediastoragelocation.h"
+#include <private/qmediastoragelocation_p.h>
QT_BEGIN_NAMESPACE
@@ -174,7 +174,7 @@ private:
int m_currentImageCaptureId;
QString m_currentImageCaptureFileName;
- QAndroidMediaStorageLocation m_mediaStorageLocation;
+ QMediaStorageLocation m_mediaStorageLocation;
QSet<QAndroidMediaVideoProbeControl *> m_videoProbes;
QMutex m_videoProbesMutex;
diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
index 008ebc7d..4b1c5825 100644
--- a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Toolkit.
@@ -65,6 +65,14 @@ QAndroidCaptureSession::QAndroidCaptureSession(QAndroidCameraSession *cameraSess
, m_audioEncoder(JMediaRecorder::DefaultAudioEncoder)
, m_videoEncoder(JMediaRecorder::DefaultVideoEncoder)
{
+ m_mediaStorageLocation.addStorageLocation(
+ QMediaStorageLocation::Movies,
+ JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::DCIM));
+
+ m_mediaStorageLocation.addStorageLocation(
+ QMediaStorageLocation::Sounds,
+ JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::Sounds));
+
connect(this, SIGNAL(stateChanged(QMediaRecorder::State)), this, SLOT(updateStatus()));
if (cameraSession) {
@@ -214,8 +222,8 @@ bool QAndroidCaptureSession::start()
QString filePath = m_mediaStorageLocation.generateFileName(
m_requestedOutputLocation.isLocalFile() ? m_requestedOutputLocation.toLocalFile()
: m_requestedOutputLocation.toString(),
- m_cameraSession ? QAndroidMediaStorageLocation::Camera
- : QAndroidMediaStorageLocation::Audio,
+ m_cameraSession ? QMediaStorageLocation::Movies
+ : QMediaStorageLocation::Sounds,
m_cameraSession ? QLatin1String("VID_")
: QLatin1String("REC_"),
m_containerFormat);
diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.h b/src/plugins/android/src/mediacapture/qandroidcapturesession.h
index 32ca9d1a..4b6121df 100644
--- a/src/plugins/android/src/mediacapture/qandroidcapturesession.h
+++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Toolkit.
@@ -47,7 +47,7 @@
#include <qurl.h>
#include <qelapsedtimer.h>
#include <qtimer.h>
-#include "qandroidmediastoragelocation.h"
+#include <private/qmediastoragelocation_p.h>
#include "jmediarecorder.h"
QT_BEGIN_NAMESPACE
@@ -152,7 +152,7 @@ private:
QString m_audioInput;
JMediaRecorder::AudioSource m_audioSource;
- QAndroidMediaStorageLocation m_mediaStorageLocation;
+ QMediaStorageLocation m_mediaStorageLocation;
QElapsedTimer m_elapsedTime;
QTimer m_notifyTimer;
diff --git a/src/plugins/android/src/mediacapture/qandroidmediastoragelocation.cpp b/src/plugins/android/src/mediacapture/qandroidmediastoragelocation.cpp
deleted file mode 100644
index 2bd3da19..00000000
--- a/src/plugins/android/src/mediacapture/qandroidmediastoragelocation.cpp
+++ /dev/null
@@ -1,130 +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 "qandroidmediastoragelocation.h"
-
-#include "jmultimediautils.h"
-
-QT_BEGIN_NAMESPACE
-
-QAndroidMediaStorageLocation::QAndroidMediaStorageLocation()
-{
-}
-
-QDir QAndroidMediaStorageLocation::defaultDir(CaptureSource source) const
-{
- QStringList dirCandidates;
-
- if (source == Camera)
- dirCandidates << JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::DCIM);
- else
- dirCandidates << JMultimediaUtils::getDefaultMediaDirectory(JMultimediaUtils::Sounds);
- dirCandidates << QDir::homePath();
- dirCandidates << QDir::currentPath();
- dirCandidates << QDir::tempPath();
-
- Q_FOREACH (const QString &path, dirCandidates) {
- if (QFileInfo(path).isWritable())
- return QDir(path);
- }
-
- return QDir();
-}
-
-QString QAndroidMediaStorageLocation::generateFileName(const QString &requestedName,
- CaptureSource source,
- const QString &prefix,
- const QString &extension) const
-{
- if (requestedName.isEmpty())
- return generateFileName(prefix, defaultDir(source), extension);
-
- QString path = requestedName;
-
- if (QFileInfo(path).isRelative())
- path = defaultDir(source).absoluteFilePath(path);
-
- if (QFileInfo(path).isDir())
- return generateFileName(prefix, QDir(path), extension);
-
- if (!path.endsWith(extension))
- path.append(QString(".%1").arg(extension));
-
- return path;
-}
-
-QString QAndroidMediaStorageLocation::generateFileName(const QString &prefix,
- const QDir &dir,
- const QString &extension) const
-{
- QMutexLocker lock(&m_mutex);
-
- const QString lastMediaKey = dir.absolutePath() + QLatin1Char(' ') + prefix + QLatin1Char(' ') + extension;
- qint64 lastMediaIndex = m_lastUsedIndex.value(lastMediaKey, 0);
-
- if (lastMediaIndex == 0) {
- // first run, find the maximum media number during the fist capture
- Q_FOREACH (const QString &fileName, dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(extension))) {
- const qint64 mediaIndex = fileName.midRef(prefix.length(), fileName.size() - prefix.length() - extension.length() - 1).toInt();
- lastMediaIndex = qMax(lastMediaIndex, mediaIndex);
- }
- }
-
- // don't just rely on cached lastMediaIndex value,
- // someone else may create a file after camera started
- while (true) {
- const QString name = QString("%1%2.%3").arg(prefix)
- .arg(lastMediaIndex + 1, 8, 10, QLatin1Char('0'))
- .arg(extension);
-
- const QString path = dir.absoluteFilePath(name);
- if (!QFileInfo(path).exists()) {
- m_lastUsedIndex[lastMediaKey] = lastMediaIndex + 1;
- return path;
- }
-
- lastMediaIndex++;
- }
-
- return QString();
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/android/src/mediacapture/qandroidmediastoragelocation.h b/src/plugins/android/src/mediacapture/qandroidmediastoragelocation.h
deleted file mode 100644
index 2e63f3df..00000000
--- a/src/plugins/android/src/mediacapture/qandroidmediastoragelocation.h
+++ /dev/null
@@ -1,75 +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$
-**
-****************************************************************************/
-
-#ifndef QANDROIDMEDIASTORAGELOCATION_H
-#define QANDROIDMEDIASTORAGELOCATION_H
-
-#include <QCamera>
-#include <QDir>
-#include <QHash>
-#include <QMutex>
-
-QT_BEGIN_NAMESPACE
-
-class QAndroidMediaStorageLocation
-{
-public:
- enum CaptureSource {
- Camera,
- Audio
- };
-
- QAndroidMediaStorageLocation();
-
- QDir defaultDir(CaptureSource source) const;
-
- QString generateFileName(const QString &requestedName, CaptureSource source, const QString &prefix, const QString &extension) const;
- QString generateFileName(const QString &prefix, const QDir &dir, const QString &extension) const;
-
-private:
- mutable QHash<QString, qint64> m_lastUsedIndex;
-
- mutable QMutex m_mutex;
-};
-
-QT_END_NAMESPACE
-
-#endif // QANDROIDMEDIASTORAGELOCATION_H