Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-settings

This commit is contained in:
Stephan Raue 2013-02-24 23:37:52 +01:00
commit 460c09ab40
21 changed files with 1309 additions and 875 deletions

View File

@ -1,4 +1,4 @@
3.0.1
3.0.2
added addon settings
enable HW PID filter (enabled for RPi by default)
enable IR receiver

View File

@ -20,7 +20,7 @@
PKG_NAME="sundtek-mediatv"
PKG_VERSION="3.0"
PKG_REV="1"
PKG_REV="2"
PKG_ARCH="any"
PKG_LICENSE="nonfree"
PKG_SITE="http://support.sundtek.com/"

View File

@ -1,3 +1,6 @@
3.0.4
- update to transmission-2.77
3.0.3
- update to transmission-2.76
- update libevent to libevent-2.0.21-stable

View File

@ -19,8 +19,8 @@
################################################################################
PKG_NAME="transmission"
PKG_VERSION="2.76"
PKG_REV="3"
PKG_VERSION="2.77"
PKG_REV="4"
PKG_ARCH="any"
PKG_LICENSE="OSS"
PKG_SITE="http://www.transmissionbt.com/"

View File

@ -1,3 +1,6 @@
3.0.5
- update to TVHeadend 3.3.485
3.0.4
- update to TVHeadend 3.3.403

View File

@ -19,8 +19,8 @@
################################################################################
PKG_NAME="tvheadend"
PKG_VERSION="3.3.403"
PKG_REV="4"
PKG_VERSION="3.3.485"
PKG_REV="5"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"

View File

