aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/cores/VideoRenderers/LinuxRendererGL.cpp6
-rw-r--r--xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp3
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayerVideo.cpp10
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayerVideo.h2
4 files changed, 14 insertions, 7 deletions
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
index cf0b7d4156..468c51b2a0 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
@@ -3350,9 +3350,9 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method)
return false;
}
-#ifdef TARGET_DARWIN
- // YADIF too slow for HD but we have no methods to fall back
- // to something that works so just turn it off.
+#ifdef TARGET_DARWIN_IOS
+ // iOS has not the power for YADIF - TODO evaluate if its
+ // enough to disable it for TARGET_DARWIN_IOS_ATV2
if(method == VS_INTERLACEMETHOD_DEINTERLACE)
return false;
#endif
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
index 20a464fa71..81fe19b063 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
@@ -1031,6 +1031,7 @@ void CLinuxRendererGLES::Render(DWORD flags, int index)
else if (m_renderMethod & RENDER_IMXMAP)
{
RenderIMXMAPTexture(index, m_currentField);
+ VerifyGLState();
}
else
{
@@ -2770,7 +2771,7 @@ bool CLinuxRendererGLES::CreateIMXMAPTexture(int index)
YUVFIELDS &fields = m_buffers[index].fields;
YUVPLANE &plane = fields[0][0];
- DeleteEGLIMGTexture(index);
+ DeleteIMXMAPTexture(index);
memset(&im , 0, sizeof(im));
memset(&fields, 0, sizeof(fields));
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
index e47f85c773..f030e37282 100644
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
@@ -512,7 +512,7 @@ void CDVDPlayerVideo::Process()
}
bRequestDrop = false;
- iDropDirective = CalcDropRequirement(pts);
+ iDropDirective = CalcDropRequirement(pts, false);
if (iDropDirective & EOS_VERYLATE)
{
if (m_bAllowDrop)
@@ -748,6 +748,9 @@ void CDVDPlayerVideo::Process()
if (iDecoderState & VC_BUFFER)
break;
+ // update dropping stats
+ CalcDropRequirement(pts, true);
+
// the decoder didn't need more data, flush the remaning buffer
iDecoderState = m_pVideoCodec->Decode(NULL, 0, DVD_NOPTS_VALUE, DVD_NOPTS_VALUE);
}
@@ -1554,7 +1557,7 @@ void CDVDPlayerVideo::CalcFrameRate()
}
}
-int CDVDPlayerVideo::CalcDropRequirement(double pts)
+int CDVDPlayerVideo::CalcDropRequirement(double pts, bool updateOnly)
{
int result = 0;
double iSleepTime;
@@ -1622,6 +1625,9 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts)
}
m_droppingStats.m_lastDecoderPts = iDecoderPts;
+ if (updateOnly)
+ return result;
+
// subtract gains
while (!m_droppingStats.m_gain.empty() &&
iRenderPts >= m_droppingStats.m_gain.front().pts)
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h
index 4e1b3d6d36..489ebfc95a 100644
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h
@@ -149,7 +149,7 @@ protected:
void ResetFrameRateCalc();
void CalcFrameRate();
- int CalcDropRequirement(double pts);
+ int CalcDropRequirement(double pts, bool updateOnly);
double m_fFrameRate; //framerate of the video currently playing
bool m_bCalcFrameRate; //if we should calculate the framerate from the timestamps