diff options
Diffstat (limited to 'examples/multimedia')
-rw-r--r-- | examples/multimedia/audiodecoder/audiodecoder.cpp | 24 | ||||
-rw-r--r-- | examples/multimedia/audiodecoder/main.cpp | 10 | ||||
-rw-r--r-- | examples/multimedia/spectrum/app/engine.cpp | 6 | ||||
-rw-r--r-- | examples/multimedia/video/qmlvideo/main.cpp | 21 | ||||
-rw-r--r-- | examples/multimedia/video/qmlvideo/qmlvideo.pro | 4 | ||||
-rw-r--r-- | examples/multimedia/video/qmlvideofx/main.cpp | 21 | ||||
-rw-r--r-- | examples/multimedia/video/qmlvideofx/qmlvideofx.pro | 4 |
7 files changed, 71 insertions, 19 deletions
diff --git a/examples/multimedia/audiodecoder/audiodecoder.cpp b/examples/multimedia/audiodecoder/audiodecoder.cpp index 86904f7c9..f812fd3b6 100644 --- a/examples/multimedia/audiodecoder/audiodecoder.cpp +++ b/examples/multimedia/audiodecoder/audiodecoder.cpp @@ -129,16 +129,16 @@ void AudioDecoder::error(QAudioDecoder::Error error) case QAudioDecoder::NoError: return; case QAudioDecoder::ResourceError: - m_cout << "Resource error" << endl; + m_cout << "Resource error\n"; break; case QAudioDecoder::FormatError: - m_cout << "Format error" << endl; + m_cout << "Format error\n"; break; case QAudioDecoder::AccessDeniedError: - m_cout << "Access denied error" << endl; + m_cout << "Access denied error\n"; break; case QAudioDecoder::ServiceMissingError: - m_cout << "Service missing error" << endl; + m_cout << "Service missing error\n"; break; } @@ -149,10 +149,10 @@ void AudioDecoder::stateChanged(QAudioDecoder::State newState) { switch (newState) { case QAudioDecoder::DecodingState: - m_cout << "Decoding..." << endl; + m_cout << "Decoding...\n"; break; case QAudioDecoder::StoppedState: - m_cout << "Decoding stopped" << endl; + m_cout << "Decoding stopped\n"; break; } } @@ -160,12 +160,12 @@ void AudioDecoder::stateChanged(QAudioDecoder::State newState) void AudioDecoder::finished() { if (!m_fileWriter.close()) - m_cout << "Failed to finilize output file" << endl; + m_cout << "Failed to finilize output file\n"; - m_cout << "Decoding finished" << endl; + m_cout << "Decoding finished\n"; if (m_isPlayback) { - m_cout << "Starting playback" << endl; + m_cout << "Starting playback\n"; m_soundEffect.setSource(QUrl::fromLocalFile(m_targetFilename)); m_soundEffect.play(); } else { @@ -176,7 +176,7 @@ void AudioDecoder::finished() void AudioDecoder::playbackStatusChanged() { if (m_soundEffect.status() == QSoundEffect::Error) { - m_cout << "Playback error" << endl; + m_cout << "Playback error\n"; emit done(); } } @@ -184,7 +184,7 @@ void AudioDecoder::playbackStatusChanged() void AudioDecoder::playingChanged() { if (!m_soundEffect.isPlaying()) { - m_cout << "Playback finished" << endl; + m_cout << "Playback finished\n"; if (m_isDelete) QFile::remove(m_targetFilename); emit done(); @@ -200,7 +200,7 @@ void AudioDecoder::updateProgress() progress = position / (qreal)duration; if (progress > m_progress + 0.1) { - m_cout << "Decoding progress: " << (int)(progress * 100.0) << "%" << endl; + m_cout << "Decoding progress: " << (int)(progress * 100.0) << "%\n"; m_progress = progress; } } diff --git a/examples/multimedia/audiodecoder/main.cpp b/examples/multimedia/audiodecoder/main.cpp index c0947b83f..9c536ef0a 100644 --- a/examples/multimedia/audiodecoder/main.cpp +++ b/examples/multimedia/audiodecoder/main.cpp @@ -63,10 +63,10 @@ int main(int argc, char *argv[]) QTextStream cout(stdout, QIODevice::WriteOnly); if (app.arguments().size() < 2) { - cout << "Usage: audiodecoder [-p] [-pd] SOURCEFILE [TARGETFILE]" << endl; - cout << "Set -p option if you want to play output file." << endl; - cout << "Set -pd option if you want to play output file and delete it after successful playback." << endl; - cout << "Default TARGETFILE name is \"out.wav\" in the same directory as the source file." << endl; + cout << "Usage: audiodecoder [-p] [-pd] SOURCEFILE [TARGETFILE]\n"; + cout << "Set -p option if you want to play output file.\n"; + cout << "Set -pd option if you want to play output file and delete it after successful playback.\n"; + cout << "Default TARGETFILE name is \"out.wav\" in the same directory as the source file.\n"; return 0; } @@ -85,7 +85,7 @@ int main(int argc, char *argv[]) int sourceFileIndex = (isPlayback || isDelete) ? 2 : 1; if (app.arguments().size() <= sourceFileIndex) { - cout << "Error: source filename is not specified." << endl; + cout << "Error: source filename is not specified.\n"; return 0; } sourceFile.setFile(app.arguments().at(sourceFileIndex)); diff --git a/examples/multimedia/spectrum/app/engine.cpp b/examples/multimedia/spectrum/app/engine.cpp index fd977785b..d188259dc 100644 --- a/examples/multimedia/spectrum/app/engine.cpp +++ b/examples/multimedia/spectrum/app/engine.cpp @@ -569,15 +569,17 @@ bool Engine::selectFormat() sampleRatesList += m_audioInputDevice.supportedSampleRates(); sampleRatesList += m_audioOutputDevice.supportedSampleRates(); - sampleRatesList = sampleRatesList.toSet().toList(); // remove duplicates std::sort(sampleRatesList.begin(), sampleRatesList.end()); + const auto uniqueRatesEnd = std::unique(sampleRatesList.begin(), sampleRatesList.end()); + sampleRatesList.erase(uniqueRatesEnd, sampleRatesList.end()); ENGINE_DEBUG << "Engine::initialize frequenciesList" << sampleRatesList; QList<int> channelsList; channelsList += m_audioInputDevice.supportedChannelCounts(); channelsList += m_audioOutputDevice.supportedChannelCounts(); - channelsList = channelsList.toSet().toList(); std::sort(channelsList.begin(), channelsList.end()); + const auto uniqueChannelsEnd = std::unique(channelsList.begin(), channelsList.end()); + channelsList.erase(uniqueChannelsEnd, channelsList.end()); ENGINE_DEBUG << "Engine::initialize channelsList" << channelsList; QAudioFormat format; diff --git a/examples/multimedia/video/qmlvideo/main.cpp b/examples/multimedia/video/qmlvideo/main.cpp index e288c0ae4..01178acaa 100644 --- a/examples/multimedia/video/qmlvideo/main.cpp +++ b/examples/multimedia/video/qmlvideo/main.cpp @@ -62,6 +62,23 @@ #include "performancemonitordeclarative.h" #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID +#include <QtAndroid> + +bool requestStoragePermission() { + using namespace QtAndroid; + + QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); + const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); + if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + + return true; +} +#endif + static const QString DefaultFileName1 = ""; static const QString DefaultFileName2 = ""; @@ -72,6 +89,10 @@ int main(int argc, char *argv[]) #ifdef PERFORMANCEMONITOR_SUPPORT PerformanceMonitor::qmlRegisterTypes(); #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID + if (!requestStoragePermission()) + return -1; +#endif QString source1, source2; qreal volume = 0.5; diff --git a/examples/multimedia/video/qmlvideo/qmlvideo.pro b/examples/multimedia/video/qmlvideo/qmlvideo.pro index 022835f12..dbd3a42a1 100644 --- a/examples/multimedia/video/qmlvideo/qmlvideo.pro +++ b/examples/multimedia/video/qmlvideo/qmlvideo.pro @@ -2,6 +2,10 @@ TEMPLATE = app TARGET = qmlvideo QT += quick multimedia +android: qtHaveModule(androidextras) { + QT += androidextras + DEFINES += REQUEST_PERMISSIONS_ON_ANDROID +} LOCAL_SOURCES = main.cpp LOCAL_HEADERS = trace.h diff --git a/examples/multimedia/video/qmlvideofx/main.cpp b/examples/multimedia/video/qmlvideofx/main.cpp index 814c85368..ec547795f 100644 --- a/examples/multimedia/video/qmlvideofx/main.cpp +++ b/examples/multimedia/video/qmlvideofx/main.cpp @@ -61,6 +61,23 @@ #include "performancemonitordeclarative.h" #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID +#include <QtAndroid> + +bool requestStoragePermission() { + using namespace QtAndroid; + + QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); + const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); + if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + + return true; +} +#endif + int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); @@ -68,6 +85,10 @@ int main(int argc, char *argv[]) #ifdef PERFORMANCEMONITOR_SUPPORT PerformanceMonitor::qmlRegisterTypes(); #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID + if (!requestStoragePermission()) + return -1; +#endif QUrl fileName; qreal volume = 0.5; diff --git a/examples/multimedia/video/qmlvideofx/qmlvideofx.pro b/examples/multimedia/video/qmlvideofx/qmlvideofx.pro index 097ad7516..07047aec8 100644 --- a/examples/multimedia/video/qmlvideofx/qmlvideofx.pro +++ b/examples/multimedia/video/qmlvideofx/qmlvideofx.pro @@ -2,6 +2,10 @@ TEMPLATE = app TARGET = qmlvideofx QT += quick multimedia +android: qtHaveModule(androidextras) { + QT += androidextras + DEFINES += REQUEST_PERMISSIONS_ON_ANDROID +} SOURCES += filereader.cpp main.cpp HEADERS += filereader.h trace.h |