@ -1,549 +0,0 @@
From d33a276284356e974dcf14e6c86b74064fb0715f Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Sun, 10 Feb 2013 18:38:56 +0100
Subject: [PATCH 1/4] renderer: add buffering - get clock via IPlayer
---
xbmc/cores/IPlayer.h | 2 ++
xbmc/cores/VideoRenderers/RenderManager.cpp | 9 ++++++---
xbmc/cores/VideoRenderers/RenderManager.h | 3 +--
xbmc/cores/dvdplayer/DVDPlayer.cpp | 7 ++++++-
xbmc/cores/dvdplayer/DVDPlayer.h | 2 ++
5 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/xbmc/cores/IPlayer.h b/xbmc/cores/IPlayer.h
index 5ed88d1..f136998 100644
--- a/xbmc/cores/IPlayer.h
+++ b/xbmc/cores/IPlayer.h
@@ -229,6 +229,8 @@ class IPlayer
*/
virtual void GetSubtitleCapabilities(std::vector<int> &subCaps) { subCaps.assign(1,IPC_SUBS_ALL); };
+ virtual double GetClock(double& absolute, bool interpolated = true) {return 0; };
+
protected:
IPlayerCallback& m_callback;
};
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
index 9290f80..4664426 100644
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
@@ -325,7 +325,7 @@ void CXBMCRenderManager::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
m_presentevent.Set();
}
-unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock)
+unsigned int CXBMCRenderManager::PreInit()
{
CRetakeLock<CExclusiveLock> lock(m_sharedSection);
@@ -333,7 +333,6 @@ unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock)
m_presenterr = 0.0;
m_errorindex = 0;
memset(m_errorbuff, 0, sizeof(m_errorbuff));
- m_pClock = pClock;
m_bIsStarted = false;
m_bPauseDrawing = false;
@@ -1045,7 +1044,11 @@ void CXBMCRenderManager::PrepareNextRender()
}
double iClockSleep, iPlayingClock, iCurrentClock;
- iPlayingClock = m_pClock->GetClock(iCurrentClock, false);
+ if (g_application.m_pPlayer)
+ iPlayingClock = g_application.m_pPlayer->GetClock(iCurrentClock, false);
+ else
+ iPlayingClock = iCurrentClock = 0;
+
iClockSleep = m_renderBuffers[idx].pts - iPlayingClock;
if (m_speed)
diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h
index 6746957..b931f7d 100644
--- a/xbmc/cores/VideoRenderers/RenderManager.h
+++ b/xbmc/cores/VideoRenderers/RenderManager.h
@@ -72,7 +72,7 @@ class CXBMCRenderManager
int AddVideoPicture(DVDVideoPicture& picture);
void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE, int speed = 0);
- unsigned int PreInit(CDVDClock *pClock);
+ unsigned int PreInit();
void UnInit();
bool Flush();
@@ -225,7 +225,6 @@ class CXBMCRenderManager
int m_presentsource;
CEvent m_presentevent;
CEvent m_flushEvent;
- CDVDClock *m_pClock;
OVERLAY::CRenderer m_overlays;
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
index 9e6e470..d0c7cd2 100644
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
@@ -463,7 +463,7 @@ bool CDVDPlayer::OpenFile(const CFileItem& file, const CPlayerOptions &options)
m_ready.Reset();
#if defined(HAS_VIDEO_PLAYBACK)
- g_renderManager.PreInit(&m_clock);
+ g_renderManager.PreInit();
#endif
Create();
@@ -4129,3 +4129,8 @@ bool CDVDPlayer::CachePVRStream(void) const
!g_PVRManager.IsPlayingRecording() &&
g_advancedSettings.m_bPVRCacheInDvdPlayer;
}
+
+double CDVDPlayer::GetClock(double& absolute, bool interpolated)
+{
+ return m_clock.GetClock(absolute, interpolated);
+}
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h
index 35bf762..ab73950 100644
--- a/xbmc/cores/dvdplayer/DVDPlayer.h
+++ b/xbmc/cores/dvdplayer/DVDPlayer.h
@@ -254,6 +254,8 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer
virtual bool SwitchChannel(const PVR::CPVRChannel &channel);
virtual bool CachePVRStream(void) const;
+ virtual double GetClock(double& absolute, bool interpolated = true);
+
enum ECacheState
{ CACHESTATE_DONE = 0
, CACHESTATE_FULL // player is filling up the demux queue
--
1.7.10
From 113de500903cbe1933e1a50fc7809b8f6b7f2636 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Fri, 15 Feb 2013 17:00:47 +0100
Subject: [PATCH 2/4] buffering: some rework
---
xbmc/cores/VideoRenderers/OverlayRenderer.cpp | 17 +++++++----------
xbmc/cores/VideoRenderers/OverlayRenderer.h | 5 ++---
xbmc/cores/VideoRenderers/RenderManager.cpp | 10 +++-------
xbmc/cores/VideoRenderers/RenderManager.h | 4 ++--
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 18 +++++++++++++++++-
5 files changed, 31 insertions(+), 23 deletions(-)
diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
index 94aaaf5..f7f74ce 100644
--- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
@@ -93,24 +93,28 @@ long COverlayMainThread::Release()
CRenderer::~CRenderer()
{
- for(int i = 0; i < 2; i++)
+ for(int i = 0; i < 10; i++)
Release(m_buffers[i]);
}
-void CRenderer::AddOverlay(CDVDOverlay* o, double pts)
+void CRenderer::AddOverlay(CDVDOverlay* o, double pts, int index)
{
CSingleLock lock(m_section);
+ m_decode = index;
+
SElement e;
e.pts = pts;
e.overlay_dvd = o->Acquire();
m_buffers[m_decode].push_back(e);
}
-void CRenderer::AddOverlay(COverlay* o, double pts)
+void CRenderer::AddOverlay(COverlay* o, double pts, int index)
{
CSingleLock lock(m_section);
+ m_decode = index;
+
SElement e;
e.pts = pts;
e.overlay = o->Acquire();
@@ -163,13 +167,6 @@ void CRenderer::Flip()
m_render = (m_render + 1) % m_iNumBuffers;
}
-void CRenderer::SetBuffer(int idx)
-{
- CSingleLock lock(m_section);
- Release(m_buffers[idx]);
- m_decode = idx;
-}
-
void CRenderer::ReleaseBuffer(int idx)
{
CSingleLock lock(m_section);
diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.h b/xbmc/cores/VideoRenderers/OverlayRenderer.h
index c6740a5..0921fc5 100644
--- a/xbmc/cores/VideoRenderers/OverlayRenderer.h
+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.h
@@ -92,14 +92,13 @@
CRenderer();
~CRenderer();
- void AddOverlay(CDVDOverlay* o, double pts);
- void AddOverlay(COverlay* o, double pts);
+ void AddOverlay(CDVDOverlay* o, double pts, int index);
+ void AddOverlay(COverlay* o, double pts, int index);
void AddCleanup(COverlay* o);
void Flip();
void Render();
void Flush();
void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; }
- void SetBuffer(int idx);
void ReleaseBuffer(int idx);
protected:
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
index 4664426..7094913 100644
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
@@ -228,7 +228,7 @@ CStdString CXBMCRenderManager::GetVSyncState()
return state;
}
-bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation)
+bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation, bool buffering)
{
/* make sure any queued frame was fully presented */
double timeout = m_presenttime + 0.1;
@@ -248,8 +248,8 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi
return false;
}
- // check if decoder supports buffering
- m_bCodecSupportsBuffering = false;
+ // set buffering
+ m_bCodecSupportsBuffering = buffering;
if (format == RENDER_FMT_VDPAU
|| format == RENDER_FMT_VDPAU_420
|| format == RENDER_FMT_XVBA)
@@ -959,10 +959,6 @@ int CXBMCRenderManager::WaitForBuffer(volatile bool& bStop)
}
lock.Leave();
- { CRetakeLock<CExclusiveLock> lock(m_sharedSection);
- m_overlays.SetBuffer((m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers);
- }
-
if (bStop)
return -1;
diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h
index b931f7d..27bb8a2 100644
--- a/xbmc/cores/VideoRenderers/RenderManager.h
+++ b/xbmc/cores/VideoRenderers/RenderManager.h
@@ -66,7 +66,7 @@ class CXBMCRenderManager
void SetViewMode(int iViewMode);
// Functions called from mplayer
- bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation);
+ bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation, bool buffering);
bool IsConfigured();
int AddVideoPicture(DVDVideoPicture& picture);
@@ -79,7 +79,7 @@ class CXBMCRenderManager
void AddOverlay(CDVDOverlay* o, double pts)
{
CSharedLock lock(m_sharedSection);
- m_overlays.AddOverlay(o, pts);
+ m_overlays.AddOverlay(o, pts, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers);
}
void AddCleanup(OVERLAY::COverlay* o)
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
index 109d75b..8a6599c 100644
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
@@ -1132,53 +1132,69 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
}
CStdString formatstr;
+ bool buffering;
switch(pPicture->format)
{
case RENDER_FMT_YUV420P:
formatstr = "YV12";
+ buffering = true;
break;
case RENDER_FMT_YUV420P16:
formatstr = "YV12P16";
+ buffering = true;
break;
case RENDER_FMT_YUV420P10:
formatstr = "YV12P10";
+ buffering = true;
break;
case RENDER_FMT_NV12:
formatstr = "NV12";
+ buffering = true;
break;
case RENDER_FMT_UYVY422:
formatstr = "UYVY";
+ buffering = true;
break;
case RENDER_FMT_YUYV422:
formatstr = "YUY2";
+ buffering = true;
break;
case RENDER_FMT_VDPAU:
formatstr = "VDPAU";
+ buffering = true;
break;
case RENDER_FMT_VDPAU_420:
formatstr = "VDPAU_420";
+ buffering = true;
break;
case RENDER_FMT_DXVA:
formatstr = "DXVA";
+ buffering = false;
break;
case RENDER_FMT_VAAPI:
formatstr = "VAAPI";
+ buffering = false;
break;
case RENDER_FMT_OMXEGL:
formatstr = "OMXEGL";
+ buffering = false;
break;
case RENDER_FMT_CVBREF:
formatstr = "BGRA";
+ buffering = false;
break;
case RENDER_FMT_BYPASS:
formatstr = "BYPASS";
+ buffering = false;
break;
case RENDER_FMT_NONE:
formatstr = "NONE";
+ buffering = false;
break;
case RENDER_FMT_XVBA:
formatstr = "XVBA";
+ buffering = true;
break;
}
@@ -1189,7 +1205,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
}
CLog::Log(LOGDEBUG,"%s - change configuration. %dx%d. framerate: %4.2f. format: %s",__FUNCTION__,pPicture->iWidth, pPicture->iHeight, config_framerate, formatstr.c_str());
- if(!g_renderManager.Configure(pPicture->iWidth, pPicture->iHeight, pPicture->iDisplayWidth, pPicture->iDisplayHeight, config_framerate, flags, pPicture->format, pPicture->extended_format, m_hints.orientation))
+ if(!g_renderManager.Configure(pPicture->iWidth, pPicture->iHeight, pPicture->iDisplayWidth, pPicture->iDisplayHeight, config_framerate, flags, pPicture->format, pPicture->extended_format, m_hints.orientation, buffering))
{
CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__);
return EOS_ABORT;
--
1.7.10
From 4d71be9fa0e34dccbb977199f1bde2f200f8b56e Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Sat, 16 Feb 2013 08:32:18 +0100
Subject: [PATCH 3/4] add buffering for GLES
---
xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 10 ----------
xbmc/cores/VideoRenderers/LinuxRendererGLES.h | 6 ++++--
2 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
index 2a59e2b..1bf2f3b 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
@@ -135,13 +135,6 @@
delete m_dllSwScale;
}
-void CLinuxRendererGLES::ManageTextures()
-{
- m_NumYV12Buffers = 2;
- //m_iYV12RenderBuffer = 0;
- return;
-}
-
bool CLinuxRendererGLES::ValidateRenderTarget()
{
if (!m_bValidated)
@@ -395,7 +388,6 @@ void CLinuxRendererGLES::Update(bool bPauseDrawing)
{
if (!m_bConfigured) return;
ManageDisplay();
- ManageTextures();
}
void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
@@ -409,7 +401,6 @@ void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
if (m_renderMethod & RENDER_BYPASS)
{
ManageDisplay();
- ManageTextures();
// if running bypass, then the player might need the src/dst rects
// for sizing video playback on a layer other than the gles layer.
if (m_RenderUpdateCallBackFn)
@@ -449,7 +440,6 @@ void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
return;
ManageDisplay();
- ManageTextures();
g_graphicsContext.BeginPaint();
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h
index c6b69db..7bdc3bc 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h
@@ -41,7 +41,7 @@
class COpenMaxVideo;
typedef std::vector<int> Features;
-#define NUM_BUFFERS 3
+#define NUM_BUFFERS 10
#undef ALIGN
@@ -138,6 +138,9 @@ class CLinuxRendererGLES : public CBaseRenderer
virtual void UnInit();
virtual void Reset(); /* resets renderer after seek for example */
virtual void ReorderDrawPoints();
+ virtual void SetProcessorSize(int numBuffers) { m_NumYV12Buffers = numBuffers; }
+ virtual unsigned int GetMaxProcessorSize() { return NUM_BUFFERS; }
+ virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; }
virtual void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255);
@@ -162,7 +165,6 @@ class CLinuxRendererGLES : public CBaseRenderer
protected:
virtual void Render(DWORD flags, int index);
- virtual void ManageTextures();
int NextYV12Texture();
virtual bool ValidateRenderTarget();
virtual void LoadShaders(int field=FIELD_FULL);
--
1.7.10
From 81496e1f405980d3be6b05c883bdbfb65d617e3e Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Sun, 10 Feb 2013 18:40:30 +0100
Subject: [PATCH 4/4] OMXPlayer: adopt to buffering in renderer
---
xbmc/cores/omxplayer/OMXPlayer.cpp | 5 +++++
xbmc/cores/omxplayer/OMXPlayer.h | 2 ++
xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 24 +++++++++++++++++++-----
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
index 60aa9ab..1acb9e2 100644
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
@@ -4210,4 +4210,9 @@ void COMXPlayer::GetSubtitleCapabilities(std::vector<int> &subCaps)
subCaps.push_back(IPC_SUBS_ALL);
}
+double COMXPlayer::GetClock(double& absolute, bool interpolated)
+{
+ return m_av_clock.GetClock(absolute, interpolated);
+}
+
#endif
diff --git a/xbmc/cores/omxplayer/OMXPlayer.h b/xbmc/cores/omxplayer/OMXPlayer.h
index ca824c2..57fc7a0 100644
--- a/xbmc/cores/omxplayer/OMXPlayer.h
+++ b/xbmc/cores/omxplayer/OMXPlayer.h
@@ -332,6 +332,8 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer
virtual void GetScalingMethods(std::vector<int> &scalingMethods);
virtual void GetAudioCapabilities(std::vector<int> &audioCaps);
virtual void GetSubtitleCapabilities(std::vector<int> &subCaps);
+
+ virtual double GetClock(double& absolute, bool interpolated = true);
protected:
friend class COMXSelectionStreams;
diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
index 5f3f050..88c75db 100644
--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
+++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
@@ -158,6 +158,8 @@ bool OMXPlayerVideo::OpenStream(CDVDStreamInfo &hints)
m_open = true;
m_send_eos = false;
+ g_renderManager.EnableBuffering(false);
+
return true;
}
@@ -358,7 +360,7 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket)
if(!g_renderManager.Configure(m_hints.width, m_hints.height,
iDisplayWidth, iDisplayHeight, m_fps, flags, format, 0,
- m_hints.orientation))
+ m_hints.orientation, true))
{
CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__);
return;
@@ -452,13 +454,22 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket)
m_dropbase = 0.0f;
#endif
- double pts_media = m_av_clock->OMXMediaTime(false, false);
- ProcessOverlays(iGroupId, pts_media);
-
if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < (iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500)) )
return;
- g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, FS_NONE);
+ int buffer = g_renderManager.WaitForBuffer(m_bStop);
+ while (buffer < 0 && !CThread::m_bStop)
+ {
+ Sleep(1);
+ buffer = g_renderManager.WaitForBuffer(m_bStop);
+ }
+ if (buffer < 0)
+ return;
+
+ double pts_media = m_av_clock->OMXMediaTime(false, false);
+ ProcessOverlays(iGroupId, pts_media);
+
+ g_renderManager.FlipPage(CThread::m_bStop, pts, -1, FS_NONE, m_speed);
//m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime));
}
@@ -569,6 +580,7 @@ void OMXPlayerVideo::Process()
m_av_clock->OMXReset(false);
m_av_clock->UnLock();
m_started = false;
+ g_renderManager.EnableBuffering(false);
}
else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush())
{
@@ -580,6 +592,7 @@ void OMXPlayerVideo::Process()
m_omxVideo.Reset();
m_av_clock->OMXReset(false);
m_av_clock->UnLock();
+ g_renderManager.EnableBuffering(false);
}
else if (pMsg->IsType(CDVDMsg::PLAYER_SETSPEED))
{
@@ -664,6 +677,7 @@ void OMXPlayerVideo::Process()
m_codecname = m_omxVideo.GetDecoderName();
m_started = true;
m_messageParent.Put(new CDVDMsgInt(CDVDMsg::PLAYER_STARTED, DVDPLAYER_VIDEO));
+ g_renderManager.EnableBuffering(true);
}
// guess next frame pts. iDuration is always valid
--
1.7.10

