diff --git a/projects/RPi/patches/kodi/kodi-001-newclock4.patch b/projects/RPi/patches/kodi/kodi-001-newclock4.patch index 21ed81aa70..692a899a73 100644 --- a/projects/RPi/patches/kodi/kodi-001-newclock4.patch +++ b/projects/RPi/patches/kodi/kodi-001-newclock4.patch @@ -1,7 +1,7 @@ -From 9478d6c8350dec4994147f3c0584394ef9992ffe Mon Sep 17 00:00:00 2001 +From 9b0b0e301d4e30f3415693122e30b13cc0245cf4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 18:19:32 +0100 -Subject: [PATCH 01/93] [rbp/omxplayer] When opening a stream don't try to +Subject: [PATCH 01/95] [rbp/omxplayer] When opening a stream don't try to update gui so often --- @@ -25,10 +25,10 @@ index e7cfcdd..20b99ad 100644 g_windowManager.ProcessRenderLoop(false); if (allowCancel && dialog->IsCanceled()) -From c38bc7e99058b8afa0c32d54bd4a8b87332bf5c8 Mon Sep 17 00:00:00 2001 +From 0a61d8487f4ca0f84173ba600d72e8c26add02fb Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 29 Apr 2014 15:23:22 +0100 -Subject: [PATCH 02/93] [ffmpeg] Speed up wtv index creation +Subject: [PATCH 02/95] [ffmpeg] Speed up wtv index creation The index creation is O(N^2) with number of entries (typically thousands). On a Pi this can take more than 60 seconds to execute for a recording of a few hours. @@ -114,10 +114,10 @@ index 0000000..4ac5636 + } + } -From cbfeb51aed12b340d8d7dfdfaf89e132032c5045 Mon Sep 17 00:00:00 2001 +From 4a4b428720a042f8022172319fc6bfdf696665b2 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:49:17 +1300 -Subject: [PATCH 03/93] adds GetTvShowSeasons +Subject: [PATCH 03/95] adds GetTvShowSeasons --- xbmc/video/VideoDatabase.cpp | 30 ++++++++++++++++++++++++------ @@ -125,7 +125,7 @@ Subject: [PATCH 03/93] adds GetTvShowSeasons 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/xbmc/video/VideoDatabase.cpp b/xbmc/video/VideoDatabase.cpp -index 056e9eb..c21ece2 100644 +index e07a374..8c9273c 100644 --- a/xbmc/video/VideoDatabase.cpp +++ b/xbmc/video/VideoDatabase.cpp @@ -4211,7 +4211,7 @@ bool CVideoDatabase::RemoveArtForItem(int mediaId, const MediaType &mediaType, c @@ -193,10 +193,10 @@ index 78259ed..cbb26b7 100644 bool GetArtTypes(const MediaType &mediaType, std::vector &artTypes); -From 276584b6872d9c247e548da95718f7497667b3d1 Mon Sep 17 00:00:00 2001 +From 4d40d93e422db2f6b3b9b626ac118b406b3e29e8 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:50:10 +1300 -Subject: [PATCH 04/93] move AddSeason() public. +Subject: [PATCH 04/95] move AddSeason() public. --- xbmc/video/VideoDatabase.h | 2 +- @@ -223,10 +223,10 @@ index cbb26b7..1a79c00 100644 /*! \brief Adds a path to the tvshow link table. \param idShow the id of the show. -From c771e8d01977279201e9ed58e1793f3b5924ce55 Mon Sep 17 00:00:00 2001 +From 095e502d8327e7590115781dcf04c397083111a9 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:48:24 +1300 -Subject: [PATCH 05/93] adds GetArt function to (video) scraper, allowing art +Subject: [PATCH 05/95] adds GetArt function to (video) scraper, allowing art to be fetched given the video identifier. --- @@ -341,10 +341,10 @@ index 22ac229..75bc341 100644 enum LOOKUP_STATE { DO_NOTHING = 0, FIND_MOVIE = 1, -From db42a00769832c65e30dc0a60e9bac57ebcb91c5 Mon Sep 17 00:00:00 2001 +From bef0bd652b075a79ac2a0d84b9f368ed18ed5d94 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:53:14 +1300 -Subject: [PATCH 06/93] refresh season art if a new season is found that isn't +Subject: [PATCH 06/95] refresh season art if a new season is found that isn't recorded in the database yet. Fixes #14339 --- @@ -448,10 +448,10 @@ index 92883e7..47d5ed4 100644 bool ProcessItemByVideoInfoTag(const CFileItem *item, EPISODELIST &episodeList); -From 9d5752d8307fc85c74430294f21ca7a0aff3b428 Mon Sep 17 00:00:00 2001 +From 31b42c3c4f60673fab2839e9286d5e5173f232b9 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:53:34 +1300 -Subject: [PATCH 07/93] REMOVEME: updated thetvdb.com scraper to support art +Subject: [PATCH 07/95] REMOVEME: updated thetvdb.com scraper to support art updates --- @@ -559,20 +559,20 @@ index f27e4fc..bdf329f 100644 -From 05f1b6e9eb818c9e2d060dec48e2858f712a4343 Mon Sep 17 00:00:00 2001 +From a78f311f931748c40986c8855a2244420633b903 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 2 Aug 2014 17:48:04 +0100 -Subject: [PATCH 08/93] [omx] Report decoded image name +Subject: [PATCH 08/95] [omx] Report decoded image name --- xbmc/cores/omxplayer/OMXImage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/xbmc/cores/omxplayer/OMXImage.cpp b/xbmc/cores/omxplayer/OMXImage.cpp -index 3fbea3b..57f69c5 100644 +index aa413b9..22ec3f0 100644 --- a/xbmc/cores/omxplayer/OMXImage.cpp +++ b/xbmc/cores/omxplayer/OMXImage.cpp -@@ -325,6 +325,7 @@ bool COMXImage::DecodeJpegToTexture(COMXImageFile *file, unsigned int width, uns +@@ -326,6 +326,7 @@ bool COMXImage::DecodeJpegToTexture(COMXImageFile *file, unsigned int width, uns { ret = true; *userdata = tex; @@ -581,10 +581,10 @@ index 3fbea3b..57f69c5 100644 else { -From 2b86daa55de2c3b4886b5fc07bba5f870c33fbe3 Mon Sep 17 00:00:00 2001 +From f990bf5b25aa77a9f621763a62213118575e00b0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 14 Dec 2013 16:55:05 +0000 -Subject: [PATCH 09/93] logging: Add microsecond timer to log messages +Subject: [PATCH 09/95] logging: Add microsecond timer to log messages --- xbmc/utils/log.cpp | 17 +++++++++++++++-- @@ -637,10 +637,11 @@ index 3443f12..31c4a99 100644 levelNames[logLevel]) + strData; -From 029cc8c20cea7e28cd60d9ee189a5457a8fe0a4e Mon Sep 17 00:00:00 2001 + +From 0d6d472a537804ad8f50e91f309173c86ba4bc3e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 8 Mar 2014 15:36:06 +0000 -Subject: [PATCH 12/93] [hifiberry] Hack: force it to be recognised as IEC958 +Subject: [PATCH 12/95] [hifiberry] Hack: force it to be recognised as IEC958 capable to enable passthrough options --- @@ -663,10 +664,10 @@ index a464b4b..7eba389 100644 info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI") { -From c717063d13a2674ef9307daf75b31c54b39f70ec Mon Sep 17 00:00:00 2001 +From 9c73311e69e1009bc1da2ea96f6a707e5a95b4a9 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 11 Dec 2013 17:21:54 +0000 -Subject: [PATCH 13/93] Move the reference-counting of Begin and End calls from +Subject: [PATCH 13/95] Move the reference-counting of Begin and End calls from DX and GL source files into GUIFontTTF.cpp. --- @@ -1054,10 +1055,10 @@ index c0bb53a..735fb3a 100644 protected: virtual CBaseTexture* ReallocTexture(unsigned int& newHeight); -From 846c1b3b8d5d9752b4d16d5bd4f8b7d82faec5cc Mon Sep 17 00:00:00 2001 +From 72aacc052e7da47323334a812c795bfc46b79866 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 11 Dec 2013 18:47:54 +0000 -Subject: [PATCH 14/93] Convert CGUIFontTTFBase::m_vertex to be managed as a +Subject: [PATCH 14/95] Convert CGUIFontTTFBase::m_vertex to be managed as a std::vector. Also retired CGUIFontTTFBase::m_vertex_count and @@ -1237,10 +1238,10 @@ index 97853fd..b76c6a5 100644 *vertices++ = m_vertex[i]; *vertices++ = m_vertex[i+1]; -From 43162d4f2cea4a8663a0b719bd40dcff62eed9ff Mon Sep 17 00:00:00 2001 +From 34e89396340fbd54b8f60e77a33e41d133e255f1 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 16 Dec 2013 18:58:12 +0000 -Subject: [PATCH 15/93] CGUIFontTTFBase::RenderCharacter can now append to +Subject: [PATCH 15/95] CGUIFontTTFBase::RenderCharacter can now append to arbitrary vectors of vertices rather than only CGUIFontTTFBase::m_vertex --- @@ -1313,10 +1314,10 @@ index 5675725..a5d44f4 100644 virtual CBaseTexture* ReallocTexture(unsigned int& newHeight) = 0; -From f7049ef39efd99b24616d1ff3184e30e5455a90b Mon Sep 17 00:00:00 2001 +From 18e3f481eaed05aa4bdf879e529878f2049d59cc Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 17:18:38 +0000 -Subject: [PATCH 16/93] Add a cache of font glyph bounding box vertices. +Subject: [PATCH 16/95] Add a cache of font glyph bounding box vertices. This is implemented as a template because ultimately we will key on different parameters and store values of different types, depending upon whether we @@ -1339,7 +1340,7 @@ applicable transformation matrices permit the use of hardware clipping. create mode 100644 xbmc/guilib/GUIFontCache.h diff --git a/Kodi.xcodeproj/project.pbxproj b/Kodi.xcodeproj/project.pbxproj -index 71b4f2e..5b5d2c7 100644 +index bf49f64..35ef214 100644 --- a/Kodi.xcodeproj/project.pbxproj +++ b/Kodi.xcodeproj/project.pbxproj @@ -168,6 +168,9 @@ @@ -1352,7 +1353,7 @@ index 71b4f2e..5b5d2c7 100644 32C631281423A90F00F18420 /* JpegIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32C631261423A90F00F18420 /* JpegIO.cpp */; }; 36A9443D15821E2800727135 /* DatabaseUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36A9443B15821E2800727135 /* DatabaseUtils.cpp */; }; 36A9444115821E7C00727135 /* SortUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 36A9443F15821E7C00727135 /* SortUtils.cpp */; }; -@@ -4018,6 +4021,8 @@ +@@ -4021,6 +4024,8 @@ 1DAFDB7B16DFDCA7007F8C68 /* PeripheralBusCEC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PeripheralBusCEC.h; sourceTree = ""; }; 1DE0443315828F4B005DDB4D /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Exception.cpp; path = commons/Exception.cpp; sourceTree = ""; }; 1DE0443415828F4B005DDB4D /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Exception.h; path = commons/Exception.h; sourceTree = ""; }; @@ -1361,7 +1362,7 @@ index 71b4f2e..5b5d2c7 100644 32C631261423A90F00F18420 /* JpegIO.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JpegIO.cpp; sourceTree = ""; }; 32C631271423A90F00F18420 /* JpegIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JpegIO.h; sourceTree = ""; }; 36A9443B15821E2800727135 /* DatabaseUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DatabaseUtils.cpp; sourceTree = ""; }; -@@ -6532,6 +6537,8 @@ +@@ -6537,6 +6542,8 @@ 18B7C7101294222D009E7A26 /* GUIFixedListContainer.h */, 18B7C76B1294222E009E7A26 /* GUIFont.cpp */, 18B7C7111294222D009E7A26 /* GUIFont.h */, @@ -1370,7 +1371,7 @@ index 71b4f2e..5b5d2c7 100644 18B7C76C1294222E009E7A26 /* GUIFontManager.cpp */, 18B7C7121294222D009E7A26 /* GUIFontManager.h */, 18B7C76D1294222E009E7A26 /* GUIFontTTF.cpp */, -@@ -11030,6 +11037,7 @@ +@@ -11045,6 +11052,7 @@ 7C5608C70F1754930056433A /* ExternalPlayer.cpp in Sources */, F584E12E0F257C5100DB26A5 /* HTTPDirectory.cpp in Sources */, F54C51D20F1E783200D46E3C /* GUIDialogKaraokeSongSelector.cpp in Sources */, @@ -1378,7 +1379,7 @@ index 71b4f2e..5b5d2c7 100644 F54C51D50F1E784800D46E3C /* karaokelyricscdg.cpp in Sources */, F54C51D80F1E785700D46E3C /* karaokelyrics.cpp in Sources */, F54C51E50F1E787700D46E3C /* karaokelyricstextkar.cpp in Sources */, -@@ -12704,6 +12712,7 @@ +@@ -12721,6 +12729,7 @@ DFF0F45B17528350002DA3A4 /* Control.cpp in Sources */, DFF0F45C17528350002DA3A4 /* Dialog.cpp in Sources */, DFF0F45D17528350002DA3A4 /* File.cpp in Sources */, @@ -1386,7 +1387,7 @@ index 71b4f2e..5b5d2c7 100644 DFF0F45E17528350002DA3A4 /* InfoTagMusic.cpp in Sources */, DFF0F45F17528350002DA3A4 /* InfoTagVideo.cpp in Sources */, DFF0F46017528350002DA3A4 /* Keyboard.cpp in Sources */, -@@ -13500,6 +13509,7 @@ +@@ -13517,6 +13526,7 @@ E499131D174E5DAD00741B6D /* GUIVisualisationControl.cpp in Sources */, E499131E174E5DAD00741B6D /* GUIWindow.cpp in Sources */, E499131F174E5DAD00741B6D /* GUIWindowManager.cpp in Sources */, @@ -1395,7 +1396,7 @@ index 71b4f2e..5b5d2c7 100644 E4991321174E5DAD00741B6D /* imagefactory.cpp in Sources */, E4991322174E5DAD00741B6D /* IWindowManagerCallback.cpp in Sources */, diff --git a/project/VS2010Express/XBMC.vcxproj b/project/VS2010Express/XBMC.vcxproj -index ed5ad2a..bc1db7e 100644 +index c29fb2f..78e83c4 100644 --- a/project/VS2010Express/XBMC.vcxproj +++ b/project/VS2010Express/XBMC.vcxproj @@ -427,6 +427,7 @@ @@ -1406,7 +1407,7 @@ index ed5ad2a..bc1db7e 100644 -@@ -1752,6 +1753,7 @@ +@@ -1753,6 +1754,7 @@ @@ -1415,10 +1416,10 @@ index ed5ad2a..bc1db7e 100644 diff --git a/project/VS2010Express/XBMC.vcxproj.filters b/project/VS2010Express/XBMC.vcxproj.filters -index ca16ec8..a79aec4 100644 +index dbb9b9d..64f4d76 100644 --- a/project/VS2010Express/XBMC.vcxproj.filters +++ b/project/VS2010Express/XBMC.vcxproj.filters -@@ -991,6 +991,9 @@ +@@ -994,6 +994,9 @@ guilib @@ -1428,7 +1429,7 @@ index ca16ec8..a79aec4 100644 guilib -@@ -3891,6 +3894,9 @@ +@@ -3897,6 +3900,9 @@ guilib @@ -2076,10 +2077,10 @@ index f351c99..9036ba9 100644 + return !operator==(a, b); +} -From 7d313fc00055314b8c081fd1967cb0e03d391005 Mon Sep 17 00:00:00 2001 +From c039d79de4b2188b5d0ceae4f3aff5fac0ed7dc5 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 23 Jan 2014 22:24:17 +0000 -Subject: [PATCH 17/93] Lay the groundwork for hardware clipping. +Subject: [PATCH 17/95] Lay the groundwork for hardware clipping. For glScissor() to replace CGraphicContext::ClipRect, a necessary condition is that no shear or rotation is introduced between the coordinate systems @@ -2341,10 +2342,10 @@ index 98e398a..81ee49e 100644 virtual void ResetScissors(); -From 3df2170637df9887f926d4e1d9863711d38d7e6f Mon Sep 17 00:00:00 2001 +From 6ec097a843e1dc5df726647884d07410ffd41096 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 23 Jan 2014 16:42:22 +0000 -Subject: [PATCH 18/93] Increase font cache hit rate by keying on the +Subject: [PATCH 18/95] Increase font cache hit rate by keying on the fractional part of m_originX and m_originY *after* they have been through the graphics context's transformation matrix, plus the scale/rotation elements of the matrix, rather than the origin in the original frame of reference plus @@ -2545,10 +2546,10 @@ index 3b93672..258dffa 100644 private: virtual bool FirstBegin() = 0; -From eadc2e4307f98ef4c5ac46deb5adddec61a7b794 Mon Sep 17 00:00:00 2001 +From c2188a12cbccfc838edf89afe74eea81b9080e7f Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 8 Jan 2014 12:16:33 +0000 -Subject: [PATCH 19/93] Rewrite of scrolling text code. +Subject: [PATCH 19/95] Rewrite of scrolling text code. No longer shuffles the string round to minimise the number of characters before the clipping rectangle; this doesn't save much on rendering time but @@ -2864,10 +2865,10 @@ index 2cda726..fbc579e 100644 private: void Process(); -From f1aa72cc304e7e3a33a3496684ba310ce5e568a3 Mon Sep 17 00:00:00 2001 +From 7c7c7109dc9ceadeb91e8b458b6f9f761d78dc64 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 27 Jan 2014 23:21:10 +0000 -Subject: [PATCH 20/93] Move the application of the translation offsets into +Subject: [PATCH 20/95] Move the application of the translation offsets into the GLES code. Still all pure software at this stage. Main change is in the data types at @@ -3061,10 +3062,10 @@ index 9935ea4..18c9358 100644 memset(newTexture->GetPixels(), 0, m_textureHeight * newTexture->GetPitch()); if (m_texture) -From 68d1c6e18a31d8755ca9fe84be4ed23cb0268b85 Mon Sep 17 00:00:00 2001 +From 3e649887fb0914bec03a52ee7a49ad557f79a552 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 15:28:06 +0000 -Subject: [PATCH 21/93] Rather than applying the translation offsets to the +Subject: [PATCH 21/95] Rather than applying the translation offsets to the vertices, now applies them to the model view matrix from the top of the matrix stack and pushes it over to OpenGL. The vertices themselves are still all held client-side. @@ -3208,10 +3209,10 @@ index 81ee49e..d2f9cd1 100644 protected: virtual void SetVSyncImpl(bool enable) = 0; -From 9b739d0b0ba93fa5b7b2594f476017617f4755cd Mon Sep 17 00:00:00 2001 +From dc8782d396b8967c80828a1c10b21c868ad549bc Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 29 Jan 2014 13:21:19 +0000 -Subject: [PATCH 22/93] Enable hardware clipping. +Subject: [PATCH 22/95] Enable hardware clipping. --- xbmc/guilib/GUIFontTTF.cpp | 4 ++-- @@ -3283,10 +3284,10 @@ index ea08bf4..b63e337 100644 glUniformMatrix4fv(modelLoc, 1, GL_FALSE, g_matrices.GetMatrix(MM_MODELVIEW)); } -From f2282dad8ab5266f89259402dd106bff8e6af50c Mon Sep 17 00:00:00 2001 +From a67c38e9fbd94eb32dfb92182ae4a7eb928dd59c Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 15:32:51 +0000 -Subject: [PATCH 23/93] Move the vertex data across to a vertex buffer object +Subject: [PATCH 23/95] Move the vertex data across to a vertex buffer object just prior to drawing. --- @@ -3337,10 +3338,10 @@ index b63e337..b00055d 100644 // Disable the attributes used by this shader -From c807a180836274264215f82b59c357f68930116c Mon Sep 17 00:00:00 2001 +From ff0fe6936d81a7901252b84f5262466d096c0c82 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 16:04:04 +0000 -Subject: [PATCH 24/93] Move vertex data into an OpenGL VBO when the font cache +Subject: [PATCH 24/95] Move vertex data into an OpenGL VBO when the font cache entry is populated. The font cache now stores the "name" (handle) of the VBO, rather than a vector @@ -3613,234 +3614,10 @@ index 735fb3a..6102c90 100644 protected: virtual CBaseTexture* ReallocTexture(unsigned int& newHeight); -From b57a210d83e2bdaf3253bcabd1dec20a1c24499a Mon Sep 17 00:00:00 2001 -From: Ben Avison -Date: Thu, 16 Jan 2014 16:29:42 +0000 -Subject: [PATCH 25/93] Switch from glDrawArrays() to glDrawElements(). - -This involves setting up a static VBO containing the indexes necessary to -convert from quads to triangles on the fly in the GPU. ---- - xbmc/guilib/GUIFontTTFGL.cpp | 72 +++++++++++++++++++++++++------------ - xbmc/guilib/GUIFontTTFGL.h | 11 +++++- - xbmc/windowing/egl/WinSystemEGL.cpp | 17 +++++++++ - 3 files changed, 77 insertions(+), 23 deletions(-) - -diff --git a/xbmc/guilib/GUIFontTTFGL.cpp b/xbmc/guilib/GUIFontTTFGL.cpp -index aabb9a6..812662c 100644 ---- a/xbmc/guilib/GUIFontTTFGL.cpp -+++ b/xbmc/guilib/GUIFontTTFGL.cpp -@@ -207,6 +207,10 @@ void CGUIFontTTFGL::LastEnd() - if (m_vertexTrans.size() > 0) - { - // Deal with the vertices that can be hardware clipped and therefore translated -+ -+ // Bind our pre-calculated array to GL_ELEMENT_ARRAY_BUFFER -+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_elementArrayHandle); -+ - for (size_t i = 0; i < m_vertexTrans.size(); i++) - { - // Apply the clip rectangle -@@ -222,14 +226,21 @@ void CGUIFontTTFGL::LastEnd() - // Bind the buffer to the OpenGL context's GL_ARRAY_BUFFER binding point - glBindBuffer(GL_ARRAY_BUFFER, (GLuint) m_vertexTrans[i].vertexBuffer->bufferHandle); - -- // Set up the offsets of the various vertex attributes within the buffer -- // object bound to GL_ARRAY_BUFFER -- glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, sizeof(SVertex), (GLvoid *) offsetof(SVertex, x)); -- glVertexAttribPointer(colLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(SVertex), (GLvoid *) offsetof(SVertex, r)); -- glVertexAttribPointer(tex0Loc, 2, GL_FLOAT, GL_FALSE, sizeof(SVertex), (GLvoid *) offsetof(SVertex, u)); -+ // Do the actual drawing operation, split into groups of characters no -+ // larger than the pre-determined size of the element array -+ for (size_t character = 0; m_vertexTrans[i].vertexBuffer->size > character; character += ELEMENT_ARRAY_MAX_CHAR_INDEX) -+ { -+ size_t count = m_vertexTrans[i].vertexBuffer->size - character; -+ count = std::min(count, ELEMENT_ARRAY_MAX_CHAR_INDEX); -+ -+ // Set up the offsets of the various vertex attributes within the buffer -+ // object bound to GL_ARRAY_BUFFER -+ glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, sizeof(SVertex), (GLvoid *) (character*sizeof(SVertex)*4 + offsetof(SVertex, x))); -+ glVertexAttribPointer(colLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(SVertex), (GLvoid *) (character*sizeof(SVertex)*4 + offsetof(SVertex, r))); -+ glVertexAttribPointer(tex0Loc, 2, GL_FLOAT, GL_FALSE, sizeof(SVertex), (GLvoid *) (character*sizeof(SVertex)*4 + offsetof(SVertex, u))); - -- // Do the actual drawing operation, using the full set of vertices in the buffer -- glDrawArrays(GL_TRIANGLES, 0, 6 * m_vertexTrans[i].vertexBuffer->size); -+ glDrawElements(GL_TRIANGLES, 6 * count, GL_UNSIGNED_SHORT, 0); -+ } - - g_matrices.PopMatrix(); - } -@@ -237,8 +248,9 @@ void CGUIFontTTFGL::LastEnd() - g_Windowing.ResetScissors(); - // Restore the original model view matrix - glUniformMatrix4fv(modelLoc, 1, GL_FALSE, g_matrices.GetMatrix(MM_MODELVIEW)); -- // Unbind GL_ARRAY_BUFFER -+ // Unbind GL_ARRAY_BUFFER and GL_ELEMENT_ARRAY_BUFFER - glBindBuffer(GL_ARRAY_BUFFER, 0); -+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - // Disable the attributes used by this shader -@@ -253,19 +265,6 @@ void CGUIFontTTFGL::LastEnd() - #if HAS_GLES - CVertexBuffer CGUIFontTTFGL::CreateVertexBuffer(const std::vector &vertices) const - { -- // Rearrange the vertices to describe triangles -- std::vector triangleVertices; -- triangleVertices.reserve(vertices.size() * 6 / 4); -- for (size_t i = 0; i < vertices.size(); i += 4) -- { -- triangleVertices.push_back(vertices[i]); -- triangleVertices.push_back(vertices[i+1]); -- triangleVertices.push_back(vertices[i+2]); -- triangleVertices.push_back(vertices[i+1]); -- triangleVertices.push_back(vertices[i+3]); -- triangleVertices.push_back(vertices[i+2]); -- } -- - // Generate a unique buffer object name and put it in bufferHandle - GLuint bufferHandle; - glGenBuffers(1, &bufferHandle); -@@ -274,7 +273,7 @@ CVertexBuffer CGUIFontTTFGL::CreateVertexBuffer(const std::vector &vert - // Create a data store for the buffer object bound to the GL_ARRAY_BUFFER - // binding point (i.e. our buffer object) and initialise it from the - // specified client-side pointer -- glBufferData(GL_ARRAY_BUFFER, triangleVertices.size() * sizeof (SVertex), &triangleVertices[0], GL_STATIC_DRAW); -+ glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof (SVertex), &vertices[0], GL_STATIC_DRAW); - // Unbind GL_ARRAY_BUFFER - glBindBuffer(GL_ARRAY_BUFFER, 0); - -@@ -393,4 +392,33 @@ void CGUIFontTTFGL::DeleteHardwareTexture() - } - } - -+#if HAS_GLES -+void CGUIFontTTFGL::CreateStaticVertexBuffers(void) -+{ -+ // Bind a new buffer to the OpenGL context's GL_ELEMENT_ARRAY_BUFFER binding point -+ glGenBuffers(1, &m_elementArrayHandle); -+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_elementArrayHandle); -+ // Create an array holding the mesh indices to convert quads to triangles -+ GLushort index[ELEMENT_ARRAY_MAX_CHAR_INDEX][6]; -+ for (size_t i = 0; i < ELEMENT_ARRAY_MAX_CHAR_INDEX; i++) -+ { -+ index[i][0] = 4*i; -+ index[i][1] = 4*i+1; -+ index[i][2] = 4*i+2; -+ index[i][3] = 4*i+1; -+ index[i][4] = 4*i+3; -+ index[i][5] = 4*i+2; -+ } -+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof index, index, GL_STATIC_DRAW); -+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); -+} -+ -+void CGUIFontTTFGL::DestroyStaticVertexBuffers(void) -+{ -+ glDeleteBuffers(1, &m_elementArrayHandle); -+} -+ -+GLuint CGUIFontTTFGL::m_elementArrayHandle; -+#endif -+ - #endif -diff --git a/xbmc/guilib/GUIFontTTFGL.h b/xbmc/guilib/GUIFontTTFGL.h -index 6102c90..dcf9ca1 100644 ---- a/xbmc/guilib/GUIFontTTFGL.h -+++ b/xbmc/guilib/GUIFontTTFGL.h -@@ -30,6 +30,7 @@ - - #include "GUIFontTTF.h" - #include "system.h" -+#include "system_gl.h" - - - /*! -@@ -47,13 +48,21 @@ class CGUIFontTTFGL : public CGUIFontTTFBase - #if HAS_GLES - virtual CVertexBuffer CreateVertexBuffer(const std::vector &vertices) const; - virtual void DestroyVertexBuffer(CVertexBuffer &bufferHandle) const; -+ static void CreateStaticVertexBuffers(void); -+ static void DestroyStaticVertexBuffers(void); - #endif - - protected: - virtual CBaseTexture* ReallocTexture(unsigned int& newHeight); - virtual bool CopyCharToTexture(FT_BitmapGlyph bitGlyph, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2); - virtual void DeleteHardwareTexture(); -- -+ -+#if HAS_GLES -+#define ELEMENT_ARRAY_MAX_CHAR_INDEX (1000) -+ -+ static GLuint m_elementArrayHandle; -+#endif -+ - private: - unsigned int m_updateY1; - unsigned int m_updateY2; -diff --git a/xbmc/windowing/egl/WinSystemEGL.cpp b/xbmc/windowing/egl/WinSystemEGL.cpp -index 6de3532..258a293 100644 ---- a/xbmc/windowing/egl/WinSystemEGL.cpp -+++ b/xbmc/windowing/egl/WinSystemEGL.cpp -@@ -29,6 +29,7 @@ - #include "settings/AdvancedSettings.h" - #include "settings/Settings.h" - #include "settings/DisplaySettings.h" -+#include "guilib/GUIFontTTFGL.h" - #include "utils/log.h" - #include "EGLWrapper.h" - #include "EGLQuirks.h" -@@ -193,6 +194,9 @@ bool CWinSystemEGL::CreateWindow(RESOLUTION_INFO &res) - return false; - } - -+#if HAS_GLES -+ bool newContext = false; -+#endif - if (m_context == EGL_NO_CONTEXT) - { - if (!m_egl->CreateContext(m_display, m_config, contextAttrs, &m_context)) -@@ -200,6 +204,9 @@ bool CWinSystemEGL::CreateWindow(RESOLUTION_INFO &res) - CLog::Log(LOGERROR, "%s: Could not create context",__FUNCTION__); - return false; - } -+#if HAS_GLES -+ newContext = true; -+#endif - } - - if (!m_egl->BindContext(m_display, m_surface, m_context)) -@@ -208,6 +215,11 @@ bool CWinSystemEGL::CreateWindow(RESOLUTION_INFO &res) - return false; - } - -+#if HAS_GLES -+ if (newContext) -+ CGUIFontTTFGL::CreateStaticVertexBuffers(); -+#endif -+ - // for the non-trivial dirty region modes, we need the EGL buffer to be preserved across updates - if (g_advancedSettings.m_guiAlgorithmDirtyRegions == DIRTYREGION_SOLVER_COST_REDUCTION || - g_advancedSettings.m_guiAlgorithmDirtyRegions == DIRTYREGION_SOLVER_UNION) -@@ -229,7 +241,12 @@ bool CWinSystemEGL::DestroyWindowSystem() - DestroyWindow(); - - if (m_context != EGL_NO_CONTEXT) -+ { -+#if HAS_GLES -+ CGUIFontTTFGL::DestroyStaticVertexBuffers(); -+#endif - m_egl->DestroyContext(m_display, m_context); -+ } - m_context = EGL_NO_CONTEXT; - - if (m_display != EGL_NO_DISPLAY) - -From 99bd43bc4f9426397bab9d2292327035bf8db432 Mon Sep 17 00:00:00 2001 +From 0987f8e8ef02d31ec3d122dfb786a795c008aa2f Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 1 May 2014 16:28:39 +0100 -Subject: [PATCH 26/93] Improved file buffering in CArchive +Subject: [PATCH 25/95] 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 @@ -3900,10 +3677,10 @@ index 6ed0f8f..8506d95 100644 } else -From 693f1291aaa8bd3bfee495f0cdf6d875cc1b4675 Mon Sep 17 00:00:00 2001 +From ad9a20382f98ce84d02e7cc3258a3ac118c4e2af Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 10 Sep 2014 22:07:21 +0100 -Subject: [PATCH 27/93] [mmal] Allow mmal codec for dvd stills +Subject: [PATCH 26/95] [mmal] Allow mmal codec for dvd stills --- xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 4 ++++ @@ -3925,10 +3702,10 @@ index f139433..4183a2b 100644 { // If dvd is an mpeg2 and hint.stills -From db74784cc4446e9186001bbd27dedbf0f92db6c0 Mon Sep 17 00:00:00 2001 +From 50e4589c1be698538bb96904709b3ed7f5781c2f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 5 Feb 2014 11:46:33 +0000 -Subject: [PATCH 29/93] [rbp/settings] Allow av sync type to be enabled +Subject: [PATCH 28/95] [rbp/settings] Allow av sync type to be enabled It works for dvdplayer --- @@ -3954,10 +3731,10 @@ index 5985517..f572eed 100644 false -From 6d2d21314564c7603d31db53c19ccf1955e0563c Mon Sep 17 00:00:00 2001 +From 17c0d521016319411e73ee63397b28dea205f7aa Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 16 Apr 2014 21:18:06 +0100 -Subject: [PATCH 31/93] [omxplayer] Don't propagate 3d flags based on supported +Subject: [PATCH 30/95] [omxplayer] Don't propagate 3d flags based on supported 3d modes --- @@ -4010,10 +3787,10 @@ index 2c25fd9..c2bd788 100644 unsigned int iDisplayWidth = width; unsigned int iDisplayHeight = height; -From 2c2e5a3c6bb253e7a6cd51c241e5a6a07d38438b Mon Sep 17 00:00:00 2001 +From 734c79c3b023ed65cea93e1cdd7c6954006a0ab9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:00:52 +0100 -Subject: [PATCH 32/93] [graphics] Don't set stereo mode based on resolution +Subject: [PATCH 31/95] [graphics] Don't set stereo mode based on resolution The resolution change should follow stereo mode --- @@ -4071,10 +3848,10 @@ index 282792c..f1926de 100644 m_iScreenWidth = info_mod.iWidth; -From 3aea0fd665794464b801349ca973a8d1d2fdbb0a Mon Sep 17 00:00:00 2001 +From 52503a4b52321701d8fdd1ae8c85db1c0a83461c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:01:51 +0100 -Subject: [PATCH 33/93] [graphics] Allow switching to a more suitable 3D +Subject: [PATCH 32/95] [graphics] Allow switching to a more suitable 3D resolution --- @@ -4160,10 +3937,10 @@ index 2904c1b..8d3774f 100644 void ResetOverscan(RESOLUTION_INFO &resinfo); void ResetScreenParameters(RESOLUTION res); -From b83d7913c9f41fc6d33e06a0630c6bc0a2cd9cdd Mon Sep 17 00:00:00 2001 +From 31c5b885eb375da7e46fc0ac57e520edb4c3b683 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:38:55 +0100 -Subject: [PATCH 34/93] [3D] Support switching to 3D resolutions +Subject: [PATCH 33/95] [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. @@ -4245,10 +4022,10 @@ index 83c3adb..8076e76 100644 return current; } -From 4a2d025959974b4753af33181add5a6fe7a6828c Mon Sep 17 00:00:00 2001 +From bfc4f4ffb53401a22e90ec73402be6e856e30b03 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 00:05:07 +0100 -Subject: [PATCH 35/93] [graphics] Make pixel ratio for 3d modes consistent +Subject: [PATCH 34/95] [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. @@ -4451,10 +4228,10 @@ index c58c28a..bf1e589 100644 AddUniqueResolution(res2, resolutions); -From 5a6db7cb1c9a4cc3d0b830078564c85b64193dc9 Mon Sep 17 00:00:00 2001 +From 3582bbe1c6a20f5ca632e13e11685b8a89917e79 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 10 Aug 2014 16:45:16 +0100 -Subject: [PATCH 36/93] filesystem: Make support of browsing into archives +Subject: [PATCH 35/95] 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. @@ -4470,10 +4247,10 @@ Add a settings option to enable this feature and default to disabled on Pi 4 files changed, 28 insertions(+) diff --git a/language/English/strings.po b/language/English/strings.po -index 4fe550a..0c01f5e 100755 +index a27daa0..92c958b 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -15969,4 +15969,13 @@ msgstr "" +@@ -16080,4 +16080,13 @@ msgstr "" #: system/settings/rbp.xml msgctxt "#38010" msgid "GPU accelerated" @@ -4508,7 +4285,7 @@ index f572eed..f3c8a01 100644 diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 27aa739..3eb28b9 100644 +index ea6bafc..cd1c45c 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -226,6 +226,11 @@ @@ -4553,10 +4330,10 @@ index 2fd8777..3b294cd 100644 { // XBMC Smart playlist - just XML renamed to XSP // read the name of the playlist in -From 74b47fc99e2e48b5986a395a20c88d7a5a54c3d0 Mon Sep 17 00:00:00 2001 +From 2154c7ee8b237df786913f802ce9e7767046eadf Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 11 Aug 2014 22:56:13 +0100 -Subject: [PATCH 38/93] [omxplayer] Add acceleration option to choose +Subject: [PATCH 37/95] [omxplayer] Add acceleration option to choose omxplayer/dvdplayer automatically --- @@ -4566,10 +4343,10 @@ Subject: [PATCH 38/93] [omxplayer] Add acceleration option to choose 3 files changed, 77 insertions(+) diff --git a/language/English/strings.po b/language/English/strings.po -index 0c01f5e..216837b 100755 +index 92c958b..76fa02a 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -15979,3 +15979,13 @@ msgstr "" +@@ -16090,3 +16090,13 @@ msgstr "" msgctxt "#38021" msgid "Allow viewing and playing files in archives (e.g. zip, rar)" msgstr "" @@ -4584,7 +4361,7 @@ index 0c01f5e..216837b 100755 +msgid "Uses codec information and audio setting to choose dvdplayer or omxplayer as appropriate" +msgstr "" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 3eb28b9..9835d1f 100644 +index cd1c45c..9f5de0e 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -751,6 +751,15 @@ @@ -4680,84 +4457,10 @@ index 6cd4f2d..7ae8826 100644 // allow renderer to switch to fullscreen if requested m_dvdPlayerVideo->EnableFullscreen(m_PlayerOptions.fullscreen); -From bcc045a526dae8cf24051a2852069732ca9c20c7 Mon Sep 17 00:00:00 2001 +From 6ad2474f1fcc376880b8f86df771f5beb1f23ba3 Mon Sep 17 00:00:00 2001 From: popcornmix -Date: Tue, 12 Aug 2014 16:51:18 +0100 -Subject: [PATCH 39/93] AE: Add some logging for suspend/resume - ---- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 5 +++++ - xbmc/cores/omxplayer/OMXAudio.cpp | 2 ++ - 2 files changed, 7 insertions(+) - -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index 0e4d8da..64775c0 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -348,6 +348,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) - switch (signal) - { - case CActiveAEControlProtocol::INIT: -+ CLog::Log(LOGNOTICE, "CActiveAE::%s - AE_TOP_UNCONFIGURED/CActiveAEControlProtocol::INIT", __func__); - m_extError = false; - m_sink.EnumerateSinkList(false); - LoadSettings(); -@@ -433,6 +434,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) - m_extDeferData = true; - return; - case CActiveAEControlProtocol::SUSPEND: -+ CLog::Log(LOGNOTICE, "CActiveAE::%s - AE_TOP_CONFIGURED/CActiveAEControlProtocol::SUSPEND", __func__); - UnconfigureSink(); - m_stats.SetSuspended(true); - m_state = AE_TOP_CONFIGURED_SUSPEND; -@@ -658,6 +660,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) - CLog::Log(LOGDEBUG,"CActiveAE - display reset event"); - displayReset = true; - case CActiveAEControlProtocol::INIT: -+ CLog::Log(LOGNOTICE, "CActiveAE::%s - AE_TOP_CONFIGURED_SUSPEND/CActiveAEControlProtocol::INIT", __func__); - m_extError = false; - if (!displayReset) - { -@@ -2339,12 +2342,14 @@ void CActiveAE::Shutdown() - - bool CActiveAE::Suspend() - { -+ CLog::Log(LOGNOTICE, "ActiveAE::%s", __FUNCTION__); - return m_controlPort.SendOutMessage(CActiveAEControlProtocol::SUSPEND); - } - - bool CActiveAE::Resume() - { - Message *reply; -+ CLog::Log(LOGNOTICE, "ActiveAE::%s", __FUNCTION__); - if (m_controlPort.SendOutMessageSync(CActiveAEControlProtocol::INIT, - &reply, - 5000)) -diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp -index 6c7fcc2..e96713c 100644 ---- a/xbmc/cores/omxplayer/OMXAudio.cpp -+++ b/xbmc/cores/omxplayer/OMXAudio.cpp -@@ -932,6 +932,7 @@ bool COMXAudio::Initialize(AEAudioFormat format, OMXClock *clock, CDVDStreamInfo - //*********************************************************************************************** - bool COMXAudio::Deinitialize() - { -+ CLog::Log(LOGNOTICE, "COMXAudio::%s start", __func__); - CSingleLock lock (m_critSection); - - if ( m_omx_tunnel_clock_analog.IsInitialized() ) -@@ -992,6 +993,7 @@ bool COMXAudio::Deinitialize() - m_submitted = 0.0f; - m_maxLevel = 0.0f; - -+ CLog::Log(LOGNOTICE, "COMXAudio::%s end", __func__); - return true; - } - - -From fac7392424b543698ae9707cc6a40288c8c6b346 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 9 Jul 2014 22:45:43 +0100 -Subject: [PATCH 40/93] [rbp] Make cachemembuffersize default depend on memory +Date: Mon, 27 Oct 2014 13:06:57 +0000 +Subject: [PATCH 38/95] [rbp] Make cachemembuffersize default depend on memory size --- @@ -4766,7 +4469,7 @@ Subject: [PATCH 40/93] [rbp] Make cachemembuffersize default depend on memory 2 files changed, 10 insertions(+) diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 73a42c4..ae12e59 100644 +index ba1a3d0..5119949 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp @@ -22,6 +22,7 @@ @@ -4777,17 +4480,17 @@ index 73a42c4..ae12e59 100644 #include "utils/log.h" #include "cores/omxplayer/OMXImage.h" -@@ -80,6 +81,9 @@ bool CRBP::Initialize() +@@ -84,6 +85,9 @@ bool CRBP::Initialize() if (!m_gui_resolution_limit) m_gui_resolution_limit = m_gpu_mem < 128 ? 720:1080; -+ if (g_advancedSettings.m_cacheMemBufferSize == ~0) ++ if (g_advancedSettings.m_cacheMemBufferSize == ~0U) + g_advancedSettings.m_cacheMemBufferSize = m_arm_mem < 256 ? 1024 * 1024 * 2 : 1024 * 1024 * 20; + g_OMXImage.Initialize(); m_omx_image_init = true; return true; -@@ -92,6 +96,7 @@ void CRBP::LogFirmwareVerison() +@@ -96,6 +100,7 @@ void CRBP::LogFirmwareVerison() response[sizeof(response) - 1] = '\0'; CLog::Log(LOGNOTICE, "Raspberry PI firmware version: %s", response); CLog::Log(LOGNOTICE, "ARM mem: %dMB GPU mem: %dMB MPG2:%d WVC1:%d", m_arm_mem, m_gpu_mem, m_codec_mpg2_enabled, m_codec_wvc1_enabled); @@ -4796,12 +4499,12 @@ index 73a42c4..ae12e59 100644 response[sizeof(response) - 1] = '\0'; CLog::Log(LOGNOTICE, "Config:\n%s", response); diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index 3aff9f6..c7f47f4 100644 +index 7d04872..ca2d33c 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp -@@ -365,7 +365,12 @@ void CAdvancedSettings::Initialize() - - m_measureRefreshrate = false; +@@ -363,7 +363,12 @@ void CAdvancedSettings::Initialize() + m_bPVRAutoScanIconsUserSet = false; + m_iPVRNumericChannelSwitchTimeout = 1000; +#ifdef TARGET_RASPBERRY_PI + // want default to be memory dependent, but interface to gpu not available yet, so set in RBP.cpp @@ -4813,10 +4516,10 @@ index 3aff9f6..c7f47f4 100644 // the following setting determines the readRate of a player data // as multiply of the default data read rate -From b45eb1381e2a2e6b0187183c9974072692af9a56 Mon Sep 17 00:00:00 2001 +From 57e6972c07859ce506c42d403026f270a22718bb Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 16 Jun 2014 19:06:00 +0100 -Subject: [PATCH 42/93] [experimental] Disable quiet-noise generation +Subject: [PATCH 40/95] [experimental] Disable quiet-noise generation --- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 2 ++ @@ -4843,10 +4546,10 @@ index c6272cc..9111593 100644 void CActiveAESink::SetSilenceTimer() -From 27dc9f1c3790556b6a17e395dff244cb1944ef23 Mon Sep 17 00:00:00 2001 +From fc4c17d301d9fc450651af04bb0b60ee78e42aa3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 30 May 2014 14:58:43 +0100 -Subject: [PATCH 43/93] [settings] Experiment: Report DESKTOP resolution in +Subject: [PATCH 41/95] [settings] Experiment: Report DESKTOP resolution in video settings --- @@ -4868,10 +4571,10 @@ index 6902f83..50c5f97 100644 StringUtils::Format("%dx%d%s", resolution->width, resolution->height, ModeFlagsToString(resolution->flags, false).c_str()), -From 5a278804be8572f5fa92abd966af5f435a4914a2 Mon Sep 17 00:00:00 2001 +From e47d0185f0616788468a14e975167a51dd0d36ba Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 18:24:42 +0200 -Subject: [PATCH 44/93] Added some vc_tv_* functions that were missing in +Subject: [PATCH 42/95] Added some vc_tv_* functions that were missing in DllBCM. --- @@ -4906,10 +4609,10 @@ index b92fdb8..9c7e293 100644 HDMI_INTERLACED_T scan_mode, EDID_MODE_MATCH_FLAG_T match_flags) { return ::vc_tv_hdmi_power_on_best(width, height, frame_rate, scan_mode, match_flags); }; -From 33d7a2cecf00179d2aecdad0994784f04d1c83ba Mon Sep 17 00:00:00 2001 +From 9d69138cbd68a0c896220bb052edae9b804fb1a8 Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 18:29:03 +0200 -Subject: [PATCH 45/93] Added private utility function to map a float display +Subject: [PATCH 43/95] Added private utility function to map a float display aspect, to the respective SDTV_ASPECT_* enum value. --- @@ -4947,10 +4650,10 @@ index bf1e589..518a87d 100644 bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &resolutions) -From f33b4e2e265cf05a0cbedca3cc744f30d7cc2b23 Mon Sep 17 00:00:00 2001 +From f4cc522ee7b6351c4cf57adfc4f350971d871b81 Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 19:50:58 +0200 -Subject: [PATCH 46/93] Changed SDTV resolutions to be treated similarly to +Subject: [PATCH 44/95] Changed SDTV resolutions to be treated similarly to HDMI resolutions in SetNativeResolution. This means that the SDTV interface is powered up and set to the right mode. @@ -5047,10 +4750,10 @@ index 59401f5..a0acb1a 100644 int m_width; int m_height; -From 9029f7266e87672337da5af65940e245e0d2e406 Mon Sep 17 00:00:00 2001 +From 67d3f0ac93606832edf2fc1db8e47ff7c7c9ea22 Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 19:54:59 +0200 -Subject: [PATCH 47/93] Added methods SuspendVideoOutput() and +Subject: [PATCH 45/95] Added methods SuspendVideoOutput() and ResumeVideoOutput() to CRBP class, which can be used to power down the Raspberry PI's video interface, and restore it at a later point. @@ -5061,10 +4764,10 @@ Subject: [PATCH 47/93] Added methods SuspendVideoOutput() and 3 files changed, 21 insertions(+) diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index ae12e59..958464f 100644 +index 5119949..cb87b77 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp -@@ -178,4 +178,19 @@ void CRBP::Deinitialize() +@@ -212,4 +212,19 @@ void CRBP::Deinitialize() m_initialized = false; m_omx_initialized = false; } @@ -5085,12 +4788,12 @@ index ae12e59..958464f 100644 + #endif diff --git a/xbmc/linux/RBP.h b/xbmc/linux/RBP.h -index e9a2d5a..04ddaa0 100644 +index 4fd18f3..f947acc 100644 --- a/xbmc/linux/RBP.h +++ b/xbmc/linux/RBP.h -@@ -58,6 +58,9 @@ class CRBP - unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true); +@@ -59,6 +59,9 @@ class CRBP DllOMX *GetDllOMX() { return m_OMX ? m_OMX->GetDll() : NULL; } + void WaitVsync(); + void SuspendVideoOutput(); + void ResumeVideoOutput(); @@ -5114,10 +4817,10 @@ index 9dc39d5..ca36082 100644 CEGLNativeTypeRaspberryPI::CEGLNativeTypeRaspberryPI() { -From 93dc16a3746743070fe50721641349193acdf465 Mon Sep 17 00:00:00 2001 +From 9e614bae6b9f6ec543139eea2d3eba03bbbab1f7 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 11 Aug 2013 15:03:36 +0100 -Subject: [PATCH 48/93] PowerManager (and its IPowerSyscall instance) now gets +Subject: [PATCH 46/95] PowerManager (and its IPowerSyscall instance) now gets called from CApplication::OnKey() and can process and suppress key presses. This is a requirement to implement a virtual sleep state. @@ -5129,10 +4832,10 @@ Subject: [PATCH 48/93] PowerManager (and its IPowerSyscall instance) now gets 4 files changed, 23 insertions(+) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index bb4342e..b74e3ae 100644 +index d5604dc..83852ec 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -2352,6 +2352,13 @@ bool CApplication::OnKey(const CKey& key) +@@ -2359,6 +2359,13 @@ bool CApplication::OnKey(const CKey& key) // special handling if the screensaver is active CAction action = CButtonTranslator::GetInstance().GetAction(iWin, key); @@ -5210,10 +4913,10 @@ index 0b1f10a..e42b143 100644 void OnSleep(); void OnWake(); -From d35d64af5eb8ad4563d0f1ff9336de254bd69ea4 Mon Sep 17 00:00:00 2001 +From 994e7437a05cad13e7bc34ddb693cb516c05741a Mon Sep 17 00:00:00 2001 From: macrule Date: Wed, 17 Apr 2013 13:23:01 +0200 -Subject: [PATCH 49/93] Added CPowerSyscallVirtualSleep class, which acts as a +Subject: [PATCH 47/95] Added CPowerSyscallVirtualSleep class, which acts as a base class for devices that have no native standby mode, and need to fake it in some way. @@ -5389,10 +5092,10 @@ index 0000000..ef6e682 + +#endif // _POWER_SYSCALL_VIRTUAL_SLEEP_H_ -From 02771d11f930b08e48590c0cfbb0847104ea3590 Mon Sep 17 00:00:00 2001 +From 48e25588edef3f41d6c716d101f43d6a545d1fc9 Mon Sep 17 00:00:00 2001 From: macrule Date: Wed, 17 Apr 2013 13:24:22 +0200 -Subject: [PATCH 50/93] Added power management support for the Raspberry Pi. +Subject: [PATCH 48/95] Added power management support for the Raspberry Pi. Since it doesn't support true standby, we fake it by turning video on or off, and ignoring remote inputs during the standby phase. @@ -5538,10 +5241,10 @@ index 0000000..fd1d67c + +#endif // _RASPBERRY_PI_POWER_SYSCALL_H_ -From c4ea3a8c3e901e2add2e1f6ce55748bd4487e232 Mon Sep 17 00:00:00 2001 +From 0b1f5338b1b24b9059983c5677c81d3d681198fd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 16:16:29 +0000 -Subject: [PATCH 51/93] [power] hack - don't kill lirc or cec +Subject: [PATCH 49/95] [power] hack - don't kill lirc or cec --- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 37 +++++++++++++++++++++++ @@ -5549,7 +5252,7 @@ Subject: [PATCH 51/93] [power] hack - don't kill lirc or cec 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp -index 9907ba2..dfc2b78 100644 +index 3f1a110..baa570b 100644 --- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp +++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp @@ -183,12 +183,49 @@ void CPeripheralCecAdapter::Announce(AnnouncementFlag flag, const char *sender, @@ -5625,10 +5328,10 @@ index 2d8c750..901f449 100644 CBuiltins::Execute("LIRC.Start"); #endif -From 2c7e9c7314d18ef74a71ced81660caa2633456f2 Mon Sep 17 00:00:00 2001 +From 9075e02d9ecc3a7758b84d5e8a4bdcf0d7c9f748 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 16:47:54 +0000 -Subject: [PATCH 52/93] [power] hack - wake on any action +Subject: [PATCH 50/95] [power] hack - wake on any action --- xbmc/powermanagement/PowerSyscallVirtualSleep.cpp | 6 +++--- @@ -5657,10 +5360,10 @@ index 6a1e47b..a717a09 100644 if(VirtualWake()) { -From 7b4fa7354635ba7815c7e41bb1f75ab51a104e5a Mon Sep 17 00:00:00 2001 +From f70dc0df263aa306d5c02b7cda9e57ebe71cbf39 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 17:30:07 +0000 -Subject: [PATCH 53/93] [power] hack - Make suspend toggle suspend state +Subject: [PATCH 51/95] [power] hack - Make suspend toggle suspend state --- xbmc/powermanagement/PowerSyscallVirtualSleep.cpp | 5 +++++ @@ -5683,10 +5386,10 @@ index a717a09..d39c3ed 100644 return false; } -From 582c104b073cf55fb78460d565230ddefc5a625c Mon Sep 17 00:00:00 2001 +From 6de2d7c10df07091b0b045a9a4f1e6507b84f112 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 4 Mar 2014 19:33:44 +0000 -Subject: [PATCH 54/93] [power] Add back in powerdown and reboot +Subject: [PATCH 52/95] [power] Add back in powerdown and reboot --- .../linux/RaspberryPIPowerSyscall.cpp | 34 ++++++++++++++++++++++ @@ -5764,10 +5467,10 @@ index fd1d67c..062132e 100644 virtual bool CanReboot() { return true; } -From 54bdf26b8cb3d20eec154e7ee5db7bce20a777c9 Mon Sep 17 00:00:00 2001 +From b604b5136bd629e9ca0abe81387f5ff06fd78660 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 26 Apr 2014 17:27:52 +0100 -Subject: [PATCH 55/93] [cec] Don't suspend pi on tv switch off - it can't wake +Subject: [PATCH 53/95] [cec] Don't suspend pi on tv switch off - it can't wake up --- @@ -5775,7 +5478,7 @@ Subject: [PATCH 55/93] [cec] Don't suspend pi on tv switch off - it can't wake 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/peripherals.xml b/system/peripherals.xml -index a906628..9b5271a 100644 +index 57af5d1..d987670 100644 --- a/system/peripherals.xml +++ b/system/peripherals.xml @@ -16,7 +16,7 @@ @@ -5788,21 +5491,21 @@ index a906628..9b5271a 100644 -From 6b4c2273af5269e98fab04d781390345db7a73e7 Mon Sep 17 00:00:00 2001 +From 379b04d36dfefc062b5c44793cfa697b7253432f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 27 Jun 2014 00:01:05 +0100 -Subject: [PATCH 56/93] [rbp] Resume video output on startup +Subject: [PATCH 54/95] [rbp] Resume video output on startup --- xbmc/linux/RBP.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 958464f..162b505 100644 +index cb87b77..34866f6 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp -@@ -84,6 +84,9 @@ bool CRBP::Initialize() - if (g_advancedSettings.m_cacheMemBufferSize == ~0) +@@ -88,6 +88,9 @@ bool CRBP::Initialize() + if (g_advancedSettings.m_cacheMemBufferSize == ~0U) g_advancedSettings.m_cacheMemBufferSize = m_arm_mem < 256 ? 1024 * 1024 * 2 : 1024 * 1024 * 20; + // in case xbcm was restarted when suspended @@ -5812,10 +5515,10 @@ index 958464f..162b505 100644 m_omx_image_init = true; return true; -From 16e79bcb580f8cbb0c29e77fa9f65e4c5bdd1bbc Mon Sep 17 00:00:00 2001 +From 35c1c98b14a01aec3475ce9f63ef2990a87d093a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 16 Aug 2014 21:01:42 +0100 -Subject: [PATCH 57/93] omxrender: Hacks to reduce GUI rendering rate when +Subject: [PATCH 55/95] omxrender: Hacks to reduce GUI rendering rate when playing video --- @@ -5825,10 +5528,10 @@ Subject: [PATCH 57/93] omxrender: Hacks to reduce GUI rendering rate when 3 files changed, 60 insertions(+) diff --git a/language/English/strings.po b/language/English/strings.po -index 216837b..5690347 100755 +index 76fa02a..3aea198 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -15989,3 +15989,30 @@ msgstr "" +@@ -16100,3 +16100,30 @@ msgstr "" msgctxt "#37034" msgid "Uses codec information and audio setting to choose dvdplayer or omxplayer as appropriate" msgstr "" @@ -5887,10 +5590,10 @@ index f3c8a01..2996c29 100644 diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index b74e3ae..c349e47 100644 +index 83852ec..2ae376f 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -2200,6 +2200,23 @@ void CApplication::Render() +@@ -2207,6 +2207,23 @@ void CApplication::Render() if (m_bStop) return; @@ -5915,10 +5618,10 @@ index b74e3ae..c349e47 100644 int vsync_mode = CSettings::Get().GetInt("videoscreen.vsync"); -From e85c9696bdeec0eb84f4f1e5795ee8c00fdf2791 Mon Sep 17 00:00:00 2001 +From 53c01591057e66ba2c7df182a259fbd081b5f104 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Sep 2014 12:04:26 +0100 -Subject: [PATCH 58/93] egl: Treat unknown display aspect ratio as square pixel +Subject: [PATCH 56/95] egl: Treat unknown display aspect ratio as square pixel --- xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 4 ++-- @@ -5947,10 +5650,10 @@ index ca36082..1529045 100644 SetResolutionString(m_desktopRes); -From 72381ea1c22a9f96860a524800a117990b9a5925 Mon Sep 17 00:00:00 2001 +From 7de3a2e38899e916b15c67dace78bde6e125b4bc Mon Sep 17 00:00:00 2001 From: anaconda Date: Thu, 11 Sep 2014 21:30:43 +0200 -Subject: [PATCH 59/93] Disable textbox autoscrolling while on screensaver. +Subject: [PATCH 57/95] Disable textbox autoscrolling while on screensaver. --- xbmc/guilib/GUITextBox.cpp | 3 ++- @@ -5978,10 +5681,10 @@ index b7ef051..ba68fad 100644 if (m_lastRenderTime) m_autoScrollDelayTime += currentTime - m_lastRenderTime; -From 36352571f62af986f453eef251bd3d71a00a54fc Mon Sep 17 00:00:00 2001 +From 5b6dceab62f5014a0c6319bfb824e5804ae65ed1 Mon Sep 17 00:00:00 2001 From: anaconda Date: Sat, 13 Sep 2014 19:49:01 +0200 -Subject: [PATCH 60/93] SQUASH: only if dim or black +Subject: [PATCH 58/95] SQUASH: only if dim or black --- xbmc/Application.cpp | 7 +++++++ @@ -5990,10 +5693,10 @@ Subject: [PATCH 60/93] SQUASH: only if dim or black 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index c349e47..9808500 100644 +index 2ae376f..e81835d 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -5853,3 +5853,10 @@ void CApplication::CloseNetworkShares() +@@ -5851,3 +5851,10 @@ void CApplication::CloseNetworkShares() CSFTPSessionManager::DisconnectAllSessions(); #endif } @@ -6033,10 +5736,10 @@ index ba68fad..e149418 100644 if (m_lastRenderTime) m_autoScrollDelayTime += currentTime - m_lastRenderTime; -From 0a65f36f3e14ab8296153100fcb4283b0241621b Mon Sep 17 00:00:00 2001 +From 36a7a17e3ffbb5153e5455f9a11f744f0e645a59 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 18 Sep 2014 14:24:56 +0100 -Subject: [PATCH 61/93] [omxplayer] Only enable audio clock master when A/V +Subject: [PATCH 59/95] [omxplayer] Only enable audio clock master when A/V sync method is set to audio clock --- @@ -6044,7 +5747,7 @@ Subject: [PATCH 61/93] [omxplayer] Only enable audio clock master when A/V 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp -index e96713c..036552a 100644 +index 6c7fcc2..08808dd 100644 --- a/xbmc/cores/omxplayer/OMXAudio.cpp +++ b/xbmc/cores/omxplayer/OMXAudio.cpp @@ -252,7 +252,8 @@ bool COMXAudio::PortSettingsChanged() @@ -6067,10 +5770,10 @@ index e96713c..036552a 100644 OMX_CONFIG_BOOLEANTYPE configBool; OMX_INIT_STRUCTURE(configBool); -From a511b714be053d7de28e6543c80ee51f3bb08330 Mon Sep 17 00:00:00 2001 +From 75e772637c503071df665c413c6ad8f7a07829b9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 19 Sep 2014 11:54:49 +0100 -Subject: [PATCH 62/93] [dvdplayer/rbp] Add pi specific option to maintain +Subject: [PATCH 60/95] [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". @@ -6089,10 +5792,10 @@ Needed updated firmware 7 files changed, 76 insertions(+), 3 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index 5690347..722490a 100755 +index 3aea198..079f7cd 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -16016,3 +16016,8 @@ msgstr "" +@@ -16127,3 +16127,8 @@ msgstr "" msgctxt "#38005" msgid "24 fps" msgstr "" @@ -6234,10 +5937,10 @@ index e8b2ab6..02c64a0 100644 struct SInfo { diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 162b505..8cd2425 100644 +index 34866f6..95d82dc 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp -@@ -196,4 +196,17 @@ void CRBP::ResumeVideoOutput() +@@ -230,4 +230,17 @@ void CRBP::ResumeVideoOutput() CLog::Log(LOGDEBUG, "Raspberry PI resuming video output\n"); } @@ -6256,22 +5959,22 @@ index 162b505..8cd2425 100644 + #endif diff --git a/xbmc/linux/RBP.h b/xbmc/linux/RBP.h -index 04ddaa0..1a69a8e 100644 +index f947acc..606c24f 100644 --- a/xbmc/linux/RBP.h +++ b/xbmc/linux/RBP.h -@@ -57,6 +57,7 @@ class CRBP - // stride can be null for packed output +@@ -58,6 +58,7 @@ class CRBP unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true); DllOMX *GetDllOMX() { return m_OMX ? m_OMX->GetDll() : NULL; } + void WaitVsync(); + double AdjustHDMIClock(double adjust); void SuspendVideoOutput(); void ResumeVideoOutput(); -From 051ad4548f88ba8ed1d6ec96485cf83c4781350e Mon Sep 17 00:00:00 2001 +From cad83fe6a44515dfe47fedb6f588748738fb8493 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 21 Sep 2014 18:31:31 +0100 -Subject: [PATCH 63/93] hack: revert squash: don't update originaldts when +Subject: [PATCH 61/95] hack: revert squash: don't update originaldts when marked as invalid --- @@ -6291,10 +5994,10 @@ index 7ae8826..7406be9 100644 } else -From 232485e0c8f79dfd69047912bd1121f2ed410a99 Mon Sep 17 00:00:00 2001 +From f2e00759f17947e20bcb24b34fb19d132b0eed63 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 27 Sep 2014 15:27:04 +0100 -Subject: [PATCH 64/93] [omxplayer] Don't sync up to passthrough audio packets +Subject: [PATCH 62/95] [omxplayer] Don't sync up to passthrough audio packets - let GPU handle it --- @@ -6302,10 +6005,10 @@ Subject: [PATCH 64/93] [omxplayer] Don't sync up to passthrough audio packets 1 file changed, 2 insertions(+) diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp -index 036552a..ce35b07 100644 +index 08808dd..6d9cca4 100644 --- a/xbmc/cores/omxplayer/OMXAudio.cpp +++ b/xbmc/cores/omxplayer/OMXAudio.cpp -@@ -1119,6 +1119,7 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt +@@ -1117,6 +1117,7 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt return len; } @@ -6313,7 +6016,7 @@ index 036552a..ce35b07 100644 if(m_eEncoding == OMX_AUDIO_CodingDTS && m_LostSync && (m_Passthrough || m_HWDecode)) { int skip = SyncDTS((uint8_t *)data, len); -@@ -1132,6 +1133,7 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt +@@ -1130,6 +1131,7 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt if(skip > 0) return len; } @@ -6322,10 +6025,10 @@ index 036552a..ce35b07 100644 unsigned pitch = (m_Passthrough || m_HWDecode) ? 1:(m_BitsPerSample >> 3) * m_InputChannels; unsigned int demuxer_samples = len / pitch; -From 82d86558ddedf2b8ba7aebbabcb164b630b4867f Mon Sep 17 00:00:00 2001 +From 0e1a02e98a6ccc0d6876b089db85c17c1c68ad3b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 27 Sep 2014 15:32:37 +0100 -Subject: [PATCH 65/93] [dvdplayer] exerimental: don't raise priority of audio +Subject: [PATCH 63/95] [dvdplayer] exerimental: don't raise priority of audio thread --- @@ -6349,10 +6052,10 @@ index 7406be9..8868bcb 100644 } -From 52f1bdd8525393c0d0fbcc12e9bcdeaaf57b1b74 Mon Sep 17 00:00:00 2001 +From de6ea0412c53a6dec029395657ebbbc97816e54b Mon Sep 17 00:00:00 2001 From: da-anda Date: Sun, 17 Aug 2014 21:09:59 +0200 -Subject: [PATCH 66/93] handle stereoscopic mode of videos in mixed playlists +Subject: [PATCH 64/95] handle stereoscopic mode of videos in mixed playlists --- language/English/strings.po | 2 +- @@ -6360,10 +6063,10 @@ Subject: [PATCH 66/93] handle stereoscopic mode of videos in mixed playlists 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index 722490a..979116b 100755 +index 079f7cd..497d436 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -15640,7 +15640,7 @@ msgstr "" +@@ -15751,7 +15751,7 @@ msgstr "" #. Description of setting "Videos -> Playback -> Disable stereoscopic mode when playback is stopped" with label #36526 #: system/settings/settings.xml msgctxt "#36538" @@ -6520,10 +6223,10 @@ index 35ba597..b013942 100644 case 2: // Mono SetStereoMode( RENDER_STEREO_MODE_MONO ); -From effc3590e018274bcfc75d386804b7f479fe5648 Mon Sep 17 00:00:00 2001 +From 0f952ac62ba0db83d6e51a7e5d7df89c8cd087eb Mon Sep 17 00:00:00 2001 From: da-anda Date: Sat, 16 Aug 2014 11:20:54 +0200 -Subject: [PATCH 67/93] remember user selected 3D modes between videos until +Subject: [PATCH 65/95] remember user selected 3D modes between videos until playback ended --- @@ -6740,10 +6443,10 @@ index c1dfb93..cb54bd0 100644 -From d3d223135cd4c72f4a8512bd52531a1cb3ff0c7c Mon Sep 17 00:00:00 2001 +From 29298807f3cd2be1d8ed0fb9d584cb21277c18dd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 28 Sep 2014 19:28:17 +0100 -Subject: [PATCH 68/93] [mmalcodec] Introduce a preroll period to buffer up +Subject: [PATCH 66/95] [mmalcodec] Introduce a preroll period to buffer up frames on startup --- @@ -6827,10 +6530,10 @@ index b4aa571..a2da46b 100644 MMAL_COMPONENT_T *m_dec; MMAL_PORT_T *m_dec_input; -From cae246a856bea8e55433062f726ea8c0808b7f8f Mon Sep 17 00:00:00 2001 +From b472250a130a13e5d9673543feb98e189dd4809c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 11 Apr 2014 16:12:27 +0100 -Subject: [PATCH 69/93] [omxplayer] Add ability to log more timestamp info in +Subject: [PATCH 67/95] [omxplayer] Add ability to log more timestamp info in extra debug settings --- @@ -6843,10 +6546,10 @@ Subject: [PATCH 69/93] [omxplayer] Add ability to log more timestamp info in 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index 979116b..d2297b7 100755 +index 497d436..54bc484 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -2886,6 +2886,11 @@ msgctxt "#679" +@@ -2887,6 +2887,11 @@ msgctxt "#679" msgid "Verbose logging for CEC library" msgstr "" @@ -6957,10 +6660,10 @@ index c2bd788..5c4a515 100644 || m_speed < 0) { diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index c7f47f4..1e9ee66 100644 +index ca2d33c..997ed38 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp -@@ -1389,6 +1389,9 @@ void CAdvancedSettings::SettingOptionsLoggingComponentsFiller(const CSetting *se +@@ -1385,6 +1385,9 @@ void CAdvancedSettings::SettingOptionsLoggingComponentsFiller(const CSetting *se #ifdef HAVE_LIBCEC list.push_back(std::make_pair(g_localizeStrings.Get(679), LOGCEC)); #endif @@ -6971,10 +6674,10 @@ index c7f47f4..1e9ee66 100644 void CAdvancedSettings::setExtraLogLevel(const std::vector &components) -From 7a6868b0568637b853f620e8f4ca6d839c65b60e Mon Sep 17 00:00:00 2001 +From 43b99d483c746cd866e1624999276d9e9349da7e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 23:13:55 +0100 -Subject: [PATCH 70/93] [omxplayer] Add ability to dump out audio/video data +Subject: [PATCH 68/95] [omxplayer] Add ability to dump out audio/video data for later debugging --- @@ -6986,10 +6689,10 @@ Subject: [PATCH 70/93] [omxplayer] Add ability to dump out audio/video data 5 files changed, 112 insertions(+) diff --git a/language/English/strings.po b/language/English/strings.po -index d2297b7..43699cc 100755 +index 54bc484..9719773 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -2891,6 +2891,16 @@ msgctxt "#697" +@@ -2892,6 +2892,16 @@ msgctxt "#697" msgid "Verbose logging for OMXPLAYER" msgstr "" @@ -7020,7 +6723,7 @@ index ad02d95..be40370 100644 #include "utils/params_check_macros.h" diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp -index ce35b07..22ee423 100644 +index 6d9cca4..d3f590a 100644 --- a/xbmc/cores/omxplayer/OMXAudio.cpp +++ b/xbmc/cores/omxplayer/OMXAudio.cpp @@ -60,6 +60,49 @@ static const uint16_t AC3FSCod [] = {48000, 44100, 32000, 0}; @@ -7089,8 +6792,8 @@ index ce35b07..22ee423 100644 omx_err = m_omx_decoder.EmptyThisBuffer(omx_buffer); if (omx_err != OMX_ErrorNone) { -@@ -936,6 +981,8 @@ bool COMXAudio::Deinitialize() - CLog::Log(LOGNOTICE, "COMXAudio::%s start", __func__); +@@ -935,6 +980,8 @@ bool COMXAudio::Deinitialize() + { CSingleLock lock (m_critSection); + dump_omx_buffer(NULL); @@ -7098,7 +6801,7 @@ index ce35b07..22ee423 100644 if ( m_omx_tunnel_clock_analog.IsInitialized() ) m_omx_tunnel_clock_analog.Deestablish(); if ( m_omx_tunnel_clock_hdmi.IsInitialized() ) -@@ -1243,6 +1290,7 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt +@@ -1241,6 +1288,7 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt int nRetry = 0; while(true) { @@ -7106,7 +6809,7 @@ index ce35b07..22ee423 100644 omx_err = m_omx_decoder.EmptyThisBuffer(omx_buffer); if (omx_err == OMX_ErrorNone) { -@@ -1490,6 +1538,7 @@ void COMXAudio::SubmitEOS() +@@ -1488,6 +1536,7 @@ void COMXAudio::SubmitEOS() omx_buffer->nFlags = OMX_BUFFERFLAG_ENDOFFRAME | OMX_BUFFERFLAG_EOS | OMX_BUFFERFLAG_TIME_UNKNOWN; @@ -7201,10 +6904,10 @@ index 0363aaa..6cfb148 100644 if (omx_err != OMX_ErrorNone) { diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index 1e9ee66..123ce5f 100644 +index 997ed38..7d2aa35 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp -@@ -1392,6 +1392,10 @@ void CAdvancedSettings::SettingOptionsLoggingComponentsFiller(const CSetting *se +@@ -1388,6 +1388,10 @@ void CAdvancedSettings::SettingOptionsLoggingComponentsFiller(const CSetting *se #ifdef TARGET_RASPBERRY_PI list.push_back(std::make_pair(g_localizeStrings.Get(697), LOGOMXPLAYER)); #endif @@ -7216,10 +6919,10 @@ index 1e9ee66..123ce5f 100644 void CAdvancedSettings::setExtraLogLevel(const std::vector &components) -From cfdbd04aab22c3559349142560292192d40c67e4 Mon Sep 17 00:00:00 2001 +From 46579625a84ad6cf60e2bcb400fabb1dea76d5aa Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 Oct 2014 16:34:51 +0100 -Subject: [PATCH 71/93] [mmalcodec] squash: Avoid preroll when using trickplay +Subject: [PATCH 69/95] [mmalcodec] squash: Avoid preroll when using trickplay --- xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecMMAL.cpp | 5 +++++ @@ -7314,10 +7017,10 @@ index a2da46b..4f81bbd 100644 MMAL_COMPONENT_T *m_dec; -From 7f778eb57f7645d06cf909e9ebf2bd9c65aca44a Mon Sep 17 00:00:00 2001 +From 45a6144aa5d9a13aa91de62f489cfd219b6727a0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 Oct 2014 22:45:09 +0100 -Subject: [PATCH 72/93] [mmalrenderer] Add choice of 3 deinterlace schemes +Subject: [PATCH 70/95] [mmalrenderer] Add choice of 3 deinterlace schemes --- xbmc/cores/VideoRenderers/MMALRenderer.cpp | 4 ++++ @@ -7436,10 +7139,10 @@ index 6cfb148..37765b1 100644 image_filter.eImageFilter = OMX_ImageFilterDeInterlaceFast; else -From e2e63f367716300550c0a65abe34b437333f7cec Mon Sep 17 00:00:00 2001 +From 34a9b898e30f8827346cafe07e74f1d11d82081f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 24 Sep 2014 23:13:52 +0100 -Subject: [PATCH 73/93] [audio] Add settings option to boost centre channel +Subject: [PATCH 71/95] [audio] Add settings option to boost centre channel when downmixing This allows a dB volume increase to be added to centre channel. @@ -7457,10 +7160,10 @@ Should work with Pi Sink (dvdplayer/paplayer) and omxplayer 5 files changed, 45 insertions(+) diff --git a/language/English/strings.po b/language/English/strings.po -index 43699cc..a77a578 100755 +index 9719773..1157ee9 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -16036,3 +16036,17 @@ msgstr "" +@@ -16147,3 +16147,17 @@ msgstr "" msgctxt "#38006" msgid "Adjust PLL" msgstr "" @@ -7479,7 +7182,7 @@ index 43699cc..a77a578 100755 +msgctxt "#38009" +msgid "%i dB" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 9835d1f..db381ab 100644 +index 9f5de0e..d8c3c32 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -2457,6 +2457,18 @@ @@ -7544,7 +7247,7 @@ index 6565cdb..a50cd70 100644 if (remapLayout) { diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp -index 22ee423..db2968f 100644 +index d3f590a..e9646b0 100644 --- a/xbmc/cores/omxplayer/OMXAudio.cpp +++ b/xbmc/cores/omxplayer/OMXAudio.cpp @@ -682,6 +682,12 @@ bool COMXAudio::Initialize(AEAudioFormat format, OMXClock *clock, CDVDStreamInfo @@ -7561,10 +7264,10 @@ index 22ee423..db2968f 100644 // stereo upmix if (upmix && m_src_channels == 2 && m_dst_channels > 2) -From 6509e957562274c96aa8f1cfbbdd34f4c0623aac Mon Sep 17 00:00:00 2001 +From 84a5ce396926746b17400c258ffa8204de844b05 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 3 Oct 2014 18:38:07 +0100 -Subject: [PATCH 74/93] [omxcore] Skip out of flush on error +Subject: [PATCH 72/95] [omxcore] Skip out of flush on error --- xbmc/linux/OMXCore.cpp | 4 ++-- @@ -7593,10 +7296,10 @@ index 4ae29ba..4caa304 100644 OMX_ERRORTYPE omx_err = OMX_ErrorNone; -From 5821b6c7dc7c8471aa47addc2b7c9e9f2c34d8f6 Mon Sep 17 00:00:00 2001 +From 5dd968298108aff52f9859567c15127e7ca3dd36 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 3 Oct 2014 18:40:06 +0100 -Subject: [PATCH 75/93] [SinkPi] Handle multichannel layout more like OMXAudio +Subject: [PATCH 73/95] [SinkPi] Handle multichannel layout more like OMXAudio --- xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp | 14 +++++++------- @@ -7655,10 +7358,10 @@ index 89684e4..fd9a03d 100644 m_format = format; m_sinkbuffer_sec_per_byte = 1.0 / (double)(m_format.m_frameSize * m_format.m_sampleRate); -From 745db5eb24729e5daa0cf8329c2951bfdbc925ce Mon Sep 17 00:00:00 2001 +From cafbe99a74ba29f31b8aa6e4c9554c9467da09b0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 5 Oct 2014 14:05:25 +0100 -Subject: [PATCH 76/93] [PiSink] Allow audio output latency to be set in +Subject: [PATCH 74/95] [PiSink] Allow audio output latency to be set in settings --- @@ -7669,10 +7372,10 @@ Subject: [PATCH 76/93] [PiSink] Allow audio output latency to be set in 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index a77a578..d18a57c 100755 +index 1157ee9..b370638 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -16050,3 +16050,18 @@ msgstr "" +@@ -16161,3 +16161,18 @@ msgstr "" #: system/settings/settings.xml msgctxt "#38009" msgid "%i dB" @@ -7786,10 +7489,10 @@ index 5c57999..cac5051 100644 bool m_Initialized; uint32_t m_submitted; -From 51a81c742e269d89d93cf04a2c93980ccb60b01c Mon Sep 17 00:00:00 2001 +From bfc62655a0824e89db28e36489f966aadd649b7f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 6 Oct 2014 21:29:41 +0100 -Subject: [PATCH 77/93] [AE] Don't submit data to resampler when more than one +Subject: [PATCH 75/95] [AE] Don't submit data to resampler when more than one frame is buffered --- @@ -7810,155 +7513,10 @@ index e40ac2e..9e42385 100644 bool hasInput = !m_inputSamples.empty(); -From e371d8d055e0a05c22513f4183463c30b9f22124 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Mon, 13 Oct 2014 22:37:52 +0100 -Subject: [PATCH 78/93] [rbp] Fix for orientation handling of Pi textures - -There were a number of "off by one" errors in the orientations when using accelerated jpeg<->textures on the Pi. -This mostly worked out, but was the root cause of this issue: -http://forum.xbmc.org/showthread.php?tid=192380&pid=1805144#pid1805144 ---- - xbmc/TextureCacheJob.cpp | 2 +- - xbmc/cores/omxplayer/OMXImage.cpp | 19 +++++++++++-------- - xbmc/cores/omxplayer/OMXImage.h | 4 ++-- - xbmc/guilib/TexturePi.cpp | 4 ++-- - 4 files changed, 16 insertions(+), 13 deletions(-) - -diff --git a/xbmc/TextureCacheJob.cpp b/xbmc/TextureCacheJob.cpp -index 2fdeef7..fe0904d 100644 ---- a/xbmc/TextureCacheJob.cpp -+++ b/xbmc/TextureCacheJob.cpp -@@ -97,7 +97,7 @@ bool CTextureCacheJob::CacheTexture(CBaseTexture **out_texture) - m_details.height = height; - m_details.file = m_cachePath + ".jpg"; - if (out_texture) -- *out_texture = LoadImage(CTextureCache::GetCachedPath(m_details.file), width, height, additional_info); -+ *out_texture = LoadImage(CTextureCache::GetCachedPath(m_details.file), width, height, "" /* already flipped */); - CLog::Log(LOGDEBUG, "Fast %s image '%s' to '%s': %p", m_oldHash.empty() ? "Caching" : "Recaching", image.c_str(), m_details.file.c_str(), out_texture); - return true; - } -diff --git a/xbmc/cores/omxplayer/OMXImage.cpp b/xbmc/cores/omxplayer/OMXImage.cpp -index 57f69c5..22ec3f0 100644 ---- a/xbmc/cores/omxplayer/OMXImage.cpp -+++ b/xbmc/cores/omxplayer/OMXImage.cpp -@@ -206,7 +206,8 @@ bool COMXImage::CreateThumb(const std::string& srcFile, unsigned int maxHeight, - COMXImageReEnc reenc; - void *pDestBuffer; - unsigned int nDestSize; -- if (URIUtils::HasExtension(srcFile, ".jpg|.tbn") && file.ReadFile(srcFile) && reenc.ReEncode(file, maxWidth, maxHeight, pDestBuffer, nDestSize)) -+ int orientation = additional_info == "flipped" ? 1:0; -+ if (URIUtils::HasExtension(srcFile, ".jpg|.tbn") && file.ReadFile(srcFile, orientation) && reenc.ReEncode(file, maxWidth, maxHeight, pDestBuffer, nDestSize)) - { - XFILE::CFile outfile; - if (outfile.OpenForWrite(destFile, true)) -@@ -592,7 +593,7 @@ static void inline SKIPN(uint8_t * &p, unsigned int n) - p += n; - } - --OMX_IMAGE_CODINGTYPE COMXImageFile::GetCodingType(unsigned int &width, unsigned int &height) -+OMX_IMAGE_CODINGTYPE COMXImageFile::GetCodingType(unsigned int &width, unsigned int &height, int orientation) - { - OMX_IMAGE_CODINGTYPE eCompressionFormat = OMX_IMAGE_CodingMax; - bool progressive = false; -@@ -809,7 +810,7 @@ OMX_IMAGE_CODINGTYPE COMXImageFile::GetCodingType(unsigned int &width, unsigned - { - SKIPN(p, 1 * 7); - readBits += 7; -- m_orientation = READ8(p); -+ m_orientation = READ8(p)-1; - readBits += 1; - SKIPN(p, 1 * 2); - readBits += 2; -@@ -818,7 +819,7 @@ OMX_IMAGE_CODINGTYPE COMXImageFile::GetCodingType(unsigned int &width, unsigned - { - SKIPN(p, 1 * 6); - readBits += 6; -- m_orientation = READ8(p); -+ m_orientation = READ8(p)-1; - readBits += 1; - SKIPN(p, 1 * 3); - readBits += 3; -@@ -848,7 +849,9 @@ OMX_IMAGE_CODINGTYPE COMXImageFile::GetCodingType(unsigned int &width, unsigned - } - } - -- if(m_orientation > 8) -+ // apply input orientation -+ m_orientation = m_orientation ^ orientation; -+ if(m_orientation < 0 || m_orientation >= 8) - m_orientation = 0; - - if(eCompressionFormat == OMX_IMAGE_CodingMax) -@@ -872,7 +875,7 @@ OMX_IMAGE_CODINGTYPE COMXImageFile::GetCodingType(unsigned int &width, unsigned - } - - --bool COMXImageFile::ReadFile(const std::string& inputFile) -+bool COMXImageFile::ReadFile(const std::string& inputFile, int orientation) - { - XFILE::CFile m_pFile; - m_filename = inputFile.c_str(); -@@ -903,7 +906,7 @@ bool COMXImageFile::ReadFile(const std::string& inputFile) - m_pFile.Read(m_image_buffer, m_image_size); - m_pFile.Close(); - -- OMX_IMAGE_CODINGTYPE eCompressionFormat = GetCodingType(m_width, m_height); -+ OMX_IMAGE_CODINGTYPE eCompressionFormat = GetCodingType(m_width, m_height, orientation); - if(eCompressionFormat != OMX_IMAGE_CodingJPEG) - { - CLog::Log(LOGERROR, "%s::%s %s GetCodingType=0x%x\n", CLASSNAME, __func__, inputFile.c_str(), eCompressionFormat); -@@ -1659,7 +1662,7 @@ bool COMXImageReEnc::HandlePortSettingChange(unsigned int resize_width, unsigned - item.metadata.eValueCharset = OMX_MetadataCharsetASCII; - item.metadata.sLanguageCountry = 0; - item.metadata.nValueMaxSize = sizeof(item.metadata_space); -- sprintf((char *)item.metadata.nValue, "%d", orientation); -+ sprintf((char *)item.metadata.nValue, "%d", orientation + 1); - item.metadata.nValueSizeUsed = strlen((char *)item.metadata.nValue); - - omx_err = m_omx_encoder.SetParameter(OMX_IndexConfigMetadataItem, &item); -diff --git a/xbmc/cores/omxplayer/OMXImage.h b/xbmc/cores/omxplayer/OMXImage.h -index 90e513a..a93aa82 100644 ---- a/xbmc/cores/omxplayer/OMXImage.h -+++ b/xbmc/cores/omxplayer/OMXImage.h -@@ -94,7 +94,7 @@ class COMXImageFile - public: - COMXImageFile(); - virtual ~COMXImageFile(); -- bool ReadFile(const std::string& inputFile); -+ bool ReadFile(const std::string& inputFile, int orientation = 0); - int GetOrientation() { return m_orientation; }; - unsigned int GetWidth() { return m_width; }; - unsigned int GetHeight() { return m_height; }; -@@ -102,7 +102,7 @@ class COMXImageFile - const uint8_t *GetImageBuffer() { return (const uint8_t *)m_image_buffer; }; - const char *GetFilename() { return m_filename; }; - protected: -- OMX_IMAGE_CODINGTYPE GetCodingType(unsigned int &width, unsigned int &height); -+ OMX_IMAGE_CODINGTYPE GetCodingType(unsigned int &width, unsigned int &height, int orientation); - uint8_t *m_image_buffer; - unsigned long m_image_size; - unsigned int m_width; -diff --git a/xbmc/guilib/TexturePi.cpp b/xbmc/guilib/TexturePi.cpp -index 3950b3f..a17bfba 100644 ---- a/xbmc/guilib/TexturePi.cpp -+++ b/xbmc/guilib/TexturePi.cpp -@@ -142,8 +142,8 @@ bool CPiTexture::LoadFromFileInternal(const CStdString& texturePath, unsigned in - if (okay) - { - m_hasAlpha = false; -- if (autoRotate && orientation) -- m_orientation = orientation - 1; -+ if (autoRotate) -+ m_orientation = orientation; - return true; - } - } - -From 0263164b18169a8b4a3f3eef5b3f79ae4b9b00a7 Mon Sep 17 00:00:00 2001 +From 40798004a378e5f1645ad1db2e6e583fe84a42d8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 18 Oct 2014 18:13:43 +0100 -Subject: [PATCH 79/93] [mmal] Exit preroll when we have some decoded frames +Subject: [PATCH 76/95] [mmal] Exit preroll when we have some decoded frames --- xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 4 ++++ @@ -7980,10 +7538,10 @@ index 42c62db..0498ec7 100644 { #if defined(MMAL_DEBUG_VERBOSE) -From 04c568bf50711851b121bec62673d8b6b4c61e10 Mon Sep 17 00:00:00 2001 +From aab65f7bac642dc943430ed06781123cf4e0c6e0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 18 Oct 2014 20:28:49 +0100 -Subject: [PATCH 80/93] config: Add -finstrument-functions +Subject: [PATCH 77/95] config: Add -finstrument-functions --- tools/depends/configure.in | 6 +++--- @@ -8012,10 +7570,10 @@ index 9c4ef7a..bd96e41 100644 fi -From 389b36da150bd82b1a28daa09a6d677f96ac7218 Mon Sep 17 00:00:00 2001 +From 50410e2024041bfd2241a81b98fb5a6f301a5145 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 18 Oct 2014 23:02:57 +0100 -Subject: [PATCH 81/93] Revert "config: Add -finstrument-functions" +Subject: [PATCH 78/95] Revert "config: Add -finstrument-functions" This reverts commit 13e6b5aab2e86e8c38202147475d5251236b4e51. --- @@ -8045,10 +7603,10 @@ index bd96e41..9c4ef7a 100644 fi -From 3fa51aad445494b71ff4fcd321eca9e610e76d1a Mon Sep 17 00:00:00 2001 +From fbb9e8af049393deecda73d71e2a58c6fba5f666 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 19 Oct 2014 13:43:46 +0100 -Subject: [PATCH 82/93] Revert "hack: revert squash: don't update originaldts +Subject: [PATCH 79/95] Revert "hack: revert squash: don't update originaldts when marked as invalid" This reverts commit 4085c67b535627e1723ca8d7f82f3cdeaa67f54e. @@ -8069,10 +7627,10 @@ index c3f9b6a..5ceec72 100644 } else -From cd42eb297f699ac3bef8aaf62dda6a2804812f7c Mon Sep 17 00:00:00 2001 +From b875e111805a2b8f2239577dde4433e1dfa6dd78 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 19 Oct 2014 15:28:47 +0100 -Subject: [PATCH 83/93] [omxplayer] Remove unused function +Subject: [PATCH 80/95] [omxplayer] Remove unused function --- xbmc/cores/omxplayer/OMXAudio.cpp | 12 ------------ @@ -8080,10 +7638,10 @@ Subject: [PATCH 83/93] [omxplayer] Remove unused function 2 files changed, 13 deletions(-) diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp -index db2968f..4616dbd 100644 +index e9646b0..516a1a6 100644 --- a/xbmc/cores/omxplayer/OMXAudio.cpp +++ b/xbmc/cores/omxplayer/OMXAudio.cpp -@@ -1860,15 +1860,3 @@ unsigned int COMXAudio::SyncAC3(BYTE* pData, unsigned int iSize) +@@ -1858,15 +1858,3 @@ unsigned int COMXAudio::SyncAC3(BYTE* pData, unsigned int iSize) m_LostSync = true; return iSize; } @@ -8112,10 +7670,10 @@ index 85a0b98..7cf10ad 100644 }; #endif -From 619cd15988bf4b6070e3b8e4a27fdecacb9358ff Mon Sep 17 00:00:00 2001 +From 533924d9ba04c05d85275dacdef61bdb5b086159 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 19 Oct 2014 17:41:35 +0100 -Subject: [PATCH 84/93] [omxplayer] Avoid reopening stream when interlace +Subject: [PATCH 81/95] [omxplayer] Avoid reopening stream when interlace hasn't really changed --- @@ -8154,10 +7712,10 @@ index 5ceec72..20fbdef 100644 OpenStream(m_CurrentVideo, m_CurrentVideo.id, m_CurrentVideo.source); if (m_State.canseek) -From 0754575e71f468520c79a9b6e6d92e6873b2e167 Mon Sep 17 00:00:00 2001 +From 41525fca8fa9fdaaebd9bd6995fa368810e1b5f0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 26 Oct 2014 16:20:35 +0000 -Subject: [PATCH 85/93] [omxplayer] Request 3 render buffers +Subject: [PATCH 82/95] [omxplayer] Request 3 render buffers This avoids stuttering when using subtitle and avoids a warning of too few render buffers --- @@ -8178,101 +7736,10 @@ index 5c4a515..783ac20 100644 CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__); return; -From 05ab4bae55fc0ee55d8b37c81180c7cf99955624 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Sun, 26 Oct 2014 17:57:59 +0000 -Subject: [PATCH 86/93] [rbp] Add method for waiting for next vsync - ---- - xbmc/linux/RBP.cpp | 34 ++++++++++++++++++++++++++++++++++ - xbmc/linux/RBP.h | 3 +++ - 2 files changed, 37 insertions(+) - -diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 8cd2425..3cd8e18 100644 ---- a/xbmc/linux/RBP.cpp -+++ b/xbmc/linux/RBP.cpp -@@ -33,6 +33,7 @@ CRBP::CRBP() - m_omx_initialized = false; - m_DllBcmHost = new DllBcmHost(); - m_OMX = new COMXCore(); -+ m_element = 0; - } - - CRBP::~CRBP() -@@ -54,6 +55,9 @@ bool CRBP::Initialize() - - m_DllBcmHost->bcm_host_init(); - -+ uint32_t vc_image_ptr; -+ m_resource = vc_dispmanx_resource_create( VC_IMAGE_RGB565, 1, 1, &vc_image_ptr ); -+ - m_omx_initialized = m_OMX->Initialize(); - if(!m_omx_initialized) - return false; -@@ -164,6 +168,36 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw - return image; - } - -+void CRBP::WaitVsync(void) -+{ -+ DISPMANX_DISPLAY_HANDLE_T display = vc_dispmanx_display_open( 0 /*screen*/ ); -+ DISPMANX_UPDATE_HANDLE_T update = vc_dispmanx_update_start(0); -+ -+ VC_DISPMANX_ALPHA_T alpha = { (DISPMANX_FLAGS_ALPHA_T)(DISPMANX_FLAGS_ALPHA_FROM_SOURCE | DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS), 120, /*alpha 0->255*/ 0 }; -+ VC_RECT_T src_rect; -+ VC_RECT_T dst_rect; -+ vc_dispmanx_rect_set( &src_rect, 0, 0, 1 << 16, 1 << 16 ); -+ vc_dispmanx_rect_set( &dst_rect, 0, 0, 1, 1 ); -+ -+ if (m_element) -+ vc_dispmanx_element_remove( update, m_element ); -+ -+ m_element = vc_dispmanx_element_add( update, -+ display, -+ 2000, // layer -+ &dst_rect, -+ m_resource, -+ &src_rect, -+ DISPMANX_PROTECTION_NONE, -+ &alpha, -+ NULL, // clamp -+ (DISPMANX_TRANSFORM_T)0 ); -+ -+ vc_dispmanx_update_submit_sync(update); -+ vc_dispmanx_display_close( display ); -+} -+ -+ - void CRBP::Deinitialize() - { - if (m_omx_image_init) -diff --git a/xbmc/linux/RBP.h b/xbmc/linux/RBP.h -index 1a69a8e..606c24f 100644 ---- a/xbmc/linux/RBP.h -+++ b/xbmc/linux/RBP.h -@@ -57,6 +57,7 @@ class CRBP - // stride can be null for packed output - unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true); - DllOMX *GetDllOMX() { return m_OMX ? m_OMX->GetDll() : NULL; } -+ void WaitVsync(); - double AdjustHDMIClock(double adjust); - - void SuspendVideoOutput(); -@@ -73,6 +74,8 @@ class CRBP - bool m_codec_mpg2_enabled; - bool m_codec_wvc1_enabled; - COMXCore *m_OMX; -+ DISPMANX_RESOURCE_HANDLE_T m_resource; -+ DISPMANX_ELEMENT_HANDLE_T m_element; - class DllLibOMXCore; - CCriticalSection m_critSection; - }; - -From 078876c4a216bafc478e8e8ae8f73b6dbe14cb69 Mon Sep 17 00:00:00 2001 +From aa3b9a73c1684d5806106c2e5167c1e30d1b23b1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 18 Aug 2014 19:09:32 +0100 -Subject: [PATCH 87/93] rbp: Use new dispmanx function for vsync callbacks +Subject: [PATCH 83/95] rbp: Use new dispmanx function for vsync callbacks --- xbmc/linux/RBP.cpp | 85 ++++++++++++++----------- @@ -8281,7 +7748,7 @@ Subject: [PATCH 87/93] rbp: Use new dispmanx function for vsync callbacks 3 files changed, 52 insertions(+), 42 deletions(-) diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 3cd8e18..d341a86 100644 +index 95d82dc..8f46077 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp @@ -33,7 +33,7 @@ CRBP::CRBP() @@ -8297,7 +7764,7 @@ index 3cd8e18..d341a86 100644 m_DllBcmHost->bcm_host_init(); -- uint32_t vc_image_ptr; +- uint32_t vc_image_ptr; - m_resource = vc_dispmanx_resource_create( VC_IMAGE_RGB565, 1, 1, &vc_image_ptr ); + //OpenDisplay(0 /*screen*/); @@ -8374,12 +7841,6 @@ index 3cd8e18..d341a86 100644 -void CRBP::WaitVsync(void) + +static void vsync_callback(DISPMANX_UPDATE_HANDLE_T u, void *arg) -+{ -+ CEvent *sync = (CEvent *)arg; -+ sync->Set(); -+} -+ -+void CRBP::WaitVsync() { - DISPMANX_DISPLAY_HANDLE_T display = vc_dispmanx_display_open( 0 /*screen*/ ); - DISPMANX_UPDATE_HANDLE_T update = vc_dispmanx_update_start(0); @@ -8406,6 +7867,12 @@ index 3cd8e18..d341a86 100644 - - vc_dispmanx_update_submit_sync(update); - vc_dispmanx_display_close( display ); ++ CEvent *sync = (CEvent *)arg; ++ sync->Set(); ++} ++ ++void CRBP::WaitVsync() ++{ + int s; + CEvent sync; + DISPMANX_DISPLAY_HANDLE_T m_display = vc_dispmanx_display_open( 0 /*screen*/ ); @@ -8484,10 +7951,10 @@ index 1529045..b6bf1fc 100644 } DLOG("CEGLNativeTypeRaspberryPI::DestroyDispmaxWindow\n"); -From ebc1f034acad1859e8172f4541d779459b5a601b Mon Sep 17 00:00:00 2001 +From 8f7a268f3eb76094309f2a33ae0fb849ded5e4e3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 19 Aug 2014 17:56:45 +0100 -Subject: [PATCH 88/93] Revert "rbp: Use new dispmanx function for vsync +Subject: [PATCH 84/95] Revert "rbp: Use new dispmanx function for vsync callbacks" This reverts commit afbf8fbceaa6649fb4a6bbd9a1cee6087590412b. @@ -8498,7 +7965,7 @@ This reverts commit afbf8fbceaa6649fb4a6bbd9a1cee6087590412b. 3 files changed, 42 insertions(+), 52 deletions(-) diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index d341a86..3cd8e18 100644 +index 8f46077..f650662 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp @@ -33,7 +33,7 @@ CRBP::CRBP() @@ -8701,184 +8168,35 @@ index b6bf1fc..1529045 100644 } DLOG("CEGLNativeTypeRaspberryPI::DestroyDispmaxWindow\n"); -From 9a38a21663d36334d858afeb6973637bcdee0ddb Mon Sep 17 00:00:00 2001 +From afe35a1f9268711df6c3fc483835eab11454609c Mon Sep 17 00:00:00 2001 From: popcornmix -Date: Wed, 22 Oct 2014 19:43:11 +0100 -Subject: [PATCH 91/93] [rbp] Add VideoReference clock for Raspberry Pi +Date: Mon, 27 Oct 2014 15:23:51 +0000 +Subject: [PATCH 85/95] [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 --- - xbmc/video/VideoReferenceClock.cpp | 4 +++ - xbmc/video/videosync/Makefile | 1 + - xbmc/video/videosync/VideoSyncPi.cpp | 61 ++++++++++++++++++++++++++++++++++++ - xbmc/video/videosync/VideoSyncPi.h | 35 +++++++++++++++++++++ - 4 files changed, 101 insertions(+) - create mode 100644 xbmc/video/videosync/VideoSyncPi.cpp - create mode 100644 xbmc/video/videosync/VideoSyncPi.h + system/settings/rbp.xml | 10 ++++++++++ + 1 file changed, 10 insertions(+) -diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp -index d50d196..58ad3b6 100644 ---- a/xbmc/video/VideoReferenceClock.cpp -+++ b/xbmc/video/VideoReferenceClock.cpp -@@ -35,6 +35,8 @@ - #endif - #if defined(HAVE_X11) - #include "video/videosync/VideoSyncDRM.h" -+#elif defined(TARGET_RASPBERRY_PI) -+#include "video/videosync/VideoSyncPi.h" - #endif - #if defined(TARGET_WINDOWS) - #include "video/videosync/VideoSyncD3D.h" -@@ -103,6 +105,8 @@ void CVideoReferenceClock::Process() - m_pVideoSync = new CVideoSyncD3D(); - #elif defined(TARGET_DARWIN) - m_pVideoSync = new CVideoSyncCocoa(); -+#elif defined(TARGET_RASPBERRY_PI) -+ m_pVideoSync = new CVideoSyncPi(); - #endif +diff --git a/system/settings/rbp.xml b/system/settings/rbp.xml +index b8e6e59..40be71e 100644 +--- a/system/settings/rbp.xml ++++ b/system/settings/rbp.xml +@@ -62,6 +62,16 @@ + + + ++ ++ ++ ++ false ++ ++ ++ false ++ ++ ++ + - SetupSuccess = m_pVideoSync->Setup(CBUpdateClock); -diff --git a/xbmc/video/videosync/Makefile b/xbmc/video/videosync/Makefile -index dc78ed7..cb50933 100644 ---- a/xbmc/video/videosync/Makefile -+++ b/xbmc/video/videosync/Makefile -@@ -1,6 +1,7 @@ - SRCS=VideoSyncGLX.cpp \ - VideoSyncCocoa.cpp \ - VideoSyncDRM.cpp \ -+ VideoSyncPi.cpp \ - - LIB=videosync.a - -diff --git a/xbmc/video/videosync/VideoSyncPi.cpp b/xbmc/video/videosync/VideoSyncPi.cpp -new file mode 100644 -index 0000000..aef016d ---- /dev/null -+++ b/xbmc/video/videosync/VideoSyncPi.cpp -@@ -0,0 +1,61 @@ -+/* -+ * Copyright (C) 2005-2014 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 "system.h" -+ -+#if defined(TARGET_RASPBERRY_PI) -+ -+#include "video/videosync/VideoSyncPi.h" -+#include "guilib/GraphicContext.h" -+#include "utils/TimeUtils.h" -+#include "utils/log.h" -+#include "linux/RBP.h" -+ -+bool CVideoSyncPi::Setup(PUPDATECLOCK func) -+{ -+ UpdateClock = func; -+ CLog::Log(LOGDEBUG, "CVideoReferenceClock: setting up RPi"); -+ return true; -+} -+ -+void CVideoSyncPi::Run(volatile bool& stop) -+{ -+ while (!stop) -+ { -+ g_RBP.WaitVsync(); -+ uint64_t now = CurrentHostCounter(); -+ UpdateClock(1, now); -+ CLog::Log(LOGDEBUG, "CVideoReferenceClock:%s Time:%.3f", __func__, now * 1e-6); -+ } -+} -+ -+void CVideoSyncPi::Cleanup() -+{ -+ CLog::Log(LOGDEBUG, "CVideoReferenceClock: cleaning up RPi"); -+} -+ -+float CVideoSyncPi::GetFps() -+{ -+ m_fps = g_graphicsContext.GetFPS(); -+ CLog::Log(LOGDEBUG, "CVideoReferenceClock: fps: %.2f", m_fps); -+ return m_fps; -+} -+ -+#endif -diff --git a/xbmc/video/videosync/VideoSyncPi.h b/xbmc/video/videosync/VideoSyncPi.h -new file mode 100644 -index 0000000..e9cea45 ---- /dev/null -+++ b/xbmc/video/videosync/VideoSyncPi.h -@@ -0,0 +1,35 @@ -+#pragma once -+/* -+ * Copyright (C) 2005-2014 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_RASPBERRY_PI) -+ -+#include "video/videosync/VideoSync.h" -+ -+class CVideoSyncPi : public CVideoSync -+{ -+public: -+ virtual bool Setup(PUPDATECLOCK func); -+ virtual void Run(volatile bool& stop); -+ virtual void Cleanup(); -+ virtual float GetFps(); -+}; -+ -+#endif - -From 8e0c0fdb676b1530993fa9615124c40a03fe18df Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Sun, 26 Oct 2014 18:22:23 +0000 -Subject: [PATCH 92/93] [VideoReferenceClock] Boost priority - -This shouldn't be very busy and timing is important so increase priority ---- - xbmc/video/VideoReferenceClock.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp -index 58ad3b6..a65d225 100644 ---- a/xbmc/video/VideoReferenceClock.cpp -+++ b/xbmc/video/VideoReferenceClock.cpp -@@ -91,6 +91,9 @@ void CVideoReferenceClock::Process() - bool SetupSuccess = false; - int64_t Now; - -+ /* This shouldn't be very busy and timing is important so increase priority */ -+ SetPriority(GetPriority()+1); -+ - while(!m_bStop) - { - //set up the vblank clock +