diff --git a/packages/devel/pkg-config/patches/pkg-config-01_rebuild.patch b/packages/devel/pkg-config/patches/pkg-config-01_rebuild.patch
new file mode 100644
index 0000000000..32990eecc7
--- /dev/null
+++ b/packages/devel/pkg-config/patches/pkg-config-01_rebuild.patch
@@ -0,0 +1,26 @@
+diff --git a/Makefile.am b/Makefile.am
+index 41e48e8..7178ec8 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -39,7 +39,7 @@ pkg_config_SOURCES= \
+ if HOST_TOOL
+ host_tool = $(host)-pkg-config$(EXEEXT)
+ install-exec-hook:
+- cd $(DESTDIR)$(bindir) && $(LN) pkg-config$(EXEEXT) $(host_tool)
++ cd $(DESTDIR)$(bindir) && rm -f $(host_tool) && $(LN) pkg-config$(EXEEXT) $(host_tool)
+ uninstall-hook:
+ cd $(DESTDIR)$(bindir) && rm -f $(host_tool)
+ endif
+diff --git a/Makefile.in b/Makefile.in
+index a1ad77c..88a421c 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1093,7 +1093,7 @@ uninstall-man: uninstall-man1
+ uninstall-man1
+
+ @HOST_TOOL_TRUE@install-exec-hook:
+-@HOST_TOOL_TRUE@ cd $(DESTDIR)$(bindir) && $(LN) pkg-config$(EXEEXT) $(host_tool)
++@HOST_TOOL_TRUE@ cd $(DESTDIR)$(bindir) && rm -f $(host_tool) && $(LN) pkg-config$(EXEEXT) $(host_tool)
+ @HOST_TOOL_TRUE@uninstall-hook:
+ @HOST_TOOL_TRUE@ cd $(DESTDIR)$(bindir) && rm -f $(host_tool)
+
diff --git a/packages/graphics/bcm2835-driver/package.mk b/packages/graphics/bcm2835-driver/package.mk
index c2457843ac..946d872744 100644
--- a/packages/graphics/bcm2835-driver/package.mk
+++ b/packages/graphics/bcm2835-driver/package.mk
@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="bcm2835-driver"
-PKG_VERSION="e1e2823"
+PKG_VERSION="fc95251"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="nonfree"
diff --git a/packages/graphics/libdrm/package.mk b/packages/graphics/libdrm/package.mk
index f76df4a748..9cf96585f2 100644
--- a/packages/graphics/libdrm/package.mk
+++ b/packages/graphics/libdrm/package.mk
@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="libdrm"
-PKG_VERSION="2.4.62"
+PKG_VERSION="2.4.64"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
diff --git a/packages/multimedia/libbluray/package.mk b/packages/multimedia/libbluray/package.mk
index 639d99883a..36db067a8b 100644
--- a/packages/multimedia/libbluray/package.mk
+++ b/packages/multimedia/libbluray/package.mk
@@ -17,12 +17,12 @@
################################################################################
PKG_NAME="libbluray"
-PKG_VERSION="0.8.0"
+PKG_VERSION="0.8.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
-PKG_SITE="http://www.videolan.org/developers/libbluray.html"
-PKG_URL="ftp://ftp.videolan.org/pub/videolan/libbluray/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.bz2"
+PKG_SITE="https://www.videolan.org/developers/libbluray.html"
+PKG_URL="https://ftp.videolan.org/pub/videolan/libbluray/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS_TARGET="toolchain freetype libxml2"
PKG_PRIORITY="optional"
PKG_SECTION="multimedia"
diff --git a/packages/multimedia/libvdpau/package.mk b/packages/multimedia/libvdpau/package.mk
index 0010fc68e5..a346c0ea5b 100644
--- a/packages/multimedia/libvdpau/package.mk
+++ b/packages/multimedia/libvdpau/package.mk
@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="libvdpau"
-PKG_VERSION="1.1"
+PKG_VERSION="1.1.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
diff --git a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt
index 445d877ce5..7bf5c43869 100644
--- a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt
+++ b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/config.txt
@@ -48,7 +48,8 @@
# mode 'Modest' : 800 | 300 | 400 | 0
# mode 'Medium' : 900 | 333 | 450 | 2
# mode 'High' : 950 | 450 | 450 | 6
-# mode 'Turbo' : 1000 | 500 | 500 | 6
+# mode 'Turbo' : 1000 | 500 | 600 | 6
+# mode 'Pi2' : 1000 | 500 | 500 | 2
# arm_freq=700
# core_freq=250
diff --git a/packages/tools/bcm2835-bootloader/package.mk b/packages/tools/bcm2835-bootloader/package.mk
index f1eab52431..3486ae94f7 100644
--- a/packages/tools/bcm2835-bootloader/package.mk
+++ b/packages/tools/bcm2835-bootloader/package.mk
@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="bcm2835-bootloader"
-PKG_VERSION="e1e2823"
+PKG_VERSION="fc95251"
PKG_REV="1"
PKG_ARCH="arm"
PKG_LICENSE="nonfree"
diff --git a/packages/virtual/x11/package.mk b/packages/virtual/x11/package.mk
index 07e9354733..18e3322681 100644
--- a/packages/virtual/x11/package.mk
+++ b/packages/virtual/x11/package.mk
@@ -48,7 +48,7 @@ fi
get_graphicdrivers
# Drivers
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET xf86-input-libinput"
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET xf86-input-evdev"
for drv in $XORG_DRIVERS; do
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET xf86-video-$drv"
done
diff --git a/packages/x11/driver/xf86-input-evdev/package.mk b/packages/x11/driver/xf86-input-evdev/package.mk
new file mode 100644
index 0000000000..e41659039c
--- /dev/null
+++ b/packages/x11/driver/xf86-input-evdev/package.mk
@@ -0,0 +1,37 @@
+################################################################################
+# This file is part of OpenELEC - http://www.openelec.tv
+# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
+#
+# OpenELEC 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 of the License, or
+# (at your option) any later version.
+#
+# OpenELEC 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 OpenELEC. If not, see .
+################################################################################
+
+PKG_NAME="xf86-input-evdev"
+PKG_VERSION="2.9.1"
+PKG_REV="1"
+PKG_ARCH="any"
+PKG_LICENSE="OSS"
+PKG_SITE="http://www.X.org"
+PKG_URL="http://xorg.freedesktop.org/archive/individual/driver/$PKG_NAME-$PKG_VERSION.tar.bz2"
+PKG_DEPENDS_TARGET="toolchain util-macros inputproto libevdev systemd"
+PKG_PRIORITY="optional"
+PKG_SECTION="x11/driver"
+PKG_SHORTDESC="xf86-input-evdev: Generic Xorg Linux input driver"
+PKG_LONGDESC="Evdev is an Xorg input driver for Linux's generic event devices. It therefore supports all input devices that the kernel knows about, including most mice and keyboards."
+
+PKG_IS_ADDON="no"
+PKG_AUTORECONF="yes"
+
+PKG_CONFIGURE_OPTS_TARGET="--disable-silent-rules \
+ --with-xorg-module-dir=$XORG_PATH_MODULES \
+ --with-gnu-ld"
diff --git a/packages/x11/driver/xf86-input-libinput/package.mk b/packages/x11/driver/xf86-input-libinput/package.mk
index ba5d021977..a388f7a5da 100644
--- a/packages/x11/driver/xf86-input-libinput/package.mk
+++ b/packages/x11/driver/xf86-input-libinput/package.mk
@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="xf86-input-libinput"
-PKG_VERSION="0.13.0"
+PKG_VERSION="0.14.0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
diff --git a/packages/x11/driver/xf86-video-nvidia/package.mk b/packages/x11/driver/xf86-video-nvidia/package.mk
index 31eab50898..a02d334fbe 100644
--- a/packages/x11/driver/xf86-video-nvidia/package.mk
+++ b/packages/x11/driver/xf86-video-nvidia/package.mk
@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="xf86-video-nvidia"
-PKG_VERSION="352.30"
+PKG_VERSION="352.41"
PKG_REV="1"
PKG_ARCH="x86_64"
PKG_LICENSE="nonfree"
diff --git a/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch b/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch
index 0699fba75b..5901e4693b 100644
--- a/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch
+++ b/projects/RPi/patches/kodi/kodi-001-isengard-rpb-backports.patch
@@ -1,7 +1,7 @@
-From fca20ce71da054984d648316b362c9318dfeab10 Mon Sep 17 00:00:00 2001
+From 27c098f81eec4d6c91e929fb7673640fccd88993 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 7 Apr 2014 18:19:32 +0100
-Subject: [PATCH 01/87] [rbp/omxplayer] When opening a stream don't try to
+Subject: [PATCH 01/97] [rbp/omxplayer] When opening a stream don't try to
update gui so often
---
@@ -25,10 +25,10 @@ index 318ecec..59698f6 100644
g_windowManager.ProcessRenderLoop(false);
if (allowCancel && dialog->IsCanceled())
-From cda1cae0c13be8b8db75d61f64879291a994426c Mon Sep 17 00:00:00 2001
+From ebbadf9ecbe46aff57ab31aa0900c691dacc8789 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 8 Mar 2014 15:36:06 +0000
-Subject: [PATCH 03/87] [hifiberry] Hack: force it to be recognised as IEC958
+Subject: [PATCH 03/97] [hifiberry] Hack: force it to be recognised as IEC958
capable to enable passthrough options
---
@@ -51,10 +51,10 @@ index e22db7a..0120bd5 100644
info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI")
{
-From b8992693e016eed3d5e89ddc437aa4c59b561d13 Mon Sep 17 00:00:00 2001
+From d50f06493551f65a61159b0b3140172ff32c2c93 Mon Sep 17 00:00:00 2001
From: Ben Avison
Date: Thu, 1 May 2014 16:28:39 +0100
-Subject: [PATCH 04/87] Improved file buffering in CArchive
+Subject: [PATCH 04/97] Improved file buffering in CArchive
Even though memcpy is typically inlined by the compiler into byte/word loads
and stores (at least for release builds), the frequency with which 1, 2 and 4
@@ -114,10 +114,10 @@ index 6ed0f8f..8506d95 100644
}
else
-From 396257e8ed99f16e3088a650f47d1356410ae912 Mon Sep 17 00:00:00 2001
+From e677c063cf52652c9ca299f0bbe70652f9fd63eb Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 12 Aug 2014 00:31:36 +0100
-Subject: [PATCH 05/87] [omxcodec] Don't force software codec with dvds
+Subject: [PATCH 05/97] [omxcodec] Don't force software codec with dvds
---
xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 ++
@@ -138,10 +138,10 @@ index 7c84557..87463a7 100644
else if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_PVRMANAGER))
{
-From c44cf37f3ab1c1b836044c503f51609190c6d1cc Mon Sep 17 00:00:00 2001
+From 01b3d88ff0d057cc16039da6e5d25158ce4d80d1 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 10 Aug 2014 16:45:16 +0100
-Subject: [PATCH 06/87] filesystem: Make support of browsing into archives
+Subject: [PATCH 06/97] filesystem: Make support of browsing into archives
optional
The ability to browse, scan and play content in archives can cause problems on low powered/low memory devices.
@@ -224,10 +224,10 @@ index 5af92e7..568a1a8 100644
{ // XBMC Smart playlist - just XML renamed to XSP
// read the name of the playlist in
-From 39ca696d7683f645fab217a4971e8f884f0f4bfc Mon Sep 17 00:00:00 2001
+From 077c929b867702c7d59ce2289d54cec56a4018e7 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 27 Oct 2014 13:06:57 +0000
-Subject: [PATCH 08/87] [rbp] Make cachemembuffersize default depend on memory
+Subject: [PATCH 08/97] [rbp] Make cachemembuffersize default depend on memory
size
---
@@ -329,11 +329,10 @@ index 2e3282c..d1606a2 100644
}
-
-From f9d47dcf9d04a28308404a77b516e28d57b97f2a Mon Sep 17 00:00:00 2001
+From 4bb600b92009d43e32124eb8bf6ae95603ae93a8 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 30 May 2014 14:58:43 +0100
-Subject: [PATCH 10/87] [settings] Experiment: Report DESKTOP resolution in
+Subject: [PATCH 10/97] [settings] Experiment: Report DESKTOP resolution in
video settings
---
@@ -355,10 +354,10 @@ index 4376463..fc4e5ea 100644
StringUtils::Format("%dx%d%s", resolution->width, resolution->height,
ModeFlagsToString(resolution->flags, false).c_str()),
-From 76c5fd374e30835b61684da8a62ed6c6ddefa4cb Mon Sep 17 00:00:00 2001
+From b48b69bcd2f0621befc05b30063874ccfbed6395 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 9 Sep 2014 12:04:26 +0100
-Subject: [PATCH 11/87] egl: Treat unknown display aspect ratio as square pixel
+Subject: [PATCH 11/97] egl: Treat unknown display aspect ratio as square pixel
---
xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 4 ++--
@@ -387,10 +386,10 @@ index bda7430..68fc647 100644
SetResolutionString(m_desktopRes);
-From af06dc9a5a99bcf774a760bf46f88989ae03c6c4 Mon Sep 17 00:00:00 2001
+From 3e868e74d23640e8f75f56d2eeabbfd6948e4205 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 19 Sep 2014 11:54:49 +0100
-Subject: [PATCH 12/87] [dvdplayer/rbp] Add pi specific option to maintain
+Subject: [PATCH 12/97] [dvdplayer/rbp] Add pi specific option to maintain
vsync with pll adjustment
New A/V sync option in settings/video/playback to do "Adjust PLL".
@@ -682,10 +681,10 @@ index 7df1bf7..732b69d 100644
float m_audioPlayCountMinimumPercent;
bool m_dvdplayerIgnoreDTSinWAV;
-From 855155cecdc39ff1586f84cec624bdbc1689ad41 Mon Sep 17 00:00:00 2001
+From 714598484af7ea5d846e80e4e6dbf7e51e1e7bf4 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 24 Sep 2014 23:13:52 +0100
-Subject: [PATCH 13/87] [audio] Add settings option to boost centre channel
+Subject: [PATCH 13/97] [audio] Add settings option to boost centre channel
when downmixing
This allows a dB volume increase to be added to centre channel.
@@ -807,10 +806,10 @@ index f99c0e6..1911189 100644
// stereo upmix
if (upmix && m_src_channels == 2 && m_dst_channels > 2)
-From e46c99c1b4d75dd9f162d80c9cec1ebf1a8d3074 Mon Sep 17 00:00:00 2001
+From 646c5985702e78bada6bbd9f74fbf442e5bacbd5 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 27 Oct 2014 15:23:51 +0000
-Subject: [PATCH 14/87] [rbp] Default extract thumbnails to false
+Subject: [PATCH 14/97] [rbp] Default extract thumbnails to false
It can take 80 seconds for a single file on a Pi. It can cause crashes with out-of-memory errors.
It genereates a lot of support issues. Best to default to disabled and let users enable it if they must
@@ -840,10 +839,10 @@ index 50fe36a..a54a4c4 100644
-From b860125828104f62039468f8af95cd8b82fedaa5 Mon Sep 17 00:00:00 2001
+From 4d538f222e65dac1aab9238ee206dae98e8b745d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 10 Feb 2015 15:29:16 +0000
-Subject: [PATCH 15/87] [libcec] Add repeating keypress patch from popcornmix'
+Subject: [PATCH 15/97] [libcec] Add repeating keypress patch from popcornmix'
repo
---
@@ -1730,10 +1729,10 @@ index 0000000..8366a69
+1.9.1
+
-From b55caa265c7481aaf12c99eaa3e051197492a16b Mon Sep 17 00:00:00 2001
+From 9f185ce92005dc1da7c54b0538b9be627398414c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 28 Oct 2014 00:19:40 +0000
-Subject: [PATCH 16/87] [cec] Add settings for configuring button repeats
+Subject: [PATCH 16/97] [cec] Add settings for configuring button repeats
---
addons/resource.language.en_gb/resources/strings.po | 15 +++++++++++++++
@@ -1814,10 +1813,10 @@ index ea702e5..b5ff693 100644
void CPeripheralCecAdapter::ReadLogicalAddresses(const std::string &strString, cec_logical_addresses &addresses)
-From f8b7ec7f762de88902378187148e437589c09e8c Mon Sep 17 00:00:00 2001
+From 41b622065e0b8c4b9ac882c860b352bc893af904 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 3 Nov 2014 23:17:46 +0000
-Subject: [PATCH 17/87] [cec] Don't discard buttons when repeat mode is enabled
+Subject: [PATCH 17/97] [cec] Don't discard buttons when repeat mode is enabled
---
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 5 ++++-
@@ -1840,10 +1839,10 @@ index b5ff693..6086bf5 100644
if (m_currentButton.iButton == key.iButton && m_currentButton.iDuration == 0)
{
-From d36c6702a3f695ba90ab7bc60498a57f32c6eff2 Mon Sep 17 00:00:00 2001
+From 67d598e18250aeee6968a37d6c061b50658ef2fc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 4 Nov 2014 18:50:00 +0000
-Subject: [PATCH 18/87] [cec] Temp - more logging
+Subject: [PATCH 18/97] [cec] Temp - more logging
---
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 8 +++++++-
@@ -1895,10 +1894,10 @@ index 6086bf5..417b0d8 100644
}
-From f4d93cf45c5ad5666ce31589c879ae2c3bfbfa0c Mon Sep 17 00:00:00 2001
+From db0fd492436ac8612452651d95fd013b66e5cb7f Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 15 Nov 2014 12:03:34 +0000
-Subject: [PATCH 19/87] [dvdplayer] Add lock for player creation
+Subject: [PATCH 19/97] [dvdplayer] Add lock for player creation
---
xbmc/cores/dvdplayer/DVDPlayer.cpp | 3 +++
@@ -1944,10 +1943,10 @@ index ab6a228..32e76c1 100644
+ CCriticalSection m_players_lock;
};
-From 1f158cf501be9af72c54013f6ba3d888028fd3d2 Mon Sep 17 00:00:00 2001
+From ba714e2c52c3b2b54d0aa36feb038e0988c10f30 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 24 Nov 2014 22:07:25 +0000
-Subject: [PATCH 20/87] [dvdplayervideo] Prod decoder when in stills mode
+Subject: [PATCH 20/97] [dvdplayervideo] Prod decoder when in stills mode
An asynchronous hardware decoder doesn't only produce output pictures when new packets arrive.
In dvd stills mode give it a chance to return pictures that weren't ready when frame was decoded.
@@ -2024,10 +2023,10 @@ index 46fa635..03c876d 100644
if (pMsg->IsType(CDVDMsg::GENERAL_SYNCHRONIZE))
-From 679035ea691e5269b7f5b26f6e5f4dd42f243da9 Mon Sep 17 00:00:00 2001
+From 0008ee91faf07eede19fd97c7296825b67e1264b Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 27 Nov 2014 16:31:56 +0000
-Subject: [PATCH 21/87] [languageinvoker] Reduce priority of python threads
+Subject: [PATCH 21/97] [languageinvoker] Reduce priority of python threads
---
xbmc/interfaces/generic/LanguageInvokerThread.cpp | 5 +++++
@@ -2050,10 +2049,10 @@ index fcdd063..16f0c89 100644
}
-From 7c15df684d52221699e7056034efa4c6584caaeb Mon Sep 17 00:00:00 2001
+From ca83d5d34edf353902c7bbaa702f2dbbca5cffbc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 14 Dec 2013 16:55:05 +0000
-Subject: [PATCH 22/87] logging: Add microsecond timer to log messages
+Subject: [PATCH 22/97] logging: Add microsecond timer to log messages
---
xbmc/utils/log.cpp | 17 +++++++++++++++--
@@ -2106,10 +2105,10 @@ index 3443f12..31c4a99 100644
levelNames[logLevel]) + strData;
-From 1a8b62644004d8e07141ce19bd439edc3415b7e1 Mon Sep 17 00:00:00 2001
+From adced8a3f90b0de05070f5fb7877c0cf97ae3951 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 29 Nov 2014 15:25:16 +0000
-Subject: [PATCH 23/87] [rbp] hack: wait for splash to complete before changing
+Subject: [PATCH 23/97] [rbp] hack: wait for splash to complete before changing
hdmi mode
---
@@ -2183,10 +2182,10 @@ index 68fc647..c80114e 100644
if(!m_fixedMode && GETFLAGS_GROUP(res.dwFlags) && GETFLAGS_MODE(res.dwFlags))
-From 1c92686897b4c799e85aa878ec9f2d5b940533f6 Mon Sep 17 00:00:00 2001
+From fb7d35b6bc61c996e744be515faa849dfc0f1a24 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 11 Dec 2014 17:00:57 +0000
-Subject: [PATCH 24/87] Fix for UI not showing both extractflags and
+Subject: [PATCH 24/97] Fix for UI not showing both extractflags and
extractthumb
---
@@ -2250,10 +2249,10 @@ index 4843ab8..f1cbefa 100644
-From 6e4957a0b614a4e8db33849e52606052e8db9708 Mon Sep 17 00:00:00 2001
+From 429d7afba781d741b6911f9de9f3ec03be13429f Mon Sep 17 00:00:00 2001
From: anaconda
Date: Thu, 11 Sep 2014 21:30:43 +0200
-Subject: [PATCH 25/87] Disable autoscrolling while on screensaver and while
+Subject: [PATCH 25/97] Disable autoscrolling while on screensaver and while
opening streams.
---
@@ -2266,10 +2265,10 @@ Subject: [PATCH 25/87] Disable autoscrolling while on screensaver and while
6 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
-index 36e3b97..136eade 100644
+index 352df29..c83e0a4 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
-@@ -4988,3 +4988,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const
+@@ -4981,3 +4981,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const
return false;
}
@@ -2284,10 +2283,10 @@ index 36e3b97..136eade 100644
+ return onBlackDimScreenSaver || openingStreams;
+}
diff --git a/xbmc/Application.h b/xbmc/Application.h
-index fe92b99..5e24c97 100644
+index 362dd7a..9f9a115 100644
--- a/xbmc/Application.h
+++ b/xbmc/Application.h
-@@ -385,6 +385,8 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs
+@@ -384,6 +384,8 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs
*/
void UnregisterActionListener(IActionListener *listener);
@@ -2384,10 +2383,10 @@ index 2cdbf1c..42be75d 100644
if (m_lastRenderTime)
m_autoScrollDelayTime += currentTime - m_lastRenderTime;
-From 00ad89f5921ee884ddbf242897809e95a4291587 Mon Sep 17 00:00:00 2001
+From f1896dc4a871edff5a4bc7f2549b5675c0a53b67 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 13 Dec 2014 18:35:20 +0000
-Subject: [PATCH 26/87] [demuxer] Avoid memcpy on every demuxer packet
+Subject: [PATCH 26/97] [demuxer] Avoid memcpy on every demuxer packet
Avoids an unnecessary memcpy on every demuxer packet which for
high bitrate videos can be significant.
@@ -2482,10 +2481,10 @@ index ab298b2..10c5ee0 100644
}
catch(...) {
-From 1a5db9af3595fed5b65c3557d6022cee3c254f1c Mon Sep 17 00:00:00 2001
+From 3da5f58723e112654b864b7b5f8b0f30116e29cc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 15 Feb 2015 14:06:12 +0000
-Subject: [PATCH 27/87] [mmal] Allow mmal codec for dvd stills
+Subject: [PATCH 27/97] [mmal] Allow mmal codec for dvd stills
---
xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 7 +++++++
@@ -2517,10 +2516,10 @@ index 4c363cf..b90237b 100644
{
// If dvd is an mpeg2 and hint.stills
-From bb4863764efb8eeb96dd788fd35ee901fe0a4d9a Mon Sep 17 00:00:00 2001
+From 02ce56be5917ca2c6c24674e6a2c36870ebdd936 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 31 Mar 2015 17:31:47 +0100
-Subject: [PATCH 28/87] [mmalrenderer] Add SetCodecControl function and prefer
+Subject: [PATCH 28/97] [mmalrenderer] Add SetCodecControl function and prefer
to return pictures when renderer is low (disabled)
---
@@ -2591,10 +2590,10 @@ index 51a64d1..bde8c06 100644
CCriticalSection m_sharedSection;
MMAL_COMPONENT_T *m_dec;
-From 756be12cafa7d396065a961354ef6fd0911f6a24 Mon Sep 17 00:00:00 2001
+From aa2973a30f567d12eb1302365ad4c924dd1146be Mon Sep 17 00:00:00 2001
From: anaconda
Date: Wed, 25 Feb 2015 18:22:21 +0100
-Subject: [PATCH 29/87] Load OSD dialogs on startup.
+Subject: [PATCH 29/97] Load OSD dialogs on startup.
Fixes skipped frames the first time they're loaded in memory on less powered
devices, like a Raspberry Pi, when using DVDPlayer.
@@ -2689,10 +2688,10 @@ index 9f25fa5..3ece45b 100644
CGUIDialogVideoSettings::~CGUIDialogVideoSettings()
{ }
-From 8abb0782a608715a9d059e832f18587969bb4303 Mon Sep 17 00:00:00 2001
+From 8e9136e385a30eaa7ae5928c1d9f6f6a2698eb4b Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 7 Mar 2015 22:46:21 +0000
-Subject: [PATCH 30/87] configure: Add raspberry-pi2 platform
+Subject: [PATCH 30/97] configure: Add raspberry-pi2 platform
---
configure.ac | 14 +++++++--
@@ -2704,7 +2703,7 @@ Subject: [PATCH 30/87] configure: Add raspberry-pi2 platform
6 files changed, 44 insertions(+), 22 deletions(-)
diff --git a/configure.ac b/configure.ac
-index cf945a0..ab4214f 100644
+index 7265637..03e44ac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -744,8 +744,17 @@ case $use_platform in
@@ -2866,10 +2865,10 @@ index cdc2fe4..379bd1d 100644
set(CMAKE_SYSTEM_NAME Linux)
endif()
-From 54133f8d1b482256cad949b3cfd651e2732bf218 Mon Sep 17 00:00:00 2001
+From 41107ebd4976d70e5931a811a6931898055ec8e9 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 10 Mar 2015 17:05:18 +0000
-Subject: [PATCH 31/87] [players] Add settings option to enable MVC support
+Subject: [PATCH 31/97] [players] Add settings option to enable MVC support
---
addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++
@@ -2950,10 +2949,10 @@ index e4f6d86..5d324f4 100644
case AV_CODEC_ID_MPEG4:
// (role name) video_decoder.mpeg4
-From 50a6e59c7f8e393d93f569ab53486c9d4fbf4308 Mon Sep 17 00:00:00 2001
+From 3f7aaf967f321184ad35378573d0eef4fd264102 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 14 Mar 2015 12:38:08 +0000
-Subject: [PATCH 32/87] [mmalrenderer] Switch to using transform flags for 3d
+Subject: [PATCH 32/97] [mmalrenderer] Switch to using transform flags for 3d
modes
---
@@ -3332,11 +3331,10 @@ index c80114e..3816b55 100644
CLog::Log(LOGDEBUG, "EGL set resolution %dx%d -> %dx%d @ %.2f fps (%d,%d) flags:%x aspect:%.2f\n",
m_width, m_height, dst_rect.width, dst_rect.height, res.fRefreshRate, GETFLAGS_GROUP(res.dwFlags), GETFLAGS_MODE(res.dwFlags), (int)res.dwFlags, res.fPixelRatio);
-
-From 02ab1526a5e8a6e60d59bf5f3ad285110ff66d5d Mon Sep 17 00:00:00 2001
+From ea99e969730a7b7d65018d8d2fb99c882ce6939c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 14 Apr 2015 20:51:14 +0100
-Subject: [PATCH 35/87] [gui] Also limit GUI updates when in non full-screen
+Subject: [PATCH 35/97] [gui] Also limit GUI updates when in non full-screen
video mode
---
@@ -3344,10 +3342,10 @@ Subject: [PATCH 35/87] [gui] Also limit GUI updates when in non full-screen
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
-index 136eade..763c1c6 100644
+index c83e0a4..5776389 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
-@@ -2499,7 +2499,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
+@@ -2489,7 +2489,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU)
// This code reduces rendering fps of the GUI layer when playing videos in fullscreen mode
// it makes only sense on architectures with multiple layers
@@ -3356,7 +3354,7 @@ index 136eade..763c1c6 100644
fps = CSettings::Get().GetInt("videoplayer.limitguiupdate");
#endif
-@@ -2512,6 +2512,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
+@@ -2502,6 +2502,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
{
if (!m_skipGuiRender)
g_windowManager.Process(CTimeUtils::GetFrameTime());
@@ -3366,10 +3364,10 @@ index 136eade..763c1c6 100644
g_windowManager.FrameMove();
}
-From 7d32b47b8d6f7f8238ad230de053b9ef74d9b169 Mon Sep 17 00:00:00 2001
+From e1b16727bf9aa69e80d98d3375325f28853f4077 Mon Sep 17 00:00:00 2001
From: macrule
Date: Thu, 11 Apr 2013 18:24:42 +0200
-Subject: [PATCH 36/87] Added some vc_tv_* functions that were missing in
+Subject: [PATCH 36/97] Added some vc_tv_* functions that were missing in
DllBCM.
---
@@ -3404,10 +3402,10 @@ index b92fdb8..9c7e293 100644
HDMI_INTERLACED_T scan_mode, EDID_MODE_MATCH_FLAG_T match_flags)
{ return ::vc_tv_hdmi_power_on_best(width, height, frame_rate, scan_mode, match_flags); };
-From a87701ba7de5154a5ace636f12ad1d45899f3a5a Mon Sep 17 00:00:00 2001
+From 4dc37830ffa8d4ed07cd59f1b506ad1ce7e8fed4 Mon Sep 17 00:00:00 2001
From: macrule
Date: Thu, 11 Apr 2013 18:29:03 +0200
-Subject: [PATCH 37/87] Added private utility function to map a float display
+Subject: [PATCH 37/97] Added private utility function to map a float display
aspect, to the respective SDTV_ASPECT_* enum value.
---
@@ -3456,10 +3454,10 @@ index 3816b55..520bf95 100644
bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &resolutions)
-From c6d3ccebd34ae98f96ac2f6f28762cea9685e11a Mon Sep 17 00:00:00 2001
+From 5560b6729902efdffa303cfeede42067a5fa8cb7 Mon Sep 17 00:00:00 2001
From: macrule
Date: Thu, 11 Apr 2013 19:50:58 +0200
-Subject: [PATCH 38/87] Changed SDTV resolutions to be treated similarly to
+Subject: [PATCH 38/97] 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.
@@ -3556,10 +3554,10 @@ index 59401f5..a0acb1a 100644
int m_width;
int m_height;
-From 45464218f3129a257aa9916b0bdb8967945da4ca Mon Sep 17 00:00:00 2001
+From 0e7eb3c3417c45ed5008c47c1dacf7f5954db57a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 17:11:09 +0100
-Subject: [PATCH 39/87] Revert "[3D] don't back out from 3D handling on
+Subject: [PATCH 39/97] Revert "[3D] don't back out from 3D handling on
resolution changes if we're switching to a different 3D mode"
This reverts commit 3c4c236a799dab8369b4bb74ff9993bc58a61a72.
@@ -3594,10 +3592,10 @@ index bd7dff9..fc4cc95 100644
if(stereo_mode != m_stereoMode)
-From fdefdbe58bbffe647f669616892257142aef76f6 Mon Sep 17 00:00:00 2001
+From 759b1380cddba63b448c9681d51db64609484c95 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 10 Jun 2015 20:42:03 +0100
-Subject: [PATCH 40/87] [rbp] Fix zoom modes with stereoscopic videos
+Subject: [PATCH 40/97] [rbp] Fix zoom modes with stereoscopic videos
---
xbmc/cores/VideoRenderers/MMALRenderer.cpp | 12 ++++++++++--
@@ -3653,10 +3651,10 @@ index ba17a46..298eaff 100644
if (gui != display)
{
-From 2a3b2eecd8bebb09419ce6606623e664a6caf1ea Mon Sep 17 00:00:00 2001
+From 0d4bf6d61b4469300a46db84795c123177ee2cfc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 17:42:03 +0100
-Subject: [PATCH 41/87] [WinSystemEGL] Remove unused Support3D function
+Subject: [PATCH 41/97] [WinSystemEGL] Remove unused Support3D function
---
xbmc/windowing/egl/WinSystemEGL.cpp | 29 -----------------------------
@@ -3716,10 +3714,10 @@ index 9d4baf6..1ec4225 100644
EGLConfig GetEGLConfig();
-From d3bbcba17a08b06967098276a4e63fea1ad734c8 Mon Sep 17 00:00:00 2001
+From 21f8450e14bdea7ead6a3d0bf26a65444745668d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 16 Apr 2014 21:18:06 +0100
-Subject: [PATCH 42/87] [omxplayer] Don't propagate 3d flags based on supported
+Subject: [PATCH 42/97] [omxplayer] Don't propagate 3d flags based on supported
3d modes
---
@@ -3775,10 +3773,10 @@ index 298eaff..3bf7c2e 100644
unsigned int iDisplayHeight = height;
-From babe2ddd56be4bcc0653ab16010de7e5f5d3815f Mon Sep 17 00:00:00 2001
+From a36a305d37fd881d12344d859a53002e13989e89 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 18:52:28 +0100
-Subject: [PATCH 43/87] [3d] Avoid switching stereo mode based on current
+Subject: [PATCH 43/97] [3d] Avoid switching stereo mode based on current
display mode
---
@@ -3818,10 +3816,10 @@ index fc4cc95..e18232e 100644
RESOLUTION_INFO info_mod = GetResInfo(res);
-From 5a5c6740107de97d7cbce3303179c27e4f5e17b9 Mon Sep 17 00:00:00 2001
+From 1ac2844bd4a275ef5b6b50f6e66249c55d67e81c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 3 Jun 2015 23:13:51 +0100
-Subject: [PATCH 44/87] [rpi] Always add desktop resolution to supported list
+Subject: [PATCH 44/97] [rpi] Always add desktop resolution to supported list
There was an assumption that the desktop resolution would be in the probed list, but that is sometimes not the case.
We don't add interlaced resolutions to list, but they can be the preferred resolution read from edid. See:
@@ -3890,10 +3888,10 @@ index a1f67fd..69ce9b7 100644
CLog::Log(LOGDEBUG, "EGL mode %d: %s (%.2f) %s%s:%x\n", i, res.strMode.c_str(), res.fPixelRatio,
tv->native ? "N" : "", tv->scan_mode ? "I" : "", tv->code);
-From 76f259d5791f4dd40cd6ff6ffb4251c25496cec6 Mon Sep 17 00:00:00 2001
+From 83c3b11b49dddd4df9e30ea6a879dcebd840fd80 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 18:53:29 +0100
-Subject: [PATCH 45/87] [rbp] Drop reporting 3D modes and just use current
+Subject: [PATCH 45/97] [rbp] Drop reporting 3D modes and just use current
rendering mode to request 3D signalling
---
@@ -4050,10 +4048,10 @@ index 69ce9b7..25a97ad 100644
}
if (supported_modes)
-From 6b731b58c0cd53ba599eab0dab2e3011fbc43425 Mon Sep 17 00:00:00 2001
+From f939e50fdb7323fa21ef366be148e0d786ea4619 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 30 Jun 2015 14:08:24 +0100
-Subject: [PATCH 46/87] [rbp] Ignore video stereo mode when 3D display mode is
+Subject: [PATCH 46/97] [rbp] Ignore video stereo mode when 3D display mode is
disabled
---
@@ -4092,10 +4090,10 @@ index 3bf7c2e..5f6b402 100644
if (m_hints.orientation == 90 || m_hints.orientation == 270)
{
-From 985940529cc7737ffa0475e4b9866fd9e4763826 Mon Sep 17 00:00:00 2001
+From 09b62cbefb2e5a3b5f231fbef3647ce46734bbdb Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 22 Jun 2015 16:27:15 +0100
-Subject: [PATCH 47/87] [EGL] Don't skip out when HDMI mode is considered the
+Subject: [PATCH 47/97] [EGL] Don't skip out when HDMI mode is considered the
same
It might have different 3D signalling. TODO: keep track of 3D signalling
@@ -4117,10 +4115,10 @@ index c43c4d0..13b75b1 100644
m_bFullScreen = fullScreen;
-From 2ffd4421782229b8243b7c479a97c63a5e2cddde Mon Sep 17 00:00:00 2001
+From b226d8094af9d08e0e8bdcb8308dc289b5ab26f6 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 21 Apr 2015 14:32:07 +0100
-Subject: [PATCH 48/87] [mmalrenderer] Add sharpness control
+Subject: [PATCH 48/97] [mmalrenderer] Add sharpness control
---
addons/resource.language.en_gb/resources/strings.po | 2 +-
@@ -4192,10 +4190,10 @@ index 1404fb3..9bced7e 100644
CCriticalSection m_sharedSection;
MMAL_COMPONENT_T *m_vout;
-From 08d327c3400b158eae3395ca17335ea53d7127c2 Mon Sep 17 00:00:00 2001
+From 7faf2fc744fe86942e0ddf7546fde97a5c54b0e2 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 24 Apr 2015 13:49:51 +0100
-Subject: [PATCH 49/87] [dvdplayer] Add back required include
+Subject: [PATCH 49/97] [dvdplayer] Add back required include
---
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 1 +
@@ -4214,10 +4212,10 @@ index 03c876d..c1ef9d4 100644
#include "guilib/GraphicContext.h"
#include
-From 5c54e70d72c67d2bf1fdb6bbc9ae94ea0a2e26bf Mon Sep 17 00:00:00 2001
+From 66a98c2f79252c51a6817321a62499f76201ea6a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 5 May 2015 23:58:06 +0100
-Subject: [PATCH 50/87] [screensaver] Leave GUI contents available for
+Subject: [PATCH 50/97] [screensaver] Leave GUI contents available for
screensaver
---
@@ -4225,10 +4223,10 @@ Subject: [PATCH 50/87] [screensaver] Leave GUI contents available for
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/xbmc/guilib/GUIWindowManager.cpp b/xbmc/guilib/GUIWindowManager.cpp
-index 6030c4c..ccc2922 100644
+index aa6713d..590fcec 100644
--- a/xbmc/guilib/GUIWindowManager.cpp
+++ b/xbmc/guilib/GUIWindowManager.cpp
-@@ -796,7 +796,16 @@ void CGUIWindowManager::ActivateWindow_Internal(int iWindowID, const vector
Date: Fri, 15 May 2015 14:04:11 +0100
-Subject: [PATCH 52/87] [omxplayer] Make unsupported when ac3transcode is
+Subject: [PATCH 52/97] [omxplayer] Make unsupported when ac3transcode is
enabled
---
@@ -4275,10 +4273,10 @@ index eff47e0..b954276 100644
{
// find video stream
-From 912660eb2e987e8226f5e403545d5e8ea8bdbf9f Mon Sep 17 00:00:00 2001
+From f993c5bee35aa2a00a1eb66a56a812042d50f2ac Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 1 Jun 2015 14:14:43 +0100
-Subject: [PATCH 53/87] [omximage] Don't report failed decode of progressive
+Subject: [PATCH 53/97] [omximage] Don't report failed decode of progressive
jpegs as as error
---
@@ -4364,10 +4362,10 @@ index a43a446..890ca88 100644
}
-From 47b92523f966479950a6f836a1a641752fdbc944 Mon Sep 17 00:00:00 2001
+From e31221e9c9b9f7ba3a2b7a36a97dfb9023cffd98 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 25 May 2015 19:01:00 +0100
-Subject: [PATCH 54/87] [rbp] Allow settings option for timestamp preference
+Subject: [PATCH 54/97] [rbp] Allow settings option for timestamp preference
We currently have some files that play better with pts timestamps and some that play better with dts timestamps
Provide a gui setting to allow users to adjust this behaviour until we have a better solution
@@ -4441,10 +4439,10 @@ index 5f6b402..ce23bec 100644
if (pts == DVD_NOPTS_VALUE)
pts = dts;
-From 33cb5e8872ddb645f9a6cc9e7b79e337c6b44bab Mon Sep 17 00:00:00 2001
+From 5ef24b504e192305ec52f121475eb45d9875812c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 6 Jun 2015 18:44:37 +0100
-Subject: [PATCH 55/87] [rbp] Ignore pts value when m_hints.ptsinvalid set
+Subject: [PATCH 55/97] [rbp] Ignore pts value when m_hints.ptsinvalid set
---
xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 +-
@@ -4478,10 +4476,10 @@ index ce23bec..e17fdb8 100644
if (pts == DVD_NOPTS_VALUE)
pts = dts;
-From f9f553c62aeb183dfd3e80b905cffed576673e10 Mon Sep 17 00:00:00 2001
+From d8dc2b53bc190a17cb380efedb015eb5835daa41 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 6 Jun 2015 18:43:57 +0100
-Subject: [PATCH 56/87] ffmpeg: Automatic switch to software decode for GMC
+Subject: [PATCH 56/97] ffmpeg: Automatic switch to software decode for GMC
with more than one warp point
---
@@ -4652,10 +4650,10 @@ index b954276..b5ee4b6 100644
else if ((hint.codec == AV_CODEC_ID_VC1 || hint.codec == AV_CODEC_ID_WMV3) && g_RBP.GetCodecWvc1())
supported = true;
-From 7fef3d4b4ec074297b9122231677e6ca22477ce5 Mon Sep 17 00:00:00 2001
+From 69446dd3aec0506481036fc54fc7296dc5317602 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 22 Jun 2015 21:46:57 +0100
-Subject: [PATCH 57/87] [rbp] Use default resampling setting on Pi2
+Subject: [PATCH 57/97] [rbp] Use default resampling setting on Pi2
---
system/settings/rbp2.xml | 5 +++++
@@ -4678,10 +4676,10 @@ index b29a428..1c8b116 100644
-From c1c3ee24908f125f0de27c538104fb941a97f70c Mon Sep 17 00:00:00 2001
+From 4db67f0d4315740e471cc675515067deddfb249a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 25 Jun 2015 19:43:10 +0100
-Subject: [PATCH 58/87] [rbp] HW mouse pointer
+Subject: [PATCH 58/97] [rbp] HW mouse pointer
Updating the mouse point provokes a complete screen update which can make it feel laggy
and results in high cpu.
@@ -4700,10 +4698,10 @@ Requires recent firmware.
create mode 100644 xbmc/linux/rpi_user_vcsm.h
diff --git a/xbmc/guilib/GUIWindowManager.cpp b/xbmc/guilib/GUIWindowManager.cpp
-index ccc2922..7bcda5c 100644
+index 590fcec..0494bc2 100644
--- a/xbmc/guilib/GUIWindowManager.cpp
+++ b/xbmc/guilib/GUIWindowManager.cpp
-@@ -193,7 +193,9 @@ void CGUIWindowManager::CreateWindows()
+@@ -195,7 +195,9 @@ void CGUIWindowManager::CreateWindows()
Add(new CGUIWindowAddonBrowser);
Add(new CGUIWindowScreensaverDim);
Add(new CGUIWindowDebugInfo);
@@ -5719,10 +5717,10 @@ index f6c8df0..5c2b583 100644
#endif
-From 8c2da945c14bf86a8110cadb8de8d905456bf115 Mon Sep 17 00:00:00 2001
+From 844077e2724b1e547e53f3d4c7f4aa1ca070e8c4 Mon Sep 17 00:00:00 2001
From: Roman Kraevskiy
Date: Fri, 10 Jul 2015 23:36:34 +0300
-Subject: [PATCH 59/87] Mouse wheel support for X11-less linux distros
+Subject: [PATCH 59/97] Mouse wheel support for X11-less linux distros
(openelec)
---
@@ -5930,10 +5928,10 @@ index cf1c5ce..954d823 100644
class CLinuxInputDevices
-From f233a279790d3b1682972724c243c7ea48b56aa2 Mon Sep 17 00:00:00 2001
+From f3d0ceb00e11c67b9caed033a7fadebe8a8e18cd Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 22 Jun 2015 22:06:53 +0100
-Subject: [PATCH 60/87] [rbp] Flip default of prefer pts timestamps
+Subject: [PATCH 60/97] [rbp] Flip default of prefer pts timestamps
---
system/settings/rbp.xml | 2 +-
@@ -5953,17 +5951,17 @@ index 8c6e69d..f9528bc 100644
-From 3265c0a4d65cd46fa7e6e40f2c06587325a8a53f Mon Sep 17 00:00:00 2001
+From b389e5ed3fd4695c46777f4f24feef9c6c5f84df Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 7 May 2015 14:28:37 +0100
-Subject: [PATCH 61/87] build: Add vcsm lib
+Subject: [PATCH 61/97] build: Add vcsm lib
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 084c2cf..98a1b26 100644
+index b752d8d..d04e2fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1059,7 +1059,7 @@ if test "$use_gles" = "yes"; then
@@ -5976,10 +5974,10 @@ index 084c2cf..98a1b26 100644
AC_CHECK_LIB([EGL], [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
-From 711768bf07ef5cea9c30e3543fa82b45017c508a Mon Sep 17 00:00:00 2001
+From c8760f14a8cd56211b2df17e422201b2886c9cc3 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 20 Jul 2015 16:11:37 +0100
-Subject: [PATCH 62/87] [mmalcodec] Populate the framerate of video decoder
+Subject: [PATCH 62/97] [mmalcodec] Populate the framerate of video decoder
When timestamps are unknown, they may be interpolated based on the framerate. Without setting this,
a default of 30fps is used which may be incorrect and cause stutters
@@ -6004,10 +6002,10 @@ index 3e97f1d..5b064d2 100644
error_concealment.hdr.id = MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT;
-From 94b4c1a43ae53a123c5039ac94b47c5598db455b Mon Sep 17 00:00:00 2001
+From 455b16797440674bd4c21797866b0dcc8f81f017 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 22 Jul 2015 22:52:46 +0100
-Subject: [PATCH 63/87] [mmalcodec] Enable interpolate timestamps
+Subject: [PATCH 63/97] [mmalcodec] Enable interpolate timestamps
---
xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 +-
@@ -6027,10 +6025,10 @@ index 5b064d2..a202421 100644
CLog::Log(LOGERROR, "%s::%s Failed to disable interpolate timestamps mode on %s (status=%x %s)", CLASSNAME, __func__, m_dec_input->name, status, mmal_status_to_string(status));
-From d65df791a54f90d38f6c905aef565c05cccb44d3 Mon Sep 17 00:00:00 2001
+From e3f6a243d27324345e4e189137978e9f25a1b06a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 23 Jul 2015 00:55:47 +0100
-Subject: [PATCH 64/87] Revert "[rbp] Flip default of prefer pts timestamps"
+Subject: [PATCH 64/97] Revert "[rbp] Flip default of prefer pts timestamps"
This reverts commit 34100dcdf830a0e957df585108066c48d6c5c38d.
---
@@ -6051,10 +6049,10 @@ index f9528bc..8c6e69d 100644
-From 2b3c2670323ee570e6f10164e2cc3fb78e2f31b9 Mon Sep 17 00:00:00 2001
+From 3d6a8c8ecd2b151b41c5b472942577088d8217ac Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 23 Jul 2015 00:56:56 +0100
-Subject: [PATCH 65/87] Revert "[rbp] Allow settings option for timestamp
+Subject: [PATCH 65/97] Revert "[rbp] Allow settings option for timestamp
preference"
This reverts commit c0eef926dd376cbf8a7857b2848e118ea3689b98.
@@ -6128,10 +6126,10 @@ index e17fdb8..f06ee9c 100644
if (pts == DVD_NOPTS_VALUE)
pts = dts;
-From b8058086f55b522b82ba15ad4d9f30bd8c1cd458 Mon Sep 17 00:00:00 2001
+From 25864f89fdeb1a6f2e9c50946c761390b7d6cb5d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 23 Jul 2015 15:52:39 +0100
-Subject: [PATCH 66/87] [omxhelper] Ignore embedded coverart image when looking
+Subject: [PATCH 66/97] [omxhelper] Ignore embedded coverart image when looking
for supported video streams
---
@@ -6152,10 +6150,10 @@ index b5ee4b6..59479fe 100644
CDVDStreamInfo hint(*stream, true);
-From 142b98ac1813dc78695f763f51c1516f0cfe5d2e Mon Sep 17 00:00:00 2001
+From 46b5399fce0d8b69aac995fa4915ec9739096801 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 24 Jul 2015 18:39:25 +0100
-Subject: [PATCH 68/87] [mmalcodec] Don't set initial unknown timestamps to
+Subject: [PATCH 68/97] [mmalcodec] Don't set initial unknown timestamps to
zero
This used to be done to keep the firmware happy, but is no longer required and messes with timestamp statistics
@@ -6224,10 +6222,10 @@ index bde8c06..42d6a7b 100644
int m_speed;
bool m_preroll;
-From 9e5e289b1384d78772920dbeffcee577d8aeb99e Mon Sep 17 00:00:00 2001
+From 2a30906ff53ef44c7e44eb135952f6ce15a7cca1 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 24 Jul 2015 22:53:21 +0100
-Subject: [PATCH 69/87] [mmalcodec] Tidy up setting of timestamp flags
+Subject: [PATCH 69/97] [mmalcodec] Tidy up setting of timestamp flags
---
xbmc/cores/omxplayer/OMXVideo.cpp | 27 ++++++++++++++-------------
@@ -6281,10 +6279,10 @@ index 832a9c9..1a08aa9 100644
memcpy(omx_buffer->pBuffer, demuxer_content, omx_buffer->nFilledLen);
-From 4858d812237020f71205a6ab1e0af891099f3167 Mon Sep 17 00:00:00 2001
+From 498fb5c8efa41e687a70ca9139cdb54338cd50dd Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 25 Jul 2015 15:32:35 +0100
-Subject: [PATCH 70/87] [rbp] Only send changes in hw cursor state
+Subject: [PATCH 70/97] [rbp] Only send changes in hw cursor state
---
xbmc/linux/RBP.cpp | 9 ++++++++-
@@ -6335,10 +6333,10 @@ index f233a5e..be0cafc 100644
void set_cursor(const void *pixels, int width, int height, int hotspot_x, int hotspot_y);
void update_cursor(int x, int y, bool enabled);
-From 68935db0771fe14373c061420ffbbca5596a3a74 Mon Sep 17 00:00:00 2001
+From 7d8330b84f83954720c050f94144aa65e14c7cd5 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 28 Jul 2015 00:08:58 +0100
-Subject: [PATCH 71/87] [mmalcodec] Use both dts and pts for determining amount
+Subject: [PATCH 71/97] [mmalcodec] Use both dts and pts for determining amount
of queued data
---
@@ -6401,10 +6399,10 @@ index 42d6a7b..f8f5209 100644
int m_speed;
bool m_preroll;
-From ddd17d3dfb6c4b2043b024ff1ee33bc6b9a3bcf0 Mon Sep 17 00:00:00 2001
+From 03afdcd286a07d78a16bf0c7423deb46e980313f Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 28 Jul 2015 17:47:33 +0100
-Subject: [PATCH 72/87] [rbp] Refactor the vsync handle to support multiple
+Subject: [PATCH 72/97] [rbp] Refactor the vsync handle to support multiple
callers
---
@@ -6545,10 +6543,10 @@ index be0cafc..0572b47 100644
CCriticalSection m_critSection;
-From 6496fa447a357d146816badb32a4510be40fcfd3 Mon Sep 17 00:00:00 2001
+From db71a4dee9114a8af10d12fba56ff44b32dd5798 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 14:06:17 +0100
-Subject: [PATCH 73/87] [mmalrenderer] Wait for vsync before submitting to mmal
+Subject: [PATCH 73/97] [mmalrenderer] Wait for vsync before submitting to mmal
when display sync is disabled
This avoids an issue where video occasionally goes stuttery after a seek, until the next pause/play or seek.
@@ -6635,10 +6633,10 @@ index 9bced7e..ec279ed 100644
+ void SubmitFrame(MMAL_BUFFER_HEADER_T *buffer);
};
-From ad9373bf960c6c7c6e5cc00c59c9dfe856a7e07f Mon Sep 17 00:00:00 2001
+From 8507e6407c1a5352ffe3641b568a95fd9593ff18 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 15:07:22 +0100
-Subject: [PATCH 74/87] [omxplayer] Support per refresh rate display latency
+Subject: [PATCH 74/97] [omxplayer] Support per refresh rate display latency
settings
---
@@ -6663,10 +6661,10 @@ index f06ee9c..4ad66a8 100644
m_omxVideo.Decode(pPacket->pData, pPacket->iSize, dts, m_hints.ptsinvalid ? DVD_NOPTS_VALUE : pts);
-From 3da5401ecbe5206fcaafaf44fa6a2b6e6ee01700 Mon Sep 17 00:00:00 2001
+From d00949b532eac144ac6c0f041420463ecdb3ced5 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 15:46:18 +0100
-Subject: [PATCH 75/87] squash: release gfx lock when blocking
+Subject: [PATCH 75/97] squash: release gfx lock when blocking
---
xbmc/cores/VideoRenderers/MMALRenderer.cpp | 1 +
@@ -6685,10 +6683,10 @@ index 2e2bc83..c80a8a6 100644
#if defined(MMAL_DEBUG_VERBOSE)
CLog::Log(LOGDEBUG, "%s::%s - done vsync:%d", CLASSNAME, __func__, m_vsyncCount);
-From d0c1c12d6dfd9b3294fbaffcb22f2a63ea83c059 Mon Sep 17 00:00:00 2001
+From 4458af8dfc1b19bf21d91a7ec1b0ea6ffad9f051 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 17:34:11 +0100
-Subject: [PATCH 76/87] [rbp] Leave 3D framepacking output disabled by default
+Subject: [PATCH 76/97] [rbp] Leave 3D framepacking output disabled by default
---
system/settings/rbp.xml | 2 +-
@@ -6708,10 +6706,10 @@ index b27d23f..bf3b05f 100644
-From 1bc742744c2910add974ae145b4d72a8133f45ea Mon Sep 17 00:00:00 2001
+From 80a7665f661a10053dfa6d3c7f69e0aabbdcca4a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 17:26:30 +0100
-Subject: [PATCH 77/87] [omxplayer] Allow automatic switching back to omxplayer
+Subject: [PATCH 77/97] [omxplayer] Allow automatic switching back to omxplayer
after it has been disabled
Omxplayer gets disabled when it is unsuitable (e.g. software decoder required, or ALSA audio or AC3 transcode).
@@ -6759,10 +6757,10 @@ index 59479fe..014eaf1 100644
if (!CSettings::Get().GetBool("videoplayer.usemmal"))
return false;
-From 32d171107d2184315f18e8eb7b23a78d218f2723 Mon Sep 17 00:00:00 2001
+From d437937539f8b750e096585e3364287b856a4061 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 21:05:41 +0100
-Subject: [PATCH 78/87] [omxplayer] Set audio properties for passthrough
+Subject: [PATCH 78/97] [omxplayer] Set audio properties for passthrough
We weren't setting the stream_channels property for passthrough for omxplayer (we do with Pi Sink)
That means we were using 2 in number of channels of the AudioInfoFrame packet, rather then 0
@@ -6785,10 +6783,10 @@ index 1911189..4072f7d 100644
m_SampleRate = m_format.m_sampleRate;
m_BitsPerSample = CAEUtil::DataFormatToBits(m_format.m_dataFormat);
-From d0279d2a4dade7122fa5a82b8a5c78faa95c35cb Mon Sep 17 00:00:00 2001
+From 81cdc97695125f7992f1bf1613d24b1145aa4b9a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 31 Jul 2015 16:38:06 +0100
-Subject: [PATCH 79/87] squash: mmal: increase queue limit to 1 second to avoid
+Subject: [PATCH 79/97] squash: mmal: increase queue limit to 1 second to avoid
stalls
---
@@ -6809,10 +6807,10 @@ index 6cf4023..7fea172 100644
if (g_advancedSettings.CanLogComponent(LOGVIDEO))
CLog::Log(LOGDEBUG, "%s::%s - got space for output: demux_queue(%d) space(%d) queued(%.2f)", CLASSNAME, __func__, m_demux_queue_length, mmal_queue_length(m_dec_input_pool->queue) * m_dec_input->buffer_size, queued*1e-6);
-From c46855572563da98e026cb088a98ca70e7fd06fb Mon Sep 17 00:00:00 2001
+From 47f8bebb0cdc5cfc8dfc33c5c369fee4df1094e0 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:25:08 +0100
-Subject: [PATCH 80/87] Revert "squash: release gfx lock when blocking"
+Subject: [PATCH 80/97] Revert "squash: release gfx lock when blocking"
This reverts commit f10f0af15d0b57d148f5b3556fd9f94bb2f44509.
---
@@ -6832,10 +6830,10 @@ index c80a8a6..2e2bc83 100644
#if defined(MMAL_DEBUG_VERBOSE)
CLog::Log(LOGDEBUG, "%s::%s - done vsync:%d", CLASSNAME, __func__, m_vsyncCount);
-From 6b04f338107be6c497f6b0632bfd77cf4b44eb93 Mon Sep 17 00:00:00 2001
+From dc66ac9b33e196322a19b91d6a29274cfceabceb Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:25:21 +0100
-Subject: [PATCH 81/87] Revert "[mmalrenderer] Wait for vsync before submitting
+Subject: [PATCH 81/97] Revert "[mmalrenderer] Wait for vsync before submitting
to mmal when display sync is disabled"
This reverts commit f1a4416194f75f75e2145ec3fe64aee1177d3ccc.
@@ -6918,10 +6916,10 @@ index ec279ed..9bced7e 100644
- void SubmitFrame(MMAL_BUFFER_HEADER_T *buffer);
};
-From 58caaea7ca2dd3fc49aa9a1eb0ddbb59b5a8d047 Mon Sep 17 00:00:00 2001
+From 5c9a4ed55499d4e9abe7f1e48928abe170478a55 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:25:30 +0100
-Subject: [PATCH 82/87] Revert "[rbp] Refactor the vsync handle to support
+Subject: [PATCH 82/97] Revert "[rbp] Refactor the vsync handle to support
multiple callers"
This reverts commit 68bd91282359a9da4645af4eeead7b2842f835eb.
@@ -7063,10 +7061,10 @@ index 0572b47..be0cafc 100644
CCriticalSection m_critSection;
-From af0aa61f6d78364f9b65c413b87d2e09953aa449 Mon Sep 17 00:00:00 2001
+From 44d831513b0336d335d35dc36fea6b750ef772f0 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:23:05 +0100
-Subject: [PATCH 83/87] [rbp] Make sync playback to display the default option
+Subject: [PATCH 83/97] [rbp] Make sync playback to display the default option
---
system/settings/rbp.xml | 7 +++++++
@@ -7091,10 +7089,10 @@ index bf3b05f..0743176 100644
false
-From 7470bc8ba9710bd15e180d96ee72ee58a545c766 Mon Sep 17 00:00:00 2001
+From dddb1219bda8d94e470b2155016f4523b748bf6d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 31 Jul 2015 18:39:31 +0100
-Subject: [PATCH 84/87] [mmalcodec] Tidy up debug logging for decode
+Subject: [PATCH 84/97] [mmalcodec] Tidy up debug logging for decode
---
xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 16 ++++------------
@@ -7143,10 +7141,10 @@ index 7fea172..756b845 100644
}
-From 4848cab3632652bfaa89f0e822a1b224015f2427 Mon Sep 17 00:00:00 2001
+From 7d53fae11832cab78fa115401d889d782ba03515 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 13:25:32 +0100
-Subject: [PATCH 85/87] [rbp] Don't enable DTS-HD by default on Pi2
+Subject: [PATCH 85/97] [rbp] Don't enable DTS-HD by default on Pi2
Reports of no audio with omxplayer and this enabled
that are not yet understood
@@ -7171,10 +7169,10 @@ index 1c8b116..52778ecd 100644
-From 4a133a4a6c64f9c4811f10e8cecd4036080d15b8 Mon Sep 17 00:00:00 2001
+From 61838ea87734c65f78b2b5c0d2daf9368549e72d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 7 Aug 2015 18:09:09 +0100
-Subject: [PATCH 86/87] Revert "[rbp] Don't enable DTS-HD by default on Pi2"
+Subject: [PATCH 86/97] Revert "[rbp] Don't enable DTS-HD by default on Pi2"
This reverts commit 8166e8990b8cf599cc4eb1641c58fad1f1f0821f.
---
@@ -7197,3 +7195,802 @@ index 52778ecd..1c8b116 100644
+
+From 369453f1b7a2f525bf6c0a37d403464dea75eaae Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Fri, 14 Aug 2015 17:46:11 +0100
+Subject: [PATCH 88/97] [mmalrenderer] Add reference counting to sw decode
+ buffer and improve logging messages
+
+---
+ xbmc/cores/VideoRenderers/MMALRenderer.cpp | 162 +++++++++++++++++++++++------
+ xbmc/cores/VideoRenderers/MMALRenderer.h | 16 ++-
+ 2 files changed, 145 insertions(+), 33 deletions(-)
+
+diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+index fb92079..6e97c1c 100644
+--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp
++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+@@ -19,6 +19,7 @@
+ */
+
+ #include "Util.h"
++#include "threads/Atomics.h"
+ #include "MMALRenderer.h"
+ #include "cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h"
+ #include "filesystem/File.h"
+@@ -39,6 +40,44 @@
+ #define MMAL_DEBUG_VERBOSE
+ #endif
+
++
++CYUVVideoBuffer::CYUVVideoBuffer()
++{
++ m_refs = 0;
++ mmal_buffer = 0;
++}
++
++CYUVVideoBuffer::~CYUVVideoBuffer()
++{
++ m_refs = 0;
++ mmal_buffer = 0;
++}
++
++CYUVVideoBuffer *CYUVVideoBuffer::Acquire()
++{
++ long count = AtomicIncrement(&m_refs);
++#ifdef MMAL_DEBUG_VERBOSE
++ CLog::Log(LOGDEBUG, "%s::%s omvb:%p mmal:%p ref:%ld", CLASSNAME, __func__, this, mmal_buffer, count);
++#endif
++ (void)count;
++ return this;
++}
++
++long CYUVVideoBuffer::Release()
++{
++ long count = AtomicDecrement(&m_refs);
++#ifdef MMAL_DEBUG_VERBOSE
++ CLog::Log(LOGDEBUG, "%s::%s omvb:%p mmal:%p ref:%ld", CLASSNAME, __func__, this, mmal_buffer, count);
++#endif
++ if (count == 0)
++ {
++ mmal_buffer_header_release(mmal_buffer);
++ delete this;
++ }
++ else assert(count > 0);
++ return count;
++}
++
+ CRenderInfo CMMALRenderer::GetRenderInfo()
+ {
+ CSingleLock lock(m_sharedSection);
+@@ -67,21 +106,26 @@ static void vout_control_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer
+
+ void CMMALRenderer::vout_input_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
+ {
+- #if defined(MMAL_DEBUG_VERBOSE)
+- CMMALVideoBuffer *omvb = (CMMALVideoBuffer *)buffer->user_data;
+- CLog::Log(LOGDEBUG, "%s::%s port:%p buffer %p (%p), len %d cmd:%x f:%x", CLASSNAME, __func__, port, buffer, omvb, buffer->length, buffer->cmd, buffer->flags);
+- #endif
+-
+ assert(!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_TRANSMISSION_FAILED));
+ buffer->flags &= ~MMAL_BUFFER_HEADER_FLAG_USER2;
+ if (m_format == RENDER_FMT_MMAL)
+ {
+ CMMALVideoBuffer *omvb = (CMMALVideoBuffer *)buffer->user_data;
++ assert(buffer == omvb->mmal_buffer);
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s port:%p omvb:%p mmal:%p len:%d cmd:%x flags:%x flight:%d", CLASSNAME, __func__, port, omvb, omvb->mmal_buffer, buffer->length, buffer->cmd, buffer->flags, m_inflight);
++#endif
+ omvb->Release();
+ }
+ else if (m_format == RENDER_FMT_YUV420P)
+ {
+- mmal_buffer_header_release(buffer);
++ CYUVVideoBuffer *omvb = (CYUVVideoBuffer *)buffer->user_data;
++ assert(buffer == omvb->mmal_buffer);
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s port:%p omvb:%p mmal:%p len:%d cmd:%x flags:%x flight:%d", CLASSNAME, __func__, port, omvb, omvb->mmal_buffer, buffer->length, buffer->cmd, buffer->flags, m_inflight);
++#endif
++ m_inflight--;
++ omvb->Release();
+ }
+ else assert(0);
+ }
+@@ -208,6 +252,7 @@ CMMALRenderer::CMMALRenderer()
+ m_bMMALConfigured = false;
+ m_iYV12RenderBuffer = 0;
+ m_sharpness = -2.0f;
++ m_inflight = 0;
+ }
+
+ CMMALRenderer::~CMMALRenderer()
+@@ -262,16 +307,19 @@ bool CMMALRenderer::Configure(unsigned int width, unsigned int height, unsigned
+
+ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ {
++ if (!image || source < 0)
++ {
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %p %d %d", CLASSNAME, __func__, image, source, readonly);
++ CLog::Log(LOGDEBUG, "%s::%s - invalid: image:%p source:%d ro:%d flight:%d", CLASSNAME, __func__, image, source, readonly, m_inflight);
+ #endif
+- if (!image) return -1;
+-
+- if( source < 0)
+ return -1;
++ }
+
+ if (m_format == RENDER_FMT_MMAL)
+ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - MMAL: image:%p source:%d ro:%d flight:%d", CLASSNAME, __func__, image, source, readonly, m_inflight);
++#endif
+ }
+ else if (m_format == RENDER_FMT_YUV420P)
+ {
+@@ -285,6 +333,7 @@ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ return -1;
+ }
+
++ m_inflight++;
+ mmal_buffer_header_reset(buffer);
+
+ buffer->length = 3 * pitch * aligned_height >> 1;
+@@ -307,10 +356,16 @@ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ image->plane[1] = image->plane[0] + image->planesize[0];
+ image->plane[2] = image->plane[1] + image->planesize[1];
+
+- CLog::Log(LOGDEBUG, "%s::%s - %p %d", CLASSNAME, __func__, buffer, source);
+ YUVBUFFER &buf = m_buffers[source];
+ memset(&buf, 0, sizeof buf);
+- buf.mmal_buffer = buffer;
++ buf.YUVBuffer = new CYUVVideoBuffer;
++ if (!buf.YUVBuffer)
++ return -1;
++ buf.YUVBuffer->mmal_buffer = buffer;
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - YUV: image:%p source:%d ro:%d omvb:%p mmal:%p flight:%d", CLASSNAME, __func__, image, source, readonly, buf.YUVBuffer, buffer, m_inflight);
++#endif
++ buf.YUVBuffer->Acquire();
+ }
+ else assert(0);
+
+@@ -320,21 +375,44 @@ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ void CMMALRenderer::ReleaseBuffer(int idx)
+ {
+ CSingleLock lock(m_sharedSection);
+- if (!m_bMMALConfigured || m_format == RENDER_FMT_BYPASS)
++ if (!m_bMMALConfigured)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - not configured: source:%d", CLASSNAME, __func__, idx);
++#endif
++ return;
++ }
++ if (m_format == RENDER_FMT_BYPASS)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - bypass: source:%d", CLASSNAME, __func__, idx);
++#endif
+ return;
++ }
+
++ YUVBUFFER *buffer = &m_buffers[idx];
++ if (m_format == RENDER_FMT_MMAL)
++ {
++ CMMALVideoBuffer *omvb = buffer->MMALBuffer;
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - MMAL: source:%d omvb:%p mmal:%p", CLASSNAME, __func__, idx, omvb, omvb ? omvb->mmal_buffer:NULL);
++#endif
++ SAFE_RELEASE(buffer->MMALBuffer);
++ }
++ else if (m_format == RENDER_FMT_YUV420P)
++ {
++ CYUVVideoBuffer *omvb = buffer->YUVBuffer;
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d (%p)", CLASSNAME, __func__, idx, m_buffers[idx].MMALBuffer);
++ CLog::Log(LOGDEBUG, "%s::%s - YUV: source:%d omvb:%p mmal:%p flight:%d", CLASSNAME, __func__, idx, omvb, omvb ? omvb->mmal_buffer:NULL, m_inflight);
+ #endif
+- YUVBUFFER &buf = m_buffers[idx];
+- SAFE_RELEASE(buf.MMALBuffer);
++ if (omvb && omvb->mmal_buffer)
++ SAFE_RELEASE(buffer->YUVBuffer);
++ }
++ else assert(0);
+ }
+
+ void CMMALRenderer::ReleaseImage(int source, bool preserve)
+ {
+-#if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d %d (%p)", CLASSNAME, __func__, source, preserve, m_buffers[source].MMALBuffer);
+-#endif
+ }
+
+ void CMMALRenderer::Reset()
+@@ -361,11 +439,14 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
+ {
+ CSingleLock lock(m_sharedSection);
+ int source = m_iYV12RenderBuffer;
++
++ if (!m_bConfigured)
++ {
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d %x %d %d", CLASSNAME, __func__, clear, flags, alpha, source);
++ CLog::Log(LOGDEBUG, "%s::%s - not configured: clear:%d flags:%x alpha:%d source:%d", CLASSNAME, __func__, clear, flags, alpha, source);
+ #endif
+-
+- if (!m_bConfigured) return;
++ return;
++ }
+
+ ManageDisplay();
+
+@@ -384,18 +465,22 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
+ }
+
+ if (m_format == RENDER_FMT_BYPASS)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - bypass: clear:%d flags:%x alpha:%d source:%d", CLASSNAME, __func__, clear, flags, alpha, source);
++#endif
+ return;
+-
++ }
+ SetVideoRect(m_sourceRect, m_destRect);
+
+ YUVBUFFER *buffer = &m_buffers[source];
+ if (m_format == RENDER_FMT_MMAL)
+ {
+ CMMALVideoBuffer *omvb = buffer->MMALBuffer;
+- if (omvb)
++ if (omvb && omvb->mmal_buffer)
+ {
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s %p (%p) f:%x", CLASSNAME, __func__, omvb, omvb->mmal_buffer, omvb->mmal_buffer->flags);
++ CLog::Log(LOGDEBUG, "%s::%s - MMAL: clear:%d flags:%x alpha:%d source:%d omvb:%p mmal:%p mflags:%x", CLASSNAME, __func__, clear, flags, alpha, source, omvb, omvb->mmal_buffer, omvb->mmal_buffer->flags);
+ #endif
+ // we only want to upload frames once
+ if (omvb->mmal_buffer->flags & MMAL_BUFFER_HEADER_FLAG_USER1)
+@@ -409,18 +494,23 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
+ }
+ else if (m_format == RENDER_FMT_YUV420P)
+ {
+- if (buffer->mmal_buffer)
++ CYUVVideoBuffer *omvb = buffer->YUVBuffer;
++ if (omvb && omvb->mmal_buffer)
+ {
+- CLog::Log(LOGDEBUG, "%s::%s - %p %d f:%x", CLASSNAME, __func__, buffer->mmal_buffer, source, buffer->mmal_buffer->flags);
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - YUV: clear:%d flags:%x alpha:%d source:%d omvb:%p mmal:%p mflags:%x", CLASSNAME, __func__, clear, flags, alpha, source, omvb, omvb->mmal_buffer, omvb->mmal_buffer->flags);
++#endif
+ // we only want to upload frames once
+- if (buffer->mmal_buffer->flags & MMAL_BUFFER_HEADER_FLAG_USER1)
++ if (omvb->mmal_buffer->flags & MMAL_BUFFER_HEADER_FLAG_USER1)
+ return;
+ // sanity check it is not on display
+- buffer->mmal_buffer->flags |= MMAL_BUFFER_HEADER_FLAG_USER1 | MMAL_BUFFER_HEADER_FLAG_USER2;
+- mmal_port_send_buffer(m_vout_input, buffer->mmal_buffer);
++ omvb->Acquire();
++ omvb->mmal_buffer->flags |= MMAL_BUFFER_HEADER_FLAG_USER1 | MMAL_BUFFER_HEADER_FLAG_USER2;
++ omvb->mmal_buffer->user_data = omvb;
++ mmal_port_send_buffer(m_vout_input, omvb->mmal_buffer);
+ }
+ else
+- CLog::Log(LOGDEBUG, "%s::%s - No buffer to update", CLASSNAME, __func__);
++ CLog::Log(LOGDEBUG, "%s::%s - No buffer to update: clear:%d flags:%x alpha:%d source:%d", CLASSNAME, __func__, clear, flags, alpha, source);
+ }
+ else assert(0);
+ }
+@@ -429,10 +519,15 @@ void CMMALRenderer::FlipPage(int source)
+ {
+ CSingleLock lock(m_sharedSection);
+ if (!m_bConfigured || m_format == RENDER_FMT_BYPASS)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - not configured: source:%d", CLASSNAME, __func__, source);
++#endif
+ return;
++ }
+
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d", CLASSNAME, __func__, source);
++ CLog::Log(LOGDEBUG, "%s::%s - source:%d", CLASSNAME, __func__, source);
+ #endif
+
+ m_iYV12RenderBuffer = source;
+@@ -466,6 +561,9 @@ unsigned int CMMALRenderer::PreInit()
+
+ void CMMALRenderer::ReleaseBuffers()
+ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s", CLASSNAME, __func__);
++#endif
+ for (int i=0; i
+Date: Sat, 15 Aug 2015 14:27:10 +0100
+Subject: [PATCH 89/97] [mmalrenderer] Use half rate deinterlace when playing
+ video in background
+
+---
+ xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+index 756b845..56a9121 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+@@ -828,9 +828,17 @@ int CMMALVideo::Decode(uint8_t* pData, int iSize, double dts, double pts)
+ {
+ EDEINTERLACEMODE deinterlace_request = CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode;
+ EINTERLACEMETHOD interlace_method = g_renderManager.AutoInterlaceMethod(CMediaSettings::Get().GetCurrentVideoSettings().m_InterlaceMethod);
+-
+ bool deinterlace = m_interlace_mode != MMAL_InterlaceProgressive;
+
++ // we don't keep up when running at 60fps in the background so switch to half rate
++ if (!g_graphicsContext.IsFullScreenVideo())
++ {
++ if (interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED)
++ interlace_method = VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF;
++ if (interlace_method == VS_INTERLACEMETHOD_MMAL_BOB)
++ interlace_method = VS_INTERLACEMETHOD_MMAL_BOB_HALF;
++ }
++
+ if (m_hints.stills || deinterlace_request == VS_DEINTERLACEMODE_OFF || interlace_method == VS_INTERLACEMETHOD_NONE)
+ deinterlace = false;
+ else if (deinterlace_request == VS_DEINTERLACEMODE_FORCE)
+
+From ba9947c5c466c1ec93388c3f87d07ca4e2a21bb2 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Thu, 13 Aug 2015 16:30:31 +0100
+Subject: [PATCH 90/97] squash: rbp: Remove HW mouse pointer when mouse is
+ disabled in GUI
+
+---
+ xbmc/windowing/WinEventsLinux.cpp | 33 ++++++++++++++++++++++++---------
+ 1 file changed, 24 insertions(+), 9 deletions(-)
+
+diff --git a/xbmc/windowing/WinEventsLinux.cpp b/xbmc/windowing/WinEventsLinux.cpp
+index bde7649..89aca2b 100644
+--- a/xbmc/windowing/WinEventsLinux.cpp
++++ b/xbmc/windowing/WinEventsLinux.cpp
+@@ -180,28 +180,40 @@ bool CWinEventsLinux::MessagePump()
+ bool ret = false;
+ XBMC_Event event = {0};
+ #ifdef TARGET_RASPBERRY_PI
++ bool active = CInputManager::Get().IsMouseActive();
+ int64_t Now = CurrentHostCounter();
+- int state = CInputManager::Get().GetMouseState() - 1;
+- if (m_mouse_state != state)
++ if (!active)
+ {
+- //printf("%s: %d->%d\n", __func__, m_mouse_state, state);
+- if (state >= 0 && state < (int)(sizeof m_cursors/sizeof *m_cursors) && m_cursors[state].pixels)
++ if (m_mouse_state != -1)
+ {
+- g_RBP.set_cursor(m_cursors[state].pixels, m_cursors[state].width, m_cursors[state].height, 0, 0);
++ g_RBP.update_cursor(0, 0, 0);
++ m_mouse_state = -1;
++ }
++ }
++ else
++ {
++ int state = CInputManager::Get().GetMouseState() - 1;
++ if (m_mouse_state != state)
++ {
++ //printf("%s: %d->%d\n", __func__, m_mouse_state, state);
++ if (state >= 0 && state < (int)(sizeof m_cursors/sizeof *m_cursors) && m_cursors[state].pixels)
++ {
++ g_RBP.set_cursor(m_cursors[state].pixels, m_cursors[state].width, m_cursors[state].height, 0, 0);
++ }
++ m_mouse_state = state;
+ }
+- m_mouse_state = state;
+ }
+ #endif
+ while (1)
+ {
+ event = m_devices.ReadEvent();
+ #ifdef TARGET_RASPBERRY_PI
+- if (event.type == XBMC_MOUSEMOTION || event.type == XBMC_MOUSEBUTTONDOWN || event.type == XBMC_MOUSEBUTTONUP)
++ if (active && (event.type == XBMC_MOUSEMOTION || event.type == XBMC_MOUSEBUTTONDOWN || event.type == XBMC_MOUSEBUTTONUP))
+ {
+ if (event.type == XBMC_MOUSEMOTION)
+ g_RBP.update_cursor(event.motion.x, event.motion.y, 1);
+ m_last_mouse_move_time = Now;
+- //printf("%s: %d,%d %d %d,%d (%d,%d)\n", __func__, event.motion.type, event.motion.which, event.motion.state, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel);
++ //printf("%s: %d,%d %d %d,%d (%d,%d) act:%d\n", __func__, event.motion.type, event.motion.which, event.motion.state, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel, CInputManager::Get().IsMouseActive());
+ }
+ #endif
+ if (event.type != XBMC_NOEVENT)
+@@ -215,8 +227,11 @@ bool CWinEventsLinux::MessagePump()
+ }
+
+ #ifdef TARGET_RASPBERRY_PI
+- if (Now - m_last_mouse_move_time > 5 * 1000000000LL)
++ if (active && Now - m_last_mouse_move_time > 5 * 1000000000LL)
++ {
+ g_RBP.update_cursor(0, 0, 0);
++ m_mouse_state = -1;
++ }
+ #endif
+ return ret;
+ }
+
+From 4b94bd782b8e7f1cdec7c1d50e85ef545f48fc06 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sun, 9 Aug 2015 18:01:34 +0100
+Subject: [PATCH 91/97] [rbp] Add ntsc version of 48Hz mode
+
+---
+ xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
+index 25a97ad..25475bf 100644
+--- a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
++++ b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
+@@ -683,7 +683,7 @@ void CEGLNativeTypeRaspberryPI::GetSupportedModes(HDMI_RES_GROUP_T group, std::v
+ CLog::Log(LOGDEBUG, "EGL mode %d: %s (%.2f) %s%s:%x\n", i, res.strMode.c_str(), res.fPixelRatio,
+ tv->native ? "N" : "", tv->scan_mode ? "I" : "", tv->code);
+
+- if (tv->frame_rate == 24 || tv->frame_rate == 30 || tv->frame_rate == 60)
++ if (tv->frame_rate == 24 || tv->frame_rate == 30 || tv->frame_rate == 48 || tv->frame_rate == 60 || tv->frame_rate == 72)
+ {
+ RESOLUTION_INFO res2 = res;
+ res2.fRefreshRate = (float)tv->frame_rate * (1000.0f/1001.0f);
+
+From f84267b07136093e2363057ba6d1372142182a80 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sat, 22 Aug 2015 23:06:56 +0100
+Subject: [PATCH 92/97] [dvdmessage] Increase timeout on
+ CDVDMsgGeneralSynchronize
+
+---
+ xbmc/cores/dvdplayer/DVDMessage.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xbmc/cores/dvdplayer/DVDMessage.cpp b/xbmc/cores/dvdplayer/DVDMessage.cpp
+index ae745c6..73fff98 100644
+--- a/xbmc/cores/dvdplayer/DVDMessage.cpp
++++ b/xbmc/cores/dvdplayer/DVDMessage.cpp
+@@ -91,7 +91,7 @@ bool CDVDMsgGeneralSynchronize::Wait(unsigned int milliseconds, unsigned int sou
+
+ void CDVDMsgGeneralSynchronize::Wait(volatile bool *abort, unsigned int source)
+ {
+- while(!Wait(100, source))
++ while(!Wait(200, source))
+ {
+ if(abort && *abort)
+ return;
+
+From d04c4d341ca27d56a762a6303657561280bc2e35 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sat, 22 Aug 2015 23:19:15 +0100
+Subject: [PATCH 93/97] [mmalcodec] refector the decoder flags logic to avoid
+ stalls on seek
+
+---
+ xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 47 +++++++++++++---------
+ 1 file changed, 28 insertions(+), 19 deletions(-)
+
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+index 56a9121..557faa2 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+@@ -253,12 +253,20 @@ void CMMALVideo::dec_output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buf
+ {
+ if (buffer->length > 0)
+ {
++ if (buffer->pts != MMAL_TIME_UNKNOWN)
++ m_decoderPts = buffer->pts;
++ else if (buffer->dts != MMAL_TIME_UNKNOWN)
++ m_decoderPts = buffer->dts;
++
+ assert(!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_DECODEONLY));
++ CMMALVideoBuffer *omvb = NULL;
++ if (!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_CORRUPTED));
++ omvb = new CMMALVideoBuffer(this);
++ if (g_advancedSettings.CanLogComponent(LOGVIDEO))
++ CLog::Log(LOGDEBUG, "%s::%s - %p (%p) buffer_size(%u) dts:%.3f pts:%.3f flags:%x:%x",
++ CLASSNAME, __func__, buffer, omvb, buffer->length, buffer->dts*1e-6, buffer->pts*1e-6, buffer->flags, buffer->type->video.flags);
++ if (omvb)
+ {
+- CMMALVideoBuffer *omvb = new CMMALVideoBuffer(this);
+- if (g_advancedSettings.CanLogComponent(LOGVIDEO))
+- CLog::Log(LOGDEBUG, "%s::%s - %p (%p) buffer_size(%u) dts:%.3f pts:%.3f flags:%x:%x",
+- CLASSNAME, __func__, buffer, omvb, buffer->length, buffer->dts*1e-6, buffer->pts*1e-6, buffer->flags, buffer->type->video.flags);
+ omvb->mmal_buffer = buffer;
+ buffer->user_data = (void *)omvb;
+ omvb->width = m_decoded_width;
+@@ -861,33 +869,39 @@ int CMMALVideo::Decode(uint8_t* pData, int iSize, double dts, double pts)
+ if (!demuxer_bytes)
+ break;
+ }
+- int ret = 0;
+ if (pts != DVD_NOPTS_VALUE)
+ m_demuxerPts = pts;
+ else if (dts != DVD_NOPTS_VALUE)
+ m_demuxerPts = dts;
++
++ if (m_demuxerPts != DVD_NOPTS_VALUE && m_decoderPts == DVD_NOPTS_VALUE)
++ m_decoderPts = m_demuxerPts;
++
++ // we've built up quite a lot of data in decoder - try to throttle it
+ double queued = m_decoderPts != DVD_NOPTS_VALUE && m_demuxerPts != DVD_NOPTS_VALUE ? m_demuxerPts - m_decoderPts : 0.0;
+- if (mmal_queue_length(m_dec_input_pool->queue) > 0 && !m_demux_queue_length && queued <= DVD_MSEC_TO_TIME(1000))
+- ret |= VC_BUFFER;
+- else
+- m_preroll = false;
++ bool full = queued > DVD_MSEC_TO_TIME(1000);
++ bool want_buffer = mmal_queue_length(m_dec_input_pool->queue) > 0 && !m_demux_queue_length && !full;
++ int ret = VC_BUFFER;
+
+- if (m_preroll && m_output_ready.size() >= GetAllowedReferences())
++ if (m_preroll && (!want_buffer || m_output_ready.size() >= GetAllowedReferences()))
+ m_preroll = false;
+
+ if (!m_output_ready.empty() && !m_preroll)
+ {
+ ret |= VC_PICTURE;
+ // renderer is low - give priority to returning pictures
+- if (0 && m_codecControlFlags & DVD_CODEC_CTRL_DRAIN)
++ if (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN || !want_buffer || full)
+ ret &= ~VC_BUFFER;
+ }
+- if (!ret)
+- Sleep(10); // otherwise we busy spin
+
+ if (g_advancedSettings.CanLogComponent(LOGVIDEO))
+- CLog::Log(LOGDEBUG, "%s::%s - ret(%x) pics(%d) demux_queue(%d) space(%d) queued(%.2f) preroll(%d) flags(%x)", CLASSNAME, __func__, ret, m_output_ready.size(), m_demux_queue_length, mmal_queue_length(m_dec_input_pool->queue) * m_dec_input->buffer_size, queued*1e-6, m_preroll, m_codecControlFlags);
++ CLog::Log(LOGDEBUG, "%s::%s - ret(%x) pics(%d) demux_queue(%d) space(%d) queued(%.2f) (%.2f:%.2f) preroll(%d) flags(%x) full(%d)", CLASSNAME, __func__, ret, m_output_ready.size(), m_demux_queue_length, mmal_queue_length(m_dec_input_pool->queue) * m_dec_input->buffer_size, queued*1e-6, m_demuxerPts*1e-6, m_decoderPts*1e-6, m_preroll, m_codecControlFlags, full);
+
++ if (full)
++ {
++ lock.Leave();
++ Sleep(queued * 1e-6 * 10.0);
++ }
+ return ret;
+ }
+
+@@ -1046,11 +1060,6 @@ bool CMMALVideo::GetPicture(DVDVideoPicture* pDvdVideoPicture)
+ return false;
+ }
+
+- if (pDvdVideoPicture->pts != DVD_NOPTS_VALUE)
+- m_decoderPts = pDvdVideoPicture->pts;
+- else
+- m_decoderPts = pDvdVideoPicture->dts;
+-
+ return true;
+ }
+
+
+From 188d7b4c301e5c1e632c64710adca7365a92e742 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sun, 23 Aug 2015 18:57:34 +0100
+Subject: [PATCH 94/97] [omxplayer] Flush EOS message from queue to avoid it
+ turning up after a seek
+
+A GENERAL_EOS is queued when demuxer reaches EOF but playback may continue for several seconds.
+It should be possible to seek backwards during this playback time, but the GENERAL_EOS may still be queued after flushing
+and it unwantedly causes stream to stall after the seek. So flush these obsolete messages when flushing data packets
+---
+ xbmc/cores/omxplayer/OMXPlayerAudio.cpp | 1 +
+ xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
+index c2da2d2..1c3b904 100644
+--- a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
++++ b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
+@@ -495,6 +495,7 @@ void OMXPlayerAudio::Flush()
+ {
+ m_flush = true;
+ m_messageQueue.Flush();
++ m_messageQueue.Flush(CDVDMsg::GENERAL_EOF);
+ m_messageQueue.Put( new CDVDMsg(CDVDMsg::GENERAL_FLUSH), 1);
+ }
+
+diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
+index 4ad66a8..276857f 100644
+--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
++++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
+@@ -535,6 +535,7 @@ void OMXPlayerVideo::Flush()
+ {
+ m_flush = true;
+ m_messageQueue.Flush();
++ m_messageQueue.Flush(CDVDMsg::GENERAL_EOF);
+ m_messageQueue.Put(new CDVDMsg(CDVDMsg::GENERAL_FLUSH), 1);
+ }
+
+
+From 1c8e06bda0301646a4fc6ec66beca5103da6f819 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Mon, 13 Jul 2015 19:27:25 +0100
+Subject: [PATCH 95/97] [rbp] Enable QPU based deinterlace and remove
+ resolution limit
+
+---
+ xbmc/cores/VideoRenderers/MMALRenderer.cpp | 2 +-
+ xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 5 ++---
+ xbmc/cores/omxplayer/OMXVideo.cpp | 6 +++---
+ 3 files changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+index 6e97c1c..e278184 100644
+--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp
++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+@@ -681,7 +681,7 @@ bool CMMALRenderer::Supports(ESCALINGMETHOD method)
+
+ EINTERLACEMETHOD CMMALRenderer::AutoInterlaceMethod()
+ {
+- return VS_INTERLACEMETHOD_MMAL_ADVANCED;
++ return m_sourceWidth * m_sourceHeight <= 576 * 720 ? VS_INTERLACEMETHOD_MMAL_ADVANCED : VS_INTERLACEMETHOD_MMAL_BOB;
+ }
+
+ void CMMALRenderer::SetVideoRect(const CRect& InSrcRect, const CRect& InDestRect)
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+index 557faa2..a28a5e3 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+@@ -355,12 +355,11 @@ bool CMMALVideo::CreateDeinterlace(EINTERLACEMETHOD interlace_method)
+ CLog::Log(LOGERROR, "%s::%s Failed to create deinterlace component (status=%x %s)", CLASSNAME, __func__, status, mmal_status_to_string(status));
+ return false;
+ }
+- bool advanced_deinterlace = (interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF) &&
+- m_decoded_width * m_decoded_height <= 576 * 720;
++ bool advanced_deinterlace = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF;
+ bool half_framerate = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF || interlace_method == VS_INTERLACEMETHOD_MMAL_BOB_HALF;
+
+ MMAL_PARAMETER_IMAGEFX_PARAMETERS_T imfx_param = {{MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, sizeof(imfx_param)},
+- advanced_deinterlace ? MMAL_PARAM_IMAGEFX_DEINTERLACE_ADV : MMAL_PARAM_IMAGEFX_DEINTERLACE_FAST, 3, {3, 0, half_framerate }};
++ advanced_deinterlace ? MMAL_PARAM_IMAGEFX_DEINTERLACE_ADV : MMAL_PARAM_IMAGEFX_DEINTERLACE_FAST, 4, {3, 0, half_framerate, 1 }};
+
+ status = mmal_port_parameter_set(m_deint->output[0], &imfx_param.hdr);
+ if (status != MMAL_SUCCESS)
+diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp
+index 1a08aa9..fbb395d 100644
+--- a/xbmc/cores/omxplayer/OMXVideo.cpp
++++ b/xbmc/cores/omxplayer/OMXVideo.cpp
+@@ -244,8 +244,7 @@ bool COMXVideo::PortSettingsChanged()
+ if(m_deinterlace)
+ {
+ EINTERLACEMETHOD interlace_method = g_renderManager.AutoInterlaceMethod(CMediaSettings::Get().GetCurrentVideoSettings().m_InterlaceMethod);
+- bool advanced_deinterlace = (interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF) &&
+- port_image.format.video.nFrameWidth * port_image.format.video.nFrameHeight <= 576 * 720;
++ bool advanced_deinterlace = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF;
+ bool half_framerate = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF || interlace_method == VS_INTERLACEMETHOD_MMAL_BOB_HALF;
+ if (!advanced_deinterlace)
+ {
+@@ -266,10 +265,11 @@ bool COMXVideo::PortSettingsChanged()
+ OMX_INIT_STRUCTURE(image_filter);
+
+ image_filter.nPortIndex = m_omx_image_fx.GetOutputPort();
+- image_filter.nNumParams = 3;
++ image_filter.nNumParams = 4;
+ image_filter.nParams[0] = 3;
+ image_filter.nParams[1] = 0;
+ image_filter.nParams[2] = half_framerate;
++ image_filter.nParams[3] = 1; // qpu
+ if (!advanced_deinterlace)
+ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceFast;
+ else
+
+From f987b46adee7cd8ce0834cf092581cc1dbe5954b Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sun, 16 Aug 2015 15:46:33 +0100
+Subject: [PATCH 96/97] [mmalrenderer] Allow deinterlace with software decode
+
+---
+ xbmc/cores/VideoRenderers/MMALRenderer.cpp | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+index e278184..1eb8936 100644
+--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp
++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+@@ -647,6 +647,13 @@ bool CMMALRenderer::Supports(EDEINTERLACEMODE mode)
+
+ bool CMMALRenderer::Supports(EINTERLACEMETHOD method)
+ {
++ if (m_format == RENDER_FMT_YUV420P)
++ {
++ if (method == VS_INTERLACEMETHOD_DEINTERLACE_HALF)
++ return true;
++ else
++ return false;
++ }
+ if (method == VS_INTERLACEMETHOD_AUTO)
+ return true;
+ if (method == VS_INTERLACEMETHOD_MMAL_ADVANCED)
+@@ -681,6 +688,8 @@ bool CMMALRenderer::Supports(ESCALINGMETHOD method)
+
+ EINTERLACEMETHOD CMMALRenderer::AutoInterlaceMethod()
+ {
++ if (m_format == RENDER_FMT_YUV420P)
++ return VS_INTERLACEMETHOD_DEINTERLACE_HALF;
+ return m_sourceWidth * m_sourceHeight <= 576 * 720 ? VS_INTERLACEMETHOD_MMAL_ADVANCED : VS_INTERLACEMETHOD_MMAL_BOB;
+ }
+
+
+From e14ecaac22733e60969ccb82ce57020f640d3f67 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Mon, 31 Aug 2015 15:41:11 +0100
+Subject: [PATCH 97/97] [peripherals] Move initialisation after language init
+ to fix notifications
+
+Lots of complaints on Isengard are master that CEC generates an empty notification popup on boot.
+The problem is that peripherals are initialised before the language files are loaded so
+g_localizeStrings.Get returns a blank string.
+
+Move the periphal initialisation after the language initialisation to avoid this.
+---
+ xbmc/Application.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
+index 5776389..a2a8691 100644
+--- a/xbmc/Application.cpp
++++ b/xbmc/Application.cpp
+@@ -673,8 +673,6 @@ bool CApplication::Create()
+ return false;
+ }
+
+- g_peripherals.Initialise();
+-
+ // Create the Mouse, Keyboard, Remote, and Joystick devices
+ // Initialize after loading settings to get joystick deadzone setting
+ CInputManager::Get().InitializeInputs();
+@@ -1117,6 +1115,8 @@ bool CApplication::Initialize()
+ if (!LoadLanguage(false))
+ return false;
+
++ g_peripherals.Initialise();
++
+ // Load curl so curl_global_init gets called before any service threads
+ // are started. Unloading will have no effect as curl is never fully unloaded.
+ // To quote man curl_global_init:
diff --git a/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch b/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch
index 0699fba75b..5901e4693b 100644
--- a/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch
+++ b/projects/RPi2/patches/kodi/kodi-001-isengard-rpb-backports.patch
@@ -1,7 +1,7 @@
-From fca20ce71da054984d648316b362c9318dfeab10 Mon Sep 17 00:00:00 2001
+From 27c098f81eec4d6c91e929fb7673640fccd88993 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 7 Apr 2014 18:19:32 +0100
-Subject: [PATCH 01/87] [rbp/omxplayer] When opening a stream don't try to
+Subject: [PATCH 01/97] [rbp/omxplayer] When opening a stream don't try to
update gui so often
---
@@ -25,10 +25,10 @@ index 318ecec..59698f6 100644
g_windowManager.ProcessRenderLoop(false);
if (allowCancel && dialog->IsCanceled())
-From cda1cae0c13be8b8db75d61f64879291a994426c Mon Sep 17 00:00:00 2001
+From ebbadf9ecbe46aff57ab31aa0900c691dacc8789 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 8 Mar 2014 15:36:06 +0000
-Subject: [PATCH 03/87] [hifiberry] Hack: force it to be recognised as IEC958
+Subject: [PATCH 03/97] [hifiberry] Hack: force it to be recognised as IEC958
capable to enable passthrough options
---
@@ -51,10 +51,10 @@ index e22db7a..0120bd5 100644
info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI")
{
-From b8992693e016eed3d5e89ddc437aa4c59b561d13 Mon Sep 17 00:00:00 2001
+From d50f06493551f65a61159b0b3140172ff32c2c93 Mon Sep 17 00:00:00 2001
From: Ben Avison
Date: Thu, 1 May 2014 16:28:39 +0100
-Subject: [PATCH 04/87] Improved file buffering in CArchive
+Subject: [PATCH 04/97] Improved file buffering in CArchive
Even though memcpy is typically inlined by the compiler into byte/word loads
and stores (at least for release builds), the frequency with which 1, 2 and 4
@@ -114,10 +114,10 @@ index 6ed0f8f..8506d95 100644
}
else
-From 396257e8ed99f16e3088a650f47d1356410ae912 Mon Sep 17 00:00:00 2001
+From e677c063cf52652c9ca299f0bbe70652f9fd63eb Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 12 Aug 2014 00:31:36 +0100
-Subject: [PATCH 05/87] [omxcodec] Don't force software codec with dvds
+Subject: [PATCH 05/97] [omxcodec] Don't force software codec with dvds
---
xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 ++
@@ -138,10 +138,10 @@ index 7c84557..87463a7 100644
else if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_PVRMANAGER))
{
-From c44cf37f3ab1c1b836044c503f51609190c6d1cc Mon Sep 17 00:00:00 2001
+From 01b3d88ff0d057cc16039da6e5d25158ce4d80d1 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 10 Aug 2014 16:45:16 +0100
-Subject: [PATCH 06/87] filesystem: Make support of browsing into archives
+Subject: [PATCH 06/97] filesystem: Make support of browsing into archives
optional
The ability to browse, scan and play content in archives can cause problems on low powered/low memory devices.
@@ -224,10 +224,10 @@ index 5af92e7..568a1a8 100644
{ // XBMC Smart playlist - just XML renamed to XSP
// read the name of the playlist in
-From 39ca696d7683f645fab217a4971e8f884f0f4bfc Mon Sep 17 00:00:00 2001
+From 077c929b867702c7d59ce2289d54cec56a4018e7 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 27 Oct 2014 13:06:57 +0000
-Subject: [PATCH 08/87] [rbp] Make cachemembuffersize default depend on memory
+Subject: [PATCH 08/97] [rbp] Make cachemembuffersize default depend on memory
size
---
@@ -329,11 +329,10 @@ index 2e3282c..d1606a2 100644
}
-
-From f9d47dcf9d04a28308404a77b516e28d57b97f2a Mon Sep 17 00:00:00 2001
+From 4bb600b92009d43e32124eb8bf6ae95603ae93a8 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 30 May 2014 14:58:43 +0100
-Subject: [PATCH 10/87] [settings] Experiment: Report DESKTOP resolution in
+Subject: [PATCH 10/97] [settings] Experiment: Report DESKTOP resolution in
video settings
---
@@ -355,10 +354,10 @@ index 4376463..fc4e5ea 100644
StringUtils::Format("%dx%d%s", resolution->width, resolution->height,
ModeFlagsToString(resolution->flags, false).c_str()),
-From 76c5fd374e30835b61684da8a62ed6c6ddefa4cb Mon Sep 17 00:00:00 2001
+From b48b69bcd2f0621befc05b30063874ccfbed6395 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 9 Sep 2014 12:04:26 +0100
-Subject: [PATCH 11/87] egl: Treat unknown display aspect ratio as square pixel
+Subject: [PATCH 11/97] egl: Treat unknown display aspect ratio as square pixel
---
xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 4 ++--
@@ -387,10 +386,10 @@ index bda7430..68fc647 100644
SetResolutionString(m_desktopRes);
-From af06dc9a5a99bcf774a760bf46f88989ae03c6c4 Mon Sep 17 00:00:00 2001
+From 3e868e74d23640e8f75f56d2eeabbfd6948e4205 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 19 Sep 2014 11:54:49 +0100
-Subject: [PATCH 12/87] [dvdplayer/rbp] Add pi specific option to maintain
+Subject: [PATCH 12/97] [dvdplayer/rbp] Add pi specific option to maintain
vsync with pll adjustment
New A/V sync option in settings/video/playback to do "Adjust PLL".
@@ -682,10 +681,10 @@ index 7df1bf7..732b69d 100644
float m_audioPlayCountMinimumPercent;
bool m_dvdplayerIgnoreDTSinWAV;
-From 855155cecdc39ff1586f84cec624bdbc1689ad41 Mon Sep 17 00:00:00 2001
+From 714598484af7ea5d846e80e4e6dbf7e51e1e7bf4 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 24 Sep 2014 23:13:52 +0100
-Subject: [PATCH 13/87] [audio] Add settings option to boost centre channel
+Subject: [PATCH 13/97] [audio] Add settings option to boost centre channel
when downmixing
This allows a dB volume increase to be added to centre channel.
@@ -807,10 +806,10 @@ index f99c0e6..1911189 100644
// stereo upmix
if (upmix && m_src_channels == 2 && m_dst_channels > 2)
-From e46c99c1b4d75dd9f162d80c9cec1ebf1a8d3074 Mon Sep 17 00:00:00 2001
+From 646c5985702e78bada6bbd9f74fbf442e5bacbd5 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 27 Oct 2014 15:23:51 +0000
-Subject: [PATCH 14/87] [rbp] Default extract thumbnails to false
+Subject: [PATCH 14/97] [rbp] Default extract thumbnails to false
It can take 80 seconds for a single file on a Pi. It can cause crashes with out-of-memory errors.
It genereates a lot of support issues. Best to default to disabled and let users enable it if they must
@@ -840,10 +839,10 @@ index 50fe36a..a54a4c4 100644
-From b860125828104f62039468f8af95cd8b82fedaa5 Mon Sep 17 00:00:00 2001
+From 4d538f222e65dac1aab9238ee206dae98e8b745d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 10 Feb 2015 15:29:16 +0000
-Subject: [PATCH 15/87] [libcec] Add repeating keypress patch from popcornmix'
+Subject: [PATCH 15/97] [libcec] Add repeating keypress patch from popcornmix'
repo
---
@@ -1730,10 +1729,10 @@ index 0000000..8366a69
+1.9.1
+
-From b55caa265c7481aaf12c99eaa3e051197492a16b Mon Sep 17 00:00:00 2001
+From 9f185ce92005dc1da7c54b0538b9be627398414c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 28 Oct 2014 00:19:40 +0000
-Subject: [PATCH 16/87] [cec] Add settings for configuring button repeats
+Subject: [PATCH 16/97] [cec] Add settings for configuring button repeats
---
addons/resource.language.en_gb/resources/strings.po | 15 +++++++++++++++
@@ -1814,10 +1813,10 @@ index ea702e5..b5ff693 100644
void CPeripheralCecAdapter::ReadLogicalAddresses(const std::string &strString, cec_logical_addresses &addresses)
-From f8b7ec7f762de88902378187148e437589c09e8c Mon Sep 17 00:00:00 2001
+From 41b622065e0b8c4b9ac882c860b352bc893af904 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 3 Nov 2014 23:17:46 +0000
-Subject: [PATCH 17/87] [cec] Don't discard buttons when repeat mode is enabled
+Subject: [PATCH 17/97] [cec] Don't discard buttons when repeat mode is enabled
---
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 5 ++++-
@@ -1840,10 +1839,10 @@ index b5ff693..6086bf5 100644
if (m_currentButton.iButton == key.iButton && m_currentButton.iDuration == 0)
{
-From d36c6702a3f695ba90ab7bc60498a57f32c6eff2 Mon Sep 17 00:00:00 2001
+From 67d598e18250aeee6968a37d6c061b50658ef2fc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 4 Nov 2014 18:50:00 +0000
-Subject: [PATCH 18/87] [cec] Temp - more logging
+Subject: [PATCH 18/97] [cec] Temp - more logging
---
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 8 +++++++-
@@ -1895,10 +1894,10 @@ index 6086bf5..417b0d8 100644
}
-From f4d93cf45c5ad5666ce31589c879ae2c3bfbfa0c Mon Sep 17 00:00:00 2001
+From db0fd492436ac8612452651d95fd013b66e5cb7f Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 15 Nov 2014 12:03:34 +0000
-Subject: [PATCH 19/87] [dvdplayer] Add lock for player creation
+Subject: [PATCH 19/97] [dvdplayer] Add lock for player creation
---
xbmc/cores/dvdplayer/DVDPlayer.cpp | 3 +++
@@ -1944,10 +1943,10 @@ index ab6a228..32e76c1 100644
+ CCriticalSection m_players_lock;
};
-From 1f158cf501be9af72c54013f6ba3d888028fd3d2 Mon Sep 17 00:00:00 2001
+From ba714e2c52c3b2b54d0aa36feb038e0988c10f30 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 24 Nov 2014 22:07:25 +0000
-Subject: [PATCH 20/87] [dvdplayervideo] Prod decoder when in stills mode
+Subject: [PATCH 20/97] [dvdplayervideo] Prod decoder when in stills mode
An asynchronous hardware decoder doesn't only produce output pictures when new packets arrive.
In dvd stills mode give it a chance to return pictures that weren't ready when frame was decoded.
@@ -2024,10 +2023,10 @@ index 46fa635..03c876d 100644
if (pMsg->IsType(CDVDMsg::GENERAL_SYNCHRONIZE))
-From 679035ea691e5269b7f5b26f6e5f4dd42f243da9 Mon Sep 17 00:00:00 2001
+From 0008ee91faf07eede19fd97c7296825b67e1264b Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 27 Nov 2014 16:31:56 +0000
-Subject: [PATCH 21/87] [languageinvoker] Reduce priority of python threads
+Subject: [PATCH 21/97] [languageinvoker] Reduce priority of python threads
---
xbmc/interfaces/generic/LanguageInvokerThread.cpp | 5 +++++
@@ -2050,10 +2049,10 @@ index fcdd063..16f0c89 100644
}
-From 7c15df684d52221699e7056034efa4c6584caaeb Mon Sep 17 00:00:00 2001
+From ca83d5d34edf353902c7bbaa702f2dbbca5cffbc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 14 Dec 2013 16:55:05 +0000
-Subject: [PATCH 22/87] logging: Add microsecond timer to log messages
+Subject: [PATCH 22/97] logging: Add microsecond timer to log messages
---
xbmc/utils/log.cpp | 17 +++++++++++++++--
@@ -2106,10 +2105,10 @@ index 3443f12..31c4a99 100644
levelNames[logLevel]) + strData;
-From 1a8b62644004d8e07141ce19bd439edc3415b7e1 Mon Sep 17 00:00:00 2001
+From adced8a3f90b0de05070f5fb7877c0cf97ae3951 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 29 Nov 2014 15:25:16 +0000
-Subject: [PATCH 23/87] [rbp] hack: wait for splash to complete before changing
+Subject: [PATCH 23/97] [rbp] hack: wait for splash to complete before changing
hdmi mode
---
@@ -2183,10 +2182,10 @@ index 68fc647..c80114e 100644
if(!m_fixedMode && GETFLAGS_GROUP(res.dwFlags) && GETFLAGS_MODE(res.dwFlags))
-From 1c92686897b4c799e85aa878ec9f2d5b940533f6 Mon Sep 17 00:00:00 2001
+From fb7d35b6bc61c996e744be515faa849dfc0f1a24 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 11 Dec 2014 17:00:57 +0000
-Subject: [PATCH 24/87] Fix for UI not showing both extractflags and
+Subject: [PATCH 24/97] Fix for UI not showing both extractflags and
extractthumb
---
@@ -2250,10 +2249,10 @@ index 4843ab8..f1cbefa 100644
-From 6e4957a0b614a4e8db33849e52606052e8db9708 Mon Sep 17 00:00:00 2001
+From 429d7afba781d741b6911f9de9f3ec03be13429f Mon Sep 17 00:00:00 2001
From: anaconda
Date: Thu, 11 Sep 2014 21:30:43 +0200
-Subject: [PATCH 25/87] Disable autoscrolling while on screensaver and while
+Subject: [PATCH 25/97] Disable autoscrolling while on screensaver and while
opening streams.
---
@@ -2266,10 +2265,10 @@ Subject: [PATCH 25/87] Disable autoscrolling while on screensaver and while
6 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
-index 36e3b97..136eade 100644
+index 352df29..c83e0a4 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
-@@ -4988,3 +4988,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const
+@@ -4981,3 +4981,13 @@ bool CApplication::NotifyActionListeners(const CAction &action) const
return false;
}
@@ -2284,10 +2283,10 @@ index 36e3b97..136eade 100644
+ return onBlackDimScreenSaver || openingStreams;
+}
diff --git a/xbmc/Application.h b/xbmc/Application.h
-index fe92b99..5e24c97 100644
+index 362dd7a..9f9a115 100644
--- a/xbmc/Application.h
+++ b/xbmc/Application.h
-@@ -385,6 +385,8 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs
+@@ -384,6 +384,8 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs
*/
void UnregisterActionListener(IActionListener *listener);
@@ -2384,10 +2383,10 @@ index 2cdbf1c..42be75d 100644
if (m_lastRenderTime)
m_autoScrollDelayTime += currentTime - m_lastRenderTime;
-From 00ad89f5921ee884ddbf242897809e95a4291587 Mon Sep 17 00:00:00 2001
+From f1896dc4a871edff5a4bc7f2549b5675c0a53b67 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 13 Dec 2014 18:35:20 +0000
-Subject: [PATCH 26/87] [demuxer] Avoid memcpy on every demuxer packet
+Subject: [PATCH 26/97] [demuxer] Avoid memcpy on every demuxer packet
Avoids an unnecessary memcpy on every demuxer packet which for
high bitrate videos can be significant.
@@ -2482,10 +2481,10 @@ index ab298b2..10c5ee0 100644
}
catch(...) {
-From 1a5db9af3595fed5b65c3557d6022cee3c254f1c Mon Sep 17 00:00:00 2001
+From 3da5f58723e112654b864b7b5f8b0f30116e29cc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 15 Feb 2015 14:06:12 +0000
-Subject: [PATCH 27/87] [mmal] Allow mmal codec for dvd stills
+Subject: [PATCH 27/97] [mmal] Allow mmal codec for dvd stills
---
xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 7 +++++++
@@ -2517,10 +2516,10 @@ index 4c363cf..b90237b 100644
{
// If dvd is an mpeg2 and hint.stills
-From bb4863764efb8eeb96dd788fd35ee901fe0a4d9a Mon Sep 17 00:00:00 2001
+From 02ce56be5917ca2c6c24674e6a2c36870ebdd936 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 31 Mar 2015 17:31:47 +0100
-Subject: [PATCH 28/87] [mmalrenderer] Add SetCodecControl function and prefer
+Subject: [PATCH 28/97] [mmalrenderer] Add SetCodecControl function and prefer
to return pictures when renderer is low (disabled)
---
@@ -2591,10 +2590,10 @@ index 51a64d1..bde8c06 100644
CCriticalSection m_sharedSection;
MMAL_COMPONENT_T *m_dec;
-From 756be12cafa7d396065a961354ef6fd0911f6a24 Mon Sep 17 00:00:00 2001
+From aa2973a30f567d12eb1302365ad4c924dd1146be Mon Sep 17 00:00:00 2001
From: anaconda
Date: Wed, 25 Feb 2015 18:22:21 +0100
-Subject: [PATCH 29/87] Load OSD dialogs on startup.
+Subject: [PATCH 29/97] Load OSD dialogs on startup.
Fixes skipped frames the first time they're loaded in memory on less powered
devices, like a Raspberry Pi, when using DVDPlayer.
@@ -2689,10 +2688,10 @@ index 9f25fa5..3ece45b 100644
CGUIDialogVideoSettings::~CGUIDialogVideoSettings()
{ }
-From 8abb0782a608715a9d059e832f18587969bb4303 Mon Sep 17 00:00:00 2001
+From 8e9136e385a30eaa7ae5928c1d9f6f6a2698eb4b Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 7 Mar 2015 22:46:21 +0000
-Subject: [PATCH 30/87] configure: Add raspberry-pi2 platform
+Subject: [PATCH 30/97] configure: Add raspberry-pi2 platform
---
configure.ac | 14 +++++++--
@@ -2704,7 +2703,7 @@ Subject: [PATCH 30/87] configure: Add raspberry-pi2 platform
6 files changed, 44 insertions(+), 22 deletions(-)
diff --git a/configure.ac b/configure.ac
-index cf945a0..ab4214f 100644
+index 7265637..03e44ac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -744,8 +744,17 @@ case $use_platform in
@@ -2866,10 +2865,10 @@ index cdc2fe4..379bd1d 100644
set(CMAKE_SYSTEM_NAME Linux)
endif()
-From 54133f8d1b482256cad949b3cfd651e2732bf218 Mon Sep 17 00:00:00 2001
+From 41107ebd4976d70e5931a811a6931898055ec8e9 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 10 Mar 2015 17:05:18 +0000
-Subject: [PATCH 31/87] [players] Add settings option to enable MVC support
+Subject: [PATCH 31/97] [players] Add settings option to enable MVC support
---
addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++
@@ -2950,10 +2949,10 @@ index e4f6d86..5d324f4 100644
case AV_CODEC_ID_MPEG4:
// (role name) video_decoder.mpeg4
-From 50a6e59c7f8e393d93f569ab53486c9d4fbf4308 Mon Sep 17 00:00:00 2001
+From 3f7aaf967f321184ad35378573d0eef4fd264102 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 14 Mar 2015 12:38:08 +0000
-Subject: [PATCH 32/87] [mmalrenderer] Switch to using transform flags for 3d
+Subject: [PATCH 32/97] [mmalrenderer] Switch to using transform flags for 3d
modes
---
@@ -3332,11 +3331,10 @@ index c80114e..3816b55 100644
CLog::Log(LOGDEBUG, "EGL set resolution %dx%d -> %dx%d @ %.2f fps (%d,%d) flags:%x aspect:%.2f\n",
m_width, m_height, dst_rect.width, dst_rect.height, res.fRefreshRate, GETFLAGS_GROUP(res.dwFlags), GETFLAGS_MODE(res.dwFlags), (int)res.dwFlags, res.fPixelRatio);
-
-From 02ab1526a5e8a6e60d59bf5f3ad285110ff66d5d Mon Sep 17 00:00:00 2001
+From ea99e969730a7b7d65018d8d2fb99c882ce6939c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 14 Apr 2015 20:51:14 +0100
-Subject: [PATCH 35/87] [gui] Also limit GUI updates when in non full-screen
+Subject: [PATCH 35/97] [gui] Also limit GUI updates when in non full-screen
video mode
---
@@ -3344,10 +3342,10 @@ Subject: [PATCH 35/87] [gui] Also limit GUI updates when in non full-screen
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
-index 136eade..763c1c6 100644
+index c83e0a4..5776389 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
-@@ -2499,7 +2499,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
+@@ -2489,7 +2489,7 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU)
// This code reduces rendering fps of the GUI layer when playing videos in fullscreen mode
// it makes only sense on architectures with multiple layers
@@ -3356,7 +3354,7 @@ index 136eade..763c1c6 100644
fps = CSettings::Get().GetInt("videoplayer.limitguiupdate");
#endif
-@@ -2512,6 +2512,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
+@@ -2502,6 +2502,8 @@ void CApplication::FrameMove(bool processEvents, bool processGUI)
{
if (!m_skipGuiRender)
g_windowManager.Process(CTimeUtils::GetFrameTime());
@@ -3366,10 +3364,10 @@ index 136eade..763c1c6 100644
g_windowManager.FrameMove();
}
-From 7d32b47b8d6f7f8238ad230de053b9ef74d9b169 Mon Sep 17 00:00:00 2001
+From e1b16727bf9aa69e80d98d3375325f28853f4077 Mon Sep 17 00:00:00 2001
From: macrule
Date: Thu, 11 Apr 2013 18:24:42 +0200
-Subject: [PATCH 36/87] Added some vc_tv_* functions that were missing in
+Subject: [PATCH 36/97] Added some vc_tv_* functions that were missing in
DllBCM.
---
@@ -3404,10 +3402,10 @@ index b92fdb8..9c7e293 100644
HDMI_INTERLACED_T scan_mode, EDID_MODE_MATCH_FLAG_T match_flags)
{ return ::vc_tv_hdmi_power_on_best(width, height, frame_rate, scan_mode, match_flags); };
-From a87701ba7de5154a5ace636f12ad1d45899f3a5a Mon Sep 17 00:00:00 2001
+From 4dc37830ffa8d4ed07cd59f1b506ad1ce7e8fed4 Mon Sep 17 00:00:00 2001
From: macrule
Date: Thu, 11 Apr 2013 18:29:03 +0200
-Subject: [PATCH 37/87] Added private utility function to map a float display
+Subject: [PATCH 37/97] Added private utility function to map a float display
aspect, to the respective SDTV_ASPECT_* enum value.
---
@@ -3456,10 +3454,10 @@ index 3816b55..520bf95 100644
bool CEGLNativeTypeRaspberryPI::ProbeResolutions(std::vector &resolutions)
-From c6d3ccebd34ae98f96ac2f6f28762cea9685e11a Mon Sep 17 00:00:00 2001
+From 5560b6729902efdffa303cfeede42067a5fa8cb7 Mon Sep 17 00:00:00 2001
From: macrule
Date: Thu, 11 Apr 2013 19:50:58 +0200
-Subject: [PATCH 38/87] Changed SDTV resolutions to be treated similarly to
+Subject: [PATCH 38/97] 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.
@@ -3556,10 +3554,10 @@ index 59401f5..a0acb1a 100644
int m_width;
int m_height;
-From 45464218f3129a257aa9916b0bdb8967945da4ca Mon Sep 17 00:00:00 2001
+From 0e7eb3c3417c45ed5008c47c1dacf7f5954db57a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 17:11:09 +0100
-Subject: [PATCH 39/87] Revert "[3D] don't back out from 3D handling on
+Subject: [PATCH 39/97] Revert "[3D] don't back out from 3D handling on
resolution changes if we're switching to a different 3D mode"
This reverts commit 3c4c236a799dab8369b4bb74ff9993bc58a61a72.
@@ -3594,10 +3592,10 @@ index bd7dff9..fc4cc95 100644
if(stereo_mode != m_stereoMode)
-From fdefdbe58bbffe647f669616892257142aef76f6 Mon Sep 17 00:00:00 2001
+From 759b1380cddba63b448c9681d51db64609484c95 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 10 Jun 2015 20:42:03 +0100
-Subject: [PATCH 40/87] [rbp] Fix zoom modes with stereoscopic videos
+Subject: [PATCH 40/97] [rbp] Fix zoom modes with stereoscopic videos
---
xbmc/cores/VideoRenderers/MMALRenderer.cpp | 12 ++++++++++--
@@ -3653,10 +3651,10 @@ index ba17a46..298eaff 100644
if (gui != display)
{
-From 2a3b2eecd8bebb09419ce6606623e664a6caf1ea Mon Sep 17 00:00:00 2001
+From 0d4bf6d61b4469300a46db84795c123177ee2cfc Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 17:42:03 +0100
-Subject: [PATCH 41/87] [WinSystemEGL] Remove unused Support3D function
+Subject: [PATCH 41/97] [WinSystemEGL] Remove unused Support3D function
---
xbmc/windowing/egl/WinSystemEGL.cpp | 29 -----------------------------
@@ -3716,10 +3714,10 @@ index 9d4baf6..1ec4225 100644
EGLConfig GetEGLConfig();
-From d3bbcba17a08b06967098276a4e63fea1ad734c8 Mon Sep 17 00:00:00 2001
+From 21f8450e14bdea7ead6a3d0bf26a65444745668d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 16 Apr 2014 21:18:06 +0100
-Subject: [PATCH 42/87] [omxplayer] Don't propagate 3d flags based on supported
+Subject: [PATCH 42/97] [omxplayer] Don't propagate 3d flags based on supported
3d modes
---
@@ -3775,10 +3773,10 @@ index 298eaff..3bf7c2e 100644
unsigned int iDisplayHeight = height;
-From babe2ddd56be4bcc0653ab16010de7e5f5d3815f Mon Sep 17 00:00:00 2001
+From a36a305d37fd881d12344d859a53002e13989e89 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 18:52:28 +0100
-Subject: [PATCH 43/87] [3d] Avoid switching stereo mode based on current
+Subject: [PATCH 43/97] [3d] Avoid switching stereo mode based on current
display mode
---
@@ -3818,10 +3816,10 @@ index fc4cc95..e18232e 100644
RESOLUTION_INFO info_mod = GetResInfo(res);
-From 5a5c6740107de97d7cbce3303179c27e4f5e17b9 Mon Sep 17 00:00:00 2001
+From 1ac2844bd4a275ef5b6b50f6e66249c55d67e81c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 3 Jun 2015 23:13:51 +0100
-Subject: [PATCH 44/87] [rpi] Always add desktop resolution to supported list
+Subject: [PATCH 44/97] [rpi] Always add desktop resolution to supported list
There was an assumption that the desktop resolution would be in the probed list, but that is sometimes not the case.
We don't add interlaced resolutions to list, but they can be the preferred resolution read from edid. See:
@@ -3890,10 +3888,10 @@ index a1f67fd..69ce9b7 100644
CLog::Log(LOGDEBUG, "EGL mode %d: %s (%.2f) %s%s:%x\n", i, res.strMode.c_str(), res.fPixelRatio,
tv->native ? "N" : "", tv->scan_mode ? "I" : "", tv->code);
-From 76f259d5791f4dd40cd6ff6ffb4251c25496cec6 Mon Sep 17 00:00:00 2001
+From 83c3b11b49dddd4df9e30ea6a879dcebd840fd80 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sun, 21 Jun 2015 18:53:29 +0100
-Subject: [PATCH 45/87] [rbp] Drop reporting 3D modes and just use current
+Subject: [PATCH 45/97] [rbp] Drop reporting 3D modes and just use current
rendering mode to request 3D signalling
---
@@ -4050,10 +4048,10 @@ index 69ce9b7..25a97ad 100644
}
if (supported_modes)
-From 6b731b58c0cd53ba599eab0dab2e3011fbc43425 Mon Sep 17 00:00:00 2001
+From f939e50fdb7323fa21ef366be148e0d786ea4619 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 30 Jun 2015 14:08:24 +0100
-Subject: [PATCH 46/87] [rbp] Ignore video stereo mode when 3D display mode is
+Subject: [PATCH 46/97] [rbp] Ignore video stereo mode when 3D display mode is
disabled
---
@@ -4092,10 +4090,10 @@ index 3bf7c2e..5f6b402 100644
if (m_hints.orientation == 90 || m_hints.orientation == 270)
{
-From 985940529cc7737ffa0475e4b9866fd9e4763826 Mon Sep 17 00:00:00 2001
+From 09b62cbefb2e5a3b5f231fbef3647ce46734bbdb Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 22 Jun 2015 16:27:15 +0100
-Subject: [PATCH 47/87] [EGL] Don't skip out when HDMI mode is considered the
+Subject: [PATCH 47/97] [EGL] Don't skip out when HDMI mode is considered the
same
It might have different 3D signalling. TODO: keep track of 3D signalling
@@ -4117,10 +4115,10 @@ index c43c4d0..13b75b1 100644
m_bFullScreen = fullScreen;
-From 2ffd4421782229b8243b7c479a97c63a5e2cddde Mon Sep 17 00:00:00 2001
+From b226d8094af9d08e0e8bdcb8308dc289b5ab26f6 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 21 Apr 2015 14:32:07 +0100
-Subject: [PATCH 48/87] [mmalrenderer] Add sharpness control
+Subject: [PATCH 48/97] [mmalrenderer] Add sharpness control
---
addons/resource.language.en_gb/resources/strings.po | 2 +-
@@ -4192,10 +4190,10 @@ index 1404fb3..9bced7e 100644
CCriticalSection m_sharedSection;
MMAL_COMPONENT_T *m_vout;
-From 08d327c3400b158eae3395ca17335ea53d7127c2 Mon Sep 17 00:00:00 2001
+From 7faf2fc744fe86942e0ddf7546fde97a5c54b0e2 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 24 Apr 2015 13:49:51 +0100
-Subject: [PATCH 49/87] [dvdplayer] Add back required include
+Subject: [PATCH 49/97] [dvdplayer] Add back required include
---
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 1 +
@@ -4214,10 +4212,10 @@ index 03c876d..c1ef9d4 100644
#include "guilib/GraphicContext.h"
#include
-From 5c54e70d72c67d2bf1fdb6bbc9ae94ea0a2e26bf Mon Sep 17 00:00:00 2001
+From 66a98c2f79252c51a6817321a62499f76201ea6a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 5 May 2015 23:58:06 +0100
-Subject: [PATCH 50/87] [screensaver] Leave GUI contents available for
+Subject: [PATCH 50/97] [screensaver] Leave GUI contents available for
screensaver
---
@@ -4225,10 +4223,10 @@ Subject: [PATCH 50/87] [screensaver] Leave GUI contents available for
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/xbmc/guilib/GUIWindowManager.cpp b/xbmc/guilib/GUIWindowManager.cpp
-index 6030c4c..ccc2922 100644
+index aa6713d..590fcec 100644
--- a/xbmc/guilib/GUIWindowManager.cpp
+++ b/xbmc/guilib/GUIWindowManager.cpp
-@@ -796,7 +796,16 @@ void CGUIWindowManager::ActivateWindow_Internal(int iWindowID, const vector
Date: Fri, 15 May 2015 14:04:11 +0100
-Subject: [PATCH 52/87] [omxplayer] Make unsupported when ac3transcode is
+Subject: [PATCH 52/97] [omxplayer] Make unsupported when ac3transcode is
enabled
---
@@ -4275,10 +4273,10 @@ index eff47e0..b954276 100644
{
// find video stream
-From 912660eb2e987e8226f5e403545d5e8ea8bdbf9f Mon Sep 17 00:00:00 2001
+From f993c5bee35aa2a00a1eb66a56a812042d50f2ac Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 1 Jun 2015 14:14:43 +0100
-Subject: [PATCH 53/87] [omximage] Don't report failed decode of progressive
+Subject: [PATCH 53/97] [omximage] Don't report failed decode of progressive
jpegs as as error
---
@@ -4364,10 +4362,10 @@ index a43a446..890ca88 100644
}
-From 47b92523f966479950a6f836a1a641752fdbc944 Mon Sep 17 00:00:00 2001
+From e31221e9c9b9f7ba3a2b7a36a97dfb9023cffd98 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 25 May 2015 19:01:00 +0100
-Subject: [PATCH 54/87] [rbp] Allow settings option for timestamp preference
+Subject: [PATCH 54/97] [rbp] Allow settings option for timestamp preference
We currently have some files that play better with pts timestamps and some that play better with dts timestamps
Provide a gui setting to allow users to adjust this behaviour until we have a better solution
@@ -4441,10 +4439,10 @@ index 5f6b402..ce23bec 100644
if (pts == DVD_NOPTS_VALUE)
pts = dts;
-From 33cb5e8872ddb645f9a6cc9e7b79e337c6b44bab Mon Sep 17 00:00:00 2001
+From 5ef24b504e192305ec52f121475eb45d9875812c Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 6 Jun 2015 18:44:37 +0100
-Subject: [PATCH 55/87] [rbp] Ignore pts value when m_hints.ptsinvalid set
+Subject: [PATCH 55/97] [rbp] Ignore pts value when m_hints.ptsinvalid set
---
xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 +-
@@ -4478,10 +4476,10 @@ index ce23bec..e17fdb8 100644
if (pts == DVD_NOPTS_VALUE)
pts = dts;
-From f9f553c62aeb183dfd3e80b905cffed576673e10 Mon Sep 17 00:00:00 2001
+From d8dc2b53bc190a17cb380efedb015eb5835daa41 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 6 Jun 2015 18:43:57 +0100
-Subject: [PATCH 56/87] ffmpeg: Automatic switch to software decode for GMC
+Subject: [PATCH 56/97] ffmpeg: Automatic switch to software decode for GMC
with more than one warp point
---
@@ -4652,10 +4650,10 @@ index b954276..b5ee4b6 100644
else if ((hint.codec == AV_CODEC_ID_VC1 || hint.codec == AV_CODEC_ID_WMV3) && g_RBP.GetCodecWvc1())
supported = true;
-From 7fef3d4b4ec074297b9122231677e6ca22477ce5 Mon Sep 17 00:00:00 2001
+From 69446dd3aec0506481036fc54fc7296dc5317602 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 22 Jun 2015 21:46:57 +0100
-Subject: [PATCH 57/87] [rbp] Use default resampling setting on Pi2
+Subject: [PATCH 57/97] [rbp] Use default resampling setting on Pi2
---
system/settings/rbp2.xml | 5 +++++
@@ -4678,10 +4676,10 @@ index b29a428..1c8b116 100644
-From c1c3ee24908f125f0de27c538104fb941a97f70c Mon Sep 17 00:00:00 2001
+From 4db67f0d4315740e471cc675515067deddfb249a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 25 Jun 2015 19:43:10 +0100
-Subject: [PATCH 58/87] [rbp] HW mouse pointer
+Subject: [PATCH 58/97] [rbp] HW mouse pointer
Updating the mouse point provokes a complete screen update which can make it feel laggy
and results in high cpu.
@@ -4700,10 +4698,10 @@ Requires recent firmware.
create mode 100644 xbmc/linux/rpi_user_vcsm.h
diff --git a/xbmc/guilib/GUIWindowManager.cpp b/xbmc/guilib/GUIWindowManager.cpp
-index ccc2922..7bcda5c 100644
+index 590fcec..0494bc2 100644
--- a/xbmc/guilib/GUIWindowManager.cpp
+++ b/xbmc/guilib/GUIWindowManager.cpp
-@@ -193,7 +193,9 @@ void CGUIWindowManager::CreateWindows()
+@@ -195,7 +195,9 @@ void CGUIWindowManager::CreateWindows()
Add(new CGUIWindowAddonBrowser);
Add(new CGUIWindowScreensaverDim);
Add(new CGUIWindowDebugInfo);
@@ -5719,10 +5717,10 @@ index f6c8df0..5c2b583 100644
#endif
-From 8c2da945c14bf86a8110cadb8de8d905456bf115 Mon Sep 17 00:00:00 2001
+From 844077e2724b1e547e53f3d4c7f4aa1ca070e8c4 Mon Sep 17 00:00:00 2001
From: Roman Kraevskiy
Date: Fri, 10 Jul 2015 23:36:34 +0300
-Subject: [PATCH 59/87] Mouse wheel support for X11-less linux distros
+Subject: [PATCH 59/97] Mouse wheel support for X11-less linux distros
(openelec)
---
@@ -5930,10 +5928,10 @@ index cf1c5ce..954d823 100644
class CLinuxInputDevices
-From f233a279790d3b1682972724c243c7ea48b56aa2 Mon Sep 17 00:00:00 2001
+From f3d0ceb00e11c67b9caed033a7fadebe8a8e18cd Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 22 Jun 2015 22:06:53 +0100
-Subject: [PATCH 60/87] [rbp] Flip default of prefer pts timestamps
+Subject: [PATCH 60/97] [rbp] Flip default of prefer pts timestamps
---
system/settings/rbp.xml | 2 +-
@@ -5953,17 +5951,17 @@ index 8c6e69d..f9528bc 100644
-From 3265c0a4d65cd46fa7e6e40f2c06587325a8a53f Mon Sep 17 00:00:00 2001
+From b389e5ed3fd4695c46777f4f24feef9c6c5f84df Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 7 May 2015 14:28:37 +0100
-Subject: [PATCH 61/87] build: Add vcsm lib
+Subject: [PATCH 61/97] build: Add vcsm lib
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 084c2cf..98a1b26 100644
+index b752d8d..d04e2fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1059,7 +1059,7 @@ if test "$use_gles" = "yes"; then
@@ -5976,10 +5974,10 @@ index 084c2cf..98a1b26 100644
AC_CHECK_LIB([EGL], [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
-From 711768bf07ef5cea9c30e3543fa82b45017c508a Mon Sep 17 00:00:00 2001
+From c8760f14a8cd56211b2df17e422201b2886c9cc3 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Mon, 20 Jul 2015 16:11:37 +0100
-Subject: [PATCH 62/87] [mmalcodec] Populate the framerate of video decoder
+Subject: [PATCH 62/97] [mmalcodec] Populate the framerate of video decoder
When timestamps are unknown, they may be interpolated based on the framerate. Without setting this,
a default of 30fps is used which may be incorrect and cause stutters
@@ -6004,10 +6002,10 @@ index 3e97f1d..5b064d2 100644
error_concealment.hdr.id = MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT;
-From 94b4c1a43ae53a123c5039ac94b47c5598db455b Mon Sep 17 00:00:00 2001
+From 455b16797440674bd4c21797866b0dcc8f81f017 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 22 Jul 2015 22:52:46 +0100
-Subject: [PATCH 63/87] [mmalcodec] Enable interpolate timestamps
+Subject: [PATCH 63/97] [mmalcodec] Enable interpolate timestamps
---
xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 2 +-
@@ -6027,10 +6025,10 @@ index 5b064d2..a202421 100644
CLog::Log(LOGERROR, "%s::%s Failed to disable interpolate timestamps mode on %s (status=%x %s)", CLASSNAME, __func__, m_dec_input->name, status, mmal_status_to_string(status));
-From d65df791a54f90d38f6c905aef565c05cccb44d3 Mon Sep 17 00:00:00 2001
+From e3f6a243d27324345e4e189137978e9f25a1b06a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 23 Jul 2015 00:55:47 +0100
-Subject: [PATCH 64/87] Revert "[rbp] Flip default of prefer pts timestamps"
+Subject: [PATCH 64/97] Revert "[rbp] Flip default of prefer pts timestamps"
This reverts commit 34100dcdf830a0e957df585108066c48d6c5c38d.
---
@@ -6051,10 +6049,10 @@ index f9528bc..8c6e69d 100644
-From 2b3c2670323ee570e6f10164e2cc3fb78e2f31b9 Mon Sep 17 00:00:00 2001
+From 3d6a8c8ecd2b151b41c5b472942577088d8217ac Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 23 Jul 2015 00:56:56 +0100
-Subject: [PATCH 65/87] Revert "[rbp] Allow settings option for timestamp
+Subject: [PATCH 65/97] Revert "[rbp] Allow settings option for timestamp
preference"
This reverts commit c0eef926dd376cbf8a7857b2848e118ea3689b98.
@@ -6128,10 +6126,10 @@ index e17fdb8..f06ee9c 100644
if (pts == DVD_NOPTS_VALUE)
pts = dts;
-From b8058086f55b522b82ba15ad4d9f30bd8c1cd458 Mon Sep 17 00:00:00 2001
+From 25864f89fdeb1a6f2e9c50946c761390b7d6cb5d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 23 Jul 2015 15:52:39 +0100
-Subject: [PATCH 66/87] [omxhelper] Ignore embedded coverart image when looking
+Subject: [PATCH 66/97] [omxhelper] Ignore embedded coverart image when looking
for supported video streams
---
@@ -6152,10 +6150,10 @@ index b5ee4b6..59479fe 100644
CDVDStreamInfo hint(*stream, true);
-From 142b98ac1813dc78695f763f51c1516f0cfe5d2e Mon Sep 17 00:00:00 2001
+From 46b5399fce0d8b69aac995fa4915ec9739096801 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 24 Jul 2015 18:39:25 +0100
-Subject: [PATCH 68/87] [mmalcodec] Don't set initial unknown timestamps to
+Subject: [PATCH 68/97] [mmalcodec] Don't set initial unknown timestamps to
zero
This used to be done to keep the firmware happy, but is no longer required and messes with timestamp statistics
@@ -6224,10 +6222,10 @@ index bde8c06..42d6a7b 100644
int m_speed;
bool m_preroll;
-From 9e5e289b1384d78772920dbeffcee577d8aeb99e Mon Sep 17 00:00:00 2001
+From 2a30906ff53ef44c7e44eb135952f6ce15a7cca1 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 24 Jul 2015 22:53:21 +0100
-Subject: [PATCH 69/87] [mmalcodec] Tidy up setting of timestamp flags
+Subject: [PATCH 69/97] [mmalcodec] Tidy up setting of timestamp flags
---
xbmc/cores/omxplayer/OMXVideo.cpp | 27 ++++++++++++++-------------
@@ -6281,10 +6279,10 @@ index 832a9c9..1a08aa9 100644
memcpy(omx_buffer->pBuffer, demuxer_content, omx_buffer->nFilledLen);
-From 4858d812237020f71205a6ab1e0af891099f3167 Mon Sep 17 00:00:00 2001
+From 498fb5c8efa41e687a70ca9139cdb54338cd50dd Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Sat, 25 Jul 2015 15:32:35 +0100
-Subject: [PATCH 70/87] [rbp] Only send changes in hw cursor state
+Subject: [PATCH 70/97] [rbp] Only send changes in hw cursor state
---
xbmc/linux/RBP.cpp | 9 ++++++++-
@@ -6335,10 +6333,10 @@ index f233a5e..be0cafc 100644
void set_cursor(const void *pixels, int width, int height, int hotspot_x, int hotspot_y);
void update_cursor(int x, int y, bool enabled);
-From 68935db0771fe14373c061420ffbbca5596a3a74 Mon Sep 17 00:00:00 2001
+From 7d8330b84f83954720c050f94144aa65e14c7cd5 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 28 Jul 2015 00:08:58 +0100
-Subject: [PATCH 71/87] [mmalcodec] Use both dts and pts for determining amount
+Subject: [PATCH 71/97] [mmalcodec] Use both dts and pts for determining amount
of queued data
---
@@ -6401,10 +6399,10 @@ index 42d6a7b..f8f5209 100644
int m_speed;
bool m_preroll;
-From ddd17d3dfb6c4b2043b024ff1ee33bc6b9a3bcf0 Mon Sep 17 00:00:00 2001
+From 03afdcd286a07d78a16bf0c7423deb46e980313f Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Tue, 28 Jul 2015 17:47:33 +0100
-Subject: [PATCH 72/87] [rbp] Refactor the vsync handle to support multiple
+Subject: [PATCH 72/97] [rbp] Refactor the vsync handle to support multiple
callers
---
@@ -6545,10 +6543,10 @@ index be0cafc..0572b47 100644
CCriticalSection m_critSection;
-From 6496fa447a357d146816badb32a4510be40fcfd3 Mon Sep 17 00:00:00 2001
+From db71a4dee9114a8af10d12fba56ff44b32dd5798 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 14:06:17 +0100
-Subject: [PATCH 73/87] [mmalrenderer] Wait for vsync before submitting to mmal
+Subject: [PATCH 73/97] [mmalrenderer] Wait for vsync before submitting to mmal
when display sync is disabled
This avoids an issue where video occasionally goes stuttery after a seek, until the next pause/play or seek.
@@ -6635,10 +6633,10 @@ index 9bced7e..ec279ed 100644
+ void SubmitFrame(MMAL_BUFFER_HEADER_T *buffer);
};
-From ad9373bf960c6c7c6e5cc00c59c9dfe856a7e07f Mon Sep 17 00:00:00 2001
+From 8507e6407c1a5352ffe3641b568a95fd9593ff18 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 15:07:22 +0100
-Subject: [PATCH 74/87] [omxplayer] Support per refresh rate display latency
+Subject: [PATCH 74/97] [omxplayer] Support per refresh rate display latency
settings
---
@@ -6663,10 +6661,10 @@ index f06ee9c..4ad66a8 100644
m_omxVideo.Decode(pPacket->pData, pPacket->iSize, dts, m_hints.ptsinvalid ? DVD_NOPTS_VALUE : pts);
-From 3da5401ecbe5206fcaafaf44fa6a2b6e6ee01700 Mon Sep 17 00:00:00 2001
+From d00949b532eac144ac6c0f041420463ecdb3ced5 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 15:46:18 +0100
-Subject: [PATCH 75/87] squash: release gfx lock when blocking
+Subject: [PATCH 75/97] squash: release gfx lock when blocking
---
xbmc/cores/VideoRenderers/MMALRenderer.cpp | 1 +
@@ -6685,10 +6683,10 @@ index 2e2bc83..c80a8a6 100644
#if defined(MMAL_DEBUG_VERBOSE)
CLog::Log(LOGDEBUG, "%s::%s - done vsync:%d", CLASSNAME, __func__, m_vsyncCount);
-From d0c1c12d6dfd9b3294fbaffcb22f2a63ea83c059 Mon Sep 17 00:00:00 2001
+From 4458af8dfc1b19bf21d91a7ec1b0ea6ffad9f051 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 17:34:11 +0100
-Subject: [PATCH 76/87] [rbp] Leave 3D framepacking output disabled by default
+Subject: [PATCH 76/97] [rbp] Leave 3D framepacking output disabled by default
---
system/settings/rbp.xml | 2 +-
@@ -6708,10 +6706,10 @@ index b27d23f..bf3b05f 100644
-From 1bc742744c2910add974ae145b4d72a8133f45ea Mon Sep 17 00:00:00 2001
+From 80a7665f661a10053dfa6d3c7f69e0aabbdcca4a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 17:26:30 +0100
-Subject: [PATCH 77/87] [omxplayer] Allow automatic switching back to omxplayer
+Subject: [PATCH 77/97] [omxplayer] Allow automatic switching back to omxplayer
after it has been disabled
Omxplayer gets disabled when it is unsuitable (e.g. software decoder required, or ALSA audio or AC3 transcode).
@@ -6759,10 +6757,10 @@ index 59479fe..014eaf1 100644
if (!CSettings::Get().GetBool("videoplayer.usemmal"))
return false;
-From 32d171107d2184315f18e8eb7b23a78d218f2723 Mon Sep 17 00:00:00 2001
+From d437937539f8b750e096585e3364287b856a4061 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Wed, 29 Jul 2015 21:05:41 +0100
-Subject: [PATCH 78/87] [omxplayer] Set audio properties for passthrough
+Subject: [PATCH 78/97] [omxplayer] Set audio properties for passthrough
We weren't setting the stream_channels property for passthrough for omxplayer (we do with Pi Sink)
That means we were using 2 in number of channels of the AudioInfoFrame packet, rather then 0
@@ -6785,10 +6783,10 @@ index 1911189..4072f7d 100644
m_SampleRate = m_format.m_sampleRate;
m_BitsPerSample = CAEUtil::DataFormatToBits(m_format.m_dataFormat);
-From d0279d2a4dade7122fa5a82b8a5c78faa95c35cb Mon Sep 17 00:00:00 2001
+From 81cdc97695125f7992f1bf1613d24b1145aa4b9a Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 31 Jul 2015 16:38:06 +0100
-Subject: [PATCH 79/87] squash: mmal: increase queue limit to 1 second to avoid
+Subject: [PATCH 79/97] squash: mmal: increase queue limit to 1 second to avoid
stalls
---
@@ -6809,10 +6807,10 @@ index 6cf4023..7fea172 100644
if (g_advancedSettings.CanLogComponent(LOGVIDEO))
CLog::Log(LOGDEBUG, "%s::%s - got space for output: demux_queue(%d) space(%d) queued(%.2f)", CLASSNAME, __func__, m_demux_queue_length, mmal_queue_length(m_dec_input_pool->queue) * m_dec_input->buffer_size, queued*1e-6);
-From c46855572563da98e026cb088a98ca70e7fd06fb Mon Sep 17 00:00:00 2001
+From 47f8bebb0cdc5cfc8dfc33c5c369fee4df1094e0 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:25:08 +0100
-Subject: [PATCH 80/87] Revert "squash: release gfx lock when blocking"
+Subject: [PATCH 80/97] Revert "squash: release gfx lock when blocking"
This reverts commit f10f0af15d0b57d148f5b3556fd9f94bb2f44509.
---
@@ -6832,10 +6830,10 @@ index c80a8a6..2e2bc83 100644
#if defined(MMAL_DEBUG_VERBOSE)
CLog::Log(LOGDEBUG, "%s::%s - done vsync:%d", CLASSNAME, __func__, m_vsyncCount);
-From 6b04f338107be6c497f6b0632bfd77cf4b44eb93 Mon Sep 17 00:00:00 2001
+From dc66ac9b33e196322a19b91d6a29274cfceabceb Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:25:21 +0100
-Subject: [PATCH 81/87] Revert "[mmalrenderer] Wait for vsync before submitting
+Subject: [PATCH 81/97] Revert "[mmalrenderer] Wait for vsync before submitting
to mmal when display sync is disabled"
This reverts commit f1a4416194f75f75e2145ec3fe64aee1177d3ccc.
@@ -6918,10 +6916,10 @@ index ec279ed..9bced7e 100644
- void SubmitFrame(MMAL_BUFFER_HEADER_T *buffer);
};
-From 58caaea7ca2dd3fc49aa9a1eb0ddbb59b5a8d047 Mon Sep 17 00:00:00 2001
+From 5c9a4ed55499d4e9abe7f1e48928abe170478a55 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:25:30 +0100
-Subject: [PATCH 82/87] Revert "[rbp] Refactor the vsync handle to support
+Subject: [PATCH 82/97] Revert "[rbp] Refactor the vsync handle to support
multiple callers"
This reverts commit 68bd91282359a9da4645af4eeead7b2842f835eb.
@@ -7063,10 +7061,10 @@ index 0572b47..be0cafc 100644
CCriticalSection m_critSection;
-From af0aa61f6d78364f9b65c413b87d2e09953aa449 Mon Sep 17 00:00:00 2001
+From 44d831513b0336d335d35dc36fea6b750ef772f0 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 11:23:05 +0100
-Subject: [PATCH 83/87] [rbp] Make sync playback to display the default option
+Subject: [PATCH 83/97] [rbp] Make sync playback to display the default option
---
system/settings/rbp.xml | 7 +++++++
@@ -7091,10 +7089,10 @@ index bf3b05f..0743176 100644
false
-From 7470bc8ba9710bd15e180d96ee72ee58a545c766 Mon Sep 17 00:00:00 2001
+From dddb1219bda8d94e470b2155016f4523b748bf6d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 31 Jul 2015 18:39:31 +0100
-Subject: [PATCH 84/87] [mmalcodec] Tidy up debug logging for decode
+Subject: [PATCH 84/97] [mmalcodec] Tidy up debug logging for decode
---
xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 16 ++++------------
@@ -7143,10 +7141,10 @@ index 7fea172..756b845 100644
}
-From 4848cab3632652bfaa89f0e822a1b224015f2427 Mon Sep 17 00:00:00 2001
+From 7d53fae11832cab78fa115401d889d782ba03515 Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Thu, 6 Aug 2015 13:25:32 +0100
-Subject: [PATCH 85/87] [rbp] Don't enable DTS-HD by default on Pi2
+Subject: [PATCH 85/97] [rbp] Don't enable DTS-HD by default on Pi2
Reports of no audio with omxplayer and this enabled
that are not yet understood
@@ -7171,10 +7169,10 @@ index 1c8b116..52778ecd 100644
-From 4a133a4a6c64f9c4811f10e8cecd4036080d15b8 Mon Sep 17 00:00:00 2001
+From 61838ea87734c65f78b2b5c0d2daf9368549e72d Mon Sep 17 00:00:00 2001
From: popcornmix
Date: Fri, 7 Aug 2015 18:09:09 +0100
-Subject: [PATCH 86/87] Revert "[rbp] Don't enable DTS-HD by default on Pi2"
+Subject: [PATCH 86/97] Revert "[rbp] Don't enable DTS-HD by default on Pi2"
This reverts commit 8166e8990b8cf599cc4eb1641c58fad1f1f0821f.
---
@@ -7197,3 +7195,802 @@ index 52778ecd..1c8b116 100644
+
+From 369453f1b7a2f525bf6c0a37d403464dea75eaae Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Fri, 14 Aug 2015 17:46:11 +0100
+Subject: [PATCH 88/97] [mmalrenderer] Add reference counting to sw decode
+ buffer and improve logging messages
+
+---
+ xbmc/cores/VideoRenderers/MMALRenderer.cpp | 162 +++++++++++++++++++++++------
+ xbmc/cores/VideoRenderers/MMALRenderer.h | 16 ++-
+ 2 files changed, 145 insertions(+), 33 deletions(-)
+
+diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+index fb92079..6e97c1c 100644
+--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp
++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+@@ -19,6 +19,7 @@
+ */
+
+ #include "Util.h"
++#include "threads/Atomics.h"
+ #include "MMALRenderer.h"
+ #include "cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h"
+ #include "filesystem/File.h"
+@@ -39,6 +40,44 @@
+ #define MMAL_DEBUG_VERBOSE
+ #endif
+
++
++CYUVVideoBuffer::CYUVVideoBuffer()
++{
++ m_refs = 0;
++ mmal_buffer = 0;
++}
++
++CYUVVideoBuffer::~CYUVVideoBuffer()
++{
++ m_refs = 0;
++ mmal_buffer = 0;
++}
++
++CYUVVideoBuffer *CYUVVideoBuffer::Acquire()
++{
++ long count = AtomicIncrement(&m_refs);
++#ifdef MMAL_DEBUG_VERBOSE
++ CLog::Log(LOGDEBUG, "%s::%s omvb:%p mmal:%p ref:%ld", CLASSNAME, __func__, this, mmal_buffer, count);
++#endif
++ (void)count;
++ return this;
++}
++
++long CYUVVideoBuffer::Release()
++{
++ long count = AtomicDecrement(&m_refs);
++#ifdef MMAL_DEBUG_VERBOSE
++ CLog::Log(LOGDEBUG, "%s::%s omvb:%p mmal:%p ref:%ld", CLASSNAME, __func__, this, mmal_buffer, count);
++#endif
++ if (count == 0)
++ {
++ mmal_buffer_header_release(mmal_buffer);
++ delete this;
++ }
++ else assert(count > 0);
++ return count;
++}
++
+ CRenderInfo CMMALRenderer::GetRenderInfo()
+ {
+ CSingleLock lock(m_sharedSection);
+@@ -67,21 +106,26 @@ static void vout_control_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer
+
+ void CMMALRenderer::vout_input_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
+ {
+- #if defined(MMAL_DEBUG_VERBOSE)
+- CMMALVideoBuffer *omvb = (CMMALVideoBuffer *)buffer->user_data;
+- CLog::Log(LOGDEBUG, "%s::%s port:%p buffer %p (%p), len %d cmd:%x f:%x", CLASSNAME, __func__, port, buffer, omvb, buffer->length, buffer->cmd, buffer->flags);
+- #endif
+-
+ assert(!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_TRANSMISSION_FAILED));
+ buffer->flags &= ~MMAL_BUFFER_HEADER_FLAG_USER2;
+ if (m_format == RENDER_FMT_MMAL)
+ {
+ CMMALVideoBuffer *omvb = (CMMALVideoBuffer *)buffer->user_data;
++ assert(buffer == omvb->mmal_buffer);
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s port:%p omvb:%p mmal:%p len:%d cmd:%x flags:%x flight:%d", CLASSNAME, __func__, port, omvb, omvb->mmal_buffer, buffer->length, buffer->cmd, buffer->flags, m_inflight);
++#endif
+ omvb->Release();
+ }
+ else if (m_format == RENDER_FMT_YUV420P)
+ {
+- mmal_buffer_header_release(buffer);
++ CYUVVideoBuffer *omvb = (CYUVVideoBuffer *)buffer->user_data;
++ assert(buffer == omvb->mmal_buffer);
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s port:%p omvb:%p mmal:%p len:%d cmd:%x flags:%x flight:%d", CLASSNAME, __func__, port, omvb, omvb->mmal_buffer, buffer->length, buffer->cmd, buffer->flags, m_inflight);
++#endif
++ m_inflight--;
++ omvb->Release();
+ }
+ else assert(0);
+ }
+@@ -208,6 +252,7 @@ CMMALRenderer::CMMALRenderer()
+ m_bMMALConfigured = false;
+ m_iYV12RenderBuffer = 0;
+ m_sharpness = -2.0f;
++ m_inflight = 0;
+ }
+
+ CMMALRenderer::~CMMALRenderer()
+@@ -262,16 +307,19 @@ bool CMMALRenderer::Configure(unsigned int width, unsigned int height, unsigned
+
+ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ {
++ if (!image || source < 0)
++ {
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %p %d %d", CLASSNAME, __func__, image, source, readonly);
++ CLog::Log(LOGDEBUG, "%s::%s - invalid: image:%p source:%d ro:%d flight:%d", CLASSNAME, __func__, image, source, readonly, m_inflight);
+ #endif
+- if (!image) return -1;
+-
+- if( source < 0)
+ return -1;
++ }
+
+ if (m_format == RENDER_FMT_MMAL)
+ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - MMAL: image:%p source:%d ro:%d flight:%d", CLASSNAME, __func__, image, source, readonly, m_inflight);
++#endif
+ }
+ else if (m_format == RENDER_FMT_YUV420P)
+ {
+@@ -285,6 +333,7 @@ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ return -1;
+ }
+
++ m_inflight++;
+ mmal_buffer_header_reset(buffer);
+
+ buffer->length = 3 * pitch * aligned_height >> 1;
+@@ -307,10 +356,16 @@ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ image->plane[1] = image->plane[0] + image->planesize[0];
+ image->plane[2] = image->plane[1] + image->planesize[1];
+
+- CLog::Log(LOGDEBUG, "%s::%s - %p %d", CLASSNAME, __func__, buffer, source);
+ YUVBUFFER &buf = m_buffers[source];
+ memset(&buf, 0, sizeof buf);
+- buf.mmal_buffer = buffer;
++ buf.YUVBuffer = new CYUVVideoBuffer;
++ if (!buf.YUVBuffer)
++ return -1;
++ buf.YUVBuffer->mmal_buffer = buffer;
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - YUV: image:%p source:%d ro:%d omvb:%p mmal:%p flight:%d", CLASSNAME, __func__, image, source, readonly, buf.YUVBuffer, buffer, m_inflight);
++#endif
++ buf.YUVBuffer->Acquire();
+ }
+ else assert(0);
+
+@@ -320,21 +375,44 @@ int CMMALRenderer::GetImage(YV12Image *image, int source, bool readonly)
+ void CMMALRenderer::ReleaseBuffer(int idx)
+ {
+ CSingleLock lock(m_sharedSection);
+- if (!m_bMMALConfigured || m_format == RENDER_FMT_BYPASS)
++ if (!m_bMMALConfigured)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - not configured: source:%d", CLASSNAME, __func__, idx);
++#endif
++ return;
++ }
++ if (m_format == RENDER_FMT_BYPASS)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - bypass: source:%d", CLASSNAME, __func__, idx);
++#endif
+ return;
++ }
+
++ YUVBUFFER *buffer = &m_buffers[idx];
++ if (m_format == RENDER_FMT_MMAL)
++ {
++ CMMALVideoBuffer *omvb = buffer->MMALBuffer;
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - MMAL: source:%d omvb:%p mmal:%p", CLASSNAME, __func__, idx, omvb, omvb ? omvb->mmal_buffer:NULL);
++#endif
++ SAFE_RELEASE(buffer->MMALBuffer);
++ }
++ else if (m_format == RENDER_FMT_YUV420P)
++ {
++ CYUVVideoBuffer *omvb = buffer->YUVBuffer;
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d (%p)", CLASSNAME, __func__, idx, m_buffers[idx].MMALBuffer);
++ CLog::Log(LOGDEBUG, "%s::%s - YUV: source:%d omvb:%p mmal:%p flight:%d", CLASSNAME, __func__, idx, omvb, omvb ? omvb->mmal_buffer:NULL, m_inflight);
+ #endif
+- YUVBUFFER &buf = m_buffers[idx];
+- SAFE_RELEASE(buf.MMALBuffer);
++ if (omvb && omvb->mmal_buffer)
++ SAFE_RELEASE(buffer->YUVBuffer);
++ }
++ else assert(0);
+ }
+
+ void CMMALRenderer::ReleaseImage(int source, bool preserve)
+ {
+-#if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d %d (%p)", CLASSNAME, __func__, source, preserve, m_buffers[source].MMALBuffer);
+-#endif
+ }
+
+ void CMMALRenderer::Reset()
+@@ -361,11 +439,14 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
+ {
+ CSingleLock lock(m_sharedSection);
+ int source = m_iYV12RenderBuffer;
++
++ if (!m_bConfigured)
++ {
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d %x %d %d", CLASSNAME, __func__, clear, flags, alpha, source);
++ CLog::Log(LOGDEBUG, "%s::%s - not configured: clear:%d flags:%x alpha:%d source:%d", CLASSNAME, __func__, clear, flags, alpha, source);
+ #endif
+-
+- if (!m_bConfigured) return;
++ return;
++ }
+
+ ManageDisplay();
+
+@@ -384,18 +465,22 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
+ }
+
+ if (m_format == RENDER_FMT_BYPASS)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - bypass: clear:%d flags:%x alpha:%d source:%d", CLASSNAME, __func__, clear, flags, alpha, source);
++#endif
+ return;
+-
++ }
+ SetVideoRect(m_sourceRect, m_destRect);
+
+ YUVBUFFER *buffer = &m_buffers[source];
+ if (m_format == RENDER_FMT_MMAL)
+ {
+ CMMALVideoBuffer *omvb = buffer->MMALBuffer;
+- if (omvb)
++ if (omvb && omvb->mmal_buffer)
+ {
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s %p (%p) f:%x", CLASSNAME, __func__, omvb, omvb->mmal_buffer, omvb->mmal_buffer->flags);
++ CLog::Log(LOGDEBUG, "%s::%s - MMAL: clear:%d flags:%x alpha:%d source:%d omvb:%p mmal:%p mflags:%x", CLASSNAME, __func__, clear, flags, alpha, source, omvb, omvb->mmal_buffer, omvb->mmal_buffer->flags);
+ #endif
+ // we only want to upload frames once
+ if (omvb->mmal_buffer->flags & MMAL_BUFFER_HEADER_FLAG_USER1)
+@@ -409,18 +494,23 @@ void CMMALRenderer::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
+ }
+ else if (m_format == RENDER_FMT_YUV420P)
+ {
+- if (buffer->mmal_buffer)
++ CYUVVideoBuffer *omvb = buffer->YUVBuffer;
++ if (omvb && omvb->mmal_buffer)
+ {
+- CLog::Log(LOGDEBUG, "%s::%s - %p %d f:%x", CLASSNAME, __func__, buffer->mmal_buffer, source, buffer->mmal_buffer->flags);
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - YUV: clear:%d flags:%x alpha:%d source:%d omvb:%p mmal:%p mflags:%x", CLASSNAME, __func__, clear, flags, alpha, source, omvb, omvb->mmal_buffer, omvb->mmal_buffer->flags);
++#endif
+ // we only want to upload frames once
+- if (buffer->mmal_buffer->flags & MMAL_BUFFER_HEADER_FLAG_USER1)
++ if (omvb->mmal_buffer->flags & MMAL_BUFFER_HEADER_FLAG_USER1)
+ return;
+ // sanity check it is not on display
+- buffer->mmal_buffer->flags |= MMAL_BUFFER_HEADER_FLAG_USER1 | MMAL_BUFFER_HEADER_FLAG_USER2;
+- mmal_port_send_buffer(m_vout_input, buffer->mmal_buffer);
++ omvb->Acquire();
++ omvb->mmal_buffer->flags |= MMAL_BUFFER_HEADER_FLAG_USER1 | MMAL_BUFFER_HEADER_FLAG_USER2;
++ omvb->mmal_buffer->user_data = omvb;
++ mmal_port_send_buffer(m_vout_input, omvb->mmal_buffer);
+ }
+ else
+- CLog::Log(LOGDEBUG, "%s::%s - No buffer to update", CLASSNAME, __func__);
++ CLog::Log(LOGDEBUG, "%s::%s - No buffer to update: clear:%d flags:%x alpha:%d source:%d", CLASSNAME, __func__, clear, flags, alpha, source);
+ }
+ else assert(0);
+ }
+@@ -429,10 +519,15 @@ void CMMALRenderer::FlipPage(int source)
+ {
+ CSingleLock lock(m_sharedSection);
+ if (!m_bConfigured || m_format == RENDER_FMT_BYPASS)
++ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s - not configured: source:%d", CLASSNAME, __func__, source);
++#endif
+ return;
++ }
+
+ #if defined(MMAL_DEBUG_VERBOSE)
+- CLog::Log(LOGDEBUG, "%s::%s - %d", CLASSNAME, __func__, source);
++ CLog::Log(LOGDEBUG, "%s::%s - source:%d", CLASSNAME, __func__, source);
+ #endif
+
+ m_iYV12RenderBuffer = source;
+@@ -466,6 +561,9 @@ unsigned int CMMALRenderer::PreInit()
+
+ void CMMALRenderer::ReleaseBuffers()
+ {
++#if defined(MMAL_DEBUG_VERBOSE)
++ CLog::Log(LOGDEBUG, "%s::%s", CLASSNAME, __func__);
++#endif
+ for (int i=0; i
+Date: Sat, 15 Aug 2015 14:27:10 +0100
+Subject: [PATCH 89/97] [mmalrenderer] Use half rate deinterlace when playing
+ video in background
+
+---
+ xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+index 756b845..56a9121 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+@@ -828,9 +828,17 @@ int CMMALVideo::Decode(uint8_t* pData, int iSize, double dts, double pts)
+ {
+ EDEINTERLACEMODE deinterlace_request = CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode;
+ EINTERLACEMETHOD interlace_method = g_renderManager.AutoInterlaceMethod(CMediaSettings::Get().GetCurrentVideoSettings().m_InterlaceMethod);
+-
+ bool deinterlace = m_interlace_mode != MMAL_InterlaceProgressive;
+
++ // we don't keep up when running at 60fps in the background so switch to half rate
++ if (!g_graphicsContext.IsFullScreenVideo())
++ {
++ if (interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED)
++ interlace_method = VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF;
++ if (interlace_method == VS_INTERLACEMETHOD_MMAL_BOB)
++ interlace_method = VS_INTERLACEMETHOD_MMAL_BOB_HALF;
++ }
++
+ if (m_hints.stills || deinterlace_request == VS_DEINTERLACEMODE_OFF || interlace_method == VS_INTERLACEMETHOD_NONE)
+ deinterlace = false;
+ else if (deinterlace_request == VS_DEINTERLACEMODE_FORCE)
+
+From ba9947c5c466c1ec93388c3f87d07ca4e2a21bb2 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Thu, 13 Aug 2015 16:30:31 +0100
+Subject: [PATCH 90/97] squash: rbp: Remove HW mouse pointer when mouse is
+ disabled in GUI
+
+---
+ xbmc/windowing/WinEventsLinux.cpp | 33 ++++++++++++++++++++++++---------
+ 1 file changed, 24 insertions(+), 9 deletions(-)
+
+diff --git a/xbmc/windowing/WinEventsLinux.cpp b/xbmc/windowing/WinEventsLinux.cpp
+index bde7649..89aca2b 100644
+--- a/xbmc/windowing/WinEventsLinux.cpp
++++ b/xbmc/windowing/WinEventsLinux.cpp
+@@ -180,28 +180,40 @@ bool CWinEventsLinux::MessagePump()
+ bool ret = false;
+ XBMC_Event event = {0};
+ #ifdef TARGET_RASPBERRY_PI
++ bool active = CInputManager::Get().IsMouseActive();
+ int64_t Now = CurrentHostCounter();
+- int state = CInputManager::Get().GetMouseState() - 1;
+- if (m_mouse_state != state)
++ if (!active)
+ {
+- //printf("%s: %d->%d\n", __func__, m_mouse_state, state);
+- if (state >= 0 && state < (int)(sizeof m_cursors/sizeof *m_cursors) && m_cursors[state].pixels)
++ if (m_mouse_state != -1)
+ {
+- g_RBP.set_cursor(m_cursors[state].pixels, m_cursors[state].width, m_cursors[state].height, 0, 0);
++ g_RBP.update_cursor(0, 0, 0);
++ m_mouse_state = -1;
++ }
++ }
++ else
++ {
++ int state = CInputManager::Get().GetMouseState() - 1;
++ if (m_mouse_state != state)
++ {
++ //printf("%s: %d->%d\n", __func__, m_mouse_state, state);
++ if (state >= 0 && state < (int)(sizeof m_cursors/sizeof *m_cursors) && m_cursors[state].pixels)
++ {
++ g_RBP.set_cursor(m_cursors[state].pixels, m_cursors[state].width, m_cursors[state].height, 0, 0);
++ }
++ m_mouse_state = state;
+ }
+- m_mouse_state = state;
+ }
+ #endif
+ while (1)
+ {
+ event = m_devices.ReadEvent();
+ #ifdef TARGET_RASPBERRY_PI
+- if (event.type == XBMC_MOUSEMOTION || event.type == XBMC_MOUSEBUTTONDOWN || event.type == XBMC_MOUSEBUTTONUP)
++ if (active && (event.type == XBMC_MOUSEMOTION || event.type == XBMC_MOUSEBUTTONDOWN || event.type == XBMC_MOUSEBUTTONUP))
+ {
+ if (event.type == XBMC_MOUSEMOTION)
+ g_RBP.update_cursor(event.motion.x, event.motion.y, 1);
+ m_last_mouse_move_time = Now;
+- //printf("%s: %d,%d %d %d,%d (%d,%d)\n", __func__, event.motion.type, event.motion.which, event.motion.state, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel);
++ //printf("%s: %d,%d %d %d,%d (%d,%d) act:%d\n", __func__, event.motion.type, event.motion.which, event.motion.state, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel, CInputManager::Get().IsMouseActive());
+ }
+ #endif
+ if (event.type != XBMC_NOEVENT)
+@@ -215,8 +227,11 @@ bool CWinEventsLinux::MessagePump()
+ }
+
+ #ifdef TARGET_RASPBERRY_PI
+- if (Now - m_last_mouse_move_time > 5 * 1000000000LL)
++ if (active && Now - m_last_mouse_move_time > 5 * 1000000000LL)
++ {
+ g_RBP.update_cursor(0, 0, 0);
++ m_mouse_state = -1;
++ }
+ #endif
+ return ret;
+ }
+
+From 4b94bd782b8e7f1cdec7c1d50e85ef545f48fc06 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sun, 9 Aug 2015 18:01:34 +0100
+Subject: [PATCH 91/97] [rbp] Add ntsc version of 48Hz mode
+
+---
+ xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
+index 25a97ad..25475bf 100644
+--- a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
++++ b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
+@@ -683,7 +683,7 @@ void CEGLNativeTypeRaspberryPI::GetSupportedModes(HDMI_RES_GROUP_T group, std::v
+ CLog::Log(LOGDEBUG, "EGL mode %d: %s (%.2f) %s%s:%x\n", i, res.strMode.c_str(), res.fPixelRatio,
+ tv->native ? "N" : "", tv->scan_mode ? "I" : "", tv->code);
+
+- if (tv->frame_rate == 24 || tv->frame_rate == 30 || tv->frame_rate == 60)
++ if (tv->frame_rate == 24 || tv->frame_rate == 30 || tv->frame_rate == 48 || tv->frame_rate == 60 || tv->frame_rate == 72)
+ {
+ RESOLUTION_INFO res2 = res;
+ res2.fRefreshRate = (float)tv->frame_rate * (1000.0f/1001.0f);
+
+From f84267b07136093e2363057ba6d1372142182a80 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sat, 22 Aug 2015 23:06:56 +0100
+Subject: [PATCH 92/97] [dvdmessage] Increase timeout on
+ CDVDMsgGeneralSynchronize
+
+---
+ xbmc/cores/dvdplayer/DVDMessage.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xbmc/cores/dvdplayer/DVDMessage.cpp b/xbmc/cores/dvdplayer/DVDMessage.cpp
+index ae745c6..73fff98 100644
+--- a/xbmc/cores/dvdplayer/DVDMessage.cpp
++++ b/xbmc/cores/dvdplayer/DVDMessage.cpp
+@@ -91,7 +91,7 @@ bool CDVDMsgGeneralSynchronize::Wait(unsigned int milliseconds, unsigned int sou
+
+ void CDVDMsgGeneralSynchronize::Wait(volatile bool *abort, unsigned int source)
+ {
+- while(!Wait(100, source))
++ while(!Wait(200, source))
+ {
+ if(abort && *abort)
+ return;
+
+From d04c4d341ca27d56a762a6303657561280bc2e35 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sat, 22 Aug 2015 23:19:15 +0100
+Subject: [PATCH 93/97] [mmalcodec] refector the decoder flags logic to avoid
+ stalls on seek
+
+---
+ xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 47 +++++++++++++---------
+ 1 file changed, 28 insertions(+), 19 deletions(-)
+
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+index 56a9121..557faa2 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+@@ -253,12 +253,20 @@ void CMMALVideo::dec_output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buf
+ {
+ if (buffer->length > 0)
+ {
++ if (buffer->pts != MMAL_TIME_UNKNOWN)
++ m_decoderPts = buffer->pts;
++ else if (buffer->dts != MMAL_TIME_UNKNOWN)
++ m_decoderPts = buffer->dts;
++
+ assert(!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_DECODEONLY));
++ CMMALVideoBuffer *omvb = NULL;
++ if (!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_CORRUPTED));
++ omvb = new CMMALVideoBuffer(this);
++ if (g_advancedSettings.CanLogComponent(LOGVIDEO))
++ CLog::Log(LOGDEBUG, "%s::%s - %p (%p) buffer_size(%u) dts:%.3f pts:%.3f flags:%x:%x",
++ CLASSNAME, __func__, buffer, omvb, buffer->length, buffer->dts*1e-6, buffer->pts*1e-6, buffer->flags, buffer->type->video.flags);
++ if (omvb)
+ {
+- CMMALVideoBuffer *omvb = new CMMALVideoBuffer(this);
+- if (g_advancedSettings.CanLogComponent(LOGVIDEO))
+- CLog::Log(LOGDEBUG, "%s::%s - %p (%p) buffer_size(%u) dts:%.3f pts:%.3f flags:%x:%x",
+- CLASSNAME, __func__, buffer, omvb, buffer->length, buffer->dts*1e-6, buffer->pts*1e-6, buffer->flags, buffer->type->video.flags);
+ omvb->mmal_buffer = buffer;
+ buffer->user_data = (void *)omvb;
+ omvb->width = m_decoded_width;
+@@ -861,33 +869,39 @@ int CMMALVideo::Decode(uint8_t* pData, int iSize, double dts, double pts)
+ if (!demuxer_bytes)
+ break;
+ }
+- int ret = 0;
+ if (pts != DVD_NOPTS_VALUE)
+ m_demuxerPts = pts;
+ else if (dts != DVD_NOPTS_VALUE)
+ m_demuxerPts = dts;
++
++ if (m_demuxerPts != DVD_NOPTS_VALUE && m_decoderPts == DVD_NOPTS_VALUE)
++ m_decoderPts = m_demuxerPts;
++
++ // we've built up quite a lot of data in decoder - try to throttle it
+ double queued = m_decoderPts != DVD_NOPTS_VALUE && m_demuxerPts != DVD_NOPTS_VALUE ? m_demuxerPts - m_decoderPts : 0.0;
+- if (mmal_queue_length(m_dec_input_pool->queue) > 0 && !m_demux_queue_length && queued <= DVD_MSEC_TO_TIME(1000))
+- ret |= VC_BUFFER;
+- else
+- m_preroll = false;
++ bool full = queued > DVD_MSEC_TO_TIME(1000);
++ bool want_buffer = mmal_queue_length(m_dec_input_pool->queue) > 0 && !m_demux_queue_length && !full;
++ int ret = VC_BUFFER;
+
+- if (m_preroll && m_output_ready.size() >= GetAllowedReferences())
++ if (m_preroll && (!want_buffer || m_output_ready.size() >= GetAllowedReferences()))
+ m_preroll = false;
+
+ if (!m_output_ready.empty() && !m_preroll)
+ {
+ ret |= VC_PICTURE;
+ // renderer is low - give priority to returning pictures
+- if (0 && m_codecControlFlags & DVD_CODEC_CTRL_DRAIN)
++ if (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN || !want_buffer || full)
+ ret &= ~VC_BUFFER;
+ }
+- if (!ret)
+- Sleep(10); // otherwise we busy spin
+
+ if (g_advancedSettings.CanLogComponent(LOGVIDEO))
+- CLog::Log(LOGDEBUG, "%s::%s - ret(%x) pics(%d) demux_queue(%d) space(%d) queued(%.2f) preroll(%d) flags(%x)", CLASSNAME, __func__, ret, m_output_ready.size(), m_demux_queue_length, mmal_queue_length(m_dec_input_pool->queue) * m_dec_input->buffer_size, queued*1e-6, m_preroll, m_codecControlFlags);
++ CLog::Log(LOGDEBUG, "%s::%s - ret(%x) pics(%d) demux_queue(%d) space(%d) queued(%.2f) (%.2f:%.2f) preroll(%d) flags(%x) full(%d)", CLASSNAME, __func__, ret, m_output_ready.size(), m_demux_queue_length, mmal_queue_length(m_dec_input_pool->queue) * m_dec_input->buffer_size, queued*1e-6, m_demuxerPts*1e-6, m_decoderPts*1e-6, m_preroll, m_codecControlFlags, full);
+
++ if (full)
++ {
++ lock.Leave();
++ Sleep(queued * 1e-6 * 10.0);
++ }
+ return ret;
+ }
+
+@@ -1046,11 +1060,6 @@ bool CMMALVideo::GetPicture(DVDVideoPicture* pDvdVideoPicture)
+ return false;
+ }
+
+- if (pDvdVideoPicture->pts != DVD_NOPTS_VALUE)
+- m_decoderPts = pDvdVideoPicture->pts;
+- else
+- m_decoderPts = pDvdVideoPicture->dts;
+-
+ return true;
+ }
+
+
+From 188d7b4c301e5c1e632c64710adca7365a92e742 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sun, 23 Aug 2015 18:57:34 +0100
+Subject: [PATCH 94/97] [omxplayer] Flush EOS message from queue to avoid it
+ turning up after a seek
+
+A GENERAL_EOS is queued when demuxer reaches EOF but playback may continue for several seconds.
+It should be possible to seek backwards during this playback time, but the GENERAL_EOS may still be queued after flushing
+and it unwantedly causes stream to stall after the seek. So flush these obsolete messages when flushing data packets
+---
+ xbmc/cores/omxplayer/OMXPlayerAudio.cpp | 1 +
+ xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
+index c2da2d2..1c3b904 100644
+--- a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
++++ b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
+@@ -495,6 +495,7 @@ void OMXPlayerAudio::Flush()
+ {
+ m_flush = true;
+ m_messageQueue.Flush();
++ m_messageQueue.Flush(CDVDMsg::GENERAL_EOF);
+ m_messageQueue.Put( new CDVDMsg(CDVDMsg::GENERAL_FLUSH), 1);
+ }
+
+diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
+index 4ad66a8..276857f 100644
+--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
++++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
+@@ -535,6 +535,7 @@ void OMXPlayerVideo::Flush()
+ {
+ m_flush = true;
+ m_messageQueue.Flush();
++ m_messageQueue.Flush(CDVDMsg::GENERAL_EOF);
+ m_messageQueue.Put(new CDVDMsg(CDVDMsg::GENERAL_FLUSH), 1);
+ }
+
+
+From 1c8e06bda0301646a4fc6ec66beca5103da6f819 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Mon, 13 Jul 2015 19:27:25 +0100
+Subject: [PATCH 95/97] [rbp] Enable QPU based deinterlace and remove
+ resolution limit
+
+---
+ xbmc/cores/VideoRenderers/MMALRenderer.cpp | 2 +-
+ xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp | 5 ++---
+ xbmc/cores/omxplayer/OMXVideo.cpp | 6 +++---
+ 3 files changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+index 6e97c1c..e278184 100644
+--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp
++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+@@ -681,7 +681,7 @@ bool CMMALRenderer::Supports(ESCALINGMETHOD method)
+
+ EINTERLACEMETHOD CMMALRenderer::AutoInterlaceMethod()
+ {
+- return VS_INTERLACEMETHOD_MMAL_ADVANCED;
++ return m_sourceWidth * m_sourceHeight <= 576 * 720 ? VS_INTERLACEMETHOD_MMAL_ADVANCED : VS_INTERLACEMETHOD_MMAL_BOB;
+ }
+
+ void CMMALRenderer::SetVideoRect(const CRect& InSrcRect, const CRect& InDestRect)
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+index 557faa2..a28a5e3 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/MMALCodec.cpp
+@@ -355,12 +355,11 @@ bool CMMALVideo::CreateDeinterlace(EINTERLACEMETHOD interlace_method)
+ CLog::Log(LOGERROR, "%s::%s Failed to create deinterlace component (status=%x %s)", CLASSNAME, __func__, status, mmal_status_to_string(status));
+ return false;
+ }
+- bool advanced_deinterlace = (interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF) &&
+- m_decoded_width * m_decoded_height <= 576 * 720;
++ bool advanced_deinterlace = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF;
+ bool half_framerate = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF || interlace_method == VS_INTERLACEMETHOD_MMAL_BOB_HALF;
+
+ MMAL_PARAMETER_IMAGEFX_PARAMETERS_T imfx_param = {{MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, sizeof(imfx_param)},
+- advanced_deinterlace ? MMAL_PARAM_IMAGEFX_DEINTERLACE_ADV : MMAL_PARAM_IMAGEFX_DEINTERLACE_FAST, 3, {3, 0, half_framerate }};
++ advanced_deinterlace ? MMAL_PARAM_IMAGEFX_DEINTERLACE_ADV : MMAL_PARAM_IMAGEFX_DEINTERLACE_FAST, 4, {3, 0, half_framerate, 1 }};
+
+ status = mmal_port_parameter_set(m_deint->output[0], &imfx_param.hdr);
+ if (status != MMAL_SUCCESS)
+diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp
+index 1a08aa9..fbb395d 100644
+--- a/xbmc/cores/omxplayer/OMXVideo.cpp
++++ b/xbmc/cores/omxplayer/OMXVideo.cpp
+@@ -244,8 +244,7 @@ bool COMXVideo::PortSettingsChanged()
+ if(m_deinterlace)
+ {
+ EINTERLACEMETHOD interlace_method = g_renderManager.AutoInterlaceMethod(CMediaSettings::Get().GetCurrentVideoSettings().m_InterlaceMethod);
+- bool advanced_deinterlace = (interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF) &&
+- port_image.format.video.nFrameWidth * port_image.format.video.nFrameHeight <= 576 * 720;
++ bool advanced_deinterlace = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED || interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF;
+ bool half_framerate = interlace_method == VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF || interlace_method == VS_INTERLACEMETHOD_MMAL_BOB_HALF;
+ if (!advanced_deinterlace)
+ {
+@@ -266,10 +265,11 @@ bool COMXVideo::PortSettingsChanged()
+ OMX_INIT_STRUCTURE(image_filter);
+
+ image_filter.nPortIndex = m_omx_image_fx.GetOutputPort();
+- image_filter.nNumParams = 3;
++ image_filter.nNumParams = 4;
+ image_filter.nParams[0] = 3;
+ image_filter.nParams[1] = 0;
+ image_filter.nParams[2] = half_framerate;
++ image_filter.nParams[3] = 1; // qpu
+ if (!advanced_deinterlace)
+ image_filter.eImageFilter = OMX_ImageFilterDeInterlaceFast;
+ else
+
+From f987b46adee7cd8ce0834cf092581cc1dbe5954b Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Sun, 16 Aug 2015 15:46:33 +0100
+Subject: [PATCH 96/97] [mmalrenderer] Allow deinterlace with software decode
+
+---
+ xbmc/cores/VideoRenderers/MMALRenderer.cpp | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/xbmc/cores/VideoRenderers/MMALRenderer.cpp b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+index e278184..1eb8936 100644
+--- a/xbmc/cores/VideoRenderers/MMALRenderer.cpp
++++ b/xbmc/cores/VideoRenderers/MMALRenderer.cpp
+@@ -647,6 +647,13 @@ bool CMMALRenderer::Supports(EDEINTERLACEMODE mode)
+
+ bool CMMALRenderer::Supports(EINTERLACEMETHOD method)
+ {
++ if (m_format == RENDER_FMT_YUV420P)
++ {
++ if (method == VS_INTERLACEMETHOD_DEINTERLACE_HALF)
++ return true;
++ else
++ return false;
++ }
+ if (method == VS_INTERLACEMETHOD_AUTO)
+ return true;
+ if (method == VS_INTERLACEMETHOD_MMAL_ADVANCED)
+@@ -681,6 +688,8 @@ bool CMMALRenderer::Supports(ESCALINGMETHOD method)
+
+ EINTERLACEMETHOD CMMALRenderer::AutoInterlaceMethod()
+ {
++ if (m_format == RENDER_FMT_YUV420P)
++ return VS_INTERLACEMETHOD_DEINTERLACE_HALF;
+ return m_sourceWidth * m_sourceHeight <= 576 * 720 ? VS_INTERLACEMETHOD_MMAL_ADVANCED : VS_INTERLACEMETHOD_MMAL_BOB;
+ }
+
+
+From e14ecaac22733e60969ccb82ce57020f640d3f67 Mon Sep 17 00:00:00 2001
+From: popcornmix
+Date: Mon, 31 Aug 2015 15:41:11 +0100
+Subject: [PATCH 97/97] [peripherals] Move initialisation after language init
+ to fix notifications
+
+Lots of complaints on Isengard are master that CEC generates an empty notification popup on boot.
+The problem is that peripherals are initialised before the language files are loaded so
+g_localizeStrings.Get returns a blank string.
+
+Move the periphal initialisation after the language initialisation to avoid this.
+---
+ xbmc/Application.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
+index 5776389..a2a8691 100644
+--- a/xbmc/Application.cpp
++++ b/xbmc/Application.cpp
+@@ -673,8 +673,6 @@ bool CApplication::Create()
+ return false;
+ }
+
+- g_peripherals.Initialise();
+-
+ // Create the Mouse, Keyboard, Remote, and Joystick devices
+ // Initialize after loading settings to get joystick deadzone setting
+ CInputManager::Get().InitializeInputs();
+@@ -1117,6 +1115,8 @@ bool CApplication::Initialize()
+ if (!LoadLanguage(false))
+ return false;
+
++ g_peripherals.Initialise();
++
+ // Load curl so curl_global_init gets called before any service threads
+ // are started. Unloading will have no effect as curl is never fully unloaded.
+ // To quote man curl_global_init:
diff --git a/scripts/get b/scripts/get
index ad64ad19e5..739735b598 100755
--- a/scripts/get
+++ b/scripts/get
@@ -33,7 +33,7 @@ if [ -n "$PKG_URL" ]; then
PACKAGE="$SOURCES/$1/$SOURCE_NAME"
PACKAGE_MIRROR="$DISTRO_MIRROR/$PKG_NAME/$SOURCE_NAME"
[ "$VERBOSE" != "yes" ] && WGET_OPT=-q
- WGET_CMD="wget --passive-ftp --no-check-certificate -c $WGET_OPT -P $SOURCES/$1"
+ WGET_CMD="wget --timeout=30 --passive-ftp --no-check-certificate -c $WGET_OPT -P $SOURCES/$1"
NBWGET="1"