View File

@ -1,75 +0,0 @@
From bf4d77aeb9ff7c198914031ec0d8268dae0c5973 Mon Sep 17 00:00:00 2001
From: unknown <fernetmenta@online.de>
Date: Fri, 18 Jan 2013 15:16:38 +0100
Subject: [PATCH] multi-screen: fix compilation on windows
---
xbmc/settings/GUIWindowSettingsCategory.cpp | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp
index bb29daa..c468a73 100644
--- a/xbmc/settings/GUIWindowSettingsCategory.cpp
+++ b/xbmc/settings/GUIWindowSettingsCategory.cpp
@@ -525,12 +525,14 @@ void CGUIWindowSettingsCategory::CreateSettings()
FillInRefreshRates(strSetting, g_guiSettings.GetResolution(), false);
continue;
}
+#if defined(HAS_GLX)
else if (strSetting.Equals("videoscreen.monitor"))
{
AddSetting(pSetting, group->GetWidth(), iControlID);
FillInMonitors(strSetting);
continue;
}
+#endif
else if (strSetting.Equals("lookandfeel.skintheme"))
{
AddSetting(pSetting, group->GetWidth(), iControlID);
@@ -1463,6 +1465,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting
// Cascade
FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true);
}
+#if defined(HAS_GLX)
else if (strSetting.Equals("videoscreen.monitor"))
{
CSettingString *pSettingString = (CSettingString *)pSettingControl->GetSetting();
@@ -1477,6 +1480,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting
FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true);
}
}
+#endif
else if (strSetting.Equals("videoscreen.resolution"))
{
RESOLUTION nextRes = (RESOLUTION) g_guiSettings.GetInt("videoscreen.resolution");
@@ -2431,6 +2435,7 @@ DisplayMode CGUIWindowSettingsCategory::FillInScreens(CStdString strSetting, RES
void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting)
{
+#if defined(HAS_GLX)
// we expect "videoscreen.monitor" but it might be hidden on some platforms,
// so check that we actually have a visable control.
BaseSettingControlPtr control = GetSetting(strSetting);
@@ -2456,6 +2461,7 @@ void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting)
pControl->SetValue(currentMonitor);
g_guiSettings.SetString("videoscreen.monitor", g_settings.m_ResInfo[RES_DESKTOP].strOutput);
}
+#endif
}
@@ -2587,7 +2593,10 @@ void CGUIWindowSettingsCategory::OnRefreshRateChanged(RESOLUTION nextRes)
RESOLUTION lastRes = g_graphicsContext.GetVideoResolution();
bool cancelled = false;
- bool outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor"));
+ bool outputChanged = true;
+#if defined(HAS_GLX)
+ outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor"));
+#endif
g_guiSettings.SetResolution(nextRes);
g_graphicsContext.SetVideoResolution(nextRes, outputChanged);
--
1.7.10

