diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2024-03-07 16:25:23 +0100 |
---|---|---|
committer | Artem Dyomin <artem.dyomin@qt.io> | 2024-03-17 16:37:41 +0000 |
commit | 45d7e7f1b6d8c7d2de7fac4ae90067904ec27fbc (patch) | |
tree | da019f65037339addd70d818e0bf0cb902fb0cf3 /src/multimedia/platform | |
parent | 40b2e2dc07532e080918e9874218635f5b045110 (diff) |
Move logic of finding actual media location to a separate function
The change is need to ensure better backport compatibility
with changes related to 'setOutputDevice'.
The function might be reused in other media backends, so it should be
in the base class.
Task-number: QTBUG-121827
Pick-to: 6.7 6.6 6.5
Change-Id: I8be73598f949f07fc75df0874797cb96967c49fe
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Diffstat (limited to 'src/multimedia/platform')
-rw-r--r-- | src/multimedia/platform/qplatformmediarecorder.cpp | 17 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediarecorder_p.h | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/multimedia/platform/qplatformmediarecorder.cpp b/src/multimedia/platform/qplatformmediarecorder.cpp index 6aa76e066..ba9ea0165 100644 --- a/src/multimedia/platform/qplatformmediarecorder.cpp +++ b/src/multimedia/platform/qplatformmediarecorder.cpp @@ -2,6 +2,8 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qplatformmediarecorder_p.h" +#include "qstandardpaths.h" +#include "qmediastoragelocation_p.h" #include <QObject> QT_BEGIN_NAMESPACE @@ -55,4 +57,19 @@ void QPlatformMediaRecorder::metaDataChanged() emit q->metaDataChanged(); } +QString QPlatformMediaRecorder::findActualLocation(const QMediaEncoderSettings &settings) const +{ + const auto audioOnly = settings.videoCodec() == QMediaFormat::VideoCodec::Unspecified; + + const auto primaryLocation = + audioOnly ? QStandardPaths::MusicLocation : QStandardPaths::MoviesLocation; + const QString suffix = settings.mimeType().preferredSuffix(); + const QString location = QMediaStorageLocation::generateFileName( + outputLocation().toString(QUrl::PreferLocalFile), primaryLocation, suffix); + + Q_ASSERT(!location.isEmpty()); + + return location; +} + QT_END_NAMESPACE diff --git a/src/multimedia/platform/qplatformmediarecorder_p.h b/src/multimedia/platform/qplatformmediarecorder_p.h index 31df21710..214510a29 100644 --- a/src/multimedia/platform/qplatformmediarecorder_p.h +++ b/src/multimedia/platform/qplatformmediarecorder_p.h @@ -136,6 +136,8 @@ protected: QMediaRecorder *mediaRecorder() { return q; } + QString findActualLocation(const QMediaEncoderSettings &settings) const; + private: QMediaRecorder *q = nullptr; QErrorInfo<QMediaRecorder::Error> m_error; |