#include <private/qmediaplaylistnavigator_p.h>
#include <qmediaplaylist.h>
+#include <private/qmediaresourceset_p.h>
QT_BEGIN_NAMESPACE
, m_videoWindow(0)
, m_videoWidget(0)
#endif
+ , m_videoReferenceCount(0)
{
m_session = new QGstreamerPlayerSession(this);
m_control = new QGstreamerPlayerControl(m_session, this);
if (qstrcmp(name,QMediaVideoProbeControl_iid) == 0) {
if (m_session) {
QGstreamerVideoProbeControl *probe = new QGstreamerVideoProbeControl(this);
+ increaseVideoRef();
m_session->addProbe(probe);
return probe;
}
#endif
if (m_videoOutput) {
+ increaseVideoRef();
m_control->setVideoOutput(m_videoOutput);
return m_videoOutput;
}
if (control == m_videoOutput) {
m_videoOutput = 0;
m_control->setVideoOutput(0);
+ decreaseVideoRef();
}
QGstreamerVideoProbeControl* videoProbe = qobject_cast<QGstreamerVideoProbeControl*>(control);
if (videoProbe) {
- if (m_session)
+ if (m_session) {
m_session->removeProbe(videoProbe);
+ decreaseVideoRef();
+ }
delete videoProbe;
return;
}
}
}
+void QGstreamerPlayerService::increaseVideoRef()
+{
+ m_videoReferenceCount++;
+ if (m_videoReferenceCount == 1) {
+ m_control->resources()->setVideoEnabled(true);
+ }
+}
+
+void QGstreamerPlayerService::decreaseVideoRef()
+{
+ m_videoReferenceCount--;
+ if (m_videoReferenceCount == 0) {
+ m_control->resources()->setVideoEnabled(false);
+ }
+}
+
QT_END_NAMESPACE