diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2014-11-20 17:54:18 +0100 |
---|---|---|
committer | Andrew den Exter <andrew.den.exter@qinetic.com.au> | 2014-11-27 23:30:05 +0100 |
commit | 108dda7a90bd0f0337358b0db47ae55acd16dea6 (patch) | |
tree | e74c44c004b257fb99fdc96063641c76ac0426cf /src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h | |
parent | 7e3d69668e3f04110a651dee1850a1d0c885947b (diff) |
GStreamer: port to 1.0.
0.10 is still used by default.
To enable GStreamer 1.0, pass GST_VERSION=1.0 to qmake
for qtmultimedia.pro.
Contributions from:
Andrew den Exter <andrew.den.exter@qinetic.com.au>
Ilya Smelykh <ilya@videoexpertsgroup.com>
Jim Hodapp <jim.hodapp@canonical.com>
Sergio Schvezov <sergio.schvezov@canonical.com>
Change-Id: I72a46d1170a8794a149bdb5e20767afcc5b7587c
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Diffstat (limited to 'src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h')
-rw-r--r-- | src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h b/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h index a759f22e5..ad26327e7 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h +++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h @@ -41,8 +41,10 @@ #include <QtCore/qurl.h> #include <gst/gst.h> +#include <gst/video/video.h> #include <private/qgstreamerbushelper_p.h> +#include <private/qgstreamerbufferprobe_p.h> QT_BEGIN_NAMESPACE @@ -70,7 +72,10 @@ public: virtual QList<QSize> supportedResolutions(qreal frameRate = -1) const = 0; }; -class QGstreamerCaptureSession : public QObject, public QGstreamerBusMessageFilter +class QGstreamerCaptureSession + : public QObject + , public QGstreamerBusMessageFilter + , private QGstreamerBufferProbe { Q_OBJECT Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged) @@ -131,7 +136,6 @@ public: void addProbe(QGstreamerAudioProbeControl* probe); void removeProbe(QGstreamerAudioProbeControl* probe); - static gboolean padAudioBufferProbe(GstPad *pad, GstBuffer *buffer, gpointer user_data); signals: void stateChanged(QGstreamerCaptureSession::State state); @@ -156,6 +160,9 @@ public slots: void setVolume(qreal volume); private: + void probeCaps(GstCaps *caps); + bool probeBuffer(GstBuffer *buffer); + enum PipelineMode { EmptyPipeline, PreviewPipeline, RecordingPipeline, PreviewAndRecordingPipeline }; GstElement *buildEncodeBin(); @@ -180,9 +187,7 @@ private: QGstreamerCaptureSession::CaptureMode m_captureMode; QMap<QByteArray, QVariant> m_metaData; - QList<QGstreamerAudioProbeControl*> m_audioProbes; - QMutex m_audioProbeMutex; - int m_audioBufferProbeId; + QGstreamerAudioProbeControl *m_audioProbe; QGstreamerElementFactory *m_audioInputFactory; QGstreamerElementFactory *m_audioPreviewFactory; @@ -217,6 +222,10 @@ private: GstElement *m_encodeBin; +#if GST_CHECK_VERSION(1,0,0) + GstVideoInfo m_previewInfo; +#endif + public: bool m_passImage; bool m_passPrerollImage; |