diff options
Diffstat (limited to 'src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.h')
-rw-r--r-- | src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.h b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.h index 8a54e8c01..27b6f347b 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.h +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.h @@ -43,11 +43,13 @@ #define QGSTREAMERPLAYERSESSION_H #include <QObject> +#include <QtCore/qmutex.h> #include <QtNetwork/qnetworkrequest.h> #include "qgstreamerplayercontrol.h" #include <private/qgstreamerbushelper_p.h> #include <qmediaplayer.h> #include <qmediastreamscontrol.h> +#include <qaudioformat.h> #if defined(HAVE_GST_APPSRC) #include "qgstappsrc.h" @@ -61,6 +63,8 @@ class QGstreamerBusHelper; class QGstreamerMessage; class QGstreamerVideoRendererInterface; +class QGstreamerVideoProbeControl; +class QGstreamerAudioProbeControl; class QGstreamerPlayerSession : public QObject, public QGstreamerBusMessageFilter @@ -119,6 +123,14 @@ public: bool isLiveSource() const; + void addProbe(QGstreamerVideoProbeControl* probe); + void removeProbe(QGstreamerVideoProbeControl* probe); + static gboolean padVideoBufferProbe(GstPad *pad, GstBuffer *buffer, gpointer user_data); + + void addProbe(QGstreamerAudioProbeControl* probe); + void removeProbe(QGstreamerAudioProbeControl* probe); + static gboolean padAudioBufferProbe(GstPad *pad, GstBuffer *buffer, gpointer user_data); + public slots: void loadFromUri(const QNetworkRequest &url); void loadFromStream(const QNetworkRequest &url, QIODevice *stream); @@ -169,6 +181,13 @@ private: static void handleElementAdded(GstBin *bin, GstElement *element, QGstreamerPlayerSession *session); void processInvalidMedia(QMediaPlayer::Error errorCode, const QString& errorString); + void removeVideoBufferProbe(); + void addVideoBufferProbe(); + void removeAudioBufferProbe(); + void addAudioBufferProbe(); + void flushVideoProbes(); + void resumeVideoProbes(); + QNetworkRequest m_request; QMediaPlayer::State m_state; QMediaPlayer::State m_pendingState; @@ -184,6 +203,8 @@ private: GstElement* m_pendingVideoSink; GstElement* m_nullVideoSink; + GstElement* m_audioSink; + GstBus* m_bus; QObject *m_videoOutput; QGstreamerVideoRendererInterface *m_renderer; @@ -199,6 +220,13 @@ private: QList<QMediaStreamsControl::StreamType> m_streamTypes; QMap<QMediaStreamsControl::StreamType, int> m_playbin2StreamOffset; + QList<QGstreamerVideoProbeControl*> m_videoProbes; + QMutex m_videoProbeMutex; + int m_videoBufferProbeId; + + QList<QGstreamerAudioProbeControl*> m_audioProbes; + QMutex m_audioProbeMutex; + int m_audioBufferProbeId; int m_volume; qreal m_playbackRate; |