diff --git a/config/noobs/slides/A.png b/config/noobs/marketing/slides/A.png similarity index 100% rename from config/noobs/slides/A.png rename to config/noobs/marketing/slides/A.png diff --git a/config/noobs/slides/B.png b/config/noobs/marketing/slides/B.png similarity index 100% rename from config/noobs/slides/B.png rename to config/noobs/marketing/slides/B.png diff --git a/config/noobs/slides/C.png b/config/noobs/marketing/slides/C.png similarity index 100% rename from config/noobs/slides/C.png rename to config/noobs/marketing/slides/C.png diff --git a/config/noobs/slides/D.png b/config/noobs/marketing/slides/D.png similarity index 100% rename from config/noobs/slides/D.png rename to config/noobs/marketing/slides/D.png diff --git a/config/noobs/slides/E.png b/config/noobs/marketing/slides/E.png similarity index 100% rename from config/noobs/slides/E.png rename to config/noobs/marketing/slides/E.png diff --git a/config/noobs/slides_vga/A.png b/config/noobs/marketing/slides_vga/A.png similarity index 100% rename from config/noobs/slides_vga/A.png rename to config/noobs/marketing/slides_vga/A.png diff --git a/config/noobs/slides_vga/B.png b/config/noobs/marketing/slides_vga/B.png similarity index 100% rename from config/noobs/slides_vga/B.png rename to config/noobs/marketing/slides_vga/B.png diff --git a/config/noobs/slides_vga/C.png b/config/noobs/marketing/slides_vga/C.png similarity index 100% rename from config/noobs/slides_vga/C.png rename to config/noobs/marketing/slides_vga/C.png diff --git a/config/noobs/slides_vga/D.png b/config/noobs/marketing/slides_vga/D.png similarity index 100% rename from config/noobs/slides_vga/D.png rename to config/noobs/marketing/slides_vga/D.png diff --git a/config/noobs/slides_vga/E.png b/config/noobs/marketing/slides_vga/E.png similarity index 100% rename from config/noobs/slides_vga/E.png rename to config/noobs/marketing/slides_vga/E.png diff --git a/packages/mediacenter/OpenELEC-settings/package.mk b/packages/mediacenter/OpenELEC-settings/package.mk index a9b99a52ed..53444b1103 100644 --- a/packages/mediacenter/OpenELEC-settings/package.mk +++ b/packages/mediacenter/OpenELEC-settings/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="OpenELEC-settings" -PKG_VERSION="0.6.7" +PKG_VERSION="0.6.8" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="prop." diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.modplug/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.modplug/package.mk index 5c2521b4c2..c5ff195679 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.modplug/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.modplug/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.modplug" -PKG_VERSION="2de539b" +PKG_VERSION="5ae7349" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.nosefart/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.nosefart/package.mk index 572563be05..fe7498a8b4 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.nosefart/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.nosefart/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.nosefart" -PKG_VERSION="a49ba6e" +PKG_VERSION="936313f" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.sidplay/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.sidplay/package.mk index a0cf9dc34e..6b64e112dd 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.sidplay/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.sidplay/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.sidplay" -PKG_VERSION="6568676" +PKG_VERSION="27b2c05" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.snesapu/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.snesapu/package.mk index 26034697d4..6a32958466 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.snesapu/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.snesapu/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.snesapu" -PKG_VERSION="2bd1e34" +PKG_VERSION="399d1d3" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.stsound/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.stsound/package.mk index db01c778a1..6d9acb770e 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.stsound/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.stsound/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.stsound" -PKG_VERSION="640b049" +PKG_VERSION="f6fbae9" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.timidity/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.timidity/package.mk index 66b4d1b32b..7b89084fb2 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.timidity/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.timidity/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.timidity" -PKG_VERSION="7f079c1" +PKG_VERSION="da5eb9a" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/audiodecoder.vgmstream/package.mk b/packages/mediacenter/kodi-binary-addons/audiodecoder.vgmstream/package.mk index fad97539ab..4dffae9559 100644 --- a/packages/mediacenter/kodi-binary-addons/audiodecoder.vgmstream/package.mk +++ b/packages/mediacenter/kodi-binary-addons/audiodecoder.vgmstream/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="audiodecoder.vgmstream" -PKG_VERSION="715c580" +PKG_VERSION="7723f91" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk index e8a7ee3da0..61c3810ca1 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.hts/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="pvr.hts" -PKG_VERSION="d038dfc" +PKG_VERSION="98d93e7" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.mythtv/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.mythtv/package.mk index f47d40e0cc..31a428f417 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.mythtv/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.mythtv/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="pvr.mythtv" -PKG_VERSION="c810489" +PKG_VERSION="43ab825" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.stalker/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.stalker/package.mk index dd99ed46fd..7a3346a4b8 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.stalker/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.stalker/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="pvr.stalker" -PKG_VERSION="2d65b21" +PKG_VERSION="a8c3e45" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.vbox/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.vbox/package.mk index 3c208aeada..c9c5ffb02a 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.vbox/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.vbox/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="pvr.vbox" -PKG_VERSION="375eab3" +PKG_VERSION="63b8782" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-binary-addons/pvr.vdr.vnsi/package.mk b/packages/mediacenter/kodi-binary-addons/pvr.vdr.vnsi/package.mk index 004c24f1e4..dc60b2d2f7 100644 --- a/packages/mediacenter/kodi-binary-addons/pvr.vdr.vnsi/package.mk +++ b/packages/mediacenter/kodi-binary-addons/pvr.vdr.vnsi/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="pvr.vdr.vnsi" -PKG_VERSION="244b893" +PKG_VERSION="033cc50" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-theme-Confluence/package.mk b/packages/mediacenter/kodi-theme-Confluence/package.mk index 00cb3a1b0c..206233840f 100644 --- a/packages/mediacenter/kodi-theme-Confluence/package.mk +++ b/packages/mediacenter/kodi-theme-Confluence/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="kodi-theme-Confluence" -PKG_VERSION="15.0-beta2-658e700" +PKG_VERSION="15.0-beta2-daedd5f" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 92420ba6e3..151accc831 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="kodi" -PKG_VERSION="15.0-beta2-658e700" +PKG_VERSION="15.0-beta2-daedd5f" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi/patches/kodi-999.22-PR7280.patch b/packages/mediacenter/kodi/patches/kodi-999.22-PR7280.patch new file mode 100644 index 0000000000..0cfe4bbd31 --- /dev/null +++ b/packages/mediacenter/kodi/patches/kodi-999.22-PR7280.patch @@ -0,0 +1,1364 @@ +From 224c1919ad3f68e23e817f41036687343f34aaae Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Fri, 12 Jun 2015 17:27:47 +0100 +Subject: [PATCH] [utils] Disable fast_memcpy which is slower than memcpy + +The default glibc memcpy is likely to be better tuned than this code +which hasn't been touched for four years. + +In a test with software video decode on Pi2 the skipped frames went +from 189 to 172 when fast_memcpy was disabled. +--- + Kodi.xcodeproj/project.pbxproj | 6 - + project/VS2010Express/XBMC.vcxproj | 4 - + project/VS2010Express/XBMC.vcxproj.filters | 3 - + xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 1 - + xbmc/cores/VideoRenderers/RenderCapture.cpp | 7 +- + xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp | 33 +- + .../Video/libstagefrightICS/StageFrightVideo.cpp | 3 +- + xbmc/utils/Makefile.in | 2 - + xbmc/utils/fastmemcpy-arm.S | 528 --------------------- + xbmc/utils/fastmemcpy.c | 396 ---------------- + xbmc/utils/fastmemcpy.h | 35 -- + xbmc/utils/test/Makefile | 1 - + xbmc/utils/test/Testfastmemcpy.cpp | 39 -- + 13 files changed, 20 insertions(+), 1038 deletions(-) + delete mode 100644 xbmc/utils/fastmemcpy-arm.S + delete mode 100644 xbmc/utils/fastmemcpy.c + delete mode 100644 xbmc/utils/fastmemcpy.h + delete mode 100644 xbmc/utils/test/Testfastmemcpy.cpp + +diff --git a/Kodi.xcodeproj/project.pbxproj b/Kodi.xcodeproj/project.pbxproj +index 395c4ea..ce5a7f7 100644 +--- a/Kodi.xcodeproj/project.pbxproj ++++ b/Kodi.xcodeproj/project.pbxproj +@@ -3192,7 +3192,6 @@ + F5E55B5D10741272006E788A /* DVDPlayerTeletext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5E55B5B10741272006E788A /* DVDPlayerTeletext.cpp */; }; + F5E55B66107412DE006E788A /* GUIDialogTeletext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5E55B65107412DE006E788A /* GUIDialogTeletext.cpp */; }; + F5E55B7010741340006E788A /* Teletext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5E55B6E10741340006E788A /* Teletext.cpp */; }; +- F5E5697310803FC3006E788A /* fastmemcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = F5E5697210803FC3006E788A /* fastmemcpy.c */; }; + F5E56BA61082A675006E788A /* PosixMountProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5E56BA51082A675006E788A /* PosixMountProvider.cpp */; }; + F5EA02260F6DA990005C2EC5 /* CocoaPowerSyscall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EA02200F6DA85C005C2EC5 /* CocoaPowerSyscall.cpp */; }; + F5EA02270F6DA9A5005C2EC5 /* PowerManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EA021A0F6DA7E8005C2EC5 /* PowerManager.cpp */; }; +@@ -3632,7 +3631,6 @@ + 43348AAB1077486D00F859CF /* PlayerSelectionRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlayerSelectionRule.h; path = playercorefactory/PlayerSelectionRule.h; sourceTree = ""; }; + 436721A612D66A09002508E6 /* IAnnouncer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IAnnouncer.h; sourceTree = ""; }; + 436B38F3106628850049AB3B /* EndianSwap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EndianSwap.h; sourceTree = ""; }; +- 43BF09DD1080D39300E25290 /* fastmemcpy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastmemcpy.h; sourceTree = ""; }; + 43FAC87112D6349400F67914 /* IStorageProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IStorageProvider.h; sourceTree = ""; }; + 551C3A43175A12010051AAAD /* VDA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VDA.cpp; sourceTree = ""; }; + 551C3A44175A12010051AAAD /* VDA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VDA.h; sourceTree = ""; }; +@@ -5735,7 +5733,6 @@ + F5E55B6D10741340006E788A /* Teletext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Teletext.h; sourceTree = ""; }; + F5E55B6E10741340006E788A /* Teletext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Teletext.cpp; sourceTree = ""; }; + F5E55B6F10741340006E788A /* TeletextDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TeletextDefines.h; sourceTree = ""; }; +- F5E5697210803FC3006E788A /* fastmemcpy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fastmemcpy.c; sourceTree = ""; }; + F5E56BA41082A675006E788A /* PosixMountProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PosixMountProvider.h; sourceTree = ""; }; + F5E56BA51082A675006E788A /* PosixMountProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PosixMountProvider.cpp; sourceTree = ""; }; + F5EA021A0F6DA7E8005C2EC5 /* PowerManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PowerManager.cpp; sourceTree = ""; }; +@@ -9202,8 +9199,6 @@ + DF529BAD1741697B00523FB4 /* Environment.h */, + E36C29E90DA72486001F0C9D /* Fanart.cpp */, + 6E97BDC30DA2B620003A2A89 /* Fanart.h */, +- F5E5697210803FC3006E788A /* fastmemcpy.c */, +- 43BF09DD1080D39300E25290 /* fastmemcpy.h */, + F5F244641110DC6B009126C6 /* FileOperationJob.cpp */, + F5F244631110DC6B009126C6 /* FileOperationJob.h */, + F5F245EC1112C9AB009126C6 /* FileUtils.cpp */, +@@ -10519,7 +10514,6 @@ + 43348AAE1077486D00F859CF /* PlayerCoreFactory.cpp in Sources */, + 43348AAF1077486D00F859CF /* PlayerSelectionRule.cpp in Sources */, + 7CAA20511079C8160096DE39 /* BaseRenderer.cpp in Sources */, +- F5E5697310803FC3006E788A /* fastmemcpy.c in Sources */, + 55D3604E1826CAB900DA66D2 /* OverlayRendererGUI.cpp in Sources */, + F5E56BA61082A675006E788A /* PosixMountProvider.cpp in Sources */, + 7CAA25351085963B0096DE39 /* PasswordManager.cpp in Sources */, +diff --git a/project/VS2010Express/XBMC.vcxproj b/project/VS2010Express/XBMC.vcxproj +index 2d37c57..e8e8dce 100644 +--- a/project/VS2010Express/XBMC.vcxproj ++++ b/project/VS2010Express/XBMC.vcxproj +@@ -1439,10 +1439,6 @@ + true + true + +- +- true +- true +- + + + +diff --git a/project/VS2010Express/XBMC.vcxproj.filters b/project/VS2010Express/XBMC.vcxproj.filters +index c858f32..cada31e 100644 +--- a/project/VS2010Express/XBMC.vcxproj.filters ++++ b/project/VS2010Express/XBMC.vcxproj.filters +@@ -2371,9 +2371,6 @@ + + utils\test + +- +- utils\test +- + + utils\test + +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp +index 2b64121..fdad7f0 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp +@@ -31,7 +31,6 @@ + #include + #include "guilib/MatrixGLES.h" + #include "LinuxRendererGLES.h" +-#include "utils/fastmemcpy.h" + #include "utils/MathUtils.h" + #include "utils/GLUtils.h" + #include "utils/log.h" +diff --git a/xbmc/cores/VideoRenderers/RenderCapture.cpp b/xbmc/cores/VideoRenderers/RenderCapture.cpp +index 603b68d..0456a27 100644 +--- a/xbmc/cores/VideoRenderers/RenderCapture.cpp ++++ b/xbmc/cores/VideoRenderers/RenderCapture.cpp +@@ -21,7 +21,6 @@ + #include "RenderCapture.h" + #include "utils/log.h" + #include "windowing/WindowingFactory.h" +-#include "utils/fastmemcpy.h" + #include "settings/AdvancedSettings.h" + + CRenderCaptureBase::CRenderCaptureBase() +@@ -297,7 +296,7 @@ void CRenderCaptureGL::PboToBuffer() + + if (pboPtr) + { +- fast_memcpy(m_pixels, pboPtr, m_bufferSize); ++ memcpy(m_pixels, pboPtr, m_bufferSize); + SetState(CAPTURESTATE_DONE); + } + else +@@ -491,12 +490,12 @@ void CRenderCaptureDX::SurfaceToBuffer() + //if pitch is same, do a direct copy, otherwise copy one line at a time + if (lockedRect.Pitch == m_width * 4) + { +- fast_memcpy(m_pixels, lockedRect.pBits, m_width * m_height * 4); ++ memcpy(m_pixels, lockedRect.pBits, m_width * m_height * 4); + } + else + { + for (unsigned int y = 0; y < m_height; y++) +- fast_memcpy(m_pixels + y * m_width * 4, (uint8_t*)lockedRect.pBits + y * lockedRect.Pitch, m_width * 4); ++ memcpy(m_pixels + y * m_width * 4, (uint8_t*)lockedRect.pBits + y * lockedRect.Pitch, m_width * 4); + } + m_copySurface->UnlockRect(); + SetState(CAPTURESTATE_DONE); +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp b/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp +index 56e68713..5f0e486 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp +@@ -22,7 +22,6 @@ + #include "DVDClock.h" + #include "cores/VideoRenderers/RenderManager.h" + #include "utils/log.h" +-#include "utils/fastmemcpy.h" + #include "cores/FFmpeg.h" + #include "Util.h" + #ifdef HAS_DX +@@ -95,7 +94,7 @@ bool CDVDCodecUtils::CopyPicture(DVDVideoPicture* pDst, DVDVideoPicture* pSrc) + + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[0]; + d += pDst->iLineSize[0]; + } +@@ -107,7 +106,7 @@ bool CDVDCodecUtils::CopyPicture(DVDVideoPicture* pDst, DVDVideoPicture* pSrc) + d = pDst->data[1]; + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[1]; + d += pDst->iLineSize[1]; + } +@@ -116,7 +115,7 @@ bool CDVDCodecUtils::CopyPicture(DVDVideoPicture* pDst, DVDVideoPicture* pSrc) + d = pDst->data[2]; + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[2]; + d += pDst->iLineSize[2]; + } +@@ -131,13 +130,13 @@ bool CDVDCodecUtils::CopyPicture(YV12Image* pImage, DVDVideoPicture *pSrc) + int h = pImage->height; + if ((w == pSrc->iLineSize[0]) && ((unsigned int) pSrc->iLineSize[0] == pImage->stride[0])) + { +- fast_memcpy(d, s, w*h); ++ memcpy(d, s, w*h); + } + else + { + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[0]; + d += pImage->stride[0]; + } +@@ -148,13 +147,13 @@ bool CDVDCodecUtils::CopyPicture(YV12Image* pImage, DVDVideoPicture *pSrc) + h =(pImage->height >> pImage->cshift_y); + if ((w==pSrc->iLineSize[1]) && ((unsigned int) pSrc->iLineSize[1]==pImage->stride[1])) + { +- fast_memcpy(d, s, w*h); ++ memcpy(d, s, w*h); + } + else + { + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[1]; + d += pImage->stride[1]; + } +@@ -163,13 +162,13 @@ bool CDVDCodecUtils::CopyPicture(YV12Image* pImage, DVDVideoPicture *pSrc) + d = pImage->plane[2]; + if ((w==pSrc->iLineSize[2]) && ((unsigned int) pSrc->iLineSize[2]==pImage->stride[2])) + { +- fast_memcpy(d, s, w*h); ++ memcpy(d, s, w*h); + } + else + { + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[2]; + d += pImage->stride[2]; + } +@@ -207,7 +206,7 @@ DVDVideoPicture* CDVDCodecUtils::ConvertToNV12Picture(DVDVideoPicture *pSrc) + uint8_t *d = pPicture->data[0]; + for (int y = 0; y < (int)pSrc->iHeight; y++) + { +- fast_memcpy(d, s, pSrc->iWidth); ++ memcpy(d, s, pSrc->iWidth); + s += pSrc->iLineSize[0]; + d += pPicture->iLineSize[0]; + } +@@ -298,13 +297,13 @@ bool CDVDCodecUtils::CopyNV12Picture(YV12Image* pImage, DVDVideoPicture *pSrc) + // Copy Y + if ((w == pSrc->iLineSize[0]) && ((unsigned int) pSrc->iLineSize[0] == pImage->stride[0])) + { +- fast_memcpy(d, s, w*h); ++ memcpy(d, s, w*h); + } + else + { + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[0]; + d += pImage->stride[0]; + } +@@ -317,13 +316,13 @@ bool CDVDCodecUtils::CopyNV12Picture(YV12Image* pImage, DVDVideoPicture *pSrc) + // Copy packed UV (width is same as for Y as it's both U and V components) + if ((w==pSrc->iLineSize[1]) && ((unsigned int) pSrc->iLineSize[1]==pImage->stride[1])) + { +- fast_memcpy(d, s, w*h); ++ memcpy(d, s, w*h); + } + else + { + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w); ++ memcpy(d, s, w); + s += pSrc->iLineSize[1]; + d += pImage->stride[1]; + } +@@ -342,13 +341,13 @@ bool CDVDCodecUtils::CopyYUV422PackedPicture(YV12Image* pImage, DVDVideoPicture + // Copy YUYV + if ((w * 2 == pSrc->iLineSize[0]) && ((unsigned int) pSrc->iLineSize[0] == pImage->stride[0])) + { +- fast_memcpy(d, s, w*h*2); ++ memcpy(d, s, w*h*2); + } + else + { + for (int y = 0; y < h; y++) + { +- fast_memcpy(d, s, w*2); ++ memcpy(d, s, w*2); + s += pSrc->iLineSize[0]; + d += pImage->stride[0]; + } +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/StageFrightVideo.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/StageFrightVideo.cpp +index 019bc7a..d5ca74f 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/StageFrightVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/StageFrightVideo.cpp +@@ -30,7 +30,6 @@ + #include "guilib/GraphicContext.h" + #include "DVDClock.h" + #include "utils/log.h" +-#include "utils/fastmemcpy.h" + #include "threads/Thread.h" + #include "threads/Event.h" + #include "Application.h" +@@ -620,7 +619,7 @@ int CStageFrightVideo::Decode(uint8_t *pData, int iSize, double dts, double pts + return VC_ERROR; + } + +- fast_memcpy(frame->medbuf->data(), demuxer_content, demuxer_bytes); ++ memcpy(frame->medbuf->data(), demuxer_content, demuxer_bytes); + frame->medbuf->set_range(0, demuxer_bytes); + frame->medbuf->meta_data()->clear(); + frame->medbuf->meta_data()->setInt64(kKeyTime, frame->pts); +diff --git a/xbmc/utils/Makefile.in b/xbmc/utils/Makefile.in +index 438f025..dbd3db9 100644 +--- a/xbmc/utils/Makefile.in ++++ b/xbmc/utils/Makefile.in +@@ -17,8 +17,6 @@ SRCS += DatabaseUtils.cpp + SRCS += EndianSwap.cpp + SRCS += Environment.cpp + SRCS += Fanart.cpp +-SRCS += fastmemcpy.c +-SRCS += fastmemcpy-arm.S + SRCS += FileOperationJob.cpp + SRCS += FileUtils.cpp + SRCS += fstrcmp.c +diff --git a/xbmc/utils/fastmemcpy-arm.S b/xbmc/utils/fastmemcpy-arm.S +deleted file mode 100644 +index 6cb8b0c..0000000 +--- a/xbmc/utils/fastmemcpy-arm.S ++++ /dev/null +@@ -1,528 +0,0 @@ +-/* +- * Copyright (C) 2008 The Android Open Source Project +- * All rights reserved. +- * +- * Copyright (C) 2011-2013 Team XBMC +- * http://xbmc.org +- * +- * 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 XBMC; see the file COPYING. If not, see +- * . +- * +- */ +-#if defined(__arm__) && !defined(TARGET_ANDROID) && !defined(TARGET_DARWIN_IOS) +-#if defined(__ARM_NEON__) +- +- .text +-#ifndef __APPLE__ +- .fpu neon +- .global fast_memcpy +- .type fast_memcpy, %function +-#else +- .globl _fast_memcpy +-#endif +- .align 4 +- +-/* a prefetch distance of 4 cache-lines works best experimentally */ +-#define CACHE_LINE_SIZE 64 +-#define PREFETCH_DISTANCE (CACHE_LINE_SIZE*4) +- +-#ifndef __APPLE__ +- .fnstart +- .save {r0, lr} +-fast_memcpy: +-#else +-_fast_memcpy: +-#endif +- stmfd sp!, {r0, lr} +- +- /* start preloading as early as possible */ +- pld [r1, #(CACHE_LINE_SIZE*0)] +- pld [r1, #(CACHE_LINE_SIZE*1)] +- +- /* do we have at least 16-bytes to copy (needed for alignment below) */ +- cmp r2, #16 +- blo 5f +- +- /* align destination to half cache-line for the write-buffer */ +- rsb r3, r0, #0 +- ands r3, r3, #0xF +- beq 0f +- +- /* copy up to 15-bytes (count in r3) */ +- sub r2, r2, r3 +- movs ip, r3, lsl #31 +- ldrmib lr, [r1], #1 +- strmib lr, [r0], #1 +- ldrcsb ip, [r1], #1 +- ldrcsb lr, [r1], #1 +- strcsb ip, [r0], #1 +- strcsb lr, [r0], #1 +- movs ip, r3, lsl #29 +- bge 1f +- // copies 4 bytes, destination 32-bits aligned +- vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]! +- vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]! +-1: bcc 2f +- // copies 8 bytes, destination 64-bits aligned +- vld1.8 {d0}, [r1]! +- vst1.8 {d0}, [r0, :64]! +-2: +- +-0: /* preload immediately the next cache line, which we may need */ +- pld [r1, #(CACHE_LINE_SIZE*0)] +- pld [r1, #(CACHE_LINE_SIZE*1)] +- +- /* make sure we have at least 64 bytes to copy */ +- subs r2, r2, #64 +- blo 2f +- +- /* preload all the cache lines we need. +- * NOTE: the number of pld below depends on PREFETCH_DISTANCE, +- * ideally would would increase the distance in the main loop to +- * avoid the goofy code below. In practice this doesn't seem to make +- * a big difference. +- */ +- pld [r1, #(CACHE_LINE_SIZE*2)] +- pld [r1, #(CACHE_LINE_SIZE*3)] +- pld [r1, #(PREFETCH_DISTANCE)] +- +-1: /* The main loop copies 64 bytes at a time */ +- vld1.8 {d0 - d3}, [r1]! +- vld1.8 {d4 - d7}, [r1]! +- pld [r1, #(PREFETCH_DISTANCE)] +- subs r2, r2, #64 +- vst1.8 {d0 - d3}, [r0, :128]! +- vst1.8 {d4 - d7}, [r0, :128]! +- bhs 1b +- +-2: /* fix-up the remaining count and make sure we have >= 32 bytes left */ +- add r2, r2, #64 +- subs r2, r2, #32 +- blo 4f +- +-3: /* 32 bytes at a time. These cache lines were already preloaded */ +- vld1.8 {d0 - d3}, [r1]! +- subs r2, r2, #32 +- vst1.8 {d0 - d3}, [r0, :128]! +- bhs 3b +- +-4: /* less than 32 left */ +- add r2, r2, #32 +- tst r2, #0x10 +- beq 5f +- // copies 16 bytes, 128-bits aligned +- vld1.8 {d0, d1}, [r1]! +- vst1.8 {d0, d1}, [r0, :128]! +- +-5: /* copy up to 15-bytes (count in r2) */ +- movs ip, r2, lsl #29 +- bcc 1f +- vld1.8 {d0}, [r1]! +- vst1.8 {d0}, [r0]! +-1: bge 2f +- vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]! +- vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]! +-2: movs ip, r2, lsl #31 +- ldrmib r3, [r1], #1 +- ldrcsb ip, [r1], #1 +- ldrcsb lr, [r1], #1 +- strmib r3, [r0], #1 +- strcsb ip, [r0], #1 +- strcsb lr, [r0], #1 +- +- ldmfd sp!, {r0, lr} +- bx lr +-#ifndef __APPLE__ +- .fnend +-#endif +- +-#else /* __ARM_ARCH__ < 7 */ +- +- +- .text +- +-#ifndef __APPLE__ +- .global fast_memcpy +- .type fast_memcpy, %function +-#else +- .globl _fast_memcpy +-#endif +- .align 4 +- +- /* +- * Optimized memcpy() for ARM. +- * +- * note that memcpy() always returns the destination pointer, +- * so we have to preserve R0. +- */ +- +-#ifndef __APPLE__ +-fast_memcpy: +-#else +-_fast_memcpy: +-#endif +- /* The stack must always be 64-bits aligned to be compliant with the +- * ARM ABI. Since we have to save R0, we might as well save R4 +- * which we can use for better pipelining of the reads below +- */ +-#ifndef __APPLE__ +- .fnstart +- .save {r0, r4, lr} +-#endif +- stmfd sp!, {r0, r4, lr} +- /* Making room for r5-r11 which will be spilled later */ +- .pad #28 +- sub sp, sp, #28 +- +- // preload the destination because we'll align it to a cache line +- // with small writes. Also start the source "pump". +- //PLD (r0, #0) +- //PLD (r1, #0) +- //PLD (r1, #32) +- +- /* it simplifies things to take care of len<4 early */ +- cmp r2, #4 +- blo copy_last_3_and_return +- +- /* compute the offset to align the source +- * offset = (4-(src&3))&3 = -src & 3 +- */ +- rsb r3, r1, #0 +- ands r3, r3, #3 +- beq src_aligned +- +- /* align source to 32 bits. We need to insert 2 instructions between +- * a ldr[b|h] and str[b|h] because byte and half-word instructions +- * stall 2 cycles. +- */ +- movs r12, r3, lsl #31 +- sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */ +- ldrmib r3, [r1], #1 +- ldrcsb r4, [r1], #1 +- ldrcsb r12,[r1], #1 +- strmib r3, [r0], #1 +- strcsb r4, [r0], #1 +- strcsb r12,[r0], #1 +- +-src_aligned: +- +- /* see if src and dst are aligned together (congruent) */ +- eor r12, r0, r1 +- tst r12, #3 +- bne non_congruent +- +- /* Use post-incriment mode for stm to spill r5-r11 to reserved stack +- * frame. Don't update sp. +- */ +- stmea sp, {r5-r11} +- +- /* align the destination to a cache-line */ +- rsb r3, r0, #0 +- ands r3, r3, #0x1C +- beq congruent_aligned32 +- cmp r3, r2 +- andhi r3, r2, #0x1C +- +- /* conditionnaly copies 0 to 7 words (length in r3) */ +- movs r12, r3, lsl #28 +- ldmcsia r1!, {r4, r5, r6, r7} /* 16 bytes */ +- ldmmiia r1!, {r8, r9} /* 8 bytes */ +- stmcsia r0!, {r4, r5, r6, r7} +- stmmiia r0!, {r8, r9} +- tst r3, #0x4 +- ldrne r10,[r1], #4 /* 4 bytes */ +- strne r10,[r0], #4 +- sub r2, r2, r3 +- +-congruent_aligned32: +- /* +- * here source is aligned to 32 bytes. +- */ +- +-cached_aligned32: +- subs r2, r2, #32 +- blo less_than_32_left +- +- /* +- * We preload a cache-line up to 64 bytes ahead. On the 926, this will +- * stall only until the requested world is fetched, but the linefill +- * continues in the the background. +- * While the linefill is going, we write our previous cache-line +- * into the write-buffer (which should have some free space). +- * When the linefill is done, the writebuffer will +- * start dumping its content into memory +- * +- * While all this is going, we then load a full cache line into +- * 8 registers, this cache line should be in the cache by now +- * (or partly in the cache). +- * +- * This code should work well regardless of the source/dest alignment. +- * +- */ +- +- // Align the preload register to a cache-line because the cpu does +- // "critical word first" (the first word requested is loaded first). +- bic r12, r1, #0x1F +- add r12, r12, #64 +- +-1: ldmia r1!, { r4-r11 } +- //PLD (r12, #64) +- subs r2, r2, #32 +- +- // NOTE: if r12 is more than 64 ahead of r1, the following ldrhi +- // for ARM9 preload will not be safely guarded by the preceding subs. +- // When it is safely guarded the only possibility to have SIGSEGV here +- // is because the caller overstates the length. +- ldrhi r3, [r12], #32 /* cheap ARM9 preload */ +- stmia r0!, { r4-r11 } +- bhs 1b +- +- add r2, r2, #32 +- +- +- +- +-less_than_32_left: +- /* +- * less than 32 bytes left at this point (length in r2) +- */ +- +- /* skip all this if there is nothing to do, which should +- * be a common case (if not executed the code below takes +- * about 16 cycles) +- */ +- tst r2, #0x1F +- beq 1f +- +- /* conditionnaly copies 0 to 31 bytes */ +- movs r12, r2, lsl #28 +- ldmcsia r1!, {r4, r5, r6, r7} /* 16 bytes */ +- ldmmiia r1!, {r8, r9} /* 8 bytes */ +- stmcsia r0!, {r4, r5, r6, r7} +- stmmiia r0!, {r8, r9} +- movs r12, r2, lsl #30 +- ldrcs r3, [r1], #4 /* 4 bytes */ +- ldrmih r4, [r1], #2 /* 2 bytes */ +- strcs r3, [r0], #4 +- strmih r4, [r0], #2 +- tst r2, #0x1 +- ldrneb r3, [r1] /* last byte */ +- strneb r3, [r0] +- +- /* we're done! restore everything and return */ +-1: ldmfd sp!, {r5-r11} +- ldmfd sp!, {r0, r4, lr} +- bx lr +- +- /********************************************************************/ +- +-non_congruent: +- /* +- * here source is aligned to 4 bytes +- * but destination is not. +- * +- * in the code below r2 is the number of bytes read +- * (the number of bytes written is always smaller, because we have +- * partial words in the shift queue) +- */ +- cmp r2, #4 +- blo copy_last_3_and_return +- +- /* Use post-incriment mode for stm to spill r5-r11 to reserved stack +- * frame. Don't update sp. +- */ +- stmea sp, {r5-r11} +- +- /* compute shifts needed to align src to dest */ +- rsb r5, r0, #0 +- and r5, r5, #3 /* r5 = # bytes in partial words */ +- mov r12, r5, lsl #3 /* r12 = right */ +- rsb lr, r12, #32 /* lr = left */ +- +- /* read the first word */ +- ldr r3, [r1], #4 +- sub r2, r2, #4 +- +- /* write a partial word (0 to 3 bytes), such that destination +- * becomes aligned to 32 bits (r5 = nb of words to copy for alignment) +- */ +- movs r5, r5, lsl #31 +- strmib r3, [r0], #1 +- movmi r3, r3, lsr #8 +- strcsb r3, [r0], #1 +- movcs r3, r3, lsr #8 +- strcsb r3, [r0], #1 +- movcs r3, r3, lsr #8 +- +- cmp r2, #4 +- blo partial_word_tail +- +- /* Align destination to 32 bytes (cache line boundary) */ +-1: tst r0, #0x1c +- beq 2f +- ldr r5, [r1], #4 +- sub r2, r2, #4 +- orr r4, r3, r5, lsl lr +- mov r3, r5, lsr r12 +- str r4, [r0], #4 +- cmp r2, #4 +- bhs 1b +- blo partial_word_tail +- +- /* copy 32 bytes at a time */ +-2: subs r2, r2, #32 +- blo less_than_thirtytwo +- +- /* Use immediate mode for the shifts, because there is an extra cycle +- * for register shifts, which could account for up to 50% of +- * performance hit. +- */ +- +- cmp r12, #24 +- beq loop24 +- cmp r12, #8 +- beq loop8 +- +-loop16: +- ldr r12, [r1], #4 +-1: mov r4, r12 +- ldmia r1!, { r5,r6,r7, r8,r9,r10,r11} +- //PLD (r1, #64) +- subs r2, r2, #32 +- ldrhs r12, [r1], #4 +- orr r3, r3, r4, lsl #16 +- mov r4, r4, lsr #16 +- orr r4, r4, r5, lsl #16 +- mov r5, r5, lsr #16 +- orr r5, r5, r6, lsl #16 +- mov r6, r6, lsr #16 +- orr r6, r6, r7, lsl #16 +- mov r7, r7, lsr #16 +- orr r7, r7, r8, lsl #16 +- mov r8, r8, lsr #16 +- orr r8, r8, r9, lsl #16 +- mov r9, r9, lsr #16 +- orr r9, r9, r10, lsl #16 +- mov r10, r10, lsr #16 +- orr r10, r10, r11, lsl #16 +- stmia r0!, {r3,r4,r5,r6, r7,r8,r9,r10} +- mov r3, r11, lsr #16 +- bhs 1b +- b less_than_thirtytwo +- +-loop8: +- ldr r12, [r1], #4 +-1: mov r4, r12 +- ldmia r1!, { r5,r6,r7, r8,r9,r10,r11} +- //PLD (r1, #64) +- subs r2, r2, #32 +- ldrhs r12, [r1], #4 +- orr r3, r3, r4, lsl #24 +- mov r4, r4, lsr #8 +- orr r4, r4, r5, lsl #24 +- mov r5, r5, lsr #8 +- orr r5, r5, r6, lsl #24 +- mov r6, r6, lsr #8 +- orr r6, r6, r7, lsl #24 +- mov r7, r7, lsr #8 +- orr r7, r7, r8, lsl #24 +- mov r8, r8, lsr #8 +- orr r8, r8, r9, lsl #24 +- mov r9, r9, lsr #8 +- orr r9, r9, r10, lsl #24 +- mov r10, r10, lsr #8 +- orr r10, r10, r11, lsl #24 +- stmia r0!, {r3,r4,r5,r6, r7,r8,r9,r10} +- mov r3, r11, lsr #8 +- bhs 1b +- b less_than_thirtytwo +- +-loop24: +- ldr r12, [r1], #4 +-1: mov r4, r12 +- ldmia r1!, { r5,r6,r7, r8,r9,r10,r11} +- //PLD (r1, #64) +- subs r2, r2, #32 +- ldrhs r12, [r1], #4 +- orr r3, r3, r4, lsl #8 +- mov r4, r4, lsr #24 +- orr r4, r4, r5, lsl #8 +- mov r5, r5, lsr #24 +- orr r5, r5, r6, lsl #8 +- mov r6, r6, lsr #24 +- orr r6, r6, r7, lsl #8 +- mov r7, r7, lsr #24 +- orr r7, r7, r8, lsl #8 +- mov r8, r8, lsr #24 +- orr r8, r8, r9, lsl #8 +- mov r9, r9, lsr #24 +- orr r9, r9, r10, lsl #8 +- mov r10, r10, lsr #24 +- orr r10, r10, r11, lsl #8 +- stmia r0!, {r3,r4,r5,r6, r7,r8,r9,r10} +- mov r3, r11, lsr #24 +- bhs 1b +- +- +-less_than_thirtytwo: +- /* copy the last 0 to 31 bytes of the source */ +- rsb r12, lr, #32 /* we corrupted r12, recompute it */ +- add r2, r2, #32 +- cmp r2, #4 +- blo partial_word_tail +- +-1: ldr r5, [r1], #4 +- sub r2, r2, #4 +- orr r4, r3, r5, lsl lr +- mov r3, r5, lsr r12 +- str r4, [r0], #4 +- cmp r2, #4 +- bhs 1b +- +-partial_word_tail: +- /* we have a partial word in the input buffer */ +- movs r5, lr, lsl #(31-3) +- strmib r3, [r0], #1 +- movmi r3, r3, lsr #8 +- strcsb r3, [r0], #1 +- movcs r3, r3, lsr #8 +- strcsb r3, [r0], #1 +- +- /* Refill spilled registers from the stack. Don't update sp. */ +- ldmfd sp, {r5-r11} +- +-copy_last_3_and_return: +- movs r2, r2, lsl #31 /* copy remaining 0, 1, 2 or 3 bytes */ +- ldrmib r2, [r1], #1 +- ldrcsb r3, [r1], #1 +- ldrcsb r12,[r1] +- strmib r2, [r0], #1 +- strcsb r3, [r0], #1 +- strcsb r12,[r0] +- +- /* we're done! restore sp and spilled registers and return */ +- add sp, sp, #28 +- ldmfd sp!, {r0, r4, lr} +- bx lr +-#ifndef __APPLE__ +- .fnend +-#endif +- +-#endif /* __ARM_ARCH__ < 7 */ +-#endif +- +-#if defined(__linux__) && defined(__ELF__) +-/* we don't need an executable stack */ +-.section .note.GNU-stack,"",%progbits +-#endif +diff --git a/xbmc/utils/fastmemcpy.c b/xbmc/utils/fastmemcpy.c +deleted file mode 100644 +index ec9019a..0000000 +--- a/xbmc/utils/fastmemcpy.c ++++ /dev/null +@@ -1,396 +0,0 @@ +-/* +- * fastmemcpy.h : fast memcpy routines +- ***************************************************************************** +- * $Id: fastmemcpy.h 13905 2006-01-12 23:10:04Z dionoea $ +- * +- * Authors: various Linux kernel hackers +- * various MPlayer hackers +- * Nick Kurshev +- * +- * Copyright (C) 2011-2013 Team XBMC +- * http://xbmc.org +- * +- * 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 XBMC; see the file COPYING. If not, see +- * . +- * +- */ +-#if !defined(TARGET_WINDOWS) && !defined(__ppc__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__mips__) +-#define HAVE_MMX2 +-#define HAVE_SSE +- +-/* +- aclib - advanced C library ;) +- This file contains functions which improve and expand standard C-library +-*/ +-#include +- +-#define BLOCK_SIZE 4096 +-#define CONFUSION_FACTOR 0 +-/*Feel free to fine-tune the above 2, it might be possible to get some speedup with them :)*/ +- +-/*#define STATISTICS*/ +- +-#ifndef HAVE_SSE2 +-/* +- P3 processor has only one SSE decoder so can execute only 1 sse insn per +- cpu clock, but it has 3 mmx decoders (include load/store unit) +- and executes 3 mmx insns per cpu clock. +- P4 processor has some chances, but after reading: +- http://www.emulators.com/pentium4.htm +- I have doubts. Anyway SSE2 version of this code can be written better. +-*/ +-#undef HAVE_SSE +-#endif +- +- +-/* +- This part of code was taken by me from Linux-2.4.3 and slightly modified +-for MMX, MMX2, SSE instruction set. I have done it since linux uses page aligned +-blocks but mplayer uses weakly ordered data and original sources can not +-speedup them. Only using PREFETCHNTA and MOVNTQ together have effect! +- +->From IA-32 Intel Architecture Software Developer's Manual Volume 1, +- +-Order Number 245470: +-"10.4.6. Cacheability Control, Prefetch, and Memory Ordering Instructions" +- +-Data referenced by a program can be temporal (data will be used again) or +-non-temporal (data will be referenced once and not reused in the immediate +-future). To make efficient use of the processor's caches, it is generally +-desirable to cache temporal data and not cache non-temporal data. Overloading +-the processor's caches with non-temporal data is sometimes referred to as +-"polluting the caches". +-The non-temporal data is written to memory with Write-Combining semantics. +- +-The PREFETCHh instructions permits a program to load data into the processor +-at a suggested cache level, so that it is closer to the processors load and +-store unit when it is needed. If the data is already present in a level of +-the cache hierarchy that is closer to the processor, the PREFETCHh instruction +-will not result in any data movement. +-But we should you PREFETCHNTA: Non-temporal data fetch data into location +-close to the processor, minimizing cache pollution. +- +-The MOVNTQ (store quadword using non-temporal hint) instruction stores +-packed integer data from an MMX register to memory, using a non-temporal hint. +-The MOVNTPS (store packed single-precision floating-point values using +-non-temporal hint) instruction stores packed floating-point data from an +-XMM register to memory, using a non-temporal hint. +- +-The SFENCE (Store Fence) instruction controls write ordering by creating a +-fence for memory store operations. This instruction guarantees that the results +-of every store instruction that precedes the store fence in program order is +-globally visible before any store instruction that follows the fence. The +-SFENCE instruction provides an efficient way of ensuring ordering between +-procedures that produce weakly-ordered data and procedures that consume that +-data. +- +-If you have questions please contact with me: Nick Kurshev: nickols_k@mail.ru. +-*/ +- +-/* 3dnow memcpy support from kernel 2.4.2 */ +-/* by Pontscho/fresh!mindworkz */ +- +-#if defined( HAVE_MMX2 ) || defined( HAVE_3DNOW ) || defined( HAVE_MMX ) +- +-#undef HAVE_MMX1 +-#if defined(HAVE_MMX) && !defined(HAVE_MMX2) && !defined(HAVE_3DNOW) && !defined(HAVE_SSE) +-/* means: mmx v.1. Note: Since we added alignment of destinition it speedups +- of memory copying on PentMMX, Celeron-1 and P2 upto 12% versus +- standard (non MMX-optimized) version. +- Note: on K6-2+ it speedups memory copying upto 25% and +- on K7 and P3 about 500% (5 times). */ +-#define HAVE_MMX1 +-#endif +- +- +-#undef HAVE_K6_2PLUS +-#if !defined( HAVE_MMX2) && defined( HAVE_3DNOW) +-#define HAVE_K6_2PLUS +-#endif +- +-/* for small memory blocks (<256 bytes) this version is faster */ +-#define small_memcpy(to,from,n)\ +-{\ +-register unsigned long int dummy;\ +-__asm__ __volatile__(\ +- "rep; movsb"\ +- :"=&D"(to), "=&S"(from), "=&c"(dummy)\ +-/* It's most portable way to notify compiler */\ +-/* that edi, esi and ecx are clobbered in asm block. */\ +-/* Thanks to A'rpi for hint!!! */\ +- :"0" (to), "1" (from),"2" (n)\ +- : "memory");\ +-} +- +-#ifdef HAVE_SSE +-#define MMREG_SIZE 16 +-#else +-#define MMREG_SIZE 64 /*8*/ +-#endif +- +-/* Small defines (for readability only) ;) */ +-#ifdef HAVE_K6_2PLUS +-#define PREFETCH "prefetch" +-/* On K6 femms is faster of emms. On K7 femms is directly mapped on emms. */ +-#define EMMS "femms" +-#else +-#define PREFETCH "prefetchnta" +-#define EMMS "emms" +-#endif +- +-#ifdef HAVE_MMX2 +-#define MOVNTQ "movntq" +-#else +-#define MOVNTQ "movq" +-#endif +- +-#ifdef HAVE_MMX1 +-#define MIN_LEN 0x800 /* 2K blocks */ +-#else +-#define MIN_LEN 0x40 /* 64-byte blocks */ +-#endif +- +-void * fast_memcpy(void * to, const void * from, size_t len) +-{ +- void *retval; +- size_t i; +- retval = to; +-#ifdef STATISTICS +- { +- static int freq[33]; +- static int t=0; +- int i; +- for(i=0; len>(1<= MIN_LEN) +- { +- register unsigned long int delta; +- /* Align destinition to MMREG_SIZE -boundary */ +- delta = ((unsigned long int)to)&(MMREG_SIZE-1); +- if(delta) +- { +- delta=MMREG_SIZE-delta; +- len -= delta; +- small_memcpy(to, from, delta); +- } +- i = len >> 6; /* len/64 */ +- len&=63; +- /* +- This algorithm is top effective when the code consequently +- reads and writes blocks which have size of cache line. +- Size of cache line is processor-dependent. +- It will, however, be a minimum of 32 bytes on any processors. +- It would be better to have a number of instructions which +- perform reading and writing to be multiple to a number of +- processor's decoders, but it's not always possible. +- */ +-#ifdef HAVE_SSE /* Only P3 (may be Cyrix3) */ +- if(((unsigned long)from) & 15) +- /* if SRC is misaligned */ +- for(; i>0; i--) +- { +- __asm__ __volatile__ ( +- PREFETCH" 320(%0)\n" +- "movups (%0), %%xmm0\n" +- "movups 16(%0), %%xmm1\n" +- "movups 32(%0), %%xmm2\n" +- "movups 48(%0), %%xmm3\n" +- "movntps %%xmm0, (%1)\n" +- "movntps %%xmm1, 16(%1)\n" +- "movntps %%xmm2, 32(%1)\n" +- "movntps %%xmm3, 48(%1)\n" +- :: "r" (from), "r" (to) : "memory"); +- ((const unsigned char *)from)+=64; +- ((unsigned char *)to)+=64; +- } +- else +- /* +- Only if SRC is aligned on 16-byte boundary. +- It allows to use movaps instead of movups, which required data +- to be aligned or a general-protection exception (#GP) is generated. +- */ +- for(; i>0; i--) +- { +- __asm__ __volatile__ ( +- PREFETCH" 320(%0)\n" +- "movaps (%0), %%xmm0\n" +- "movaps 16(%0), %%xmm1\n" +- "movaps 32(%0), %%xmm2\n" +- "movaps 48(%0), %%xmm3\n" +- "movntps %%xmm0, (%1)\n" +- "movntps %%xmm1, 16(%1)\n" +- "movntps %%xmm2, 32(%1)\n" +- "movntps %%xmm3, 48(%1)\n" +- :: "r" (from), "r" (to) : "memory"); +- ((const unsigned char *)from)+=64; +- ((unsigned char *)to)+=64; +- } +-#else +- /* Align destination at BLOCK_SIZE boundary */ +- for(; ((ptrdiff_t)to & (BLOCK_SIZE-1)) && i>0; i--) +- { +- __asm__ __volatile__ ( +-#ifndef HAVE_MMX1 +- PREFETCH" 320(%0)\n" +-#endif +- "movq (%0), %%mm0\n" +- "movq 8(%0), %%mm1\n" +- "movq 16(%0), %%mm2\n" +- "movq 24(%0), %%mm3\n" +- "movq 32(%0), %%mm4\n" +- "movq 40(%0), %%mm5\n" +- "movq 48(%0), %%mm6\n" +- "movq 56(%0), %%mm7\n" +- MOVNTQ" %%mm0, (%1)\n" +- MOVNTQ" %%mm1, 8(%1)\n" +- MOVNTQ" %%mm2, 16(%1)\n" +- MOVNTQ" %%mm3, 24(%1)\n" +- MOVNTQ" %%mm4, 32(%1)\n" +- MOVNTQ" %%mm5, 40(%1)\n" +- MOVNTQ" %%mm6, 48(%1)\n" +- MOVNTQ" %%mm7, 56(%1)\n" +- :: "r" (from), "r" (to) : "memory"); +- from = (const void *) (((const unsigned char *)from)+64); +- to = (void *) (((unsigned char *)to)+64); +- } +- +-/* printf(" %p %p\n", (ptrdiff_t)from&1023, (ptrdiff_t)to&1023); */ +- /* Pure Assembly cuz gcc is a bit unpredictable ;) */ +-# if 0 +- if(i>=BLOCK_SIZE/64) +- asm volatile( +- "xorl %%eax, %%eax \n\t" +- ".balign 16 \n\t" +- "1: \n\t" +- "movl (%0, %%eax), %%ebx \n\t" +- "movl 32(%0, %%eax), %%ebx \n\t" +- "movl 64(%0, %%eax), %%ebx \n\t" +- "movl 96(%0, %%eax), %%ebx \n\t" +- "addl $128, %%eax \n\t" +- "cmpl %3, %%eax \n\t" +- " jb 1b \n\t" +- +- "xorl %%eax, %%eax \n\t" +- +- ".balign 16 \n\t" +- "2: \n\t" +- "movq (%0, %%eax), %%mm0\n" +- "movq 8(%0, %%eax), %%mm1\n" +- "movq 16(%0, %%eax), %%mm2\n" +- "movq 24(%0, %%eax), %%mm3\n" +- "movq 32(%0, %%eax), %%mm4\n" +- "movq 40(%0, %%eax), %%mm5\n" +- "movq 48(%0, %%eax), %%mm6\n" +- "movq 56(%0, %%eax), %%mm7\n" +- MOVNTQ" %%mm0, (%1, %%eax)\n" +- MOVNTQ" %%mm1, 8(%1, %%eax)\n" +- MOVNTQ" %%mm2, 16(%1, %%eax)\n" +- MOVNTQ" %%mm3, 24(%1, %%eax)\n" +- MOVNTQ" %%mm4, 32(%1, %%eax)\n" +- MOVNTQ" %%mm5, 40(%1, %%eax)\n" +- MOVNTQ" %%mm6, 48(%1, %%eax)\n" +- MOVNTQ" %%mm7, 56(%1, %%eax)\n" +- "addl $64, %%eax \n\t" +- "cmpl %3, %%eax \n\t" +- "jb 2b \n\t" +- +-#if CONFUSION_FACTOR > 0 +- /* a few percent speedup on out of order executing CPUs */ +- "movl %5, %%eax \n\t" +- "2: \n\t" +- "movl (%0), %%ebx \n\t" +- "movl (%0), %%ebx \n\t" +- "movl (%0), %%ebx \n\t" +- "movl (%0), %%ebx \n\t" +- "decl %%eax \n\t" +- " jnz 2b \n\t" +-#endif +- +- "xorl %%eax, %%eax \n\t" +- "addl %3, %0 \n\t" +- "addl %3, %1 \n\t" +- "subl %4, %2 \n\t" +- "cmpl %4, %2 \n\t" +- " jae 1b \n\t" +- : "+r" (from), "+r" (to), "+r" (i) +- : "r" (BLOCK_SIZE), "i" (BLOCK_SIZE/64), "i" (CONFUSION_FACTOR) +- : "%eax", "%ebx" +- ); +-#endif +- +- for(; i>0; i--) +- { +- __asm__ __volatile__ ( +-#ifndef HAVE_MMX1 +- PREFETCH" 320(%0)\n" +-#endif +- "movq (%0), %%mm0\n" +- "movq 8(%0), %%mm1\n" +- "movq 16(%0), %%mm2\n" +- "movq 24(%0), %%mm3\n" +- "movq 32(%0), %%mm4\n" +- "movq 40(%0), %%mm5\n" +- "movq 48(%0), %%mm6\n" +- "movq 56(%0), %%mm7\n" +- MOVNTQ" %%mm0, (%1)\n" +- MOVNTQ" %%mm1, 8(%1)\n" +- MOVNTQ" %%mm2, 16(%1)\n" +- MOVNTQ" %%mm3, 24(%1)\n" +- MOVNTQ" %%mm4, 32(%1)\n" +- MOVNTQ" %%mm5, 40(%1)\n" +- MOVNTQ" %%mm6, 48(%1)\n" +- MOVNTQ" %%mm7, 56(%1)\n" +- :: "r" (from), "r" (to) : "memory"); +- from = (const void *) (((const unsigned char *)from)+64); +- to = (void *) (((unsigned char *)to)+64); +- } +- +-#endif /* Have SSE */ +-#ifdef HAVE_MMX2 +- /* since movntq is weakly-ordered, a "sfence" +- * is needed to become ordered again. */ +- __asm__ __volatile__ ("sfence":::"memory"); +-#endif +-#ifndef HAVE_SSE +- /* enables to use FPU */ +- __asm__ __volatile__ (EMMS:::"memory"); +-#endif +- } +- /* +- * Now do the tail of the block +- */ +- if(len) small_memcpy(to, from, len); +- return retval; +-} +- +- +-#endif /* #if defined( HAVE_MMX2 ) || defined( HAVE_3DNOW ) || defined( HAVE_MMX ) */ +- +-#endif +diff --git a/xbmc/utils/fastmemcpy.h b/xbmc/utils/fastmemcpy.h +deleted file mode 100644 +index 43f5904..0000000 +--- a/xbmc/utils/fastmemcpy.h ++++ /dev/null +@@ -1,35 +0,0 @@ +-/* +- * Copyright (C) 2005-2013 Team XBMC +- * http://xbmc.org +- * +- * 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 XBMC; see the file COPYING. If not, see +- * . +- * +- */ +-#pragma once +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-#if !defined(TARGET_WINDOWS) && !defined(__ppc__) && !defined(__powerpc__) && !defined(__mips__) && !defined(TARGET_ANDROID) && !defined(TARGET_DARWIN_IOS) +-void * fast_memcpy(void * to, const void * from, size_t len); +-//#define fast_memcpy memcpy +-#else +-#define fast_memcpy memcpy +-#endif +- +-#ifdef __cplusplus +-} +-#endif +diff --git a/xbmc/utils/test/Makefile b/xbmc/utils/test/Makefile +index 8fa0526..3a467ad 100644 +--- a/xbmc/utils/test/Makefile ++++ b/xbmc/utils/test/Makefile +@@ -11,7 +11,6 @@ SRCS= \ + TestCryptThreading.cpp \ + TestDatabaseUtils.cpp \ + TestEndianSwap.cpp \ +- Testfastmemcpy.cpp \ + TestFileOperationJob.cpp \ + TestFileUtils.cpp \ + Testfstrcmp.cpp \ +diff --git a/xbmc/utils/test/Testfastmemcpy.cpp b/xbmc/utils/test/Testfastmemcpy.cpp +deleted file mode 100644 +index 93a9bb0..0000000 +--- a/xbmc/utils/test/Testfastmemcpy.cpp ++++ /dev/null +@@ -1,39 +0,0 @@ +-/* +- * Copyright (C) 2005-2013 Team XBMC +- * http://xbmc.org +- * +- * 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 XBMC; see the file COPYING. If not, see +- * . +- * +- */ +- +-#include // TODO: This should go in fastmemcpy.h instead. +-#include "utils/fastmemcpy.h" +- +-#include "gtest/gtest.h" +- +-static const char refdata[] = "\x01\x02\x03\x04\x05\x06\x07\x08" +- "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10" +- "\x11\x12\x13\x14\x15\x16\x17\x18" +- "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20" +- "\x21\x22\x23\x24\x25\x26\x27\x28" +- "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"; +- +-TEST(Testfastmemcpy, General) +-{ +- char vardata[sizeof(refdata)]; +- memset(vardata, 0, sizeof(vardata)); +- EXPECT_NE(nullptr, fast_memcpy(vardata, refdata, sizeof(refdata))); +- EXPECT_EQ(0, memcmp(refdata, vardata, sizeof(refdata))); +-} diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-99.0011-mpeg4video-Signal-unsupported-GMC-with-more-than-one.patch b/packages/multimedia/ffmpeg/patches/ffmpeg-99.0011-mpeg4video-Signal-unsupported-GMC-with-more-than-one.patch new file mode 100644 index 0000000000..4cb8dd8fc4 --- /dev/null +++ b/packages/multimedia/ffmpeg/patches/ffmpeg-99.0011-mpeg4video-Signal-unsupported-GMC-with-more-than-one.patch @@ -0,0 +1,48 @@ +From 84e9a1784bbd3182b68cefa5e5feae8da8b9e184 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Fri, 5 Jun 2015 22:48:33 +0100 +Subject: [PATCH] mpeg4video: Signal unsupported GMC with more than one warp + point + +--- + libavcodec/avcodec.h | 1 + + libavcodec/mpeg4videodec.c | 4 ++++ + 2 files changed, 5 insertions(+) + +diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h +index 8c7c420..e63dc2d 100644 +--- a/libavcodec/avcodec.h ++++ b/libavcodec/avcodec.h +@@ -2527,6 +2527,7 @@ typedef struct AVCodecContext { + #define FF_BUG_DC_CLIP 4096 + #define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. + #define FF_BUG_TRUNCATED 16384 ++#define FF_BUG_GMC_UNSUPPORTED 32768 + + /** + * strictly follow the standard (MPEG4, ...). +diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c +index 9bf33dd..0b5d3b9 100644 +--- a/libavcodec/mpeg4videodec.c ++++ b/libavcodec/mpeg4videodec.c +@@ -2179,6 +2179,9 @@ int ff_mpeg4_workaround_bugs(AVCodecContext *avctx) + + if (ctx->divx_version >= 0) + s->workaround_bugs |= FF_BUG_HPEL_CHROMA; ++ ++ if (ctx->num_sprite_warping_points > 1) ++ s->workaround_bugs |= FF_BUG_GMC_UNSUPPORTED; + } + + if (s->workaround_bugs & FF_BUG_STD_QPEL) { +@@ -2203,6 +2206,7 @@ int ff_mpeg4_workaround_bugs(AVCodecContext *avctx) + s->workaround_bugs, ctx->lavc_build, ctx->xvid_build, + ctx->divx_version, ctx->divx_build, s->divx_packed ? "p" : ""); + ++ avctx->workaround_bugs = s->workaround_bugs; + if (CONFIG_MPEG4_DECODER && ctx->xvid_build >= 0 && + s->codec_id == AV_CODEC_ID_MPEG4 && + avctx->idct_algo == FF_IDCT_AUTO) { +-- +1.9.1 + diff --git a/packages/print/freetype/package.mk b/packages/print/freetype/package.mk index 66c30069d6..297838d536 100644 --- a/packages/print/freetype/package.mk +++ b/packages/print/freetype/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="freetype" -PKG_VERSION="2.5.5" +PKG_VERSION="2.6" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/sysutils/kmod/package.mk b/packages/sysutils/kmod/package.mk index ec4fbc4ad8..dcf71a3ad2 100644 --- a/packages/sysutils/kmod/package.mk +++ b/packages/sysutils/kmod/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="kmod" -PKG_VERSION="20" +PKG_VERSION="21" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch b/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch index 4cfbd9afd6..c60b9d9c25 100644 --- a/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch +++ b/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch @@ -1,7 +1,7 @@ -From 17e3636011a0d30f0d9d0824fb8a672ac81664e7 Mon Sep 17 00:00:00 2001 +From 334f38e87d0f4d071929f26a73db4075f5a40a86 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 18:19:32 +0100 -Subject: [PATCH 01/48] [rbp/omxplayer] When opening a stream don't try to +Subject: [PATCH 01/51] [rbp/omxplayer] When opening a stream don't try to update gui so often --- @@ -25,10 +25,10 @@ index 2faceea..889d7a2 100644 g_windowManager.ProcessRenderLoop(false); if (allowCancel && dialog->IsCanceled()) -From 2ac1dade38d81b8f358e5dd9710caca339a5603a Mon Sep 17 00:00:00 2001 +From 7ddf4d5ef049c6ab43814ea9946347fd8e13e36c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 8 Mar 2014 15:36:06 +0000 -Subject: [PATCH 03/48] [hifiberry] Hack: force it to be recognised as IEC958 +Subject: [PATCH 03/51] [hifiberry] Hack: force it to be recognised as IEC958 capable to enable passthrough options --- @@ -51,10 +51,10 @@ index e22db7a..0120bd5 100644 info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI") { -From bcb771d391629dc9033eeb1e5c08942993b851f9 Mon Sep 17 00:00:00 2001 +From 9d64e65d1de3cd2c18fdb95bc7d7825f42602ad9 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 1 May 2014 16:28:39 +0100 -Subject: [PATCH 04/48] Improved file buffering in CArchive +Subject: [PATCH 04/51] Improved file buffering in CArchive Even though memcpy is typically inlined by the compiler into byte/word loads and stores (at least for release builds), the frequency with which 1, 2 and 4 @@ -114,20 +114,20 @@ index 6ed0f8f..8506d95 100644 } else -From 319891a3aec45c12afb57f812cbcc1108476fdac Mon Sep 17 00:00:00 2001 +From 11c32ec255761eb3763fa4b2bf7f4a261238e102 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 12 Aug 2014 00:31:36 +0100 -Subject: [PATCH 05/48] [omxcodec] Don't force software codec with dvds +Subject: [PATCH 05/51] [omxcodec] Don't force software codec with dvds --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index dd9e10a..619f5d9 100644 +index 82b5baa..70b1ac3 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp -@@ -3423,7 +3423,9 @@ bool CDVDPlayer::OpenVideoStream(CDVDStreamInfo& hint, bool reset) +@@ -3421,7 +3421,9 @@ bool CDVDPlayer::OpenVideoStream(CDVDStreamInfo& hint, bool reset) hint.aspect = aspect; hint.forced_aspect = true; } @@ -138,10 +138,10 @@ index dd9e10a..619f5d9 100644 else if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_PVRMANAGER)) { -From e97622281318361374a711d681b4620c66d02b4f Mon Sep 17 00:00:00 2001 +From 9a08c47d230a839bc32bf6c81c3d54bb8692b248 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 10 Aug 2014 16:45:16 +0100 -Subject: [PATCH 06/48] filesystem: Make support of browsing into archives +Subject: [PATCH 06/51] filesystem: Make support of browsing into archives optional The ability to browse, scan and play content in archives can cause problems on low powered/low memory devices. @@ -159,10 +159,10 @@ We'll let people who don't use archives disable it manually 3 files changed, 18 insertions(+) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index a751dc2..c44d399 100644 +index 97039ca..9614036 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16585,6 +16585,15 @@ msgstr "" +@@ -16582,6 +16582,15 @@ msgstr "" #: system/settings/rbp.xml msgctxt "#38010" msgid "GPU accelerated" @@ -179,7 +179,7 @@ index a751dc2..c44d399 100644 #. Setting #38011 "Videos -> Library -> Show All Items entry" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index d1a8e1c..a780a43 100644 +index 8f69bcb..cbcde85 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -304,6 +304,11 @@ @@ -224,10 +224,10 @@ index 5af92e7..568a1a8 100644 { // XBMC Smart playlist - just XML renamed to XSP // read the name of the playlist in -From 7bbb7d9b933842bd867aec28320a443b8126ddfe Mon Sep 17 00:00:00 2001 +From 52ba2eb2daaeba3eaa7213b2f370f11b73ebdd51 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 27 Oct 2014 13:06:57 +0000 -Subject: [PATCH 08/48] [rbp] Make cachemembuffersize default depend on memory +Subject: [PATCH 08/51] [rbp] Make cachemembuffersize default depend on memory size --- @@ -329,10 +329,10 @@ index 2e3282c..d1606a2 100644 } -From 1a49c26c7a386d032c4c643be69286899ebf0bf8 Mon Sep 17 00:00:00 2001 +From b14ed34e6cf3a147e4e93161c60ff804b6a77286 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 30 May 2014 14:58:43 +0100 -Subject: [PATCH 10/48] [settings] Experiment: Report DESKTOP resolution in +Subject: [PATCH 10/51] [settings] Experiment: Report DESKTOP resolution in video settings --- @@ -354,10 +354,10 @@ index 4376463..fc4e5ea 100644 StringUtils::Format("%dx%d%s", resolution->width, resolution->height, ModeFlagsToString(resolution->flags, false).c_str()), -From 2c879980401504485d1e5304331e36ec60f41afb Mon Sep 17 00:00:00 2001 +From 975844c8114a270ab8c97925806b41a09600a90e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Sep 2014 12:04:26 +0100 -Subject: [PATCH 11/48] egl: Treat unknown display aspect ratio as square pixel +Subject: [PATCH 11/51] egl: Treat unknown display aspect ratio as square pixel --- xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 4 ++-- @@ -386,10 +386,10 @@ index bda7430..68fc647 100644 SetResolutionString(m_desktopRes); -From 181f324a483872faae51f75482e6fc679d6727a3 Mon Sep 17 00:00:00 2001 +From 873e875a8538a1c5219054f30a80d90877d0d301 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 19 Sep 2014 11:54:49 +0100 -Subject: [PATCH 12/48] [dvdplayer/rbp] Add pi specific option to maintain +Subject: [PATCH 12/51] [dvdplayer/rbp] Add pi specific option to maintain vsync with pll adjustment New A/V sync option in settings/video/playback to do "Adjust PLL". @@ -414,7 +414,7 @@ Needed updated firmware 9 files changed, 91 insertions(+), 7 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c44d399..27c6e6d 100644 +index 9614036..36b8c5d 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -6321,7 +6321,22 @@ msgctxt "#13459" @@ -441,7 +441,7 @@ index c44d399..27c6e6d 100644 #: system/settings/settings.xml msgctxt "#13505" -@@ -16631,3 +16646,10 @@ msgstr "" +@@ -16628,3 +16643,10 @@ msgstr "" msgctxt "#38016" msgid "%d fps" msgstr "" @@ -453,7 +453,7 @@ index c44d399..27c6e6d 100644 +msgstr "" + diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index a780a43..aff0bf8 100644 +index cbcde85..a3d4728 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -572,6 +572,20 @@ @@ -492,7 +492,7 @@ index 782a9ba..3e0390c 100644 struct AEDelayStatus diff --git a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp -index a429e11..2871ae2 100644 +index 145a622..7b7a223 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp @@ -24,6 +24,7 @@ @@ -681,37 +681,10 @@ index 7df1bf7..732b69d 100644 float m_audioPlayCountMinimumPercent; bool m_dvdplayerIgnoreDTSinWAV; -From d44ace091afc94280393513c87572197c1281c59 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Sat, 27 Sep 2014 15:32:37 +0100 -Subject: [PATCH 13/48] [dvdplayer] exerimental: don't raise priority of audio - thread - ---- - xbmc/cores/dvdplayer/DVDPlayer.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index 619f5d9..ff03bc6 100644 ---- a/xbmc/cores/dvdplayer/DVDPlayer.cpp -+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp -@@ -3408,7 +3408,11 @@ bool CDVDPlayer::OpenAudioStream(CDVDStreamInfo& hint, bool reset) - m_dvdPlayerAudio->SendMessage(new CDVDMsg(CDVDMsg::PLAYER_STARTED), 1); - - /* audio normally won't consume full cpu, so let it have prio */ -+#ifdef TARGET_RASPBERRY_PI -+ m_dvdPlayerAudio->SetPriority(GetPriority()); -+#else - m_dvdPlayerAudio->SetPriority(GetPriority()+1); -+#endif - return true; - } - - -From d41f66c5afab06eb4a64489a1a9c1e5c87a0d926 Mon Sep 17 00:00:00 2001 +From 0323acdf71a6bf8d66ff569403e8fc0412291325 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 24 Sep 2014 23:13:52 +0100 -Subject: [PATCH 14/48] [audio] Add settings option to boost centre channel +Subject: [PATCH 13/51] [audio] Add settings option to boost centre channel when downmixing This allows a dB volume increase to be added to centre channel. @@ -729,10 +702,10 @@ Should work with Pi Sink (dvdplayer/paplayer) and omxplayer 5 files changed, 45 insertions(+) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index 27c6e6d..2d4efe2 100644 +index 36b8c5d..c1148e8 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16653,3 +16653,17 @@ msgctxt "#38006" +@@ -16650,3 +16650,17 @@ msgctxt "#38006" msgid "Audio has to stay in sync, this can either be done by resampling, or adjusting the PLL" msgstr "" @@ -751,7 +724,7 @@ index 27c6e6d..2d4efe2 100644 +msgid "%i dB" +msgstr "" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index aff0bf8..f6ad877 100644 +index a3d4728..09c3d10 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -2597,6 +2597,18 @@ @@ -833,10 +806,10 @@ index f99c0e6..1911189 100644 // stereo upmix if (upmix && m_src_channels == 2 && m_dst_channels > 2) -From 54dde47ac98e2cf336610ab981ab8ed13bc2ecac Mon Sep 17 00:00:00 2001 +From 8dada388745328d01b186ede90c64be0b571a936 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 27 Oct 2014 15:23:51 +0000 -Subject: [PATCH 15/48] [rbp] Default extract thumbnails to false +Subject: [PATCH 14/51] [rbp] Default extract thumbnails to false It can take 80 seconds for a single file on a Pi. It can cause crashes with out-of-memory errors. It genereates a lot of support issues. Best to default to disabled and let users enable it if they must @@ -866,10 +839,10 @@ index 50fe36a..a54a4c4 100644
-From 43233930f444cfae66fd6e1eec171a2652a63531 Mon Sep 17 00:00:00 2001 +From cf3e013db35eda90e5e2f337d8355312ce0e5955 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 15 Nov 2014 12:03:34 +0000 -Subject: [PATCH 20/48] [dvdplayer] Add lock for player creation +Subject: [PATCH 19/51] [dvdplayer] Add lock for player creation --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 3 +++ @@ -877,7 +850,7 @@ Subject: [PATCH 20/48] [dvdplayer] Add lock for player creation 2 files changed, 4 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index ff03bc6..2b3baf7 100644 +index 70b1ac3..b41c8f0 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -517,6 +517,7 @@ int CSelectionStreams::CountSource(StreamType type, StreamSource source) const @@ -896,7 +869,7 @@ index ff03bc6..2b3baf7 100644 if (!m_players_created) return; delete m_dvdPlayerVideo; -@@ -4275,6 +4277,7 @@ double CDVDPlayer::GetQueueTime() +@@ -4255,6 +4257,7 @@ double CDVDPlayer::GetQueueTime() void CDVDPlayer::GetVideoStreamInfo(SPlayerVideoStreamInfo &info) { @@ -915,10 +888,10 @@ index 2a4aea5..f74e71d 100644 + CCriticalSection m_players_lock; }; -From 37d8b3208029031b46ab432aa24045e502cd4b2a Mon Sep 17 00:00:00 2001 +From 5d3ab1cf45b4eca6f524b4555e3f103e27467a49 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 24 Nov 2014 22:07:25 +0000 -Subject: [PATCH 21/48] [dvdplayervideo] Prod decoder when in stills mode +Subject: [PATCH 20/51] [dvdplayervideo] Prod decoder when in stills mode An asynchronous hardware decoder doesn't only produce output pictures when new packets arrive. In dvd stills mode give it a chance to return pictures that weren't ready when frame was decoded. @@ -927,7 +900,7 @@ In dvd stills mode give it a chance to return pictures that weren't ready when f 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index f909bb5..008cedf 100644 +index 656c937..bdc3edb 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -314,7 +314,8 @@ void CDVDPlayerVideo::Process() @@ -995,10 +968,10 @@ index f909bb5..008cedf 100644 if (pMsg->IsType(CDVDMsg::GENERAL_SYNCHRONIZE)) -From 3f34b6c3eb68ae3867c9b9475a961d6c5e4c5add Mon Sep 17 00:00:00 2001 +From 25d43d2d6bdf9de85a30161aa1c7e0260b4de33b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 27 Nov 2014 16:31:56 +0000 -Subject: [PATCH 22/48] [languageinvoker] Reduce priority of python threads +Subject: [PATCH 21/51] [languageinvoker] Reduce priority of python threads --- xbmc/interfaces/generic/LanguageInvokerThread.cpp | 5 +++++ @@ -1021,10 +994,10 @@ index fcdd063..16f0c89 100644 } -From f9f26d380d93aac6c4d882a75d2de5127dd9e496 Mon Sep 17 00:00:00 2001 +From 126cddbf807d68c42e07d24c733d65abb687b500 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 14 Dec 2013 16:55:05 +0000 -Subject: [PATCH 23/48] logging: Add microsecond timer to log messages +Subject: [PATCH 22/51] logging: Add microsecond timer to log messages --- xbmc/utils/log.cpp | 17 +++++++++++++++-- @@ -1077,10 +1050,10 @@ index 3443f12..31c4a99 100644 levelNames[logLevel]) + strData; -From b4380166f33508dabe7ab5acf99359901673ed56 Mon Sep 17 00:00:00 2001 +From cfe6214efcc206c97cf8eb6b224c0a8d63981c77 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 29 Nov 2014 15:25:16 +0000 -Subject: [PATCH 24/48] [rbp] hack: wait for splash to complete before changing +Subject: [PATCH 23/51] [rbp] hack: wait for splash to complete before changing hdmi mode --- @@ -1154,10 +1127,10 @@ index 68fc647..c80114e 100644 if(!m_fixedMode && GETFLAGS_GROUP(res.dwFlags) && GETFLAGS_MODE(res.dwFlags)) -From b5ae9d7dd86f5e5b55d21c18d31ae298bf37855f Mon Sep 17 00:00:00 2001 +From 1610df489966e26604392af08d40a2a2eacad8db Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 11 Dec 2014 17:00:57 +0000 -Subject: [PATCH 25/48] Fix for UI not showing both extractflags and +Subject: [PATCH 24/51] Fix for UI not showing both extractflags and extractthumb --- @@ -1166,10 +1139,10 @@ Subject: [PATCH 25/48] Fix for UI not showing both extractflags and 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c8ec10d..2f4653c 100644 +index b6b48b4..6c3a220 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -11018,7 +11018,7 @@ msgstr "" +@@ -11015,7 +11015,7 @@ msgstr "" #: system/settings/settings.xml msgctxt "#20433" @@ -1178,7 +1151,7 @@ index c8ec10d..2f4653c 100644 msgstr "" #: xbmc/dialogs/GUIDialogSmartPlaylistRule.cpp -@@ -14552,7 +14552,7 @@ msgstr "" +@@ -14549,7 +14549,7 @@ msgstr "" #. Description of setting "Videos -> File lists -> Extract thumbnails and video information" with label #20433 #: system/settings/settings.xml msgctxt "#36178" @@ -1187,7 +1160,7 @@ index c8ec10d..2f4653c 100644 msgstr "" #. Description of setting "Videos -> File lists -> Replace file names with library titles" with label #20419 -@@ -14564,7 +14564,7 @@ msgstr "" +@@ -14561,7 +14561,7 @@ msgstr "" #. Description of setting "Videos -> File lists -> Extract thumbnails and video information" with label #20433 #: system/settings/settings.xml msgctxt "#36180" @@ -1196,7 +1169,7 @@ index c8ec10d..2f4653c 100644 msgstr "" #: system/settings/settings.xml -@@ -16682,3 +16682,8 @@ msgstr "" +@@ -16679,3 +16679,8 @@ msgstr "" msgctxt "#38052" msgid "Remote button press release time (ms)" msgstr "" @@ -1206,7 +1179,7 @@ index c8ec10d..2f4653c 100644 +msgid "Extract thumbnails from video files" +msgstr "" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index f6ad877..d1acdae 100644 +index 09c3d10..1059b09 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -861,8 +861,8 @@ @@ -1221,10 +1194,10 @@ index f6ad877..d1acdae 100644 -From 298b0358d0e28365503fd654984e9557bd51c13c Mon Sep 17 00:00:00 2001 +From 07f3c28448d28cf7347394dca6e6a1faeaa7e3ec Mon Sep 17 00:00:00 2001 From: anaconda Date: Thu, 11 Sep 2014 21:30:43 +0200 -Subject: [PATCH 26/48] Disable autoscrolling while on screensaver and while +Subject: [PATCH 25/51] Disable autoscrolling while on screensaver and while opening streams. --- @@ -1237,10 +1210,10 @@ Subject: [PATCH 26/48] Disable autoscrolling while on screensaver and while 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 694e781..28f625d 100644 +index ffc7ad3..f35871a 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -4974,3 +4974,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const +@@ -4993,3 +4993,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const return false; } @@ -1355,10 +1328,10 @@ index 0d5b3f7..6d23024 100644 if (m_lastRenderTime) m_autoScrollDelayTime += currentTime - m_lastRenderTime; -From 677dce3d12e4c92e69defa888f9e835ae16c1e0c Mon Sep 17 00:00:00 2001 +From 5acd81c2d630bbe83763c5463cc26aae862a87b4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 13 Dec 2014 18:35:20 +0000 -Subject: [PATCH 27/48] [demuxer] Avoid memcpy on every demuxer packet +Subject: [PATCH 26/51] [demuxer] Avoid memcpy on every demuxer packet Avoids an unnecessary memcpy on every demuxer packet which for high bitrate videos can be significant. @@ -1453,10 +1426,10 @@ index ab298b2..10c5ee0 100644 } catch(...) { -From 94c85f7243d3296e8f452b62c3b9b0e72efaae53 Mon Sep 17 00:00:00 2001 +From 80367ca635d7fd6ba3e278fe4c4f2a9275f5c358 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 15 Feb 2015 14:06:12 +0000 -Subject: [PATCH 28/48] [mmal] Allow mmal codec for dvd stills +Subject: [PATCH 27/51] [mmal] Allow mmal codec for dvd stills --- xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 7 +++++++ @@ -1488,10 +1461,10 @@ index 4c363cf..b90237b 100644 { // If dvd is an mpeg2 and hint.stills -From 34506486ca9b49acf5e0dbb74d16d41dfa2a2e97 Mon Sep 17 00:00:00 2001 +From 959665eaf7160c8adb2d0f2e862e1e8ef5df2419 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 31 Mar 2015 17:31:47 +0100 -Subject: [PATCH 29/48] [mmalrenderer] Add SetCodecControl function and prefer +Subject: [PATCH 28/51] [mmalrenderer] Add SetCodecControl function and prefer to return pictures when renderer is low (disabled) --- @@ -1562,10 +1535,10 @@ index 51a64d1..bde8c06 100644 CCriticalSection m_sharedSection; MMAL_COMPONENT_T *m_dec; -From 881ac10c5d55c772f75da9f22a806c8594448d35 Mon Sep 17 00:00:00 2001 +From aa0a393eb9fc52c4aa791042dd521d16f8852567 Mon Sep 17 00:00:00 2001 From: anaconda Date: Wed, 25 Feb 2015 18:22:21 +0100 -Subject: [PATCH 30/48] Load OSD dialogs on startup. +Subject: [PATCH 29/51] Load OSD dialogs on startup. Fixes skipped frames the first time they're loaded in memory on less powered devices, like a Raspberry Pi, when using DVDPlayer. @@ -1660,10 +1633,10 @@ index 9f25fa5..3ece45b 100644 CGUIDialogVideoSettings::~CGUIDialogVideoSettings() { } -From 3ab44df9049a04fcd4b0b19c0d9dd64e43d4a96b Mon Sep 17 00:00:00 2001 +From cd731d75ce08cb29dc73de665830a4597db691a9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 7 Mar 2015 22:46:21 +0000 -Subject: [PATCH 31/48] configure: Add raspberry-pi2 platform +Subject: [PATCH 30/51] configure: Add raspberry-pi2 platform --- configure.ac | 14 +++++++-- @@ -1675,7 +1648,7 @@ Subject: [PATCH 31/48] configure: Add raspberry-pi2 platform 6 files changed, 44 insertions(+), 22 deletions(-) diff --git a/configure.ac b/configure.ac -index 8c1e412..688cac4 100644 +index 96be96f..7e924a2 100644 --- a/configure.ac +++ b/configure.ac @@ -744,8 +744,17 @@ case $use_platform in @@ -1837,10 +1810,10 @@ index cdc2fe4..379bd1d 100644 set(CMAKE_SYSTEM_NAME Linux) endif() -From ba7b7df51079f7962249fab1e606582cd6456d8b Mon Sep 17 00:00:00 2001 +From a6e8bc8e2784775522dce233f0f9dc0bde7fca44 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 16 Apr 2014 21:18:06 +0100 -Subject: [PATCH 32/48] [omxplayer] Don't propagate 3d flags based on supported +Subject: [PATCH 31/51] [omxplayer] Don't propagate 3d flags based on supported 3d modes --- @@ -1896,10 +1869,10 @@ index 212a89b..dd509ea 100644 unsigned int iDisplayHeight = height; -From 7bafdf76f00ce67de290b0ae8178a44b94b817a7 Mon Sep 17 00:00:00 2001 +From 46641c44cbf4832f8dc2e09de13c90ec263c7eb0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:01:51 +0100 -Subject: [PATCH 33/48] [graphics] Allow switching to a more suitable 3D +Subject: [PATCH 32/51] [graphics] Allow switching to a more suitable 3D resolution --- @@ -1985,10 +1958,10 @@ index a8fd03e..8501e58 100644 void ResetOverscan(RESOLUTION_INFO &resinfo); void ResetScreenParameters(RESOLUTION res); -From 5f3ce43d7a1b0692544f5f5224240d5732569f10 Mon Sep 17 00:00:00 2001 +From 55a4a727c1c8d0ca28deb1a8ca2c6ffa6a4eb0aa Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:38:55 +0100 -Subject: [PATCH 34/48] [3D] Support switching to 3D resolutions +Subject: [PATCH 33/51] [3D] Support switching to 3D resolutions Include matching 3D flags (SBS/TAB) in the score of a resolution to switch to, to enable switching to 3d modes. Also remove the old code that treated 3D modes differently when assigning a score. @@ -2070,10 +2043,10 @@ index bfafab7..84e6261 100644 return current; } -From b902e783ffd525d2e8f94eb4621416cf10fbe345 Mon Sep 17 00:00:00 2001 +From 568e84b69fc126735e0c9e298d3fa7d2eea0aae2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 00:05:07 +0100 -Subject: [PATCH 35/48] [graphics] Make pixel ratio for 3d modes consistent +Subject: [PATCH 34/51] [graphics] Make pixel ratio for 3d modes consistent Note: Use the stored stereo flags from lists of resolutions. Use current stereo mode for current resolution. @@ -2276,10 +2249,10 @@ index c80114e..80c05d2 100644 AddUniqueResolution(res2, resolutions); -From 583dfaeed63712cebba7528609d9e87009a9d926 Mon Sep 17 00:00:00 2001 +From 0c9da02efd32493162bbe0080ce08fc75d024ad2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 10 Mar 2015 17:05:18 +0000 -Subject: [PATCH 36/48] [players] Add settings option to enable MVC support +Subject: [PATCH 35/51] [players] Add settings option to enable MVC support --- addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++ @@ -2289,10 +2262,10 @@ Subject: [PATCH 36/48] [players] Add settings option to enable MVC support 4 files changed, 27 insertions(+) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index 2f4653c..c4c5851 100644 +index 6c3a220..f5b7c42 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16683,6 +16683,16 @@ msgctxt "#38052" +@@ -16680,6 +16680,16 @@ msgctxt "#38052" msgid "Remote button press release time (ms)" msgstr "" @@ -2360,10 +2333,10 @@ index e4f6d86..5d324f4 100644 case AV_CODEC_ID_MPEG4: // (role name) video_decoder.mpeg4 -From 63c023ab0d6578085900b73f40e33080b980855b Mon Sep 17 00:00:00 2001 +From 397a5d0b70abe0922387a0afd8beb4842a56e9b0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 14 Mar 2015 12:38:08 +0000 -Subject: [PATCH 37/48] [mmalrenderer] Switch to using transform flags for 3d +Subject: [PATCH 36/51] [mmalrenderer] Switch to using transform flags for 3d modes --- @@ -2377,10 +2350,10 @@ Subject: [PATCH 37/48] [mmalrenderer] Switch to using transform flags for 3d 7 files changed, 75 insertions(+), 130 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c4c5851..0f5710d 100644 +index f5b7c42..4848047 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16693,6 +16693,16 @@ msgctxt "#38111" +@@ -16690,6 +16690,16 @@ msgctxt "#38111" msgid "This option decodes frames for both eyes of MVC video. Disabling may improve performance if you don't require 3D" msgstr "" @@ -2742,10 +2715,11 @@ index 80c05d2..ae85484 100644 CLog::Log(LOGDEBUG, "EGL set resolution %dx%d -> %dx%d @ %.2f fps (%d,%d) flags:%x aspect:%.2f\n", m_width, m_height, dst_rect.width, dst_rect.height, res.fRefreshRate, GETFLAGS_GROUP(res.dwFlags), GETFLAGS_MODE(res.dwFlags), (int)res.dwFlags, res.fPixelRatio); -From abb123a443409eaae5e6e92c7b04a759b0934c48 Mon Sep 17 00:00:00 2001 + +From 180bad11da9d406158975f960198af9315170743 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 14 Apr 2015 20:51:14 +0100 -Subject: [PATCH 40/48] [gui] Also limit GUI updates when in non full-screen +Subject: [PATCH 39/51] [gui] Also limit GUI updates when in non full-screen video mode --- @@ -2753,10 +2727,10 @@ Subject: [PATCH 40/48] [gui] Also limit GUI updates when in non full-screen 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 28f625d..9b6d3dc 100644 +index f35871a..dd58116 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -2501,7 +2501,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) +@@ -2504,7 +2504,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) #if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) // This code reduces rendering fps of the GUI layer when playing videos in fullscreen mode // it makes only sense on architectures with multiple layers @@ -2765,7 +2739,7 @@ index 28f625d..9b6d3dc 100644 fps = CSettings::Get().GetInt("videoplayer.limitguiupdate"); #endif -@@ -2514,6 +2514,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) +@@ -2517,6 +2517,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) { if (!m_skipGuiRender) g_windowManager.Process(CTimeUtils::GetFrameTime()); @@ -2775,10 +2749,10 @@ index 28f625d..9b6d3dc 100644 g_windowManager.FrameMove(); } -From 5c78fd84ab872c7811d1786942abfcdd810821d1 Mon Sep 17 00:00:00 2001 +From a00d53ea266d3513d4785ff730d4d3ed9aace2a4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 21 Apr 2015 14:32:07 +0100 -Subject: [PATCH 41/48] [mmalrenderer] Add sharpness control +Subject: [PATCH 40/51] [mmalrenderer] Add sharpness control --- addons/resource.language.en_gb/resources/strings.po | 2 +- @@ -2787,7 +2761,7 @@ Subject: [PATCH 41/48] [mmalrenderer] Add sharpness control 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c1a9a98..cd6ef74 100644 +index 5ad526e..d252240 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -7503,7 +7503,7 @@ msgstr "" @@ -2850,17 +2824,17 @@ index 1404fb3..9bced7e 100644 CCriticalSection m_sharedSection; MMAL_COMPONENT_T *m_vout; -From d02c554b8bc5d23ce1a0352a2a727ca1e5f9180b Mon Sep 17 00:00:00 2001 +From 38eef3259f992329214af255923b6a2ce7364921 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 24 Apr 2015 13:49:51 +0100 -Subject: [PATCH 42/48] [dvdplayer] Add back required include +Subject: [PATCH 41/51] [dvdplayer] Add back required include --- xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 008cedf..ea6b7ab 100644 +index bdc3edb..2dad96c 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -33,6 +33,7 @@ @@ -2872,10 +2846,10 @@ index 008cedf..ea6b7ab 100644 #include "guilib/GraphicContext.h" #include -From 198f47bfbb6ac0f4669dc3aecb4ea21dd99d41ee Mon Sep 17 00:00:00 2001 +From ec33b18ad7a9fe49b5a9a10f053bd5b9d1ea4214 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 May 2015 23:58:06 +0100 -Subject: [PATCH 43/48] [screensaver] Leave GUI contents available for +Subject: [PATCH 42/51] [screensaver] Leave GUI contents available for screensaver --- @@ -2905,10 +2879,10 @@ index ba33908..17ea269 100644 // Add window to the history list (we must do this before we activate it, -From e34b80a46a5724e3fc16a8c3436483e2768b927d Mon Sep 17 00:00:00 2001 +From 5964fa6583235b7fce1d0c83ba4005380a7bf322 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 15 May 2015 14:04:11 +0100 -Subject: [PATCH 45/48] [omxplayer] Make unsupported when ac3transcode is +Subject: [PATCH 44/51] [omxplayer] Make unsupported when ac3transcode is enabled --- @@ -2933,10 +2907,10 @@ index be54f31..373e3f2 100644 { // find video stream -From 0ead5207ec4f59dd535f236b68d875d5f12aae67 Mon Sep 17 00:00:00 2001 +From ba0740cf8f5e163720e03516186522bbf16c25b0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 1 Jun 2015 14:14:43 +0100 -Subject: [PATCH 46/48] [omximage] Don't report failed decode of progressive +Subject: [PATCH 45/51] [omximage] Don't report failed decode of progressive jpegs as as error --- @@ -3022,10 +2996,10 @@ index a43a446..890ca88 100644 } -From bc752ac78749b96fac2103aeb34e03bb31769ed3 Mon Sep 17 00:00:00 2001 +From 33a38607218899acba79a30dc7b9163daaf99c65 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 May 2015 19:01:00 +0100 -Subject: [PATCH 47/48] [rbp] Allow settings option for timestamp preference +Subject: [PATCH 46/51] [rbp] Allow settings option for timestamp preference We currently have some files that play better with pts timestamps and some that play better with dts timestamps Provide a gui setting to allow users to adjust this behaviour until we have a better solution @@ -3037,10 +3011,10 @@ Provide a gui setting to allow users to adjust this behaviour until we have a be 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index 3a08680..8513978 100644 +index b76e723..3c18575 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16717,3 +16717,13 @@ msgstr "" +@@ -16714,3 +16714,13 @@ msgstr "" msgctxt "#38121" msgid "This option supports 8 channel DTS HD decoding, but may use more CPU. It is only available when DTS and DTS-HD audio passthrough is disabled" msgstr "" @@ -3099,10 +3073,10 @@ index adf9910..f9b9232 100644 if (pts == DVD_NOPTS_VALUE) pts = dts; -From 3bdfc7c45e7caa82598645b208ee0c2262fe0c89 Mon Sep 17 00:00:00 2001 +From 792a42205d18d6d389a36101c85594884eb9b34e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 6 Jun 2015 18:44:37 +0100 -Subject: [PATCH 48/48] [rbp] Ignore pts value when m_hints.ptsinvalid set +Subject: [PATCH 47/51] [rbp] Ignore pts value when m_hints.ptsinvalid set --- xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 +- @@ -3135,3 +3109,254 @@ index f9b9232..33aa88c 100644 if (pts == DVD_NOPTS_VALUE) pts = dts; + +From 493d0d8dfac375bedb0e80c08213bb45a714a4bb Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 10 Jun 2015 20:42:03 +0100 +Subject: [PATCH 49/51] [rbp] Fix zoom modes with stereoscopic videos + +--- + xbmc/cores/VideoRenderers/MMALRenderer.cpp | 12 ++++++++++-- + xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 12 ++++++++++-- + 2 files changed, 20 insertions(+), 4 deletions(-) + +diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp +index 9bf1aed..e420834 100644 +--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp ++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp +@@ -632,9 +632,17 @@ void CMMALRenderer::SetVideoRect(const CRect& InSrcRect, const CRect& InDestRect + CRect display(0, 0, CDisplaySettings::Get().GetResolutionInfo(res).iScreenWidth, CDisplaySettings::Get().GetResolutionInfo(res).iScreenHeight); + + if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_VERTICAL) +- DestRect.x2 *= 2.0f; ++ { ++ float width = DestRect.x2 - DestRect.x1; ++ DestRect.x1 *= 2.0f; ++ DestRect.x2 = DestRect.x1 + 2.0f * width; ++ } + else if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_HORIZONTAL) +- DestRect.y2 *= 2.0f; ++ { ++ float height = DestRect.y2 - DestRect.y1; ++ DestRect.y1 *= 2.0f; ++ DestRect.y2 = DestRect.y1 + 2.0f * height; ++ } + + if (gui != display) + { +diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +index 33aa88c..e008405 100644 +--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp ++++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +@@ -690,9 +690,17 @@ void OMXPlayerVideo::SetVideoRect(const CRect &InSrcRect, const CRect &InDestRec + CRect display(0, 0, CDisplaySettings::Get().GetResolutionInfo(res).iScreenWidth, CDisplaySettings::Get().GetResolutionInfo(res).iScreenHeight); + + if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_VERTICAL) +- DestRect.x2 *= 2.0f; ++ { ++ float width = DestRect.x2 - DestRect.x1; ++ DestRect.x1 *= 2.0f; ++ DestRect.x2 = DestRect.x1 + 2.0f * width; ++ } + else if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_HORIZONTAL) +- DestRect.y2 *= 2.0f; ++ { ++ float height = DestRect.y2 - DestRect.y1; ++ DestRect.y1 *= 2.0f; ++ DestRect.y2 = DestRect.y1 + 2.0f * height; ++ } + + if (gui != display) + { + +From 8312d9234bddd5878f60a7a297e16e61d2cab255 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Sat, 6 Jun 2015 18:43:57 +0100 +Subject: [PATCH 50/51] ffmpeg: Automatic switch to software decode for GMC + with more than one warp point + +--- + ...Signal-unsupported-GMC-with-more-than-one.patch | 48 ++++++++++++++++++++++ + tools/depends/target/ffmpeg/Makefile | 4 +- + xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 + + xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h | 2 + + .../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 2 +- + xbmc/cores/dvdplayer/DVDStreamInfo.cpp | 3 ++ + xbmc/cores/dvdplayer/DVDStreamInfo.h | 1 + + xbmc/cores/omxplayer/OMXHelper.cpp | 4 +- + 8 files changed, 63 insertions(+), 3 deletions(-) + create mode 100644 tools/depends/target/ffmpeg/0001-mpeg4video-Signal-unsupported-GMC-with-more-than-one.patch + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp +index f7b0b25..3e97f1d 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp +@@ -516,6 +516,8 @@ bool CMMALVideo::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options) + // we always qualify even if DVDFactoryCodec does this too. + if (!CSettings::Get().GetBool("videoplayer.usemmal") || hints.software) + return false; ++ if (hints.workaround_bugs & FF_BUG_GMC_UNSUPPORTED) ++ return false; + + m_hints = hints; + m_vout_input_pool = (MMAL_POOL_T *)options.m_opaque_pointer; +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h +index fca164d..d450413 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h +@@ -162,6 +162,7 @@ class CDemuxStreamVideo : public CDemuxStream + type = STREAM_VIDEO; + iOrientation = 0; + iBitsPerPixel = 0; ++ workaround_bugs = 0; + } + + virtual ~CDemuxStreamVideo() {} +@@ -178,6 +179,7 @@ class CDemuxStreamVideo : public CDemuxStream + int iOrientation; // orientation of the video in degress counter clockwise + int iBitsPerPixel; + std::string stereo_mode; // expected stereo mode ++ int workaround_bugs; // info for decoder + }; + + class CDemuxStreamAudio : public CDemuxStream +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +index 5feac29..f7d6dc8 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +@@ -1199,7 +1199,7 @@ CDemuxStream* CDVDDemuxFFmpeg::AddStream(int iId) + if (!stereoMode.empty()) + st->stereo_mode = stereoMode; + +- ++ st->workaround_bugs = pStream->codec->workaround_bugs; + if ( m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD) ) + { + if (pStream->codec->codec_id == AV_CODEC_ID_PROBE) +diff --git a/xbmc/cores/dvdplayer/DVDStreamInfo.cpp b/xbmc/cores/dvdplayer/DVDStreamInfo.cpp +index fa0defa..37c2d16 100644 +--- a/xbmc/cores/dvdplayer/DVDStreamInfo.cpp ++++ b/xbmc/cores/dvdplayer/DVDStreamInfo.cpp +@@ -73,6 +73,7 @@ void CDVDStreamInfo::Clear() + bitspersample = 0; + + orientation = 0; ++ workaround_bugs = 0; + } + + bool CDVDStreamInfo::Equal(const CDVDStreamInfo& right, bool withextradata) +@@ -174,6 +175,7 @@ void CDVDStreamInfo::Assign(const CDVDStreamInfo& right, bool withextradata) + vfr = right.vfr; + software = right.software; + stereo_mode = right.stereo_mode; ++ workaround_bugs = right.workaround_bugs; + + // AUDIO + channels = right.channels; +@@ -231,6 +233,7 @@ void CDVDStreamInfo::Assign(const CDemuxStream& right, bool withextradata) + bitsperpixel = stream->iBitsPerPixel; + pid = stream->iPhysicalId; + stereo_mode = stream->stereo_mode; ++ workaround_bugs = stream->workaround_bugs; + } + else if( right.type == STREAM_SUBTITLE ) + { +diff --git a/xbmc/cores/dvdplayer/DVDStreamInfo.h b/xbmc/cores/dvdplayer/DVDStreamInfo.h +index c0e22a2..3849993 100644 +--- a/xbmc/cores/dvdplayer/DVDStreamInfo.h ++++ b/xbmc/cores/dvdplayer/DVDStreamInfo.h +@@ -73,6 +73,7 @@ class CDVDStreamInfo + int bitsperpixel; + int pid; + std::string stereo_mode; // stereoscopic 3d mode ++ int workaround_bugs; // info for decoder + + // AUDIO + int channels; +diff --git a/xbmc/cores/omxplayer/OMXHelper.cpp b/xbmc/cores/omxplayer/OMXHelper.cpp +index 373e3f2..093388c 100644 +--- a/xbmc/cores/omxplayer/OMXHelper.cpp ++++ b/xbmc/cores/omxplayer/OMXHelper.cpp +@@ -77,7 +77,9 @@ bool OMXPlayerUnsuitable(bool m_HasVideo, bool m_HasAudio, CDVDDemux* m_pDemuxer + CDVDStreamInfo hint(*stream, true); + + bool supported = false; +- if ((hint.codec == AV_CODEC_ID_MPEG1VIDEO || hint.codec == AV_CODEC_ID_MPEG2VIDEO) && g_RBP.GetCodecMpg2()) ++ if (hint.workaround_bugs & FF_BUG_GMC_UNSUPPORTED) ++ ; ++ else if ((hint.codec == AV_CODEC_ID_MPEG1VIDEO || hint.codec == AV_CODEC_ID_MPEG2VIDEO) && g_RBP.GetCodecMpg2()) + supported = true; + else if ((hint.codec == AV_CODEC_ID_VC1 || hint.codec == AV_CODEC_ID_WMV3) && g_RBP.GetCodecWvc1()) + supported = true; + +From 1798b2059a7dcc34b4dcecfec56736225d2ac918 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 3 Jun 2015 23:13:51 +0100 +Subject: [PATCH 51/51] [rpi] Always add desktop resolution to supported list + +There was an assumption that the desktop resolution would be in the probed list, but that is sometimes not the case. +We don't add interlaced resolutions to list, but they can be the preferred resolution read from edid. See: +http://openelec.tv/forum/124-raspberry-pi/77074-forcing-interlaced-output + +Also hotplug changes causing an edid reread may cause the supported modes to change (e.g. powering on receiver) +and it is possible the previous preferred mode is no longer there + +So ensure that desktop resolution is always added to list. Also handle the case where desktop resolution is invalid on launch +(e.g. hdmi output powered off) +--- + xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp +index ae85484..a4b8a81 100644 +--- a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp ++++ b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp +@@ -187,7 +187,7 @@ int CEGLNativeTypeRaspberryPI::FindMatchingResolution(const RESOLUTION_INFO &res + for (int i = 0; i < (int)resolutions.size(); i++) + { + if(resolutions[i].iScreenWidth == res.iScreenWidth && resolutions[i].iScreenHeight == res.iScreenHeight && resolutions[i].fRefreshRate == res.fRefreshRate && +- (resolutions[i].dwFlags & (D3DPRESENTFLAG_MODE3DSBS|D3DPRESENTFLAG_MODE3DTB)) == (res.dwFlags & (D3DPRESENTFLAG_MODE3DSBS|D3DPRESENTFLAG_MODE3DTB))) ++ (resolutions[i].dwFlags & D3DPRESENTFLAG_MODEMASK) == (res.dwFlags & D3DPRESENTFLAG_MODEMASK)) + { + return i; + } +@@ -203,8 +203,7 @@ int CEGLNativeTypeRaspberryPI::AddUniqueResolution(RESOLUTION_INFO &res, std::ve + int i = FindMatchingResolution(res, resolutions); + if (i>=0) + { // don't replace a progressive resolution with an interlaced one of same resolution +- if (!(res.dwFlags & D3DPRESENTFLAG_INTERLACED)) +- resolutions[i] = res; ++ resolutions[i] = res; + } + else + { +@@ -516,7 +515,7 @@ bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &r + vc_tv_hdmi_get_property(&property); + m_desktopRes.fRefreshRate = property.param1 == HDMI_PIXEL_CLOCK_TYPE_NTSC ? tv_state.display.hdmi.frame_rate * (1000.0f/1001.0f) : tv_state.display.hdmi.frame_rate; + } +- else // sdtv ++ else if ((tv_state.state & ( VC_SDTV_NTSC | VC_SDTV_PAL )) != 0) // sdtv + { + m_desktopRes.iScreen = 0; + m_desktopRes.bFullScreen = true; +@@ -541,7 +540,6 @@ bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &r + GetSupportedModes(HDMI_RES_GROUP_CEA, resolutions); + GetSupportedModes(HDMI_RES_GROUP_DMT, resolutions); + +- if(resolutions.size() == 0) + { + AddUniqueResolution(m_desktopRes, resolutions); + CLog::Log(LOGDEBUG, "EGL probe resolution %s:%x\n", m_desktopRes.strMode.c_str(), m_desktopRes.dwFlags); +@@ -636,6 +634,12 @@ void CEGLNativeTypeRaspberryPI::GetSupportedModes(HDMI_RES_GROUP_T group, std::v + res.fPixelRatio = get_display_aspect_ratio((HDMI_ASPECT_T)tv->aspect_ratio) / ((float)res.iScreenWidth / (float)res.iScreenHeight); + res.iSubtitles = (int)(0.965 * res.iHeight); + ++ if (!m_desktopRes.dwFlags && prefer_group == group && prefer_mode == tv->code) ++ m_desktopRes = res; ++ ++ if (res.dwFlags & D3DPRESENTFLAG_INTERLACED) ++ continue; ++ + AddUniqueResolution(res, resolutions); + CLog::Log(LOGDEBUG, "EGL mode %d: %s (%.2f) %s%s:%x\n", i, res.strMode.c_str(), res.fPixelRatio, + tv->native ? "N" : "", tv->scan_mode ? "I" : "", tv->code); diff --git a/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch b/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch index 4cfbd9afd6..c60b9d9c25 100644 --- a/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch +++ b/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch @@ -1,7 +1,7 @@ -From 17e3636011a0d30f0d9d0824fb8a672ac81664e7 Mon Sep 17 00:00:00 2001 +From 334f38e87d0f4d071929f26a73db4075f5a40a86 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 18:19:32 +0100 -Subject: [PATCH 01/48] [rbp/omxplayer] When opening a stream don't try to +Subject: [PATCH 01/51] [rbp/omxplayer] When opening a stream don't try to update gui so often --- @@ -25,10 +25,10 @@ index 2faceea..889d7a2 100644 g_windowManager.ProcessRenderLoop(false); if (allowCancel && dialog->IsCanceled()) -From 2ac1dade38d81b8f358e5dd9710caca339a5603a Mon Sep 17 00:00:00 2001 +From 7ddf4d5ef049c6ab43814ea9946347fd8e13e36c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 8 Mar 2014 15:36:06 +0000 -Subject: [PATCH 03/48] [hifiberry] Hack: force it to be recognised as IEC958 +Subject: [PATCH 03/51] [hifiberry] Hack: force it to be recognised as IEC958 capable to enable passthrough options --- @@ -51,10 +51,10 @@ index e22db7a..0120bd5 100644 info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI") { -From bcb771d391629dc9033eeb1e5c08942993b851f9 Mon Sep 17 00:00:00 2001 +From 9d64e65d1de3cd2c18fdb95bc7d7825f42602ad9 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 1 May 2014 16:28:39 +0100 -Subject: [PATCH 04/48] Improved file buffering in CArchive +Subject: [PATCH 04/51] Improved file buffering in CArchive Even though memcpy is typically inlined by the compiler into byte/word loads and stores (at least for release builds), the frequency with which 1, 2 and 4 @@ -114,20 +114,20 @@ index 6ed0f8f..8506d95 100644 } else -From 319891a3aec45c12afb57f812cbcc1108476fdac Mon Sep 17 00:00:00 2001 +From 11c32ec255761eb3763fa4b2bf7f4a261238e102 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 12 Aug 2014 00:31:36 +0100 -Subject: [PATCH 05/48] [omxcodec] Don't force software codec with dvds +Subject: [PATCH 05/51] [omxcodec] Don't force software codec with dvds --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index dd9e10a..619f5d9 100644 +index 82b5baa..70b1ac3 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp -@@ -3423,7 +3423,9 @@ bool CDVDPlayer::OpenVideoStream(CDVDStreamInfo& hint, bool reset) +@@ -3421,7 +3421,9 @@ bool CDVDPlayer::OpenVideoStream(CDVDStreamInfo& hint, bool reset) hint.aspect = aspect; hint.forced_aspect = true; } @@ -138,10 +138,10 @@ index dd9e10a..619f5d9 100644 else if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_PVRMANAGER)) { -From e97622281318361374a711d681b4620c66d02b4f Mon Sep 17 00:00:00 2001 +From 9a08c47d230a839bc32bf6c81c3d54bb8692b248 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 10 Aug 2014 16:45:16 +0100 -Subject: [PATCH 06/48] filesystem: Make support of browsing into archives +Subject: [PATCH 06/51] filesystem: Make support of browsing into archives optional The ability to browse, scan and play content in archives can cause problems on low powered/low memory devices. @@ -159,10 +159,10 @@ We'll let people who don't use archives disable it manually 3 files changed, 18 insertions(+) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index a751dc2..c44d399 100644 +index 97039ca..9614036 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16585,6 +16585,15 @@ msgstr "" +@@ -16582,6 +16582,15 @@ msgstr "" #: system/settings/rbp.xml msgctxt "#38010" msgid "GPU accelerated" @@ -179,7 +179,7 @@ index a751dc2..c44d399 100644 #. Setting #38011 "Videos -> Library -> Show All Items entry" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index d1a8e1c..a780a43 100644 +index 8f69bcb..cbcde85 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -304,6 +304,11 @@ @@ -224,10 +224,10 @@ index 5af92e7..568a1a8 100644 { // XBMC Smart playlist - just XML renamed to XSP // read the name of the playlist in -From 7bbb7d9b933842bd867aec28320a443b8126ddfe Mon Sep 17 00:00:00 2001 +From 52ba2eb2daaeba3eaa7213b2f370f11b73ebdd51 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 27 Oct 2014 13:06:57 +0000 -Subject: [PATCH 08/48] [rbp] Make cachemembuffersize default depend on memory +Subject: [PATCH 08/51] [rbp] Make cachemembuffersize default depend on memory size --- @@ -329,10 +329,10 @@ index 2e3282c..d1606a2 100644 } -From 1a49c26c7a386d032c4c643be69286899ebf0bf8 Mon Sep 17 00:00:00 2001 +From b14ed34e6cf3a147e4e93161c60ff804b6a77286 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 30 May 2014 14:58:43 +0100 -Subject: [PATCH 10/48] [settings] Experiment: Report DESKTOP resolution in +Subject: [PATCH 10/51] [settings] Experiment: Report DESKTOP resolution in video settings --- @@ -354,10 +354,10 @@ index 4376463..fc4e5ea 100644 StringUtils::Format("%dx%d%s", resolution->width, resolution->height, ModeFlagsToString(resolution->flags, false).c_str()), -From 2c879980401504485d1e5304331e36ec60f41afb Mon Sep 17 00:00:00 2001 +From 975844c8114a270ab8c97925806b41a09600a90e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Sep 2014 12:04:26 +0100 -Subject: [PATCH 11/48] egl: Treat unknown display aspect ratio as square pixel +Subject: [PATCH 11/51] egl: Treat unknown display aspect ratio as square pixel --- xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 4 ++-- @@ -386,10 +386,10 @@ index bda7430..68fc647 100644 SetResolutionString(m_desktopRes); -From 181f324a483872faae51f75482e6fc679d6727a3 Mon Sep 17 00:00:00 2001 +From 873e875a8538a1c5219054f30a80d90877d0d301 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 19 Sep 2014 11:54:49 +0100 -Subject: [PATCH 12/48] [dvdplayer/rbp] Add pi specific option to maintain +Subject: [PATCH 12/51] [dvdplayer/rbp] Add pi specific option to maintain vsync with pll adjustment New A/V sync option in settings/video/playback to do "Adjust PLL". @@ -414,7 +414,7 @@ Needed updated firmware 9 files changed, 91 insertions(+), 7 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c44d399..27c6e6d 100644 +index 9614036..36b8c5d 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -6321,7 +6321,22 @@ msgctxt "#13459" @@ -441,7 +441,7 @@ index c44d399..27c6e6d 100644 #: system/settings/settings.xml msgctxt "#13505" -@@ -16631,3 +16646,10 @@ msgstr "" +@@ -16628,3 +16643,10 @@ msgstr "" msgctxt "#38016" msgid "%d fps" msgstr "" @@ -453,7 +453,7 @@ index c44d399..27c6e6d 100644 +msgstr "" + diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index a780a43..aff0bf8 100644 +index cbcde85..a3d4728 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -572,6 +572,20 @@ @@ -492,7 +492,7 @@ index 782a9ba..3e0390c 100644 struct AEDelayStatus diff --git a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp -index a429e11..2871ae2 100644 +index 145a622..7b7a223 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp @@ -24,6 +24,7 @@ @@ -681,37 +681,10 @@ index 7df1bf7..732b69d 100644 float m_audioPlayCountMinimumPercent; bool m_dvdplayerIgnoreDTSinWAV; -From d44ace091afc94280393513c87572197c1281c59 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Sat, 27 Sep 2014 15:32:37 +0100 -Subject: [PATCH 13/48] [dvdplayer] exerimental: don't raise priority of audio - thread - ---- - xbmc/cores/dvdplayer/DVDPlayer.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index 619f5d9..ff03bc6 100644 ---- a/xbmc/cores/dvdplayer/DVDPlayer.cpp -+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp -@@ -3408,7 +3408,11 @@ bool CDVDPlayer::OpenAudioStream(CDVDStreamInfo& hint, bool reset) - m_dvdPlayerAudio->SendMessage(new CDVDMsg(CDVDMsg::PLAYER_STARTED), 1); - - /* audio normally won't consume full cpu, so let it have prio */ -+#ifdef TARGET_RASPBERRY_PI -+ m_dvdPlayerAudio->SetPriority(GetPriority()); -+#else - m_dvdPlayerAudio->SetPriority(GetPriority()+1); -+#endif - return true; - } - - -From d41f66c5afab06eb4a64489a1a9c1e5c87a0d926 Mon Sep 17 00:00:00 2001 +From 0323acdf71a6bf8d66ff569403e8fc0412291325 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 24 Sep 2014 23:13:52 +0100 -Subject: [PATCH 14/48] [audio] Add settings option to boost centre channel +Subject: [PATCH 13/51] [audio] Add settings option to boost centre channel when downmixing This allows a dB volume increase to be added to centre channel. @@ -729,10 +702,10 @@ Should work with Pi Sink (dvdplayer/paplayer) and omxplayer 5 files changed, 45 insertions(+) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index 27c6e6d..2d4efe2 100644 +index 36b8c5d..c1148e8 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16653,3 +16653,17 @@ msgctxt "#38006" +@@ -16650,3 +16650,17 @@ msgctxt "#38006" msgid "Audio has to stay in sync, this can either be done by resampling, or adjusting the PLL" msgstr "" @@ -751,7 +724,7 @@ index 27c6e6d..2d4efe2 100644 +msgid "%i dB" +msgstr "" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index aff0bf8..f6ad877 100644 +index a3d4728..09c3d10 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -2597,6 +2597,18 @@ @@ -833,10 +806,10 @@ index f99c0e6..1911189 100644 // stereo upmix if (upmix && m_src_channels == 2 && m_dst_channels > 2) -From 54dde47ac98e2cf336610ab981ab8ed13bc2ecac Mon Sep 17 00:00:00 2001 +From 8dada388745328d01b186ede90c64be0b571a936 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 27 Oct 2014 15:23:51 +0000 -Subject: [PATCH 15/48] [rbp] Default extract thumbnails to false +Subject: [PATCH 14/51] [rbp] Default extract thumbnails to false It can take 80 seconds for a single file on a Pi. It can cause crashes with out-of-memory errors. It genereates a lot of support issues. Best to default to disabled and let users enable it if they must @@ -866,10 +839,10 @@ index 50fe36a..a54a4c4 100644
-From 43233930f444cfae66fd6e1eec171a2652a63531 Mon Sep 17 00:00:00 2001 +From cf3e013db35eda90e5e2f337d8355312ce0e5955 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 15 Nov 2014 12:03:34 +0000 -Subject: [PATCH 20/48] [dvdplayer] Add lock for player creation +Subject: [PATCH 19/51] [dvdplayer] Add lock for player creation --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 3 +++ @@ -877,7 +850,7 @@ Subject: [PATCH 20/48] [dvdplayer] Add lock for player creation 2 files changed, 4 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index ff03bc6..2b3baf7 100644 +index 70b1ac3..b41c8f0 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -517,6 +517,7 @@ int CSelectionStreams::CountSource(StreamType type, StreamSource source) const @@ -896,7 +869,7 @@ index ff03bc6..2b3baf7 100644 if (!m_players_created) return; delete m_dvdPlayerVideo; -@@ -4275,6 +4277,7 @@ double CDVDPlayer::GetQueueTime() +@@ -4255,6 +4257,7 @@ double CDVDPlayer::GetQueueTime() void CDVDPlayer::GetVideoStreamInfo(SPlayerVideoStreamInfo &info) { @@ -915,10 +888,10 @@ index 2a4aea5..f74e71d 100644 + CCriticalSection m_players_lock; }; -From 37d8b3208029031b46ab432aa24045e502cd4b2a Mon Sep 17 00:00:00 2001 +From 5d3ab1cf45b4eca6f524b4555e3f103e27467a49 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 24 Nov 2014 22:07:25 +0000 -Subject: [PATCH 21/48] [dvdplayervideo] Prod decoder when in stills mode +Subject: [PATCH 20/51] [dvdplayervideo] Prod decoder when in stills mode An asynchronous hardware decoder doesn't only produce output pictures when new packets arrive. In dvd stills mode give it a chance to return pictures that weren't ready when frame was decoded. @@ -927,7 +900,7 @@ In dvd stills mode give it a chance to return pictures that weren't ready when f 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index f909bb5..008cedf 100644 +index 656c937..bdc3edb 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -314,7 +314,8 @@ void CDVDPlayerVideo::Process() @@ -995,10 +968,10 @@ index f909bb5..008cedf 100644 if (pMsg->IsType(CDVDMsg::GENERAL_SYNCHRONIZE)) -From 3f34b6c3eb68ae3867c9b9475a961d6c5e4c5add Mon Sep 17 00:00:00 2001 +From 25d43d2d6bdf9de85a30161aa1c7e0260b4de33b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 27 Nov 2014 16:31:56 +0000 -Subject: [PATCH 22/48] [languageinvoker] Reduce priority of python threads +Subject: [PATCH 21/51] [languageinvoker] Reduce priority of python threads --- xbmc/interfaces/generic/LanguageInvokerThread.cpp | 5 +++++ @@ -1021,10 +994,10 @@ index fcdd063..16f0c89 100644 } -From f9f26d380d93aac6c4d882a75d2de5127dd9e496 Mon Sep 17 00:00:00 2001 +From 126cddbf807d68c42e07d24c733d65abb687b500 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 14 Dec 2013 16:55:05 +0000 -Subject: [PATCH 23/48] logging: Add microsecond timer to log messages +Subject: [PATCH 22/51] logging: Add microsecond timer to log messages --- xbmc/utils/log.cpp | 17 +++++++++++++++-- @@ -1077,10 +1050,10 @@ index 3443f12..31c4a99 100644 levelNames[logLevel]) + strData; -From b4380166f33508dabe7ab5acf99359901673ed56 Mon Sep 17 00:00:00 2001 +From cfe6214efcc206c97cf8eb6b224c0a8d63981c77 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 29 Nov 2014 15:25:16 +0000 -Subject: [PATCH 24/48] [rbp] hack: wait for splash to complete before changing +Subject: [PATCH 23/51] [rbp] hack: wait for splash to complete before changing hdmi mode --- @@ -1154,10 +1127,10 @@ index 68fc647..c80114e 100644 if(!m_fixedMode && GETFLAGS_GROUP(res.dwFlags) && GETFLAGS_MODE(res.dwFlags)) -From b5ae9d7dd86f5e5b55d21c18d31ae298bf37855f Mon Sep 17 00:00:00 2001 +From 1610df489966e26604392af08d40a2a2eacad8db Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 11 Dec 2014 17:00:57 +0000 -Subject: [PATCH 25/48] Fix for UI not showing both extractflags and +Subject: [PATCH 24/51] Fix for UI not showing both extractflags and extractthumb --- @@ -1166,10 +1139,10 @@ Subject: [PATCH 25/48] Fix for UI not showing both extractflags and 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c8ec10d..2f4653c 100644 +index b6b48b4..6c3a220 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -11018,7 +11018,7 @@ msgstr "" +@@ -11015,7 +11015,7 @@ msgstr "" #: system/settings/settings.xml msgctxt "#20433" @@ -1178,7 +1151,7 @@ index c8ec10d..2f4653c 100644 msgstr "" #: xbmc/dialogs/GUIDialogSmartPlaylistRule.cpp -@@ -14552,7 +14552,7 @@ msgstr "" +@@ -14549,7 +14549,7 @@ msgstr "" #. Description of setting "Videos -> File lists -> Extract thumbnails and video information" with label #20433 #: system/settings/settings.xml msgctxt "#36178" @@ -1187,7 +1160,7 @@ index c8ec10d..2f4653c 100644 msgstr "" #. Description of setting "Videos -> File lists -> Replace file names with library titles" with label #20419 -@@ -14564,7 +14564,7 @@ msgstr "" +@@ -14561,7 +14561,7 @@ msgstr "" #. Description of setting "Videos -> File lists -> Extract thumbnails and video information" with label #20433 #: system/settings/settings.xml msgctxt "#36180" @@ -1196,7 +1169,7 @@ index c8ec10d..2f4653c 100644 msgstr "" #: system/settings/settings.xml -@@ -16682,3 +16682,8 @@ msgstr "" +@@ -16679,3 +16679,8 @@ msgstr "" msgctxt "#38052" msgid "Remote button press release time (ms)" msgstr "" @@ -1206,7 +1179,7 @@ index c8ec10d..2f4653c 100644 +msgid "Extract thumbnails from video files" +msgstr "" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index f6ad877..d1acdae 100644 +index 09c3d10..1059b09 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -861,8 +861,8 @@ @@ -1221,10 +1194,10 @@ index f6ad877..d1acdae 100644 -From 298b0358d0e28365503fd654984e9557bd51c13c Mon Sep 17 00:00:00 2001 +From 07f3c28448d28cf7347394dca6e6a1faeaa7e3ec Mon Sep 17 00:00:00 2001 From: anaconda Date: Thu, 11 Sep 2014 21:30:43 +0200 -Subject: [PATCH 26/48] Disable autoscrolling while on screensaver and while +Subject: [PATCH 25/51] Disable autoscrolling while on screensaver and while opening streams. --- @@ -1237,10 +1210,10 @@ Subject: [PATCH 26/48] Disable autoscrolling while on screensaver and while 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 694e781..28f625d 100644 +index ffc7ad3..f35871a 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -4974,3 +4974,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const +@@ -4993,3 +4993,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const return false; } @@ -1355,10 +1328,10 @@ index 0d5b3f7..6d23024 100644 if (m_lastRenderTime) m_autoScrollDelayTime += currentTime - m_lastRenderTime; -From 677dce3d12e4c92e69defa888f9e835ae16c1e0c Mon Sep 17 00:00:00 2001 +From 5acd81c2d630bbe83763c5463cc26aae862a87b4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 13 Dec 2014 18:35:20 +0000 -Subject: [PATCH 27/48] [demuxer] Avoid memcpy on every demuxer packet +Subject: [PATCH 26/51] [demuxer] Avoid memcpy on every demuxer packet Avoids an unnecessary memcpy on every demuxer packet which for high bitrate videos can be significant. @@ -1453,10 +1426,10 @@ index ab298b2..10c5ee0 100644 } catch(...) { -From 94c85f7243d3296e8f452b62c3b9b0e72efaae53 Mon Sep 17 00:00:00 2001 +From 80367ca635d7fd6ba3e278fe4c4f2a9275f5c358 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 15 Feb 2015 14:06:12 +0000 -Subject: [PATCH 28/48] [mmal] Allow mmal codec for dvd stills +Subject: [PATCH 27/51] [mmal] Allow mmal codec for dvd stills --- xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 7 +++++++ @@ -1488,10 +1461,10 @@ index 4c363cf..b90237b 100644 { // If dvd is an mpeg2 and hint.stills -From 34506486ca9b49acf5e0dbb74d16d41dfa2a2e97 Mon Sep 17 00:00:00 2001 +From 959665eaf7160c8adb2d0f2e862e1e8ef5df2419 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 31 Mar 2015 17:31:47 +0100 -Subject: [PATCH 29/48] [mmalrenderer] Add SetCodecControl function and prefer +Subject: [PATCH 28/51] [mmalrenderer] Add SetCodecControl function and prefer to return pictures when renderer is low (disabled) --- @@ -1562,10 +1535,10 @@ index 51a64d1..bde8c06 100644 CCriticalSection m_sharedSection; MMAL_COMPONENT_T *m_dec; -From 881ac10c5d55c772f75da9f22a806c8594448d35 Mon Sep 17 00:00:00 2001 +From aa0a393eb9fc52c4aa791042dd521d16f8852567 Mon Sep 17 00:00:00 2001 From: anaconda Date: Wed, 25 Feb 2015 18:22:21 +0100 -Subject: [PATCH 30/48] Load OSD dialogs on startup. +Subject: [PATCH 29/51] Load OSD dialogs on startup. Fixes skipped frames the first time they're loaded in memory on less powered devices, like a Raspberry Pi, when using DVDPlayer. @@ -1660,10 +1633,10 @@ index 9f25fa5..3ece45b 100644 CGUIDialogVideoSettings::~CGUIDialogVideoSettings() { } -From 3ab44df9049a04fcd4b0b19c0d9dd64e43d4a96b Mon Sep 17 00:00:00 2001 +From cd731d75ce08cb29dc73de665830a4597db691a9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 7 Mar 2015 22:46:21 +0000 -Subject: [PATCH 31/48] configure: Add raspberry-pi2 platform +Subject: [PATCH 30/51] configure: Add raspberry-pi2 platform --- configure.ac | 14 +++++++-- @@ -1675,7 +1648,7 @@ Subject: [PATCH 31/48] configure: Add raspberry-pi2 platform 6 files changed, 44 insertions(+), 22 deletions(-) diff --git a/configure.ac b/configure.ac -index 8c1e412..688cac4 100644 +index 96be96f..7e924a2 100644 --- a/configure.ac +++ b/configure.ac @@ -744,8 +744,17 @@ case $use_platform in @@ -1837,10 +1810,10 @@ index cdc2fe4..379bd1d 100644 set(CMAKE_SYSTEM_NAME Linux) endif() -From ba7b7df51079f7962249fab1e606582cd6456d8b Mon Sep 17 00:00:00 2001 +From a6e8bc8e2784775522dce233f0f9dc0bde7fca44 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 16 Apr 2014 21:18:06 +0100 -Subject: [PATCH 32/48] [omxplayer] Don't propagate 3d flags based on supported +Subject: [PATCH 31/51] [omxplayer] Don't propagate 3d flags based on supported 3d modes --- @@ -1896,10 +1869,10 @@ index 212a89b..dd509ea 100644 unsigned int iDisplayHeight = height; -From 7bafdf76f00ce67de290b0ae8178a44b94b817a7 Mon Sep 17 00:00:00 2001 +From 46641c44cbf4832f8dc2e09de13c90ec263c7eb0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:01:51 +0100 -Subject: [PATCH 33/48] [graphics] Allow switching to a more suitable 3D +Subject: [PATCH 32/51] [graphics] Allow switching to a more suitable 3D resolution --- @@ -1985,10 +1958,10 @@ index a8fd03e..8501e58 100644 void ResetOverscan(RESOLUTION_INFO &resinfo); void ResetScreenParameters(RESOLUTION res); -From 5f3ce43d7a1b0692544f5f5224240d5732569f10 Mon Sep 17 00:00:00 2001 +From 55a4a727c1c8d0ca28deb1a8ca2c6ffa6a4eb0aa Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:38:55 +0100 -Subject: [PATCH 34/48] [3D] Support switching to 3D resolutions +Subject: [PATCH 33/51] [3D] Support switching to 3D resolutions Include matching 3D flags (SBS/TAB) in the score of a resolution to switch to, to enable switching to 3d modes. Also remove the old code that treated 3D modes differently when assigning a score. @@ -2070,10 +2043,10 @@ index bfafab7..84e6261 100644 return current; } -From b902e783ffd525d2e8f94eb4621416cf10fbe345 Mon Sep 17 00:00:00 2001 +From 568e84b69fc126735e0c9e298d3fa7d2eea0aae2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 00:05:07 +0100 -Subject: [PATCH 35/48] [graphics] Make pixel ratio for 3d modes consistent +Subject: [PATCH 34/51] [graphics] Make pixel ratio for 3d modes consistent Note: Use the stored stereo flags from lists of resolutions. Use current stereo mode for current resolution. @@ -2276,10 +2249,10 @@ index c80114e..80c05d2 100644 AddUniqueResolution(res2, resolutions); -From 583dfaeed63712cebba7528609d9e87009a9d926 Mon Sep 17 00:00:00 2001 +From 0c9da02efd32493162bbe0080ce08fc75d024ad2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 10 Mar 2015 17:05:18 +0000 -Subject: [PATCH 36/48] [players] Add settings option to enable MVC support +Subject: [PATCH 35/51] [players] Add settings option to enable MVC support --- addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++ @@ -2289,10 +2262,10 @@ Subject: [PATCH 36/48] [players] Add settings option to enable MVC support 4 files changed, 27 insertions(+) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index 2f4653c..c4c5851 100644 +index 6c3a220..f5b7c42 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16683,6 +16683,16 @@ msgctxt "#38052" +@@ -16680,6 +16680,16 @@ msgctxt "#38052" msgid "Remote button press release time (ms)" msgstr "" @@ -2360,10 +2333,10 @@ index e4f6d86..5d324f4 100644 case AV_CODEC_ID_MPEG4: // (role name) video_decoder.mpeg4 -From 63c023ab0d6578085900b73f40e33080b980855b Mon Sep 17 00:00:00 2001 +From 397a5d0b70abe0922387a0afd8beb4842a56e9b0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 14 Mar 2015 12:38:08 +0000 -Subject: [PATCH 37/48] [mmalrenderer] Switch to using transform flags for 3d +Subject: [PATCH 36/51] [mmalrenderer] Switch to using transform flags for 3d modes --- @@ -2377,10 +2350,10 @@ Subject: [PATCH 37/48] [mmalrenderer] Switch to using transform flags for 3d 7 files changed, 75 insertions(+), 130 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c4c5851..0f5710d 100644 +index f5b7c42..4848047 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16693,6 +16693,16 @@ msgctxt "#38111" +@@ -16690,6 +16690,16 @@ msgctxt "#38111" msgid "This option decodes frames for both eyes of MVC video. Disabling may improve performance if you don't require 3D" msgstr "" @@ -2742,10 +2715,11 @@ index 80c05d2..ae85484 100644 CLog::Log(LOGDEBUG, "EGL set resolution %dx%d -> %dx%d @ %.2f fps (%d,%d) flags:%x aspect:%.2f\n", m_width, m_height, dst_rect.width, dst_rect.height, res.fRefreshRate, GETFLAGS_GROUP(res.dwFlags), GETFLAGS_MODE(res.dwFlags), (int)res.dwFlags, res.fPixelRatio); -From abb123a443409eaae5e6e92c7b04a759b0934c48 Mon Sep 17 00:00:00 2001 + +From 180bad11da9d406158975f960198af9315170743 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 14 Apr 2015 20:51:14 +0100 -Subject: [PATCH 40/48] [gui] Also limit GUI updates when in non full-screen +Subject: [PATCH 39/51] [gui] Also limit GUI updates when in non full-screen video mode --- @@ -2753,10 +2727,10 @@ Subject: [PATCH 40/48] [gui] Also limit GUI updates when in non full-screen 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 28f625d..9b6d3dc 100644 +index f35871a..dd58116 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -2501,7 +2501,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) +@@ -2504,7 +2504,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) #if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) // This code reduces rendering fps of the GUI layer when playing videos in fullscreen mode // it makes only sense on architectures with multiple layers @@ -2765,7 +2739,7 @@ index 28f625d..9b6d3dc 100644 fps = CSettings::Get().GetInt("videoplayer.limitguiupdate"); #endif -@@ -2514,6 +2514,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) +@@ -2517,6 +2517,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI) { if (!m_skipGuiRender) g_windowManager.Process(CTimeUtils::GetFrameTime()); @@ -2775,10 +2749,10 @@ index 28f625d..9b6d3dc 100644 g_windowManager.FrameMove(); } -From 5c78fd84ab872c7811d1786942abfcdd810821d1 Mon Sep 17 00:00:00 2001 +From a00d53ea266d3513d4785ff730d4d3ed9aace2a4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 21 Apr 2015 14:32:07 +0100 -Subject: [PATCH 41/48] [mmalrenderer] Add sharpness control +Subject: [PATCH 40/51] [mmalrenderer] Add sharpness control --- addons/resource.language.en_gb/resources/strings.po | 2 +- @@ -2787,7 +2761,7 @@ Subject: [PATCH 41/48] [mmalrenderer] Add sharpness control 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index c1a9a98..cd6ef74 100644 +index 5ad526e..d252240 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -7503,7 +7503,7 @@ msgstr "" @@ -2850,17 +2824,17 @@ index 1404fb3..9bced7e 100644 CCriticalSection m_sharedSection; MMAL_COMPONENT_T *m_vout; -From d02c554b8bc5d23ce1a0352a2a727ca1e5f9180b Mon Sep 17 00:00:00 2001 +From 38eef3259f992329214af255923b6a2ce7364921 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 24 Apr 2015 13:49:51 +0100 -Subject: [PATCH 42/48] [dvdplayer] Add back required include +Subject: [PATCH 41/51] [dvdplayer] Add back required include --- xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 008cedf..ea6b7ab 100644 +index bdc3edb..2dad96c 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -33,6 +33,7 @@ @@ -2872,10 +2846,10 @@ index 008cedf..ea6b7ab 100644 #include "guilib/GraphicContext.h" #include -From 198f47bfbb6ac0f4669dc3aecb4ea21dd99d41ee Mon Sep 17 00:00:00 2001 +From ec33b18ad7a9fe49b5a9a10f053bd5b9d1ea4214 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 May 2015 23:58:06 +0100 -Subject: [PATCH 43/48] [screensaver] Leave GUI contents available for +Subject: [PATCH 42/51] [screensaver] Leave GUI contents available for screensaver --- @@ -2905,10 +2879,10 @@ index ba33908..17ea269 100644 // Add window to the history list (we must do this before we activate it, -From e34b80a46a5724e3fc16a8c3436483e2768b927d Mon Sep 17 00:00:00 2001 +From 5964fa6583235b7fce1d0c83ba4005380a7bf322 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 15 May 2015 14:04:11 +0100 -Subject: [PATCH 45/48] [omxplayer] Make unsupported when ac3transcode is +Subject: [PATCH 44/51] [omxplayer] Make unsupported when ac3transcode is enabled --- @@ -2933,10 +2907,10 @@ index be54f31..373e3f2 100644 { // find video stream -From 0ead5207ec4f59dd535f236b68d875d5f12aae67 Mon Sep 17 00:00:00 2001 +From ba0740cf8f5e163720e03516186522bbf16c25b0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 1 Jun 2015 14:14:43 +0100 -Subject: [PATCH 46/48] [omximage] Don't report failed decode of progressive +Subject: [PATCH 45/51] [omximage] Don't report failed decode of progressive jpegs as as error --- @@ -3022,10 +2996,10 @@ index a43a446..890ca88 100644 } -From bc752ac78749b96fac2103aeb34e03bb31769ed3 Mon Sep 17 00:00:00 2001 +From 33a38607218899acba79a30dc7b9163daaf99c65 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 May 2015 19:01:00 +0100 -Subject: [PATCH 47/48] [rbp] Allow settings option for timestamp preference +Subject: [PATCH 46/51] [rbp] Allow settings option for timestamp preference We currently have some files that play better with pts timestamps and some that play better with dts timestamps Provide a gui setting to allow users to adjust this behaviour until we have a better solution @@ -3037,10 +3011,10 @@ Provide a gui setting to allow users to adjust this behaviour until we have a be 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po -index 3a08680..8513978 100644 +index b76e723..3c18575 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po -@@ -16717,3 +16717,13 @@ msgstr "" +@@ -16714,3 +16714,13 @@ msgstr "" msgctxt "#38121" msgid "This option supports 8 channel DTS HD decoding, but may use more CPU. It is only available when DTS and DTS-HD audio passthrough is disabled" msgstr "" @@ -3099,10 +3073,10 @@ index adf9910..f9b9232 100644 if (pts == DVD_NOPTS_VALUE) pts = dts; -From 3bdfc7c45e7caa82598645b208ee0c2262fe0c89 Mon Sep 17 00:00:00 2001 +From 792a42205d18d6d389a36101c85594884eb9b34e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 6 Jun 2015 18:44:37 +0100 -Subject: [PATCH 48/48] [rbp] Ignore pts value when m_hints.ptsinvalid set +Subject: [PATCH 47/51] [rbp] Ignore pts value when m_hints.ptsinvalid set --- xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 +- @@ -3135,3 +3109,254 @@ index f9b9232..33aa88c 100644 if (pts == DVD_NOPTS_VALUE) pts = dts; + +From 493d0d8dfac375bedb0e80c08213bb45a714a4bb Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 10 Jun 2015 20:42:03 +0100 +Subject: [PATCH 49/51] [rbp] Fix zoom modes with stereoscopic videos + +--- + xbmc/cores/VideoRenderers/MMALRenderer.cpp | 12 ++++++++++-- + xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 12 ++++++++++-- + 2 files changed, 20 insertions(+), 4 deletions(-) + +diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp +index 9bf1aed..e420834 100644 +--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp ++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp +@@ -632,9 +632,17 @@ void CMMALRenderer::SetVideoRect(const CRect& InSrcRect, const CRect& InDestRect + CRect display(0, 0, CDisplaySettings::Get().GetResolutionInfo(res).iScreenWidth, CDisplaySettings::Get().GetResolutionInfo(res).iScreenHeight); + + if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_VERTICAL) +- DestRect.x2 *= 2.0f; ++ { ++ float width = DestRect.x2 - DestRect.x1; ++ DestRect.x1 *= 2.0f; ++ DestRect.x2 = DestRect.x1 + 2.0f * width; ++ } + else if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_HORIZONTAL) +- DestRect.y2 *= 2.0f; ++ { ++ float height = DestRect.y2 - DestRect.y1; ++ DestRect.y1 *= 2.0f; ++ DestRect.y2 = DestRect.y1 + 2.0f * height; ++ } + + if (gui != display) + { +diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +index 33aa88c..e008405 100644 +--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp ++++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +@@ -690,9 +690,17 @@ void OMXPlayerVideo::SetVideoRect(const CRect &InSrcRect, const CRect &InDestRec + CRect display(0, 0, CDisplaySettings::Get().GetResolutionInfo(res).iScreenWidth, CDisplaySettings::Get().GetResolutionInfo(res).iScreenHeight); + + if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_VERTICAL) +- DestRect.x2 *= 2.0f; ++ { ++ float width = DestRect.x2 - DestRect.x1; ++ DestRect.x1 *= 2.0f; ++ DestRect.x2 = DestRect.x1 + 2.0f * width; ++ } + else if (display_stereo_mode == RENDER_STEREO_MODE_SPLIT_HORIZONTAL) +- DestRect.y2 *= 2.0f; ++ { ++ float height = DestRect.y2 - DestRect.y1; ++ DestRect.y1 *= 2.0f; ++ DestRect.y2 = DestRect.y1 + 2.0f * height; ++ } + + if (gui != display) + { + +From 8312d9234bddd5878f60a7a297e16e61d2cab255 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Sat, 6 Jun 2015 18:43:57 +0100 +Subject: [PATCH 50/51] ffmpeg: Automatic switch to software decode for GMC + with more than one warp point + +--- + ...Signal-unsupported-GMC-with-more-than-one.patch | 48 ++++++++++++++++++++++ + tools/depends/target/ffmpeg/Makefile | 4 +- + xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 + + xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h | 2 + + .../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 2 +- + xbmc/cores/dvdplayer/DVDStreamInfo.cpp | 3 ++ + xbmc/cores/dvdplayer/DVDStreamInfo.h | 1 + + xbmc/cores/omxplayer/OMXHelper.cpp | 4 +- + 8 files changed, 63 insertions(+), 3 deletions(-) + create mode 100644 tools/depends/target/ffmpeg/0001-mpeg4video-Signal-unsupported-GMC-with-more-than-one.patch + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp +index f7b0b25..3e97f1d 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp +@@ -516,6 +516,8 @@ bool CMMALVideo::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options) + // we always qualify even if DVDFactoryCodec does this too. + if (!CSettings::Get().GetBool("videoplayer.usemmal") || hints.software) + return false; ++ if (hints.workaround_bugs & FF_BUG_GMC_UNSUPPORTED) ++ return false; + + m_hints = hints; + m_vout_input_pool = (MMAL_POOL_T *)options.m_opaque_pointer; +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h +index fca164d..d450413 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h +@@ -162,6 +162,7 @@ class CDemuxStreamVideo : public CDemuxStream + type = STREAM_VIDEO; + iOrientation = 0; + iBitsPerPixel = 0; ++ workaround_bugs = 0; + } + + virtual ~CDemuxStreamVideo() {} +@@ -178,6 +179,7 @@ class CDemuxStreamVideo : public CDemuxStream + int iOrientation; // orientation of the video in degress counter clockwise + int iBitsPerPixel; + std::string stereo_mode; // expected stereo mode ++ int workaround_bugs; // info for decoder + }; + + class CDemuxStreamAudio : public CDemuxStream +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +index 5feac29..f7d6dc8 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +@@ -1199,7 +1199,7 @@ CDemuxStream* CDVDDemuxFFmpeg::AddStream(int iId) + if (!stereoMode.empty()) + st->stereo_mode = stereoMode; + +- ++ st->workaround_bugs = pStream->codec->workaround_bugs; + if ( m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD) ) + { + if (pStream->codec->codec_id == AV_CODEC_ID_PROBE) +diff --git a/xbmc/cores/dvdplayer/DVDStreamInfo.cpp b/xbmc/cores/dvdplayer/DVDStreamInfo.cpp +index fa0defa..37c2d16 100644 +--- a/xbmc/cores/dvdplayer/DVDStreamInfo.cpp ++++ b/xbmc/cores/dvdplayer/DVDStreamInfo.cpp +@@ -73,6 +73,7 @@ void CDVDStreamInfo::Clear() + bitspersample = 0; + + orientation = 0; ++ workaround_bugs = 0; + } + + bool CDVDStreamInfo::Equal(const CDVDStreamInfo& right, bool withextradata) +@@ -174,6 +175,7 @@ void CDVDStreamInfo::Assign(const CDVDStreamInfo& right, bool withextradata) + vfr = right.vfr; + software = right.software; + stereo_mode = right.stereo_mode; ++ workaround_bugs = right.workaround_bugs; + + // AUDIO + channels = right.channels; +@@ -231,6 +233,7 @@ void CDVDStreamInfo::Assign(const CDemuxStream& right, bool withextradata) + bitsperpixel = stream->iBitsPerPixel; + pid = stream->iPhysicalId; + stereo_mode = stream->stereo_mode; ++ workaround_bugs = stream->workaround_bugs; + } + else if( right.type == STREAM_SUBTITLE ) + { +diff --git a/xbmc/cores/dvdplayer/DVDStreamInfo.h b/xbmc/cores/dvdplayer/DVDStreamInfo.h +index c0e22a2..3849993 100644 +--- a/xbmc/cores/dvdplayer/DVDStreamInfo.h ++++ b/xbmc/cores/dvdplayer/DVDStreamInfo.h +@@ -73,6 +73,7 @@ class CDVDStreamInfo + int bitsperpixel; + int pid; + std::string stereo_mode; // stereoscopic 3d mode ++ int workaround_bugs; // info for decoder + + // AUDIO + int channels; +diff --git a/xbmc/cores/omxplayer/OMXHelper.cpp b/xbmc/cores/omxplayer/OMXHelper.cpp +index 373e3f2..093388c 100644 +--- a/xbmc/cores/omxplayer/OMXHelper.cpp ++++ b/xbmc/cores/omxplayer/OMXHelper.cpp +@@ -77,7 +77,9 @@ bool OMXPlayerUnsuitable(bool m_HasVideo, bool m_HasAudio, CDVDDemux* m_pDemuxer + CDVDStreamInfo hint(*stream, true); + + bool supported = false; +- if ((hint.codec == AV_CODEC_ID_MPEG1VIDEO || hint.codec == AV_CODEC_ID_MPEG2VIDEO) && g_RBP.GetCodecMpg2()) ++ if (hint.workaround_bugs & FF_BUG_GMC_UNSUPPORTED) ++ ; ++ else if ((hint.codec == AV_CODEC_ID_MPEG1VIDEO || hint.codec == AV_CODEC_ID_MPEG2VIDEO) && g_RBP.GetCodecMpg2()) + supported = true; + else if ((hint.codec == AV_CODEC_ID_VC1 || hint.codec == AV_CODEC_ID_WMV3) && g_RBP.GetCodecWvc1()) + supported = true; + +From 1798b2059a7dcc34b4dcecfec56736225d2ac918 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 3 Jun 2015 23:13:51 +0100 +Subject: [PATCH 51/51] [rpi] Always add desktop resolution to supported list + +There was an assumption that the desktop resolution would be in the probed list, but that is sometimes not the case. +We don't add interlaced resolutions to list, but they can be the preferred resolution read from edid. See: +http://openelec.tv/forum/124-raspberry-pi/77074-forcing-interlaced-output + +Also hotplug changes causing an edid reread may cause the supported modes to change (e.g. powering on receiver) +and it is possible the previous preferred mode is no longer there + +So ensure that desktop resolution is always added to list. Also handle the case where desktop resolution is invalid on launch +(e.g. hdmi output powered off) +--- + xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp +index ae85484..a4b8a81 100644 +--- a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp ++++ b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp +@@ -187,7 +187,7 @@ int CEGLNativeTypeRaspberryPI::FindMatchingResolution(const RESOLUTION_INFO &res + for (int i = 0; i < (int)resolutions.size(); i++) + { + if(resolutions[i].iScreenWidth == res.iScreenWidth && resolutions[i].iScreenHeight == res.iScreenHeight && resolutions[i].fRefreshRate == res.fRefreshRate && +- (resolutions[i].dwFlags & (D3DPRESENTFLAG_MODE3DSBS|D3DPRESENTFLAG_MODE3DTB)) == (res.dwFlags & (D3DPRESENTFLAG_MODE3DSBS|D3DPRESENTFLAG_MODE3DTB))) ++ (resolutions[i].dwFlags & D3DPRESENTFLAG_MODEMASK) == (res.dwFlags & D3DPRESENTFLAG_MODEMASK)) + { + return i; + } +@@ -203,8 +203,7 @@ int CEGLNativeTypeRaspberryPI::AddUniqueResolution(RESOLUTION_INFO &res, std::ve + int i = FindMatchingResolution(res, resolutions); + if (i>=0) + { // don't replace a progressive resolution with an interlaced one of same resolution +- if (!(res.dwFlags & D3DPRESENTFLAG_INTERLACED)) +- resolutions[i] = res; ++ resolutions[i] = res; + } + else + { +@@ -516,7 +515,7 @@ bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &r + vc_tv_hdmi_get_property(&property); + m_desktopRes.fRefreshRate = property.param1 == HDMI_PIXEL_CLOCK_TYPE_NTSC ? tv_state.display.hdmi.frame_rate * (1000.0f/1001.0f) : tv_state.display.hdmi.frame_rate; + } +- else // sdtv ++ else if ((tv_state.state & ( VC_SDTV_NTSC | VC_SDTV_PAL )) != 0) // sdtv + { + m_desktopRes.iScreen = 0; + m_desktopRes.bFullScreen = true; +@@ -541,7 +540,6 @@ bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &r + GetSupportedModes(HDMI_RES_GROUP_CEA, resolutions); + GetSupportedModes(HDMI_RES_GROUP_DMT, resolutions); + +- if(resolutions.size() == 0) + { + AddUniqueResolution(m_desktopRes, resolutions); + CLog::Log(LOGDEBUG, "EGL probe resolution %s:%x\n", m_desktopRes.strMode.c_str(), m_desktopRes.dwFlags); +@@ -636,6 +634,12 @@ void CEGLNativeTypeRaspberryPI::GetSupportedModes(HDMI_RES_GROUP_T group, std::v + res.fPixelRatio = get_display_aspect_ratio((HDMI_ASPECT_T)tv->aspect_ratio) / ((float)res.iScreenWidth / (float)res.iScreenHeight); + res.iSubtitles = (int)(0.965 * res.iHeight); + ++ if (!m_desktopRes.dwFlags && prefer_group == group && prefer_mode == tv->code) ++ m_desktopRes = res; ++ ++ if (res.dwFlags & D3DPRESENTFLAG_INTERLACED) ++ continue; ++ + AddUniqueResolution(res, resolutions); + CLog::Log(LOGDEBUG, "EGL mode %d: %s (%.2f) %s%s:%x\n", i, res.strMode.c_str(), res.fPixelRatio, + tv->native ? "N" : "", tv->scan_mode ? "I" : "", tv->code); diff --git a/scripts/image b/scripts/image index f2960b0875..11e3d13af6 100755 --- a/scripts/image +++ b/scripts/image @@ -415,9 +415,15 @@ fi # create release dir mkdir -p $RELEASE_DIR/${DISTRONAME}_${PROJECT} - cp -PR $ROOT/config/$1/* $RELEASE_DIR/${DISTRONAME}_${PROJECT} cp -PR $DISTRO_DIR/$DISTRO/${DISTRONAME}.png $RELEASE_DIR/${DISTRONAME}_${PROJECT}/${DISTRONAME}_${PROJECT}.png - + cp -PR $ROOT/config/noobs/os.json $RELEASE_DIR/${DISTRONAME}_${PROJECT} + cp -PR $ROOT/config/noobs/partition_setup.sh $RELEASE_DIR/${DISTRONAME}_${PROJECT} + cp -PR $ROOT/config/noobs/partitions.json $RELEASE_DIR/${DISTRONAME}_${PROJECT} + if [ -d $DISTRO_DIR/$DISTRO/noobs/marketing ]; then + tar cf $RELEASE_DIR/${DISTRONAME}_${PROJECT}/marketing.tar -C $DISTRO_DIR/$DISTRO/noobs/marketing . + else + tar cf $RELEASE_DIR/${DISTRONAME}_${PROJECT}/marketing.tar -C $ROOT/config/noobs/marketing . + fi cp $ROOT/README* $RELEASE_DIR/${DISTRONAME}_${PROJECT} cp $ROOT/CHANGELOG $RELEASE_DIR/${DISTRONAME}_${PROJECT}/release_notes.txt