diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp
index 08d99d735f1e06cdb5387150d6120bcd1a0f8bdc..3974c59a5d2a360aa5fbef532a922aa1990f0c7f 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<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
+            IMediaSeeking *seeking = com_cast<IMediaSeeking>(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;