diff --git a/projects/RPi/patches/xbmc/xbmc-001-newclock3.patch b/projects/RPi/patches/xbmc/xbmc-001-newclock3.patch index 891ba8908b..e12c60d0ab 100644 --- a/projects/RPi/patches/xbmc/xbmc-001-newclock3.patch +++ b/projects/RPi/patches/xbmc/xbmc-001-newclock3.patch @@ -1,7 +1,7 @@ -From d2121ba28b7f06885d5a8533188656039b28e5d5 Mon Sep 17 00:00:00 2001 +From 7bf2befa258b3cc8366e2783dda81c7955438ce9 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 11 Dec 2013 17:21:54 +0000 -Subject: [PATCH 01/96] Move the reference-counting of Begin and End calls from +Subject: [PATCH 01/89] Move the reference-counting of Begin and End calls from DX and GL source files into GUIFontTTF.cpp. --- @@ -389,13 +389,13 @@ index c0bb53a..735fb3a 100644 protected: virtual CBaseTexture* ReallocTexture(unsigned int& newHeight); -- -1.9.3 +2.0.3 -From ee2943f3681f2a2023c9383ce5a30a26987d4d7a Mon Sep 17 00:00:00 2001 +From e8c883dee5a9bb2dc3fb3aa4bb5bacd336d515a0 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 11 Dec 2013 18:47:54 +0000 -Subject: [PATCH 02/96] Convert CGUIFontTTFBase::m_vertex to be managed as a +Subject: [PATCH 02/89] Convert CGUIFontTTFBase::m_vertex to be managed as a std::vector. Also retired CGUIFontTTFBase::m_vertex_count and @@ -575,13 +575,13 @@ index 97853fd..b76c6a5 100644 *vertices++ = m_vertex[i]; *vertices++ = m_vertex[i+1]; -- -1.9.3 +2.0.3 -From c54cb2e96f30c0d79420a9ff652ccc33fce71ccf Mon Sep 17 00:00:00 2001 +From ccd62705d24de6bebcaa9a2200b5541cc85a931d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 16 Dec 2013 18:58:12 +0000 -Subject: [PATCH 03/96] CGUIFontTTFBase::RenderCharacter can now append to +Subject: [PATCH 03/89] CGUIFontTTFBase::RenderCharacter can now append to arbitrary vectors of vertices rather than only CGUIFontTTFBase::m_vertex --- @@ -654,13 +654,13 @@ index 10a7060..dde0350 100644 virtual CBaseTexture* ReallocTexture(unsigned int& newHeight) = 0; -- -1.9.3 +2.0.3 -From 4917717ce68ca276c9f9aff2f23f7b8a68a1a927 Mon Sep 17 00:00:00 2001 +From fef6b52103eb065ee1aefb129b25f3e9b0d58c8d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 17:18:38 +0000 -Subject: [PATCH 04/96] Add a cache of font glyph bounding box vertices. +Subject: [PATCH 04/89] 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 @@ -739,7 +739,7 @@ index 137a8cd..15aa46d 100644 E4991321174E5DAD00741B6D /* imagefactory.cpp in Sources */, E4991322174E5DAD00741B6D /* IWindowManagerCallback.cpp in Sources */, diff --git a/project/VS2010Express/XBMC.vcxproj b/project/VS2010Express/XBMC.vcxproj -index 41af74d..6f50def 100644 +index d193c3e..9c1b291 100644 --- a/project/VS2010Express/XBMC.vcxproj +++ b/project/VS2010Express/XBMC.vcxproj @@ -426,6 +426,7 @@ @@ -1427,13 +1427,13 @@ index f351c99..9036ba9 100644 + return !operator==(a, b); +} -- -1.9.3 +2.0.3 -From 6b2133e143b65a3014bacc40b4fb7f89c7769678 Mon Sep 17 00:00:00 2001 +From f5c263b62bd6a6bd1336d4dd5df5b8b41026f4f0 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 23 Jan 2014 22:24:17 +0000 -Subject: [PATCH 05/96] Lay the groundwork for hardware clipping. +Subject: [PATCH 05/89] 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 @@ -1695,13 +1695,13 @@ index 98e398a..81ee49e 100644 virtual void ResetScissors(); -- -1.9.3 +2.0.3 -From 90e76c57ce1799ecfadf188ba83b99b19269fc18 Mon Sep 17 00:00:00 2001 +From 7fe6f021fadfcff01a43af7b58b32b9557d62743 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 23 Jan 2014 16:42:22 +0000 -Subject: [PATCH 06/96] Increase font cache hit rate by keying on the +Subject: [PATCH 06/89] 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 @@ -1902,13 +1902,13 @@ index 77111bc..39bfa52 100644 private: virtual bool FirstBegin() = 0; -- -1.9.3 +2.0.3 -From eb873d30d3539bed1f08e9119a642044f8c7daed Mon Sep 17 00:00:00 2001 +From 12b8624ae6a567b2bfe89831e384e9d62307678b Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 8 Jan 2014 12:16:33 +0000 -Subject: [PATCH 07/96] Rewrite of scrolling text code. +Subject: [PATCH 07/89] 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 @@ -2224,13 +2224,13 @@ index 2cda726..fbc579e 100644 private: void Process(); -- -1.9.3 +2.0.3 -From 4eb928a95b0801dfd3bfaf9e87cd8f84fcf943ca Mon Sep 17 00:00:00 2001 +From c09264f8862f5c8771e2562c6f6f53f3d27a60bc Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Mon, 27 Jan 2014 23:21:10 +0000 -Subject: [PATCH 08/96] Move the application of the translation offsets into +Subject: [PATCH 08/89] 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 @@ -2424,13 +2424,13 @@ index 9935ea4..18c9358 100644 memset(newTexture->GetPixels(), 0, m_textureHeight * newTexture->GetPitch()); if (m_texture) -- -1.9.3 +2.0.3 -From 47cd619aade93c148853fd462a7ce93958306656 Mon Sep 17 00:00:00 2001 +From 166842909fd8fb85af59ee1e7bb2b8ac608cc33a Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 15:28:06 +0000 -Subject: [PATCH 09/96] Rather than applying the translation offsets to the +Subject: [PATCH 09/89] 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. @@ -2574,13 +2574,13 @@ index 81ee49e..d2f9cd1 100644 protected: virtual void SetVSyncImpl(bool enable) = 0; -- -1.9.3 +2.0.3 -From 4b35b86a4c8cc116af48aca9656930b463338e3f Mon Sep 17 00:00:00 2001 +From 0e1ef42bb19193fe9461efab29c65ee9e342ae00 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 29 Jan 2014 13:21:19 +0000 -Subject: [PATCH 10/96] Enable hardware clipping. +Subject: [PATCH 10/89] Enable hardware clipping. --- xbmc/guilib/GUIFontTTF.cpp | 4 ++-- @@ -2653,13 +2653,13 @@ index ea08bf4..b63e337 100644 glUniformMatrix4fv(modelLoc, 1, GL_FALSE, g_matrices.GetMatrix(MM_MODELVIEW)); } -- -1.9.3 +2.0.3 -From f75e7707f0d49ec2d07cbaa05a4f1c2ea2e05a2d Mon Sep 17 00:00:00 2001 +From d753400ecc951482cc6fa96610cec32164a14f58 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 15:32:51 +0000 -Subject: [PATCH 11/96] Move the vertex data across to a vertex buffer object +Subject: [PATCH 11/89] Move the vertex data across to a vertex buffer object just prior to drawing. --- @@ -2710,13 +2710,13 @@ index b63e337..b00055d 100644 // Disable the attributes used by this shader -- -1.9.3 +2.0.3 -From 74aa9f01cd0e8aeebe55cb445371f72969558a0b Mon Sep 17 00:00:00 2001 +From e2787a0e187c7088c55ed972b93ff3279063e2c1 Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Wed, 15 Jan 2014 16:04:04 +0000 -Subject: [PATCH 12/96] Move vertex data into an OpenGL VBO when the font cache +Subject: [PATCH 12/89] 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 @@ -2989,13 +2989,13 @@ index 735fb3a..6102c90 100644 protected: virtual CBaseTexture* ReallocTexture(unsigned int& newHeight); -- -1.9.3 +2.0.3 -From c8c065a5da2d01cfe374d3332d03525d5ad837fa Mon Sep 17 00:00:00 2001 +From da53b7084ba6addfcd952c2daea22b0d1da5a6cc Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 16 Jan 2014 16:29:42 +0000 -Subject: [PATCH 13/96] Switch from glDrawArrays() to glDrawElements(). +Subject: [PATCH 13/89] 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. @@ -3216,13 +3216,13 @@ index 6de3532..258a293 100644 if (m_display != EGL_NO_DISPLAY) -- -1.9.3 +2.0.3 -From c83be3bd099526f034b0f494fbf8e9531a324d1d Mon Sep 17 00:00:00 2001 +From 83a9d39db25adbc13eb53609e508d9c230e5bf52 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 10 Jan 2014 12:10:43 +0000 -Subject: [PATCH 14/96] [rbp] Don't override dvdplayer with omxplayer. +Subject: [PATCH 14/89] [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. @@ -3233,10 +3233,10 @@ This may expose bugs where dvdplayer is incorrectly used as the default player w 1 file changed, 7 deletions(-) diff --git a/xbmc/cores/playercorefactory/PlayerCoreConfig.h b/xbmc/cores/playercorefactory/PlayerCoreConfig.h -index 9524f94..2789bd8 100644 +index c590cca..57b524f 100644 --- a/xbmc/cores/playercorefactory/PlayerCoreConfig.h +++ b/xbmc/cores/playercorefactory/PlayerCoreConfig.h -@@ -88,14 +88,7 @@ friend class CPlayerCoreFactory; +@@ -98,14 +98,7 @@ friend class CPlayerCoreFactory; { case EPC_MPLAYER: // TODO: this hack needs removal until we have a better player selection @@ -3252,13 +3252,13 @@ index 9524f94..2789bd8 100644 case EPC_EXTPLAYER: pPlayer = new CExternalPlayer(callback); break; #if defined(HAS_OMXPLAYER) -- -1.9.3 +2.0.3 -From cb93e3b0da270e0969ec4638df42d3dbd1fdd0c1 Mon Sep 17 00:00:00 2001 +From 5c3ab16d0ee681e27d184d7abba0f731464646d5 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 10 Jan 2014 15:37:41 +0000 -Subject: [PATCH 15/96] [players] Use default players rather than hard coded +Subject: [PATCH 15/89] [players] Use default players rather than hard coded DVDPlayer/PAPlayer --- @@ -3314,13 +3314,13 @@ index 57dfcdd..7be9799 100644 -- -1.9.3 +2.0.3 -From ef23e3a4e9cc8cd3a3828aa25dbef283729eae1e Mon Sep 17 00:00:00 2001 +From 2ba842b1295226fee74cfd70226c8c8dc12da956 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 11 Jan 2014 18:23:42 +0000 -Subject: [PATCH 16/96] [rbp] Don't force dvdplayer for airplay +Subject: [PATCH 16/89] [rbp] Don't force dvdplayer for airplay --- xbmc/network/AirPlayServer.cpp | 2 ++ @@ -3343,13 +3343,13 @@ index 80ea552..497898f 100644 } } -- -1.9.3 +2.0.3 -From 2b72d4c88abdb60a57fa12c852a2b1ce6a77314a Mon Sep 17 00:00:00 2001 +From ba1fb826ab1ec9dc3d00444a0ed752da6047e800 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 13 Jan 2014 13:11:06 +0000 -Subject: [PATCH 17/96] [rbp] Give plugins omxplayer when they request +Subject: [PATCH 17/89] [rbp] Give plugins omxplayer when they request dvdplayer on pi --- @@ -3373,13 +3373,13 @@ index dfdca99..2a819ef 100644 int getPLAYER_CORE_PAPLAYER() { return EPC_PAPLAYER; } int getTRAY_OPEN() { return TRAY_OPEN; } -- -1.9.3 +2.0.3 -From e4e11daf26a79a9b74b393ae3c4b8c40933b60b8 Mon Sep 17 00:00:00 2001 +From d6b49c26226c9e19e4b41189a77f6e32464cdf28 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 14 Jan 2014 18:04:07 +0000 -Subject: [PATCH 18/96] [rbp] Allow ALSA to be chosen in addition to Pi sink +Subject: [PATCH 18/89] [rbp] Allow ALSA to be chosen in addition to Pi sink Needs --enable-alsa in ./configure step and alsa support on platform --- @@ -3389,7 +3389,7 @@ Needs --enable-alsa in ./configure step and alsa support on platform 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/configure.in b/configure.in -index ce82cd4..02306df 100644 +index a9d5f46..000f955 100644 --- a/configure.in +++ b/configure.in @@ -695,7 +695,6 @@ case $use_platform in @@ -3467,13 +3467,13 @@ index e42d973..715b4f1 100644 info.m_deviceInfoList.clear(); -- -1.9.3 +2.0.3 -From 6e44fa59c000735643fa40c038bac2016a367b87 Mon Sep 17 00:00:00 2001 +From 5446229fd1a4ffa4bc4fbecb43128f5478225040 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 16 Jan 2014 01:39:29 +0000 -Subject: [PATCH 19/96] [omxcodec] Add hardware decode to dvdplayer for Pi +Subject: [PATCH 19/89] [omxcodec] Add hardware decode to dvdplayer for Pi Hijack the abandoned OpenMaxVideo codec --- @@ -3495,7 +3495,7 @@ Hijack the abandoned OpenMaxVideo codec 15 files changed, 894 insertions(+), 1099 deletions(-) diff --git a/configure.in b/configure.in -index 02306df..00abb63 100644 +index 000f955..bc7fa35 100644 --- a/configure.in +++ b/configure.in @@ -1929,9 +1929,24 @@ if test "$host_vendor" = "apple" ; then @@ -5953,7 +5953,7 @@ index e06c41d..9079c13 100644 // defined(HAVE_LIBOPENMAX) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index 93df78c..49d5948 100644 +index a2ac2c6..bfff49b 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -2968,7 +2968,9 @@ bool CDVDPlayer::OpenVideoStream(CDVDStreamInfo& hint, bool reset) @@ -6125,13 +6125,13 @@ index 1efb313..b4c8626 100644 bool Deinitialize(); -- -1.9.3 +2.0.3 -From a74bceb3415ba76292e90e031d6f3b9078baf0ef Mon Sep 17 00:00:00 2001 +From 0106c1a2f0204f0d4c2c1d5421a2965b24309b2b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 20 Jan 2014 16:03:40 +0000 -Subject: [PATCH 20/96] [omxcodec] Enable for dvd menus +Subject: [PATCH 20/89] [omxcodec] Enable for dvd menus --- xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 4 ++++ @@ -6153,13 +6153,13 @@ index d58067c..f3fd3e2 100644 { // If dvd is an mpeg2 and hint.stills -- -1.9.3 +2.0.3 -From 42b3309edcfffdbd8e2cf23c54637b7be1aa3a72 Mon Sep 17 00:00:00 2001 +From 57b79441586c16c6e394cfc218f75ca694dc930a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 22:27:44 +0000 -Subject: [PATCH 21/96] [omxcodec] Add omx specific texture +Subject: [PATCH 21/89] [omxcodec] Add omx specific texture create/upload/delete functions --- @@ -6234,13 +6234,13 @@ index 5a6a2be..52df291 100644 // renderers -- -1.9.3 +2.0.3 -From 4895cd2d4cec2c04db9ff98683a3e9fcb1447a20 Mon Sep 17 00:00:00 2001 +From 22ac1cd07fc3a63d0701ee1ca9a1f37764c6f8f6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 22:50:43 +0000 -Subject: [PATCH 22/96] [omxcodec] Add shared pointer to delay shutdown of +Subject: [PATCH 22/89] [omxcodec] Add shared pointer to delay shutdown of codec until buffers are returned --- @@ -6418,13 +6418,13 @@ index 9079c13..0975e8a 100644 std::queue m_dts_queue; std::queue m_demux_queue; -- -1.9.3 +2.0.3 -From 4df98c1fe2d2f67429aeda29e0dd844fe68e271d Mon Sep 17 00:00:00 2001 +From a93b8cc86b82700115bf47441f9913547274c8a6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 23:11:31 +0000 -Subject: [PATCH 23/96] [omxcodec] Fix for aspect ratio in non-square pixel +Subject: [PATCH 23/89] [omxcodec] Fix for aspect ratio in non-square pixel modes --- @@ -6510,13 +6510,13 @@ index 0975e8a..9138a20 100644 bool m_port_settings_changed; const char *m_pFormatName; -- -1.9.3 +2.0.3 -From 16e71dce7ab7e54d0737da0f0476ac0aedd4aaa6 Mon Sep 17 00:00:00 2001 +From 9af09e7f5df3c8ab5a01813ab4af7e05639d789c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Feb 2014 23:19:22 +0000 -Subject: [PATCH 24/96] [omxcodec] Report error when codec not enabled +Subject: [PATCH 24/89] [omxcodec] Report error when codec not enabled --- xbmc/cores/dvdplayer/DVDCodecs/Video/OpenMaxVideo.cpp | 10 +++++++++- @@ -6558,13 +6558,13 @@ index 7e23c87..2ae722b 100644 if (!m_omx_decoder.Initialize("OMX.broadcom.video_decode", OMX_IndexParamVideoInit)) { -- -1.9.3 +2.0.3 -From 9b5eb28227cf9392bedee48c7fbf05544386086b Mon Sep 17 00:00:00 2001 +From bc8f7324e96d0bd001b7787e5620fdf6fa31e829 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 4 Feb 2014 17:29:37 +0000 -Subject: [PATCH 25/96] [omxcodec] Add deinterlace support +Subject: [PATCH 25/89] [omxcodec] Add deinterlace support --- xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 2 +- @@ -6798,13 +6798,13 @@ index 9138a20..c8ad4d8 100644 bool SendDecoderConfig(uint8_t *extradata, int extrasize); bool NaluFormatStartCodes(enum AVCodecID codec, uint8_t *extradata, int extrasize); -- -1.9.3 +2.0.3 -From b9496c96d6edb6a0d5fad13db0076ade3ec52c8e Mon Sep 17 00:00:00 2001 +From e26aa82c6105bc2ef038b7dc866a94fb61ec39f1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 5 Feb 2014 11:46:33 +0000 -Subject: [PATCH 26/96] [rbp/settings] Allow av sync type to be enabled +Subject: [PATCH 26/89] [rbp/settings] Allow av sync type to be enabled It works for dvdplayer --- @@ -6830,13 +6830,13 @@ index 2b7d0a6..1429256 100644 false -- -1.9.3 +2.0.3 -From 5f3c1cdf6d1c20648a699cd80da8c09d88169a52 Mon Sep 17 00:00:00 2001 +From a28f3e8168d78439977ca6c4ba95466bc454cc0d Mon Sep 17 00:00:00 2001 From: Ben Avison Date: Thu, 1 May 2014 16:28:39 +0100 -Subject: [PATCH 27/96] Improved file buffering in CArchive +Subject: [PATCH 27/89] 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 @@ -6896,13 +6896,13 @@ index 6ed0f8f..8506d95 100644 } else -- -1.9.3 +2.0.3 -From cd0056264da4ea5ff2dcdc6f1675585c96d20d0e Mon Sep 17 00:00:00 2001 +From e05ec1ebd161c130430f2250df508b416117a974 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 16 Feb 2014 17:38:05 +0000 -Subject: [PATCH 28/96] [omxcodec] Only do essential calls in texture thread +Subject: [PATCH 28/89] [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 @@ -7249,13 +7249,13 @@ index c8ad4d8..f234f6d 100644 bool SendDecoderConfig(uint8_t *extradata, int extrasize); bool NaluFormatStartCodes(enum AVCodecID codec, uint8_t *extradata, int extrasize); -- -1.9.3 +2.0.3 -From dc94f76254be42735ab2fad0ba3df6cb2896c0e4 Mon Sep 17 00:00:00 2001 +From 6fadcde421ace331b625ab0019e38fecc6373480 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 8 Mar 2014 15:36:06 +0000 -Subject: [PATCH 29/96] [hifiberry] Hack: force it to be recognised as IEC958 +Subject: [PATCH 29/89] [hifiberry] Hack: force it to be recognised as IEC958 capable to enable passthrough options --- @@ -7278,20 +7278,20 @@ index 8dee4bc..cc79e80 100644 info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI") { -- -1.9.3 +2.0.3 -From 6c9a339a4c67356d3f740c3183ecbf5201219758 Mon Sep 17 00:00:00 2001 +From b9e326a4355f36761f7e8e410e1284023c80ea4f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 11 Mar 2014 18:50:23 +0000 -Subject: [PATCH 30/96] [dvdplayer] Use inexact seeking like omxplayer +Subject: [PATCH 30/89] [dvdplayer] Use inexact seeking like omxplayer --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index 49d5948..6198498 100644 +index bfff49b..06f887d 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -1887,7 +1887,11 @@ void CDVDPlayer::CheckAutoSceneSkip() @@ -7299,9 +7299,9 @@ index 49d5948..6198498 100644 * Seeking is NOT flushed so any content up to the demux point is retained when playing forwards. */ +#ifdef TARGET_RASPBERRY_PI -+ m_messenger.Put(new CDVDMsgPlayerSeek((int)seek, true, true, true, false, true)); ++ m_messenger.Put(new CDVDMsgPlayerSeek(seek, true, true, true, false, true)); +#else - m_messenger.Put(new CDVDMsgPlayerSeek((int)seek, true, false, true, false, true)); + m_messenger.Put(new CDVDMsgPlayerSeek(seek, true, false, true, false, true)); +#endif /* * Seek doesn't always work reliably. Last physical seek time is recorded to prevent looping @@ -7332,13 +7332,13 @@ index 49d5948..6198498 100644 /* call with demuxer pts */ -- -1.9.3 +2.0.3 -From c6a8c45f2e33c4796ba01a11332db1f7729560c5 Mon Sep 17 00:00:00 2001 +From f7fb3806f376f3c12149a6241cdec08452355134 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 18:19:32 +0100 -Subject: [PATCH 31/96] [rbp/omxplayer] When opening a stream don't try to +Subject: [PATCH 31/89] [rbp/omxplayer] When opening a stream don't try to update gui so often --- @@ -7362,13 +7362,13 @@ index e9ba7d3..0fdc3c2 100644 g_windowManager.ProcessRenderLoop(false); if (allowCancel && dialog->IsCanceled()) -- -1.9.3 +2.0.3 -From 3751b328369eccad9b1a744ea0e779b3c9949eb8 Mon Sep 17 00:00:00 2001 +From 0e74e9fdd1d85d46e7f35f7d3fdc0ac08923ed21 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 15:28:57 +0100 -Subject: [PATCH 32/96] [omxcodec] Clamp video texture at edges to avoid image +Subject: [PATCH 32/89] [omxcodec] Clamp video texture at edges to avoid image wrapping --- @@ -7389,13 +7389,13 @@ index 51f56aa..2929a37 100644 g_Windowing.EnableGUIShader(SM_TEXTURE_RGBA); -- -1.9.3 +2.0.3 -From 40cdfc39a5978dce7923d6039a74e9eb8e0d8c34 Mon Sep 17 00:00:00 2001 +From 9c85bb1d075ab2f813a8f7cfb2abcbbd93e0afcd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 30 Mar 2014 15:54:34 +0100 -Subject: [PATCH 33/96] [omxplayer] Make the sharpness control act as a +Subject: [PATCH 33/89] [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] @@ -7404,7 +7404,7 @@ This fixes scaling kernel as Mitchell Netravali, and varies sharpness over range 1 file changed, 338 insertions(+) diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp -index 29ea4ae..49c82e4 100644 +index b135741..a03df1d 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -1042,6 +1042,334 @@ bool COMXPlayer::IsBetterStream(COMXCurrentStream& current, CDemuxStream* stream @@ -7774,13 +7774,13 @@ index 29ea4ae..49c82e4 100644 void COMXPlayer::GetDeinterlaceMethods(std::vector &deinterlaceMethods) -- -1.9.3 +2.0.3 -From d1bd1f1e75e7ab45cfddfabf55fdc6ea774c484d Mon Sep 17 00:00:00 2001 +From 0623a39d641b529c2d0db2e1a0bae331bfafdd0b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 16 Apr 2014 21:18:06 +0100 -Subject: [PATCH 34/96] [omxplayer] Don't propagate 3d flags based on supported +Subject: [PATCH 34/89] [omxplayer] Don't propagate 3d flags based on supported 3d modes --- @@ -7833,13 +7833,13 @@ index af439e7..77dad37 100644 unsigned int iDisplayWidth = width; unsigned int iDisplayHeight = height; -- -1.9.3 +2.0.3 -From 5326864f88b3ab1140987681d68efa10a2d02930 Mon Sep 17 00:00:00 2001 +From 11c246cc27ae486e19d1ff95bd957f609cc5375e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:00:52 +0100 -Subject: [PATCH 35/96] [graphics] Don't set stereo mode based on resolution +Subject: [PATCH 35/89] [graphics] Don't set stereo mode based on resolution The resolution change should follow stereo mode --- @@ -7880,13 +7880,13 @@ index 5bffdf5..7e4fdd4 100644 m_iScreenWidth = info_mod.iWidth; -- -1.9.3 +2.0.3 -From ea1869e7f4fcdba26dddafad47ecbe3dd5ad0f68 Mon Sep 17 00:00:00 2001 +From 6bc91c8751c747033bc431b00059745570528c76 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:01:51 +0100 -Subject: [PATCH 36/96] [graphics] Allow switching to a more suitable 3D +Subject: [PATCH 36/89] [graphics] Allow switching to a more suitable 3D resolution --- @@ -7973,13 +7973,13 @@ index 0a27643..df55e92 100644 void ResetOverscan(RESOLUTION_INFO &resinfo); void ResetScreenParameters(RESOLUTION res); -- -1.9.3 +2.0.3 -From 5f1fdb44ba52842a1e91dd42ae98c0d435beea53 Mon Sep 17 00:00:00 2001 +From 9a1338ee4438548e0279f0d184b48f622c0a7590 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 17 Apr 2014 13:38:55 +0100 -Subject: [PATCH 37/96] [3D] Support switching to 3D resolutions +Subject: [PATCH 37/89] [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. @@ -8061,13 +8061,13 @@ index 83c3adb..8076e76 100644 return current; } -- -1.9.3 +2.0.3 -From e076e8dee1a9fa9267de264ec80abc35ed1a84e8 Mon Sep 17 00:00:00 2001 +From 1157a7c64490f107edc6fe4cda7b294f4d1bda8e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 23 Apr 2014 00:05:07 +0100 -Subject: [PATCH 38/96] [graphics] Make pixel ratio for 3d modes consistent +Subject: [PATCH 38/89] [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. @@ -8252,139 +8252,13 @@ index a9c51ca..a3edf0e 100644 AddUniqueResolution(res2, resolutions); -- -1.9.3 +2.0.3 -From 20d7fdefdce70b52bb3bc46416240dc98225c2a7 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 23 Apr 2014 21:07:51 +0100 -Subject: [PATCH 39/96] [PiSink] More attempts to reduce underrun audio - glitches with multichannl and high samplerate - ---- - xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp | 78 ++++++++++++------------------- - 1 file changed, 30 insertions(+), 48 deletions(-) - -diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp -index 19a9411..0a09275 100644 ---- a/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp -+++ b/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp -@@ -186,7 +186,7 @@ bool CAESinkPi::Initialize(AEAudioFormat &format, std::string &device) - unsigned int sample_size = CAEUtil::DataFormatToBits(format.m_dataFormat) >> 3; - format.m_frameSize = sample_size * channels; - format.m_sampleRate = std::max(8000U, std::min(192000U, format.m_sampleRate)); -- format.m_frames = format.m_sampleRate * AUDIO_PLAYBUFFER; -+ format.m_frames = format.m_sampleRate * AUDIO_PLAYBUFFER / NUM_OMX_BUFFERS; - format.m_frameSamples = format.m_frames * channels; - - SetAudioProps(m_passthrough, GetChannelMap(format, m_passthrough)); -@@ -232,7 +232,7 @@ bool CAESinkPi::Initialize(AEAudioFormat &format, std::string &device) - CLog::Log(LOGERROR, "%s:%s - error get OMX_IndexParamPortDefinition (input) omx_err(0x%08x)", CLASSNAME, __func__, omx_err); - - port_param.nBufferCountActual = std::max((unsigned int)port_param.nBufferCountMin, (unsigned int)NUM_OMX_BUFFERS); -- port_param.nBufferSize = m_format.m_frameSize * m_format.m_frames / port_param.nBufferCountActual; -+ port_param.nBufferSize = m_format.m_frameSize * m_format.m_frames; - - omx_err = m_omx_render.SetParameter(OMX_IndexParamPortDefinition, &port_param); - if (omx_err != OMX_ErrorNone) -@@ -306,61 +306,43 @@ double CAESinkPi::GetCacheTotal() - - unsigned int CAESinkPi::AddPackets(uint8_t **data, unsigned int frames, unsigned int offset) - { -- unsigned int sent = 0; - uint8_t *buffer = data[0]+offset*m_format.m_frameSize; - -- if (!m_Initialized) -+ if (!m_Initialized || !frames) - return frames; - - OMX_ERRORTYPE omx_err = OMX_ErrorNone; - OMX_BUFFERHEADERTYPE *omx_buffer = NULL; -- while (sent < frames) -+ -+ AEDelayStatus status; -+ GetDelay(status); -+ double delay = status.GetDelay(); -+ if (delay <= 0.0 && m_submitted) -+ CLog::Log(LOGNOTICE, "%s:%s Underrun (delay:%.2f frames:%d)", CLASSNAME, __func__, delay, frames); -+ -+ omx_buffer = m_omx_render.GetInputBuffer(1000); -+ if (omx_buffer == NULL) - { -- AEDelayStatus status; -- GetDelay(status); -- double delay = status.GetDelay(); -- double ideal_submission_time = AUDIO_PLAYBUFFER - delay; -- // ideal amount of audio we'd like submit (to make delay match AUDIO_PLAYBUFFER) -- int timeout = 1000; -- int ideal_submission_samples = ideal_submission_time / (m_sinkbuffer_sec_per_byte * m_format.m_frameSize); -- // if we are almost full then sleep (to avoid repeatedly sending a few samples) -- bool too_laggy = ideal_submission_time < 0.25 * AUDIO_PLAYBUFFER; -- int sleeptime = (int)(AUDIO_PLAYBUFFER * 0.25 * 1000.0); -- if (too_laggy) -- { -- Sleep(sleeptime); -- continue; -- } -- omx_buffer = m_omx_render.GetInputBuffer(timeout); -- if (omx_buffer == NULL) -- { -- CLog::Log(LOGERROR, "COMXAudio::Decode timeout"); -- break; -- } -- -- unsigned int space = omx_buffer->nAllocLen / m_format.m_frameSize; -- unsigned int samples = std::min(std::min(space, (unsigned int)ideal_submission_samples), frames - sent); -- -- omx_buffer->nFilledLen = samples * m_format.m_frameSize; -- omx_buffer->nTimeStamp = ToOMXTime(0); -- omx_buffer->nFlags = 0; -- memcpy(omx_buffer->pBuffer, (uint8_t *)buffer + sent * m_format.m_frameSize, omx_buffer->nFilledLen); -- -- sent += samples; -- -- if (sent == frames) -- omx_buffer->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME; -- -- if (delay <= 0.0 && m_submitted) -- CLog::Log(LOGNOTICE, "%s:%s Underrun (delay:%.2f frames:%d)", CLASSNAME, __func__, delay, frames); -- -- omx_err = m_omx_render.EmptyThisBuffer(omx_buffer); -- if (omx_err != OMX_ErrorNone) -- CLog::Log(LOGERROR, "%s:%s frames=%d err=%x", CLASSNAME, __func__, frames, omx_err); -- m_submitted++; -+ CLog::Log(LOGERROR, "CAESinkPi::AddPackets timeout"); -+ return 0; - } - -- return sent; -+ omx_buffer->nFilledLen = frames * m_format.m_frameSize; -+ // must be true -+ assert(omx_buffer->nFilledLen <= omx_buffer->nAllocLen); -+ omx_buffer->nTimeStamp = ToOMXTime(0); -+ omx_buffer->nFlags = OMX_BUFFERFLAG_ENDOFFRAME; -+ memcpy(omx_buffer->pBuffer, buffer, omx_buffer->nFilledLen); -+ -+ omx_err = m_omx_render.EmptyThisBuffer(omx_buffer); -+ if (omx_err != OMX_ErrorNone) -+ CLog::Log(LOGERROR, "%s:%s frames=%d err=%x", CLASSNAME, __func__, frames, omx_err); -+ m_submitted++; -+ GetDelay(status); -+ delay = status.GetDelay(); -+ if (delay > AUDIO_PLAYBUFFER) -+ Sleep((int)(1000.0f * (delay - AUDIO_PLAYBUFFER))); -+ return frames; - } - - void CAESinkPi::Drain() --- -1.9.3 - - -From 26cbc10ebc45ee423eafd305ba9dea7f2cade657 Mon Sep 17 00:00:00 2001 +From 3609d1e10b57f2c66435271cf42e7a1447ba4849 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 22 Apr 2014 12:23:23 +0100 -Subject: [PATCH 40/96] [omxplayer] Make dvdplayer the default for dvd images +Subject: [PATCH 39/89] [omxplayer] Make dvdplayer the default for dvd images --- xbmc/cores/omxplayer/omxplayer_advancedsettings.xml | 2 +- @@ -8403,13 +8277,13 @@ index 77c6a15..51c0daf 100644 -- -1.9.3 +2.0.3 -From 8cd7839f381229d205d038a1e0a421787dd63ad3 Mon Sep 17 00:00:00 2001 +From 6b890272463ad13af5ae5db5f3ab40d0c78b851c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 26 Apr 2014 17:27:52 +0100 -Subject: [PATCH 41/96] [cec] Don't suspend pi on tv switch off - it can't wake +Subject: [PATCH 40/89] [cec] Don't suspend pi on tv switch off - it can't wake up --- @@ -8430,13 +8304,13 @@ index a906628..9b5271a 100644 -- -1.9.3 +2.0.3 -From 7f24214a6d87592f00a4e79eb28e8776b01f4d6f Mon Sep 17 00:00:00 2001 +From 29046df60e66a8285d61a2e5ed6a507f2c85cde5 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 27 Jun 2013 01:25:57 +0100 -Subject: [PATCH 43/96] [rbp/omxplayer] Do we need discontinuity handling? +Subject: [PATCH 42/89] [rbp/omxplayer] Do we need discontinuity handling? So far I've not seen what this is needed for and it does cause problems for some files. --- @@ -8444,7 +8318,7 @@ So far I've not seen what this is needed for and it does cause problems for some 1 file changed, 1 insertion(+) diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp -index 49c82e4..13284d1 100644 +index a03df1d..26e2328 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -2382,6 +2382,7 @@ static void UpdateLimits(double& minimum, double& maximum, double dts) @@ -8456,13 +8330,13 @@ index 49c82e4..13284d1 100644 return; -- -1.9.3 +2.0.3 -From 72c21756bd6ddbc68238f8afe5560a525686fad6 Mon Sep 17 00:00:00 2001 +From c8715e6d12dc952961754d07c26e370667ab45ba Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 24 Oct 2013 00:53:26 +0100 -Subject: [PATCH 44/96] [rbp/omxplayer] Avoid marking non-monotonic timestamps +Subject: [PATCH 43/89] [rbp/omxplayer] Avoid marking non-monotonic timestamps as unknown Following a single spurious timestamp that is in the future, @@ -8501,13 +8375,13 @@ index 77731a9..5f9d028 100644 omx_buffer->nTimeStamp = ToOMXTime(val); -- -1.9.3 +2.0.3 -From c7047bcd2ae474576f11a8e44481497aa81d5cd0 Mon Sep 17 00:00:00 2001 +From 68ce37aa519ee35975656d01bdbd80ed4012bcb8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 13 Dec 2013 16:25:23 +0000 -Subject: [PATCH 46/96] Add time taken to resample to log +Subject: [PATCH 45/89] Add time taken to resample to log --- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 7 +++++++ @@ -8548,13 +8422,13 @@ index 01aafe3..5ab83a2 100644 bool m_isSeekPosible; int m_fileSize; -- -1.9.3 +2.0.3 -From f26442e9d58dd8d4c32d93416ae028c9e4099afa Mon Sep 17 00:00:00 2001 +From 4c762e0d7d3eefac5b4b3cd88b5505684cbe5433 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 14 Dec 2013 16:55:05 +0000 -Subject: [PATCH 47/96] logging: Add microsecond timer to log messages +Subject: [PATCH 46/89] logging: Add microsecond timer to log messages --- xbmc/utils/log.cpp | 12 +++++++++--- @@ -8612,13 +8486,13 @@ index dd6ef26..8edf2fd 100644 levelNames[loglevel]); -- -1.9.3 +2.0.3 -From 3c92b7531b5194a284f3a528c46fc69d8aff12ef Mon Sep 17 00:00:00 2001 +From 24a2457ad5593b1bc56b6401dbd6fe56b8589fc3 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:49:17 +1300 -Subject: [PATCH 48/96] adds GetTvShowSeasons +Subject: [PATCH 47/89] adds GetTvShowSeasons --- xbmc/video/VideoDatabase.cpp | 30 ++++++++++++++++++++++++------ @@ -8694,13 +8568,13 @@ index 492eebb..f6026c2 100644 bool GetArtTypes(const MediaType &mediaType, std::vector &artTypes); -- -1.9.3 +2.0.3 -From c86fb34c7cc34de9c68e3d7f9fb8be0acdfcb922 Mon Sep 17 00:00:00 2001 +From d7ab7e42bd8785f0df81fcc8015884339a66dec8 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:50:10 +1300 -Subject: [PATCH 49/96] move AddSeason() public. +Subject: [PATCH 48/89] move AddSeason() public. --- xbmc/video/VideoDatabase.h | 2 +- @@ -8727,13 +8601,13 @@ index f6026c2..a7acea3 100644 /*! \brief Adds a path to the tvshow link table. \param idShow the id of the show. -- -1.9.3 +2.0.3 -From 3151599efa7da405564ff0d20f607e7f980363bc Mon Sep 17 00:00:00 2001 +From d5edf2f218d552d0300fbef7058a682b60a5bb5a Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:48:24 +1300 -Subject: [PATCH 50/96] adds GetArt function to (video) scraper, allowing art +Subject: [PATCH 49/89] adds GetArt function to (video) scraper, allowing art to be fetched given the video identifier. --- @@ -8848,13 +8722,13 @@ index 22ac229..75bc341 100644 enum LOOKUP_STATE { DO_NOTHING = 0, FIND_MOVIE = 1, -- -1.9.3 +2.0.3 -From 7a91a4dee427c37265bd8ef2d0ecc800b498631a Mon Sep 17 00:00:00 2001 +From 017ac0cb921e672393c7ee873c49f9384750edf1 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:53:14 +1300 -Subject: [PATCH 51/96] refresh season art if a new season is found that isn't +Subject: [PATCH 50/89] refresh season art if a new season is found that isn't recorded in the database yet. Fixes #14339 --- @@ -8958,13 +8832,13 @@ index 7da1bf2..c764e20 100644 bool ProcessItemByVideoInfoTag(const CFileItem *item, EPISODELIST &episodeList); -- -1.9.3 +2.0.3 -From 506acd133473c2266aa80d9b6fd5edcd2431e9e9 Mon Sep 17 00:00:00 2001 +From f69314b3badaf4938587d3292d2283923d4ad278 Mon Sep 17 00:00:00 2001 From: Jonathan Marshall Date: Sat, 2 Nov 2013 23:53:34 +1300 -Subject: [PATCH 52/96] REMOVEME: updated thetvdb.com scraper to support art +Subject: [PATCH 51/89] REMOVEME: updated thetvdb.com scraper to support art updates --- @@ -9072,23 +8946,23 @@ index 39e604d..60a0e96 100644 -- -1.9.3 +2.0.3 -From 14a9a98eacad9fff8413e654ff1d0b4443cb6302 Mon Sep 17 00:00:00 2001 +From e42eab9ffb80986b5ccebc26913fcb1e922245a9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 22 Mar 2014 16:40:01 +0000 -Subject: [PATCH 53/96] Enable PYTHONOPTIMIZE for Pi +Subject: [PATCH 52/89] Enable PYTHONOPTIMIZE for Pi --- xbmc/interfaces/python/XBPython.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/xbmc/interfaces/python/XBPython.cpp b/xbmc/interfaces/python/XBPython.cpp -index 099c042..95caaa0 100644 +index cba242d..35a4509 100644 --- a/xbmc/interfaces/python/XBPython.cpp +++ b/xbmc/interfaces/python/XBPython.cpp -@@ -462,6 +462,10 @@ bool XBPython::InitializeEngine() +@@ -492,6 +492,10 @@ bool XBPython::InitializeEngine() } #endif @@ -9100,13 +8974,13 @@ index 099c042..95caaa0 100644 // Darwin packs .pyo files, we need PYTHONOPTIMIZE on in order to load them. #if defined(TARGET_DARWIN) -- -1.9.3 +2.0.3 -From ea3009d7804821c13400944b0292aa939dd7a80b Mon Sep 17 00:00:00 2001 +From 50aab9ad9d98bd52cdc9915cf01ce6f28dd6e6e1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 28 Apr 2014 18:07:45 +0100 -Subject: [PATCH 54/96] [rpi] Make ActiveAE thread higher priority to make +Subject: [PATCH 53/89] [rpi] Make ActiveAE thread higher priority to make audio underrun less likely --- @@ -9131,13 +9005,13 @@ index 08346d2..e302098 100644 if (m_controlPort.SendOutMessageSync(CActiveAEControlProtocol::INIT, &reply, -- -1.9.3 +2.0.3 -From 2868b25ce52b71614d5d8019dd91e9362b8dc9c5 Mon Sep 17 00:00:00 2001 +From 0dc8c2e89cea2ad3014ec082bd80f4ee700eb714 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 29 Apr 2014 15:23:22 +0100 -Subject: [PATCH 55/96] [ffmpeg] Speed up wtv index creation +Subject: [PATCH 54/89] [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. @@ -9223,13 +9097,13 @@ index 0000000..8f5f989 + } + } -- -1.9.3 +2.0.3 -From ccd0b93b852fb15f5ec08a4836e68c24df34ab58 Mon Sep 17 00:00:00 2001 +From 2ca31fdcaf72b661e61b798d50ed6c58f78ba95f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 8 Jul 2014 15:18:47 +0100 -Subject: [PATCH 56/96] ffmpeg: Add armv6 acceleration for imdct/fft used by +Subject: [PATCH 55/89] ffmpeg: Add armv6 acceleration for imdct/fft used by ac3/aac armv6: Accelerate ff_imdct_half for general case (mdct_bits != 6) @@ -10120,13 +9994,13 @@ index 0000000..db0118f +-- +1.9.3 -- -1.9.3 +2.0.3 -From 648d3c9d161483f45285e2d280faa75372f69040 Mon Sep 17 00:00:00 2001 +From 995e3476020b946c90866c0ac34f50459e85b468 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 12 May 2014 23:06:43 +0100 -Subject: [PATCH 57/96] [omxcodec] Updates to work better with dropping and +Subject: [PATCH 56/89] [omxcodec] Updates to work better with dropping and lateness detection --- @@ -10415,13 +10289,13 @@ index f234f6d..adf53b5 100644 bool SendDecoderConfig(uint8_t *extradata, int extrasize); bool NaluFormatStartCodes(enum AVCodecID codec, uint8_t *extradata, int extrasize); -- -1.9.3 +2.0.3 -From 01919034acb90274adc369bbfccdad97775ae220 Mon Sep 17 00:00:00 2001 +From a4143878cf09cacc0c3f3e8d0dad6986f226198d Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 11 Apr 2014 16:12:27 +0100 -Subject: [PATCH 58/96] [omxplayer] Add ability to log more timestamp info in +Subject: [PATCH 57/89] [omxplayer] Add ability to log more timestamp info in extra debug settings --- @@ -10434,10 +10308,10 @@ Subject: [PATCH 58/96] [omxplayer] Add ability to log more timestamp info in 6 files changed, 44 insertions(+), 34 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index 3b3fdd0..65628bf 100755 +index dc494c1..eab6d00 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -2879,6 +2879,11 @@ msgctxt "#679" +@@ -2880,6 +2880,11 @@ msgctxt "#679" msgid "Verbose logging for CEC library" msgstr "" @@ -10462,7 +10336,7 @@ index 4bf5d83..3fb7cc3 100644 #ifdef __GNUC__ #define ATTRIB_LOG_FORMAT __attribute__((format(printf,3,4))) diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp -index 13284d1..ed78b09 100644 +index 26e2328..c7c5933 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -1545,27 +1545,28 @@ void COMXPlayer::Process() @@ -10580,7 +10454,7 @@ index 77dad37..605ea80 100644 || m_speed < 0) { diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index d1797ac..9af1d5a 100644 +index f1d90fd..1a64054 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -1386,6 +1386,9 @@ void CAdvancedSettings::SettingOptionsLoggingComponentsFiller(const CSetting *se @@ -10594,13 +10468,13 @@ index d1797ac..9af1d5a 100644 void CAdvancedSettings::setExtraLogLevel(const std::vector &components) -- -1.9.3 +2.0.3 -From 651ae93d3301b9fbc54c1abe8c7a6b7a18471001 Mon Sep 17 00:00:00 2001 +From ed27cc5f6e48b6849ce93a228a0ac52d7760ceae Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 7 Apr 2014 23:13:55 +0100 -Subject: [PATCH 59/96] [omxplayer] Add ability to dump out audio/video data +Subject: [PATCH 58/89] [omxplayer] Add ability to dump out audio/video data for later debugging --- @@ -10612,10 +10486,10 @@ Subject: [PATCH 59/96] [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 65628bf..5ef9534 100755 +index eab6d00..2e11786 100755 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -2884,6 +2884,16 @@ msgctxt "#697" +@@ -2885,6 +2885,16 @@ msgctxt "#697" msgid "Verbose logging for OMXPLAYER" msgstr "" @@ -10741,7 +10615,7 @@ index 5f9d028..1bcc53e0 100644 if (omx_err != OMX_ErrorNone) { diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp -index 820ea44..6639804 100644 +index b9256ea..7759da8 100644 --- a/xbmc/cores/omxplayer/OMXVideo.cpp +++ b/xbmc/cores/omxplayer/OMXVideo.cpp @@ -63,6 +63,49 @@ @@ -10802,7 +10676,7 @@ index 820ea44..6639804 100644 omx_err = m_omx_decoder.EmptyThisBuffer(omx_buffer); if (omx_err != OMX_ErrorNone) { -@@ -687,6 +731,7 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, EDEINTERLACEMODE de +@@ -707,6 +751,7 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, EDEINTERLACEMODE de void COMXVideo::Close() { CSingleLock lock (m_critSection); @@ -10810,7 +10684,7 @@ index 820ea44..6639804 100644 m_omx_tunnel_clock.Deestablish(); m_omx_tunnel_decoder.Deestablish(); if(m_deinterlace) -@@ -781,6 +826,7 @@ int COMXVideo::Decode(uint8_t *pData, int iSize, double pts) +@@ -801,6 +846,7 @@ int COMXVideo::Decode(uint8_t *pData, int iSize, double pts) int nRetry = 0; while(true) { @@ -10818,7 +10692,7 @@ index 820ea44..6639804 100644 omx_err = m_omx_decoder.EmptyThisBuffer(omx_buffer); if (omx_err == OMX_ErrorNone) { -@@ -910,6 +956,7 @@ void COMXVideo::SubmitEOS() +@@ -930,6 +976,7 @@ void COMXVideo::SubmitEOS() omx_buffer->nFlags = OMX_BUFFERFLAG_ENDOFFRAME | OMX_BUFFERFLAG_EOS | OMX_BUFFERFLAG_TIME_UNKNOWN; @@ -10827,7 +10701,7 @@ index 820ea44..6639804 100644 if (omx_err != OMX_ErrorNone) { diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index 9af1d5a..5020105 100644 +index 1a64054..f18c227 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -1389,6 +1389,10 @@ void CAdvancedSettings::SettingOptionsLoggingComponentsFiller(const CSetting *se @@ -10842,13 +10716,13 @@ index 9af1d5a..5020105 100644 void CAdvancedSettings::setExtraLogLevel(const std::vector &components) -- -1.9.3 +2.0.3 -From d72b8595f0c567d26017c10bb4439409b85c3d1f Mon Sep 17 00:00:00 2001 +From b71814a29dfb7064aa5edb89eeafb433d91fb5ff Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 28 May 2014 18:30:51 +0100 -Subject: [PATCH 60/96] [omxcodec] Reduce GPU memory use by 2 video frames +Subject: [PATCH 59/89] [omxcodec] Reduce GPU memory use by 2 video frames --- xbmc/cores/dvdplayer/DVDCodecs/Video/OpenMaxVideo.cpp | 14 ++++++++++++++ @@ -10880,13 +10754,13 @@ index 612ae21..494fdf5 100644 OMX_CONFIG_REQUESTCALLBACKTYPE notifications; OMX_INIT_STRUCTURE(notifications); -- -1.9.3 +2.0.3 -From 5f36232a5172f3fd4de3b8b1197ec642dda7cdb1 Mon Sep 17 00:00:00 2001 +From 1bffe0f2a561b5b68c75eb9716d45aec52a9cc46 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 30 May 2014 14:58:43 +0100 -Subject: [PATCH 61/96] [settings] Experiment: Report DESKTOP resolution in +Subject: [PATCH 60/89] [settings] Experiment: Report DESKTOP resolution in video settings --- @@ -10908,13 +10782,13 @@ index bb31f15..eae549b 100644 StringUtils::Format("%dx%d%s", resolution->width, resolution->height, ModeFlagsToString(resolution->flags, false).c_str()), -- -1.9.3 +2.0.3 -From 7577000978940f083411ba820ea6a54d65caa1db Mon Sep 17 00:00:00 2001 +From 067179bf52dd6de0a26b8aa199e7d254d9644b82 Mon Sep 17 00:00:00 2001 From: Matthias Kortstiege Date: Sun, 1 Jun 2014 18:47:20 +0200 -Subject: [PATCH 62/96] changed: avoid useless filesytem io while searching for +Subject: [PATCH 61/89] changed: avoid useless filesytem io while searching for subtitles --- @@ -10944,116 +10818,13 @@ index 3152a0f..9afa557 100644 } else -- -1.9.3 +2.0.3 -From 34ceb8e78c9a5e7f8bf73989f557d1b48b480bfc Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 4 Jun 2014 19:10:27 +0100 -Subject: [PATCH 63/96] [pisink] Support planar formats - ---- - xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp | 35 ++++++++++++++++++++++++++----- - 1 file changed, 30 insertions(+), 5 deletions(-) - -diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp -index 0a09275..5a45653 100644 ---- a/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp -+++ b/xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp -@@ -180,7 +180,9 @@ bool CAESinkPi::Initialize(AEAudioFormat &format, std::string &device) - format.m_channelLayout = AE_CH_LAYOUT_2_0; - - // setup for a 50ms sink feed from SoftAE -- if (format.m_dataFormat != AE_FMT_FLOAT && format.m_dataFormat != AE_FMT_S32LE) -+ if (format.m_dataFormat != AE_FMT_FLOATP && format.m_dataFormat != AE_FMT_FLOAT && -+ format.m_dataFormat != AE_FMT_S32NE && format.m_dataFormat != AE_FMT_S32NEP && format.m_dataFormat != AE_FMT_S32LE && -+ format.m_dataFormat != AE_FMT_S16NE && format.m_dataFormat != AE_FMT_S16NEP && format.m_dataFormat != AE_FMT_S16LE) - format.m_dataFormat = AE_FMT_S16LE; - unsigned int channels = format.m_channelLayout.Count(); - unsigned int sample_size = CAEUtil::DataFormatToBits(format.m_dataFormat) >> 3; -@@ -210,7 +212,13 @@ bool CAESinkPi::Initialize(AEAudioFormat &format, std::string &device) - m_pcm_input.eEndian = OMX_EndianLittle; - m_pcm_input.bInterleaved = OMX_TRUE; - m_pcm_input.nBitPerSample = sample_size * 8; -- m_pcm_input.ePCMMode = m_format.m_dataFormat == AE_FMT_FLOAT ? (OMX_AUDIO_PCMMODETYPE)0x8000 : OMX_AUDIO_PCMModeLinear; -+ // 0x8000 = float, 0x10000 = planar -+ uint32_t flags = 0; -+ if (m_format.m_dataFormat == AE_FMT_FLOAT || m_format.m_dataFormat == AE_FMT_FLOATP) -+ flags |= 0x8000; -+ if (AE_IS_PLANAR(m_format.m_dataFormat)) -+ flags |= 0x10000; -+ m_pcm_input.ePCMMode = flags == 0 ? OMX_AUDIO_PCMModeLinear : (OMX_AUDIO_PCMMODETYPE)flags; - m_pcm_input.nChannels = channels; - m_pcm_input.nSamplingRate = m_format.m_sampleRate; - -@@ -306,14 +314,18 @@ double CAESinkPi::GetCacheTotal() - - unsigned int CAESinkPi::AddPackets(uint8_t **data, unsigned int frames, unsigned int offset) - { -- uint8_t *buffer = data[0]+offset*m_format.m_frameSize; -- - if (!m_Initialized || !frames) - return frames; - - OMX_ERRORTYPE omx_err = OMX_ErrorNone; - OMX_BUFFERHEADERTYPE *omx_buffer = NULL; - -+ unsigned int channels = m_format.m_channelLayout.Count(); -+ unsigned int sample_size = CAEUtil::DataFormatToBits(m_format.m_dataFormat) >> 3; -+ const int planes = AE_IS_PLANAR(m_format.m_dataFormat) ? channels : 1; -+ const int chans = AE_IS_PLANAR(m_format.m_dataFormat) ? 1 : channels; -+ const int pitch = chans * sample_size; -+ - AEDelayStatus status; - GetDelay(status); - double delay = status.GetDelay(); -@@ -332,8 +344,13 @@ unsigned int CAESinkPi::AddPackets(uint8_t **data, unsigned int frames, unsigned - assert(omx_buffer->nFilledLen <= omx_buffer->nAllocLen); - omx_buffer->nTimeStamp = ToOMXTime(0); - omx_buffer->nFlags = OMX_BUFFERFLAG_ENDOFFRAME; -- memcpy(omx_buffer->pBuffer, buffer, omx_buffer->nFilledLen); - -+ if (omx_buffer->nFilledLen) -+ { -+ int planesize = omx_buffer->nFilledLen / planes; -+ for (int i=0; i < planes; i++) -+ memcpy((uint8_t *)omx_buffer->pBuffer + i * planesize, data[i] + offset * pitch, planesize); -+ } - omx_err = m_omx_render.EmptyThisBuffer(omx_buffer); - if (omx_err != OMX_ErrorNone) - CLog::Log(LOGERROR, "%s:%s frames=%d err=%x", CLASSNAME, __func__, frames, omx_err); -@@ -370,8 +387,13 @@ void CAESinkPi::EnumerateDevicesEx(AEDeviceInfoList &list, bool force) - for (unsigned int i=0; i Date: Mon, 30 Dec 2013 12:02:14 +0000 -Subject: [PATCH 64/96] [rbp] Hardware accelerated resampling +Subject: [PATCH 62/89] [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. @@ -11883,13 +11654,13 @@ index 99e407a..8d3c86a 100644 OMX_ERRORTYPE omx_err = OMX_ErrorNone; -- -1.9.3 +2.0.3 -From b3f51b63f352cf3d9066e1ff55c22993d64c7dee Mon Sep 17 00:00:00 2001 +From 886f7a94779bacead20975b56f4979d3e3a4fdd2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 1 Jun 2014 12:15:17 +0100 -Subject: [PATCH 65/96] [resamplepi] Support planar formats +Subject: [PATCH 63/89] [resamplepi] Support planar formats --- .../Engines/ActiveAE/ActiveAEResamplePi.cpp | 101 ++++++++++++--------- @@ -12086,13 +11857,13 @@ index 9a1e549..1604030 100644 { #ifdef DEBUG_VERBOSE -- -1.9.3 +2.0.3 -From fde445f872e70c80006dd7d5cc26b1cec2d6dd2f Mon Sep 17 00:00:00 2001 +From ae1d785be535e69cf8c52340b8f781435042684b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 15 Jun 2014 13:20:53 +0100 -Subject: [PATCH 66/96] gles: Avoid crash when capturing snapshot when using +Subject: [PATCH 64/89] gles: Avoid crash when capturing snapshot when using dvdplayer Note: snapshot will be blank, but that's better than crashing @@ -12115,13 +11886,13 @@ index 2929a37..53873f6 100644 capture->BeginRender(); capture->EndRender(); -- -1.9.3 +2.0.3 -From 0f35c1be74e71abdc5565ea579ac7d88cfd9202f Mon Sep 17 00:00:00 2001 +From 8001ed25141758fd9ee6292a211c7bda42b920a6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 16 Jun 2014 19:05:14 +0100 -Subject: [PATCH 67/96] sqlite: Bump to 3080500 +Subject: [PATCH 65/89] sqlite: Bump to 3080500 --- tools/depends/target/sqlite3/Makefile | 4 +++- @@ -12143,13 +11914,13 @@ index 87f7eaa..8fe61e8 100644 ARCHIVE=$(SOURCE).tar.gz -- -1.9.3 +2.0.3 -From 2e6615467ae671a1f21d603c7925ae6b21bd1e31 Mon Sep 17 00:00:00 2001 +From bc0978007b30fa27fff391d612bc412256c6ce2c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 16 Jun 2014 19:06:00 +0100 -Subject: [PATCH 68/96] [experimental] Disable quiet-noise generation +Subject: [PATCH 66/89] [experimental] Disable quiet-noise generation --- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 2 ++ @@ -12176,13 +11947,13 @@ index 488a0df..d9f4a43 100644 void CActiveAESink::SetSilenceTimer() -- -1.9.3 +2.0.3 -From 58bf7fd018f9e6807b7d24ab00034cd415ecf6cf Mon Sep 17 00:00:00 2001 +From 9e6792aea5dc3056235fcce9019d0b25d0b83526 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 16 Jun 2014 19:07:21 +0100 -Subject: [PATCH 69/96] [omxcodec] Adjust asserts +Subject: [PATCH 67/89] [omxcodec] Adjust asserts --- xbmc/cores/dvdplayer/DVDCodecs/Video/OpenMaxVideo.cpp | 11 +++++++---- @@ -12218,13 +11989,13 @@ index 494fdf5..23aaa9f 100644 } #endif -- -1.9.3 +2.0.3 -From 0e4af5404d4392c281b2313c85b905a4701c16c2 Mon Sep 17 00:00:00 2001 +From 67e0e6a981a115c24c8ed8bb0cb8cd43addd86a3 Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 18:24:42 +0200 -Subject: [PATCH 70/96] Added some vc_tv_* functions that were missing in +Subject: [PATCH 68/89] Added some vc_tv_* functions that were missing in DllBCM. --- @@ -12259,13 +12030,13 @@ 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); }; -- -1.9.3 +2.0.3 -From 8fa8232eb4537f9ca362ea8d597eadd8e57907a6 Mon Sep 17 00:00:00 2001 +From ef9b0a658824a19df90e175b476ff3780ae842fb Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 18:29:03 +0200 -Subject: [PATCH 71/96] Added private utility function to map a float display +Subject: [PATCH 69/89] Added private utility function to map a float display aspect, to the respective SDTV_ASPECT_* enum value. --- @@ -12303,13 +12074,13 @@ index a3edf0e..5ae2b59 100644 bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &resolutions) -- -1.9.3 +2.0.3 -From 87072dd2315f748306b7c1ce6a4a7a503d2b7bc4 Mon Sep 17 00:00:00 2001 +From d2abcddbb80aed27e5e4b346b47f1569f2a3ea5b Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 19:50:58 +0200 -Subject: [PATCH 72/96] Changed SDTV resolutions to be treated similarly to +Subject: [PATCH 70/89] 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. @@ -12406,13 +12177,13 @@ index 59401f5..a0acb1a 100644 int m_width; int m_height; -- -1.9.3 +2.0.3 -From d6f894a9f61304ab710da8765fca1756bf69d64c Mon Sep 17 00:00:00 2001 +From 70128a676086777f3a0806190204f17fadde777c Mon Sep 17 00:00:00 2001 From: macrule Date: Thu, 11 Apr 2013 19:54:59 +0200 -Subject: [PATCH 73/96] Added methods SuspendVideoOutput() and +Subject: [PATCH 71/89] 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. @@ -12423,10 +12194,10 @@ Subject: [PATCH 73/96] Added methods SuspendVideoOutput() and 3 files changed, 21 insertions(+) diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 9a5e9cb..87619e9 100644 +index 50d5186..9f72a36 100644 --- a/xbmc/linux/RBP.cpp +++ b/xbmc/linux/RBP.cpp -@@ -165,4 +165,19 @@ void CRBP::Deinitialize() +@@ -168,4 +168,19 @@ void CRBP::Deinitialize() m_initialized = false; m_omx_initialized = false; } @@ -12476,13 +12247,13 @@ index 712fe9c..40d303e 100644 CEGLNativeTypeRaspberryPI::CEGLNativeTypeRaspberryPI() { -- -1.9.3 +2.0.3 -From 4f8734f9fe9f455e11feb8ec979ff0870b549117 Mon Sep 17 00:00:00 2001 +From c7165504f082142334c2277afd2fc98f8f187704 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 11 Aug 2013 15:03:36 +0100 -Subject: [PATCH 74/96] PowerManager (and its IPowerSyscall instance) now gets +Subject: [PATCH 72/89] 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. @@ -12494,7 +12265,7 @@ Subject: [PATCH 74/96] PowerManager (and its IPowerSyscall instance) now gets 4 files changed, 23 insertions(+) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index a25f44f..d595c86 100644 +index 397bfa4..01b3933 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -2369,6 +2369,13 @@ bool CApplication::OnKey(const CKey& key) @@ -12575,13 +12346,13 @@ index 0b1f10a..e42b143 100644 void OnSleep(); void OnWake(); -- -1.9.3 +2.0.3 -From 6af27c90ce350d2aebf4b35951dadf94e5cf7391 Mon Sep 17 00:00:00 2001 +From 8ba8886d44130a0c015b48e02533cfbe45cfd91f Mon Sep 17 00:00:00 2001 From: macrule Date: Wed, 17 Apr 2013 13:23:01 +0200 -Subject: [PATCH 75/96] Added CPowerSyscallVirtualSleep class, which acts as a +Subject: [PATCH 73/89] 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. @@ -12757,13 +12528,13 @@ index 0000000..ef6e682 + +#endif // _POWER_SYSCALL_VIRTUAL_SLEEP_H_ -- -1.9.3 +2.0.3 -From 9eba1531e9c53354d4f45398f6a5443ba209f2aa Mon Sep 17 00:00:00 2001 +From c380b16e7c5fbbc971d15827e6bc6e01b3ca5dd5 Mon Sep 17 00:00:00 2001 From: macrule Date: Wed, 17 Apr 2013 13:24:22 +0200 -Subject: [PATCH 76/96] Added power management support for the Raspberry Pi. +Subject: [PATCH 74/89] 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. @@ -12910,13 +12681,13 @@ index 0000000..fd1d67c + +#endif // _RASPBERRY_PI_POWER_SYSCALL_H_ -- -1.9.3 +2.0.3 -From 6a0e568fd983187f8da76a0782839f6a79c5c2dc Mon Sep 17 00:00:00 2001 +From 9284f24ff085a7b0c2324f8ec6ea121f899623a4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 16:16:29 +0000 -Subject: [PATCH 77/96] [power] hack - don't kill lirc or cec +Subject: [PATCH 75/89] [power] hack - don't kill lirc or cec --- xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 37 +++++++++++++++++++++++ @@ -13000,13 +12771,13 @@ index 7dd691c..17f118a 100644 CBuiltins::Execute("LIRC.Start"); #endif -- -1.9.3 +2.0.3 -From 841c0d0794dfaf063d4f42abaf2b1ce0e5713707 Mon Sep 17 00:00:00 2001 +From 7cfe722e07c9e5e98a3d974302d9589560d48ed2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 16:47:54 +0000 -Subject: [PATCH 78/96] [power] hack - wake on any action +Subject: [PATCH 76/89] [power] hack - wake on any action --- xbmc/powermanagement/PowerSyscallVirtualSleep.cpp | 6 +++--- @@ -13035,13 +12806,13 @@ index 6a1e47b..a717a09 100644 if(VirtualWake()) { -- -1.9.3 +2.0.3 -From e5165963a436e99cbe88f8ff30104febccd29c92 Mon Sep 17 00:00:00 2001 +From 724761ed81ab06aadb65a94f44e65a153ce68dc8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Mar 2014 17:30:07 +0000 -Subject: [PATCH 79/96] [power] hack - Make suspend toggle suspend state +Subject: [PATCH 77/89] [power] hack - Make suspend toggle suspend state --- xbmc/powermanagement/PowerSyscallVirtualSleep.cpp | 5 +++++ @@ -13064,13 +12835,13 @@ index a717a09..d39c3ed 100644 return false; } -- -1.9.3 +2.0.3 -From 0d2b1260fecad565f42a084e13b55d5658a5295d Mon Sep 17 00:00:00 2001 +From 9c06eb77f307047a21c0a513f812c42e23c6523c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 4 Mar 2014 19:33:44 +0000 -Subject: [PATCH 80/96] [power] Add back in powerdown and reboot +Subject: [PATCH 78/89] [power] Add back in powerdown and reboot --- .../linux/RaspberryPIPowerSyscall.cpp | 34 ++++++++++++++++++++++ @@ -13148,44 +12919,13 @@ index fd1d67c..062132e 100644 virtual bool CanReboot() { return true; } -- -1.9.3 +2.0.3 -From 3e0e20fbe01b34e879b161b92fa9245d7c8bb822 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 18 Jun 2014 23:11:28 +0100 -Subject: [PATCH 81/96] [rbp] Reduce GPU memory use when limited - -Switching from default triple buffered output to double buffered saves 8M with 1080p GUI. -This may slightly reduce framerate, but is likely to be minimal. - -Assume if gpu_mem is set below the default 128M that this memory reduction is wanted ---- - xbmc/linux/RBP.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp -index 87619e9..9f72a36 100644 ---- a/xbmc/linux/RBP.cpp -+++ b/xbmc/linux/RBP.cpp -@@ -72,6 +72,9 @@ bool CRBP::Initialize() - if (vc_gencmd(response, sizeof response, "codec_enabled WVC1") == 0) - m_codec_wvc1_enabled = strcmp("WVC1=enabled", response) == 0; - -+ if (m_gpu_mem < 128) -+ setenv("V3D_DOUBLE_BUFFER", "1", 1); -+ - g_OMXImage.Initialize(); - m_omx_image_init = true; - return true; --- -1.9.3 - - -From 3d2b77f125b24f69d68bd57a773b0b6aa09ba64e Mon Sep 17 00:00:00 2001 +From 4af5910c5b79d9b20b484a6cf913107dbcca1851 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 27 Jun 2014 00:01:05 +0100 -Subject: [PATCH 84/96] [rbp] Resume video output on startup +Subject: [PATCH 81/89] [rbp] Resume video output on startup --- xbmc/linux/RBP.cpp | 3 +++ @@ -13206,26 +12946,26 @@ index 9f72a36..f789bf1 100644 m_omx_image_init = true; return true; -- -1.9.3 +2.0.3 -From 70d534a44d5d261290b0e463b0b71a35d241b393 Mon Sep 17 00:00:00 2001 +From 6eefbe0eaa2ab24323d02639f73e34acb063d51e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 27 Jun 2014 00:36:29 +0100 -Subject: [PATCH 85/96] [omxplayer] Experimental support for anaglyph rendering +Subject: [PATCH 82/89] [omxplayer] Experimental support for anaglyph rendering of 3d videos Requires updated firmware --- - xbmc/cores/omxplayer/OMXPlayer.cpp | 12 ++++++++-- - xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 32 ++++++++++++++++++++++++++- - xbmc/cores/omxplayer/OMXVideo.cpp | 39 +++++++++++++++++++++------------ + xbmc/cores/omxplayer/OMXPlayer.cpp | 12 +++++++-- + xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 32 +++++++++++++++++++++++- + xbmc/cores/omxplayer/OMXVideo.cpp | 43 +++++++++++++++++++++------------ xbmc/cores/omxplayer/OMXVideo.h | 3 ++- - xbmc/rendering/RenderSystem.cpp | 4 ++++ - 5 files changed, 72 insertions(+), 18 deletions(-) + xbmc/rendering/RenderSystem.cpp | 4 +++ + 5 files changed, 74 insertions(+), 20 deletions(-) diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp -index ed78b09..55abc65 100644 +index c7c5933..1efb562 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -1502,6 +1502,8 @@ void COMXPlayer::Process() @@ -13319,7 +13059,7 @@ index 605ea80..b2cb610 100644 { SrcRect.y1 += m_hints.height / 2; diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp -index 6639804..07c4643 100644 +index 7759da8..b100018 100644 --- a/xbmc/cores/omxplayer/OMXVideo.cpp +++ b/xbmc/cores/omxplayer/OMXVideo.cpp @@ -113,6 +113,7 @@ COMXVideo::COMXVideo() : m_video_codec_name("") @@ -13351,37 +13091,44 @@ index 6639804..07c4643 100644 { if(!m_omx_image_fx.Initialize("OMX.broadcom.image_fx", OMX_IndexParamImageInit)) return false; -@@ -296,16 +297,24 @@ bool COMXVideo::PortSettingsChanged() +@@ -296,7 +297,7 @@ bool COMXVideo::PortSettingsChanged() } } - if(m_deinterlace) + if(m_deinterlace || m_anaglyph) { - OMX_CONFIG_IMAGEFILTERPARAMSTYPE image_filter; + bool advanced_deinterlace = port_image.format.video.nFrameWidth * port_image.format.video.nFrameHeight <= 576 * 720; + +@@ -319,13 +320,21 @@ bool COMXVideo::PortSettingsChanged() OMX_INIT_STRUCTURE(image_filter); image_filter.nPortIndex = m_omx_image_fx.GetOutputPort(); - image_filter.nNumParams = 1; - image_filter.nParams[0] = 3; -- image_filter.eImageFilter = OMX_ImageFilterDeInterlaceAdvanced; -- +- if (!advanced_deinterlace) +- image_filter.eImageFilter = OMX_ImageFilterDeInterlaceFast; + if (m_anaglyph != OMX_ImageFilterAnaglyphNone) + { + image_filter.nNumParams = 1; + image_filter.nParams[0] = m_anaglyph; + image_filter.eImageFilter = OMX_ImageFilterAnaglyph; + } -+ else + else +- image_filter.eImageFilter = OMX_ImageFilterDeInterlaceAdvanced; +- + { + image_filter.nNumParams = 1; + image_filter.nParams[0] = 3; -+ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceAdvanced; ++ if (!advanced_deinterlace) ++ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceFast; ++ else ++ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceAdvanced; + } omx_err = m_omx_image_fx.SetConfig(OMX_IndexConfigCommonImageFilterParameters, &image_filter); if(omx_err != OMX_ErrorNone) { -@@ -314,7 +323,7 @@ bool COMXVideo::PortSettingsChanged() +@@ -334,7 +343,7 @@ bool COMXVideo::PortSettingsChanged() } } @@ -13390,7 +13137,7 @@ index 6639804..07c4643 100644 { m_omx_tunnel_decoder.Initialize(&m_omx_decoder, m_omx_decoder.GetOutputPort(), &m_omx_image_fx, m_omx_image_fx.GetInputPort()); m_omx_tunnel_image_fx.Initialize(&m_omx_image_fx, m_omx_image_fx.GetOutputPort(), &m_omx_sched, m_omx_sched.GetInputPort()); -@@ -341,7 +350,7 @@ bool COMXVideo::PortSettingsChanged() +@@ -361,7 +370,7 @@ bool COMXVideo::PortSettingsChanged() return false; } @@ -13399,7 +13146,7 @@ index 6639804..07c4643 100644 { omx_err = m_omx_tunnel_image_fx.Establish(); if(omx_err != OMX_ErrorNone) -@@ -383,7 +392,7 @@ bool COMXVideo::PortSettingsChanged() +@@ -403,7 +412,7 @@ bool COMXVideo::PortSettingsChanged() return true; } @@ -13408,7 +13155,7 @@ index 6639804..07c4643 100644 { CSingleLock lock (m_critSection); bool vflip = false; -@@ -523,6 +532,7 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, EDEINTERLACEMODE de +@@ -543,6 +552,7 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, EDEINTERLACEMODE de break; } m_deinterlace_request = deinterlace; @@ -13416,7 +13163,7 @@ index 6639804..07c4643 100644 if(!m_omx_decoder.Initialize(decoder_name, OMX_IndexParamVideoInit)) return false; -@@ -734,7 +744,7 @@ void COMXVideo::Close() +@@ -754,7 +764,7 @@ void COMXVideo::Close() dump_omx_buffer(NULL); m_omx_tunnel_clock.Deestablish(); m_omx_tunnel_decoder.Deestablish(); @@ -13425,7 +13172,7 @@ index 6639804..07c4643 100644 m_omx_tunnel_image_fx.Deestablish(); m_omx_tunnel_sched.Deestablish(); -@@ -742,7 +752,7 @@ void COMXVideo::Close() +@@ -762,7 +772,7 @@ void COMXVideo::Close() m_omx_sched.Deinitialize(); m_omx_decoder.Deinitialize(); @@ -13434,7 +13181,7 @@ index 6639804..07c4643 100644 m_omx_image_fx.Deinitialize(); m_omx_render.Deinitialize(); -@@ -755,6 +765,7 @@ void COMXVideo::Close() +@@ -775,6 +785,7 @@ void COMXVideo::Close() m_video_codec_name = ""; m_deinterlace = false; @@ -13442,7 +13189,7 @@ index 6639804..07c4643 100644 m_av_clock = NULL; m_res_ctx = NULL; -@@ -878,7 +889,7 @@ void COMXVideo::Reset(void) +@@ -898,7 +909,7 @@ void COMXVideo::Reset(void) m_setStartTime = true; m_omx_decoder.FlushInput(); @@ -13473,10 +13220,10 @@ index 226000e..e2e79c2 100644 ResolutionUpdateCallBackFn m_res_callback; void *m_res_ctx; diff --git a/xbmc/rendering/RenderSystem.cpp b/xbmc/rendering/RenderSystem.cpp -index 16102bb..a8d59f9 100644 +index 64e0d16..8a58893 100644 --- a/xbmc/rendering/RenderSystem.cpp +++ b/xbmc/rendering/RenderSystem.cpp -@@ -74,6 +74,10 @@ bool CRenderSystemBase::SupportsStereo(RENDER_STEREO_MODE mode) const +@@ -75,6 +75,10 @@ bool CRenderSystemBase::SupportsStereo(RENDER_STEREO_MODE mode) const case RENDER_STEREO_MODE_SPLIT_HORIZONTAL: case RENDER_STEREO_MODE_SPLIT_VERTICAL: case RENDER_STEREO_MODE_MONO: @@ -13488,13 +13235,13 @@ index 16102bb..a8d59f9 100644 default: return false; -- -1.9.3 +2.0.3 -From 5e9cfd8e6b4a8876ccedc0395d9ac403fee01406 Mon Sep 17 00:00:00 2001 +From 6561b8b5ae3823951e1163ea9d9cefdfd3878306 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 2 Jul 2014 12:24:01 +0100 -Subject: [PATCH 86/96] [settings] Add update flag to omx acceleration +Subject: [PATCH 83/89] [settings] Add update flag to omx acceleration --- system/settings/settings.xml | 3 +++ @@ -13502,7 +13249,7 @@ Subject: [PATCH 86/96] [settings] Add update flag to omx acceleration 2 files changed, 4 insertions(+) diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 637ddea..88fc18f 100644 +index cc331b7..5378c97 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -740,6 +740,9 @@ @@ -13528,232 +13275,13 @@ index b5ed60a..84b3225 100644 settingSet.clear(); -- -1.9.3 +2.0.3 -From 1f1de47805bc278aab6359b9be3bbca25dd18094 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 1 Jul 2014 00:38:54 +0100 -Subject: [PATCH 87/96] [omx] Avoid hang following jpegs that failed to decode - -There's a few instanced of xbmc hanging following a jpeg that failed to decode on GPU: -http://forum.stmlabs.com/showthread.php?tid=14839 -https://github.com/raspberrypi/firmware/issues/288 -http://openelec.tv/forum/120-news-announcements/70709-openelec-4-0-released?start=15#105219 - -It should fail and continue with software decode. It hangs on the OMX_FreeBuffer call. -Looks like image_decode component should be returned to idle state before freeing buffers -when operation did not complete successfully ---- - xbmc/cores/omxplayer/OMXImage.cpp | 78 ++++++++++++++++++++++++++------------- - xbmc/cores/omxplayer/OMXImage.h | 4 ++ - 2 files changed, 56 insertions(+), 26 deletions(-) - -diff --git a/xbmc/cores/omxplayer/OMXImage.cpp b/xbmc/cores/omxplayer/OMXImage.cpp -index d2f6b21..085d050 100644 ---- a/xbmc/cores/omxplayer/OMXImage.cpp -+++ b/xbmc/cores/omxplayer/OMXImage.cpp -@@ -905,6 +905,7 @@ COMXImageDec::COMXImageDec() - { - m_decoded_buffer = NULL; - OMX_INIT_STRUCTURE(m_decoded_format); -+ m_success = false; - } - - COMXImageDec::~COMXImageDec() -@@ -919,15 +920,20 @@ void COMXImageDec::Close() - { - CSingleLock lock(m_OMXSection); - -- if(m_omx_decoder.IsInitialized()) -- { -- m_omx_decoder.FlushInput(); -- m_omx_decoder.FreeInputBuffers(); -- } -- if(m_omx_resize.IsInitialized()) -+ if (!m_success) - { -- m_omx_resize.FlushOutput(); -- m_omx_resize.FreeOutputBuffers(); -+ if(m_omx_decoder.IsInitialized()) -+ { -+ m_omx_decoder.SetStateForComponent(OMX_StateIdle); -+ m_omx_decoder.FlushInput(); -+ m_omx_decoder.FreeInputBuffers(); -+ } -+ if(m_omx_resize.IsInitialized()) -+ { -+ m_omx_resize.SetStateForComponent(OMX_StateIdle); -+ m_omx_resize.FlushOutput(); -+ m_omx_resize.FreeOutputBuffers(); -+ } - } - if(m_omx_tunnel_decode.IsInitialized()) - m_omx_tunnel_decode.Deestablish(); -@@ -1180,6 +1186,7 @@ bool COMXImageDec::Decode(const uint8_t *demuxer_content, unsigned demuxer_bytes - - memcpy( (char*)pixels, m_decoded_buffer->pBuffer, stride * height); - -+ m_success = true; - Close(); - return true; - } -@@ -1194,6 +1201,7 @@ COMXImageEnc::COMXImageEnc() - CSingleLock lock(m_OMXSection); - OMX_INIT_STRUCTURE(m_encoded_format); - m_encoded_buffer = NULL; -+ m_success = false; - } - - COMXImageEnc::~COMXImageEnc() -@@ -1419,6 +1427,7 @@ COMXImageReEnc::COMXImageReEnc() - m_encoded_buffer = NULL; - m_pDestBuffer = NULL; - m_nDestAllocSize = 0; -+ m_success = false; - } - - COMXImageReEnc::~COMXImageReEnc() -@@ -1434,15 +1443,24 @@ void COMXImageReEnc::Close() - { - CSingleLock lock(m_OMXSection); - -- if(m_omx_decoder.IsInitialized()) -- { -- m_omx_decoder.FlushInput(); -- m_omx_decoder.FreeInputBuffers(); -- } -- if(m_omx_encoder.IsInitialized()) -+ if (!m_success) - { -- m_omx_encoder.FlushOutput(); -- m_omx_encoder.FreeOutputBuffers(); -+ if(m_omx_decoder.IsInitialized()) -+ { -+ m_omx_decoder.SetStateForComponent(OMX_StateIdle); -+ m_omx_decoder.FlushInput(); -+ m_omx_decoder.FreeInputBuffers(); -+ } -+ if(m_omx_resize.IsInitialized()) -+ { -+ m_omx_resize.SetStateForComponent(OMX_StateIdle); -+ } -+ if(m_omx_encoder.IsInitialized()) -+ { -+ m_omx_encoder.SetStateForComponent(OMX_StateIdle); -+ m_omx_encoder.FlushOutput(); -+ m_omx_encoder.FreeOutputBuffers(); -+ } - } - if(m_omx_tunnel_decode.IsInitialized()) - m_omx_tunnel_decode.Deestablish(); -@@ -1859,14 +1877,15 @@ bool COMXImageReEnc::ReEncode(COMXImageFile &srcFile, unsigned int maxWidth, uns - } - } - -- Close(); -- - if(m_omx_decoder.BadState()) - return false; - - pDestBuffer = m_pDestBuffer; - CLog::Log(LOGDEBUG, "%s::%s : %s %dx%d -> %dx%d\n", CLASSNAME, __func__, srcFile.GetFilename(), srcFile.GetWidth(), srcFile.GetHeight(), maxWidth, maxHeight); - -+ m_success = true; -+ Close(); -+ - return true; - } - -@@ -1878,6 +1897,7 @@ bool COMXImageReEnc::ReEncode(COMXImageFile &srcFile, unsigned int maxWidth, uns - - COMXTexture::COMXTexture() - { -+ m_success = false; - } - - COMXTexture::~COMXTexture() -@@ -1889,15 +1909,20 @@ void COMXTexture::Close() - { - CSingleLock lock(m_OMXSection); - -- if(m_omx_decoder.IsInitialized()) -- { -- m_omx_decoder.FlushInput(); -- m_omx_decoder.FreeInputBuffers(); -- } -- if(m_omx_egl_render.IsInitialized()) -+ if (!m_success) - { -- m_omx_egl_render.FlushOutput(); -- m_omx_egl_render.FreeOutputBuffers(); -+ if(m_omx_decoder.IsInitialized()) -+ { -+ m_omx_decoder.SetStateForComponent(OMX_StateIdle); -+ m_omx_decoder.FlushInput(); -+ m_omx_decoder.FreeInputBuffers(); -+ } -+ if(m_omx_egl_render.IsInitialized()) -+ { -+ m_omx_egl_render.SetStateForComponent(OMX_StateIdle); -+ m_omx_egl_render.FlushOutput(); -+ m_omx_egl_render.FreeOutputBuffers(); -+ } - } - if (m_omx_tunnel_decode.IsInitialized()) - m_omx_tunnel_decode.Deestablish(); -@@ -2199,6 +2224,7 @@ bool COMXTexture::Decode(const uint8_t *demuxer_content, unsigned demuxer_bytes, - eos = true; - } - } -+ m_success = true; - Close(); - return true; - } -diff --git a/xbmc/cores/omxplayer/OMXImage.h b/xbmc/cores/omxplayer/OMXImage.h -index 9518190..90e513a 100644 ---- a/xbmc/cores/omxplayer/OMXImage.h -+++ b/xbmc/cores/omxplayer/OMXImage.h -@@ -132,6 +132,7 @@ class COMXImageDec - OMX_BUFFERHEADERTYPE *m_decoded_buffer; - OMX_PARAM_PORTDEFINITIONTYPE m_decoded_format; - CCriticalSection m_OMXSection; -+ bool m_success; - }; - - class COMXImageEnc -@@ -150,6 +151,7 @@ class COMXImageEnc - OMX_BUFFERHEADERTYPE *m_encoded_buffer; - OMX_PARAM_PORTDEFINITIONTYPE m_encoded_format; - CCriticalSection m_OMXSection; -+ bool m_success; - }; - - class COMXImageReEnc -@@ -173,6 +175,7 @@ class COMXImageReEnc - CCriticalSection m_OMXSection; - void *m_pDestBuffer; - unsigned int m_nDestAllocSize; -+ bool m_success; - }; - - class COMXTexture -@@ -197,6 +200,7 @@ class COMXTexture - - OMX_BUFFERHEADERTYPE *m_egl_buffer; - CCriticalSection m_OMXSection; -+ bool m_success; - }; - - extern COMXImage g_OMXImage; --- -1.9.3 - - -From f6de911dac602d842fed40ab29ed63c1480b6423 Mon Sep 17 00:00:00 2001 +From e3f74b2032b88c1b9161f75b224cdd41fd27aea8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 2 Jul 2014 20:41:29 +0100 -Subject: [PATCH 88/96] [pi] Reduce time textures are held for when memory is +Subject: [PATCH 84/89] [pi] Reduce time textures are held for when memory is low --- @@ -13763,7 +13291,7 @@ Subject: [PATCH 88/96] [pi] Reduce time textures are held for when memory is 3 files changed, 20 insertions(+) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index d595c86..4f6e44c 100644 +index 01b3933..c7e3d84 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -352,6 +352,10 @@ @@ -13823,189 +13351,44 @@ index f06687c..bf6dfdb 100644 bool GetCodecWvc1() { return m_codec_wvc1_enabled; } void GetDisplaySize(int &width, int &height); -- -1.9.3 +2.0.3 -From 36ce7c955536898171e2770eeb22bcfce168b5e9 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 2 Jul 2014 21:03:59 +0100 -Subject: [PATCH 89/96] [omx] Restrict the number of outstanding jpeg calls to - gpu - -Allowing more than one outstanding call to gpu for texture encode/decode can be beneficial as processing -can be overlapped with vchiq message transfer. - -Experimentally, 3 outstanding operations is optimal. - -Allowing more that this ties up memory on GPU without any performance benefit, so avoid submitting more jobs ---- - xbmc/cores/omxplayer/OMXImage.cpp | 35 +++++++++++++++++++++++++++++++++++ - 1 file changed, 35 insertions(+) - -diff --git a/xbmc/cores/omxplayer/OMXImage.cpp b/xbmc/cores/omxplayer/OMXImage.cpp -index 085d050..efd3343 100644 ---- a/xbmc/cores/omxplayer/OMXImage.cpp -+++ b/xbmc/cores/omxplayer/OMXImage.cpp -@@ -49,6 +49,33 @@ - #define EXIF_TAG_ORIENTATION 0x0112 - - -+// A helper for restricting threads calling GPU functions to limit memory use -+static XbmcThreads::ConditionVariable g_count_cond; -+static CCriticalSection g_count_lock; -+static int g_count_val; -+ -+static void limit_calls_enter(int &count, int allowed) -+{ -+ //printf("%s in=%d\n", __func__, m_count_val); -+ CSingleLock lock(g_count_lock); -+ while (count >= allowed) -+ { -+ g_count_cond.wait(lock); -+ } -+ count++; -+ //printf("%s out=%d\n", __func__, m_count_val); -+} -+ -+static void limit_calls_leave(int &count) -+{ -+ //printf("%s in=%d\n", __func__, m_count_val); -+ CSingleLock lock(g_count_lock); -+ count--; -+ g_count_cond.notifyAll(); -+ //printf("%s out=%d\n", __func__, m_count_val); -+} -+ -+ - #ifdef CLASSNAME - #undef CLASSNAME - #endif -@@ -903,6 +930,7 @@ bool COMXImageFile::ReadFile(const std::string& inputFile) - - COMXImageDec::COMXImageDec() - { -+ limit_calls_enter(g_count_val, 3); - m_decoded_buffer = NULL; - OMX_INIT_STRUCTURE(m_decoded_format); - m_success = false; -@@ -914,6 +942,7 @@ COMXImageDec::~COMXImageDec() - - OMX_INIT_STRUCTURE(m_decoded_format); - m_decoded_buffer = NULL; -+ limit_calls_leave(g_count_val); - } - - void COMXImageDec::Close() -@@ -1198,6 +1227,7 @@ bool COMXImageDec::Decode(const uint8_t *demuxer_content, unsigned demuxer_bytes - - COMXImageEnc::COMXImageEnc() - { -+ limit_calls_enter(g_count_val, 3); - CSingleLock lock(m_OMXSection); - OMX_INIT_STRUCTURE(m_encoded_format); - m_encoded_buffer = NULL; -@@ -1212,6 +1242,7 @@ COMXImageEnc::~COMXImageEnc() - m_encoded_buffer = NULL; - if(m_omx_encoder.IsInitialized()) - m_omx_encoder.Deinitialize(); -+ limit_calls_leave(g_count_val); - } - - bool COMXImageEnc::Encode(unsigned char *buffer, int size, unsigned width, unsigned height, unsigned int pitch) -@@ -1424,6 +1455,7 @@ bool COMXImageEnc::CreateThumbnailFromSurface(unsigned char* buffer, unsigned in - - COMXImageReEnc::COMXImageReEnc() - { -+ limit_calls_enter(g_count_val, 3); - m_encoded_buffer = NULL; - m_pDestBuffer = NULL; - m_nDestAllocSize = 0; -@@ -1437,6 +1469,7 @@ COMXImageReEnc::~COMXImageReEnc() - free (m_pDestBuffer); - m_pDestBuffer = NULL; - m_nDestAllocSize = 0; -+ limit_calls_leave(g_count_val); - } - - void COMXImageReEnc::Close() -@@ -1897,12 +1930,14 @@ bool COMXImageReEnc::ReEncode(COMXImageFile &srcFile, unsigned int maxWidth, uns - - COMXTexture::COMXTexture() - { -+ limit_calls_enter(g_count_val, 3); - m_success = false; - } - - COMXTexture::~COMXTexture() - { - Close(); -+ limit_calls_leave(g_count_val); - } - - void COMXTexture::Close() --- -1.9.3 - - -From e67029fd4675c39caa97ee134f77e6201424d2f2 Mon Sep 17 00:00:00 2001 +From 24dd1becb1c9bc1336652af302d4cb7b28fa5ec6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sat, 5 Jul 2014 19:26:46 +0100 -Subject: [PATCH 90/96] [omxplayer] Explictly choose deinterlace method for +Subject: [PATCH 85/89] [omxplayer] Explictly choose deinterlace method for 1080i As the 1080i deinterlace doesn't require the 3 frames of context we can save ~9MB by requesting it explicitly --- - xbmc/cores/omxplayer/OMXVideo.cpp | 22 +++++++++++++++++++++- - 1 file changed, 21 insertions(+), 1 deletion(-) + xbmc/cores/omxplayer/OMXVideo.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp -index 07c4643..15b62af 100644 +index b100018..15b62af 100644 --- a/xbmc/cores/omxplayer/OMXVideo.cpp +++ b/xbmc/cores/omxplayer/OMXVideo.cpp -@@ -299,6 +299,23 @@ bool COMXVideo::PortSettingsChanged() - - if(m_deinterlace || m_anaglyph) +@@ -301,9 +301,9 @@ bool COMXVideo::PortSettingsChanged() { -+ bool advanced_deinterlace = port_image.format.video.nFrameWidth * port_image.format.video.nFrameHeight <= 576 * 720; -+ -+ if (m_anaglyph != OMX_ImageFilterAnaglyphNone || !advanced_deinterlace) -+ { -+ // Image_fx assumed 3 frames of context. anaglyph and simple deinterlace don't require this -+ OMX_PARAM_U32TYPE extra_buffers; -+ OMX_INIT_STRUCTURE(extra_buffers); -+ extra_buffers.nU32 = -2; -+ -+ omx_err = m_omx_image_fx.SetParameter(OMX_IndexParamBrcmExtraBuffers, &extra_buffers); -+ if(omx_err != OMX_ErrorNone) -+ { -+ CLog::Log(LOGERROR, "%s::%s error OMX_IndexParamBrcmExtraBuffers omx_err(0x%08x)", CLASSNAME, __func__, omx_err); -+ return false; -+ } -+ } -+ - OMX_CONFIG_IMAGEFILTERPARAMSTYPE image_filter; - OMX_INIT_STRUCTURE(image_filter); + bool advanced_deinterlace = port_image.format.video.nFrameWidth * port_image.format.video.nFrameHeight <= 576 * 720; -@@ -313,7 +330,10 @@ bool COMXVideo::PortSettingsChanged() +- if (!advanced_deinterlace) ++ if (m_anaglyph != OMX_ImageFilterAnaglyphNone || !advanced_deinterlace) { - image_filter.nNumParams = 1; - image_filter.nParams[0] = 3; -- image_filter.eImageFilter = OMX_ImageFilterDeInterlaceAdvanced; -+ if (!advanced_deinterlace) -+ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceFast; -+ else -+ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceAdvanced; - } - omx_err = m_omx_image_fx.SetConfig(OMX_IndexConfigCommonImageFilterParameters, &image_filter); - if(omx_err != OMX_ErrorNone) +- // Image_fx assumed 3 frames of context. simple deinterlace doesn't require this ++ // Image_fx assumed 3 frames of context. anaglyph and simple deinterlace don't require this + OMX_PARAM_U32TYPE extra_buffers; + OMX_INIT_STRUCTURE(extra_buffers); + extra_buffers.nU32 = -2; -- -1.9.3 +2.0.3 -From ec10e2c17dbf469e4f91d2651fe7823fd09e7ac2 Mon Sep 17 00:00:00 2001 +From 2fd240bda6832e0cbc64bc4d6f2e1c7569aab8f6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 8 Jul 2014 21:00:44 +0100 -Subject: [PATCH 91/96] [omxcodec] Fix 3D rendering for dvdplayer +Subject: [PATCH 86/89] [omxcodec] Fix 3D rendering for dvdplayer Similar to https://github.com/xbmc/xbmc/pull/3887 --- @@ -14069,13 +13452,13 @@ index 53873f6..84a46ec 100644 return true; } -- -1.9.3 +2.0.3 -From 257fe64e6cd941986314da84749a81f4df222e7f Mon Sep 17 00:00:00 2001 +From bf70751f47a3ce9743f825b9e8a8b29e0fa7856e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 9 Jul 2014 22:45:43 +0100 -Subject: [PATCH 92/96] [rbp] Make cachemembuffersize default depend on memory +Subject: [PATCH 87/89] [rbp] Make cachemembuffersize default depend on memory size --- @@ -14114,7 +13497,7 @@ index 65c95a3..bbf7ab5 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 5020105..7f2d65b 100644 +index f18c227..089bacb 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -364,7 +364,12 @@ void CAdvancedSettings::Initialize() @@ -14131,13 +13514,13 @@ index 5020105..7f2d65b 100644 // the following setting determines the readRate of a player data // as multiply of the default data read rate -- -1.9.3 +2.0.3 -From dd4ff79f51a015a2a4e2c57726b402db0ee1e997 Mon Sep 17 00:00:00 2001 +From 75fae8865a08b52c8874e13ce6085473c46a1120 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 9 Jul 2014 23:31:32 +0100 -Subject: [PATCH 93/96] [rbp] Make gui limit default to 720 when memory is +Subject: [PATCH 88/89] [rbp] Make gui limit default to 720 when memory is limited --- @@ -14184,13 +13567,13 @@ index bbf7ab5..85e1f21 100644 ResumeVideoOutput(); -- -1.9.3 +2.0.3 -From 7ea807a6573bdc7c07127ea3ed7349f92a54ef0a Mon Sep 17 00:00:00 2001 +From 31736bfd0ca93f3030eb94f41bdc06899a81a83d Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 13 Jul 2014 11:28:20 +0100 -Subject: [PATCH 94/96] [ResamplePi] Fix xbmc crash with usb audio when music +Subject: [PATCH 89/89] [ResamplePi] Fix xbmc crash with usb audio when music file switched Need to handle the case where AE requests fewer output samples that are produced. @@ -14338,4 +13721,5 @@ index 47a9e08..b88a90b 100644 } -- -1.9.3 +2.0.3 +