diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-03-30 03:00:25 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-03-30 03:00:25 +0100 |
commit | f05ef30ec1eacea7582b268d77a5e8654af2fdd5 (patch) | |
tree | f6a1a33f70224d8171febaa93d94e28ced15478f | |
parent | 8017e4a1c00a129864a34bf15562c4a38a7f9716 (diff) | |
parent | b07a7d79f3080892d381c40ec79679450bda5431 (diff) |
Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: If1977853a4e364f06f91bfe1d2cb128a920050f0
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); |