diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/alsa/alsa.pro | 2 | ||||
-rw-r--r-- | src/plugins/directshow/player/directshowplayercontrol.cpp | 14 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 6 | ||||
-rw-r--r-- | src/plugins/videonode/imx6/imx6.pro | 6 | ||||
-rw-r--r-- | src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp | 12 |
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, |