xbmc: add PR2245

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2013-02-16 00:07:30 +01:00
parent 72080b8d9d
commit 59ba745d77

View File

@ -0,0 +1,53 @@
From 8b6032793bcc05a6ec06773c95463a22d2c9881b Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 15 Feb 2013 17:58:41 +0000
Subject: [PATCH] [rbp] Fix for hang after seeking introduced by ASS fix
#2206 introduced a regression when seeking in some types of SD files where the video stutters and/or stalls.
This is caused by using the wrong clock in FlipPage
---
xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
index ec7e7f6..5a6e31e 100644
--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
+++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
@@ -461,15 +461,15 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket)
m_iSleepEndTime = iCurrentClock + iSleepTime;
}
- if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime)
+ if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime + DVD_MSEC_TO_TIME(500))
return;
- m_iSleepEndTime = DVD_NOPTS_VALUE;
-
double pts_media = m_av_clock->OMXMediaTime(false, false);
ProcessOverlays(iGroupId, pts_media);
- g_renderManager.FlipPage(CThread::m_bStop, pts_media / DVD_TIME_BASE, -1, FS_NONE);
+ g_renderManager.FlipPage(CThread::m_bStop, m_iSleepEndTime / DVD_TIME_BASE, -1, FS_NONE);
+
+ m_iSleepEndTime = DVD_NOPTS_VALUE;
//m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime));
}
@@ -580,12 +580,14 @@ void OMXPlayerVideo::Process()
m_av_clock->OMXReset(false);
m_av_clock->UnLock();
m_started = false;
+ m_iSleepEndTime = DVD_NOPTS_VALUE;
}
else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush())
{
CLog::Log(LOGDEBUG, "COMXPlayerVideo - CDVDMsg::GENERAL_FLUSH");
m_stalled = true;
m_started = false;
+ m_iSleepEndTime = DVD_NOPTS_VALUE;
m_av_clock->Lock();
m_av_clock->OMXStop(false);
m_omxVideo.Reset();
--
1.7.10