View File

@ -6,10 +6,10 @@ diff -Naur a/xbmc/filesystem/CurlFile.cpp b/xbmc/filesystem/CurlFile.cpp
bool CFileCurl::IsInternet(bool checkDNS /* = true */)
{
- CStdString strURL = "http://www.google.com";
+ CStdString strURL = "http://releases.openelec.tv";
+ CStdString strURL = "http://online.openelec.tv";
if (!checkDNS)
- strURL = "http://74.125.19.103"; // www.google.com ip
+ strURL = "http://212.101.13.11"; // openelec.tv ip
+ strURL = "http://212.101.13.11"; // online.openelec.tv ip
bool found = Exists(strURL);
Close();

View File

@ -0,0 +1,23 @@
From 65a8eb83549ef092f6f192c944befa6f762c885d Mon Sep 17 00:00:00 2001
From: ronie <ronie@poedel.net>
Date: Sat, 23 Feb 2013 17:40:04 +0100
Subject: [PATCH] bump xbmc.addon to 12.1.0
---
addons/xbmc.addon/addon.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/xbmc.addon/addon.xml b/addons/xbmc.addon/addon.xml
index db32072..7d38949 100644
--- a/addons/xbmc.addon/addon.xml
+++ b/addons/xbmc.addon/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="xbmc.addon" version="12.0.0" provider-name="Team XBMC">
+<addon id="xbmc.addon" version="12.1.0" provider-name="Team XBMC">
<backwards-compatibility abi="12.0"/>
<requires>
<import addon="xbmc.core" version="0.1.0"/>
--
1.7.10

View File

@ -0,0 +1,48 @@
From dc648b78c4c571cc0a5d3df3e7b64c21c7d0901e Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com>
Date: Sat, 23 Feb 2013 10:44:33 +0100
Subject: [PATCH] AE: fix segfault after indirection patches
---
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
index cfb7be5..6ec78c5 100644
--- a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
@@ -728,7 +728,6 @@ void CSoftAE::PauseStream(CSoftAEStream *stream)
CSingleLock streamLock(m_streamLock);
RemoveStream(m_playingStreams, stream);
stream->m_paused = true;
- streamLock.Leave();
m_reOpen = true;
m_wake.Set();
@@ -874,7 +873,10 @@ IAEStream *CSoftAE::FreeStream(IAEStream *stream)
RemoveStream(m_streams , (CSoftAEStream*)stream);
// Reopen is old behaviour. Not opening when masterstream stops means clipping on S/PDIF.
if(!m_isSuspended && (m_masterStream == stream))
+ {
m_reOpen = true;
+ m_masterStream = NULL;
+ }
delete (CSoftAEStream*)stream;
return NULL;
@@ -1058,11 +1060,11 @@ void CSoftAE::Run()
bool restart = false;
/* with the new non blocking implementation - we just reOpen here, when it tells reOpen */
- if (!m_reOpen && (this->*m_outputStageFn)(hasAudio) > 0)
+ if ((this->*m_outputStageFn)(hasAudio) > 0)
hasAudio = false; /* taken some audio - reset our silence flag */
/* if we have enough room in the buffer */
- if (!m_reOpen && m_buffer.Free() >= m_frameSize)
+ if (m_buffer.Free() >= m_frameSize)
{
/* take some data for our use from the buffer */
uint8_t *out = (uint8_t*)m_buffer.Take(m_frameSize);
--
1.7.10

View File

@ -0,0 +1,64 @@
diff -Naur xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.cpp xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
--- xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.cpp 2013-02-19 19:04:39.000000000 +0100
+++ xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.cpp 2013-02-22 18:18:47.298296862 +0100
@@ -124,7 +124,6 @@
m_started = false;
m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
m_autosync = 1;
- m_iSleepEndTime = DVD_NOPTS_VALUE;
m_audio_count = m_av_clock->HasAudio();
@@ -453,23 +452,13 @@
m_dropbase = 0.0f;
#endif
- // DVDPlayer sleeps until m_iSleepEndTime here before calling FlipPage.
- // Video playback in asynchronous in OMXPlayer, so we don't want to do that here, as it prevents the video fifo from being kept full.
- // So, we keep track of when FlipPage would have been called on DVDPlayer and return early if it is not time.
- // m_iSleepEndTime == DVD_NOPTS_VALUE means we are not waiting to call FlipPage, otherwise it is the time we want to call FlipPage
- if (m_iSleepEndTime == DVD_NOPTS_VALUE) {
- m_iSleepEndTime = iCurrentClock + iSleepTime;
- }
-
- if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime + DVD_MSEC_TO_TIME(500))
- return;
-
double pts_media = m_av_clock->OMXMediaTime(false, false);
ProcessOverlays(iGroupId, pts_media);
- g_renderManager.FlipPage(CThread::m_bStop, m_iSleepEndTime / DVD_TIME_BASE, -1, FS_NONE);
+ while(!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < (iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500)) )
+ Sleep(1);
- m_iSleepEndTime = DVD_NOPTS_VALUE;
+ g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, FS_NONE);
//m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime));
}
@@ -580,14 +569,12 @@
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();
diff -Naur xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.h xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.h
--- xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.h 2013-02-19 19:04:39.000000000 +0100
+++ xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.h 2013-02-22 18:18:44.166310881 +0100
@@ -49,7 +49,6 @@
bool m_open;
CDVDStreamInfo m_hints;
double m_iCurrentPts;
- double m_iSleepEndTime;
OMXClock *m_av_clock;
COMXVideo m_omxVideo;
float m_fFrameRate;

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
echo "### Applying architecture based patches ###"
if [ ! $TARGET_ARCH = arm ]; then
for patch in `ls $PKG_DIR/patches.x86`; do
cat $PKG_DIR/patches.x86/$patch | patch -d \
`echo $PKG_BUILD | cut -f1 -d\ ` -p1
done
fi

