imx6: update kodi patches #2

This commit is contained in:
Peter Vicman 2017-01-01 17:55:39 +01:00
parent cbe4b4af8e
commit f39aa43541
3 changed files with 713 additions and 109 deletions

View File

@ -1,15 +1,15 @@
https://github.com/OpenBricks/openbricks/tree/krypton-glibc
https://github.com/OpenBricks/openbricks/tree/krypton-glibc/packages/multimedia/kodi/patches
https://github.com/OpenBricks/openbricks/tree/6a1b18f7749966324962061edc2ab844c23ca330/packages/multimedia/kodi/patches
https://github.com/OpenBricks/openbricks/tree/72ff2ef92130c16863f4c87c3627440e60e566e9/packages/multimedia/kodi/patches
==============================================================
file 0034-Use-uint32_t-for-physical-addresses.patch
file 0034-IMXCODEC-Use-uint32_t-for-physical-addresses.patch
==============================================================
From fc99366e9fb1d9f8c83875cdb604bf707d0cfd29 Mon Sep 17 00:00:00 2001
From 2dc612adfcc74c6439e5df47aba2cf63573f93f1 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sat, 24 Sep 2016 15:36:23 +0200
Subject: [PATCH] Use uint32_t for physical addresses
Subject: [PATCH] IMXCODEC: Use uint32_t for physical addresses
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 2 +-
@ -18,10 +18,10 @@ Subject: [PATCH] Use uint32_t for physical addresses
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index e3fa72e..d55a6b7 100644
index b1147d2..705b4a9 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -1198,7 +1198,7 @@
@@ -1198,7 +1198,7 @@ CDVDVideoCodecIMXBuffer::CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo,
iHeight = (((frameInfo->pExtInfo->nFrmHeight) + 15) & ~15);
pVirtAddr = m_frameBuffer->pbufVirtY;
@ -31,10 +31,10 @@ index e3fa72e..d55a6b7 100644
#ifdef IMX_INPUT_FORMAT_I420
iFormat = _4CC('I', '4', '2', '0');
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
index 6a4f638..69a74fe 100644
index 32e3a6c..fdac8ec 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
@@ -187,7 +187,7 @@
@@ -187,7 +187,7 @@ private:
int m_fbLineLength;
int m_fbPageSize;
int m_fbPhysSize;
@ -44,10 +44,10 @@ index 6a4f638..69a74fe 100644
struct fb_var_screeninfo m_fbVar;
int m_ipuHandle;
diff --git a/xbmc/linux/imx/IMX.h b/xbmc/linux/imx/IMX.h
index 8d13333..7363409 100644
index a269af0..2bc6761 100644
--- a/xbmc/linux/imx/IMX.h
+++ b/xbmc/linux/imx/IMX.h
@@ -182,7 +182,7 @@
@@ -182,7 +182,7 @@ public:
public:
uint32_t iWidth;
uint32_t iHeight;
@ -61,23 +61,23 @@ index 8d13333..7363409 100644
==============================================================
file 0035-Fix-page-counting-avoid-compiler-warning.patch
file 0035-IMXCODEC-Fix-page-counting-avoid-compiler-warning.patch
==============================================================
From 3c339bb9e574621d08c7d203582b3130211aff5a Mon Sep 17 00:00:00 2001
From 527cc00d7b56f01277be9abce0de48a63f388dd7 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sat, 24 Sep 2016 15:39:38 +0200
Subject: [PATCH] Fix page counting, avoid compiler warning
Subject: [PATCH] IMXCODEC: Fix page counting, avoid compiler warning
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index d55a6b7..1ea4922 100644
index 705b4a9..9b7a9ea 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -1562,15 +1562,15 @@ ipu_motion_sel CIMXContext::SetIPUMotion(std::string &strImethod)
@@ -1562,15 +1562,15 @@ void CIMXContext::SetIPUMotion(EINTERLACEMETHOD imethod)
void CIMXContext::Blit(CIMXBuffer *source_p, CIMXBuffer *source, const CRect &srcRect,
const CRect &dstRect, uint8_t fieldFmt, int page)
{
@ -101,13 +101,13 @@ index d55a6b7..1ea4922 100644
==============================================================
file 0042-Honour-forced-aspect-ratio-hint.patch
file 0036-IMXCODEC-Honour-forced-aspect-ratio-hint.patch
==============================================================
From 8542fadfce7bfa1c7691403029a81682c389c8c2 Mon Sep 17 00:00:00 2001
From eab2f97c91ec724f1c30af5b6d570d73e76689c8 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Mon, 3 Oct 2016 18:08:34 +0200
Subject: [PATCH] Honour forced aspect ratio hint
Subject: [PATCH] IMXCODEC: Honour forced aspect ratio hint
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 6 +++++-
@ -115,10 +115,10 @@ Subject: [PATCH] Honour forced aspect ratio hint
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 74f4ae4..155710a 100644
index 9b7a9ea..ac2ad8d 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -546,6 +546,8 @@
@@ -546,6 +546,8 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
#endif
m_warnOnce = true;
@ -127,7 +127,7 @@ index 74f4ae4..155710a 100644
switch(m_hints.codec)
{
case AV_CODEC_ID_MPEG1VIDEO:
@@ -1160,7 +1162,9 @@
@@ -1160,7 +1162,9 @@ bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
pDvdVideoPicture->iWidth = pDvdVideoPicture->IMXBuffer->m_pctWidth;
pDvdVideoPicture->iHeight = pDvdVideoPicture->IMXBuffer->m_pctHeight;
@ -139,10 +139,10 @@ index 74f4ae4..155710a 100644
pDvdVideoPicture->pts = pDvdVideoPicture->IMXBuffer->GetPts();
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
index 22b34d7..b91cdc2 100644
index fdac8ec..3d26a50 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
@@ -380,6 +380,7 @@
@@ -380,6 +380,7 @@ protected:
int m_codecControlFlags;
CCriticalSection m_signalLock;
CCriticalSection m_queuesLock;
@ -155,23 +155,23 @@ index 22b34d7..b91cdc2 100644
==============================================================
file 0043-Cleanup-mediainfo-logging.patch
file 0037-IMXCODEC-Cleanup-mediainfo-logging.patch
==============================================================
From 5a26b1e3d341dd2591f6315f9fc97b5677105bf8 Mon Sep 17 00:00:00 2001
From 2ca3bdccc4f4723297a51abb1dbe09b97d7115d0 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Mon, 3 Oct 2016 18:11:31 +0200
Subject: [PATCH] Cleanup mediainfo logging
Subject: [PATCH] IMXCODEC: Cleanup mediainfo logging
---
.../DVDCodecs/Video/DVDVideoCodecIMX.cpp | 52 +++++++++++-----------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 155710a..3dc63d5 100644
index ac2ad8d..810537f 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -504,8 +504,6 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
@@ -506,8 +506,6 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
}
m_hints = hints;
@ -180,7 +180,7 @@ index 155710a..3dc63d5 100644
int param = 0;
SetVPUParams(VPU_DEC_CONF_INPUTTYPE, &param);
@@ -514,32 +512,31 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
@@ -516,32 +514,31 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
#ifdef MEDIAINFO
if (g_advancedSettings.CanLogComponent(LOGVIDEO))
{
@ -207,19 +207,12 @@ index 155710a..3dc63d5 100644
+ CLog::Log(LOGNOTICE, "MEDIAINFO: PTS_invalid %d\n", m_hints.ptsinvalid);
+ CLog::Log(LOGNOTICE, "MEDIAINFO: Tag %d\n", m_hints.codec_tag);
+ CLog::Log(LOGNOTICE, "MEDIAINFO: %dx%d\n", m_hints.width, m_hints.height);
+
+ char str_tag[128];
+ av_get_codec_tag_string(str_tag, sizeof(str_tag), m_hints.codec_tag);
+ CLog::Log(LOGNOTICE, "MEDIAINFO: Tag fourcc %s\n", str_tag);
+
+ if (m_hints.extrasize)
+ {
+ char buf[4096];
- for (unsigned int i=0; i < m_hints.extrasize; i++)
- sprintf(buf+i*2, "%02x", ((uint8_t*)m_hints.extradata)[i]);
+ for (unsigned int i=0; i < m_hints.extrasize; i++)
+ sprintf(buf+i*2, "%02x", ((uint8_t*)m_hints.extradata)[i]);
+ char str_tag[128];
+ av_get_codec_tag_string(str_tag, sizeof(str_tag), m_hints.codec_tag);
+ CLog::Log(LOGNOTICE, "MEDIAINFO: Tag fourcc %s\n", str_tag);
- if (g_advancedSettings.CanLogComponent(LOGVIDEO))
- CLog::Log(LOGDEBUG, "Decode: MEDIAINFO: %s extradata %d %s\n", *(char*)m_hints.extradata == 1 ? "AnnexB" : "avcC", m_hints.extrasize, buf);
@ -228,6 +221,13 @@ index 155710a..3dc63d5 100644
- {
- CLog::Log(LOGDEBUG, "Decode: MEDIAINFO: %d / %d \n", m_hints.width, m_hints.height);
- CLog::Log(LOGDEBUG, "Decode: aspect %f - forced aspect %d\n", m_hints.aspect, m_hints.forced_aspect);
+ if (m_hints.extrasize)
+ {
+ char buf[4096];
+
+ for (unsigned int i=0; i < m_hints.extrasize; i++)
+ sprintf(buf+i*2, "%02x", ((uint8_t*)m_hints.extradata)[i]);
+
+ CLog::Log(LOGNOTICE, "MEDIAINFO: %s extradata %d %s\n", *(char*)m_hints.extradata == 1 ? "AnnexB" : "avcC", m_hints.extrasize, buf);
+ }
+
@ -236,7 +236,7 @@ index 155710a..3dc63d5 100644
}
#endif
@@ -626,6 +623,9 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
@@ -634,6 +631,9 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
return false;
}
@ -250,6 +250,571 @@ index 155710a..3dc63d5 100644
1.9.1
==============================================================
file 0038-IMXCODEC-Remove-m_frameInfo-member-variable-from-CIM.patch
==============================================================
From 9a21a0256d49f2f9d44a08d077ef2dbc393161f6 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sun, 1 Jan 2017 11:15:09 +0100
Subject: [PATCH] IMXCODEC: Remove m_frameInfo member variable from CIMXCodec
class
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 10 ++++++----
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 810537f..ee7178a 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -855,6 +855,7 @@ void CIMXCodec::AddExtraData(VpuBufferNode *bn, bool force)
void CIMXCodec::Process()
{
VpuDecFrameLengthInfo frameLengthInfo;
+ VpuDecOutFrameInfo frameInfo;
VpuBufferNode inData;
VpuBufferNode dummy;
VpuDecRetCode ret;
@@ -1002,16 +1003,16 @@ void CIMXCodec::Process()
if (!VPU_DecGetConsumedFrameInfo(m_vpuHandle, &frameLengthInfo) && frameLengthInfo.pFrame)
m_pts[frameLengthInfo.pFrame] = task->demux.pts;
- if (m_decRet & CLASS_PICTURE && getOutputFrame(&m_frameInfo))
+ if (m_decRet & CLASS_PICTURE && getOutputFrame(&frameInfo))
{
++m_nrOut;
- CDVDVideoCodecIMXBuffer *buffer = new CDVDVideoCodecIMXBuffer(&m_frameInfo, m_fps, m_decOpenParam.nMapType);
+ CDVDVideoCodecIMXBuffer *buffer = new CDVDVideoCodecIMXBuffer(&frameInfo, m_fps, m_decOpenParam.nMapType);
/* quick & dirty fix to get proper timestamping for VP8 codec */
if (m_decOpenParam.CodecFormat == VPU_V_VP8)
buffer->SetPts(task->demux.pts);
else
- buffer->SetPts(m_pts[m_frameInfo.pDisplayFrameBuf]);
+ buffer->SetPts(m_pts[frameInfo.pDisplayFrameBuf]);
buffer->SetDts(task->demux.dts);
@@ -1162,7 +1163,7 @@ bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
pDvdVideoPicture->iWidth = pDvdVideoPicture->IMXBuffer->m_pctWidth;
pDvdVideoPicture->iHeight = pDvdVideoPicture->IMXBuffer->m_pctHeight;
- int ratio = m_forcedWidthHeightRatio ? m_forcedWidthHeightRatio : m_frameInfo.pExtInfo->nQ16ShiftWidthDivHeightRatio;
+ int ratio = m_forcedWidthHeightRatio ? m_forcedWidthHeightRatio : pDvdVideoPicture->IMXBuffer->m_widthHeightRatio;
pDvdVideoPicture->iDisplayWidth = ((pDvdVideoPicture->iWidth * ratio) + 32767) >> 16;
pDvdVideoPicture->iDisplayHeight = pDvdVideoPicture->iHeight;
@@ -1196,6 +1197,7 @@ CDVDVideoCodecIMXBuffer::CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo,
{
m_pctWidth = frameInfo->pExtInfo->FrmCropRect.nRight - frameInfo->pExtInfo->FrmCropRect.nLeft;
m_pctHeight = frameInfo->pExtInfo->FrmCropRect.nBottom - frameInfo->pExtInfo->FrmCropRect.nTop;
+ m_widthHeightRatio = frameInfo->pExtInfo->nQ16ShiftWidthDivHeightRatio;
// Some codecs (VC1?) lie about their frame size (mod 16). Adjust...
iWidth = (((frameInfo->pExtInfo->nFrmWidth) + 15) & ~15);
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
index 3d26a50..aeb1692 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
@@ -268,6 +268,7 @@ public:
protected:
unsigned int m_pctWidth;
unsigned int m_pctHeight;
+ int m_widthHeightRatio;
private:
double m_pts;
@@ -374,7 +375,6 @@ protected:
std::unordered_map<VpuFrameBuffer*,double>
m_pts;
double m_lastPTS;
- VpuDecOutFrameInfo m_frameInfo; // Store last VPU output frame info
CBitstreamConverter *m_converter; // H264 annex B converter
bool m_warnOnce; // Track warning messages to only warn once
int m_codecControlFlags;
--
1.9.1
==============================================================
file 0039-IMXCODEC-Add-enum-VPU_MAPTYPE.patch
==============================================================
From 951095cdf14af35d0d2aefcd4122da1699075616 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sun, 1 Jan 2017 11:32:11 +0100
Subject: [PATCH] IMXCODEC: Add enum VPU_MAPTYPE
---
.../cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 14 +++++++-------
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h | 9 ++++++++-
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index ee7178a..3e77132 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -780,7 +780,7 @@ int CIMXCodec::Decode(BYTE *pData, int iSize, double dts, double pts)
else
m_fps = 60;
- m_decOpenParam.nMapType = 1;
+ m_decOpenParam.nMapType = MAPTYPE_TILED_FRAME;
ptrn.Flush();
g_IMXCodec->Create();
@@ -968,9 +968,9 @@ void CIMXCodec::Process()
if (!VpuFreeBuffers(false) || !VpuAllocFrameBuffers())
ExitError("VPU error while registering frame buffers");
- if (m_initInfo.nInterlace && m_fps >= 49 && m_decOpenParam.nMapType == 1)
+ if (m_initInfo.nInterlace && m_fps >= 49 && m_decOpenParam.nMapType == MAPTYPE_TILED_FRAME)
{
- m_decOpenParam.nMapType = 0;
+ m_decOpenParam.nMapType = MAPTYPE_LINEAR_FRAME;
Dispose();
VpuOpen();
continue;
@@ -1188,7 +1188,7 @@ bool CIMXCodec::IsCurrentThread() const
}
/*******************************************/
-CDVDVideoCodecIMXBuffer::CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo, double fps, int map)
+CDVDVideoCodecIMXBuffer::CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo, double fps, int mapType)
: m_dts(DVD_NOPTS_VALUE)
, m_fieldType(frameInfo->eFieldType)
, m_frameBuffer(frameInfo->pDisplayFrameBuf)
@@ -1209,9 +1209,9 @@ CDVDVideoCodecIMXBuffer::CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo,
#ifdef IMX_INPUT_FORMAT_I420
iFormat = _4CC('I', '4', '2', '0');
#else
- iFormat = map == 1 ? _4CC('T', 'N', 'V', 'P'):
- map == 0 ? _4CC('N', 'V', '1', '2'):
- _4CC('T', 'N', 'V', 'F');
+ iFormat = mapType == MAPTYPE_TILED_FRAME ? _4CC('T', 'N', 'V', 'P'):
+ mapType == MAPTYPE_LINEAR_FRAME ? _4CC('N', 'V', '1', '2'):
+ _4CC('T', 'N', 'V', 'F');
#endif
m_fps = fps;
#if defined(IMX_PROFILE) || defined(IMX_PROFILE_BUFFERS) || defined(TRACE_FRAMES)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
index aeb1692..22da54d 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
@@ -84,6 +84,13 @@ enum RENDER_TASK
RENDER_TASK_CAPTURE = -2,
};
+enum VPU_MAPTYPE
+{
+ MAPTYPE_LINEAR_FRAME = 0,
+ MAPTYPE_TILED_FRAME = 1,
+ MAPTYPE_TILED_FIELD = 2,
+};
+
#define CLASS_PICTURE (VPU_DEC_OUTPUT_DIS | VPU_DEC_OUTPUT_MOSAIC_DIS)
#define CLASS_NOBUF (VPU_DEC_OUTPUT_NODIS | VPU_DEC_NO_ENOUGH_BUF | VPU_DEC_OUTPUT_REPEAT)
#define CLASS_FORCEBUF (VPU_DEC_OUTPUT_EOS | VPU_DEC_NO_ENOUGH_INBUF)
@@ -244,7 +251,7 @@ class CDVDVideoCodecIMXBuffer : public CIMXBuffer
friend class CIMXCodec;
friend class CIMXContext;
public:
- CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo, double fps, int map);
+ CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo, double fps, int mapType);
virtual ~CDVDVideoCodecIMXBuffer();
// reference counting
--
1.9.1
==============================================================
file 0040-IMXCODEC-Prevent-lkFIFO-from-returning-uninitialized.patch
==============================================================
From c458ee2820562d7f7e6d015a6ff25c7ef126bb88 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sun, 1 Jan 2017 11:47:08 +0100
Subject: [PATCH] IMXCODEC: Prevent lkFIFO from returning uninitialized data
---
.../VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 15 +++++++++++----
xbmc/linux/imx/IMX.h | 16 ++++++++--------
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 3e77132..773c878 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -889,7 +889,7 @@ void CIMXCodec::Process()
{
RecycleFrameBuffers();
SAFE_DELETE(task);
- if (!(task = m_decInput.pop()))
+ if (!m_decInput.pop(task))
task = new VPUTask();
#if defined(IMX_PROFILE) || defined(IMX_PROFILE_BUFFERS)
@@ -1048,7 +1048,11 @@ void CIMXCodec::Process()
if (m_decRet & VPU_DEC_NO_ENOUGH_BUF && m_decOutput.size())
{
- m_decOutput.pop()->Release();
+ CDVDVideoCodecIMXBuffer *buffer;
+
+ if (m_decOutput.pop(buffer))
+ buffer->Release();
+
FlushVPU();
continue;
}
@@ -1124,8 +1128,11 @@ void CIMXCodec::ExitError(const char *msg, ...)
bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
{
- pDvdVideoPicture->IMXBuffer = m_decOutput.pop();
- assert(pDvdVideoPicture->IMXBuffer);
+ if (!m_decOutput.pop(pDvdVideoPicture->IMXBuffer))
+ {
+ memset(pDvdVideoPicture, 0, sizeof(*pDvdVideoPicture));
+ return false;
+ }
#ifdef IMX_PROFILE
static unsigned int previous = 0;
diff --git a/xbmc/linux/imx/IMX.h b/xbmc/linux/imx/IMX.h
index 2bc6761..201c1e9 100644
--- a/xbmc/linux/imx/IMX.h
+++ b/xbmc/linux/imx/IMX.h
@@ -79,23 +79,22 @@ public:
lkFIFO() { m_size = queue.max_size(); queue.clear(); m_abort = false; }
public:
- T pop()
+ bool pop(T &item)
{
std::unique_lock<std::mutex> m_lock(lkqueue);
m_abort = false;
while (!queue.size() && !m_abort)
read.wait(m_lock);
- T val;
- if (!queue.empty())
- {
- val = queue.front();
- queue.pop_front();
- }
+ if (queue.empty())
+ return false;
+
+ item = queue.front();
+ queue.pop_front();
m_lock.unlock();
write.notify_one();
- return val;
+ return true;
}
bool push(const T& item)
@@ -109,6 +108,7 @@ public:
return false;
queue.push_back(item);
+
m_lock.unlock();
read.notify_one();
return true;
--
1.9.1
==============================================================
file 0041-IMXCODEC-Cleanup-IMXBuffer-classes.patch
==============================================================
From abe53ea7362fe251b9cfc7e814dd78b7b06089b9 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sun, 1 Jan 2017 17:23:23 +0100
Subject: [PATCH] IMXCODEC: Cleanup IMXBuffer classes
---
.../DVDCodecs/Video/DVDVideoCodecIMX.cpp | 38 +++++++++++++---------
.../VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h | 13 ++++----
xbmc/linux/imx/IMX.h | 2 --
3 files changed, 29 insertions(+), 24 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 773c878..d498b45 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -1128,7 +1128,9 @@ void CIMXCodec::ExitError(const char *msg, ...)
bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
{
- if (!m_decOutput.pop(pDvdVideoPicture->IMXBuffer))
+ CDVDVideoCodecIMXBuffer *pBuffer;
+
+ if (!m_decOutput.pop(pBuffer))
{
memset(pDvdVideoPicture, 0, sizeof(*pDvdVideoPicture));
return false;
@@ -1139,9 +1141,9 @@ bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
unsigned int current;
current = XbmcThreads::SystemClockMillis();
- CLog::Log(LOGDEBUG, "+G 0x%x %f/%f tm:%03d : Interlaced 0x%x\n", pDvdVideoPicture->IMXBuffer->GetIdx(),
- recalcPts(pDvdVideoPicture->IMXBuffer->GetDts()), recalcPts(pDvdVideoPicture->IMXBuffer->GetPts()), current - previous,
- m_initInfo.nInterlace ? pDvdVideoPicture->IMXBuffer->GetFieldType() : 0);
+ CLog::Log(LOGDEBUG, "+G 0x%x %f/%f tm:%03d : Interlaced 0x%x\n", pBuffer->GetIdx(),
+ recalcPts(pBuffer->GetDts()), recalcPts(pBuffer->GetPts()), current - previous,
+ m_initInfo.nInterlace ? pBuffer->GetFieldType() : 0);
previous = current;
#endif
@@ -1151,35 +1153,37 @@ bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
++m_dropped;
}
else
- pDvdVideoPicture->iFlags = pDvdVideoPicture->IMXBuffer->GetFlags();
+ pDvdVideoPicture->iFlags = pBuffer->GetFlags();
if (m_initInfo.nInterlace)
{
- if (pDvdVideoPicture->IMXBuffer->GetFieldType() == VPU_FIELD_NONE && m_warnOnce)
+ if (pBuffer->GetFieldType() == VPU_FIELD_NONE && m_warnOnce)
{
m_warnOnce = false;
CLog::Log(LOGWARNING, "Interlaced content reported by VPU, but full frames detected - Please turn off deinterlacing manually.");
}
- else if (pDvdVideoPicture->IMXBuffer->GetFieldType() == VPU_FIELD_TB || pDvdVideoPicture->IMXBuffer->GetFieldType() == VPU_FIELD_TOP)
+ else if (pBuffer->GetFieldType() == VPU_FIELD_TB || pBuffer->GetFieldType() == VPU_FIELD_TOP)
pDvdVideoPicture->iFlags |= DVP_FLAG_TOP_FIELD_FIRST;
pDvdVideoPicture->iFlags |= DVP_FLAG_INTERLACED;
}
pDvdVideoPicture->format = RENDER_FMT_IMXMAP;
- pDvdVideoPicture->iWidth = pDvdVideoPicture->IMXBuffer->m_pctWidth;
- pDvdVideoPicture->iHeight = pDvdVideoPicture->IMXBuffer->m_pctHeight;
+ pDvdVideoPicture->iWidth = pBuffer->GetPictureWidth();
+ pDvdVideoPicture->iHeight = pBuffer->GetPictureHeight();
- int ratio = m_forcedWidthHeightRatio ? m_forcedWidthHeightRatio : pDvdVideoPicture->IMXBuffer->m_widthHeightRatio;
+ int ratio = m_forcedWidthHeightRatio ? m_forcedWidthHeightRatio : pBuffer->GetWidthHeightRatio();
pDvdVideoPicture->iDisplayWidth = ((pDvdVideoPicture->iWidth * ratio) + 32767) >> 16;
pDvdVideoPicture->iDisplayHeight = pDvdVideoPicture->iHeight;
- pDvdVideoPicture->pts = pDvdVideoPicture->IMXBuffer->GetPts();
- pDvdVideoPicture->dts = pDvdVideoPicture->IMXBuffer->GetDts();
+ pDvdVideoPicture->pts = pBuffer->GetPts();
+ pDvdVideoPicture->dts = pBuffer->GetDts();
if (pDvdVideoPicture->iFlags & DVP_FLAG_DROPPED)
- SAFE_RELEASE(pDvdVideoPicture->IMXBuffer);
+ SAFE_RELEASE(pBuffer);
+
+ pDvdVideoPicture->IMXBuffer = pBuffer;
return true;
}
@@ -1229,15 +1233,17 @@ CDVDVideoCodecIMXBuffer::CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo,
void CDVDVideoCodecIMXBuffer::Lock()
{
- long count = ++m_iRefs;
#ifdef TRACE_FRAMES
- CLog::Log(LOGDEBUG, "R+ 0x%x - ref : %ld (VPU)\n", m_idx, count);
+ CLog::Log(LOGDEBUG, "R+ 0x%x - ref : %ld (VPU)\n", m_idx, ++m_iRefs);
+#else
+ ++m_iRefs;
#endif
}
long CDVDVideoCodecIMXBuffer::Release()
{
long count = --m_iRefs;
+
#ifdef TRACE_FRAMES
CLog::Log(LOGDEBUG, "R- 0x%x - ref : %ld (VPU)\n", m_idx, count);
#endif
@@ -1803,7 +1809,7 @@ bool CIMXContext::TileTask(IPUTaskPtr &ipu)
return false;
}
- ((CDVDVideoCodecIMXBuffer*)ipu->current)->m_convBuffer = conv;
+ ((CDVDVideoCodecIMXBuffer*)ipu->current)->SetConvBuffer(conv);
vdoa.output.paddr = conv->buf_paddr;
}
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
index 22da54d..91f9b8c 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
@@ -248,8 +248,6 @@ public:
// Base class of IMXVPU and IMXIPU buffer
class CDVDVideoCodecIMXBuffer : public CIMXBuffer
{
-friend class CIMXCodec;
-friend class CIMXContext;
public:
CDVDVideoCodecIMXBuffer(VpuDecOutFrameInfo *frameInfo, double fps, int mapType);
virtual ~CDVDVideoCodecIMXBuffer();
@@ -272,12 +270,16 @@ public:
#endif
VpuFieldType GetFieldType() const { return m_fieldType; }
-protected:
+ unsigned int GetPictureWidth() { return m_pctWidth; }
+ unsigned int GetPictureHeight() { return m_pctHeight; }
+ int GetWidthHeightRatio() { return m_widthHeightRatio; }
+
+ void SetConvBuffer(struct g2d_buf *b) { m_convBuffer = b; }
+
+private:
unsigned int m_pctWidth;
unsigned int m_pctHeight;
int m_widthHeightRatio;
-
-private:
double m_pts;
double m_dts;
VpuFieldType m_fieldType;
@@ -288,7 +290,6 @@ private:
static unsigned char i;
#endif
-public:
struct g2d_buf *m_convBuffer;
};
diff --git a/xbmc/linux/imx/IMX.h b/xbmc/linux/imx/IMX.h
index 201c1e9..50c1cdb 100644
--- a/xbmc/linux/imx/IMX.h
+++ b/xbmc/linux/imx/IMX.h
@@ -177,8 +177,6 @@ public:
virtual void Lock() = 0;
virtual long Release() = 0;
- int GetFormat() { return iFormat; }
-
public:
uint32_t iWidth;
uint32_t iHeight;
--
1.9.1
==============================================================
file 0042-IMXRender-Refactor-to-improve-readability-and-perfor.patch
==============================================================
From bc3d7cdaaeb4e6c532672f65d27509f312eff21e Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Sun, 1 Jan 2017 17:56:17 +0100
Subject: [PATCH] IMXRender: Refactor to improve readability and performance
---
.../VideoRenderers/HwDecRender/RendererIMX.cpp | 29 ++++++++++------------
.../VideoRenderers/HwDecRender/RendererIMX.h | 5 ++--
2 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
index b5c7095..5167bd2 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
@@ -34,13 +34,14 @@
CRendererIMX::CRendererIMX()
{
- m_bufHistory.clear();
+ m_bufHistory[0] = m_bufHistory[1] = nullptr;
}
CRendererIMX::~CRendererIMX()
{
UnInit();
- std::for_each(m_bufHistory.begin(), m_bufHistory.end(), Release);
+ SAFE_RELEASE(m_bufHistory[1]);
+ SAFE_RELEASE(m_bufHistory[0]);
g_IMX.Deinitialize();
}
@@ -139,12 +140,7 @@ bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
CDVDVideoCodecIMXBuffer *buffer = static_cast<CDVDVideoCodecIMXBuffer*>(m_buffers[m_iYV12RenderBuffer].hwDec);
if (buffer)
{
- if (!m_bufHistory.empty() && m_bufHistory.back() != buffer || m_bufHistory.empty())
- {
- buffer->Lock();
- m_bufHistory.push_back(buffer);
- }
- else if (!m_bufHistory.empty() && m_bufHistory.back() == buffer && flagsPrev == flags)
+ if (buffer == m_bufHistory[0] && flagsPrev == flags)
{
g_IMX.WaitVsync();
return true;
@@ -152,12 +148,14 @@ bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
flagsPrev = flags;
- int size = flags & RENDER_FLAG_FIELDMASK ? 2 : 1;
- while (m_bufHistory.size() > size)
- {
- m_bufHistory.front()->Release();
- m_bufHistory.pop_front();
- }
+ buffer->Lock();
+
+ SAFE_RELEASE(m_bufHistory[1]);
+ m_bufHistory[1] = m_bufHistory[0];
+ m_bufHistory[0] = buffer;
+
+ if (!(flags & RENDER_FLAG_FIELDMASK))
+ SAFE_RELEASE(m_bufHistory[1]);
// this hack is needed to get the 2D mode of a 3D movie going
RENDER_STEREO_MODE stereo_mode = g_graphicsContext.GetStereoMode();
@@ -206,8 +204,7 @@ bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
}
}
- CDVDVideoCodecIMXBuffer *buffer_p = m_bufHistory.front();
- g_IMXContext.Blit(buffer_p == buffer ? nullptr : buffer_p, buffer, srcRect, dstRect, fieldFmt);
+ g_IMXContext.Blit(m_bufHistory[1], m_bufHistory[0], srcRect, dstRect, fieldFmt);
}
#if 0
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.h
index fc71e89..1a1ee2c 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.h
@@ -30,6 +30,8 @@
class CRendererIMX : public CLinuxRendererGLES
{
+ CDVDVideoCodecIMXBuffer *m_bufHistory[2];
+
public:
CRendererIMX();
virtual ~CRendererIMX();
@@ -61,9 +63,6 @@ protected:
virtual bool RenderHook(int index);
virtual int GetImageHook(YV12Image *image, int source = AUTOSOURCE, bool readonly = false);
virtual bool RenderUpdateVideoHook(bool clear, DWORD flags = 0, DWORD alpha = 255);
-
- std::deque<CDVDVideoCodecIMXBuffer*> m_bufHistory;
- static void Release(CDVDVideoCodecIMXBuffer *&t) { if (t) t->Release(); }
};
#endif
--
1.9.1
==============================================================
file 400-Boost-Center-Audio-Channel-on-Downmixing.patch
==============================================================

