diff options
author | Tomi Korpipaa <tomi.korpipaa@qt.io> | 2022-10-19 13:10:27 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-10-20 06:52:13 +0000 |
commit | 14169aa8544026e11bccf3380171e5867e337dc3 (patch) | |
tree | 285a92b9bb8997f71e9365e7beba2024f167b9a9 | |
parent | 280cb7fad20b077f22c915280d0293084822d499 (diff) | |
download | qt3d-14169aa8544026e11bccf3380171e5867e337dc3.tar.gz |
Fix audio-visualizer example
Fixes: QTCREATORBUG-27852
Change-Id: Icc10aa51f54a7ff19dcff2349048b436f273d6bf
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
(cherry picked from commit be9ccff07db89d2b6470b5654b0244ee8699c150)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | examples/qt3d/audio-visualizer-qml/Visualizer.qml | 4 | ||||
-rw-r--r-- | examples/qt3d/audio-visualizer-qml/main.cpp | 1 | ||||
-rw-r--r-- | examples/qt3d/audio-visualizer-qml/main.qml | 40 |
3 files changed, 23 insertions, 22 deletions
diff --git a/examples/qt3d/audio-visualizer-qml/Visualizer.qml b/examples/qt3d/audio-visualizer-qml/Visualizer.qml index 554e8025d..1b4ccec0e 100644 --- a/examples/qt3d/audio-visualizer-qml/Visualizer.qml +++ b/examples/qt3d/audio-visualizer-qml/Visualizer.qml @@ -10,9 +10,10 @@ Entity { id: sceneRoot property int barRotationTimeMs: 1 property int numberOfBars: 1 - property string animationState: "stopped" + property string animationState property real titleStartAngle: 95 property real titleStopAngle: 5 + property bool started: false onAnimationStateChanged: { if (animationState == "playing") { @@ -73,6 +74,7 @@ Entity { progressTransformAnimation.duration = mediaPlayer.duration mainview.state = "playing" progressTransformAnimation.start() + started = true } //![0] diff --git a/examples/qt3d/audio-visualizer-qml/main.cpp b/examples/qt3d/audio-visualizer-qml/main.cpp index f55cb5ee8..6b3237fdd 100644 --- a/examples/qt3d/audio-visualizer-qml/main.cpp +++ b/examples/qt3d/audio-visualizer-qml/main.cpp @@ -10,6 +10,7 @@ int main(int argc, char* argv[]) { + qputenv("QML_XHR_ALLOW_FILE_READ", "1"); #ifdef Q_OS_ANDROID QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif diff --git a/examples/qt3d/audio-visualizer-qml/main.qml b/examples/qt3d/audio-visualizer-qml/main.qml index 4f4977f55..49c26106b 100644 --- a/examples/qt3d/audio-visualizer-qml/main.qml +++ b/examples/qt3d/audio-visualizer-qml/main.qml @@ -1,10 +1,10 @@ // Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -import QtQuick 2.0 -import QtQuick.Scene3D 2.0 -import QtQuick.Layouts 1.2 -import QtMultimedia 5.0 +import QtQuick +import QtQuick.Scene3D +import QtQuick.Layouts +import QtMultimedia Item { id: mainview @@ -70,30 +70,25 @@ Item { //![0] MediaPlayer { id: mediaPlayer - autoPlay: true - volume: 0.5 source: "qrc:/music/tiltshifted_lost_neon_sun.mp3" + audioOutput: AudioOutput {} //![0] - onStatusChanged: { - if (status == MediaPlayer.EndOfMedia) //{ - state = "stopped" - } - - onError: console.error("error with audio " + mediaPlayer.error) - - onDurationChanged: { - // Load the pre-calculated magnitude data for the visualizer - var request = new XMLHttpRequest() - request.responseType = 'arraybuffer' - request.onreadystatechange = function() { + onMediaStatusChanged: { + if (mediaStatus == MediaPlayer.EndOfMedia) { + mainview.state = "stopped" + } else if (mediaStatus == MediaPlayer.LoadedMedia && !visualizer.started) { + // Load the pre-calculated magnitude data for the visualizer + var request = new XMLHttpRequest() + request.responseType = 'arraybuffer' + request.onreadystatechange = function() { if (request.readyState === XMLHttpRequest.DONE) { if (request.status == 200 || request.status == 0) { var arrayBuffer = request.response if (arrayBuffer) { magnitudeArray = new Uint16Array(arrayBuffer) visualizer.startVisualization() - } + } } else { console.warn("Couldn't load magnitude data for bars.") } @@ -101,10 +96,13 @@ Item { } }; - request.open('GET', magnitudeDataSourceFile, true) - request.send(null) + request.open('GET', magnitudeDataSourceFile, true) + request.send(null) + } } + onErrorStringChanged: console.error("error with audio " + errorString) + function getNextAudioLevel(offsetMs) { if (magnitudeArray === null) return 0.0; |