summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/alsa/alsa.pro2
-rw-r--r--src/plugins/directshow/player/directshowplayercontrol.cpp14
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinsession.cpp6
-rw-r--r--src/plugins/videonode/imx6/imx6.pro6
-rw-r--r--src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp12
5 files changed, 32 insertions, 8 deletions
diff --git a/src/plugins/alsa/alsa.pro b/src/plugins/alsa/alsa.pro
index 56657f100..4012bb8f6 100644
--- a/src/plugins/alsa/alsa.pro
+++ b/src/plugins/alsa/alsa.pro
@@ -1,7 +1,7 @@
TARGET = qtaudio_alsa
QT += multimedia-private
-LIBS += -lasound
+QMAKE_USE += alsa
HEADERS += \
qalsaplugin.h \
diff --git a/src/plugins/directshow/player/directshowplayercontrol.cpp b/src/plugins/directshow/player/directshowplayercontrol.cpp
index 7e1413b56..2fe43f21b 100644
--- a/src/plugins/directshow/player/directshowplayercontrol.cpp
+++ b/src/plugins/directshow/player/directshowplayercontrol.cpp
@@ -89,9 +89,11 @@ void DirectShowPlayerControl::setPosition(qint64 position)
emit mediaStatusChanged(m_status);
}
- if (m_state == QMediaPlayer::StoppedState && m_pendingPosition != position) {
- m_pendingPosition = position;
- emit positionChanged(m_pendingPosition);
+ if (m_state == QMediaPlayer::StoppedState) {
+ if (m_pendingPosition != position) {
+ m_pendingPosition = position;
+ emit positionChanged(m_pendingPosition);
+ }
return;
}
@@ -280,6 +282,9 @@ void DirectShowPlayerControl::emitPropertyChanges()
int properties = m_updateProperties;
m_updateProperties = 0;
+ if (properties & StatusProperty)
+ emit mediaStatusChanged(m_status);
+
if ((properties & ErrorProperty) && m_error != QMediaPlayer::NoError)
emit error(m_error, m_errorString);
@@ -300,9 +305,6 @@ void DirectShowPlayerControl::emitPropertyChanges()
if (properties & SeekableProperty)
emit seekableChanged(m_seekable);
- if (properties & StatusProperty)
- emit mediaStatusChanged(m_status);
-
if (properties & StateProperty)
emit stateChanged(m_state);
}
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index b96ba6792..3e505a413 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -1312,6 +1312,9 @@ QList< QPair<int,int> > CameraBinSession::supportedFrameRates(const QSize &frame
for (uint i=0; i<gst_caps_get_size(caps); i++) {
GstStructure *structure = gst_caps_get_structure(caps, i);
gst_structure_set_name(structure, "video/x-raw");
+#if GST_CHECK_VERSION(1,2,0)
+ gst_caps_set_features(caps, i, NULL);
+#endif
const GValue *oldRate = gst_structure_get_value(structure, "framerate");
if (!oldRate)
continue;
@@ -1424,6 +1427,9 @@ QList<QSize> CameraBinSession::supportedResolutions(QPair<int,int> rate,
for (uint i=0; i<gst_caps_get_size(caps); i++) {
GstStructure *structure = gst_caps_get_structure(caps, i);
gst_structure_set_name(structure, "video/x-raw");
+#if GST_CHECK_VERSION(1,2,0)
+ gst_caps_set_features(caps, i, NULL);
+#endif
const GValue *oldW = gst_structure_get_value(structure, "width");
const GValue *oldH = gst_structure_get_value(structure, "height");
if (!oldW || !oldH)
diff --git a/src/plugins/videonode/imx6/imx6.pro b/src/plugins/videonode/imx6/imx6.pro
index c8085a31e..43e17e725 100644
--- a/src/plugins/videonode/imx6/imx6.pro
+++ b/src/plugins/videonode/imx6/imx6.pro
@@ -2,6 +2,12 @@ TARGET = imx6vivantevideonode
QT += multimedia-private qtmultimediaquicktools-private
+qtConfig(gstreamer_imxcommon) {
+ QT += multimediagsttools-private
+ QMAKE_USE += gstreamer_imxcommon
+ DEFINES += GST_USE_UNSTABLE_API
+}
+
HEADERS += \
qsgvivantevideonode.h \
qsgvivantevideomaterialshader.h \
diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
index 4b68f47a4..e1468fe34 100644
--- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
@@ -49,6 +49,11 @@
#include <unistd.h>
+#include <QtMultimedia/private/qtmultimediaglobal_p.h>
+#if QT_CONFIG(gstreamer_imxcommon)
+#include "private/qgstvideobuffer_p.h"
+#include <gst/allocators/imx/phys_mem_meta.h>
+#endif
//#define QT_VIVANTE_VIDEO_DEBUG
@@ -224,7 +229,12 @@ GLuint QSGVivanteVideoMaterial::vivanteMapping(QVideoFrame vF)
#endif
GLuint physical = ~0U;
-
+#if QT_CONFIG(gstreamer_imxcommon)
+ auto buffer = reinterpret_cast<QGstVideoBuffer *>(vF.buffer());
+ GstImxPhysMemMeta *meta = GST_IMX_PHYS_MEM_META_GET(buffer->buffer());
+ if (meta && meta->phys_addr)
+ physical = meta->phys_addr;
+#endif
glBindTexture(GL_TEXTURE_2D, tmpTexId);
glTexDirectVIVMap_LOCAL(GL_TEXTURE_2D,
fullWidth, fullHeight,