From f39aa43541d2f8f0863eded20aa9d4b30b0c76ce Mon Sep 17 00:00:00 2001 From: Peter Vicman Date: Sun, 1 Jan 2017 17:55:39 +0100 Subject: [PATCH] imx6: update kodi patches #2 --- .../kodi/kodi-050-from-openbricks.patch | 645 ++++++++++++++++-- .../kodi/kodi-100-libreelec-extras.patch | 108 +++ .../patches/kodi/kodi-100-master-fixes.patch | 69 -- 3 files changed, 713 insertions(+), 109 deletions(-) create mode 100644 projects/imx6/patches/kodi/kodi-100-libreelec-extras.patch delete mode 100644 projects/imx6/patches/kodi/kodi-100-master-fixes.patch diff --git a/projects/imx6/patches/kodi/kodi-050-from-openbricks.patch b/projects/imx6/patches/kodi/kodi-050-from-openbricks.patch index 0cde626778e..a0ec8a1c6a9 100644 --- a/projects/imx6/patches/kodi/kodi-050-from-openbricks.patch +++ b/projects/imx6/patches/kodi/kodi-050-from-openbricks.patch @@ -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 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 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 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 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, ¶m); -@@ -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 +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 + 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 +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 +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 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 +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 +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(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 m_bufHistory; +- static void Release(CDVDVideoCodecIMXBuffer *&t) { if (t) t->Release(); } + }; + + #endif +-- +1.9.1 + + ============================================================== file 400-Boost-Center-Audio-Channel-on-Downmixing.patch ============================================================== diff --git a/projects/imx6/patches/kodi/kodi-100-libreelec-extras.patch b/projects/imx6/patches/kodi/kodi-100-libreelec-extras.patch new file mode 100644 index 00000000000..95adef805f9 --- /dev/null +++ b/projects/imx6/patches/kodi/kodi-100-libreelec-extras.patch @@ -0,0 +1,108 @@ +From 6a535e23bef1d08f20e332d3caa5f080660a7596 Mon Sep 17 00:00:00 2001 +From: Peter Vicman +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 +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(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 +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; + diff --git a/projects/imx6/patches/kodi/kodi-100-master-fixes.patch b/projects/imx6/patches/kodi/kodi-100-master-fixes.patch deleted file mode 100644 index ab5276f1439..00000000000 --- a/projects/imx6/patches/kodi/kodi-100-master-fixes.patch +++ /dev/null @@ -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 -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 -