diff --git a/src/multimedia/playback/playlistfileparser.cpp b/src/multimedia/playback/playlistfileparser.cpp
index d5889187f4ca94bd490fac7fb0c3aacbababed7c..237e417a6c1b3e6cfd8f753522a6fc27104c6ed5 100644
--- a/src/multimedia/playback/playlistfileparser.cpp
+++ b/src/multimedia/playback/playlistfileparser.cpp
@@ -73,7 +73,7 @@ protected:
         if (url.scheme().isEmpty()) {
             // Resolve it relative to root
             if (root.isLocalFile())
-                return root.resolved(QUrl::fromLocalFile(line));
+                return QUrl::fromUserInput(line, root.adjusted(QUrl::RemoveFilename).toLocalFile(), QUrl::AssumeLocalFile);
             else
                 return root.resolved(url);
         } else if (url.scheme().length() == 1) {
diff --git a/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp b/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp
index 2706481c928e5754c613a6ccbe300ad39c7c480b..8463149db90834b0e77d6149fa2f9c306e699c3e 100644
--- a/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp
+++ b/tests/auto/integration/qaudioinput/tst_qaudioinput.cpp
@@ -639,7 +639,7 @@ void tst_QAudioInput::push()
     QByteArray buffer(AUDIO_BUFFER, 0);
     qint64 len = (audioFormat.sampleRate()*audioFormat.channelCount()*(audioFormat.sampleSize()/8)*2); // 2 seconds
     while (totalBytesRead < len) {
-        QTRY_VERIFY(audioInput.bytesReady() >= audioInput.periodSize());
+        QTRY_VERIFY_WITH_TIMEOUT(audioInput.bytesReady() >= audioInput.periodSize(), 10000);
         qint64 bytesRead = feed->read(buffer.data(), audioInput.periodSize());
         audioFile->write(buffer.constData(),bytesRead);
         totalBytesRead+=bytesRead;
@@ -720,7 +720,7 @@ void tst_QAudioInput::pushSuspendResume()
     QByteArray buffer(AUDIO_BUFFER, 0);
     qint64 len = (audioFormat.sampleRate()*audioFormat.channelCount()*(audioFormat.sampleSize()/8)); // 1 seconds
     while (totalBytesRead < len) {
-        QTRY_VERIFY(audioInput.bytesReady() >= audioInput.periodSize());
+        QTRY_VERIFY_WITH_TIMEOUT(audioInput.bytesReady() >= audioInput.periodSize(), 10000);
         qint64 bytesRead = feed->read(buffer.data(), audioInput.periodSize());
         audioFile->write(buffer.constData(),bytesRead);
         totalBytesRead+=bytesRead;
@@ -775,7 +775,7 @@ void tst_QAudioInput::pushSuspendResume()
     totalBytesRead = 0;
     firstBuffer = true;
     while (totalBytesRead < len && audioInput.state() != QAudio::StoppedState) {
-        QTRY_VERIFY(audioInput.bytesReady() >= audioInput.periodSize());
+        QTRY_VERIFY_WITH_TIMEOUT(audioInput.bytesReady() >= audioInput.periodSize(), 10000);
         qint64 bytesRead = feed->read(buffer.data(), audioInput.periodSize());
         audioFile->write(buffer.constData(),bytesRead);
         totalBytesRead+=bytesRead;
@@ -822,7 +822,7 @@ void tst_QAudioInput::reset()
         QVERIFY2((audioInput.state() == QAudio::IdleState), "didn't transition to IdleState after start()");
         QVERIFY2((audioInput.error() == QAudio::NoError), "error state is not equal to QAudio::NoError after start()");
         QVERIFY(audioInput.periodSize() > 0);
-        QTRY_VERIFY2((audioInput.bytesReady() > audioInput.periodSize()), "no bytes available after starting");
+        QTRY_VERIFY2_WITH_TIMEOUT((audioInput.bytesReady() > audioInput.periodSize()), "no bytes available after starting", 10000);
 
         // Trigger a read
         QByteArray data = device->read(audioInput.periodSize());