View File

@ -41,6 +41,7 @@ if [ $# -gt 0 ] ; then
intel_reg_write 0x70180 0xDA004400
# set new mode
xrandr --output $OUTPUT --set "Broadcast RGB" "Full"
intel_reg_write 0x70180 0xDA004400
fi
else
echo "Usage: $0 limited | full"

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<advancedsettings>
<!-- audio workaround for fusion -->
<audiooutput>
<dtshdpassthrough>false</dtshdpassthrough>
<multichannellpcm>false</multichannellpcm>
<passthroughaac>false</passthroughaac>
<stereoupmix>false</stereoupmix>
<truehdpassthrough>false</truehdpassthrough>
</audiooutput>
</advancedsettings>

View File

@ -1,41 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
#
# OEM scripts
#
# runlevels: openelec, installer, textmode
if [ ! -f /etc/asound.conf -a ! -f $HOME/.config/asound.conf ]; then
DMI_BOARD_VENDOR=`cat /sys/class/dmi/id/board_vendor`
# DMI_BOARD_VERSION=`cat /sys/class/dmi/id/board_version`
SYSTEM_CPU=`grep -m1 model /proc/cpuinfo | awk '{print $3}'`
if [ "$DMI_BOARD_VENDOR" = "XtReAmEr" ]; then
if [ "$SYSTEM_CPU" = "28" ]; then
# Xtreamer Ultra 1
cp /usr/share/xtreamer/asound.conf.ultra1 /run/asound.conf
elif [ "$SYSTEM_CPU" = "54" ]; then
# Xtreamer Ultra 2
cp /usr/share/xtreamer/asound.conf.ultra2 /run/asound.conf
fi
fi
fi

View File

@ -1,85 +0,0 @@
pcm.!default {
type plug
slave {
pcm "both"
}
}
pcm.both {
type route
slave {
pcm multi
channels 6
}
ttable.0.0 1.0
ttable.1.1 1.0
ttable.0.2 1.0
ttable.1.3 1.0
ttable.0.4 1.0
ttable.1.5 1.0
}
pcm.multi {
type multi
slaves.a {
pcm "hdmi_hw"
channels 2
}
slaves.b {
pcm "digital_hw"
channels 2
}
slaves.c {
pcm "analog_hw"
channels 2
}
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
bindings.4.slave c
bindings.4.channel 0
bindings.5.slave c
bindings.5.channel 1
}
pcm.hdmi_hw {
type hw
card 1
device 7
channels 2
}
pcm.hdmi_formatted {
type plug
slave {
pcm hdmi_hw
rate 48000
channels 2
}
}
pcm.hdmi_complete {
type softvol
slave.pcm hdmi_formatted
control.name hdmi_volume
control.card 1
}
pcm.digital_hw {
type hw
card 0
device 1
channels 2
}
pcm.analog_hw {
type hw
card 0
device 0
channels 2
}

View File

@ -1,85 +0,0 @@
pcm.!default {
type plug
slave {
pcm "both"
}
}
pcm.both {
type route
slave {
pcm multi
channels 6
}
ttable.0.0 1.0
ttable.1.1 1.0
ttable.0.2 1.0
ttable.1.3 1.0
ttable.0.4 1.0
ttable.1.5 1.0
}
pcm.multi {
type multi
slaves.a {
pcm "hdmi_hw"
channels 2
}
slaves.b {
pcm "digital_hw"
channels 2
}
slaves.c {
pcm "analog_hw"
channels 2
}
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
bindings.4.slave c
bindings.4.channel 0
bindings.5.slave c
bindings.5.channel 1
}
pcm.hdmi_hw {
type hw
card 1
device 3
channels 2
}
pcm.hdmi_formatted {
type plug
slave {
pcm hdmi_hw
rate 48000
channels 2
}
}
pcm.hdmi_complete {
type softvol
slave.pcm hdmi_formatted
control.name hdmi_volume
control.card 1
}
pcm.digital_hw {
type hw
card 0
device 1
channels 2
}
pcm.analog_hw {
type hw
card 0
device 0
channels 2
}