summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-07-09 03:08:11 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2019-07-11 13:53:20 +0200
commitd035d4de3770427396bd4e6a7db9b6c7161e2abf (patch)
treea98cfa4d820050152a647cfcf320ccba7588fe0f
parent0198f94e6612b26483dfa341b43eb9998afe1b6d (diff)
parent27497df23e68488472f922ead948b034225f9f3b (diff)
Merge "Merge remote-tracking branch 'origin/5.12' into 5.13"
-rw-r--r--src/gsttools/qgstreamerplayersession.cpp4
-rw-r--r--src/multimedia/audio/qsamplecache_p.cpp12
-rw-r--r--src/plugins/directshow/camera/dscamerasession.cpp6
-rw-r--r--src/plugins/directshow/common/directshowmediatype.cpp2
-rw-r--r--src/plugins/directshow/directshow.pro4
5 files changed, 20 insertions, 8 deletions
diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp
index 5ede8a1c9..15587f0ce 100644
--- a/src/gsttools/qgstreamerplayersession.cpp
+++ b/src/gsttools/qgstreamerplayersession.cpp
@@ -981,9 +981,11 @@ bool QGstreamerPlayerSession::isSeekable() const
bool QGstreamerPlayerSession::play()
{
+#if GST_CHECK_VERSION(1,0,0)
static bool dumpDot = qEnvironmentVariableIsSet("GST_DEBUG_DUMP_DOT_DIR");
if (dumpDot)
- gst_debug_bin_to_dot_file_with_ts(GST_BIN(m_pipeline), GstDebugGraphDetails(GST_DEBUG_GRAPH_SHOW_ALL), "session.play");
+ gst_debug_bin_to_dot_file_with_ts(GST_BIN(m_pipeline), GstDebugGraphDetails(GST_DEBUG_GRAPH_SHOW_ALL), "gst.play");
+#endif
#ifdef DEBUG_PLAYBIN
qDebug() << Q_FUNC_INFO;
#endif
diff --git a/src/multimedia/audio/qsamplecache_p.cpp b/src/multimedia/audio/qsamplecache_p.cpp
index 945fabe52..35234f8bb 100644
--- a/src/multimedia/audio/qsamplecache_p.cpp
+++ b/src/multimedia/audio/qsamplecache_p.cpp
@@ -295,9 +295,12 @@ void QSample::loadIfNecessary()
}
}
-// Called in both threads
+// Called in application thread
bool QSampleCache::notifyUnreferencedSample(QSample* sample)
{
+ if (m_loadingThread.isRunning())
+ m_loadingThread.wait();
+
QMutexLocker locker(&m_mutex);
if (m_capacity > 0)
return false;
@@ -306,16 +309,17 @@ bool QSampleCache::notifyUnreferencedSample(QSample* sample)
return true;
}
-// Called in application threadd
+// Called in application thread
void QSample::release()
{
QMutexLocker locker(&m_mutex);
#ifdef QT_SAMPLECACHE_DEBUG
qDebug() << "Sample:: release" << this << QThread::currentThread() << m_ref;
#endif
- m_ref--;
- if (m_ref == 0)
+ if (--m_ref == 0) {
+ locker.unlock();
m_parent->notifyUnreferencedSample(this);
+ }
}
// Called in dtor and when stream is loaded
diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp
index 5ab9f67d8..a237811ae 100644
--- a/src/plugins/directshow/camera/dscamerasession.cpp
+++ b/src/plugins/directshow/camera/dscamerasession.cpp
@@ -1137,8 +1137,8 @@ void DSCameraSession::updateSourceCapabilities()
long listSize = 0;
LONGLONG *frameRates = 0;
SIZE size = { resolution.width(), resolution.height() };
- if (SUCCEEDED(pVideoControl->GetFrameRateList(pPin, iIndex, size,
- &listSize, &frameRates))) {
+ hr = pVideoControl->GetFrameRateList(pPin, iIndex, size, &listSize, &frameRates);
+ if (hr == S_OK && listSize > 0 && frameRates) {
for (long i = 0; i < listSize; ++i) {
qreal fr = qreal(10000000) / frameRates[i];
frameRateRanges.append(QCamera::FrameRateRange(fr, fr));
@@ -1147,6 +1147,8 @@ void DSCameraSession::updateSourceCapabilities()
// Make sure higher frame rates come first
std::sort(frameRateRanges.begin(), frameRateRanges.end(), qt_frameRateRangeGreaterThan);
}
+
+ CoTaskMemFree(frameRates);
pPin->Release();
}
}
diff --git a/src/plugins/directshow/common/directshowmediatype.cpp b/src/plugins/directshow/common/directshowmediatype.cpp
index fe86e0204..103f1ddc1 100644
--- a/src/plugins/directshow/common/directshowmediatype.cpp
+++ b/src/plugins/directshow/common/directshowmediatype.cpp
@@ -52,7 +52,7 @@ namespace
{
{ QVideoFrame::Format_ARGB32, MEDIASUBTYPE_ARGB32 },
{ QVideoFrame::Format_RGB32, MEDIASUBTYPE_RGB32 },
- { QVideoFrame::Format_RGB24, MEDIASUBTYPE_RGB24 },
+ { QVideoFrame::Format_BGR24, MEDIASUBTYPE_RGB24 },
{ QVideoFrame::Format_RGB565, MEDIASUBTYPE_RGB565 },
{ QVideoFrame::Format_RGB555, MEDIASUBTYPE_RGB555 },
{ QVideoFrame::Format_AYUV444, MEDIASUBTYPE_AYUV },
diff --git a/src/plugins/directshow/directshow.pro b/src/plugins/directshow/directshow.pro
index e531efc53..27bb3abb8 100644
--- a/src/plugins/directshow/directshow.pro
+++ b/src/plugins/directshow/directshow.pro
@@ -16,6 +16,10 @@ mingw {
DEFINES += NO_DSHOW_STRSAFE
}
+mingw {
+ LIBS_PRIVATE += -lamstrmid
+}
+
include(common/common.pri)
include(player/player.pri)
include(camera/camera.pri)