From 1c9a86216283a54a1217b3a2d7c8ef65170327c4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sat, 3 May 2014 17:55:58 +0200 Subject: [PATCH] projects/RPi/patches/xbmc: update RPi support patch Signed-off-by: Stephan Raue --- ....patch => xbmc-gotham_rbp_backports.patch} | 731 ++++++++---------- 1 file changed, 323 insertions(+), 408 deletions(-) rename projects/RPi/patches/xbmc/{xbmc-gotham_rbp_backports-08bc840.patch => xbmc-gotham_rbp_backports.patch} (97%) diff --git a/projects/RPi/patches/xbmc/xbmc-gotham_rbp_backports-08bc840.patch b/projects/RPi/patches/xbmc/xbmc-gotham_rbp_backports.patch similarity index 97% rename from projects/RPi/patches/xbmc/xbmc-gotham_rbp_backports-08bc840.patch rename to projects/RPi/patches/xbmc/xbmc-gotham_rbp_backports.patch index 666971af73..75a2ff1e09 100644 --- a/projects/RPi/patches/xbmc/xbmc-gotham_rbp_backports-08bc840.patch +++ b/projects/RPi/patches/xbmc/xbmc-gotham_rbp_backports.patch @@ -1,7 +1,7 @@ -From 1e47949a4a25697b1ef1a8e9a8a4fb019ef7ea65 Mon Sep 17 00:00:00 2001 +From 7648b2bb96c1306baba5dbcff5600bfff8a06714 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 5 Aug 2013 13:12:46 +0100 -Subject: [PATCH 01/83] h264_parser: Initialize the h264dsp context in the +Subject: [PATCH 01/82] h264_parser: Initialize the h264dsp context in the parser as well MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -39,10 +39,10 @@ index aff9ba1..a732f79 100644 1.9.1 -From 2b07e14206fbe8d69f0b58cc2ca8f1eb55cee5f4 Mon Sep 17 00:00:00 2001 +From e9d2d6eadf3e16de343c420947913d0fb9a5230d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 5 Aug 2013 13:12:47 +0100 -Subject: [PATCH 02/83] h264dsp: Factorize code into a new function, +Subject: [PATCH 02/82] h264dsp: Factorize code into a new function, h264_find_start_code_candidate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -168,10 +168,10 @@ index 98ea15c..1be4804 100644 1.9.1 -From 9041adccd57897882820a69b6647f709fbba1c09 Mon Sep 17 00:00:00 2001 +From 2c0a38cc4962a17cb73a22b402e5067b0397340b Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 5 Aug 2013 13:12:48 +0100 -Subject: [PATCH 03/83] arm: Add assembly version of +Subject: [PATCH 03/82] arm: Add assembly version of h264_find_start_code_candidate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -505,10 +505,10 @@ index 972aace..363843c 100644 1.9.1 -From 1ed5bdffd5a0edb1cc655014fd9781d32083ccbc Mon Sep 17 00:00:00 2001 +From e90476bcd44210d65957a86af920955de9f3a4c9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 19 Aug 2013 22:48:05 +0100 -Subject: [PATCH 04/83] [ffmpeg] Backport of h264_find_start_code_candidate +Subject: [PATCH 04/82] [ffmpeg] Backport of h264_find_start_code_candidate optimisation --- @@ -1037,10 +1037,10 @@ index 0000000..cdc2d1e 1.9.1 -From 4a44fee68048e883d685c6717d91e07e649bbe7a Mon Sep 17 00:00:00 2001 +From faa3a5b0e2665ee97c969bccc7344e0625156114 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 16 Apr 2014 01:51:31 +0100 -Subject: [PATCH 05/83] h264: Move search code search functions into separate +Subject: [PATCH 05/82] h264: Move search code search functions into separate source files. This permits re-use with parsers for codecs which use similar start codes. @@ -1791,10 +1791,10 @@ index 0000000..cc55d5f 1.9.1 -From d9ff89bb29dbc6992504b211108fe73e9990ce23 Mon Sep 17 00:00:00 2001 +From a8f498d9910032175f82e125ea9496ffb9819d23 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 16 Apr 2014 01:51:32 +0100 -Subject: [PATCH 06/83] vc-1: Add platform-specific start code search routine +Subject: [PATCH 06/82] vc-1: Add platform-specific start code search routine to VC1DSPContext. Initialise VC1DSPContext for parser as well as for decoder. @@ -1975,10 +1975,10 @@ index 6540eff..302e4a8 100644 1.9.1 -From 108007caee0981482c4ade89c93d00782b4e4ae8 Mon Sep 17 00:00:00 2001 +From 2942907bc15900db876ac0139681a2b6b4dc5347 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 23 Apr 2014 01:41:04 +0100 -Subject: [PATCH 07/83] vc-1: Optimise parser (with special attention to ARM) +Subject: [PATCH 07/82] vc-1: Optimise parser (with special attention to ARM) The previous implementation of the parser made four passes over each input buffer (reduced to two if the container format already guaranteed the input @@ -2363,10 +2363,10 @@ index 53af61c..af601ad 100644 1.9.1 -From 30a217382eab9553bbb1c70866816a9f0b22f3f1 Mon Sep 17 00:00:00 2001 +From 8e5ecee4bb5122c5fb612b4b38b1b0a3d6ce8161 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 19 Mar 2014 17:44:59 +0000 -Subject: [PATCH 08/83] truehd: add hand-scheduled ARM asm version of +Subject: [PATCH 08/82] truehd: add hand-scheduled ARM asm version of mlp_filter_channel. Profiling results for overall audio decode and the mlp_filter_channel(_arm) @@ -2922,10 +2922,10 @@ index 84a8aa3..129bcfe 100644 1.9.1 -From 0c71a8e17dcd8a50c9be016fa5735d0d9f8724db Mon Sep 17 00:00:00 2001 +From f4f65f62fac5be8452dbbfbbdbe4d959178487af Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 19 Mar 2014 17:48:54 +0000 -Subject: [PATCH 09/83] truehd: break out part of rematrix_channels into +Subject: [PATCH 09/82] truehd: break out part of rematrix_channels into platform-specific callback. Verified with profiling that this doesn't have a measurable effect upon @@ -3083,10 +3083,10 @@ index 129bcfe..f98e9be 100644 1.9.1 -From 4fad2a0d94ff319ce83b05077472fb5ec9b356c4 Mon Sep 17 00:00:00 2001 +From c5eb7862f3f54955349438fdb3fb65ead15f5cbe Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 19 Mar 2014 17:49:48 +0000 -Subject: [PATCH 10/83] truehd: add hand-scheduled ARM asm version of +Subject: [PATCH 10/82] truehd: add hand-scheduled ARM asm version of ff_mlp_rematrix_channel. Profiling results for overall audio decode and the rematrix_channels function @@ -3379,10 +3379,10 @@ index f0ea285..268dfdd 100644 1.9.1 -From f23ea48f76c57c5d10c6149264edd5809b7a56bc Mon Sep 17 00:00:00 2001 +From 625148675ec020db7b677e79093379cbaf51f78d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 19 Mar 2014 17:50:36 +0000 -Subject: [PATCH 11/83] truehd: tune VLC decoding for ARM. +Subject: [PATCH 11/82] truehd: tune VLC decoding for ARM. Profiling on a Raspberry Pi revealed the best performance to correspond with VLC_BITS = 5. Results for overall audio decode and the get_vlc2 function @@ -3444,10 +3444,10 @@ index e9343a5..a998dac 100644 1.9.1 -From f0960bf8c56900037b202e3c92a48a1bf526bfc8 Mon Sep 17 00:00:00 2001 +From 137a795c7ca2d25d9667186403e2293a9fe7e30d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 19 Mar 2014 17:54:07 +0000 -Subject: [PATCH 12/83] truehd: break out part of output_data into +Subject: [PATCH 12/82] truehd: break out part of output_data into platform-specific callback. Verified with profiling that this doesn't have a measurable effect upon @@ -3641,10 +3641,10 @@ index f98e9be..5bc901f 100644 1.9.1 -From 235aabda8557927cd65f0115647fd2aa65e2e520 Mon Sep 17 00:00:00 2001 +From 4b0e225db4f8819e670d67ea7b0a319327c0a36d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 19 Mar 2014 17:54:59 +0000 -Subject: [PATCH 13/83] truehd: add hand-scheduled ARM asm version of +Subject: [PATCH 13/82] truehd: add hand-scheduled ARM asm version of ff_mlp_pack_output. Profiling results for overall decode and the output_data function in @@ -4268,10 +4268,10 @@ index 268dfdd..2d8b98d 100644 1.9.1 -From 7357ee2f69dbf56fae6a954c811b1885ca80bf45 Mon Sep 17 00:00:00 2001 +From 03e4c711c30efd26c202a7ea31bf579f69a34398 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 14 Nov 2013 19:48:41 +0000 -Subject: [PATCH 14/83] More efficient infobool expression evaluator +Subject: [PATCH 14/82] More efficient infobool expression evaluator Expession infobools are evaluated at runtime from one or more single infobools and a combination of boolean NOT, AND and OR operators. Previously, parsing @@ -4770,10 +4770,10 @@ index 4e0faee..0a91399 100644 1.9.1 -From e9308d89fd60b7a4b816c942061c183d3a9ebcc9 Mon Sep 17 00:00:00 2001 +From 414c850e0aa71bf5b49ec7bd112bf8f91bf8421a Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 24 Mar 2014 22:26:21 +0000 -Subject: [PATCH 15/83] Where an infobool expression failed to parse, evaluate +Subject: [PATCH 15/82] Where an infobool expression failed to parse, evaluate the infobool as false. Previously, this would result in a segfault due to the dereferencing of an uninitialised pointer to the head of the expression tree. @@ -4800,10 +4800,10 @@ index db461dd..7c54064 100644 1.9.1 -From 0880da92a5d7ea71ddc41e52d8636ce9a985d632 Mon Sep 17 00:00:00 2001 +From 5a5ab68da115cb70e919e72e688c430c59d33a63 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 26 Nov 2013 20:09:48 +0000 -Subject: [PATCH 16/83] Add caching of infolabels +Subject: [PATCH 16/82] Add caching of infolabels The functions CGUIInfoLabel::GetLabel and CGUIInfoLabel::GetItemLabel take a number of strings returned from CGUIInfoManager::GetImage or @@ -5016,10 +5016,10 @@ index 8c1c1dc..418b2c4 100644 1.9.1 -From 3556dcd49f7c5b51b33a9334d2c4d984e8823813 Mon Sep 17 00:00:00 2001 +From 03cf5f047cbda8f57b0f883debeadfb10e8910b2 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 10 Dec 2013 01:12:31 +0000 -Subject: [PATCH 17/83] De-duplication of string cache for non-item and item +Subject: [PATCH 17/82] De-duplication of string cache for non-item and item labels --- @@ -5159,10 +5159,10 @@ index 418b2c4..6d9ebf7 100644 1.9.1 -From 958552edfc6b8029c346536658482095150e25ce Mon Sep 17 00:00:00 2001 +From b9a02e8acdffc02117033bc72cbf353de86c18ee Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 21 Feb 2014 15:16:13 +0000 -Subject: [PATCH 18/83] Faster and simpler portable implementation of +Subject: [PATCH 18/82] Faster and simpler portable implementation of MathUtils::round_int(). Much as I like a bit of inline assembler, I have also removed the ARM versions @@ -5368,10 +5368,10 @@ index 96af9f4..0dae77d 100644 1.9.1 -From 98c5dd74ffeb65650408631f1f29c2e3cabdb151 Mon Sep 17 00:00:00 2001 +From b187bf04c86b636b62b8ff95679c2d5b900e4a1a Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 11 Dec 2013 17:21:54 +0000 -Subject: [PATCH 19/83] Move the reference-counting of Begin and End calls from +Subject: [PATCH 19/82] Move the reference-counting of Begin and End calls from DX and GL source files into GUIFontTTF.cpp. --- @@ -5726,10 +5726,10 @@ index a0dacba..6736cf7 100644 1.9.1 -From 56109cdf0eb6a9825a851c2aa3013cc36c44c1dc Mon Sep 17 00:00:00 2001 +From 2504fcd5182d1b884ad2b07c5c12029f7c900937 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 11 Dec 2013 18:47:54 +0000 -Subject: [PATCH 20/83] Convert CGUIFontTTFBase::m_vertex to be managed as a +Subject: [PATCH 20/82] Convert CGUIFontTTFBase::m_vertex to be managed as a std::vector. Also retired CGUIFontTTFBase::m_vertex_count and CGUIFontTTFBase::m_vertex_size because these can be derived from vector member functions. @@ -5911,10 +5911,10 @@ index 93b7ea6..a4e8571 100644 1.9.1 -From daa9033a6b545526b51dd3b654553c62b47e25f2 Mon Sep 17 00:00:00 2001 +From 0150f73d79c2a2e7eeaed6198f4ab5bbe7d393a9 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 16 Dec 2013 18:58:12 +0000 -Subject: [PATCH 21/83] CGUIFontTTFBase::RenderCharacter can now append to +Subject: [PATCH 21/82] CGUIFontTTFBase::RenderCharacter can now append to arbitrary vectors of vertices rather than only CGUIFontTTFBase::m_vertex --- @@ -5990,10 +5990,10 @@ index 35e3cf9..4a6a696 100644 1.9.1 -From 64d1912615c19dc1162259693d87e433d97c7a32 Mon Sep 17 00:00:00 2001 +From 47b15f11e98a6005d8d78d2ebd4f0bcac2a487f6 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 17:18:38 +0000 -Subject: [PATCH 22/83] Add a cache of font glyph bounding box vertices. This +Subject: [PATCH 22/82] 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 have a GLES or non-GLES backend, and for GLES, whether or not the currently @@ -6653,10 +6653,10 @@ index f351c99..9036ba9 100644 1.9.1 -From 5e432b3b3e466301a7a7cb71b038cd8b2a84e529 Mon Sep 17 00:00:00 2001 +From f458602f71d4db4bc4b6efc5872846198d7f2edb Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 23 Jan 2014 22:24:17 +0000 -Subject: [PATCH 23/83] Lay the groundwork for hardware clipping. +Subject: [PATCH 23/82] 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 @@ -6921,10 +6921,10 @@ index 98e398a..81ee49e 100644 1.9.1 -From 3565413b5ea17cc433f7e92188d81fa8b59fe453 Mon Sep 17 00:00:00 2001 +From 240a76bca746dee43b9e14e308cb6bb6ee51d731 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 23 Jan 2014 16:42:22 +0000 -Subject: [PATCH 24/83] Increase font cache hit rate by keying on the +Subject: [PATCH 24/82] 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 @@ -7128,10 +7128,10 @@ index 7cb4669..78445ab 100644 1.9.1 -From 1e14806aabc63b3750c7131a6bf04748c1333045 Mon Sep 17 00:00:00 2001 +From 5f9ec5e0c5e20a522ce57bb321225ae7e44a9b9b Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 8 Jan 2014 12:16:33 +0000 -Subject: [PATCH 25/83] Rewrite of scrolling text code. +Subject: [PATCH 25/82] 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 @@ -7450,10 +7450,10 @@ index 2c6f366..b74faf2 100644 1.9.1 -From 657264414abdc9e45d4176a292f9eccc5e0bd9df Mon Sep 17 00:00:00 2001 +From b2103af1500129225ff53726699c431aedaf1956 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 27 Jan 2014 23:21:10 +0000 -Subject: [PATCH 26/83] Move the application of the translation offsets into +Subject: [PATCH 26/82] 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 the interface between CGUIFontTTFBase and CGUIFontTTFGL. The old way (array of vertices in m_vertex) are retained in addition, for the @@ -7649,10 +7649,10 @@ index cb56987..f6aa081 100644 1.9.1 -From 08be36acd01be2417d1d34dab14d049b104f93ef Mon Sep 17 00:00:00 2001 +From c2b783e53cd2e33603dbfa69da20faa574dbe59c Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 15:28:06 +0000 -Subject: [PATCH 27/83] Rather than applying the translation offsets to the +Subject: [PATCH 27/82] 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. @@ -7799,10 +7799,10 @@ index 81ee49e..d2f9cd1 100644 1.9.1 -From 2c054d418c6cc97c7b331d26fad04e554ae91cc7 Mon Sep 17 00:00:00 2001 +From ffacd25dc1ecf5b94ad32475f2524d0a6e2bab3d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 29 Jan 2014 13:21:19 +0000 -Subject: [PATCH 28/83] Enable hardware clipping. +Subject: [PATCH 28/82] Enable hardware clipping. --- xbmc/guilib/GUIFontTTF.cpp | 4 ++-- @@ -7878,10 +7878,10 @@ index fbffaa0..b7618e1 100644 1.9.1 -From 7a52699c1386b2276c8c5ae2025488cc8d4ec3fb Mon Sep 17 00:00:00 2001 +From 357ecaa79564f952f4a218d3c279e44fc3433386 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 15:32:51 +0000 -Subject: [PATCH 29/83] Move the vertex data across to a vertex buffer object +Subject: [PATCH 29/82] Move the vertex data across to a vertex buffer object just prior to drawing. --- @@ -7935,10 +7935,10 @@ index b7618e1..0df3749 100644 1.9.1 -From 98e9868adfef483950bde727b293d7fe8ddaed6a Mon Sep 17 00:00:00 2001 +From d6ff7158c9eeb26a350a1eb8447780ca66a20e30 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 16:04:04 +0000 -Subject: [PATCH 30/83] Move vertex data into an OpenGL VBO when the font cache +Subject: [PATCH 30/82] 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 of vertices. @@ -8213,10 +8213,10 @@ index 6736cf7..168fb21 100644 1.9.1 -From f19d01f51776787f35734ea5aacf6253ac00f1e8 Mon Sep 17 00:00:00 2001 +From 608d86befa3d59587f85ccb5b719e0f0fc4c5bc6 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 16 Jan 2014 16:29:42 +0000 -Subject: [PATCH 31/83] Switch from glDrawArrays() to glDrawElements(). This +Subject: [PATCH 31/82] 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. @@ -8439,10 +8439,10 @@ index dfc4672..0c32947 100644 1.9.1 -From 503ccbf5d18bd09d9ecebdb4a9c89f7e0e3e8332 Mon Sep 17 00:00:00 2001 +From 96f7e1687cc763ceafc3787b8bb931fbaec0786f Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 4 Feb 2014 16:17:57 +0000 -Subject: [PATCH 32/83] Update Windows project files +Subject: [PATCH 32/82] Update Windows project files --- project/VS2010Express/XBMC.vcxproj | 2 ++ @@ -8450,7 +8450,7 @@ Subject: [PATCH 32/83] Update Windows project files 2 files changed, 8 insertions(+) diff --git a/project/VS2010Express/XBMC.vcxproj b/project/VS2010Express/XBMC.vcxproj -index c640130..1160b0f 100644 +index c6de5ca..a9731de 100644 --- a/project/VS2010Express/XBMC.vcxproj +++ b/project/VS2010Express/XBMC.vcxproj @@ -540,6 +540,7 @@ @@ -8497,17 +8497,17 @@ index b536eb3..cb34443 100644 1.9.1 -From 3c5ef9f7f0fd0eab873188127709a70c8c2bf80c Mon Sep 17 00:00:00 2001 +From 1b9231fe6960b7897899097023db94c60c18180c Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 4 Feb 2014 16:49:45 +0000 -Subject: [PATCH 33/83] Update XCode project file +Subject: [PATCH 33/82] Update XCode project file --- XBMC.xcodeproj/project.pbxproj | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/XBMC.xcodeproj/project.pbxproj b/XBMC.xcodeproj/project.pbxproj -index b5b96f9..5412e27 100644 +index fdd10a1..62e7e69 100644 --- a/XBMC.xcodeproj/project.pbxproj +++ b/XBMC.xcodeproj/project.pbxproj @@ -168,6 +168,9 @@ @@ -8520,7 +8520,7 @@ index b5b96f9..5412e27 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 */; }; -@@ -3534,6 +3537,8 @@ +@@ -3546,6 +3549,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 = ""; }; @@ -8529,7 +8529,7 @@ index b5b96f9..5412e27 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 = ""; }; -@@ -5874,6 +5879,8 @@ +@@ -5923,6 +5928,8 @@ 18B7C76A1294222E009E7A26 /* GUIFixedListContainer.cpp */, 18B7C7101294222D009E7A26 /* GUIFixedListContainer.h */, 18B7C76B1294222E009E7A26 /* GUIFont.cpp */, @@ -8538,7 +8538,7 @@ index b5b96f9..5412e27 100644 18B7C7111294222D009E7A26 /* GUIFont.h */, 18B7C76C1294222E009E7A26 /* GUIFontManager.cpp */, 18B7C7121294222D009E7A26 /* GUIFontManager.h */, -@@ -10773,6 +10780,7 @@ +@@ -10930,6 +10937,7 @@ 7C8AE850189DE3CD00C33786 /* CoreAudioHardware.cpp in Sources */, 7C8AE851189DE3CD00C33786 /* CoreAudioStream.cpp in Sources */, 7C8AE854189DE47F00C33786 /* CoreAudioHelpers.cpp in Sources */, @@ -8546,7 +8546,7 @@ index b5b96f9..5412e27 100644 ); runOnlyForDeploymentPostprocessing = 0; }; -@@ -11821,6 +11829,7 @@ +@@ -11978,6 +11986,7 @@ F5CC234818150277006B5E91 /* AESinkNULL.cpp in Sources */, F5CC238918150768006B5E91 /* AESinkProfiler.cpp in Sources */, DF374B2518AC2BA20076B514 /* CoreAudioHelpers.cpp in Sources */, @@ -8554,7 +8554,7 @@ index b5b96f9..5412e27 100644 ); runOnlyForDeploymentPostprocessing = 0; }; -@@ -12871,6 +12880,7 @@ +@@ -13028,6 +13037,7 @@ F5CC234718150277006B5E91 /* AESinkNULL.cpp in Sources */, F5CC238818150768006B5E91 /* AESinkProfiler.cpp in Sources */, DF374B2418AC2BA20076B514 /* CoreAudioHelpers.cpp in Sources */, @@ -8566,10 +8566,10 @@ index b5b96f9..5412e27 100644 1.9.1 -From c97c6240c9ba2dda92f31de581012b13bd34a1a7 Mon Sep 17 00:00:00 2001 +From 5a85e16038ddb39105543578bc48efb43ebc2f26 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 4 Feb 2014 17:44:34 +0000 -Subject: [PATCH 34/83] Clang seems to be more picky than gcc about some C++ +Subject: [PATCH 34/82] Clang seems to be more picky than gcc about some C++ template syntax --- @@ -8637,10 +8637,10 @@ index 895fa72..bd84b9a 100644 1.9.1 -From 921007e0d9d50bdcdae95a3298d318ee33bbd663 Mon Sep 17 00:00:00 2001 +From 3e67b47a1c180b8a3ef26f26305ab2e126eeaf61 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 4 Feb 2014 18:52:14 +0000 -Subject: [PATCH 35/83] Fix header to hopefully permit iOS builds to work +Subject: [PATCH 35/82] Fix header to hopefully permit iOS builds to work again. GUIShader.cpp added #include windowing/egl/WinSystemEGL.h inside a but also need the header windowing/osx/WinSystemIOS.h instead. The only thing GUIShader.cpp needed was g_windowing.GetViewPort, which is provided by the @@ -8669,10 +8669,10 @@ index 53bce09..86330cc 100644 1.9.1 -From 98a4fa3018523eddb3ad0e7d037fb4330e4de87c Mon Sep 17 00:00:00 2001 +From 024e67ffb75fb4fb36c8e6b547f1d603db312f01 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Tue, 8 Apr 2014 18:14:55 +0100 -Subject: [PATCH 36/83] Fix font display in stereoscopic modes +Subject: [PATCH 36/82] Fix font display in stereoscopic modes CGUIFontTTFGL::LastEnd was previously using the relatively high-level CGraphicContext::SetScissors function to enforce hardware clipping. However, the coordinates it passed in already contained the stereoscopic offset, so @@ -8713,10 +8713,10 @@ index d476409..8466a81 100644 1.9.1 -From af6af00b79678d5cf5f3fb4ca2c576a3ed2a72a3 Mon Sep 17 00:00:00 2001 +From c1c32ea139975d21824c9b502d75b12cf49d46f0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 10 Jan 2014 12:10:43 +0000 -Subject: [PATCH 37/83] [rbp] Don't override dvdplayer with omxplayer. +Subject: [PATCH 37/82] [rbp] Don't override dvdplayer with omxplayer. Using dvdplayer can be useful on the Pi. We can actually play sd (up to 640x480 MPEG-4 video) video in real time. This is useful for codec variants like DivX3 which we don't currently play. @@ -8749,10 +8749,10 @@ index 27f0bec..fc12bb7 100644 1.9.1 -From 9082a96850ea9fb91f68ebe6fa90b5533bfe7afb Mon Sep 17 00:00:00 2001 +From d0c55018f45b01b7fdaec16110f7806599b97a82 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 10 Jan 2014 15:37:41 +0000 -Subject: [PATCH 38/83] [players] Use default players rather than hard coded +Subject: [PATCH 38/82] [players] Use default players rather than hard coded DVDPlayer/PAPlayer --- @@ -8811,10 +8811,10 @@ index 57dfcdd..7be9799 100644 1.9.1 -From 96484913c3933288e2d9e8b79af17434af727805 Mon Sep 17 00:00:00 2001 +From cbf5266cd198d52fc261646194f641e6d0a0a9ca Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 11 Jan 2014 18:23:42 +0000 -Subject: [PATCH 39/83] [rbp] Don't force dvdplayer for airplay +Subject: [PATCH 39/82] [rbp] Don't force dvdplayer for airplay --- xbmc/network/AirPlayServer.cpp | 2 ++ @@ -8840,10 +8840,10 @@ index 127a765..13b7ead 100644 1.9.1 -From 30f3af7363d002105cb4e027382d7cfdfd2ef72c Mon Sep 17 00:00:00 2001 +From 9d931d435e57c5caad74b885f4a9c8fb42e4d2f6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 13 Jan 2014 13:11:06 +0000 -Subject: [PATCH 40/83] [rbp] Give plugins omxplayer when they request +Subject: [PATCH 40/82] [rbp] Give plugins omxplayer when they request dvdplayer on pi --- @@ -8870,10 +8870,10 @@ index 16f0174..b172d47 100644 1.9.1 -From 26e12cd0b54de28ba460ccf07e9d255869291881 Mon Sep 17 00:00:00 2001 +From 993e3c5c2ab97da4c58766f5bc4a7deadfe377bd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 14 Jan 2014 18:04:07 +0000 -Subject: [PATCH 41/83] [rbp] Allow ALSA to be chosen in addition to Pi sink +Subject: [PATCH 41/82] [rbp] Allow ALSA to be chosen in addition to Pi sink Needs --enable-alsa in ./configure step and alsa support on platform --- @@ -8883,7 +8883,7 @@ Needs --enable-alsa in ./configure step and alsa support on platform 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/configure.in b/configure.in -index d1e410a..c76837d 100644 +index d8d06df..4c0e6cb 100644 --- a/configure.in +++ b/configure.in @@ -742,7 +742,6 @@ case $use_platform in @@ -8965,10 +8965,10 @@ index e493123..7df6807 100644 1.9.1 -From dd04c983bc1178707fd2efd7ca859a879028c3d2 Mon Sep 17 00:00:00 2001 +From d64e1a4ff472a4c9f42b03f5276b4442d5800597 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 16 Jan 2014 01:39:29 +0000 -Subject: [PATCH 42/83] [omxcodec] Add hardware decode to dvdplayer for Pi +Subject: [PATCH 42/82] [omxcodec] Add hardware decode to dvdplayer for Pi Hijack the abandoned OpenMaxVideo codec --- @@ -8994,7 +8994,7 @@ Hijack the abandoned OpenMaxVideo codec delete mode 100644 xbmc/cores/dvdplayer/DVDCodecs/Video/OpenMax.h diff --git a/configure.in b/configure.in -index c76837d..e6ef909 100644 +index 4c0e6cb..d5146d7 100644 --- a/configure.in +++ b/configure.in @@ -1948,9 +1948,24 @@ if test "$host_vendor" = "apple" ; then @@ -9109,10 +9109,10 @@ index 6832721..3503988 100644 #ifdef TARGET_DARWIN else if(pic.format == RENDER_FMT_CVBREF) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp -index a7445d3..2894229 100644 +index 14ad038..18b8e3a 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp -@@ -275,9 +275,12 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne +@@ -270,9 +270,12 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne #endif #if defined(HAVE_LIBOPENMAX) @@ -12024,62 +12024,38 @@ index 54d35aa..5b9c2f9 100644 1.9.1 -From 2acac842df4a1144fc892ac6643cfa6390c36ca7 Mon Sep 17 00:00:00 2001 +From 61527af6dd76855efbd326672af2095ccdfb2c8e Mon Sep 17 00:00:00 2001 From: popcornmix -Date: Mon, 20 Jan 2014 16:03:40 +0000 -Subject: [PATCH 43/83] [omxcodec] Enable for dvd menus +Date: Sat, 3 May 2014 11:57:25 +0100 +Subject: [PATCH 43/82] [omxcodec] Enable for dvd menus --- - xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) + xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 4 ++++ + 1 file changed, 4 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp -index 2894229..72f87ea 100644 +index 18b8e3a..c85c8d2 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp -@@ -193,14 +193,15 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne - #endif +@@ -194,6 +194,10 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne CLog::Log(LOGDEBUG, "CDVDFactoryCodec: compiled in hardware support: %s", hwSupport.c_str()); --#if defined(HAS_LIBAMCODEC) -- // amcodec can handle dvd playback. -- if (!CSettings::Get().GetBool("videoplayer.useamcodec")) -+#if defined(HAS_LIBAMCODEC) || defined(HAVE_LIBOPENMAX) -+ // amcodec and libopenmax can handle dvd playback. -+ if (!CSettings::Get().GetBool("videoplayer.useamcodec") && !CSettings::Get().GetBool("videoplayer.useomx")) - #endif + ++#if defined(HAVE_LIBOPENMAX) ++ // libopenmax can handle dvd playback including stills ++ if (!CSettings::Get().GetBool("videoplayer.useomx")) ++#endif + if (hint.stills && (hint.codec == AV_CODEC_ID_MPEG2VIDEO || hint.codec == AV_CODEC_ID_MPEG1VIDEO)) { - // dvd's have weird still-frames in it, which is not fully supported in ffmpeg - if(hint.stills && (hint.codec == AV_CODEC_ID_MPEG2VIDEO || hint.codec == AV_CODEC_ID_MPEG1VIDEO)) - { -+ CLog::Log(LOGINFO, "LibMpeg2 Video Decoder..."); - if( (pCodec = OpenCodec(new CDVDVideoCodecLibMpeg2(), hint, options)) ) return pCodec; - } - } -@@ -282,6 +283,7 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne - hint.codec == AV_CODEC_ID_VP6 || hint.codec == AV_CODEC_ID_VP6F || hint.codec == AV_CODEC_ID_VP6A || hint.codec == AV_CODEC_ID_VP8 || - hint.codec == AV_CODEC_ID_THEORA || hint.codec == AV_CODEC_ID_MJPEG || hint.codec == AV_CODEC_ID_MJPEGB || hint.codec == AV_CODEC_ID_VC1 || hint.codec == AV_CODEC_ID_WMV3) - { -+ CLog::Log(LOGINFO, "OpenMax Video Decoder..."); - if ( (pCodec = OpenCodec(new CDVDVideoCodecOpenMax(), hint, options)) ) return pCodec; - } - } -@@ -321,6 +323,7 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne - - CStdString value = StringUtils::Format("%d", surfaces); - options.m_keys.push_back(CDVDCodecOption("surfaces", value)); -+ CLog::Log(LOGINFO, "FFMpeg Software Video Decoder..."); - if( (pCodec = OpenCodec(new CDVDVideoCodecFFmpeg(), hint, options)) ) return pCodec; - - return NULL; + // If dvd is an mpeg2 and hint.stills -- 1.9.1 -From 18f350ea95d4cf2e05f8da46bb92b92f71e02657 Mon Sep 17 00:00:00 2001 +From f29a8f77fabfc26a2b7160468c5376aa1b13259f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 22:27:44 +0000 -Subject: [PATCH 44/83] [omxcodec] Add omx specific texture +Subject: [PATCH 44/82] [omxcodec] Add omx specific texture create/upload/delete functions --- @@ -12157,10 +12133,10 @@ index 0ca56a2..f3dd3d3 100644 1.9.1 -From d0bdfa4d5584ca02941a11ba2a0590d9e1aa3fdc Mon Sep 17 00:00:00 2001 +From e2ab5f85821b16f1f0212778864a4b3235cb89ca Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 22:50:43 +0000 -Subject: [PATCH 45/83] [omxcodec] Add shared pointer to delay shutdown of +Subject: [PATCH 45/82] [omxcodec] Add shared pointer to delay shutdown of codec until buffers are returned --- @@ -12341,10 +12317,10 @@ index 9079c13..0975e8a 100644 1.9.1 -From 91902d82371789fe809fe84a04ac4d0aadf7e073 Mon Sep 17 00:00:00 2001 +From 8d2635be75e2ca86af4ca27982d962ceea6e2527 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 23:11:31 +0000 -Subject: [PATCH 46/83] [omxcodec] Fix for aspect ratio in non-square pixel +Subject: [PATCH 46/82] [omxcodec] Fix for aspect ratio in non-square pixel modes --- @@ -12433,10 +12409,10 @@ index 0975e8a..9138a20 100644 1.9.1 -From 417bd1332646d7acfc7fb0eaeff63597ae6b0cf1 Mon Sep 17 00:00:00 2001 +From 5e01b77d2fe7017237ba03f074f67d0746e5b7aa Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 23:19:22 +0000 -Subject: [PATCH 47/83] [omxcodec] Report error when codec not enabled +Subject: [PATCH 47/82] [omxcodec] Report error when codec not enabled --- xbmc/cores/dvdplayer/DVDCodecs/Video/OpenMaxVideo.cpp | 10 +++++++++- @@ -12481,10 +12457,10 @@ index 7e23c87..2ae722b 100644 1.9.1 -From 998c68223efb9606fe02449bfaf9eaffb6b86adb Mon Sep 17 00:00:00 2001 +From 4d5fd48d07dd6a7e443ae0e85c06f727cf6a4195 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 4 Feb 2014 17:29:37 +0000 -Subject: [PATCH 48/83] [omxcodec] Add deinterlace support +Subject: [PATCH 48/82] [omxcodec] Add deinterlace support --- xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 2 +- @@ -12721,10 +12697,10 @@ index 9138a20..c8ad4d8 100644 1.9.1 -From 26d887dc18bd74412747f1e928fd4cb4011735ed Mon Sep 17 00:00:00 2001 +From b43a724264545666da6ae242d3f94e451a48b176 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 12 Feb 2014 18:43:14 +0000 -Subject: [PATCH 49/83] Improved file buffering in CArchive. +Subject: [PATCH 49/82] Improved file buffering in CArchive. CArchive already did some file buffering, but only on writes. Added the equivalent code for reads. Also improved the write buffer case so that it @@ -13114,10 +13090,10 @@ index 0148fcb..5b25be5 100644 1.9.1 -From 85ef87b0f82e5570a80ab10137388e6bfa07af81 Mon Sep 17 00:00:00 2001 +From 81a4a402817e19bc2407ba9aa2db32778edc09a8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 5 Feb 2014 11:46:33 +0000 -Subject: [PATCH 50/83] [rbp/settings] Allow av sync type to be enabled +Subject: [PATCH 50/82] [rbp/settings] Allow av sync type to be enabled It works for dvdplayer --- @@ -13146,10 +13122,10 @@ index 2b7d0a6..1429256 100644 1.9.1 -From 93b4fd19546915540c35608124bb4f4fb4ec49e8 Mon Sep 17 00:00:00 2001 +From 78e3ec1bf716470ce723ef8dabd32c7ee199935c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 16 Feb 2014 17:38:05 +0000 -Subject: [PATCH 51/83] [omxcodec] Only do essential calls in texture thread +Subject: [PATCH 51/82] [omxcodec] Only do essential calls in texture thread [omxcodec] Fix for files with no valid pts values. [omxcodec] Fix stall on seek/trickplay - need to reset start flag [omxcodec] Make sure we have a valid context when video decode starts before first fanart is decoded @@ -13499,10 +13475,10 @@ index c8ad4d8..f234f6d 100644 1.9.1 -From 96a8870d2eb10971d1c9587b1be76582efa84c51 Mon Sep 17 00:00:00 2001 +From fb65d2621b31a32887b1c9a87b2d3745e769f9bc Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 1 Mar 2014 14:24:08 +0000 -Subject: [PATCH 52/83] [omxplayer] Allow small audio packets to be +Subject: [PATCH 52/82] [omxplayer] Allow small audio packets to be concatenated to make better use of audio fifo Some audio codecs produce small packets which causes a high overhead when submitting to GPU, and doesn't make full use of GPU side buffering. @@ -13920,10 +13896,10 @@ index 8219015..a4c11777 100644 1.9.1 -From 0ed122b9b04e2c559bc1fd59396920dbad4a775b Mon Sep 17 00:00:00 2001 +From dabeb46d238df15614d7b2491642dea1cd8465e0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 5 Mar 2014 22:10:01 +0000 -Subject: [PATCH 53/83] [omxplayer] Use media for determing audio delay and +Subject: [PATCH 53/82] [omxplayer] Use media for determing audio delay and cache time I've also added caching to the call to OMXMediaTime as the GPU round trip is expensive when called too frequently @@ -14179,10 +14155,10 @@ index d7d06fe..f83074a 100644 1.9.1 -From a3342f94f2b8f4b75a53ac2ddc257d665101df2e Mon Sep 17 00:00:00 2001 +From 90aa97584d11c78fe7cf4a174c7a986132cee683 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 22:24:19 +0000 -Subject: [PATCH 54/83] [omx] Skip the resize when not needed when decoding +Subject: [PATCH 54/82] [omx] Skip the resize when not needed when decoding jpegs The decode to texture path almost always uses cached jpegs that are the correct size, so the resize is rarely needed. @@ -14533,10 +14509,10 @@ index 4456fdb..262a004 100644 1.9.1 -From fe41d3d9cf51c7cfe6821ff83154f2479766c7da Mon Sep 17 00:00:00 2001 +From a4b50b8803784eecc0bbbfe615bdf5c1bb06ea02 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 8 Mar 2014 15:36:06 +0000 -Subject: [PATCH 55/83] [hifiberry] Hack: force it to be recognised as IEC958 +Subject: [PATCH 55/82] [hifiberry] Hack: force it to be recognised as IEC958 capable to enable passthrough options --- @@ -14562,10 +14538,10 @@ index b48a4fc..d9897e5 100644 1.9.1 -From f669848f16fabd3a351f6c524024142374fb8267 Mon Sep 17 00:00:00 2001 +From 610f6374506fd46c19507934dc4bb4fe67014f83 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 11 Mar 2014 18:50:23 +0000 -Subject: [PATCH 56/83] [dvdplayer] Use inexact seeking like omxplayer +Subject: [PATCH 56/82] [dvdplayer] Use inexact seeking like omxplayer --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 11 +++++++++++ @@ -14616,10 +14592,10 @@ index 82d3720..54d22d7 100644 1.9.1 -From 0a24694717fed6ede63fe34f9ef49fdc403567d3 Mon Sep 17 00:00:00 2001 +From 900e95e566685665b5b3b77f128c2a373295333a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 13 Mar 2014 16:08:46 +0000 -Subject: [PATCH 57/83] [omxplayer] Make use of TrueHD fastpath when downmixing +Subject: [PATCH 57/82] [omxplayer] Make use of TrueHD fastpath when downmixing The TrueHD codec actually works in 3 stages. It decodes the downmixed stereo. It then decodes the differences required to produce 5.1. It then decodes the differences required to produce 7.1. @@ -14664,10 +14640,10 @@ index 557e847..7f6ef6e 100644 1.9.1 -From a84b1eff5480fe38c1b2c2c177d0ab415e12f3a3 Mon Sep 17 00:00:00 2001 +From 1fe57923f59748870f472798c021f9c6499b1e6f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 15 Mar 2014 19:38:38 +0000 -Subject: [PATCH 58/83] [omxplayer] When in dual audio mode, make one output +Subject: [PATCH 58/82] [omxplayer] When in dual audio mode, make one output the slave May help audio sync between the two outputs @@ -14701,21 +14677,23 @@ index 3e64de0..72e42ec 100644 1.9.1 -From 3f715d7b1ee8e221ca427cac2ffd0e6e78532172 Mon Sep 17 00:00:00 2001 +From ef683378569fbcd210edd56e97e4299a3e8e8fc2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 30 Dec 2013 12:02:14 +0000 -Subject: [PATCH 59/83] [rbp] Hardware accelerated resampling +Subject: [PATCH 59/82] [rbp] Hardware accelerated resampling This replaces the format conversion, up/down mixing and resampling code from ActiveAE with a GPU accelerated version. Should significantly reduce CPU when using paplayer or dvdplayer. + +Requires updated firmware --- .../Engines/ActiveAE/ActiveAEResample.cpp | 5 + - .../Engines/ActiveAE/ActiveAEResample.h | 6 + - .../Engines/ActiveAE/ActiveAEResamplePi.cpp | 559 +++++++++++++++++++++ - .../Engines/ActiveAE/ActiveAEResamplePi.h | 72 +++ + .../Engines/ActiveAE/ActiveAEResample.h | 9 + + .../Engines/ActiveAE/ActiveAEResamplePi.cpp | 592 +++++++++++++++++++++ + .../Engines/ActiveAE/ActiveAEResamplePi.h | 65 +++ xbmc/cores/AudioEngine/Makefile.in | 1 + xbmc/linux/OMXCore.cpp | 4 +- - 6 files changed, 645 insertions(+), 2 deletions(-) + 6 files changed, 674 insertions(+), 2 deletions(-) create mode 100644 xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp create mode 100644 xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.h @@ -14740,21 +14718,29 @@ index e131f16..94b69a0 100644 } +#endif diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h -index 1e0e342..426d98d 100644 +index 1e0e342..6a8949b 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h -@@ -19,6 +19,10 @@ - * - */ +@@ -21,11 +21,18 @@ -+#ifdef TARGET_RASPBERRY_PI + #include "DllAvUtil.h" + #include "DllSwResample.h" ++ ++#include "system.h" ++ + #include "cores/AudioEngine/Utils/AEChannelInfo.h" + #include "cores/AudioEngine/Utils/AEAudioFormat.h" + #include "cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h" + #include "cores/AudioEngine/Interfaces/AE.h" + ++#if defined(TARGET_RASPBERRY_PI) +#include "ActiveAEResamplePi.h" +#else + - #include "DllAvUtil.h" - #include "DllSwResample.h" - #include "cores/AudioEngine/Utils/AEChannelInfo.h" -@@ -62,3 +66,5 @@ class CActiveAEResample + namespace ActiveAE + { + +@@ -62,3 +69,5 @@ class CActiveAEResample }; } @@ -14762,10 +14748,10 @@ index 1e0e342..426d98d 100644 +#endif diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp new file mode 100644 -index 0000000..4362449 +index 0000000..1d7b425 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp -@@ -0,0 +1,559 @@ +@@ -0,0 +1,592 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org @@ -14790,11 +14776,11 @@ index 0000000..4362449 + +#if defined(TARGET_RASPBERRY_PI) + -+#include "ActiveAEResamplePi.h" ++#include "ActiveAEResample.h" +#include "linux/RBP.h" +#include "cores/omxplayer/PCMRemap.h" +#include "settings/Settings.h" -+#include "lib/ffmpeg/libswresample/swresample_internal.h" ++#include "utils/log.h" + +//#define DEBUG_VERBOSE + @@ -14861,7 +14847,7 @@ index 0000000..4362449 +{ + LOGTIMEINIT("x"); + -+ CLog::Log(LOGINFO, "%s::%s remap:%p chan:%d->%d rate:%d->%d format:%d->%d bits:%d->%d", CLASSNAME, __func__, remapLayout, src_channels, dst_channels, src_rate, dst_rate, src_fmt, dst_fmt, src_bits, dst_bits); ++ CLog::Log(LOGINFO, "%s::%s remap:%p chan:%d->%d rate:%d->%d format:%d->%d bits:%d->%d norm:%d upmix:%d", CLASSNAME, __func__, remapLayout, src_channels, dst_channels, src_rate, dst_rate, src_fmt, dst_fmt, src_bits, dst_bits, normalize, upmix); + if (!m_loaded) + return false; + @@ -14890,14 +14876,20 @@ index 0000000..4362449 +// this code is just uses ffmpeg to produce the 8x8 mixing matrix +{ + // dummy sample rate and format, as we only care about channel mapping -+ SwrContext *m_pContext = m_dllSwResample.swr_alloc_set_opts(NULL, m_dst_chan_layout, AV_SAMPLE_FMT_S16, 48000, -+ m_src_chan_layout, AV_SAMPLE_FMT_S16, 48000, -+ 0, NULL); -+ if(!m_pContext) ++ SwrContext *m_pContext = m_dllSwResample.swr_alloc_set_opts(NULL, m_dst_chan_layout, AV_SAMPLE_FMT_FLT, 48000, ++ m_src_chan_layout, AV_SAMPLE_FMT_FLT, 48000, 0, NULL); ++ if (!m_pContext) + { + CLog::Log(LOGERROR, "CActiveAEResample::Init - create context failed"); + return false; + } ++ // tell resampler to clamp float values ++ // not required for sink stage (remapLayout == true) ++ if (!remapLayout && normalize) ++ { ++ m_dllAvUtil.av_opt_set_double(m_pContext, "rematrix_maxval", 1.0, 0); ++ } ++ + if (remapLayout) + { + // one-to-one mapping of channels @@ -14965,26 +14957,41 @@ index 0000000..4362449 + } + } + -+ if(m_dllSwResample.swr_init(m_pContext) < 0) ++ if (m_dllSwResample.swr_init(m_pContext) < 0) + { + CLog::Log(LOGERROR, "CActiveAEResample::Init - init resampler failed"); + return false; + } + -+ struct SwrContext *context = (struct SwrContext *)m_pContext; -+ for(size_t out = 0; out < 8; ++out) ++ const int samples = 8; ++ uint8_t *output, *input; ++ av_samples_alloc(&output, NULL, m_dst_channels, samples, AV_SAMPLE_FMT_FLT, 1); ++ av_samples_alloc(&input , NULL, m_src_channels, samples, AV_SAMPLE_FMT_FLT, 1); ++ ++ // Produce "identity" samples ++ float *f = (float *)input; ++ for (int j=0; j < samples; j++) ++ for (int i=0; i < m_src_channels; i++) ++ *f++ = i == j ? 1.0f : 0.0f; ++ ++ int ret = m_dllSwResample.swr_convert(m_pContext, &output, samples, (const uint8_t **)&input, samples); ++ if (ret < 0) ++ CLog::Log(LOGERROR, "CActiveAEResample::Resample - resample failed"); ++ ++ f = (float *)output; ++ for (int j=0; j < samples; j++) ++ for (int i=0; i < m_dst_channels; i++) ++ mix.coeff[8*i+j] = *f++ * (1<<16); ++ ++ for (int j=0; j < 8; j++) + { + char s[128] = {}, *t=s; -+ for(size_t in = 0; in < 8; ++in) -+ { -+ if (context->rematrix) -+ mix.coeff[out*8+in] = static_cast(0x10000 * context->matrix[out][in]); -+ else -+ mix.coeff[out*8+in] = in == out ? 0x10000 : 0; -+ t += sprintf(t, "% 6.2f ", mix.coeff[out*8+in] * (1.0/0x10000)); -+ } ++ for (int i=0; i < 8; i++) ++ t += sprintf(t, "% 6.2f ", mix.coeff[j*8+i] * (1.0/0x10000)); + CLog::Log(LOGINFO, "%s::%s %s", CLASSNAME, __func__, s); + } ++ av_freep(&input); ++ av_freep(&output); + m_dllSwResample.swr_free(&m_pContext); +} + LOGTIME(2); @@ -15106,66 +15113,78 @@ index 0000000..4362449 + OMX_ERRORTYPE omx_err = OMX_ErrorNone; + + const int s_pitch = m_pcm_input.nChannels * m_src_bits >> 3; -+ OMX_BUFFERHEADERTYPE *omx_buffer = NULL; -+ OMX_BUFFERHEADERTYPE *m_encoded_buffer = NULL; -+ -+ omx_buffer = m_omx_mixer.GetInputBuffer(1000); -+ if (omx_buffer == NULL) -+ return false; -+ -+ omx_buffer->nOffset = omx_buffer->nFlags = 0; -+ omx_buffer->nFilledLen = src_samples * s_pitch; -+ -+ assert(omx_buffer->nFilledLen <= omx_buffer->nAllocLen); -+ -+ if (omx_buffer->nFilledLen) -+ memcpy(omx_buffer->pBuffer, src_buffer[0], omx_buffer->nFilledLen); -+ -+ omx_buffer->nFlags |= OMX_BUFFERFLAG_EOS; -+ -+ omx_err = m_omx_mixer.EmptyThisBuffer(omx_buffer); -+ if (omx_err != OMX_ErrorNone) -+ { -+ CLog::Log(LOGERROR, "%s::%s OMX_EmptyThisBuffer() failed with result(0x%x)", CLASSNAME, __func__, omx_err); -+ return false; -+ } -+ -+ m_encoded_buffer = m_omx_mixer.GetOutputBuffer(); -+ -+ if (!m_encoded_buffer) -+ { -+ CLog::Log(LOGERROR, "%s::%s no output buffer", CLASSNAME, __func__); -+ return false; -+ } -+ -+ omx_err = m_omx_mixer.FillThisBuffer(m_encoded_buffer); -+ if (omx_err != OMX_ErrorNone) -+ return false; -+ -+ omx_err = m_omx_mixer.WaitForOutputDone(1000); -+ if (omx_err != OMX_ErrorNone) -+ { -+ CLog::Log(LOGERROR, "%s::%s m_omx_mixer.WaitForOutputDone result(0x%x)", CLASSNAME, __func__, omx_err); -+ return false; -+ } + const int d_pitch = m_pcm_output.nChannels * m_dst_bits >> 3; -+ int ret = m_encoded_buffer->nFilledLen / d_pitch; -+ assert(m_encoded_buffer->nFilledLen <= m_encoded_buffer->nAllocLen); -+ -+ if (m_omx_mixer.BadState()) ++ int sent = 0; ++ int received = 0; ++ while (sent < src_samples) + { -+ CLog::Log(LOGERROR, "%s::%s m_omx_mixer.BadState", CLASSNAME, __func__); -+ return false; ++ OMX_BUFFERHEADERTYPE *omx_buffer = NULL; ++ OMX_BUFFERHEADERTYPE *m_encoded_buffer = NULL; ++ ++ omx_buffer = m_omx_mixer.GetInputBuffer(1000); ++ if (omx_buffer == NULL) ++ return false; ++ ++ const int max_src_samples = BUFFERSIZE / s_pitch; ++ const int max_dst_samples = (long long)(BUFFERSIZE/d_pitch) * m_src_rate / (m_dst_rate + m_src_rate-1); ++ int send = std::min(std::min(max_dst_samples, max_src_samples), src_samples - sent); ++ ++ omx_buffer->nOffset = 0; ++ omx_buffer->nFlags = OMX_BUFFERFLAG_EOS; ++ omx_buffer->nFilledLen = send * s_pitch; ++ ++ assert(omx_buffer->nFilledLen > 0 && omx_buffer->nFilledLen <= omx_buffer->nAllocLen); ++ ++ if (omx_buffer->nFilledLen) ++ { ++ memcpy(omx_buffer->pBuffer, src_buffer[0] + sent * s_pitch, omx_buffer->nFilledLen); ++ sent += send; ++ } ++ ++ omx_err = m_omx_mixer.EmptyThisBuffer(omx_buffer); ++ if (omx_err != OMX_ErrorNone) ++ { ++ CLog::Log(LOGERROR, "%s::%s OMX_EmptyThisBuffer() failed with result(0x%x)", CLASSNAME, __func__, omx_err); ++ return false; ++ } ++ ++ m_encoded_buffer = m_omx_mixer.GetOutputBuffer(); ++ ++ if (!m_encoded_buffer) ++ { ++ CLog::Log(LOGERROR, "%s::%s no output buffer", CLASSNAME, __func__); ++ return false; ++ } ++ ++ omx_err = m_omx_mixer.FillThisBuffer(m_encoded_buffer); ++ if (omx_err != OMX_ErrorNone) ++ return false; ++ ++ omx_err = m_omx_mixer.WaitForOutputDone(1000); ++ if (omx_err != OMX_ErrorNone) ++ { ++ CLog::Log(LOGERROR, "%s::%s m_omx_mixer.WaitForOutputDone result(0x%x)", CLASSNAME, __func__, omx_err); ++ return false; ++ } ++ assert(m_encoded_buffer->nFilledLen > 0 && m_encoded_buffer->nFilledLen <= m_encoded_buffer->nAllocLen); ++ ++ if (m_omx_mixer.BadState()) ++ { ++ CLog::Log(LOGERROR, "%s::%s m_omx_mixer.BadState", CLASSNAME, __func__); ++ return false; ++ } ++ ++ if (m_encoded_buffer->nFilledLen) ++ { ++ memcpy(dst_buffer[0] + received * d_pitch, m_encoded_buffer->pBuffer, m_encoded_buffer->nFilledLen); ++ received += m_encoded_buffer->nFilledLen / d_pitch; ++ } + } -+ -+ if (m_encoded_buffer->nFilledLen) -+ memcpy(dst_buffer[0], m_encoded_buffer->pBuffer, m_encoded_buffer->nFilledLen); -+ + #ifdef DEBUG_VERBOSE + CLog::Log(LOGINFO, "%s::%s format:%d->%d rate:%d->%d chan:%d->%d samples %d->%d (%f) %d =%d", CLASSNAME, __func__, -+ (int)m_src_fmt, (int)m_dst_fmt, m_src_rate, m_dst_rate, m_src_channels, m_dst_channels, src_samples, dst_samples, ratio, m_Initialized, ret); ++ (int)m_src_fmt, (int)m_dst_fmt, m_src_rate, m_dst_rate, m_src_channels, m_dst_channels, src_samples, dst_samples, ratio, m_Initialized, received); + #endif -+ return ret; ++ return received; +} + +int64_t CActiveAEResample::GetDelay(int64_t base) @@ -15327,10 +15346,10 @@ index 0000000..4362449 +#endif diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.h new file mode 100644 -index 0000000..b3fcb15 +index 0000000..8371c33 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.h -@@ -0,0 +1,72 @@ +@@ -0,0 +1,65 @@ +#pragma once +/* + * Copyright (C) 2010-2013 Team XBMC @@ -15352,13 +15371,6 @@ index 0000000..b3fcb15 + * + */ + -+#include "DllAvUtil.h" -+#include "DllSwResample.h" -+#include "Utils/AEChannelInfo.h" -+#include "Utils/AEAudioFormat.h" -+#include "ActiveAEBuffer.h" -+#include "Interfaces/AE.h" -+ +#include "linux/OMXCore.h" + +namespace ActiveAE @@ -15441,10 +15453,10 @@ index 99e407a..8d3c86a 100644 1.9.1 -From d9c422a3f4aa62e33e65526eac4335b5c5aa4d39 Mon Sep 17 00:00:00 2001 +From 9b907399064c27bdfaa26ee0d6b4a123e3e42688 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 27 Mar 2014 00:22:05 +0000 -Subject: [PATCH 60/83] [PiResample] Work around AE not providing correct +Subject: [PATCH 60/82] [PiResample] Work around AE not providing correct src_bits --- @@ -15452,7 +15464,7 @@ Subject: [PATCH 60/83] [PiResample] Work around AE not providing correct 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp -index 4362449..239c2a6 100644 +index 1d7b425..a91e208 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp @@ -97,16 +97,25 @@ bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst @@ -15487,10 +15499,10 @@ index 4362449..239c2a6 100644 1.9.1 -From 0e7427498cb1131671f6fe9d054245ae7e5a36f5 Mon Sep 17 00:00:00 2001 +From 3081d29f0f7ea7c20a626b625b122334feea8825 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 25 Mar 2014 19:43:07 +0000 -Subject: [PATCH 61/83] [ffmpeg] Speed up wtv index creation +Subject: [PATCH 61/82] [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. @@ -15540,10 +15552,10 @@ index e423370..70898bd 100644 1.9.1 -From 271b73d90c37c7370aeb968887073dcfe85ed379 Mon Sep 17 00:00:00 2001 +From b22c9d0c740be0e19d85eac662f8b393d2e7d795 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 18:19:32 +0100 -Subject: [PATCH 62/83] [rbp/omxplayer] When opening a stream don't try to +Subject: [PATCH 62/82] [rbp/omxplayer] When opening a stream don't try to update gui so often --- @@ -15570,10 +15582,10 @@ index e9ba7d3..0fdc3c2 100644 1.9.1 -From 666b2f66cdce3b51fc6ba4cca5ed5d0134a50500 Mon Sep 17 00:00:00 2001 +From 1fc2153e5e1a678a38c9f134fa06c7d78bb62ffd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 15:28:57 +0100 -Subject: [PATCH 63/83] [omxcodec] Clamp video texture at edges to avoid image +Subject: [PATCH 63/82] [omxcodec] Clamp video texture at edges to avoid image wrapping --- @@ -15597,107 +15609,10 @@ index a57abe4..e22a153 100644 1.9.1 -From 96313752be7157d96f3cb59121efdab8ea814567 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Sun, 6 Apr 2014 18:35:58 +0100 -Subject: [PATCH 64/83] [PiSink] Grab resample coefficients by submitting - identity samples - ---- - .../Engines/ActiveAE/ActiveAEResamplePi.cpp | 49 +++++++++++++++------- - 1 file changed, 35 insertions(+), 14 deletions(-) - -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp -index 239c2a6..970d0c3 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp -@@ -93,7 +93,7 @@ bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst - { - LOGTIMEINIT("x"); - -- CLog::Log(LOGINFO, "%s::%s remap:%p chan:%d->%d rate:%d->%d format:%d->%d bits:%d->%d", CLASSNAME, __func__, remapLayout, src_channels, dst_channels, src_rate, dst_rate, src_fmt, dst_fmt, src_bits, dst_bits); -+ CLog::Log(LOGINFO, "%s::%s remap:%p chan:%d->%d rate:%d->%d format:%d->%d bits:%d->%d norm:%d upmix:%d", CLASSNAME, __func__, remapLayout, src_channels, dst_channels, src_rate, dst_rate, src_fmt, dst_fmt, src_bits, dst_bits, normalize, upmix); - if (!m_loaded) - return false; - -@@ -131,14 +131,20 @@ bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst - // this code is just uses ffmpeg to produce the 8x8 mixing matrix - { - // dummy sample rate and format, as we only care about channel mapping -- SwrContext *m_pContext = m_dllSwResample.swr_alloc_set_opts(NULL, m_dst_chan_layout, AV_SAMPLE_FMT_S16, 48000, -- m_src_chan_layout, AV_SAMPLE_FMT_S16, 48000, -- 0, NULL); -+ SwrContext *m_pContext = m_dllSwResample.swr_alloc_set_opts(NULL, m_dst_chan_layout, AV_SAMPLE_FMT_FLT, 48000, -+ m_src_chan_layout, AV_SAMPLE_FMT_FLT, 48000, 0, NULL); - if(!m_pContext) - { - CLog::Log(LOGERROR, "CActiveAEResample::Init - create context failed"); - return false; - } -+ // tell resampler to clamp float values -+ // not required for sink stage (remapLayout == true) -+ if (!remapLayout && normalize) -+ { -+ av_opt_set_double(m_pContext, "rematrix_maxval", 1.0, 0); -+ } -+ - if (remapLayout) - { - // one-to-one mapping of channels -@@ -212,20 +218,35 @@ bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst - return false; - } - -- struct SwrContext *context = (struct SwrContext *)m_pContext; -- for(size_t out = 0; out < 8; ++out) -+ const int samples = 8; -+ uint8_t *output, *input; -+ av_samples_alloc(&output, NULL, m_dst_channels, samples, AV_SAMPLE_FMT_FLT, 1); -+ av_samples_alloc(&input , NULL, m_src_channels, samples, AV_SAMPLE_FMT_FLT, 1); -+ -+ // Produce "identity" samples -+ float *f = (float *)input; -+ for (int j=0; j < samples; j++) -+ for (int i=0; i < m_src_channels; i++) -+ *f++ = i == j ? 1.0f : 0.0f; -+ -+ int ret = m_dllSwResample.swr_convert(m_pContext, &output, samples, (const uint8_t **)&input, samples); -+ if (ret < 0) -+ CLog::Log(LOGERROR, "CActiveAEResample::Resample - resample failed"); -+ -+ f = (float *)output; -+ for (int j=0; j < samples; j++) -+ for (int i=0; i < m_dst_channels; i++) -+ mix.coeff[8*i+j] = *f++ * (1<<16); -+ -+ for (int j=0; j < 8; j++) - { - char s[128] = {}, *t=s; -- for(size_t in = 0; in < 8; ++in) -- { -- if (context->rematrix) -- mix.coeff[out*8+in] = static_cast(0x10000 * context->matrix[out][in]); -- else -- mix.coeff[out*8+in] = in == out ? 0x10000 : 0; -- t += sprintf(t, "% 6.2f ", mix.coeff[out*8+in] * (1.0/0x10000)); -- } -+ for (int i=0; i < 8; i++) -+ t += sprintf(t, "% 6.2f ", mix.coeff[j*8+i] * (1.0/0x10000)); - CLog::Log(LOGINFO, "%s::%s %s", CLASSNAME, __func__, s); - } -+ av_freep(&input); -+ av_freep(&output); - m_dllSwResample.swr_free(&m_pContext); - } - LOGTIME(2); --- -1.9.1 - - -From b9c90df1a8f702ce2cfce23a648120ba635c849f Mon Sep 17 00:00:00 2001 +From e3aee3567c3fe5de173309cd9dfb08e8a00f72ab Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 17:36:19 +0100 -Subject: [PATCH 65/83] [PiSink] Remove unneeded header and use CAEChannelInfo +Subject: [PATCH 64/82] [PiSink] Remove unneeded header and use CAEChannelInfo directly --- @@ -15706,16 +15621,16 @@ Subject: [PATCH 65/83] [PiSink] Remove unneeded header and use CAEChannelInfo 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp -index 970d0c3..89d7f04 100644 +index a91e208..60c5e04 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResamplePi.cpp @@ -24,7 +24,6 @@ - #include "ActiveAEResamplePi.h" + #include "ActiveAEResample.h" #include "linux/RBP.h" -#include "cores/omxplayer/PCMRemap.h" #include "settings/Settings.h" - #include "lib/ffmpeg/libswresample/swresample_internal.h" + #include "utils/log.h" diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp index 9ce00e3..070e6eb 100644 @@ -15773,10 +15688,10 @@ index 9ce00e3..070e6eb 100644 1.9.1 -From 3f0441cb1be84cac4b40de705587791c1a7a3ae3 Mon Sep 17 00:00:00 2001 +From 433033cb9d6b09d6cb197d720684b17f4e1f191e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 17:37:41 +0100 -Subject: [PATCH 66/83] [omxplayer] Remove PCMRemap and handle multichannel +Subject: [PATCH 65/82] [omxplayer] Remove PCMRemap and handle multichannel mixing like ActiveAE does --- @@ -17437,10 +17352,10 @@ index a273cd1..0000000 1.9.1 -From 9f1bad93a8036d78112efeaa0e8e04b0582e981f Mon Sep 17 00:00:00 2001 +From 4d5d9f6fb037054cfcb24c2754be66adb2074f1a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 13 Apr 2014 15:13:10 +0100 -Subject: [PATCH 67/83] [omxplayer] Fix for 3d video in mono mode +Subject: [PATCH 66/82] [omxplayer] Fix for 3d video in mono mode The test for no aspect wasn't correct, causing large black bars --- @@ -17464,10 +17379,10 @@ index 66a351d..f058a35 100644 1.9.1 -From 4374eb1fe8c059d79db3028f5c660734daf02a11 Mon Sep 17 00:00:00 2001 +From 3253514ad38a4511453472519aad497b1e4098f6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 10 Apr 2014 17:19:18 +0100 -Subject: [PATCH 68/83] [omxplayer] Remove unused framerate functions +Subject: [PATCH 67/82] [omxplayer] Remove unused framerate functions --- xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 4 +--- @@ -17574,10 +17489,10 @@ index f83074a..7bb6d4d 100644 1.9.1 -From 467be46de42344b3c1b4d30706c81750233a3430 Mon Sep 17 00:00:00 2001 +From 53bf84fb932252e29407a0d990ca236e617ac9d0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 30 Mar 2014 15:54:34 +0100 -Subject: [PATCH 69/83] [omxplayer] Make the sharpness control act as a +Subject: [PATCH 68/82] [omxplayer] Make the sharpness control act as a sharpness control. This fixes scaling kernel as Mitchell Netravali, and varies sharpness over range B=[5/3,0] C=[-1/3,1/2] @@ -17959,10 +17874,10 @@ index 0b80be5..463ef3c 100644 1.9.1 -From 00aa4694c39efeb3f390460be241225c35e82b3a Mon Sep 17 00:00:00 2001 +From c6bd5a9626ace32a5818f7ff96e09eed9793e4e3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 10 Apr 2014 17:24:51 +0100 -Subject: [PATCH 70/83] [rpi] Include ntsc frequencies in list of supported +Subject: [PATCH 69/82] [rpi] Include ntsc frequencies in list of supported resolutions --- @@ -18096,10 +18011,10 @@ index 0c32947..258a293 100644 1.9.1 -From af33db21c79e310d8d092843233c771862f9964f Mon Sep 17 00:00:00 2001 +From c6d6722f9d8e2e69ca0e9254db48956e641aa88f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 10 Apr 2014 17:26:20 +0100 -Subject: [PATCH 71/83] [omxplayer] Allow a framerate callback from GPU to +Subject: [PATCH 70/82] [omxplayer] Allow a framerate callback from GPU to trigger a hdmi mode change --- @@ -18239,10 +18154,10 @@ index d69f854..fd23e70 100644 1.9.1 -From d61056fc831bb53f7bf4099e64d4686afc8d8924 Mon Sep 17 00:00:00 2001 +From 03a5b92017e8e3f64e7653707889f80eb3898eaa Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 11 Apr 2014 19:01:26 +0100 -Subject: [PATCH 72/83] [omxplayer] Request to be notified about framerate +Subject: [PATCH 71/82] [omxplayer] Request to be notified about framerate changes --- @@ -18285,10 +18200,10 @@ index 02bf554..1b1711d 100644 1.9.1 -From 7304071cd5feb2ccddbf260fd3bf1acc2ff2ecc7 Mon Sep 17 00:00:00 2001 +From bec1b704745f99692a032f34145048e0ca638b72 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 16 Apr 2014 21:18:06 +0100 -Subject: [PATCH 73/83] [omxplayer] Don't propagate 3d flags based on supported +Subject: [PATCH 72/82] [omxplayer] Don't propagate 3d flags based on supported 3d modes --- @@ -18344,10 +18259,10 @@ index e9010b1..c170cfb 100644 1.9.1 -From 2c5472ee675832ef369484103bb414ac447f3c5f Mon Sep 17 00:00:00 2001 +From 69625a16f0782665c7e679709e8df2241f05e403 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Apr 2014 17:04:57 +0100 -Subject: [PATCH 74/83] [omxplayer] Support stereo view modes with scaling +Subject: [PATCH 73/82] [omxplayer] Support stereo view modes with scaling The Pi only supported a single view rectangle, which is sufficient for all mono view modes, but only supports a subset of stereo modes. @@ -18625,10 +18540,10 @@ index fd23e70..226000e 100644 1.9.1 -From ab5013b3411e86975483aeade34acbfda2e1d659 Mon Sep 17 00:00:00 2001 +From 180f60d45ad433a4d88d2e60afe5bf5a10335b68 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:00:52 +0100 -Subject: [PATCH 75/83] [graphics] Don't set stereo mode based on resolution +Subject: [PATCH 74/82] [graphics] Don't set stereo mode based on resolution The resolution change should follow stereo mode --- @@ -18672,10 +18587,10 @@ index 5bffdf5..7e4fdd4 100644 1.9.1 -From e0bbc916004657c70e720f9390044e40723e5bfe Mon Sep 17 00:00:00 2001 +From adb18a912dc0f372cb8cd660788084aa3af2f76f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:01:51 +0100 -Subject: [PATCH 76/83] [graphics] Allow switching to a more suitable 3D +Subject: [PATCH 75/82] [graphics] Allow switching to a more suitable 3D resolution --- @@ -18765,10 +18680,10 @@ index 0a27643..df55e92 100644 1.9.1 -From e93be21404653953e01149952cc4fe54674870b3 Mon Sep 17 00:00:00 2001 +From 9735d15aea54276390ddb1de76d30a01e682fd46 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:38:55 +0100 -Subject: [PATCH 77/83] [3D] Support switching to 3D resolutions +Subject: [PATCH 76/82] [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. @@ -18853,10 +18768,10 @@ index 970b822..9ca1be1 100644 1.9.1 -From c42ae1bcecdfb55c9c04106fc010a06186413914 Mon Sep 17 00:00:00 2001 +From bad0a3264c2325cd2e0d46c7ae843655a8660fa5 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 00:05:07 +0100 -Subject: [PATCH 78/83] [graphics] Make pixel ratio for 3d modes consistent +Subject: [PATCH 77/82] [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. @@ -19045,10 +18960,10 @@ index 21b8cc4..4268f78 100644 1.9.1 -From 9c37d9fca8d5d9df7187cb20634b69962b55f30e Mon Sep 17 00:00:00 2001 +From 4fddbf9be5a8cb848238cac45f526c38e8de72e9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 21:07:51 +0100 -Subject: [PATCH 79/83] [PiSink] More attempts to reduce underrun audio +Subject: [PATCH 78/82] [PiSink] More attempts to reduce underrun audio glitches with multichannl and high samplerate --- @@ -19170,10 +19085,10 @@ index 070e6eb..133b9f6 100644 1.9.1 -From 1c4948620aa4c61d42416a7e95615b5cadf48b8f Mon Sep 17 00:00:00 2001 +From 4e81b416739c714554635ebac8cef0545dd37ac0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 22:36:01 +0100 -Subject: [PATCH 80/83] [omxplayer] Fix for aspect ratio of portrait videos +Subject: [PATCH 79/82] [omxplayer] Fix for aspect ratio of portrait videos --- xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 10 ++++++++++ @@ -19204,10 +19119,10 @@ index e9f86f3..7e2c644 100644 1.9.1 -From 5590b0997394197439f4649bca900b5c614b4575 Mon Sep 17 00:00:00 2001 +From 447bb53092a452811175d8d767447793e86c2f95 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 22 Apr 2014 12:23:23 +0100 -Subject: [PATCH 81/83] [omxplayer] Make dvdplayer the default for dvd images +Subject: [PATCH 80/82] [omxplayer] Make dvdplayer the default for dvd images --- xbmc/cores/omxplayer/omxplayer_advancedsettings.xml | 2 +- @@ -19229,10 +19144,10 @@ index 77c6a15..51c0daf 100644 1.9.1 -From ed96fac4a01e21d8ff832c201b303d843bc199d9 Mon Sep 17 00:00:00 2001 +From 38f60de6105d8389e47ed6b97461a90b08c8376c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 26 Apr 2014 17:27:52 +0100 -Subject: [PATCH 82/83] [cec] Don't suspend pi on tv switch off - it can't wake +Subject: [PATCH 81/82] [cec] Don't suspend pi on tv switch off - it can't wake up --- @@ -19256,10 +19171,10 @@ index a906628..9b5271a 100644 1.9.1 -From 08bc84064cfccc7cc541984935bd38070b3d4549 Mon Sep 17 00:00:00 2001 +From 259999998546c54622ba6071f7caf5b51d4356e4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 12 Apr 2014 17:57:19 +0100 -Subject: [PATCH 83/83] [omxplayer] Ignore occasionally valid pts values, they +Subject: [PATCH 82/82] [omxplayer] Ignore occasionally valid pts values, they cause live tv stutter ---