summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-03-30 03:00:25 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-03-30 03:00:25 +0100
commitf05ef30ec1eacea7582b268d77a5e8654af2fdd5 (patch)
treef6a1a33f70224d8171febaa93d94e28ced15478f
parent8017e4a1c00a129864a34bf15562c4a38a7f9716 (diff)
parentb07a7d79f3080892d381c40ec79679450bda5431 (diff)
Merge remote-tracking branch 'origin/5.13' into dev
-rw-r--r--src/gsttools/qgstreamerplayersession.cpp5
-rw-r--r--src/multimedia/audio/qsoundeffect_pulse_p.cpp2
-rw-r--r--src/multimedia/audio/qsoundeffect_qaudio_p.cpp2
-rw-r--r--src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java17
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp2
-rw-r--r--src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp12
-rw-r--r--src/plugins/android/src/wrappers/jni/androidmediaplayer.h3
7 files changed, 36 insertions, 7 deletions
diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp
index f21c94c5c..9858f61c9 100644
--- a/src/gsttools/qgstreamerplayersession.cpp
+++ b/src/gsttools/qgstreamerplayersession.cpp
@@ -402,9 +402,14 @@ void QGstreamerPlayerSession::setPipeline(GstElement *pipeline)
if (m_renderer) {
auto it = gst_bin_iterate_sinks(GST_BIN(pipeline));
+#if GST_CHECK_VERSION(1,0,0)
GValue data = { 0, 0 };
while (gst_iterator_next (it, &data) == GST_ITERATOR_OK) {
auto child = static_cast<GstElement*>(g_value_get_object(&data));
+#else
+ GstElement *child = nullptr;
+ while (gst_iterator_next(it, reinterpret_cast<gpointer *>(&child)) == GST_ITERATOR_OK) {
+#endif
if (QLatin1String(GST_OBJECT_NAME(child)) == QLatin1String("qtvideosink")) {
m_renderer->setVideoSink(child);
break;
diff --git a/src/multimedia/audio/qsoundeffect_pulse_p.cpp b/src/multimedia/audio/qsoundeffect_pulse_p.cpp
index 075e639a8..0855c1f67 100644
--- a/src/multimedia/audio/qsoundeffect_pulse_p.cpp
+++ b/src/multimedia/audio/qsoundeffect_pulse_p.cpp
@@ -750,7 +750,7 @@ void QSoundEffectPrivate::sampleReady()
void QSoundEffectPrivate::decoderError()
{
- qWarning("QSoundEffect(pulseaudio): Error decoding source");
+ qWarning("QSoundEffect(pulseaudio): Error decoding source %ls", qUtf16Printable(m_source.toString()));
disconnect(m_sample, &QSample::error, this, &QSoundEffectPrivate::decoderError);
bool playingDirty = false;
if (m_playing) {
diff --git a/src/multimedia/audio/qsoundeffect_qaudio_p.cpp b/src/multimedia/audio/qsoundeffect_qaudio_p.cpp
index ac4dd9cf9..b553671fa 100644
--- a/src/multimedia/audio/qsoundeffect_qaudio_p.cpp
+++ b/src/multimedia/audio/qsoundeffect_qaudio_p.cpp
@@ -354,7 +354,7 @@ void PrivateSoundSource::sampleReady()
void PrivateSoundSource::decoderError()
{
- qWarning("QSoundEffect(qaudio): Error decoding source");
+ qWarning("QSoundEffect(qaudio): Error decoding source %ls", qUtf16Printable(m_url.toString()));
disconnect(m_sample, &QSample::ready, this, &PrivateSoundSource::sampleReady);
disconnect(m_sample, &QSample::error, this, &PrivateSoundSource::decoderError);
m_playing = false;
diff --git a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
index 6569a7b8d..5a0462338 100644
--- a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
+++ b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
@@ -41,6 +41,7 @@ package org.qtproject.qt5.android.multimedia;
import java.io.IOException;
import java.lang.String;
+import java.util.HashMap;
import java.io.FileInputStream;
// API is level is < 9 unless marked otherwise.
@@ -67,6 +68,7 @@ public class QtAndroidMediaPlayer
private MediaPlayer mMediaPlayer = null;
private AudioAttributes mAudioAttributes = null;
+ private HashMap<String, String> mHeaders = null;
private Uri mUri = null;
private final long mID;
private final Context mContext;
@@ -344,6 +346,16 @@ public class QtAndroidMediaPlayer
}
}
+ public void initHeaders()
+ {
+ mHeaders = new HashMap<String, String>();
+ }
+
+ public void setHeader(final String header, final String value)
+ {
+ mHeaders.put(header, value);
+ }
+
public void setDataSource(final String path)
{
if ((mState & State.Uninitialized) != 0)
@@ -381,7 +393,10 @@ public class QtAndroidMediaPlayer
FileDescriptor fd = fis.getFD();
mMediaPlayer.setDataSource(fd);
} else {
- mMediaPlayer.setDataSource(path);
+ if (mHeaders.isEmpty())
+ mMediaPlayer.setDataSource(path);
+ else
+ mMediaPlayer.setDataSource(mContext, mUri, mHeaders);
}
setState(State.Initialized);
} catch (final IOException e) {
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
index 4bfcce5bc..13a8cdbbb 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.cpp
@@ -384,7 +384,7 @@ void QAndroidMediaPlayerControl::setMedia(const QMediaContent &mediaContent,
if ((mMediaPlayer->display() == 0) && mVideoOutput)
mMediaPlayer->setDisplay(mVideoOutput->surfaceTexture());
- mMediaPlayer->setDataSource(mediaContent.canonicalUrl().toString(QUrl::FullyEncoded));
+ mMediaPlayer->setDataSource(mediaContent.canonicalRequest());
mMediaPlayer->prepareAsync();
}
diff --git a/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp b/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp
index 79685e16f..f899481f0 100644
--- a/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp
+++ b/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp
@@ -166,9 +166,17 @@ void AndroidMediaPlayer::setMuted(bool mute)
mMediaPlayer.callMethod<void>("mute", "(Z)V", jboolean(mute));
}
-void AndroidMediaPlayer::setDataSource(const QString &path)
+void AndroidMediaPlayer::setDataSource(const QNetworkRequest &request)
{
- QJNIObjectPrivate string = QJNIObjectPrivate::fromString(path);
+ QJNIObjectPrivate string = QJNIObjectPrivate::fromString(request.url().toString(QUrl::FullyEncoded));
+
+ mMediaPlayer.callMethod<void>("initHeaders", "()V");
+ for (auto &header : request.rawHeaderList()) {
+ auto value = request.rawHeader(header);
+ mMediaPlayer.callMethod<void>("setHeader", "(Ljava/lang/String;Ljava/lang/String;)V",
+ QJNIObjectPrivate::fromString(header).object(), QJNIObjectPrivate::fromString(value).object());
+ }
+
mMediaPlayer.callMethod<void>("setDataSource", "(Ljava/lang/String;)V", string.object());
}
diff --git a/src/plugins/android/src/wrappers/jni/androidmediaplayer.h b/src/plugins/android/src/wrappers/jni/androidmediaplayer.h
index 14cbf49bc..37c7456f7 100644
--- a/src/plugins/android/src/wrappers/jni/androidmediaplayer.h
+++ b/src/plugins/android/src/wrappers/jni/androidmediaplayer.h
@@ -41,6 +41,7 @@
#define ANDROIDMEDIAPLAYER_H
#include <QObject>
+#include <QNetworkRequest>
#include <QtCore/private/qjni_p.h>
#include <QAudio>
@@ -112,7 +113,7 @@ public:
void stop();
void seekTo(qint32 msec);
void setMuted(bool mute);
- void setDataSource(const QString &path);
+ void setDataSource(const QNetworkRequest &request);
void prepareAsync();
void setVolume(int volume);
bool setPlaybackRate(qreal rate);