From 92d6b0d92af001ecfc6104ed487fe2d049f6488f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 24 Dec 2013 16:17:57 +0100 Subject: [PATCH] xbmc: update to xbmc-13.alpha-5824572, fix build with libpng-1.6.x, update FM patches Signed-off-by: Stephan Raue --- .../mediacenter/xbmc-theme-Confluence/meta | 2 +- packages/mediacenter/xbmc/package.mk | 7 +- ...mc-995.01-fernetmenta-fixes-e1817ac.patch} | 1418 ++++++++++++----- 3 files changed, 980 insertions(+), 447 deletions(-) rename packages/mediacenter/xbmc/patches/{xbmc-995.01-fernetmenta-fixes-ca8ade7.patch => xbmc-995.01-fernetmenta-fixes-e1817ac.patch} (89%) diff --git a/packages/mediacenter/xbmc-theme-Confluence/meta b/packages/mediacenter/xbmc-theme-Confluence/meta index 8ea7427ffd..a8ab7d81b4 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/meta +++ b/packages/mediacenter/xbmc-theme-Confluence/meta @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="xbmc-theme-Confluence" -PKG_VERSION="13.alpha-ca8ade7" +PKG_VERSION="13.alpha-5824572" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/xbmc/package.mk b/packages/mediacenter/xbmc/package.mk index 5e1b28d579..31d741f7b6 100644 --- a/packages/mediacenter/xbmc/package.mk +++ b/packages/mediacenter/xbmc/package.mk @@ -17,14 +17,14 @@ ################################################################################ PKG_NAME="xbmc" -PKG_VERSION="13.alpha-ca8ade7" +PKG_VERSION="13.alpha-5824572" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.xbmc.org" PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" -PKG_DEPENDS="Python zlib bzip2 systemd ffmpeg libass curl rtmpdump fontconfig freetype libmad libogg libmodplug faad2 flac libmpeg2 taglib service.openelec.settings" -PKG_BUILD_DEPENDS_TARGET="toolchain boost Python zlib bzip2 systemd lzo pcre swig ffmpeg libass enca curl libssh rtmpdump fontconfig fribidi tinyxml libjpeg-turbo libpng tiff freetype jasper libmad libsamplerate libogg libcdio libmodplug faad2 flac libmpeg2 taglib yajl sqlite" +PKG_DEPENDS="Python zlib bzip2 systemd ffmpeg libass curl rtmpdump fontconfig freetype libmad libogg libmodplug faad2 flac libmpeg2 taglib libxml2service.openelec.settings" +PKG_BUILD_DEPENDS_TARGET="toolchain boost Python zlib bzip2 systemd lzo pcre swig ffmpeg libass enca curl libssh rtmpdump fontconfig fribidi tinyxml libjpeg-turbo libpng tiff freetype jasper libmad libsamplerate libogg libcdio libmodplug faad2 flac libmpeg2 taglib libxml2 libxslt yajl sqlite" PKG_PRIORITY="optional" PKG_SECTION="mediacenter" PKG_SHORTDESC="xbmc: XBMC Mediacenter" @@ -418,6 +418,7 @@ pre_configure_target() { export CFLAGS="$CFLAGS $XBMC_CFLAGS" export CXXFLAGS="$CXXFLAGS $XBMC_CXXFLAGS" + export LIBS="$LIBS -lz" } make_target() { diff --git a/packages/mediacenter/xbmc/patches/xbmc-995.01-fernetmenta-fixes-ca8ade7.patch b/packages/mediacenter/xbmc/patches/xbmc-995.01-fernetmenta-fixes-e1817ac.patch similarity index 89% rename from packages/mediacenter/xbmc/patches/xbmc-995.01-fernetmenta-fixes-ca8ade7.patch rename to packages/mediacenter/xbmc/patches/xbmc-995.01-fernetmenta-fixes-e1817ac.patch index c2676b6158..15bb6ac5b3 100644 --- a/packages/mediacenter/xbmc/patches/xbmc-995.01-fernetmenta-fixes-ca8ade7.patch +++ b/packages/mediacenter/xbmc/patches/xbmc-995.01-fernetmenta-fixes-e1817ac.patch @@ -1,7 +1,7 @@ -From a22729c301f370d1a36eed00713718fe3e2cff0d Mon Sep 17 00:00:00 2001 +From db011d25c429e827c5d1d2f2b8ccbcc544b1b17e Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:34:39 +0200 -Subject: [PATCH 01/88] videoplayer: adapt lateness detection and dropping to +Subject: [PATCH 01/90] videoplayer: adapt lateness detection and dropping to buffering --- @@ -582,10 +582,10 @@ index f8ad541..186e271 100644 1.8.5.1 -From 66eec14cb60a3bca7205c6fe41f3662af0071494 Mon Sep 17 00:00:00 2001 +From 765694561cae31c523acdb919d98e3f1f26a3a11 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 2 Sep 2012 16:05:21 +0200 -Subject: [PATCH 02/88] video player: present correct pts to user for a/v sync +Subject: [PATCH 02/90] video player: present correct pts to user for a/v sync (after buffering in renderer) --- @@ -653,10 +653,10 @@ index 186e271..59c7f09 100644 1.8.5.1 -From 6fbee3341aa0fb897b3547d15c24eb0799a53d3b Mon Sep 17 00:00:00 2001 +From 7a2d6e48ca9d09145386b74b5c845568bcfe61d9 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 16 Feb 2013 18:25:53 +0100 -Subject: [PATCH 03/88] videoplayer: some rework and documentation +Subject: [PATCH 03/90] videoplayer: some rework and documentation --- .../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 29 ++++++++++++++++++++-- @@ -767,10 +767,10 @@ index 4c3d0e8..7f6de3c 100644 1.8.5.1 -From bd1b697e913e9e867d927654f1f9acf873deae52 Mon Sep 17 00:00:00 2001 +From db31547695a45dd8d401cbbdb3416140cd6b1c7c Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 1 Jun 2013 11:21:19 +0200 -Subject: [PATCH 04/88] renderer: bump buffers to 5 +Subject: [PATCH 04/90] renderer: bump buffers to 5 --- xbmc/cores/VideoRenderers/BaseRenderer.h | 2 +- @@ -793,10 +793,10 @@ index 5a21fec..c131dd1 100644 1.8.5.1 -From a24500c3cd19a8ca4fb3462acde4986f754e7efd Mon Sep 17 00:00:00 2001 +From c73d33e5454df1ab3eda9c0602dbfeff1de3fa47 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:41:31 +0200 -Subject: [PATCH 05/88] videoplayer: update frametime, it might change due to +Subject: [PATCH 05/90] videoplayer: update frametime, it might change due to fps detection --- @@ -820,10 +820,10 @@ index 7f6de3c..699a10a 100644 1.8.5.1 -From 32564c46061c555f4691614c83fae6a0a7dba3e1 Mon Sep 17 00:00:00 2001 +From a5b35e7b940fef85163778a02a7a5c5c9e03ecd5 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:43:06 +0200 -Subject: [PATCH 06/88] videoplayer: give streams with invalid fps a chance for +Subject: [PATCH 06/90] videoplayer: give streams with invalid fps a chance for fps detection --- @@ -847,10 +847,10 @@ index 699a10a..9d1a920 100644 1.8.5.1 -From 9a6209715110aa2efa4269355d374d682dd36780 Mon Sep 17 00:00:00 2001 +From 3129210aa4590ade059fef758eec64c3437b636a Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:49:05 +0200 -Subject: [PATCH 07/88] dvdplayer: allow rewinding at end of stream, do a seek +Subject: [PATCH 07/90] dvdplayer: allow rewinding at end of stream, do a seek after rewind --- @@ -887,10 +887,10 @@ index a698b8f..a845c7e 100644 1.8.5.1 -From f3c3e35d6a73ee59c3416e3cdae1d92cde0154b2 Mon Sep 17 00:00:00 2001 +From cda1ab8aa1b6c505b719b6930ddf32c28a90ea0e Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:22:05 +0200 -Subject: [PATCH 08/88] X11: ditch SDL for video and window events +Subject: [PATCH 08/90] X11: ditch SDL for video and window events --- xbmc/Application.cpp | 2 +- @@ -906,7 +906,7 @@ Subject: [PATCH 08/88] X11: ditch SDL for video and window events create mode 100644 xbmc/windowing/WinEventsX11.h diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 08bfba0..ffb90dc 100644 +index 387f0d4..4c1cece 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -857,7 +857,7 @@ bool CApplication::CreateGUI() @@ -2427,10 +2427,10 @@ index b1464d0..34b912f 100644 1.8.5.1 -From 56e4c5f3047bf5f4819e0afd239cd7fd4632b836 Mon Sep 17 00:00:00 2001 +From b095bc79c1fbc23f3e1aad602a7b3b58ffd02efc Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:24:22 +0200 -Subject: [PATCH 09/88] X11: Add xbmc icon +Subject: [PATCH 09/90] X11: Add xbmc icon --- xbmc/windowing/X11/WinSystemX11.cpp | 126 +++++++++++++++++++++++++++++++++++- @@ -2620,10 +2620,10 @@ index 34b912f..352e90e 100644 1.8.5.1 -From ebf9a38c349d6b5833efa9481dd4e75809ab86eb Mon Sep 17 00:00:00 2001 +From e40478d4f5346d8978600e8bd050f1521305d343 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 20 May 2012 14:11:26 +0200 -Subject: [PATCH 10/88] X11: add SDL joystick until we have a better solution +Subject: [PATCH 10/90] X11: add SDL joystick until we have a better solution --- xbmc/windowing/WinEventsX11.cpp | 26 ++++++++++++++++++++++++++ @@ -2677,10 +2677,10 @@ index ad58aad..6f57a87 100644 1.8.5.1 -From 7c9c9ed5670de0bf1fa66dd7ca62fcb98fbd752d Mon Sep 17 00:00:00 2001 +From 0a50bf41a8ad59daaf55b36a22e8857ac4a8e1dd Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 12:35:55 +0200 -Subject: [PATCH 11/88] X11: factor out code handling device reset notification +Subject: [PATCH 11/90] X11: factor out code handling device reset notification --- xbmc/windowing/X11/WinSystemX11.cpp | 22 ++++++++++++++-------- @@ -2743,10 +2743,10 @@ index 352e90e..3f91b9b 100644 1.8.5.1 -From a29ba37f50eccacd39244270ff9beb5b028d58b7 Mon Sep 17 00:00:00 2001 +From 615292f0c83bc50cf23020a88f6c2ab933e7fb31 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:02:00 +0200 -Subject: [PATCH 12/88] X11: move xrandr events to WinEventsX11 +Subject: [PATCH 12/90] X11: move xrandr events to WinEventsX11 --- xbmc/windowing/WinEventsX11.cpp | 42 +++++++++++++++++++++++++++++++++++++ @@ -2890,10 +2890,10 @@ index 304dac8..16b13aa 100644 1.8.5.1 -From 165762233f1c1ebacdcd1cd5ea0341c75668e7c8 Mon Sep 17 00:00:00 2001 +From 98d1541c52af9ee5c19ee0b1c69f54c148e6ba4a Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 12 Apr 2012 15:43:56 +0200 -Subject: [PATCH 13/88] xrandr: remove method RestoreState +Subject: [PATCH 13/90] xrandr: remove method RestoreState --- xbmc/windowing/X11/WinSystemX11.cpp | 13 +++++++++++-- @@ -2972,10 +2972,10 @@ index 0aec487..00b49dc 100644 1.8.5.1 -From a722531bdcee618336c4aa0294c65f99def60b9a Mon Sep 17 00:00:00 2001 +From 8d2fa52f2e5fc7cf2f10656d75ed3c2bf076bd23 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 20 May 2012 13:17:10 +0200 -Subject: [PATCH 14/88] xrandr: observe orientation +Subject: [PATCH 14/90] xrandr: observe orientation --- xbmc/windowing/X11/WinSystemX11.cpp | 89 ++++++++++++++++++++++++++++++------- @@ -3190,10 +3190,10 @@ index 00b49dc..508604d 100644 1.8.5.1 -From 862bc8ada5bacf6826a047b9bab52df5714c1e18 Mon Sep 17 00:00:00 2001 +From e8c0f749426c9021c048e19e711c49571d479032 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:54:15 +0200 -Subject: [PATCH 15/88] xrandr: allow getting info for multiple screen's +Subject: [PATCH 15/90] xrandr: allow getting info for multiple screen's Refactored by: Joakim Plate --- @@ -3368,10 +3368,10 @@ index 508604d..d37838a 100644 1.8.5.1 -From 5c6f359a02c11bf497e85b85cd6c509c1c639c13 Mon Sep 17 00:00:00 2001 +From f1da8a0f24c890c857240bb00d61e60dbdfc47c4 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:44:00 +0200 -Subject: [PATCH 16/88] X11: fix multi-head setups +Subject: [PATCH 16/90] X11: fix multi-head setups --- language/English/strings.po | 4 +- @@ -4130,10 +4130,10 @@ index 4175aab..94584ab 100644 1.8.5.1 -From 56dc13ac36548b71aa9f53f636d4a0aa71b6d647 Mon Sep 17 00:00:00 2001 +From af4a8960cd11cf76ac70ccb0040503cab02db008 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:36:32 +0200 -Subject: [PATCH 17/88] X11: remove all DefaultScreen and RootWindow macros +Subject: [PATCH 17/90] X11: remove all DefaultScreen and RootWindow macros --- xbmc/windowing/X11/WinSystemX11.cpp | 6 +++--- @@ -4201,10 +4201,10 @@ index 6383754..21e7dc5 100644 1.8.5.1 -From 55a45a9fd965faa0184d56ecc512d476c993e358 Mon Sep 17 00:00:00 2001 +From 7c5fed2c6721409e4b057239320e9fd0df0cbd40 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:45:22 +0200 -Subject: [PATCH 18/88] X11: remove all DefaultScreen and RootWindow macros +Subject: [PATCH 18/90] X11: remove all DefaultScreen and RootWindow macros (VideoRefClock) Note this is on a separate display connection. @@ -4276,10 +4276,10 @@ index 0b3950a..ca43b5a 100644 1.8.5.1 -From 7733b7c2b9ebf4973f8f6f0c84f23a15a76db960 Mon Sep 17 00:00:00 2001 +From 9374198b2ceca9fa18d2fc2e68f4a5ac08436523 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 20 Jun 2012 17:37:11 +0200 -Subject: [PATCH 19/88] X11: recreate gl context after output has changed +Subject: [PATCH 19/90] X11: recreate gl context after output has changed --- xbmc/windowing/X11/WinSystemX11.cpp | 24 ++++++++++++++---------- @@ -4430,10 +4430,10 @@ index 21e7dc5..8e68d5d 100644 1.8.5.1 -From 7864cfe9a7876fd0494159b79bd1b7258627d7b7 Mon Sep 17 00:00:00 2001 +From e69d50eaea9b9a21b4159311411c6dcb2ef5bff0 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:06:25 +0200 -Subject: [PATCH 20/88] X11: hook video reference clock in windowing +Subject: [PATCH 20/90] X11: hook video reference clock in windowing --- xbmc/video/VideoReferenceClock.cpp | 71 +++++++++++++++++++++++++++----------- @@ -4638,10 +4638,10 @@ index dd65a1b..afd71fc 100644 1.8.5.1 -From 0767e2f8485c1cd7f88832f4547dedc9d2e9008d Mon Sep 17 00:00:00 2001 +From 0028325ed45447ee11b974a3daacb1be36cbc172 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 21 Jun 2012 17:26:51 +0200 -Subject: [PATCH 21/88] X11: fix video calibrations +Subject: [PATCH 21/90] X11: fix video calibrations --- xbmc/windowing/WinSystem.h | 1 + @@ -4733,10 +4733,10 @@ index 9666cc3..5b52d6c 100644 1.8.5.1 -From c4fa73ddef59bef02554703360dbd95385017852 Mon Sep 17 00:00:00 2001 +From eedd6a3825ea8452d1500bab461dacaaa2391525 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:00:26 +0200 -Subject: [PATCH 22/88] X11: deactivate screen saver on startup +Subject: [PATCH 22/90] X11: deactivate screen saver on startup --- xbmc/windowing/X11/WinSystemX11.cpp | 29 +++++++++++++++++++++++++++++ @@ -4806,10 +4806,10 @@ index 5b52d6c..b2bd5a0 100644 1.8.5.1 -From 05726817d394801f7fe3abc0a88a1243ee375bfd Mon Sep 17 00:00:00 2001 +From 5b424e867d1bdde5a134eeab815e235fe526924a Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:10:09 +0200 -Subject: [PATCH 23/88] X11: change method of going full-screen +Subject: [PATCH 23/90] X11: change method of going full-screen --- xbmc/windowing/X11/WinSystemX11.cpp | 9 ++++++++- @@ -4853,10 +4853,10 @@ index b76b229..869baa8 100644 1.8.5.1 -From 2fd5b63219e1a7db564a6846c758a050eb0dc52d Mon Sep 17 00:00:00 2001 +From f9371ba0546944816ab31b7f7af7abdc272d6794 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Jun 2012 19:12:39 +0200 -Subject: [PATCH 24/88] X11: reset key repeat and key modifier on focus lost +Subject: [PATCH 24/90] X11: reset key repeat and key modifier on focus lost and gain --- @@ -4888,10 +4888,10 @@ index d98f12f..743aca9 100644 1.8.5.1 -From 469bb05231d813a3e45becfdc1a733397fddabe5 Mon Sep 17 00:00:00 2001 +From 9ff3e1d468922512d1a115fed409a9e5e0eab7d0 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 14:18:46 +0200 -Subject: [PATCH 25/88] X11: replace custom utf8 to unicode with charset +Subject: [PATCH 25/90] X11: replace custom utf8 to unicode with charset convertor (squash to x11 events) --- @@ -5108,10 +5108,10 @@ index a412f32..9a8a912 100644 1.8.5.1 -From 4248e5de944310b2a8e5efdf743bbeaf3f4cb8ef Mon Sep 17 00:00:00 2001 +From f35aae7302ffa01a348390ed796788295c169099 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 14:23:54 +0200 -Subject: [PATCH 26/88] X11: fixed invalid usage of sizeof() (squash into x11 +Subject: [PATCH 26/90] X11: fixed invalid usage of sizeof() (squash into x11 changes) --- @@ -5175,10 +5175,10 @@ index 9a8a912..c69169c 100644 1.8.5.1 -From b1abeb853474a4570507eaccc75b2b63cf6dec64 Mon Sep 17 00:00:00 2001 +From 1550756ace0cb7aee0e965c0c9062c303266e5c1 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 9 Jun 2012 18:23:53 +0200 -Subject: [PATCH 27/88] add missing keys to xbmc keytable +Subject: [PATCH 27/90] add missing keys to xbmc keytable --- xbmc/input/XBMC_keytable.cpp | 2 ++ @@ -5201,10 +5201,10 @@ index d57f4d3..b807897 100644 1.8.5.1 -From d36fe37aa6f5cda9c9d7ab6c5909ccd4ebde9f12 Mon Sep 17 00:00:00 2001 +From 3c5c6720c984a8613d7725e30603655fc2daf6da Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 16 Mar 2012 15:57:51 +0100 -Subject: [PATCH 28/88] videorefclock: temp deactivate of nv settings +Subject: [PATCH 28/90] videorefclock: temp deactivate of nv settings --- xbmc/video/VideoReferenceClock.cpp | 2 +- @@ -5227,10 +5227,10 @@ index 0ddf102..3ae7107 100644 1.8.5.1 -From cfe74aad651a6bcf0d89d147579e73a6165d99fd Mon Sep 17 00:00:00 2001 +From 9cd286340d5ab507a0bfa8262745bafa614218fb Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 20 Aug 2012 09:09:09 +0200 -Subject: [PATCH 29/88] videorefclock: ask graphics context for refresh rate +Subject: [PATCH 29/90] videorefclock: ask graphics context for refresh rate --- xbmc/video/VideoReferenceClock.cpp | 3 ++- @@ -5261,10 +5261,10 @@ index 3ae7107..27bebde 100644 1.8.5.1 -From 3070dfda4f3fc1ab6f015e553e34ad63c42e5f7e Mon Sep 17 00:00:00 2001 +From 6e7195a151c77b38206f0326b4051d8bc0fe14ea Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 9 Jul 2012 14:00:18 +0200 -Subject: [PATCH 30/88] X11: fix icon texture after +Subject: [PATCH 30/90] X11: fix icon texture after cc5ed3c2474084ebc0373a3046410e6f766e03f4 --- @@ -5372,10 +5372,10 @@ index 869baa8..bfe3797 100644 1.8.5.1 -From e01a852ae5355090fe3d8218ad8739177c834f32 Mon Sep 17 00:00:00 2001 +From f2f1cc39132e099cebd87b32ea5579226faf2801 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 10 Jul 2012 11:14:12 +0200 -Subject: [PATCH 31/88] X11: check for window manager +Subject: [PATCH 31/90] X11: check for window manager --- xbmc/windowing/X11/WinSystemX11.cpp | 74 ++++++++++++++++++++++++++++++++++++- @@ -5496,10 +5496,10 @@ index b2bd5a0..3e62cd8 100644 1.8.5.1 -From 0a2cabe18d91f0ad580563f78b3e9f010ced898c Mon Sep 17 00:00:00 2001 +From 4c92ee213261f94092da8ec12df41dffbecc0fd9 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 12 Jul 2012 11:11:47 +0200 -Subject: [PATCH 32/88] X11: dont set window on xrandr if no mode available +Subject: [PATCH 32/90] X11: dont set window on xrandr if no mode available --- xbmc/windowing/X11/WinSystemX11.cpp | 11 ++++++----- @@ -5536,10 +5536,10 @@ index af82061..4f33c68 100644 1.8.5.1 -From 0262a0018e045a74a1e361745b1fbf8da7837153 Mon Sep 17 00:00:00 2001 +From 74f22936acb8dc51ba3337773382602a52406818 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 26 Jul 2012 09:34:28 +0200 -Subject: [PATCH 33/88] X11: fix crash after a resolution change on startup +Subject: [PATCH 33/90] X11: fix crash after a resolution change on startup --- xbmc/windowing/X11/WinSystemX11.cpp | 3 ++- @@ -5563,10 +5563,10 @@ index 4f33c68..bc4e963 100644 1.8.5.1 -From 9d895ad974e5f7cf979e4f73279d64924c16eb72 Mon Sep 17 00:00:00 2001 +From d6b09534044db8ab8616fa6515113ba018192dae Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 15 Sep 2012 18:27:29 +0200 -Subject: [PATCH 34/88] X11: lock graphics context in NotifyXRREvent +Subject: [PATCH 34/90] X11: lock graphics context in NotifyXRREvent --- xbmc/windowing/X11/WinSystemX11.cpp | 2 ++ @@ -5589,10 +5589,10 @@ index bc4e963..57a8d20 100644 1.8.5.1 -From 687177e6f8e8dffed65cf51837c088f8c2c53a15 Mon Sep 17 00:00:00 2001 +From a2e2851342ab9308bf0da6e1114e680ad9204cd5 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 23 Aug 2012 19:39:49 +0200 -Subject: [PATCH 35/88] ffmpeg: add av_find_default_stream_index to interface +Subject: [PATCH 35/90] ffmpeg: add av_find_default_stream_index to interface --- lib/DllAvFormat.h | 4 ++++ @@ -5638,10 +5638,10 @@ index 0016c0b..3514856 100644 1.8.5.1 -From bd31b0b9155c3cee74210eeac15e473392e57492 Mon Sep 17 00:00:00 2001 +From 9a4ef851e8452ac5ed087adb57f81b63a6de1720 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 20 Aug 2012 16:06:39 +0200 -Subject: [PATCH 36/88] dvdplayer: observe pts counter overflow +Subject: [PATCH 36/90] dvdplayer: observe pts counter overflow --- .../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 198 ++++++++++++++++++++- @@ -5928,10 +5928,10 @@ index aef5ab1..35abbdf 100644 1.8.5.1 -From e89dfb43818af08544dfd7335a9b3e050e8cc64d Mon Sep 17 00:00:00 2001 +From f6a01ac55df029aabe63a4b47f0cb3609fd53f27 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 2 Oct 2012 13:02:10 +0200 -Subject: [PATCH 37/88] dvdplayer: avoid short screen flicker caused by +Subject: [PATCH 37/90] dvdplayer: avoid short screen flicker caused by unnecessary reconfigure of renderer --- @@ -5964,10 +5964,10 @@ index 9d1a920..9880bdb 100644 1.8.5.1 -From 81ebffee025724b7f0883017e9c1e1f7c37e5e53 Mon Sep 17 00:00:00 2001 +From 961cbbed9dc4a3bc632a25399214bcc4aaab71b1 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 11 Oct 2012 12:05:50 +0200 -Subject: [PATCH 38/88] vdpau: advanced settings for auto deinterlacing +Subject: [PATCH 38/90] vdpau: advanced settings for auto deinterlacing --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++---- @@ -6033,10 +6033,10 @@ index 7d16957..bb70f3e 100644 1.8.5.1 -From 9b544ff89c5f3db9392fc796bcd476543a835574 Mon Sep 17 00:00:00 2001 +From f343cbeb7739b614d4ed94265e34abbf362dd20a Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 2 Nov 2012 13:20:03 +0100 -Subject: [PATCH 39/88] player: fix rewind +Subject: [PATCH 39/90] player: fix rewind --- xbmc/cores/dvdplayer/DVDMessage.h | 5 ++++- @@ -6251,10 +6251,10 @@ index 59c7f09..65dea76 100644 1.8.5.1 -From d37eb531129c57f64a3dfea9330cbc6e758a5b27 Mon Sep 17 00:00:00 2001 +From b7c5acad4aea929bd0f9775824e974a3c374019b Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 23 Nov 2012 17:41:12 +0100 -Subject: [PATCH 40/88] xrandr: fix query for multiple screens +Subject: [PATCH 40/90] xrandr: fix query for multiple screens --- xbmc/windowing/X11/XRandR.cpp | 10 ++++++---- @@ -6295,10 +6295,10 @@ index 4685413..e610150 100644 1.8.5.1 -From f04414d9a1e13d47ee0ee23dfd638ffed724b985 Mon Sep 17 00:00:00 2001 +From e54e321233ff166ecb989fb221823c848ab9df46 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 2 Dec 2012 15:46:55 +0100 -Subject: [PATCH 41/88] X11: add debug log to print out refresh after xrr event +Subject: [PATCH 41/90] X11: add debug log to print out refresh after xrr event --- xbmc/windowing/X11/WinSystemX11.cpp | 6 ++++++ @@ -6325,10 +6325,10 @@ index 57a8d20..a237dc0 100644 1.8.5.1 -From 4d208883f51b412ceb77742d9b49ecf0f7856046 Mon Sep 17 00:00:00 2001 +From 66877b9ce74813f430b141925eb6a3ac148e268e Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 11 Dec 2012 11:08:13 +0100 -Subject: [PATCH 42/88] X11: dont call XCloseDisplay on shutdown, it crashes +Subject: [PATCH 42/90] X11: dont call XCloseDisplay on shutdown, it crashes when powered doen by cec on ATI --- @@ -6353,10 +6353,10 @@ index a237dc0..ab660b1 100644 1.8.5.1 -From e8b97c14e76cf35e725d8bd3382e7ccff797d494 Mon Sep 17 00:00:00 2001 +From 3372fcfcd6e1af87afd944b403ff1f646ca2d5e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Coutant?= Date: Wed, 12 Dec 2012 19:49:47 +0100 -Subject: [PATCH 43/88] x11: support for multiple x screens +Subject: [PATCH 43/90] x11: support for multiple x screens --- xbmc/windowing/X11/XRandR.cpp | 2 +- @@ -6379,10 +6379,10 @@ index e610150..5c53574 100644 1.8.5.1 -From e38b669469b1763b9fefb9bb4e276ea80acb5f59 Mon Sep 17 00:00:00 2001 +From 8febf7cbf406830302f61491ebf451a53414b1d2 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 24 Dec 2012 16:02:42 +0100 -Subject: [PATCH 44/88] pvr: increase changes counter of stream on stream +Subject: [PATCH 44/90] pvr: increase changes counter of stream on stream change, cosmetics after dd307930d39d92f145a01a16600cd00e01ec39be --- @@ -6416,10 +6416,10 @@ index e5f8234..96c9e89 100644 1.8.5.1 -From 0d88e91c9aca9791c5ea88a6d0ceac61b71c5b29 Mon Sep 17 00:00:00 2001 +From fe743a69a6ad944a4b5b96415c25a867c5f7378a Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 17 Jan 2013 16:03:22 +0100 -Subject: [PATCH 45/88] X11: add keymapping for XF86XK_Sleep +Subject: [PATCH 45/90] X11: add keymapping for XF86XK_Sleep --- xbmc/windowing/WinEventsX11.cpp | 1 + @@ -6441,10 +6441,10 @@ index a62521f..263cb5a 100644 1.8.5.1 -From 8c0add1f7af7825f8fd2af2e485b1124feea9761 Mon Sep 17 00:00:00 2001 +From 06120db67b563d698100165101921204e7f76616 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 21 Jan 2013 09:00:19 +0100 -Subject: [PATCH 46/88] X11: remove toggle full screen after resume +Subject: [PATCH 46/90] X11: remove toggle full screen after resume --- xbmc/powermanagement/PowerManager.cpp | 5 ----- @@ -6470,10 +6470,10 @@ index 590a887..35b5a21 100644 1.8.5.1 -From fe9288ccda57be6ff6a46aef8e3b8c1d67437b76 Mon Sep 17 00:00:00 2001 +From 4c7080f9954fa48330edb76374300b26cd14a090 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 23 Jan 2013 17:03:02 +0100 -Subject: [PATCH 47/88] xrandr: set screen on mode change command +Subject: [PATCH 47/90] xrandr: set screen on mode change command --- xbmc/windowing/X11/XRandR.cpp | 2 +- @@ -6496,10 +6496,10 @@ index 5c53574..4355ef7 100644 1.8.5.1 -From 1d369cd0e5bdca29a13c662cbb24c4ff6f6deee1 Mon Sep 17 00:00:00 2001 +From ef994cae3b3295ff2fd3f086152c333ea3a3f466 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 23 Jan 2013 17:03:39 +0100 -Subject: [PATCH 48/88] X11: recreate glx context when output changes +Subject: [PATCH 48/90] X11: recreate glx context when output changes --- xbmc/windowing/X11/WinSystemX11.cpp | 6 +++--- @@ -6550,10 +6550,10 @@ index 3e62cd8..2a1fb41 100644 1.8.5.1 -From aafe3e20fce89330ae1266904ebad36dc50b632e Mon Sep 17 00:00:00 2001 +From 07f38b3f581c30e19ec79f80129991d4179a583b Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 14 Dec 2012 14:19:15 +0100 -Subject: [PATCH 49/88] pvr: do not show selection dialog for a single menu +Subject: [PATCH 49/90] pvr: do not show selection dialog for a single menu hook --- @@ -6591,10 +6591,10 @@ index 14c9cde..57b18a5 100644 1.8.5.1 -From 8599876cd6323733b64e71142ffa4d484c136214 Mon Sep 17 00:00:00 2001 +From cda5b629a3c8e2bb3b942cf7d75c9a6af3271a36 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 3 Feb 2013 08:17:16 +0100 -Subject: [PATCH 50/88] X11: use default screen parameters if no output +Subject: [PATCH 50/90] X11: use default screen parameters if no output connected --- @@ -6698,10 +6698,10 @@ index 4329a22..2adf8a0 100644 1.8.5.1 -From 2ebad927404b532634e240d5964f80731110f231 Mon Sep 17 00:00:00 2001 +From f5313fba45108d41db860eb17ced41452f4be4a2 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 23 Mar 2013 15:13:32 +0100 -Subject: [PATCH 51/88] X11: create parent window +Subject: [PATCH 51/90] X11: create parent window --- xbmc/windowing/X11/WinSystemX11.cpp | 69 +++++++++++++++++++++++-------------- @@ -6967,10 +6967,10 @@ index 2a1fb41..e8993f1 100644 1.8.5.1 -From cfc093f450fc7233bb4556849a6ecac13086ac59 Mon Sep 17 00:00:00 2001 +From 225cd8ba4ebe920c00f44bc328949e343b333149 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 24 Mar 2013 12:30:12 +0100 -Subject: [PATCH 52/88] X11: use system key repeat rate instead of hardcoded +Subject: [PATCH 52/90] X11: use system key repeat rate instead of hardcoded one, taken from 58fd64b194e38b73b5f3132744bab35e994e7441 --- @@ -7172,10 +7172,10 @@ index c69169c..6429291 100644 1.8.5.1 -From b62ac57148f5f0f19a102a96a788d5b7777fdbee Mon Sep 17 00:00:00 2001 +From 58abfc211e02bfdd10a5d14c2ee81218cb40f5bb Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 24 Mar 2013 16:04:48 +0100 -Subject: [PATCH 53/88] linux: use CLOCK_MONOTONIC_RAW as this is not subject +Subject: [PATCH 53/90] linux: use CLOCK_MONOTONIC_RAW as this is not subject to NTP --- @@ -7213,10 +7213,10 @@ index c06b8c5..4390d2e 100644 1.8.5.1 -From 9de575ca313457584a6d64cdafa2b31677dc33ce Mon Sep 17 00:00:00 2001 +From 34a91d8d81900b59377514b175d32108c22516a9 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Mar 2013 15:18:53 +0100 -Subject: [PATCH 54/88] OMXPlayer: some caching fixes for pvr +Subject: [PATCH 54/90] OMXPlayer: some caching fixes for pvr --- xbmc/cores/omxplayer/OMXPlayer.cpp | 3 ++- @@ -7240,17 +7240,17 @@ index 9cccaac..4168195 100644 1.8.5.1 -From 53ef844d159522f4c0d9470653bbfe85430506e6 Mon Sep 17 00:00:00 2001 +From 2900988f3f0b4fac2b3321ceea84580d5d8e4cdb Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Mar 2013 20:50:59 +0100 -Subject: [PATCH 55/88] fix incorrect display of fps when dr kicks in +Subject: [PATCH 55/90] fix incorrect display of fps when dr kicks in --- xbmc/Application.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index ffb90dc..1cea2da 100644 +index 4c1cece..6b29a1c 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -2254,10 +2254,11 @@ void CApplication::Render() @@ -7270,10 +7270,10 @@ index ffb90dc..1cea2da 100644 1.8.5.1 -From 60e9ec4a248b5b185d7d7a8b07ca559ac7d42e7d Mon Sep 17 00:00:00 2001 +From befb697e2464e17bb0e94f3cee5e42f15c3b6a7f Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 13 Apr 2013 08:32:06 +0200 -Subject: [PATCH 56/88] X11: fix mouse coverage +Subject: [PATCH 56/90] X11: fix mouse coverage --- xbmc/windowing/X11/WinSystemX11.cpp | 11 ++++++++--- @@ -7339,10 +7339,10 @@ index e8993f1..5cccfb7 100644 1.8.5.1 -From cc3869e2ae5902a0c706281d10d494a1555a0edb Mon Sep 17 00:00:00 2001 +From 446555aa8c84a0814ad49c37fa43e6f4e9809f5b Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 8 May 2013 13:14:58 +0200 -Subject: [PATCH 57/88] X11: fix incorrectly used screen num in desktop +Subject: [PATCH 57/90] X11: fix incorrectly used screen num in desktop resolution --- @@ -7377,10 +7377,10 @@ index 2acb36d..101ba98 100644 1.8.5.1 -From 5c59b44048d9753d3961679a171d91fc0eaf1d75 Mon Sep 17 00:00:00 2001 +From 2258844172b4d329f243b6d645f86c23adb3c887 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 9 May 2013 12:07:09 +0200 -Subject: [PATCH 58/88] X11: do not overwrite user selected monitor with +Subject: [PATCH 58/90] X11: do not overwrite user selected monitor with fallback --- @@ -7505,10 +7505,10 @@ index 5cccfb7..1b658e2 100644 1.8.5.1 -From 4bd10d08e72617f0437bad96ff5d1e3bc1ab8244 Mon Sep 17 00:00:00 2001 +From f1fccc585da02caf1d06fb25115cf36baed9a8b3 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 12 May 2013 10:50:30 +0200 -Subject: [PATCH 59/88] xrandr: add turn on/off to wrapper +Subject: [PATCH 59/90] xrandr: add turn on/off to wrapper --- xbmc/windowing/X11/XRandR.cpp | 78 +++++++++++++++++++++++++++++++++++++++---- @@ -7674,10 +7674,10 @@ index d37838a..059062f 100644 1.8.5.1 -From 4fec64f516df11724d2a7b05b39188b8a6e4bcd3 Mon Sep 17 00:00:00 2001 +From a8000ef21df4a91e20392c1c2ba51a7f96b93cda Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 19 May 2013 12:55:35 +0200 -Subject: [PATCH 60/88] xrandr: add GetPreferredMode to wrapper +Subject: [PATCH 60/90] xrandr: add GetPreferredMode to wrapper --- xbmc/windowing/X11/XRandR.cpp | 23 +++++++++++++++++++++++ @@ -7734,10 +7734,10 @@ index 059062f..ab7cc63 100644 1.8.5.1 -From ab902ac102b4570e6feaf643fa8de78bc95dbcda Mon Sep 17 00:00:00 2001 +From a4356594cdadced42f11d20e1bf918450e94fcb0 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 11 May 2013 17:12:12 +0200 -Subject: [PATCH 61/88] X11: multi-head improvement - poll for desired output +Subject: [PATCH 61/90] X11: multi-head improvement - poll for desired output if we do not get an xrr event --- @@ -8018,10 +8018,10 @@ index 62003f5..8525ede 100644 1.8.5.1 -From 00870f0f0c2a4332b63f397fc97680fb938d81ea Mon Sep 17 00:00:00 2001 +From 0cfa09dfeac3489b29e0d0ba7d828ae301812593 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 15 May 2013 09:14:34 +0200 -Subject: [PATCH 62/88] X11: ignore mouse move event form other windows +Subject: [PATCH 62/90] X11: ignore mouse move event form other windows --- xbmc/windowing/WinEventsX11.cpp | 4 +++- @@ -8053,10 +8053,10 @@ index 908c8b6..938ad26 100644 1.8.5.1 -From 22111bdbf9e8bc548b6f1899500eb27694e83673 Mon Sep 17 00:00:00 2001 +From 9a242f2f9606336ece5b28084460f16d29388c92 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 11 Jun 2013 16:20:29 +0200 -Subject: [PATCH 63/88] renderer: allow some lateness within vblank interval +Subject: [PATCH 63/90] renderer: allow some lateness within vblank interval --- xbmc/cores/VideoRenderers/RenderManager.cpp | 12 ++++++++++-- @@ -8116,10 +8116,10 @@ index 949c652b..d84ff6c 100644 1.8.5.1 -From f67b983108d79e15788760e31362ede6a36787b9 Mon Sep 17 00:00:00 2001 +From 7a7fa7c7491539148e4d06b4fa40fd79077bc5f9 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 16 Jun 2013 13:22:58 +0200 -Subject: [PATCH 64/88] X11: another fix for mouse coverage +Subject: [PATCH 64/90] X11: another fix for mouse coverage --- xbmc/windowing/WinEventsX11.cpp | 6 ++++-- @@ -8152,10 +8152,10 @@ index 938ad26..e4ca56d 100644 1.8.5.1 -From 637d6bdfe788a375f6ebad6845612333f4fe8aa8 Mon Sep 17 00:00:00 2001 +From 40b14d0e59b570bb31c3e1159391a6862c5ad680 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 5 Jul 2013 12:14:00 +0200 -Subject: [PATCH 65/88] X11: set windows class name +Subject: [PATCH 65/90] X11: set windows class name --- xbmc/windowing/X11/WinSystemX11.cpp | 9 ++++++++- @@ -8197,10 +8197,10 @@ index b3fe5102..df5fe9b 100644 1.8.5.1 -From ff6b70f855c6db2035422a95e1110b96341c9e9d Mon Sep 17 00:00:00 2001 +From beef0e02fdb8c3f44b31069f32f03c4bd5a9f6ca Mon Sep 17 00:00:00 2001 From: spiff Date: Tue, 16 Jul 2013 14:34:04 +0200 -Subject: [PATCH 66/88] fixed: typo +Subject: [PATCH 66/90] fixed: typo --- language/English/strings.po | 2 +- @@ -8223,17 +8223,17 @@ index 6e57f76..1f374c8 100755 1.8.5.1 -From ac8626f63e1c6fb61bcf17275eb2afcbf55f5f54 Mon Sep 17 00:00:00 2001 +From 95aa4e4806f82cfc123a7eded29dace324f08c50 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 25 Jul 2013 17:18:13 +0200 -Subject: [PATCH 67/88] ActiveAE: slightly reduce buffer size +Subject: [PATCH 67/90] ActiveAE: slightly reduce buffer size --- xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index 7ba4761..79ea7b7 100644 +index 317d9e4..6a6b39a 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp @@ -30,8 +30,8 @@ @@ -8251,10 +8251,10 @@ index 7ba4761..79ea7b7 100644 1.8.5.1 -From 44ec29dffe3db1761f21e42fd72fe3729509aca5 Mon Sep 17 00:00:00 2001 +From b1eb3f6878cc7ea62675eb05be678c2b955bd640 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 4 Aug 2013 10:11:16 +0200 -Subject: [PATCH 68/88] Revert "vdpau: comment some features that will be added +Subject: [PATCH 68/90] Revert "vdpau: comment some features that will be added later" This reverts commit e00b4f65864d623ab4d2e9e5c06db138e661f1cf. @@ -8310,10 +8310,10 @@ index 3292461..c04f161 100644 1.8.5.1 -From a49b165887cfc2fc8671bb8ac0c53854a490f5be Mon Sep 17 00:00:00 2001 +From 592f40f52e9ba60869a9d5fdf96f38ba580990a8 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 9 Aug 2013 18:01:40 +0200 -Subject: [PATCH 69/88] X11: fix keysyms +Subject: [PATCH 69/90] X11: fix keysyms --- xbmc/windowing/WinEventsX11.cpp | 2 +- @@ -8336,10 +8336,10 @@ index e4ca56d..b20130c 100644 1.8.5.1 -From 51ae9790979008ad4673ab4ec484945fac88f68a Mon Sep 17 00:00:00 2001 +From 969b0a6d9d7e1765f692d3515d4d1364d7d11696 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 9 Aug 2013 18:42:36 +0200 -Subject: [PATCH 70/88] X11: fix keysym for non-IM +Subject: [PATCH 70/90] X11: fix keysym for non-IM --- xbmc/windowing/WinEventsX11.cpp | 2 +- @@ -8362,10 +8362,10 @@ index b20130c..a38890c 100644 1.8.5.1 -From 4ec7cf52766a40122d4d2778ba9fa967810d8aaf Mon Sep 17 00:00:00 2001 +From 78e80e85c9521fc602ca984a813a92fa07da8dd0 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 10 Aug 2013 11:18:16 +0200 -Subject: [PATCH 71/88] add some missing multi media keys +Subject: [PATCH 71/90] add some missing multi media keys --- system/keymaps/keyboard.xml | 3 +++ @@ -8420,10 +8420,10 @@ index ee6bb69..364b45a 100644 1.8.5.1 -From 64edd4875da5d0babd533babf4f301ed9a61812d Mon Sep 17 00:00:00 2001 +From ddb3f1991926ccf1b6114100568714f594082071 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 10 Aug 2013 15:53:45 +0200 -Subject: [PATCH 72/88] X11: squash multi +Subject: [PATCH 72/90] X11: squash multi --- xbmc/windowing/X11/WinSystemX11.cpp | 2 +- @@ -8446,10 +8446,10 @@ index df5fe9b..d8e04d6 100644 1.8.5.1 -From 7218a3b432238d71e6bf575882d65b775a1fae4e Mon Sep 17 00:00:00 2001 +From 34fcd901ff67e139d748a218f368d6d125c3bf36 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 3 Sep 2013 20:46:17 +0200 -Subject: [PATCH 73/88] X11: do not poll default monitor +Subject: [PATCH 73/90] X11: do not poll default monitor --- xbmc/windowing/X11/WinSystemX11.cpp | 2 +- @@ -8472,10 +8472,10 @@ index d8e04d6..01f5272 100644 1.8.5.1 -From b29e645b2e4954a048d59e1c27774adee095264a Mon Sep 17 00:00:00 2001 +From dc90934b76d7c44fe8b682532e2d74c1e75fe2e8 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 29 Oct 2013 20:57:28 +0100 -Subject: [PATCH 74/88] X11: fix broken monitor switching +Subject: [PATCH 74/90] X11: fix broken monitor switching --- system/settings/settings.xml | 1 - @@ -8578,10 +8578,10 @@ index 40bc3b3..1663836 100644 1.8.5.1 -From 958690509f50c3e3ff050e10071a2f9c62777401 Mon Sep 17 00:00:00 2001 +From 38f6072b63183f6c4e287affe59748abb1770794 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 29 Oct 2013 20:57:59 +0100 -Subject: [PATCH 75/88] X11: remove polling for connected outputs, use xrr +Subject: [PATCH 75/90] X11: remove polling for connected outputs, use xrr events --- @@ -8882,10 +8882,10 @@ index 7ec5be4..14622cb 100644 1.8.5.1 -From c25d9994e3d164eff1c6389d3a409291a17866db Mon Sep 17 00:00:00 2001 +From a8d30953a0afa3137382f18e88821bb05d9ebf9b Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 31 Oct 2013 09:37:13 +0100 -Subject: [PATCH 76/88] X11: remove grabbing of keyboard and mouse +Subject: [PATCH 76/90] X11: remove grabbing of keyboard and mouse --- xbmc/windowing/WinEventsX11.cpp | 4 ---- @@ -9003,10 +9003,10 @@ index 14622cb..d1c8729 100644 1.8.5.1 -From 18569a7d09a9fc36c7dfc9967cb5c150a4471d4a Mon Sep 17 00:00:00 2001 +From dcf96d686d9425425d2af85c3170f689fc978d86 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 31 Oct 2013 10:46:40 +0100 -Subject: [PATCH 77/88] X11: set ExposureMask on gl window, fixes not updated +Subject: [PATCH 77/90] X11: set ExposureMask on gl window, fixes not updated areas --- @@ -9032,10 +9032,10 @@ index 695b352..e55583c 100644 1.8.5.1 -From c88972e3036411b738b50cb41f235ae89ece02e0 Mon Sep 17 00:00:00 2001 +From e3a9b778eec83c1ca9b4d0e78a3419eca458812f Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 31 Oct 2013 11:25:19 +0100 -Subject: [PATCH 78/88] X11: drop shortcuts, have WM do this +Subject: [PATCH 78/90] X11: drop shortcuts, have WM do this --- xbmc/windowing/WinEventsX11.cpp | 21 --------------------- @@ -9097,10 +9097,10 @@ index 6429291..4334d21 100644 1.8.5.1 -From d7895b280b1879396aa5c869948262023b74d0da Mon Sep 17 00:00:00 2001 +From ef3e7b377dfa33a36f8549ec6ac50ae581b541bd Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 7 Nov 2013 15:02:00 +0100 -Subject: [PATCH 79/88] X11: adapt to new settings +Subject: [PATCH 79/90] X11: adapt to new settings --- system/settings/settings.xml | 1 + @@ -9122,10 +9122,10 @@ index 9a2c3d6..cf29088 100644 1.8.5.1 -From 6390a3757f63567715a183fc7b490b7fa99788bb Mon Sep 17 00:00:00 2001 +From ef5c4b6353acfb62f00991bc8b95037ade5147d2 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 14 Nov 2013 09:28:24 +0100 -Subject: [PATCH 80/88] X11: adapt to changes in cstdstring +Subject: [PATCH 80/90] X11: adapt to changes in cstdstring --- xbmc/windowing/X11/WinSystemX11.cpp | 4 ++-- @@ -9173,10 +9173,10 @@ index 8525ede..c94f2e3 100644 1.8.5.1 -From ee897212b0338f1ad5e82db8ecdf29346ef9d1bf Mon Sep 17 00:00:00 2001 +From abcbc4aa1b1cbd6e57e52175d756589617caa359 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 14 Nov 2013 18:50:57 +0100 -Subject: [PATCH 81/88] dvdplayer: fix failed to get stream message, lookup +Subject: [PATCH 81/90] dvdplayer: fix failed to get stream message, lookup streams the same way as getting the index --- @@ -9200,10 +9200,10 @@ index ad851e9..60475a3 100644 1.8.5.1 -From eb776b7d63141a35909613017a606a1b299c1e3d Mon Sep 17 00:00:00 2001 +From 741ad95b7059046d7f26a2d741669e031004bf5b Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 14 Nov 2013 19:22:01 +0100 -Subject: [PATCH 82/88] omxplayer: fix failed to get stream message +Subject: [PATCH 82/90] omxplayer: fix failed to get stream message --- xbmc/cores/omxplayer/OMXPlayer.cpp | 2 +- @@ -9226,10 +9226,10 @@ index 4168195..f48a30f 100644 1.8.5.1 -From 424edc7705867f0000c45f664f836ded2b543136 Mon Sep 17 00:00:00 2001 +From 45831442c7620543d3a0cbdc16d54e9cd47d4959 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Mon, 18 Nov 2013 17:44:31 +0100 -Subject: [PATCH 83/88] ActiveAE: correct time of buffered samples by resample +Subject: [PATCH 83/90] ActiveAE: correct time of buffered samples by resample ratio --- @@ -9238,10 +9238,10 @@ Subject: [PATCH 83/88] ActiveAE: correct time of buffered samples by resample 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index 79ea7b7..104800a 100644 +index 6a6b39a..57a7d9a 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -99,7 +99,7 @@ float CEngineStats::GetDelay(CActiveAEStream *stream) +@@ -103,7 +103,7 @@ float CEngineStats::GetDelay(CActiveAEStream *stream) if (delay < 0) delay = 0.0; @@ -9266,10 +9266,10 @@ index 4a75f9e..78a2892 100644 1.8.5.1 -From a60bfe4f4669d9d2c55013cd9c810e2c42da7f4e Mon Sep 17 00:00:00 2001 +From 61587d0a8eda120f27b235371ea85efc58ce2443 Mon Sep 17 00:00:00 2001 From: Marcel Groothuis Date: Thu, 5 Dec 2013 22:02:50 +0100 -Subject: [PATCH 84/88] ffmpeg demuxer: faster channel change for PVR addons +Subject: [PATCH 84/90] ffmpeg demuxer: faster channel change for PVR addons without internal demuxing (such as MediaPortal, ArgusTV, MythTV, NextPVR) Credits: FernetMenta, Davilla, Popcornmix, Whaupt @@ -9630,10 +9630,10 @@ index ca689d0..f383563 100644 1.8.5.1 -From 160c8aa2009467bd42bba28aa49304810568e002 Mon Sep 17 00:00:00 2001 +From 78046c9565f50665ad97df6d4ec2b8149d182f1a Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 14 Nov 2013 20:35:04 +0100 -Subject: [PATCH 85/88] ffmpeg demuxer: make sure we start mpegts video with an +Subject: [PATCH 85/90] ffmpeg demuxer: make sure we start mpegts video with an i-frame --- @@ -9717,10 +9717,10 @@ index acde9a8..9ec0877 100644 1.8.5.1 -From c4d7813a080d0e109694f43ff23d9a956f7df6be Mon Sep 17 00:00:00 2001 +From 91fdd84699ec189d27322f42bde3f2db85325410 Mon Sep 17 00:00:00 2001 From: Wolfgang Haupt Date: Thu, 5 Dec 2013 22:11:57 +0100 -Subject: [PATCH 86/88] DVDFactoryDemuxer: skip streaminfo for udp tcp and +Subject: [PATCH 86/90] DVDFactoryDemuxer: skip streaminfo for udp tcp and pvr-channels --- @@ -9844,10 +9844,10 @@ index 146bf5c..e030b9d 100644 1.8.5.1 -From 5c08411dbae66a650326eb39eed1b23c49b2a4f6 Mon Sep 17 00:00:00 2001 +From 787911c4d38347f500825ff8bd8e891711ad3358 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 10 Dec 2013 13:48:55 +0100 -Subject: [PATCH 87/88] ActiveAE: suspend hdmi audio during change of refresh +Subject: [PATCH 87/90] ActiveAE: suspend hdmi audio during change of refresh rate --- @@ -9855,10 +9855,10 @@ Subject: [PATCH 87/88] ActiveAE: suspend hdmi audio during change of refresh 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index 104800a..9e2f849 100644 +index 57a7d9a..e2d6606 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -231,6 +231,8 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) +@@ -235,6 +235,8 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) case CActiveAEControlProtocol::KEEPCONFIG: m_extKeepConfig = *(unsigned int*)msg->data; return; @@ -9867,7 +9867,7 @@ index 104800a..9e2f849 100644 default: break; } -@@ -632,6 +634,17 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) +@@ -636,6 +638,17 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) break; } } @@ -9885,7 +9885,7 @@ index 104800a..9e2f849 100644 break; case AE_TOP_CONFIGURED_IDLE: -@@ -2261,12 +2274,12 @@ void CActiveAE::KeepConfiguration(unsigned int millis) +@@ -2238,12 +2251,12 @@ void CActiveAE::KeepConfiguration(unsigned int millis) void CActiveAE::OnLostDevice() { @@ -9904,278 +9904,810 @@ index 104800a..9e2f849 100644 1.8.5.1 -From 45663a71b2b02cd006220bd11113621f3338ceae Mon Sep 17 00:00:00 2001 +From b722fe7867367bfe4892808eeb6e761c51e3e76b Mon Sep 17 00:00:00 2001 From: Rainer Hochecker -Date: Thu, 19 Dec 2013 16:44:18 +0100 -Subject: [PATCH 88/88] ActiveAE: drop useless IsCompatible call on sink +Date: Mon, 23 Dec 2013 16:51:42 +0100 +Subject: [PATCH 88/90] ActiveAE: wait for suspend being completed on lost + device --- - .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 45 ++------- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 2 +- - .../AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 107 ++++++++------------- - .../AudioEngine/Engines/ActiveAE/ActiveAESink.h | 2 - - 4 files changed, 47 insertions(+), 109 deletions(-) + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index 9e2f849..14ba23e 100644 +index e2d6606..98a0dd3 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -875,11 +875,14 @@ void CActiveAE::Configure(AEAudioFormat *desiredFmt) - std::string device = AE_IS_RAW(m_sinkRequestFormat.m_dataFormat) ? m_settings.passthoughdevice : m_settings.device; - std::string driver; - CAESinkFactory::ParseDevice(device, driver); -- if (!IsSinkCompatible(m_sinkRequestFormat, device) || m_settings.driver.compare(driver) != 0) -+ if (!CompareFormat(m_sinkRequestFormat, m_sinkFormat) || -+ m_currDevice.compare(device) != 0 || -+ m_settings.driver.compare(driver) != 0) - { - if (!InitSink()) - return; - m_settings.driver = driver; -+ m_currDevice = device; - initSink = true; - m_stats.Reset(m_sinkFormat.m_sampleRate); - m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::VOLUME, &m_volume, sizeof(float)); -@@ -1412,10 +1415,10 @@ bool CActiveAE::NeedReconfigureSink() - std::string device = AE_IS_RAW(newFormat.m_dataFormat) ? m_settings.passthoughdevice : m_settings.device; - std::string driver; - CAESinkFactory::ParseDevice(device, driver); -- if (m_settings.driver.compare(driver) != 0) -- return true; - -- if (!IsSinkCompatible(newFormat, device)) -+ if (!CompareFormat(newFormat, m_sinkFormat) || -+ m_currDevice.compare(device) != 0 || -+ m_settings.driver.compare(driver) != 0) - return true; - - return false; -@@ -1490,40 +1493,6 @@ void CActiveAE::DrainSink() - } - } - --bool CActiveAE::IsSinkCompatible(const AEAudioFormat &format, const std::string &device) --{ -- bool compatible = false; -- SinkConfig config; -- config.format = format; -- config.device = &device; -- -- // send message to sink -- Message *reply; -- if (m_sink.m_controlPort.SendOutMessageSync(CSinkControlProtocol::ISCOMPATIBLE, -- &reply, -- 1000, -- &config, sizeof(config))) -- { -- bool success = reply->signal == CSinkControlProtocol::ACC ? true : false; -- if (!success) -- { -- reply->Release(); -- CLog::Log(LOGERROR, "ActiveAE::%s - returned error", __FUNCTION__); -- m_extError = true; -- return false; -- } -- compatible = *(bool*)reply->data; -- reply->Release(); -- } -- else -- { -- CLog::Log(LOGERROR, "ActiveAE::%s - failed to query compatibility", __FUNCTION__); -- m_extError = true; -- return false; -- } -- return compatible; --} -- - void CActiveAE::UnconfigureSink() - { - // send message to sink -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -index 20c8591..8e9afb1 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -@@ -250,7 +250,6 @@ class CActiveAE : public IAE, private CThread - bool InitSink(); - void DrainSink(); - void UnconfigureSink(); -- bool IsSinkCompatible(const AEAudioFormat &format, const std::string &device); - void Start(); - void Dispose(); - void LoadSettings(); -@@ -307,6 +306,7 @@ class CActiveAE : public IAE, private CThread - AudioSettings m_settings; - CEngineStats m_stats; - IAEEncoder *m_encoder; -+ std::string m_currDevice; - - // buffers - CActiveAEBufferPoolResample *m_sinkBuffers; -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -index a592e69..d0b594a 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -@@ -76,13 +76,6 @@ void CActiveAESink::Dispose() - } - } - --bool CActiveAESink::IsCompatible(const AEAudioFormat &format, const std::string &device) --{ -- if (!m_sink) -- return false; -- return m_sink->IsCompatible(format, device); --} -- - bool CActiveAESink::HasVolume() - { - if (!m_sink) -@@ -199,13 +192,6 @@ void CActiveAESink::StateMachine(int signal, Protocol *port, Message *msg) - msg->Reply(CSinkControlProtocol::ACC); +@@ -425,6 +425,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) + m_state = AE_TOP_CONFIGURED_SUSPEND; + m_extDeferData = true; + } ++ msg->Reply(CActiveAEControlProtocol::ACC); return; + case CActiveAEControlProtocol::PAUSESTREAM: + CActiveAEStream *stream; +@@ -2251,7 +2252,22 @@ void CActiveAE::KeepConfiguration(unsigned int millis) -- case CSinkControlProtocol::ISCOMPATIBLE: -- data = (SinkConfig*)msg->data; -- bool compatible; -- compatible = IsCompatible(data->format, *(data->device)); -- msg->Reply(CSinkControlProtocol::ACC, &compatible, sizeof(bool)); -- return; -- - default: - break; - } -@@ -652,73 +638,58 @@ void CActiveAESink::OpenSink() - if (driver.empty() && m_sink) - driver = m_sink->GetName(); - -- std::string sinkName; -+ CLog::Log(LOGINFO, "CActiveAE::OpenSink - initialize sink"); -+ - if (m_sink) - { -- sinkName = m_sink->GetName(); -- std::transform(sinkName.begin(), sinkName.end(), sinkName.begin(), ::toupper); -+ m_sink->Drain(); -+ m_sink->Deinitialize(); -+ delete m_sink; -+ m_sink = NULL; - } - -- if (!m_sink || sinkName != driver || !m_sink->IsCompatible(m_requestedFormat, device)) -- { -- CLog::Log(LOGINFO, "CActiveAE::OpenSink - sink incompatible, re-starting"); -- -- if (m_sink) -- { -- m_sink->Drain(); -- m_sink->Deinitialize(); -- delete m_sink; -- m_sink = NULL; -- } -- -- // get the display name of the device -- GetDeviceFriendlyName(device); -+ // get the display name of the device -+ GetDeviceFriendlyName(device); - -- // if we already have a driver, prepend it to the device string -- if (!driver.empty()) -- device = driver + ":" + device; -+ // if we already have a driver, prepend it to the device string -+ if (!driver.empty()) -+ device = driver + ":" + device; - -- // WARNING: this changes format and does not use passthrough -- m_sinkFormat = m_requestedFormat; -- CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - trying to open device %s", device.c_str()); -- m_sink = CAESinkFactory::Create(device, m_sinkFormat, passthrough); -+ // WARNING: this changes format and does not use passthrough -+ m_sinkFormat = m_requestedFormat; -+ CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - trying to open device %s", device.c_str()); -+ m_sink = CAESinkFactory::Create(device, m_sinkFormat, passthrough); - -- if (!m_sink) -- { -- CLog::Log(LOGERROR, "CActiveAE::OpenSink - no sink was returned"); -- m_extError = true; -- return; -- } -+ if (!m_sink) + void CActiveAE::OnLostDevice() + { +- m_controlPort.SendOutMessage(CActiveAEControlProtocol::DISPLAYLOST); ++ Message *reply; ++ if (m_controlPort.SendOutMessageSync(CActiveAEControlProtocol::DISPLAYLOST, ++ &reply, ++ 5000)) + { -+ CLog::Log(LOGERROR, "CActiveAE::OpenSink - no sink was returned"); -+ m_extError = true; -+ return; ++ bool success = reply->signal == CActiveAEControlProtocol::ACC ? true : false; ++ reply->Release(); ++ if (!success) ++ { ++ CLog::Log(LOGERROR, "ActiveAE::%s - returned error", __FUNCTION__); ++ } + } ++ else ++ { ++ CLog::Log(LOGERROR, "ActiveAE::%s - timed out", __FUNCTION__); ++ } + } -- m_sink->SetVolume(m_volume); -+ m_sink->SetVolume(m_volume); - - #ifdef WORDS_BIGENDIAN -- if (m_sinkFormat.m_dataFormat == AE_FMT_S16BE) -- m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -- else if (m_sinkFormat.m_dataFormat == AE_FMT_S32BE) -- m_sinkFormat.m_dataFormat = AE_FMT_S32NE; -+ if (m_sinkFormat.m_dataFormat == AE_FMT_S16BE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -+ else if (m_sinkFormat.m_dataFormat == AE_FMT_S32BE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S32NE; - #else -- if (m_sinkFormat.m_dataFormat == AE_FMT_S16LE) -- m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -- else if (m_sinkFormat.m_dataFormat == AE_FMT_S32LE) -- m_sinkFormat.m_dataFormat = AE_FMT_S32NE; -+ if (m_sinkFormat.m_dataFormat == AE_FMT_S16LE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -+ else if (m_sinkFormat.m_dataFormat == AE_FMT_S32LE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S32NE; - #endif - -- CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - %s Initialized:", m_sink->GetName()); -- CLog::Log(LOGDEBUG, " Output Device : %s", m_deviceFriendlyName.c_str()); -- CLog::Log(LOGDEBUG, " Sample Rate : %d", m_sinkFormat.m_sampleRate); -- CLog::Log(LOGDEBUG, " Sample Format : %s", CAEUtil::DataFormatToStr(m_sinkFormat.m_dataFormat)); -- CLog::Log(LOGDEBUG, " Channel Count : %d", m_sinkFormat.m_channelLayout.Count()); -- CLog::Log(LOGDEBUG, " Channel Layout: %s", ((std::string)m_sinkFormat.m_channelLayout).c_str()); -- CLog::Log(LOGDEBUG, " Frames : %d", m_sinkFormat.m_frames); -- CLog::Log(LOGDEBUG, " Frame Samples : %d", m_sinkFormat.m_frameSamples); -- CLog::Log(LOGDEBUG, " Frame Size : %d", m_sinkFormat.m_frameSize); -- } -- else -- CLog::Log(LOGINFO, "CActiveAE::OpenSink - keeping old sink with : %s, %s, %dhz", -- CAEUtil::DataFormatToStr(m_sinkFormat.m_dataFormat), -- ((std::string)m_sinkFormat.m_channelLayout).c_str(), -- m_sinkFormat.m_sampleRate); -+ CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - %s Initialized:", m_sink->GetName()); -+ CLog::Log(LOGDEBUG, " Output Device : %s", m_deviceFriendlyName.c_str()); -+ CLog::Log(LOGDEBUG, " Sample Rate : %d", m_sinkFormat.m_sampleRate); -+ CLog::Log(LOGDEBUG, " Sample Format : %s", CAEUtil::DataFormatToStr(m_sinkFormat.m_dataFormat)); -+ CLog::Log(LOGDEBUG, " Channel Count : %d", m_sinkFormat.m_channelLayout.Count()); -+ CLog::Log(LOGDEBUG, " Channel Layout: %s", ((std::string)m_sinkFormat.m_channelLayout).c_str()); -+ CLog::Log(LOGDEBUG, " Frames : %d", m_sinkFormat.m_frames); -+ CLog::Log(LOGDEBUG, " Frame Samples : %d", m_sinkFormat.m_frameSamples); -+ CLog::Log(LOGDEBUG, " Frame Size : %d", m_sinkFormat.m_frameSize); - - // init sample of silence - SampleConfig config; -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -index 807567d..8b6aa05 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -@@ -50,7 +50,6 @@ class CSinkControlProtocol : public Protocol - CONFIGURE, - UNCONFIGURE, - SILENCEMODE, -- ISCOMPATIBLE, - VOLUME, - FLUSH, - TIMEOUT, -@@ -101,7 +100,6 @@ class CActiveAESink : private CThread - void GetDeviceFriendlyName(std::string &device); - void OpenSink(); - void ReturnBuffers(); -- bool IsCompatible(const AEAudioFormat &format, const std::string &device); - - unsigned int OutputSamples(CSampleBuffer* samples); - void ConvertInit(CSampleBuffer* samples); + void CActiveAE::OnResetDevice() +-- +1.8.5.1 + + +From f57f4dcdfd5ab86b430923c67bdab961fc18c322 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Thu, 19 Dec 2013 15:36:11 +0100 +Subject: [PATCH 89/90] vaapi: option to enable sw filters + +--- + language/English/strings.po | 14 +- + system/settings/settings.xml | 9 ++ + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 35 +++-- + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 2 + + xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp | 143 +++++++++++++++++++++ + xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h | 30 +++++ + 6 files changed, 220 insertions(+), 13 deletions(-) + +diff --git a/language/English/strings.po b/language/English/strings.po +index 1f374c8..1237966 100755 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -6001,7 +6001,12 @@ msgctxt "#13440" + msgid "Frame Multi Threaded Decoding (less reliable)" + msgstr "" + +-#empty strings from id 13441 to 13499 ++#: system/settings/settings.xml ++msgctxt "#13441" ++msgid "Use SW Filter for VAAPI" ++msgstr "" ++ ++#empty strings from id 13442 to 13499 + + #: system/settings/settings.xml + msgctxt "#13500" +@@ -14698,7 +14703,12 @@ msgctxt "#36423" + msgid "Use ffmpeg frame multiple thread decoding when hardware decoding not working or disabled. (less reliable than default single thread mode)" + msgstr "" + +-#empty strings from id 36424 to 36499 ++#: system/settings/settings.xml ++msgctxt "#36424" ++msgid "This option enables the deinterlacing methods available for software decoding. It gives the possiblity to use high quality deinterlacers in combination with VAAPI." ++msgstr "" ++ ++#empty strings from id 36425 to 36499 + #end reservation + + #: system/settings/settings.xml +diff --git a/system/settings/settings.xml b/system/settings/settings.xml +index cf29088..cf80cae 100644 +--- a/system/settings/settings.xml ++++ b/system/settings/settings.xml +@@ -436,6 +436,15 @@ + true + + ++ ++ HAVE_LIBVA ++ ++ true ++ ++ 2 ++ false ++ ++ + + HasDXVA2 + 2 +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +index 43d3e70..743e002 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +@@ -387,7 +387,7 @@ unsigned int CDVDVideoCodecFFmpeg::SetFilters(unsigned int flags) + { + m_filters_next.clear(); + +- if(m_pHardware) ++ if(m_pHardware && !m_pHardware->UseFilter()) + return 0; + + if(flags & FILTER_ROTATE) +@@ -461,10 +461,10 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p + if(section) + lock = shared_ptr(new CSingleLock(*section)); + +- int result; ++ int result = 0; + if(pData) + result = m_pHardware->Check(m_pCodecContext); +- else ++ else if (!m_pHardware->UseFilter()) + result = m_pHardware->Decode(m_pCodecContext, NULL); + + if(result) +@@ -519,11 +519,19 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p + || m_pCodecContext->codec_id == AV_CODEC_ID_SVQ3) + m_started = true; + +- if(m_pHardware == NULL) ++ if(m_pHardware == NULL || m_pHardware->UseFilter()) + { ++ if (m_pHardware) ++ { ++ int result = m_pHardware->Decode(m_pCodecContext, m_pFrame); ++ if (result == VC_BUFFER) ++ return result; ++ m_pHardware->MapFrame(m_pCodecContext, m_pFrame); ++ } ++ + bool need_scale = std::find( m_formats.begin() + , m_formats.end() +- , m_pCodecContext->pix_fmt) == m_formats.end(); ++ , m_pFrame->format) == m_formats.end(); + + bool need_reopen = false; + if(!m_filters.Equals(m_filters_next)) +@@ -531,7 +539,7 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p + + if(m_pFilterIn) + { +- if(m_pFilterIn->outputs[0]->format != m_pCodecContext->pix_fmt ++ if(m_pFilterIn->outputs[0]->format != m_pFrame->format + || m_pFilterIn->outputs[0]->w != m_pCodecContext->width + || m_pFilterIn->outputs[0]->h != m_pCodecContext->height) + need_reopen = true; +@@ -548,7 +556,7 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p + } + + int result; +- if(m_pHardware) ++ if(m_pHardware && !m_pHardware->UseFilter()) + result = m_pHardware->Decode(m_pCodecContext, m_pFrame); + else if(m_pFilterGraph) + result = FilterProcess(m_pFrame); +@@ -636,7 +644,10 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture) + pDvdVideoPicture->stereo_mode[sizeof(pDvdVideoPicture->stereo_mode)-1] = '\0'; + } + +- pDvdVideoPicture->iRepeatPicture = 0.5 * m_pFrame->repeat_pict; ++ if (m_pFrame->repeat_pict >= 0) ++ pDvdVideoPicture->iRepeatPicture = 0.5 * m_pFrame->repeat_pict; ++ else ++ pDvdVideoPicture->iRepeatPicture = 0; + pDvdVideoPicture->iFlags = DVP_FLAG_ALLOCATED; + pDvdVideoPicture->iFlags |= m_pFrame->interlaced_frame ? DVP_FLAG_INTERLACED : 0; + pDvdVideoPicture->iFlags |= m_pFrame->top_field_first ? DVP_FLAG_TOP_FIELD_FIRST: 0; +@@ -644,6 +655,7 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture) + pDvdVideoPicture->chroma_position = m_pCodecContext->chroma_sample_location; + pDvdVideoPicture->color_primaries = m_pCodecContext->color_primaries; + pDvdVideoPicture->color_transfer = m_pCodecContext->color_trc; ++ pDvdVideoPicture->color_matrix = m_pCodecContext->colorspace; + if(m_pCodecContext->color_range == AVCOL_RANGE_JPEG + || m_pCodecContext->pix_fmt == PIX_FMT_YUVJ420P) + pDvdVideoPicture->color_range = 1; +@@ -698,7 +710,7 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture) + + bool CDVDVideoCodecFFmpeg::GetPicture(DVDVideoPicture* pDvdVideoPicture) + { +- if(m_pHardware) ++ if(m_pHardware && !m_pHardware->UseFilter()) + return m_pHardware->GetPicture(m_pCodecContext, m_pFrame, pDvdVideoPicture); + + if(!GetPictureCommon(pDvdVideoPicture)) +@@ -723,6 +735,7 @@ bool CDVDVideoCodecFFmpeg::GetPicture(DVDVideoPicture* pDvdVideoPicture) + pix_fmt = (PixelFormat)m_pFrame->format; + + pDvdVideoPicture->format = CDVDCodecUtils::EFormatFromPixfmt(pix_fmt); ++ + return true; + } + +@@ -737,7 +750,7 @@ int CDVDVideoCodecFFmpeg::FilterOpen(const CStdString& filters, bool scale) + if (filters.empty() && !scale) + return 0; + +- if (m_pHardware) ++ if (m_pHardware && !m_pHardware->UseFilter()) + { + CLog::Log(LOGWARNING, "CDVDVideoCodecFFmpeg::FilterOpen - skipped opening filters on hardware decode"); + return 0; +@@ -755,7 +768,7 @@ int CDVDVideoCodecFFmpeg::FilterOpen(const CStdString& filters, bool scale) + CStdString args = StringUtils::Format("%d:%d:%d:%d:%d:%d:%d", + m_pCodecContext->width, + m_pCodecContext->height, +- m_pCodecContext->pix_fmt, ++ m_pFrame->format, + m_pCodecContext->time_base.num, + m_pCodecContext->time_base.den, + m_pCodecContext->sample_aspect_ratio.num, +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +index c0ce198..18a57ef 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +@@ -48,6 +48,8 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec + virtual bool CanSkipDeint() {return false; } + virtual const std::string Name() = 0; + virtual CCriticalSection* Section() { return NULL; } ++ virtual bool UseFilter() { return false; } ++ virtual bool MapFrame(AVCodecContext* avctx, AVFrame* frame) { return false; } + }; + + CDVDVideoCodecFFmpeg(); +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +index 3facfce..e85101e 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +@@ -25,6 +25,11 @@ + #include "DVDVideoCodec.h" + #include + #include ++//#include "smmintrin.h" ++#include "XMemUtils.h" ++#include "utils/CPUInfo.h" ++ ++#define CACHED_BUFFER_SIZE 4096 + + #define CHECK(a) \ + do { \ +@@ -157,12 +162,17 @@ static CDisplayPtr GetGlobalDisplay() + m_context = 0; + m_hwaccel = (vaapi_context*)calloc(1, sizeof(vaapi_context)); + memset(m_surfaces, 0, sizeof(*m_surfaces)); ++ m_frame_buffer = NULL; ++ m_cache = NULL; + } + + CDecoder::~CDecoder() + { + Close(); + free(m_hwaccel); ++ _aligned_free(m_frame_buffer); ++ _aligned_free(m_cache); ++ m_dllSSE4.Unload(); + } + + void CDecoder::RelBuffer(AVCodecContext *avctx, AVFrame *pic) +@@ -375,6 +385,8 @@ bool CDecoder::Open(AVCodecContext *avctx, enum PixelFormat fmt, unsigned int su + if (!EnsureContext(avctx)) + return false; + ++ CheckUseFilter(); ++ + m_hwaccel->display = m_display->get(); + + avctx->hwaccel_context = m_hwaccel; +@@ -459,7 +471,34 @@ int CDecoder::Decode(AVCodecContext* avctx, AVFrame* frame) + return status; + + if(frame) ++ { ++ if (m_use_filter) ++ { ++ VASurfaceID surface = GetSurfaceID(frame); ++ std::list::iterator it; ++ for(it = m_surfaces_used.begin(); it != m_surfaces_used.end(); ++it) ++ { ++ if((*it)->m_id == surface) ++ { ++ m_holder.surface = *it; ++ break; ++ } ++ } ++ if (it == m_surfaces_used.end()) ++ { ++ CLog::Log(LOGERROR, "VAAPI::Decode - surface not found"); ++ return VC_ERROR; ++ } ++ CProcPic pic; ++ memcpy(&pic.frame, frame, sizeof(AVFrame)); ++ pic.surface = *it; ++ m_surfaces_proc.push_back(pic); ++ if (m_surfaces_proc.size() < m_renderbuffers_count) ++ return VC_BUFFER; ++ } ++ + return VC_BUFFER | VC_PICTURE; ++ } + else + return VC_BUFFER; + } +@@ -537,4 +576,108 @@ unsigned CDecoder::GetAllowedReferences() + return m_renderbuffers_count; + } + ++void CDecoder::Reset() ++{ ++ m_surfaces_proc.clear(); ++} ++ ++void CDecoder::CheckUseFilter() ++{ ++ m_use_filter = true; ++ _aligned_free(m_frame_buffer); ++ _aligned_free(m_cache); ++ if (CSettings::Get().GetBool("videoplayer.usevaapiswfilter")) ++ { ++ if (!(g_cpuInfo.GetCPUFeatures() & CPU_FEATURE_SSE4)) ++ { ++ CLog::Log(LOGNOTICE,"VAAPI::CheckUseFilter cpu does not support SSE4"); ++ m_use_filter = false; ++ return; ++ } ++ if (!m_dllSSE4.Load()) ++ { ++ CLog::Log(LOGNOTICE,"VAAPI::CheckUseFilter failed loading sse4 lib"); ++ m_use_filter = false; ++ return; ++ } ++ VASurfaceStatus surf_status; ++ VAImage image; ++ VASurfaceID surface = m_surfaces_free.front()->m_id; ++ VAStatus status = status = vaDeriveImage(m_display->get(), surface, &image); ++ m_use_filter = true; ++ if (status != VA_STATUS_SUCCESS) ++ { ++ CLog::Log(LOGNOTICE,"VAAPI::CheckUseFilter vaDeriveImage not supported"); ++ m_use_filter = false; ++ } ++ if (image.format.fourcc != VA_FOURCC_NV12) ++ { ++ CLog::Log(LOGNOTICE,"VAAPI::CheckUseFilter image format not NV12"); ++ m_use_filter = false; ++ } ++ if ((image.pitches[0] % 64) || (image.pitches[1] % 64)) ++ { ++ CLog::Log(LOGNOTICE,"VAAPI::CheckUseFilter patches no multiple of 64"); ++ m_use_filter = false; ++ } ++ if (m_use_filter) ++ { ++ m_frame_buffer = (uint8_t*)_aligned_malloc(image.height*image.width*2 + 256, 64); ++ m_cache = (uint8_t*)_aligned_malloc(CACHED_BUFFER_SIZE, 64); ++ } ++ vaDestroyImage(m_display->get(),image.image_id); ++ } ++ else ++ { ++ m_use_filter = false; ++ } ++} ++ ++bool CDecoder::MapFrame(AVCodecContext* avctx, AVFrame* frame) ++{ ++ if (m_surfaces_proc.empty()) ++ { ++ return false; ++ } ++ if(frame) ++ { ++ CProcPic pic = m_surfaces_proc.front(); ++ m_surfaces_proc.pop_front(); ++ VASurfaceID surface = pic.surface->m_id; ++ VASurfaceStatus surf_status; ++ VAImage image; ++ uint8_t *buf; ++ CHECK(vaQuerySurfaceStatus(m_display->get(), surface, &surf_status)) ++ while (surf_status != VASurfaceReady) ++ { ++ Sleep(1); ++ CHECK(vaQuerySurfaceStatus(m_display->get(), surface, &surf_status)) ++ } ++ CHECK(vaDeriveImage(m_display->get(), surface, &image)); ++ CHECK(vaMapBuffer(m_display->get(), image.buf, (void**)&buf)) ++ ++ uint8_t *src, *dst; ++ src = buf + image.offsets[0]; ++ dst = m_frame_buffer + image.offsets[0]; ++ m_dllSSE4.copy_frame(src, dst, m_cache, image.width, image.height, image.pitches[0]); ++ src = buf + image.offsets[1]; ++ dst = m_frame_buffer + image.offsets[1]; ++ m_dllSSE4.copy_frame(src, dst, m_cache, image.width, image.height/2, image.pitches[1]); ++ ++ memcpy(frame, &pic.frame, sizeof(AVFrame)); ++ frame->format = AV_PIX_FMT_NV12; ++ frame->data[0] = m_frame_buffer + image.offsets[0]; ++ frame->linesize[0] = image.pitches[0]; ++ frame->data[1] = m_frame_buffer + image.offsets[1]; ++ frame->linesize[1] = image.pitches[1]; ++ frame->data[2] = NULL; ++ frame->data[3] = NULL; ++ frame->pkt_size = image.data_size; ++ ++ CHECK(vaUnmapBuffer(m_display->get(), image.buf)) ++ CHECK(vaDestroyImage(m_display->get(),image.image_id)) ++ } ++ return true; ++} ++ + #endif +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h +index a520e42..49d3117 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include "linux/sse4/DllLibSSE4.h" + + + namespace VAAPI { +@@ -101,11 +102,31 @@ struct CHolder + {} + }; + ++struct CProcPic ++{ ++ AVFrame frame; ++ CSurfacePtr surface; ++ CProcPic() ++ {} ++ CProcPic(const CProcPic &other) ++ { ++ memcpy(&this->frame, &other.frame, sizeof(AVFrame)); ++ surface = other.surface; ++ } ++ CProcPic & operator= (const CProcPic &other) ++ { ++ memcpy(&this->frame, &other.frame, sizeof(AVFrame)); ++ surface = other.surface; ++ return *this; ++ } ++}; ++ + class CDecoder + : public CDVDVideoCodecFFmpeg::IHardwareDecoder + { + bool EnsureContext(AVCodecContext *avctx); + bool EnsureSurfaces(AVCodecContext *avctx, unsigned n_surfaces_count); ++ void CheckUseFilter(); + public: + CDecoder(); + ~CDecoder(); +@@ -114,9 +135,12 @@ class CDecoder + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture); + virtual int Check (AVCodecContext* avctx); + virtual void Close(); ++ virtual void Reset(); + virtual const std::string Name() { return "vaapi"; } + virtual CCriticalSection* Section() { if(m_display) return m_display.get(); else return NULL; } + virtual unsigned GetAllowedReferences(); ++ virtual bool UseFilter() { return m_use_filter; } ++ virtual bool MapFrame(AVCodecContext* avctx, AVFrame* frame); + + int GetBuffer(AVCodecContext *avctx, AVFrame *pic); + void RelBuffer(AVCodecContext *avctx, AVFrame *pic); +@@ -132,14 +156,20 @@ class CDecoder + int m_refs; + std::list m_surfaces_used; + std::list m_surfaces_free; ++ std::list m_surfaces_proc; + + CDisplayPtr m_display; + VAConfigID m_config; + VAContextID m_context; ++ bool m_use_filter; ++ uint8_t *m_frame_buffer; ++ uint8_t *m_cache; + + vaapi_context *m_hwaccel; + + CHolder m_holder; // silly struct to pass data to renderer ++ ++ DllLibSSE4 m_dllSSE4; + }; + + } +-- +1.8.5.1 + + +From e1817ac4a1f7d03f617b1f13f3fe8cb01a426201 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Sun, 22 Dec 2013 14:52:29 +0100 +Subject: [PATCH 90/90] linux: add shared lib for sse4 operations + +--- + Makefile.in | 6 +++ + configure.in | 18 +++++++ + xbmc/DllPaths_generated.h.in | 3 ++ + xbmc/linux/sse4/CopyFrame.cpp | 115 ++++++++++++++++++++++++++++++++++++++++++ + xbmc/linux/sse4/DllLibSSE4.h | 43 ++++++++++++++++ + xbmc/linux/sse4/Makefile.in | 20 ++++++++ + 6 files changed, 205 insertions(+) + create mode 100644 xbmc/linux/sse4/CopyFrame.cpp + create mode 100644 xbmc/linux/sse4/DllLibSSE4.h + create mode 100644 xbmc/linux/sse4/Makefile.in + +diff --git a/Makefile.in b/Makefile.in +index a14b3c5..a8bc1db 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -323,6 +323,12 @@ CHECK_LIBADD=@WAYLAND_TEST_LIBS@ + endif + endif + ++ifeq (@USE_SSE4@,1) ++FINAL_TARGETS+=sse4 ++sse4 : force ++ $(MAKE) -C xbmc/linux/sse4 ++endif ++ + CHECK_PROGRAMS = xbmc-test + + CLEAN_FILES += $(CHECK_PROGRAMS) $(CHECK_EXTENSIONS) +diff --git a/configure.in b/configure.in +index f277cac..74ed562 100644 +--- a/configure.in ++++ b/configure.in +@@ -875,6 +875,19 @@ elif test "$use_arch" = "arm"; then + fi + fi + ++use_sse4=no ++if test "$ARCH" = "x86_64-linux"; then ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="-msse4.1" ++ AC_COMPILE_IFELSE( ++ [AC_LANG_SOURCE([int foo;])], ++ [ use_sse4=yes ++ USE_SSE4=1], ++ [ use_sse=no ++ USE_SSE4=0]) ++ CFLAGS="$SAVE_CFLAGS" ++fi ++ + # Checks for library functions. + AC_FUNC_ALLOCA + AC_FUNC_CHOWN +@@ -2575,6 +2588,10 @@ if test "$use_codec_libstagefright" = "yes"; then + OUTPUT_FILES="$OUTPUT_FILES xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/Makefile" + fi + ++if test "$use_sse4" = "yes"; then ++OUTPUT_FILES="$OUTPUT_FILES xbmc/linux/sse4/Makefile" ++fi ++ + OUTPUT_FILES="$OUTPUT_FILES \ + xbmc/interfaces/python/Makefile \ + xbmc/interfaces/python/test/Makefile" +@@ -2649,6 +2666,7 @@ AC_SUBST(USE_ANDROID) + AC_SUBST(GTEST_CONFIGURED) + AC_SUBST(USE_DOXYGEN) + AC_SUBST(USE_PVR_ADDONS) ++AC_SUBST(USE_SSE4) + + # pushd and popd are not available in other shells besides bash, so implement + # our own pushd/popd functions +diff --git a/xbmc/DllPaths_generated.h.in b/xbmc/DllPaths_generated.h.in +index d35ea97..3bf8f96 100644 +--- a/xbmc/DllPaths_generated.h.in ++++ b/xbmc/DllPaths_generated.h.in +@@ -104,4 +104,7 @@ + /* xkbcommon */ + #define DLL_PATH_XKBCOMMON "@XKBCOMMON_LIBRARY_SONAME@" + ++/* sse4 */ ++#define DLL_PATH_LIBSSE4 "special://xbmcbin/system/libsse4-@ARCH@.so" ++ + #endif +diff --git a/xbmc/linux/sse4/CopyFrame.cpp b/xbmc/linux/sse4/CopyFrame.cpp +new file mode 100644 +index 0000000..6d23d83 +--- /dev/null ++++ b/xbmc/linux/sse4/CopyFrame.cpp +@@ -0,0 +1,115 @@ ++/* ++ * Copyright (C) 2005-2013 Team XBMC ++ * http://xbmc.org ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, see ++ * . ++ * ++ */ ++ ++#include "smmintrin.h" ++ ++#define CACHED_BUFFER_SIZE 4096 ++typedef unsigned int UINT; ++ ++extern "C" ++{ ++ ++/* ++ * http://software.intel.com/en-us/articles/copying-accelerated-video-decode-frame-buffers ++ * COPIES VIDEO FRAMES FROM USWC MEMORY TO WB SYSTEM MEMORY VIA CACHED BUFFER ++ * ASSUMES PITCH IS A MULTIPLE OF 64B CACHE LINE SIZE, WIDTH MAY NOT BE ++ */ ++void copy_frame( void * pSrc, void * pDest, void * pCacheBlock, ++ UINT width, UINT height, UINT pitch ) ++{ ++ __m128i x0, x1, x2, x3; ++ __m128i *pLoad; ++ __m128i *pStore; ++ __m128i *pCache; ++ UINT x, y, yLoad, yStore; ++ UINT rowsPerBlock; ++ UINT width64; ++ UINT extraPitch; ++ ++ ++ rowsPerBlock = CACHED_BUFFER_SIZE / pitch; ++ width64 = (width + 63) & ~0x03f; ++ extraPitch = (pitch - width64) / 16; ++ ++ pLoad = (__m128i *)pSrc; ++ pStore = (__m128i *)pDest; ++ ++ // COPY THROUGH 4KB CACHED BUFFER ++ for( y = 0; y < height; y += rowsPerBlock ) ++ { ++ // ROWS LEFT TO COPY AT END ++ if( y + rowsPerBlock > height ) ++ rowsPerBlock = height - y; ++ ++ pCache = (__m128i *)pCacheBlock; ++ ++ _mm_mfence(); ++ ++ // LOAD ROWS OF PITCH WIDTH INTO CACHED BLOCK ++ for( yLoad = 0; yLoad < rowsPerBlock; yLoad++ ) ++ { ++ // COPY A ROW, CACHE LINE AT A TIME ++ for( x = 0; x < pitch; x +=64 ) ++ { ++ x0 = _mm_stream_load_si128( pLoad +0 ); ++ x1 = _mm_stream_load_si128( pLoad +1 ); ++ x2 = _mm_stream_load_si128( pLoad +2 ); ++ x3 = _mm_stream_load_si128( pLoad +3 ); ++ ++ _mm_store_si128( pCache +0, x0 ); ++ _mm_store_si128( pCache +1, x1 ); ++ _mm_store_si128( pCache +2, x2 ); ++ _mm_store_si128( pCache +3, x3 ); ++ ++ pCache += 4; ++ pLoad += 4; ++ } ++ } ++ ++ _mm_mfence(); ++ ++ pCache = (__m128i *)pCacheBlock; ++ ++ // STORE ROWS OF FRAME WIDTH FROM CACHED BLOCK ++ for( yStore = 0; yStore < rowsPerBlock; yStore++ ) ++ { ++ // copy a row, cache line at a time ++ for( x = 0; x < width64; x +=64 ) ++ { ++ x0 = _mm_load_si128( pCache ); ++ x1 = _mm_load_si128( pCache +1 ); ++ x2 = _mm_load_si128( pCache +2 ); ++ x3 = _mm_load_si128( pCache +3 ); ++ ++ _mm_stream_si128( pStore, x0 ); ++ _mm_stream_si128( pStore +1, x1 ); ++ _mm_stream_si128( pStore +2, x2 ); ++ _mm_stream_si128( pStore +3, x3 ); ++ ++ pCache += 4; ++ pStore += 4; ++ } ++ ++ pCache += extraPitch; ++ pStore += extraPitch; ++ } ++ } ++} ++} +diff --git a/xbmc/linux/sse4/DllLibSSE4.h b/xbmc/linux/sse4/DllLibSSE4.h +new file mode 100644 +index 0000000..01424ac +--- /dev/null ++++ b/xbmc/linux/sse4/DllLibSSE4.h +@@ -0,0 +1,43 @@ ++#pragma once ++/* ++ * Copyright (C) 2005-2013 Team XBMC ++ * http://xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, see ++ * . ++ * ++ */ ++ ++#include "DynamicDll.h" ++ ++extern "C" { ++ ++} ++ ++class DllLibSSE4Interface ++{ ++public: ++ virtual ~DllLibSSE4Interface() {} ++ virtual void copy_frame(void * pSrc, void * pDest, void * pCacheBlock, UINT width, UINT height, UINT pitch) = 0; ++}; ++ ++class DllLibSSE4 : public DllDynamic, DllLibSSE4Interface ++{ ++ DECLARE_DLL_WRAPPER(DllLibSSE4, DLL_PATH_LIBSSE4) ++ DEFINE_METHOD6(void, copy_frame, (void *p1, void *p2, void *p3, UINT p4, UINT p5, UINT p6)) ++ ++ BEGIN_METHOD_RESOLVE() ++ RESOLVE_METHOD(copy_frame) ++ END_METHOD_RESOLVE() ++}; +diff --git a/xbmc/linux/sse4/Makefile.in b/xbmc/linux/sse4/Makefile.in +new file mode 100644 +index 0000000..45aa826 +--- /dev/null ++++ b/xbmc/linux/sse4/Makefile.in +@@ -0,0 +1,20 @@ ++ARCH=@ARCH@ ++DEFINES+= ++CXXFLAGS=-fPIC -msse4.1 ++LIBNAME=libsse4 ++OBJS=CopyFrame.o ++ ++LIB_SHARED=@abs_top_srcdir@/system/$(LIBNAME)-$(ARCH).so ++ ++all: $(LIB_SHARED) ++ ++$(LIB_SHARED): $(OBJS) ++ $(CXX) $(CFLAGS) $(LDFLAGS) -shared -g -o $(LIB_SHARED) $(OBJS) ++ ++CLEAN_FILES = \ ++ $(LIB_SHARED) \ ++ ++DISTCLEAN_FILES= \ ++ Makefile \ ++ ++include ../../../Makefile.include -- 1.8.5.1