|
|
@@ -1,1279 +0,0 @@
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/addons/resource.language.en_gb/resources/strings.po xbmc-15.0-Isengard/addons/resource.language.en_gb/resources/strings.po
|
|
|
---- xbmc-15.0-Isengard.orig/addons/resource.language.en_gb/resources/strings.po 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/addons/resource.language.en_gb/resources/strings.po 2015-07-25 08:01:50.578340000 -0500
|
|
|
-@@ -16642,3 +16642,28 @@
|
|
|
- msgctxt "#38016"
|
|
|
- msgid "%d fps"
|
|
|
- msgstr ""
|
|
|
-+
|
|
|
-+#: system/peripherals.xml
|
|
|
-+msgctxt "#38050"
|
|
|
-+msgid "Remote button press delay before repeating (ms)"
|
|
|
-+msgstr ""
|
|
|
-+
|
|
|
-+#: system/peripherals.xml
|
|
|
-+msgctxt "#38051"
|
|
|
-+msgid "Remote button press repeat rate (ms)"
|
|
|
-+msgstr ""
|
|
|
-+
|
|
|
-+#: system/peripherals.xml
|
|
|
-+msgctxt "#38052"
|
|
|
-+msgid "Remote button press release time (ms)"
|
|
|
-+msgstr ""
|
|
|
-+
|
|
|
-+#: system/settings/rbp.xml system/settings/imx6.xml
|
|
|
-+msgctxt "#38120"
|
|
|
-+msgid "Support 8 channel DTS-HD audio decoding"
|
|
|
-+msgstr ""
|
|
|
-+
|
|
|
-+#: system/settings/rbp.xml system/settings/imx6.xml
|
|
|
-+msgctxt "#38121"
|
|
|
-+msgid "Enables decoding of high quality DTS-HD audio streams. Note: This increases CPU load and is only available when DTS and DTS-HD audio passthrough are disabled."
|
|
|
-+msgstr ""
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/docs/README.linux xbmc-15.0-Isengard/docs/README.linux
|
|
|
---- xbmc-15.0-Isengard.orig/docs/README.linux 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/docs/README.linux 2015-07-25 08:01:50.586339999 -0500
|
|
|
-@@ -44,7 +44,7 @@
|
|
|
- external libraries enabled).
|
|
|
-
|
|
|
- Build-Depends: autoconf, automake, autopoint, autotools-dev, cmake, curl,
|
|
|
-- debhelper (>= 7.0.50~), default-jre, gawk, gperf, libao-dev, libasound2-dev,
|
|
|
-+ dcadec-dev, default-jre, gawk, gperf, libao-dev, libasound2-dev,
|
|
|
- libass-dev (>= 0.9.8), libavahi-client-dev, libavahi-common-dev, libbluetooth-dev,
|
|
|
- libbluray-dev, libboost-dev, libboost-thread-dev, libbz2-dev, libcap-dev, libcdio-dev,
|
|
|
- libcec-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libcwiid-dev,
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/docs/README.ubuntu xbmc-15.0-Isengard/docs/README.ubuntu
|
|
|
---- xbmc-15.0-Isengard.orig/docs/README.ubuntu 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/docs/README.ubuntu 2015-07-25 08:01:50.586339999 -0500
|
|
|
-@@ -82,7 +82,7 @@
|
|
|
-
|
|
|
- For Ubuntu (all versions >= 7.04):
|
|
|
-
|
|
|
-- $ sudo apt-get install automake bison build-essential cmake curl cvs default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcurl3 libcurl4-gnutls-dev libdbus-1-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libgif-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev liblzo2-dev libmicrohttpd-dev libmodplug-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsdl2-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libvdpau-dev libvorbis-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev
|
|
|
-+ $ sudo apt-get install automake bison build-essential cmake curl cvs dcadec-dev default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcurl3 libcurl4-gnutls-dev libdbus-1-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libgif-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev liblzo2-dev libmicrohttpd-dev libmodplug-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsdl2-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libvdpau-dev libvorbis-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev
|
|
|
-
|
|
|
- For >= 10.10:
|
|
|
- $ sudo apt-get install autopoint libltdl-dev
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/Makefile.in xbmc-15.0-Isengard/Makefile.in
|
|
|
---- xbmc-15.0-Isengard.orig/Makefile.in 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/Makefile.in 2015-07-25 08:01:50.566340001 -0500
|
|
|
-@@ -445,7 +445,7 @@
|
|
|
- @FFMPEG_LIBDIR@/libpostproc.a \
|
|
|
- @FFMPEG_LIBDIR@/libswscale.a
|
|
|
- DYNOBJSXBMC+= $(FFMPEGOBJS)
|
|
|
--LIBS+= @GNUTLS_ALL_LIBS@ @VORBISENC_ALL_LIBS@
|
|
|
-+LIBS+= @GNUTLS_ALL_LIBS@ @VORBISENC_ALL_LIBS@ @DCADEC_ALL_LIBS@
|
|
|
-
|
|
|
- $(FFMPEGOBJS): dvdpcodecs
|
|
|
- endif
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/system/keyboardlayouts/english.xml xbmc-15.0-Isengard/system/keyboardlayouts/english.xml
|
|
|
---- xbmc-15.0-Isengard.orig/system/keyboardlayouts/english.xml 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/system/keyboardlayouts/english.xml 2015-07-25 08:01:50.526340002 -0500
|
|
|
-@@ -8,14 +8,14 @@
|
|
|
- <keyboard>
|
|
|
- <row>1234567890</row>
|
|
|
- <row>qwertyuiop</row>
|
|
|
-- <row>asdfghjkl</row>
|
|
|
-- <row>zxcvbnm</row>
|
|
|
-+ <row>asdfghjkl:</row>
|
|
|
-+ <row>zxcvbnm./@</row>
|
|
|
- </keyboard>
|
|
|
- <keyboard modifiers="shift">
|
|
|
- <row>1234567890</row>
|
|
|
- <row>QWERTYUIOP</row>
|
|
|
-- <row>ASDFGHJKL</row>
|
|
|
-- <row>ZXCVBNM</row>
|
|
|
-+ <row>ASDFGHJKL:</row>
|
|
|
-+ <row>ZXCVBNM./@</row>
|
|
|
- </keyboard>
|
|
|
- <keyboard modifiers="symbol,shift+symbol">
|
|
|
- <row>)!@#$%^&*(</row>
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/system/peripherals.xml xbmc-15.0-Isengard/system/peripherals.xml
|
|
|
---- xbmc-15.0-Isengard.orig/system/peripherals.xml 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/system/peripherals.xml 2015-07-25 08:01:50.534339999 -0500
|
|
|
-@@ -30,7 +30,9 @@
|
|
|
- <setting key="device_type" type="int" value="1" configurable="0" />
|
|
|
- <setting key="wake_devices_advanced" type="string" value="" configurable="0" />
|
|
|
- <setting key="standby_devices_advanced" type="string" value="" configurable="0" />
|
|
|
-- <setting key="double_tap_timeout_ms" type="int" min="0" value="300" configurable="0" />
|
|
|
-+ <setting key="double_tap_timeout_ms" type="int" min="50" max="1000" step="50" value="300" label="38050" order="16" />
|
|
|
-+ <setting key="button_repeat_rate_ms" type="int" min="0" max="250" step="10" value="0" label="38051" order="17" />
|
|
|
-+ <setting key="button_release_delay_ms" type="int" min="0" max="500" step="50" value="0" label="38052" order="18" />
|
|
|
- </peripheral>
|
|
|
-
|
|
|
- <peripheral vendor_product="2548:1001,2548:1002" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec">
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/system/settings/imx6.xml xbmc-15.0-Isengard/system/settings/imx6.xml
|
|
|
---- xbmc-15.0-Isengard.orig/system/settings/imx6.xml 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/system/settings/imx6.xml 2015-07-25 08:01:50.578340000 -0500
|
|
|
-@@ -13,6 +13,26 @@
|
|
|
- </setting>
|
|
|
- </group>
|
|
|
- </category>
|
|
|
-+ <category id="audiooutput">
|
|
|
-+ <group id="1">
|
|
|
-+ <setting id="audiooutput.supportdtshdcpudecoding" type="boolean" label="38120" help="38121">
|
|
|
-+ <level>2</level>
|
|
|
-+ <default>false</default>
|
|
|
-+ <control type="toggle" />
|
|
|
-+ <dependencies>
|
|
|
-+ <dependency type="enable">
|
|
|
-+ <or>
|
|
|
-+ <condition setting="audiooutput.passthrough" operator="is">false</condition>
|
|
|
-+ <and>
|
|
|
-+ <condition setting="audiooutput.dtshdpassthrough" operator="is">false</condition>
|
|
|
-+ <condition setting="audiooutput.dtspassthrough" operator="is">false</condition>
|
|
|
-+ </and>
|
|
|
-+ </or>
|
|
|
-+ </dependency>
|
|
|
-+ </dependencies>
|
|
|
-+ </setting>
|
|
|
-+ </group>
|
|
|
-+ </category>
|
|
|
- </section>
|
|
|
- <section id="videos">
|
|
|
- <category id="videoacceleration">
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/system/settings/rbp2.xml xbmc-15.0-Isengard/system/settings/rbp2.xml
|
|
|
---- xbmc-15.0-Isengard.orig/system/settings/rbp2.xml 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/system/settings/rbp2.xml 2015-07-25 08:01:50.578340000 -0500
|
|
|
-@@ -19,6 +19,11 @@
|
|
|
- </group>
|
|
|
- </category>
|
|
|
- <category id="audiooutput">
|
|
|
-+ <group id="1">
|
|
|
-+ <setting id="audiooutput.supportdtshdcpudecoding">
|
|
|
-+ <default>true</default>
|
|
|
-+ </setting>
|
|
|
-+ </group>
|
|
|
- <group id="3">
|
|
|
- <setting id="audiooutput.ac3transcode" help="36429">
|
|
|
- </setting>
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/system/settings/rbp.xml xbmc-15.0-Isengard/system/settings/rbp.xml
|
|
|
---- xbmc-15.0-Isengard.orig/system/settings/rbp.xml 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/system/settings/rbp.xml 2015-07-25 08:01:50.578340000 -0500
|
|
|
-@@ -76,6 +76,11 @@
|
|
|
- <setting id="audiooutput.processquality">
|
|
|
- <default>101</default> <!-- AE_QUALITY_GPU -->
|
|
|
- </setting>
|
|
|
-+ <setting id="audiooutput.supportdtshdcpudecoding" type="boolean" label="38120" help="38121">
|
|
|
-+ <level>2</level>
|
|
|
-+ <default>false</default>
|
|
|
-+ <control type="toggle" />
|
|
|
-+ </setting>
|
|
|
- </group>
|
|
|
- <group id="3">
|
|
|
- <setting id="audiooutput.ac3transcode" help="37024">
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch 1969-12-31 18:00:00.000000000 -0600
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch 2015-07-25 08:01:50.570340002 -0500
|
|
|
-@@ -0,0 +1,280 @@
|
|
|
-+From 519868de7d9c99876efcaf57d6a9683c22732cde Mon Sep 17 00:00:00 2001
|
|
|
-+From: Hendrik Leppkes <h.leppkes@gmail.com>
|
|
|
-+Date: Thu, 19 Mar 2015 23:56:22 +0100
|
|
|
-+Subject: [PATCH] avcodec: add libdcadec decoder
|
|
|
-+
|
|
|
-+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
|
|
|
-+---
|
|
|
-+ configure | 4 +
|
|
|
-+ libavcodec/Makefile | 1 +
|
|
|
-+ libavcodec/allcodecs.c | 1 +
|
|
|
-+ libavcodec/libdcadec.c | 197 +++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
-+ 4 files changed, 203 insertions(+)
|
|
|
-+ create mode 100644 libavcodec/libdcadec.c
|
|
|
-+
|
|
|
-+diff --git a/configure b/configure
|
|
|
-+index 1bf8f80..a449bc7 100755
|
|
|
-+--- a/configure
|
|
|
-++++ b/configure
|
|
|
-+@@ -210,6 +210,7 @@ External library support:
|
|
|
-+ --enable-libcdio enable audio CD grabbing with libcdio [no]
|
|
|
-+ --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
|
|
|
-+ and libraw1394 [no]
|
|
|
-++ --enable-libdcadec enable DCA decoding via libdcadec [no]
|
|
|
-+ --enable-libfaac enable AAC encoding via libfaac [no]
|
|
|
-+ --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
|
|
|
-+ --enable-libflite enable flite (voice synthesis) support via libflite [no]
|
|
|
-+@@ -1353,6 +1354,7 @@ EXTERNAL_LIBRARY_LIST="
|
|
|
-+ libcdio
|
|
|
-+ libcelt
|
|
|
-+ libdc1394
|
|
|
-++ libdcadec
|
|
|
-+ libfaac
|
|
|
-+ libfdk_aac
|
|
|
-+ libflite
|
|
|
-+@@ -2359,6 +2361,7 @@ vc1_parser_select="mpegvideo startcode vc1_decoder"
|
|
|
-+ # external libraries
|
|
|
-+ libaacplus_encoder_deps="libaacplus"
|
|
|
-+ libcelt_decoder_deps="libcelt"
|
|
|
-++libdcadec_decoder_deps="libdcadec"
|
|
|
-+ libfaac_encoder_deps="libfaac"
|
|
|
-+ libfaac_encoder_select="audio_frame_queue"
|
|
|
-+ libfdk_aac_decoder_deps="libfdk_aac"
|
|
|
-+@@ -4922,6 +4925,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
|
|
|
-+ { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
|
|
|
-+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
|
|
|
-+ enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
|
|
|
-++enabled libdcadec && require libdcadec dca_context.h dcadec_context_create -ldcadec
|
|
|
-+ enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
|
|
|
-+ enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
|
|
|
-+ flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
|
|
|
-+diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
|
|
-+index 4173f88..1a0c734 100644
|
|
|
-+--- a/libavcodec/Makefile
|
|
|
-++++ b/libavcodec/Makefile
|
|
|
-+@@ -732,6 +732,7 @@ OBJS-$(CONFIG_ELBG_FILTER) += elbg.o
|
|
|
-+ # external codec libraries
|
|
|
-+ OBJS-$(CONFIG_LIBAACPLUS_ENCODER) += libaacplus.o
|
|
|
-+ OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
|
|
|
-++OBJS-$(CONFIG_LIBDCADEC_DECODER) += libdcadec.o
|
|
|
-+ OBJS-$(CONFIG_LIBFAAC_ENCODER) += libfaac.o
|
|
|
-+ OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
|
|
|
-+ OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
|
|
|
-+diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
|
|
|
-+index 5194e74..bbf70a6 100644
|
|
|
-+--- a/libavcodec/allcodecs.c
|
|
|
-++++ b/libavcodec/allcodecs.c
|
|
|
-+@@ -512,6 +512,7 @@ void avcodec_register_all(void)
|
|
|
-+
|
|
|
-+ /* external libraries */
|
|
|
-+ REGISTER_DECODER(LIBCELT, libcelt);
|
|
|
-++ REGISTER_DECODER(LIBDCADEC, libdcadec)
|
|
|
-+ REGISTER_ENCODER(LIBFAAC, libfaac);
|
|
|
-+ REGISTER_ENCDEC (LIBFDK_AAC, libfdk_aac);
|
|
|
-+ REGISTER_ENCDEC (LIBGSM, libgsm);
|
|
|
-+diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c
|
|
|
-+new file mode 100644
|
|
|
-+index 0000000..d060db5
|
|
|
-+--- /dev/null
|
|
|
-++++ b/libavcodec/libdcadec.c
|
|
|
-+@@ -0,0 +1,197 @@
|
|
|
-++/*
|
|
|
-++ * libdcadec decoder wrapper
|
|
|
-++ * Copyright (C) 2015 Hendrik Leppkes
|
|
|
-++ *
|
|
|
-++ * This file is part of FFmpeg.
|
|
|
-++ *
|
|
|
-++ * FFmpeg is free software; you can redistribute it and/or
|
|
|
-++ * modify it under the terms of the GNU Lesser General Public
|
|
|
-++ * License as published by the Free Software Foundation; either
|
|
|
-++ * version 2.1 of the License, or (at your option) any later version.
|
|
|
-++ *
|
|
|
-++ * FFmpeg is distributed in the hope that it will be useful,
|
|
|
-++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
-++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
-++ * Lesser General Public License for more details.
|
|
|
-++ *
|
|
|
-++ * You should have received a copy of the GNU Lesser General Public
|
|
|
-++ * License along with FFmpeg; if not, write to the Free Software
|
|
|
-++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
-++ */
|
|
|
-++
|
|
|
-++#include <dca_context.h>
|
|
|
-++
|
|
|
-++#include "libavutil/avassert.h"
|
|
|
-++#include "libavutil/channel_layout.h"
|
|
|
-++#include "libavutil/common.h"
|
|
|
-++#include "libavutil/opt.h"
|
|
|
-++#include "avcodec.h"
|
|
|
-++#include "dca.h"
|
|
|
-++#include "dca_syncwords.h"
|
|
|
-++#include "internal.h"
|
|
|
-++
|
|
|
-++typedef struct DCADecContext {
|
|
|
-++ struct dcadec_context *ctx;
|
|
|
-++ uint8_t *buffer;
|
|
|
-++ int buffer_size;
|
|
|
-++} DCADecContext;
|
|
|
-++
|
|
|
-++static int dcadec_decode_frame(AVCodecContext *avctx, void *data,
|
|
|
-++ int *got_frame_ptr, AVPacket *avpkt)
|
|
|
-++{
|
|
|
-++ DCADecContext *s = avctx->priv_data;
|
|
|
-++ AVFrame *frame = data;
|
|
|
-++ int ret, i, k;
|
|
|
-++ int **samples, nsamples, channel_mask, sample_rate, bits_per_sample, profile;
|
|
|
-++ uint32_t mrk;
|
|
|
-++ uint8_t *input = avpkt->data;
|
|
|
-++ int input_size = avpkt->size;
|
|
|
-++
|
|
|
-++ /* convert bytestream syntax to RAW BE format if required */
|
|
|
-++ mrk = AV_RB32(input);
|
|
|
-++ if (mrk != DCA_SYNCWORD_CORE_BE && mrk != DCA_SYNCWORD_SUBSTREAM) {
|
|
|
-++ s->buffer = av_fast_realloc(s->buffer, &s->buffer_size, avpkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
|
|
|
-++ if (!s->buffer)
|
|
|
-++ return AVERROR(ENOMEM);
|
|
|
-++
|
|
|
-++ if ((ret = avpriv_dca_convert_bitstream(avpkt->data, avpkt->size, s->buffer, s->buffer_size)) < 0)
|
|
|
-++ return ret;
|
|
|
-++
|
|
|
-++ input = s->buffer;
|
|
|
-++ input_size = ret;
|
|
|
-++ }
|
|
|
-++
|
|
|
-++ if ((ret = dcadec_context_parse(s->ctx, input, input_size)) < 0) {
|
|
|
-++ av_log(avctx, AV_LOG_ERROR, "dcadec_context_parse() failed: %d (%s)\n", -ret, dcadec_strerror(ret));
|
|
|
-++ return AVERROR_EXTERNAL;
|
|
|
-++ }
|
|
|
-++ if ((ret = dcadec_context_filter(s->ctx, &samples, &nsamples, &channel_mask,
|
|
|
-++ &sample_rate, &bits_per_sample, &profile)) < 0) {
|
|
|
-++ av_log(avctx, AV_LOG_ERROR, "dcadec_context_filter() failed: %d (%s)\n", -ret, dcadec_strerror(ret));
|
|
|
-++ return AVERROR_EXTERNAL;
|
|
|
-++ }
|
|
|
-++
|
|
|
-++ avctx->channels = av_get_channel_layout_nb_channels(channel_mask);
|
|
|
-++ avctx->channel_layout = channel_mask;
|
|
|
-++ avctx->sample_rate = sample_rate;
|
|
|
-++
|
|
|
-++ av_assert0(bits_per_sample >= 16 && bits_per_sample <= 24);
|
|
|
-++ if (bits_per_sample == 16)
|
|
|
-++ avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
|
|
|
-++ else
|
|
|
-++ avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
|
|
|
-++
|
|
|
-++ avctx->bits_per_raw_sample = bits_per_sample;
|
|
|
-++
|
|
|
-++ switch (profile) {
|
|
|
-++ case DCADEC_PROFILE_DS:
|
|
|
-++ avctx->profile = FF_PROFILE_DTS;
|
|
|
-++ break;
|
|
|
-++ case DCADEC_PROFILE_DS_96_24:
|
|
|
-++ avctx->profile = FF_PROFILE_DTS_96_24;
|
|
|
-++ break;
|
|
|
-++ case DCADEC_PROFILE_DS_ES:
|
|
|
-++ avctx->profile = FF_PROFILE_DTS_ES;
|
|
|
-++ break;
|
|
|
-++ case DCADEC_PROFILE_HD_HRA:
|
|
|
-++ avctx->profile = FF_PROFILE_DTS_HD_HRA;
|
|
|
-++ break;
|
|
|
-++ case DCADEC_PROFILE_HD_MA:
|
|
|
-++ avctx->profile = FF_PROFILE_DTS_HD_MA;
|
|
|
-++ break;
|
|
|
-++ case DCADEC_PROFILE_EXPRESS:
|
|
|
-++ avctx->profile = FF_PROFILE_DTS_EXPRESS;
|
|
|
-++ break;
|
|
|
-++ case DCADEC_PROFILE_UNKNOWN:
|
|
|
-++ default:
|
|
|
-++ avctx->profile = FF_PROFILE_UNKNOWN;
|
|
|
-++ break;
|
|
|
-++ }
|
|
|
-++
|
|
|
-++ /* bitrate is only meaningful if there are no HD extensions, as they distort the bitrate */
|
|
|
-++ if (profile == DCADEC_PROFILE_DS || profile == DCADEC_PROFILE_DS_96_24 || profile == DCADEC_PROFILE_DS_ES) {
|
|
|
-++ struct dcadec_core_info *info = dcadec_context_get_core_info(s->ctx);
|
|
|
-++ avctx->bit_rate = info->bit_rate;
|
|
|
-++ dcadec_context_free_core_info(info);
|
|
|
-++ } else
|
|
|
-++ avctx->bit_rate = 0;
|
|
|
-++
|
|
|
-++ frame->nb_samples = nsamples;
|
|
|
-++ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
|
|
|
-++ return ret;
|
|
|
-++
|
|
|
-++ for (i = 0; i < avctx->channels; i++) {
|
|
|
-++ if (frame->format == AV_SAMPLE_FMT_S16P) {
|
|
|
-++ int16_t *plane = (int16_t *)frame->extended_data[i];
|
|
|
-++ for (k = 0; k < nsamples; k++)
|
|
|
-++ plane[k] = samples[i][k];
|
|
|
-++ } else {
|
|
|
-++ int32_t *plane = (int32_t *)frame->extended_data[i];
|
|
|
-++ int shift = 32 - bits_per_sample;
|
|
|
-++ for (k = 0; k < nsamples; k++)
|
|
|
-++ plane[k] = samples[i][k] << shift;
|
|
|
-++ }
|
|
|
-++ }
|
|
|
-++
|
|
|
-++ *got_frame_ptr = 1;
|
|
|
-++
|
|
|
-++ return avpkt->size;
|
|
|
-++}
|
|
|
-++
|
|
|
-++static av_cold void dcadec_flush(AVCodecContext *avctx)
|
|
|
-++{
|
|
|
-++ DCADecContext *s = avctx->priv_data;
|
|
|
-++ dcadec_context_clear(s->ctx);
|
|
|
-++}
|
|
|
-++
|
|
|
-++static av_cold int dcadec_close(AVCodecContext *avctx)
|
|
|
-++{
|
|
|
-++ DCADecContext *s = avctx->priv_data;
|
|
|
-++
|
|
|
-++ dcadec_context_destroy(s->ctx);
|
|
|
-++ s->ctx = NULL;
|
|
|
-++
|
|
|
-++ av_freep(&s->buffer);
|
|
|
-++
|
|
|
-++ return 0;
|
|
|
-++}
|
|
|
-++
|
|
|
-++static av_cold int dcadec_init(AVCodecContext *avctx)
|
|
|
-++{
|
|
|
-++ DCADecContext *s = avctx->priv_data;
|
|
|
-++
|
|
|
-++ s->ctx = dcadec_context_create(0);
|
|
|
-++ if (!s->ctx)
|
|
|
-++ return AVERROR(ENOMEM);
|
|
|
-++
|
|
|
-++ avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
|
|
|
-++ avctx->bits_per_raw_sample = 24;
|
|
|
-++
|
|
|
-++ return 0;
|
|
|
-++}
|
|
|
-++
|
|
|
-++static const AVProfile profiles[] = {
|
|
|
-++ { FF_PROFILE_DTS, "DTS" },
|
|
|
-++ { FF_PROFILE_DTS_ES, "DTS-ES" },
|
|
|
-++ { FF_PROFILE_DTS_96_24, "DTS 96/24" },
|
|
|
-++ { FF_PROFILE_DTS_HD_HRA, "DTS-HD HRA" },
|
|
|
-++ { FF_PROFILE_DTS_HD_MA, "DTS-HD MA" },
|
|
|
-++ { FF_PROFILE_DTS_EXPRESS, "DTS Express" },
|
|
|
-++ { FF_PROFILE_UNKNOWN },
|
|
|
-++};
|
|
|
-++
|
|
|
-++AVCodec ff_libdcadec_decoder = {
|
|
|
-++ .name = "libdcadec",
|
|
|
-++ .long_name = NULL_IF_CONFIG_SMALL("dcadec DCA decoder"),
|
|
|
-++ .type = AVMEDIA_TYPE_AUDIO,
|
|
|
-++ .id = AV_CODEC_ID_DTS,
|
|
|
-++ .priv_data_size = sizeof(DCADecContext),
|
|
|
-++ .init = dcadec_init,
|
|
|
-++ .decode = dcadec_decode_frame,
|
|
|
-++ .close = dcadec_close,
|
|
|
-++ .flush = dcadec_flush,
|
|
|
-++ .capabilities = CODEC_CAP_DR1 | CODEC_CAP_CHANNEL_CONF,
|
|
|
-++ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_S16P,
|
|
|
-++ AV_SAMPLE_FMT_NONE },
|
|
|
-++ .profiles = NULL_IF_CONFIG_SMALL(profiles),
|
|
|
-++};
|
|
|
-+--
|
|
|
-+1.9.1
|
|
|
-+
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch 1969-12-31 18:00:00.000000000 -0600
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch 2015-07-25 08:01:50.570340002 -0500
|
|
|
-@@ -0,0 +1,40 @@
|
|
|
-+From 4f3c31df3f569c7171ee9e651ddf479690367b9b Mon Sep 17 00:00:00 2001
|
|
|
-+From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <kasper93@gmail.com>
|
|
|
-+Date: Fri, 20 Mar 2015 01:58:25 +0100
|
|
|
-+Subject: [PATCH] avcodec: Fix libdcadec include dir
|
|
|
-+
|
|
|
-+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
|
|
|
-+---
|
|
|
-+ configure | 2 +-
|
|
|
-+ libavcodec/libdcadec.c | 2 +-
|
|
|
-+ 2 files changed, 2 insertions(+), 2 deletions(-)
|
|
|
-+
|
|
|
-+diff --git a/configure b/configure
|
|
|
-+index a449bc7..1ef83e3 100755
|
|
|
-+--- a/configure
|
|
|
-++++ b/configure
|
|
|
-+@@ -4925,7 +4925,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
|
|
|
-+ { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
|
|
|
-+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
|
|
|
-+ enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
|
|
|
-+-enabled libdcadec && require libdcadec dca_context.h dcadec_context_create -ldcadec
|
|
|
-++enabled libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec
|
|
|
-+ enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
|
|
|
-+ enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
|
|
|
-+ flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
|
|
|
-+diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c
|
|
|
-+index d060db5..a28b983 100644
|
|
|
-+--- a/libavcodec/libdcadec.c
|
|
|
-++++ b/libavcodec/libdcadec.c
|
|
|
-+@@ -19,7 +19,7 @@
|
|
|
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
-+ */
|
|
|
-+
|
|
|
-+-#include <dca_context.h>
|
|
|
-++#include <libdcadec/dca_context.h>
|
|
|
-+
|
|
|
-+ #include "libavutil/avassert.h"
|
|
|
-+ #include "libavutil/channel_layout.h"
|
|
|
-+--
|
|
|
-+1.9.1
|
|
|
-+
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch 1969-12-31 18:00:00.000000000 -0600
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch 2015-07-25 08:01:50.570340002 -0500
|
|
|
-@@ -0,0 +1,25 @@
|
|
|
-+From 11fe56c8bbf39cd0c3edbf0cd404dea400ff7e0c Mon Sep 17 00:00:00 2001
|
|
|
-+From: Hendrik Leppkes <h.leppkes@gmail.com>
|
|
|
-+Date: Thu, 19 Mar 2015 23:45:39 +0100
|
|
|
-+Subject: [PATCH] avcodec: add profile define for DTS Express
|
|
|
-+
|
|
|
-+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
|
|
|
-+---
|
|
|
-+ libavcodec/avcodec.h | 1 +
|
|
|
-+ 1 file changed, 1 insertion(+)
|
|
|
-+
|
|
|
-+diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
|
|
|
-+index cdc8aa1..48e212f 100644
|
|
|
-+--- a/libavcodec/avcodec.h
|
|
|
-++++ b/libavcodec/avcodec.h
|
|
|
-+@@ -2851,6 +2851,7 @@ typedef struct AVCodecContext {
|
|
|
-+ #define FF_PROFILE_DTS_96_24 40
|
|
|
-+ #define FF_PROFILE_DTS_HD_HRA 50
|
|
|
-+ #define FF_PROFILE_DTS_HD_MA 60
|
|
|
-++#define FF_PROFILE_DTS_EXPRESS 70
|
|
|
-+
|
|
|
-+ #define FF_PROFILE_MPEG2_422 0
|
|
|
-+ #define FF_PROFILE_MPEG2_HIGH 1
|
|
|
-+--
|
|
|
-+1.9.1
|
|
|
-+
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/autobuild.sh xbmc-15.0-Isengard/tools/depends/target/ffmpeg/autobuild.sh
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/autobuild.sh 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/autobuild.sh 2015-07-25 08:01:50.586339999 -0500
|
|
|
-@@ -159,6 +159,7 @@
|
|
|
- --disable-mips32r2 \
|
|
|
- --disable-mipsdspr1 \
|
|
|
- --disable-mipsdspr2 \
|
|
|
-+ --enable-libdcadec \
|
|
|
- ${FLAGS}
|
|
|
-
|
|
|
- make -j ${BUILDTHREADS}
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/Makefile xbmc-15.0-Isengard/tools/depends/target/ffmpeg/Makefile
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/ffmpeg/Makefile 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/ffmpeg/Makefile 2015-07-25 08:01:50.582339999 -0500
|
|
|
-@@ -1,6 +1,7 @@
|
|
|
- include ../../Makefile.include
|
|
|
- include FFMPEG-VERSION
|
|
|
--DEPS= ../../Makefile.include FFMPEG-VERSION Makefile
|
|
|
-+DEPS= ../../Makefile.include FFMPEG-VERSION Makefile \
|
|
|
-+ 0001-avcodec-add-libdcadec-decoder.patch 0002-avcodec-Fix-libdcadec-include-dir.patch 0003-avcodec-add-profile-define-for-DTS-Express.patch
|
|
|
-
|
|
|
- # set to "yes" to enable patching
|
|
|
- # we don't apply patches until we move to a vanilla ffmpeg tarball
|
|
|
-@@ -55,6 +56,7 @@
|
|
|
- ifeq ($(Configuration), Release)
|
|
|
- ffmpg_config += --disable-debug
|
|
|
- endif
|
|
|
-+ffmpg_config += --enable-libdcadec
|
|
|
-
|
|
|
-
|
|
|
- CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
|
|
|
-@@ -68,6 +70,9 @@
|
|
|
- rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
|
|
|
- cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
|
|
|
- cd $(PLATFORM); sed -i".bak" -e "s%pkg_config_default=pkg-config%export PKG_CONFIG_LIBDIR=$(PREFIX)/lib/pkgconfig \&\& pkg_config_default=$(NATIVEPREFIX)/bin/pkg-config%" configure
|
|
|
-+ cd $(PLATFORM); patch -p1 < ../0001-avcodec-add-libdcadec-decoder.patch
|
|
|
-+ cd $(PLATFORM); patch -p1 < ../0002-avcodec-Fix-libdcadec-include-dir.patch
|
|
|
-+ cd $(PLATFORM); patch -p1 < ../0003-avcodec-add-profile-define-for-DTS-Express.patch
|
|
|
- cd $(PLATFORM);\
|
|
|
- CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
|
- ./configure $(ffmpg_config)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/libdcadec/Makefile xbmc-15.0-Isengard/tools/depends/target/libdcadec/Makefile
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/libdcadec/Makefile 1969-12-31 18:00:00.000000000 -0600
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/libdcadec/Makefile 2015-07-25 08:01:50.586339999 -0500
|
|
|
-@@ -0,0 +1,39 @@
|
|
|
-+include ../../Makefile.include
|
|
|
-+DEPS= ../../Makefile.include Makefile
|
|
|
-+
|
|
|
-+# lib name, version
|
|
|
-+LIBNAME=libdcadec
|
|
|
-+VERSION=git-396e75652
|
|
|
-+SOURCE=$(LIBNAME)-$(VERSION)
|
|
|
-+ARCHIVE=$(SOURCE).tar.gz
|
|
|
-+
|
|
|
-+# configuration settings
|
|
|
-+
|
|
|
-+LIBDYLIB=$(PLATFORM)/.libs/lib$(LIBNAME).a
|
|
|
-+
|
|
|
-+CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
|
|
|
-+
|
|
|
-+CFLAGS += -std=gnu99
|
|
|
-+
|
|
|
-+all: $(LIBDYLIB) .installed-$(PLATFORM)
|
|
|
-+
|
|
|
-+$(TARBALLS_LOCATION)/$(ARCHIVE):
|
|
|
-+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
|
|
|
-+
|
|
|
-+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
|
|
|
-+ rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
|
|
|
-+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
|
|
|
-+
|
|
|
-+$(LIBDYLIB): $(PLATFORM)
|
|
|
-+ $(MAKE) -C $(PLATFORM) PREFIX=$(PREFIX) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" AR="$(AR)"
|
|
|
-+
|
|
|
-+.installed-$(PLATFORM): $(LIBDYLIB)
|
|
|
-+ $(MAKE) -C $(PLATFORM) PREFIX=$(PREFIX) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" AR="$(AR)" install
|
|
|
-+ touch $@
|
|
|
-+
|
|
|
-+clean:
|
|
|
-+ $(MAKE) -C $(PLATFORM) clean
|
|
|
-+ rm -f .installed-$(PLATFORM)
|
|
|
-+
|
|
|
-+distclean::
|
|
|
-+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/tools/depends/target/Makefile xbmc-15.0-Isengard/tools/depends/target/Makefile
|
|
|
---- xbmc-15.0-Isengard.orig/tools/depends/target/Makefile 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/tools/depends/target/Makefile 2015-07-25 08:01:50.570340002 -0500
|
|
|
-@@ -15,7 +15,7 @@
|
|
|
- python26 libshairplay \
|
|
|
- libplist libcec libbluray boost tinyxml dummy-libxbmc \
|
|
|
- libamplayer libssh taglib libusb libnfs libmp3lame \
|
|
|
-- pythonmodule-pil libxslt ffmpeg platform
|
|
|
-+ pythonmodule-pil libxslt ffmpeg platform libdcadec
|
|
|
-
|
|
|
- FFMPEG_DEPENDS = gnutls
|
|
|
-
|
|
|
-@@ -96,7 +96,7 @@
|
|
|
- pythonmodule-pil: $(ZLIB) libjpeg-turbo libpng freetype2 python26
|
|
|
- libsdl2: $(LINUX_SYSTEM_LIBS)
|
|
|
- libxslt: libgcrypt
|
|
|
--ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis $(FFMPEG_DEPENDS)
|
|
|
-+ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis libdcadec $(FFMPEG_DEPENDS)
|
|
|
- libcec: platform
|
|
|
-
|
|
|
- .installed-$(PLATFORM): $(DEPENDS)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/userdata/RssFeeds.xml xbmc-15.0-Isengard/userdata/RssFeeds.xml
|
|
|
---- xbmc-15.0-Isengard.orig/userdata/RssFeeds.xml 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/userdata/RssFeeds.xml 2015-07-25 08:01:50.462339999 -0500
|
|
|
-@@ -3,6 +3,7 @@
|
|
|
- <!-- RSS feeds. To have multiple feeds, just add a feed to the set. You can also have multiple sets. !-->
|
|
|
- <!-- To use different sets in your skin, each must be called from skin with a unique id. !-->
|
|
|
- <set id="1">
|
|
|
-+ <feed updateinterval="30">http://feeds.openelec.tv/news</feed>
|
|
|
- <feed updateinterval="30">http://feeds.xbmc.org/xbmc</feed>
|
|
|
- <feed updateinterval="30">http://feeds.xbmc.org/latest_xbmc_addons</feed>
|
|
|
- <feed updateinterval="30">http://feeds.xbmc.org/updated_xbmc_addons</feed>
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/addons/AddonCallbacksAddon.cpp xbmc-15.0-Isengard/xbmc/addons/AddonCallbacksAddon.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/addons/AddonCallbacksAddon.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/addons/AddonCallbacksAddon.cpp 2015-07-25 08:01:50.542340001 -0500
|
|
|
-@@ -180,6 +180,12 @@
|
|
|
- {
|
|
|
- CLog::Log(LOGDEBUG, "CAddonCallbacksAddon - %s - add-on '%s' requests setting '%s'", __FUNCTION__, addonHelper->m_addon->Name().c_str(), strSettingName);
|
|
|
-
|
|
|
-+ if (strcasecmp(strSettingName, "__addonpath__") == 0)
|
|
|
-+ {
|
|
|
-+ strcpy((char*) settingValue, addonHelper->m_addon->Path().c_str());
|
|
|
-+ return true;
|
|
|
-+ }
|
|
|
-+
|
|
|
- if (!addonHelper->m_addon->ReloadSettings())
|
|
|
- {
|
|
|
- CLog::Log(LOGERROR, "CAddonCallbacksAddon - %s - could't get settings for add-on '%s'", __FUNCTION__, addonHelper->m_addon->Name().c_str());
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/addons/Addon.cpp xbmc-15.0-Isengard/xbmc/addons/Addon.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/addons/Addon.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/addons/Addon.cpp 2015-07-25 08:01:50.494340001 -0500
|
|
|
-@@ -44,6 +44,10 @@
|
|
|
- #include <string.h>
|
|
|
- #include <ostream>
|
|
|
-
|
|
|
-+#include <iostream>
|
|
|
-+#include <dirent.h>
|
|
|
-+#include <sys/stat.h>
|
|
|
-+
|
|
|
- using XFILE::CDirectory;
|
|
|
- using XFILE::CFile;
|
|
|
- using namespace std;
|
|
|
-@@ -622,6 +626,13 @@
|
|
|
- return AddonVersion("0.0.0");
|
|
|
- }
|
|
|
-
|
|
|
-+void CallOEWrapper(const std::string& ID, bool disable)
|
|
|
-+{
|
|
|
-+ char cmd[255];
|
|
|
-+ snprintf(cmd, sizeof(cmd), "/usr/lib/openelec/systemd-addon-wrapper %s %d %d", ID.c_str(), disable);
|
|
|
-+ system(cmd);
|
|
|
-+}
|
|
|
-+
|
|
|
- void OnEnabled(const std::string& id)
|
|
|
- {
|
|
|
- // If the addon is a special, call enabled handler
|
|
|
-@@ -629,6 +640,11 @@
|
|
|
- if (CAddonMgr::Get().GetAddon(id, addon, ADDON_PVRDLL))
|
|
|
- return addon->OnEnabled();
|
|
|
-
|
|
|
-+ // OE: systemctl enable & start on addon enable
|
|
|
-+ if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE))
|
|
|
-+ CallOEWrapper(addon->ID(), false);
|
|
|
-+ // OE
|
|
|
-+
|
|
|
- if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE))
|
|
|
- std::static_pointer_cast<CService>(addon)->Start();
|
|
|
-
|
|
|
-@@ -645,6 +661,11 @@
|
|
|
- if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE, false))
|
|
|
- std::static_pointer_cast<CService>(addon)->Stop();
|
|
|
-
|
|
|
-+ // OE: systemctl stop & disable on addon disable
|
|
|
-+ if (CAddonMgr::Get().GetAddon(id, addon, ADDON_SERVICE, false))
|
|
|
-+ CallOEWrapper(addon->ID(), true);
|
|
|
-+ // OE
|
|
|
-+
|
|
|
- if (CAddonMgr::Get().GetAddon(id, addon, ADDON_CONTEXT_ITEM, false))
|
|
|
- CContextMenuManager::Get().Unregister(std::static_pointer_cast<CContextItemAddon>(addon));
|
|
|
- }
|
|
|
-@@ -668,18 +689,53 @@
|
|
|
- void OnPostInstall(const AddonPtr& addon, bool update, bool modal)
|
|
|
- {
|
|
|
- AddonPtr localAddon;
|
|
|
-+ // OE: systemctl stop & disable / enable & start on addon upgrade
|
|
|
-+ if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
|
|
-+ {
|
|
|
-+ CallOEWrapper(addon->ID(), true);
|
|
|
-+ CallOEWrapper(addon->ID(), false);
|
|
|
-+ }
|
|
|
-+ // OE
|
|
|
-+
|
|
|
- if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
|
|
- std::static_pointer_cast<CService>(localAddon)->Start();
|
|
|
-
|
|
|
- if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_CONTEXT_ITEM))
|
|
|
- CContextMenuManager::Get().Register(std::static_pointer_cast<CContextItemAddon>(localAddon));
|
|
|
-
|
|
|
-+ // OE: make binary addons executable, creddits to vpeter4
|
|
|
-+ std::string addonDirPath;
|
|
|
-+ std::string chmodFilePath;
|
|
|
-+ DIR *addonsDir;
|
|
|
-+ struct dirent *fileDirent;
|
|
|
-+ struct stat fileStat;
|
|
|
-+ int statRet;
|
|
|
-+
|
|
|
-+ addonDirPath = "/storage/.kodi/addons/" + addon->ID() + "/bin/";
|
|
|
-+ if ((addonsDir = opendir(addonDirPath.c_str())) != NULL)
|
|
|
-+ {
|
|
|
-+ while ((fileDirent = readdir(addonsDir)) != NULL)
|
|
|
-+ {
|
|
|
-+ chmodFilePath = addonDirPath + fileDirent->d_name;
|
|
|
-+ statRet = stat(chmodFilePath.c_str(), &fileStat);
|
|
|
-+ if (statRet == 0 && (fileStat.st_mode & S_IFMT) != S_IFDIR)
|
|
|
-+ chmod(chmodFilePath.c_str(), fileStat.st_mode | S_IXUSR | S_IXGRP | S_IXOTH);
|
|
|
-+ }
|
|
|
-+ closedir(addonsDir);
|
|
|
-+ }
|
|
|
-+ // OE
|
|
|
-+
|
|
|
- addon->OnPostInstall(update, modal);
|
|
|
- }
|
|
|
-
|
|
|
- void OnPreUnInstall(const AddonPtr& addon)
|
|
|
- {
|
|
|
- AddonPtr localAddon;
|
|
|
-+ // OE: systemctl stop & disable on addon ininstall
|
|
|
-+ if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
|
|
-+ CallOEWrapper(addon->ID(), true);
|
|
|
-+ // OE
|
|
|
-+
|
|
|
- if (CAddonMgr::Get().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
|
|
- std::static_pointer_cast<CService>(localAddon)->Stop();
|
|
|
-
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/addons/Addon.h xbmc-15.0-Isengard/xbmc/addons/Addon.h
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/addons/Addon.h 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/addons/Addon.h 2015-07-25 08:01:50.494340001 -0500
|
|
|
-@@ -171,6 +171,8 @@
|
|
|
- const InfoMap &ExtraInfo() const { return m_props.extrainfo; }
|
|
|
- const ADDONDEPS &GetDeps() const { return m_props.dependencies; }
|
|
|
-
|
|
|
-+ void CallOEWrapper(const std::string& ID, bool disable);
|
|
|
-+
|
|
|
- /*! \brief get the required version of a dependency.
|
|
|
- \param dependencyID the addon ID of the dependency.
|
|
|
- \return the version this addon requires.
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/Application.cpp xbmc-15.0-Isengard/xbmc/Application.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/Application.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/Application.cpp 2015-07-25 08:01:50.502340002 -0500
|
|
|
-@@ -2593,12 +2593,19 @@
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-+void CApplication::SetExitCode(int exitCode)
|
|
|
-+{
|
|
|
-+ // save it for CEC
|
|
|
-+ m_ExitCode = exitCode;
|
|
|
-+ m_ExitCodeSet = true;
|
|
|
-+}
|
|
|
-+
|
|
|
- void CApplication::Stop(int exitCode)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- CVariant vExitCode(CVariant::VariantTypeObject);
|
|
|
-- vExitCode["exitcode"] = exitCode;
|
|
|
-+ vExitCode["exitcode"] = m_ExitCode;
|
|
|
- CAnnouncementManager::Get().Announce(System, "xbmc", "OnQuit", vExitCode);
|
|
|
-
|
|
|
- // Abort any active screensaver
|
|
|
-@@ -2625,7 +2632,6 @@
|
|
|
-
|
|
|
- m_bStop = true;
|
|
|
- m_AppFocused = false;
|
|
|
-- m_ExitCode = exitCode;
|
|
|
- CLog::Log(LOGNOTICE, "stop all");
|
|
|
-
|
|
|
- // cancel any jobs from the jobmanager
|
|
|
-@@ -4732,7 +4738,6 @@
|
|
|
-
|
|
|
- void CApplication::Minimize()
|
|
|
- {
|
|
|
-- g_Windowing.Minimize();
|
|
|
- }
|
|
|
-
|
|
|
- PLAYERCOREID CApplication::GetCurrentPlayer()
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/Application.h xbmc-15.0-Isengard/xbmc/Application.h
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/Application.h 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/Application.h 2015-07-25 08:01:50.502340002 -0500
|
|
|
-@@ -154,6 +154,7 @@
|
|
|
- bool StartPVRManager();
|
|
|
- void StopPVRManager();
|
|
|
- bool IsCurrentThread() const;
|
|
|
-+ void SetExitCode(int exitCode);
|
|
|
- void Stop(int exitCode);
|
|
|
- void RestartApp();
|
|
|
- void UnloadSkin(bool forReload = false);
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/ApplicationMessenger.cpp xbmc-15.0-Isengard/xbmc/ApplicationMessenger.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/ApplicationMessenger.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/ApplicationMessenger.cpp 2015-07-25 08:01:50.502340002 -0500
|
|
|
-@@ -257,13 +257,14 @@
|
|
|
-
|
|
|
- case TMSG_POWERDOWN:
|
|
|
- {
|
|
|
-- g_application.Stop(EXITCODE_POWERDOWN);
|
|
|
-+ g_application.SetExitCode(EXITCODE_POWERDOWN);
|
|
|
- g_powerManager.Powerdown();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case TMSG_QUIT:
|
|
|
- {
|
|
|
-+ g_application.SetExitCode(EXITCODE_QUIT);
|
|
|
- g_application.Stop(EXITCODE_QUIT);
|
|
|
- }
|
|
|
- break;
|
|
|
-@@ -285,7 +286,7 @@
|
|
|
- case TMSG_RESTART:
|
|
|
- case TMSG_RESET:
|
|
|
- {
|
|
|
-- g_application.Stop(EXITCODE_REBOOT);
|
|
|
-+ g_application.SetExitCode(EXITCODE_REBOOT);
|
|
|
- g_powerManager.Reboot();
|
|
|
- }
|
|
|
- break;
|
|
|
-@@ -293,6 +294,7 @@
|
|
|
- case TMSG_RESTARTAPP:
|
|
|
- {
|
|
|
- #if defined(TARGET_WINDOWS) || defined(TARGET_LINUX)
|
|
|
-+ g_application.SetExitCode(EXITCODE_RESTARTAPP);
|
|
|
- g_application.Stop(EXITCODE_RESTARTAPP);
|
|
|
- #endif
|
|
|
- }
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp xbmc-15.0-Isengard/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp 2015-07-25 08:01:50.618340002 -0500
|
|
|
-@@ -28,6 +28,7 @@
|
|
|
- #include "cores/AudioEngine/Encoders/AEEncoderFFmpeg.h"
|
|
|
-
|
|
|
- #include "settings/Settings.h"
|
|
|
-+#include "settings/AdvancedSettings.h"
|
|
|
- #include "windowing/WindowingFactory.h"
|
|
|
- #include "utils/log.h"
|
|
|
-
|
|
|
-@@ -1505,6 +1506,13 @@
|
|
|
- format.m_channelLayout = AE_CH_LAYOUT_2_0;
|
|
|
- }
|
|
|
-
|
|
|
-+ // OpenELEC workaround to define a minimum sample Rate for broken AVRs
|
|
|
-+ if (format.m_sampleRate < g_advancedSettings.m_minimumSampleRate)
|
|
|
-+ {
|
|
|
-+ format.m_sampleRate = g_advancedSettings.m_minimumSampleRate;
|
|
|
-+ CLog::Log(LOGDEBUG, "CActiveAE::MinimumSampleRate - Forced by use to samplerate %d", format.m_sampleRate);
|
|
|
-+ }
|
|
|
-+
|
|
|
- if (m_settings.config == AE_CONFIG_FIXED)
|
|
|
- {
|
|
|
- format.m_sampleRate = m_settings.samplerate;
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2015-07-25 08:01:50.582339999 -0500
|
|
|
-@@ -33,6 +33,7 @@
|
|
|
- #include "settings/Settings.h"
|
|
|
- #include "cores/AudioEngine/Utils/AEUtil.h"
|
|
|
- #endif
|
|
|
-+#include "settings/Settings.h"
|
|
|
-
|
|
|
- CDVDAudioCodecFFmpeg::CDVDAudioCodecFFmpeg() : CDVDAudioCodec()
|
|
|
- {
|
|
|
-@@ -54,10 +55,19 @@
|
|
|
-
|
|
|
- bool CDVDAudioCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options)
|
|
|
- {
|
|
|
-- AVCodec* pCodec;
|
|
|
-+ AVCodec* pCodec = NULL;
|
|
|
- m_bOpenedCodec = false;
|
|
|
-
|
|
|
-- pCodec = avcodec_find_decoder(hints.codec);
|
|
|
-+ bool allow_dtshd_decoding = true;
|
|
|
-+#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) || defined(HAS_LIBAMCODEC)
|
|
|
-+ allow_dtshd_decoding = CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding");
|
|
|
-+#endif
|
|
|
-+ if (hints.codec == AV_CODEC_ID_DTS && allow_dtshd_decoding)
|
|
|
-+ pCodec = avcodec_find_decoder_by_name("libdcadec");
|
|
|
-+
|
|
|
-+ if (!pCodec)
|
|
|
-+ pCodec = avcodec_find_decoder(hints.codec);
|
|
|
-+
|
|
|
- if (!pCodec)
|
|
|
- {
|
|
|
- CLog::Log(LOGDEBUG,"CDVDAudioCodecFFmpeg::Open() Unable to find codec %d", hints.codec);
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2015-07-25 08:01:50.630339999 -0500
|
|
|
-@@ -38,7 +38,7 @@
|
|
|
- #define IMX_VDI_MAX_WIDTH 968
|
|
|
- #define FRAME_ALIGN 16
|
|
|
- #define MEDIAINFO 1
|
|
|
--#define RENDER_QUEUE_SIZE 3
|
|
|
-+#define RENDER_QUEUE_SIZE 5
|
|
|
- #define _4CC(c1,c2,c3,c4) (((uint32_t)(c4)<<24)|((uint32_t)(c3)<<16)|((uint32_t)(c2)<<8)|(uint32_t)(c1))
|
|
|
- #define Align(ptr,align) (((unsigned int)ptr + (align) - 1)/(align)*(align))
|
|
|
- #define Align2(ptr,align) (((unsigned int)ptr)/(align)*(align))
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2015-07-25 08:01:50.582339999 -0500
|
|
|
-@@ -439,6 +439,21 @@
|
|
|
-
|
|
|
- if (m_streaminfo)
|
|
|
- {
|
|
|
-+#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) || defined(HAS_LIBAMCODEC)
|
|
|
-+ if (CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding"))
|
|
|
-+#endif
|
|
|
-+ {
|
|
|
-+ for (unsigned int i = 0; i < m_pFormatContext->nb_streams; i++)
|
|
|
-+ {
|
|
|
-+ AVStream *st = m_pFormatContext->streams[i];
|
|
|
-+ if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO && st->codec->codec_id == AV_CODEC_ID_DTS)
|
|
|
-+ {
|
|
|
-+ AVCodec* pCodec = avcodec_find_decoder_by_name("libdcadec");
|
|
|
-+ if (pCodec)
|
|
|
-+ st->codec->codec = pCodec;
|
|
|
-+ }
|
|
|
-+ }
|
|
|
-+ }
|
|
|
- /* to speed up dvd switches, only analyse very short */
|
|
|
- if(m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD))
|
|
|
- av_opt_set_int(m_pFormatContext, "analyzeduration", 500000, 0);
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp xbmc-15.0-Isengard/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp 2015-07-25 08:01:50.582339999 -0500
|
|
|
-@@ -26,6 +26,7 @@
|
|
|
-
|
|
|
- #include "cores/AudioEngine/Utils/AEUtil.h"
|
|
|
- #include "cores/AudioEngine/AEFactory.h"
|
|
|
-+#include "settings/Settings.h"
|
|
|
-
|
|
|
- // the size of the audio_render output port buffers
|
|
|
- #define AUDIO_DECODE_OUTPUT_BUFFER (32*1024)
|
|
|
-@@ -62,10 +63,15 @@
|
|
|
-
|
|
|
- bool COMXAudioCodecOMX::Open(CDVDStreamInfo &hints)
|
|
|
- {
|
|
|
-- AVCodec* pCodec;
|
|
|
-+ AVCodec* pCodec = NULL;
|
|
|
- m_bOpenedCodec = false;
|
|
|
-
|
|
|
-- pCodec = avcodec_find_decoder(hints.codec);
|
|
|
-+ if (hints.codec == AV_CODEC_ID_DTS && CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding"))
|
|
|
-+ pCodec = avcodec_find_decoder_by_name("libdcadec");
|
|
|
-+
|
|
|
-+ if (!pCodec)
|
|
|
-+ pCodec = avcodec_find_decoder(hints.codec);
|
|
|
-+
|
|
|
- if (!pCodec)
|
|
|
- {
|
|
|
- CLog::Log(LOGDEBUG,"COMXAudioCodecOMX::Open() Unable to find codec %d", hints.codec);
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/GUIInfoManager.cpp xbmc-15.0-Isengard/xbmc/GUIInfoManager.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/GUIInfoManager.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/GUIInfoManager.cpp 2015-07-25 08:01:50.466339999 -0500
|
|
|
-@@ -272,7 +272,6 @@
|
|
|
- { "currentwindow", SYSTEM_CURRENT_WINDOW },
|
|
|
- { "currentcontrol", SYSTEM_CURRENT_CONTROL },
|
|
|
- { "dvdlabel", SYSTEM_DVD_LABEL },
|
|
|
-- { "internetstate", SYSTEM_INTERNET_STATE },
|
|
|
- { "osversioninfo", SYSTEM_OS_VERSION_INFO },
|
|
|
- { "kernelversion", SYSTEM_OS_VERSION_INFO }, // old, not correct name
|
|
|
- { "uptime", SYSTEM_UPTIME },
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/interfaces/python/XBPython.cpp xbmc-15.0-Isengard/xbmc/interfaces/python/XBPython.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/interfaces/python/XBPython.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/interfaces/python/XBPython.cpp 2015-07-25 08:01:50.458340000 -0500
|
|
|
-@@ -567,10 +567,9 @@
|
|
|
- // at http://docs.python.org/using/cmdline.html#environment-variables
|
|
|
-
|
|
|
- #if !defined(TARGET_WINDOWS) && !defined(TARGET_ANDROID)
|
|
|
-- /* PYTHONOPTIMIZE is set off intentionally when using external Python.
|
|
|
-- Reason for this is because we cannot be sure what version of Python
|
|
|
-- was used to compile the various Python object files (i.e. .pyo,
|
|
|
-- .pyc, etc.). */
|
|
|
-+ // Required for python to find optimized code (pyo) files
|
|
|
-+ setenv("PYTHONOPTIMIZE", "1", 1);
|
|
|
-+
|
|
|
- // check if we are running as real xbmc.app or just binary
|
|
|
- if (!CUtil::GetFrameworksPath(true).empty())
|
|
|
- {
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/linux/LinuxTimezone.cpp xbmc-15.0-Isengard/xbmc/linux/LinuxTimezone.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/linux/LinuxTimezone.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/linux/LinuxTimezone.cpp 2015-07-25 08:01:50.490339999 -0500
|
|
|
-@@ -42,6 +42,8 @@
|
|
|
-
|
|
|
- #include <algorithm>
|
|
|
-
|
|
|
-+#include <fstream>
|
|
|
-+
|
|
|
- using namespace std;
|
|
|
-
|
|
|
- CLinuxTimezone::CLinuxTimezone() : m_IsDST(0)
|
|
|
-@@ -161,6 +163,16 @@
|
|
|
- const std::string &settingId = setting->GetId();
|
|
|
- if (settingId == "locale.timezone")
|
|
|
- {
|
|
|
-+ std::ofstream out("/storage/.cache/timezone");
|
|
|
-+ if (out)
|
|
|
-+ {
|
|
|
-+ const std::string tz = std::string("TIMEZONE=") + ((CSettingString*)setting)->GetValue().c_str();
|
|
|
-+ out << tz << std::endl;
|
|
|
-+ out.flush();
|
|
|
-+ out.close();
|
|
|
-+ system("systemctl restart tz-data.service");
|
|
|
-+ }
|
|
|
-+
|
|
|
- SetTimezone(((CSettingString*)setting)->GetValue());
|
|
|
-
|
|
|
- CDateTime::ResetTimezoneBias();
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/linux/PosixMountProvider.cpp xbmc-15.0-Isengard/xbmc/linux/PosixMountProvider.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/linux/PosixMountProvider.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/linux/PosixMountProvider.cpp 2015-07-25 08:01:50.474340002 -0500
|
|
|
-@@ -133,7 +133,7 @@
|
|
|
- {
|
|
|
- // just go ahead and try to umount the disk
|
|
|
- // if it does umount, life is good, if not, no loss.
|
|
|
-- std::string cmd = "umount \"" + mountpath + "\"";
|
|
|
-+ std::string cmd = "udevil umount \"" + mountpath + "\"";
|
|
|
- int status = system(cmd.c_str());
|
|
|
-
|
|
|
- if (status == 0)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/main/main.cpp xbmc-15.0-Isengard/xbmc/main/main.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/main/main.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/main/main.cpp 2015-07-25 08:01:50.506340000 -0500
|
|
|
-@@ -41,9 +41,24 @@
|
|
|
- #include "input/linux/LIRC.h"
|
|
|
- #endif
|
|
|
- #include "XbmcContext.h"
|
|
|
-+#include "Application.h"
|
|
|
-+
|
|
|
-+void xbmc_term_handler(int signum)
|
|
|
-+{
|
|
|
-+ CLog::Log(LOGINFO, "Received SIGTERM...");
|
|
|
-+ if (!g_application.m_ExitCodeSet)
|
|
|
-+ g_application.SetExitCode(EXITCODE_RESTARTAPP);
|
|
|
-+ g_application.Stop(EXITCODE_RESTARTAPP);
|
|
|
-+}
|
|
|
-
|
|
|
- int main(int argc, char* argv[])
|
|
|
- {
|
|
|
-+ // SIGTERM handler
|
|
|
-+ struct sigaction action;
|
|
|
-+ memset(&action, 0, sizeof(struct sigaction));
|
|
|
-+ action.sa_handler = xbmc_term_handler;
|
|
|
-+ sigaction(SIGTERM, &action, NULL);
|
|
|
-+
|
|
|
- // set up some xbmc specific relationships
|
|
|
- XBMC::Context context;
|
|
|
-
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/peripherals/devices/PeripheralCecAdapter.cpp xbmc-15.0-Isengard/xbmc/peripherals/devices/PeripheralCecAdapter.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2015-07-25 08:01:50.542340001 -0500
|
|
|
-@@ -767,7 +767,10 @@
|
|
|
- CLog::Log(LOGDEBUG, "%s - received key %2x duration %d", __FUNCTION__, key.iButton, key.iDuration);
|
|
|
-
|
|
|
- CSingleLock lock(m_critSection);
|
|
|
-- if (key.iDuration > 0)
|
|
|
-+ // avoid the queue getting too long
|
|
|
-+ if (m_configuration.iButtonRepeatRateMs && m_buttonQueue.size() > 5)
|
|
|
-+ return;
|
|
|
-+ if (m_configuration.iButtonRepeatRateMs == 0 && key.iDuration > 0)
|
|
|
- {
|
|
|
- if (m_currentButton.iButton == key.iButton && m_currentButton.iDuration == 0)
|
|
|
- {
|
|
|
-@@ -1267,6 +1270,20 @@
|
|
|
- m_configuration.bSendInactiveSource = config.bSendInactiveSource;
|
|
|
- bChanged |= SetSetting("send_inactive_source", m_configuration.bSendInactiveSource == 1);
|
|
|
-
|
|
|
-+#if defined(CEC_DOUBLE_TAP_TIMEOUT_MS_OLD)
|
|
|
-+ m_configuration.iDoubleTapTimeout50Ms = config.iDoubleTapTimeout50Ms;
|
|
|
-+ bChanged |= SetSetting("double_tap_timeout_ms", (int)m_configuration.iDoubleTapTimeout50Ms * 50);
|
|
|
-+#else
|
|
|
-+ m_configuration.iDoubleTapTimeoutMs = config.iDoubleTapTimeoutMs;
|
|
|
-+ bChanged |= SetSetting("double_tap_timeout_ms", (int)m_configuration.iDoubleTapTimeoutMs;
|
|
|
-+#endif
|
|
|
-+
|
|
|
-+ m_configuration.iButtonRepeatRateMs = config.iButtonRepeatRateMs;
|
|
|
-+ bChanged |= SetSetting("button_repeat_rate_ms", (int)m_configuration.iButtonRepeatRateMs);
|
|
|
-+
|
|
|
-+ m_configuration.iButtonReleaseDelayMs = config.iButtonReleaseDelayMs;
|
|
|
-+ bChanged |= SetSetting("button_release_delay_ms", (int)m_configuration.iButtonReleaseDelayMs);
|
|
|
-+
|
|
|
- m_configuration.iFirmwareVersion = config.iFirmwareVersion;
|
|
|
- m_configuration.bShutdownOnStandby = config.bShutdownOnStandby;
|
|
|
-
|
|
|
-@@ -1371,6 +1388,8 @@
|
|
|
- // backwards compatibility. will be removed once the next major release of libCEC is out
|
|
|
- m_configuration.iDoubleTapTimeoutMs = GetSettingInt("double_tap_timeout_ms");
|
|
|
- #endif
|
|
|
-+ m_configuration.iButtonRepeatRateMs = GetSettingInt("button_repeat_rate_ms");
|
|
|
-+ m_configuration.iButtonReleaseDelayMs = GetSettingInt("button_release_delay_ms");
|
|
|
- }
|
|
|
-
|
|
|
- void CPeripheralCecAdapter::ReadLogicalAddresses(const std::string &strString, cec_logical_addresses &addresses)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.cpp xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.cpp 2015-07-25 08:01:50.622340002 -0500
|
|
|
-@@ -106,6 +106,8 @@
|
|
|
- return;
|
|
|
-
|
|
|
- m_audioHeadRoom = 0;
|
|
|
-+ // OpenELEC workaround for broken AVRs
|
|
|
-+ m_minimumSampleRate = 8000;
|
|
|
- m_ac3Gain = 12.0f;
|
|
|
- m_audioApplyDrc = -1.0f;
|
|
|
- m_dvdplayerIgnoreDTSinWAV = false;
|
|
|
-@@ -464,6 +466,7 @@
|
|
|
- {
|
|
|
- XMLUtils::GetFloat(pElement, "ac3downmixgain", m_ac3Gain, -96.0f, 96.0f);
|
|
|
- XMLUtils::GetInt(pElement, "headroom", m_audioHeadRoom, 0, 12);
|
|
|
-+ XMLUtils::GetInt(pElement, "minimumsamplerate", m_minimumSampleRate, 8000, 192000);
|
|
|
- XMLUtils::GetString(pElement, "defaultplayer", m_audioDefaultPlayer);
|
|
|
- // 101 on purpose - can be used to never automark as watched
|
|
|
- XMLUtils::GetFloat(pElement, "playcountminimumpercent", m_audioPlayCountMinimumPercent, 0.0f, 101.0f);
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.h xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.h
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/settings/AdvancedSettings.h 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/settings/AdvancedSettings.h 2015-07-25 08:01:50.622340002 -0500
|
|
|
-@@ -140,6 +140,8 @@
|
|
|
- static void SettingOptionsLoggingComponentsFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int ¤t, void *data);
|
|
|
-
|
|
|
- int m_audioHeadRoom;
|
|
|
-+ // OpenELEC workaround for minimum sample Rate
|
|
|
-+ int m_minimumSampleRate;
|
|
|
- float m_ac3Gain;
|
|
|
- std::string m_audioDefaultPlayer;
|
|
|
- float m_audioPlayCountMinimumPercent;
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/storage/linux/UDevProvider.cpp xbmc-15.0-Isengard/xbmc/storage/linux/UDevProvider.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/storage/linux/UDevProvider.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/storage/linux/UDevProvider.cpp 2015-07-25 08:01:50.514339999 -0500
|
|
|
-@@ -152,6 +152,20 @@
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
-+ // OE: filter out openelec specific mounts
|
|
|
-+ if (strstr(mountpoint, "/flash"))
|
|
|
-+ {
|
|
|
-+ udev_device_unref(device);
|
|
|
-+ continue;
|
|
|
-+ }
|
|
|
-+
|
|
|
-+ if (strstr(mountpoint, "/storage"))
|
|
|
-+ {
|
|
|
-+ udev_device_unref(device);
|
|
|
-+ continue;
|
|
|
-+ }
|
|
|
-+ // OE
|
|
|
-+
|
|
|
- // look for devices on the usb bus, or mounted on */media/ (sdcards), or optical devices
|
|
|
- const char *bus = udev_device_get_property_value(device, "ID_BUS");
|
|
|
- const char *optical = udev_device_get_property_value(device, "ID_CDROM"); // matches also DVD, Blu-ray
|
|
|
-@@ -207,7 +221,7 @@
|
|
|
- {
|
|
|
- // just go ahead and try to umount the disk
|
|
|
- // if it does umount, life is good, if not, no loss.
|
|
|
-- std::string cmd = "umount \"" + mountpath + "\"";
|
|
|
-+ std::string cmd = "udevil umount \"" + mountpath + "\"";
|
|
|
- int status = system(cmd.c_str());
|
|
|
-
|
|
|
- if (status == 0)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/utils/CPUInfo.cpp xbmc-15.0-Isengard/xbmc/utils/CPUInfo.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/utils/CPUInfo.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/utils/CPUInfo.cpp 2015-07-25 08:01:50.510339999 -0500
|
|
|
-@@ -271,6 +271,8 @@
|
|
|
- m_fProcTemperature = fopen("/sys/class/thermal/thermal_zone0/temp", "r"); // On Raspberry PIs
|
|
|
-
|
|
|
- m_fCPUFreq = fopen ("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", "r");
|
|
|
-+ if (m_fCPUFreq == NULL)
|
|
|
-+ m_fCPUFreq = fopen ("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq", "r");
|
|
|
- if (!m_fCPUFreq)
|
|
|
- {
|
|
|
- m_cpuInfoForFreq = true;
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/utils/SystemInfo.cpp xbmc-15.0-Isengard/xbmc/utils/SystemInfo.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/utils/SystemInfo.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/utils/SystemInfo.cpp 2015-07-25 08:01:50.470340001 -0500
|
|
|
-@@ -246,7 +246,6 @@
|
|
|
- {
|
|
|
- m_info.systemUptime = GetSystemUpTime(false);
|
|
|
- m_info.systemTotalUptime = GetSystemUpTime(true);
|
|
|
-- m_info.internetState = GetInternetState();
|
|
|
- m_info.videoEncoder = GetVideoEncoder();
|
|
|
- m_info.cpuFrequency = GetCPUFreqInfo();
|
|
|
- m_info.osVersionInfo = CSysInfo::GetOsPrettyNameWithVersion() + " (kernel: " + CSysInfo::GetKernelName() + " " + CSysInfo::GetKernelVersionFull() + ")";
|
|
|
-@@ -1022,9 +1021,7 @@
|
|
|
-
|
|
|
- bool CSysInfo::HasInternet()
|
|
|
- {
|
|
|
-- if (m_info.internetState != CSysData::UNKNOWN)
|
|
|
-- return m_info.internetState == CSysData::CONNECTED;
|
|
|
-- return (m_info.internetState = CSysInfoJob::GetInternetState()) == CSysData::CONNECTED;
|
|
|
-+ return m_info.internetState == CSysData::UNKNOWN;
|
|
|
- }
|
|
|
-
|
|
|
- std::string CSysInfo::GetHddSpaceInfo(int drive, bool shortText)
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.cpp xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.cpp 2015-07-25 08:01:50.482340000 -0500
|
|
|
-@@ -1143,8 +1143,6 @@
|
|
|
-
|
|
|
- if (fullscreen && hasWM)
|
|
|
- {
|
|
|
-- Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True);
|
|
|
-- XChangeProperty(m_dpy, m_mainWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1);
|
|
|
- // disable desktop compositing for KDE, when Kodi is in full-screen mode
|
|
|
- int one = 1;
|
|
|
- XChangeProperty(m_dpy, m_mainWindow, XInternAtom(m_dpy, "_KDE_NET_WM_BLOCK_COMPOSITING", True), XA_CARDINAL, 32,
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.h xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.h
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/windowing/X11/WinSystemX11.h 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/windowing/X11/WinSystemX11.h 2015-07-25 08:01:50.510339999 -0500
|
|
|
-@@ -54,6 +54,7 @@
|
|
|
- virtual bool ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop);
|
|
|
- virtual bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays);
|
|
|
- virtual void UpdateResolutions();
|
|
|
-+ virtual bool CanDoWindowed() { return false; }
|
|
|
- virtual int GetNumScreens() { return 1; }
|
|
|
- virtual int GetCurrentScreen() { return m_nScreen; }
|
|
|
- virtual void ShowOSMouse(bool show);
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/windows/GUIWindowSystemInfo.cpp xbmc-15.0-Isengard/xbmc/windows/GUIWindowSystemInfo.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/windows/GUIWindowSystemInfo.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/windows/GUIWindowSystemInfo.cpp 2015-07-25 08:01:50.470340001 -0500
|
|
|
-@@ -125,7 +125,6 @@
|
|
|
- SetControlLabel(i++, "%s: %s", 13160, NETWORK_GATEWAY_ADDRESS);
|
|
|
- SetControlLabel(i++, "%s: %s", 13161, NETWORK_DNS1_ADDRESS);
|
|
|
- SetControlLabel(i++, "%s: %s", 20307, NETWORK_DNS2_ADDRESS);
|
|
|
-- SetControlLabel(i++, "%s %s", 13295, SYSTEM_INTERNET_STATE);
|
|
|
- }
|
|
|
- else if (m_section == CONTROL_BT_VIDEO)
|
|
|
- {
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.cpp xbmc-15.0-Isengard/xbmc/XBApplicationEx.cpp
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.cpp 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/XBApplicationEx.cpp 2015-07-25 08:01:50.502340002 -0500
|
|
|
-@@ -40,6 +40,7 @@
|
|
|
- m_bStop = false;
|
|
|
- m_AppFocused = true;
|
|
|
- m_ExitCode = EXITCODE_QUIT;
|
|
|
-+ m_ExitCodeSet = false;
|
|
|
- m_renderGUI = false;
|
|
|
- }
|
|
|
-
|
|
|
-diff -Nur xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.h xbmc-15.0-Isengard/xbmc/XBApplicationEx.h
|
|
|
---- xbmc-15.0-Isengard.orig/xbmc/XBApplicationEx.h 2015-07-21 13:41:29.000000000 -0500
|
|
|
-+++ xbmc-15.0-Isengard/xbmc/XBApplicationEx.h 2015-07-25 08:01:50.506340000 -0500
|
|
|
-@@ -40,6 +40,7 @@
|
|
|
- // Variables for timing
|
|
|
- bool m_bStop;
|
|
|
- int m_ExitCode;
|
|
|
-+ bool m_ExitCodeSet;
|
|
|
- bool m_AppFocused;
|
|
|
- bool m_renderGUI;
|
|
|
-
|