From 5f15380e7c807c8111c32fc9bcf53189a868d23c Mon Sep 17 00:00:00 2001 From: Ihor Dutchak Date: Sun, 17 Mar 2019 00:46:30 +0200 Subject: DirectShow: don't change camera zoom level if not requested DirectShowCameraZoomControl sets camera zoom level to 1x each time, when camera goes into LoadedStatus (e.g. on stream stop), which is inconveniant, specially if camera has physical remote, and zoom level may be changed externally. Disable this behavior, if zoom level was not requested explicitly by zoomTo(...) function from client code. Fixes: QTBUG-74180 Change-Id: I99ff76af04f80c630a0c397db5713e6706ebf175 Reviewed-by: VaL Doroshchuk Reviewed-by: Ihor Dutchak --- src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/plugins/directshow') diff --git a/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp b/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp index 209cb5d96..079976e15 100644 --- a/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp +++ b/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp @@ -176,7 +176,7 @@ void DirectShowCameraZoomControl::updateZoomValues() } // Check if there is a pending zoom value. - if (!qFuzzyCompare(m_currentOpticalZoom, m_requestedOpticalZoom)) + if (!qFuzzyCompare(m_currentOpticalZoom, m_requestedOpticalZoom) && !qFuzzyIsNull(m_requestedOpticalZoom)) opticalZoomToPrivate(m_requestedOpticalZoom); } -- cgit v1.2.3 From c8716f68feb5a38473cbd54972b9a9f095e9e24d Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Mon, 8 Apr 2019 13:26:38 +0200 Subject: Windows: Reset position on pause in QMediaPlayer after EOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pause() should reset position to the beginning after EOS. Fixes tst_QMediaPlayerBackend::processEOS Task-number: QTBUG-65574 Change-Id: I4802102bde657d7a3dde0b426c335b021207ae08 Reviewed-by: Christian Strømme --- src/plugins/directshow/player/directshowplayerservice.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/plugins/directshow') diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index 08d99d735..3974c59a5 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -951,7 +951,6 @@ void DirectShowPlayerService::pause() if (m_executedTasks & Render) { if (m_executedTasks & Stop) { - m_atEnd = false; if (m_seekPosition == -1) { m_dontCacheNextSeekResult = true; m_seekPosition = 0; @@ -977,7 +976,8 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker) control->Release(); if (SUCCEEDED(hr)) { - if (IMediaSeeking *seeking = com_cast(m_graph, IID_IMediaSeeking)) { + IMediaSeeking *seeking = com_cast(m_graph, IID_IMediaSeeking); + if (!m_atEnd && seeking) { LONGLONG position = 0; seeking->GetCurrentPosition(&position); @@ -986,6 +986,7 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker) m_position = position / qt_directShowTimeScale; } else { m_position = 0; + m_atEnd = false; } m_executedTasks |= Pause; -- cgit v1.2.3