View File

@ -0,0 +1,108 @@
From 6a535e23bef1d08f20e332d3caa5f080660a7596 Mon Sep 17 00:00:00 2001
From: Peter Vicman <peter.vicman@gmail.com>
Date: Sun, 1 Jan 2017 18:00:29 +0100
Subject: [PATCH] disable suspend and hibernate
---
xbmc/powermanagement/linux/LogindUPowerSyscall.cpp | 4 ++--
xbmc/powermanagement/linux/UPowerSyscall.cpp | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
index 4e5bcc6..8dc4fb1 100644
--- a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
+++ b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
@@ -52,8 +52,8 @@ CLogindUPowerSyscall::CLogindUPowerSyscall()
m_canPowerdown = LogindCheckCapability("CanPowerOff");
m_canReboot = LogindCheckCapability("CanReboot");
- m_canHibernate = LogindCheckCapability("CanHibernate");
- m_canSuspend = LogindCheckCapability("CanSuspend");
+ m_canHibernate = false;
+ m_canSuspend = false;
InhibitDelayLock();
diff --git a/xbmc/powermanagement/linux/UPowerSyscall.cpp b/xbmc/powermanagement/linux/UPowerSyscall.cpp
index e3b4725..bddb7c6 100644
--- a/xbmc/powermanagement/linux/UPowerSyscall.cpp
+++ b/xbmc/powermanagement/linux/UPowerSyscall.cpp
@@ -262,8 +262,8 @@ bool CUPowerSyscall::PumpPowerEvents(IPowerEventsCallback *callback)
void CUPowerSyscall::UpdateCapabilities()
{
- m_CanSuspend = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "CanSuspend").asBoolean(false);
- m_CanHibernate = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "CanHibernate").asBoolean(false);
+ m_CanSuspend = false;
+ m_CanHibernate = false;
}
#endif
--
2.7.1
From b38c7b0f7914fcf9e04e17e7c6387c8a44d317b9 Mon Sep 17 00:00:00 2001
From: Peter Vicman <peter.vicman@gmail.com>
Date: Sun, 1 Jan 2017 19:23:07 +0100
Subject: [PATCH] fix freeze on lvds display connected to udoo quad
---
.../cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
index 5167bd2..138cec6 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
@@ -130,7 +130,6 @@ bool CRendererIMX::RenderHook(int index)
bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
{
- static DWORD flagsPrev;
#if 0
static unsigned long long previous = 0;
unsigned long long current = XbmcThreads::SystemClockMillis();
@@ -140,14 +139,6 @@ bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
CDVDVideoCodecIMXBuffer *buffer = static_cast<CDVDVideoCodecIMXBuffer*>(m_buffers[m_iYV12RenderBuffer].hwDec);
if (buffer)
{
- if (buffer == m_bufHistory[0] && flagsPrev == flags)
- {
- g_IMX.WaitVsync();
- return true;
- }
-
- flagsPrev = flags;
-
buffer->Lock();
SAFE_RELEASE(m_bufHistory[1]);
--
2.7.1
From 16264828a3fc3557eefbc8c117bbc715293dba8c Mon Sep 17 00:00:00 2001
From: Matus Kral <matuskral@me.com>
Date: Sun, 1 Jan 2017 18:52:40 +0100
Subject: [PATCH] [IMXEGL] reconfigure fb1 & unblank before (hdmi)sound is
resumed in WinSystem
---
xbmc/windowing/egl/EGLNativeTypeIMX.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/xbmc/windowing/egl/EGLNativeTypeIMX.cpp b/xbmc/windowing/egl/EGLNativeTypeIMX.cpp
index 5c85556..f958bdc 100644
--- a/xbmc/windowing/egl/EGLNativeTypeIMX.cpp
+++ b/xbmc/windowing/egl/EGLNativeTypeIMX.cpp
@@ -263,6 +263,8 @@ bool CEGLNativeTypeIMX::SetNativeResolution(const RESOLUTION_INFO &res)
CreateNativeDisplay();
CreateNativeWindow();
+ g_IMXContext.OnResetDisplay();
+ ShowWindow(true);
CLog::Log(LOGDEBUG, "%s: %s",__FUNCTION__, res.strId.c_str());
return true;

View File

@ -1,69 +0,0 @@
disable standby
--- a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp 2016-10-07 09:41:03.067310207 +0200
+++ b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp 2016-10-07 09:41:27.658371366 +0200
@@ -52,8 +52,8 @@ CLogindUPowerSyscall::CLogindUPowerSysca
m_canPowerdown = LogindCheckCapability("CanPowerOff");
m_canReboot = LogindCheckCapability("CanReboot");
- m_canHibernate = LogindCheckCapability("CanHibernate");
- m_canSuspend = LogindCheckCapability("CanSuspend");
+ m_canHibernate = false;
+ m_canSuspend = false;
InhibitDelayLock();
--- a/xbmc/powermanagement/linux/UPowerSyscall.cpp.orig 2016-10-07 10:01:18.236917326 +0200
+++ b/xbmc/powermanagement/linux/UPowerSyscall.cpp 2016-10-07 10:01:46.311845478 +0200
@@ -262,8 +262,8 @@ bool CUPowerSyscall::PumpPowerEvents(IPo
void CUPowerSyscall::UpdateCapabilities()
{
- m_CanSuspend = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "CanSuspend").asBoolean(false);
- m_CanHibernate = CDBusUtil::GetVariant("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", "CanHibernate").asBoolean(false);
+ m_CanSuspend = false;
+ m_CanHibernate = false;
}
#endif
From 584a94130a480ce7fe161614efe62bb491f3d7e7 Mon Sep 17 00:00:00 2001
From: Peter Vicman <peter.vicman@gmail.com>
Date: Fri, 30 Dec 2016 19:48:22 +0100
Subject: [PATCH] fix freeze on lvds display connected to udoo quad
partialy revert 1a863f250a2ec203e962cde03b67d680ea2e9cfd
[RendererIMX] skip rendering already rendered buffer
---
xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp | 8 --------
1 file changed, 8 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
index b5c7095..ad0f58d 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
@@ -129,7 +129,6 @@ bool CRendererIMX::RenderHook(int index)
bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
{
- static DWORD flagsPrev;
#if 0
static unsigned long long previous = 0;
unsigned long long current = XbmcThreads::SystemClockMillis();
@@ -144,13 +143,6 @@ bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
buffer->Lock();
m_bufHistory.push_back(buffer);
}
- else if (!m_bufHistory.empty() && m_bufHistory.back() == buffer && flagsPrev == flags)
- {
- g_IMX.WaitVsync();
- return true;
- }
-
- flagsPrev = flags;
int size = flags & RENDER_FLAG_FIELDMASK ? 2 : 1;
while (m_bufHistory.size() > size)
--
2.7.1