Merge pull request #3169 from MilhouseVH/le90_kodi-next001

kodi (RPi/Generic): update to kodi-18.0rc3-Leia
This commit is contained in:
CvH 2018-12-16 17:22:48 +01:00 committed by GitHub
commit 8b3679ce71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 152 additions and 236 deletions

View File

@ -3,8 +3,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="LibreELEC-settings" PKG_NAME="LibreELEC-settings"
PKG_VERSION="f476f01989b00ff5fb6c5c2fce37fa55bad73c46" PKG_VERSION="1b9a5d1486b1d8f95aae0038d7c274f6f1e216d8"
PKG_SHA256="9b84c5b4deb825d9400f509c9bde319d89f2097b87944f0550d1e07b52f4ac40" PKG_SHA256="dbbdf80864c6729d843f7ee2015f3a8382b564429fd7bfe8fea762fcddbd3fdf"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="https://libreelec.tv" PKG_SITE="https://libreelec.tv"
PKG_URL="https://github.com/LibreELEC/service.libreelec.settings/archive/$PKG_VERSION.tar.gz" PKG_URL="https://github.com/LibreELEC/service.libreelec.settings/archive/$PKG_VERSION.tar.gz"

View File

@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="pvr.mediaportal.tvserver" PKG_NAME="pvr.mediaportal.tvserver"
PKG_VERSION="b17fdadcd28cbb8dc876689ccba1f03c4847712d" PKG_VERSION="25e3e7da9e63d6f769083d68304500b1080a2959"
PKG_SHA256="47e98849b67b5a29bc1b0ff36df0f18852653418060edaab9263d4fec66ef5b6" PKG_SHA256="a100dfae6bcfb7153823edbff5b91582e2a03459bfb2020dd932c5716c999a5c"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -67,14 +67,6 @@
</section> </section>
<section id="pvr"> <section id="pvr">
<category id="pvrmanager">
<group id="1">
<setting id="pvrmanager.syncchannelgroups">
<default>false</default>
</setting>
</group>
</category>
<category id="epg"> <category id="epg">
<group id="2"> <group id="2">
<setting id="epg.preventupdateswhileplayingtv"> <setting id="epg.preventupdateswhileplayingtv">

View File

@ -12,8 +12,8 @@ PKG_PATCH_DIRS="$KODI_VENDOR"
case $KODI_VENDOR in case $KODI_VENDOR in
raspberrypi) raspberrypi)
PKG_VERSION="newclock5_18.0rc2-Leia" PKG_VERSION="newclock5_18.0rc3-Leia"
PKG_SHA256="5e6c3dcac6202039a0a3809b80ea04975c3638699dc2b479da5a0c5c1f3b8f9f" PKG_SHA256="5f98caff0908ae44ccf2262f87ead695cd2c8915f0ed5cd44fdbdc0598f70d6a"
PKG_URL="https://github.com/popcornmix/xbmc/archive/$PKG_VERSION.tar.gz" PKG_URL="https://github.com/popcornmix/xbmc/archive/$PKG_VERSION.tar.gz"
PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz"
;; ;;
@ -24,8 +24,8 @@ case $KODI_VENDOR in
PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz"
;; ;;
*) *)
PKG_VERSION="18.0rc2-Leia" PKG_VERSION="18.0rc3-Leia"
PKG_SHA256="17e95081680d8aaad1693518ebc9703b2402f2ca6fbff8614e53b19d6b922a37" PKG_SHA256="72918ccc63a6bc387b4ebd8796be55f0962bce093e845cdee3aacc8e8649587b"
PKG_URL="https://github.com/xbmc/xbmc/archive/$PKG_VERSION.tar.gz" PKG_URL="https://github.com/xbmc/xbmc/archive/$PKG_VERSION.tar.gz"
PKG_SOURCE_NAME="kodi-$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$PKG_VERSION.tar.gz"
;; ;;

View File

@ -12349,7 +12349,7 @@ index 0000000000..75a1789c25
+ +
diff --git a/libavcodec/arm/rpi_hevcpred_intra_filter_neon.S b/libavcodec/arm/rpi_hevcpred_intra_filter_neon.S diff --git a/libavcodec/arm/rpi_hevcpred_intra_filter_neon.S b/libavcodec/arm/rpi_hevcpred_intra_filter_neon.S
new file mode 100644 new file mode 100644
index 0000000000..6ce3d3ca8d index 0000000000..21cd28c709
--- /dev/null --- /dev/null
+++ b/libavcodec/arm/rpi_hevcpred_intra_filter_neon.S +++ b/libavcodec/arm/rpi_hevcpred_intra_filter_neon.S
@@ -0,0 +1,872 @@ @@ -0,0 +1,872 @@
@ -12838,7 +12838,7 @@ index 0000000000..6ce3d3ca8d
+ vldm r5, {d20-d23} + vldm r5, {d20-d23}
+ bgt 1f + bgt 1f
+ bge 4f + bge 4f
+ cmp r5, #8 + cmp r12, #8
+ bge 3f + bge 3f
+ vdup.16 d21, d20[3] + vdup.16 d21, d20[3]
+3: vdup.16 d22, d21[3] +3: vdup.16 d22, d21[3]
@ -39984,10 +39984,10 @@ index 0000000000..2f710626cf
+ +
diff --git a/libavcodec/rpi_mailbox.c b/libavcodec/rpi_mailbox.c diff --git a/libavcodec/rpi_mailbox.c b/libavcodec/rpi_mailbox.c
new file mode 100644 new file mode 100644
index 0000000000..c16d9931bd index 0000000000..20f218f22c
--- /dev/null --- /dev/null
+++ b/libavcodec/rpi_mailbox.c +++ b/libavcodec/rpi_mailbox.c
@@ -0,0 +1,145 @@ @@ -0,0 +1,107 @@
+/* +/*
+Copyright (c) 2012, Broadcom Europe Ltd. +Copyright (c) 2012, Broadcom Europe Ltd.
+All rights reserved. +All rights reserved.
@ -40053,44 +40053,6 @@ index 0000000000..c16d9931bd
+ return ret_val; + return ret_val;
+} +}
+ +
+unsigned mbox_mem_lock(int file_desc, unsigned handle)
+{
+ int i=0;
+ unsigned p[32];
+ p[i++] = 0; // size
+ p[i++] = 0x00000000; // process request
+
+ p[i++] = 0x3000d; // (the tag id)
+ p[i++] = 4; // (size of the buffer)
+ p[i++] = 4; // (size of the data)
+ p[i++] = handle;
+
+ p[i++] = 0x00000000; // end tag
+ p[0] = i*sizeof *p; // actual size
+
+ mbox_property(file_desc, p);
+ return p[5];
+}
+
+unsigned mbox_mem_unlock(int file_desc, unsigned handle)
+{
+ int i=0;
+ unsigned p[32];
+ p[i++] = 0; // size
+ p[i++] = 0x00000000; // process request
+
+ p[i++] = 0x3000e; // (the tag id)
+ p[i++] = 4; // (size of the buffer)
+ p[i++] = 4; // (size of the data)
+ p[i++] = handle;
+
+ p[i++] = 0x00000000; // end tag
+ p[0] = i*sizeof *p; // actual size
+
+ mbox_property(file_desc, p);
+ return p[5];
+}
+
+#define GET_VCIMAGE_PARAMS 0x30044 +#define GET_VCIMAGE_PARAMS 0x30044
+ +
+int mbox_get_image_params(int fd, VC_IMAGE_T * img) +int mbox_get_image_params(int fd, VC_IMAGE_T * img)
@ -40135,10 +40097,10 @@ index 0000000000..c16d9931bd
+ +
diff --git a/libavcodec/rpi_mailbox.h b/libavcodec/rpi_mailbox.h diff --git a/libavcodec/rpi_mailbox.h b/libavcodec/rpi_mailbox.h
new file mode 100644 new file mode 100644
index 0000000000..b3168788d2 index 0000000000..06709d57fd
--- /dev/null --- /dev/null
+++ b/libavcodec/rpi_mailbox.h +++ b/libavcodec/rpi_mailbox.h
@@ -0,0 +1,58 @@ @@ -0,0 +1,55 @@
+#ifndef RPI_MAILBOX_H +#ifndef RPI_MAILBOX_H
+#define RPI_MAILBOX_H +#define RPI_MAILBOX_H
+ +
@ -40191,18 +40153,15 @@ index 0000000000..b3168788d2
+extern int mbox_open(void); +extern int mbox_open(void);
+extern void mbox_close(int file_desc); +extern void mbox_close(int file_desc);
+ +
+extern unsigned mbox_mem_lock(int file_desc, unsigned handle);
+extern unsigned mbox_mem_unlock(int file_desc, unsigned handle);
+
+int mbox_get_image_params(int fd, VC_IMAGE_T * img); +int mbox_get_image_params(int fd, VC_IMAGE_T * img);
+ +
+#endif +#endif
diff --git a/libavcodec/rpi_qpu.c b/libavcodec/rpi_qpu.c diff --git a/libavcodec/rpi_qpu.c b/libavcodec/rpi_qpu.c
new file mode 100644 new file mode 100644
index 0000000000..ddbb1eb9a6 index 0000000000..f4498bf7b1
--- /dev/null --- /dev/null
+++ b/libavcodec/rpi_qpu.c +++ b/libavcodec/rpi_qpu.c
@@ -0,0 +1,992 @@ @@ -0,0 +1,957 @@
+#include <stdio.h> +#include <stdio.h>
+#include <stdlib.h> +#include <stdlib.h>
+#include <string.h> +#include <string.h>
@ -40407,59 +40366,34 @@ index 0000000000..ddbb1eb9a6
+ +
+// GPU memory alloc fns (internal) +// GPU memory alloc fns (internal)
+ +
+// GPU_MEM_PTR_T alloc fns +static void gpu_free_internal(GPU_MEM_PTR_T * const p)
+// The magic 0x80 on the cache type means: map all pages to arm memory now +{
+// rather than demand page later + if (p->arm != NULL)
+static int gpu_malloc_cached_internal(const int mb, const int numbytes, GPU_MEM_PTR_T * const p) {
+ p->numbytes = (numbytes + 255) & ~255; // Round up
+ p->vcsm_handle = vcsm_malloc_cache(p->numbytes, VCSM_CACHE_TYPE_HOST | 0x80, (char *)"Video Frame" );
+ //p->vcsm_handle = vcsm_malloc_cache(numbytes, VCSM_CACHE_TYPE_VC, (char *)"Video Frame" );
+ //p->vcsm_handle = vcsm_malloc_cache(numbytes, VCSM_CACHE_TYPE_NONE, (char *)"Video Frame" );
+ //p->vcsm_handle = vcsm_malloc_cache(numbytes, VCSM_CACHE_TYPE_HOST_AND_VC, (char *)"Video Frame" );
+ av_assert0(p->vcsm_handle);
+ p->vc_handle = vcsm_vc_hdl_from_hdl(p->vcsm_handle);
+ av_assert0(p->vc_handle);
+ p->arm = vcsm_lock(p->vcsm_handle);
+ av_assert0(p->arm);
+ p->vc = mbox_mem_lock(mb, p->vc_handle);
+ av_assert0(p->vc);
+ return 0;
+}
+
+static int gpu_malloc_vccached_internal(const int mb, const int numbytes, GPU_MEM_PTR_T * const p) {
+ p->numbytes = numbytes;
+ p->vcsm_handle = vcsm_malloc_cache(numbytes, VCSM_CACHE_TYPE_VC | 0x80, (char *)"VPU code" );
+ av_assert0(p->vcsm_handle);
+ p->vc_handle = vcsm_vc_hdl_from_hdl(p->vcsm_handle);
+ av_assert0(p->vc_handle);
+ p->arm = vcsm_lock(p->vcsm_handle);
+ av_assert0(p->arm);
+ p->vc = mbox_mem_lock(mb, p->vc_handle);
+ av_assert0(p->vc);
+ return 0;
+}
+
+static int gpu_malloc_uncached_internal(const int mb, const int numbytes, GPU_MEM_PTR_T * const p) {
+ p->numbytes = numbytes;
+ p->vcsm_handle = vcsm_malloc_cache(numbytes, VCSM_CACHE_TYPE_NONE | 0x80, (char *)"Video Frame" );
+ av_assert0(p->vcsm_handle);
+ p->vc_handle = vcsm_vc_hdl_from_hdl(p->vcsm_handle);
+ av_assert0(p->vc_handle);
+ p->arm = vcsm_lock(p->vcsm_handle);
+ av_assert0(p->arm);
+ p->vc = mbox_mem_lock(mb, p->vc_handle);
+ av_assert0(p->vc);
+ return 0;
+}
+
+static void gpu_free_internal(const int mb, GPU_MEM_PTR_T * const p) {
+ mbox_mem_unlock(mb, p->vc_handle);
+ vcsm_unlock_ptr(p->arm); + vcsm_unlock_ptr(p->arm);
+ if (p->vcsm_handle != 0)
+ vcsm_free(p->vcsm_handle); + vcsm_free(p->vcsm_handle);
+ memset(p, 0, sizeof(*p)); // Ensure we crash hard if we try and use this again + memset(p, 0, sizeof(*p)); // Ensure we crash hard if we try and use this again
+} +}
+ +
+ +
+static int gpu_malloc_internal(GPU_MEM_PTR_T * const p,
+ const int numbytes, const unsigned int cache_type, const char * const name)
+{
+ memset(p, 0, sizeof(*p));
+ p->numbytes = (numbytes + 255) & ~255; // Round up
+
+ if ((p->vcsm_handle = vcsm_malloc_cache(p->numbytes, cache_type | 0x80, (char *)name)) == 0 ||
+ (p->vc_handle = vcsm_vc_hdl_from_hdl(p->vcsm_handle)) == 0 ||
+ (p->arm = vcsm_lock(p->vcsm_handle)) == NULL ||
+ (p->vc = vcsm_vc_addr_from_hdl(p->vcsm_handle)) == 0)
+ {
+ gpu_free_internal(p);
+ return AVERROR(ENOMEM);
+ }
+ return 0;
+}
+
+
+// GPU init, free, lock, unlock +// GPU init, free, lock, unlock
+ +
+static void gpu_term(void) +static void gpu_term(void)
@ -40471,9 +40405,9 @@ index 0000000000..ddbb1eb9a6
+ +
+ vc_gpuserv_deinit(); + vc_gpuserv_deinit();
+ +
+ gpu_free_internal(ge->mb, &ge->code_gm_ptr); + gpu_free_internal(&ge->code_gm_ptr);
+ gpu_free_internal(ge->mb, &ge->qpu_code_gm_ptr); + gpu_free_internal(&ge->qpu_code_gm_ptr);
+ gpu_free_internal(ge->mb, &ge->dummy_gm_ptr); + gpu_free_internal(&ge->dummy_gm_ptr);
+ +
+ vcsm_exit(); + vcsm_exit();
+ +
@ -40489,6 +40423,7 @@ index 0000000000..ddbb1eb9a6
+static int gpu_init(gpu_env_t ** const gpu) { +static int gpu_init(gpu_env_t ** const gpu) {
+ volatile struct GPU* ptr; + volatile struct GPU* ptr;
+ gpu_env_t * const ge = calloc(1, sizeof(gpu_env_t)); + gpu_env_t * const ge = calloc(1, sizeof(gpu_env_t));
+ int rv;
+ *gpu = NULL; + *gpu = NULL;
+ +
+ if (ge == NULL) + if (ge == NULL)
@ -40502,7 +40437,8 @@ index 0000000000..ddbb1eb9a6
+ vcsm_init(); + vcsm_init();
+ +
+ // Now copy over the QPU code into GPU memory + // Now copy over the QPU code into GPU memory
+ gpu_malloc_uncached_internal(ge->mb, QPU_CODE_SIZE*4, &ge->qpu_code_gm_ptr); + if ((rv = gpu_malloc_internal(&ge->qpu_code_gm_ptr, QPU_CODE_SIZE * 4, VCSM_CACHE_TYPE_NONE, "ffmpeg qpu code")) != 0)
+ return rv;
+ +
+ { + {
+ int num_bytes = (char *)mc_end - (char *)ff_hevc_rpi_shader; + int num_bytes = (char *)mc_end - (char *)ff_hevc_rpi_shader;
@ -40512,7 +40448,8 @@ index 0000000000..ddbb1eb9a6
+ } + }
+ +
+ // And the VPU code + // And the VPU code
+ gpu_malloc_vccached_internal(ge->mb, sizeof(struct GPU), &ge->code_gm_ptr); + if ((rv = gpu_malloc_internal(&ge->code_gm_ptr, sizeof(struct GPU), VCSM_CACHE_TYPE_VC, "ffmpeg vpu code")) != 0)
+ return rv;
+ ptr = (volatile struct GPU*)ge->code_gm_ptr.arm; + ptr = (volatile struct GPU*)ge->code_gm_ptr.arm;
+ +
+ // Zero everything so we have zeros between the code bits + // Zero everything so we have zeros between the code bits
@ -40532,7 +40469,8 @@ index 0000000000..ddbb1eb9a6
+ +
+ // Generate a dummy "frame" & fill with 0x80 + // Generate a dummy "frame" & fill with 0x80
+ // * Could reset to 1 <<bit_depth? + // * Could reset to 1 <<bit_depth?
+ gpu_malloc_uncached_internal(ge->mb, 0x4000, &ge->dummy_gm_ptr); + if ((rv = gpu_malloc_internal(&ge->dummy_gm_ptr, 0x4000, VCSM_CACHE_TYPE_NONE, "ffmpeg dummy frame")) != 0)
+ return rv;
+ memset(ge->dummy_gm_ptr.arm, 0x80, 0x4000); + memset(ge->dummy_gm_ptr.arm, 0x80, 0x4000);
+ +
+ *gpu = ge; + *gpu = ge;
@ -40592,13 +40530,7 @@ index 0000000000..ddbb1eb9a6
+// Therefore safe to use without data cache flushing. +// Therefore safe to use without data cache flushing.
+int gpu_malloc_uncached(int numbytes, GPU_MEM_PTR_T *p) +int gpu_malloc_uncached(int numbytes, GPU_MEM_PTR_T *p)
+{ +{
+ int r; + return gpu_malloc_internal(p, numbytes, VCSM_CACHE_TYPE_NONE, "ffmpeg uncached");
+ gpu_env_t * const ge = gpu_lock_ref();
+ if (ge == NULL)
+ return -1;
+ r = gpu_malloc_uncached_internal(ge->mb, numbytes, p);
+ gpu_unlock();
+ return r;
+} +}
+ +
+// This allocates data that will be +// This allocates data that will be
@ -40606,19 +40538,11 @@ index 0000000000..ddbb1eb9a6
+// Uncached in VPU L2 +// Uncached in VPU L2
+int gpu_malloc_cached(int numbytes, GPU_MEM_PTR_T *p) +int gpu_malloc_cached(int numbytes, GPU_MEM_PTR_T *p)
+{ +{
+ int r; + return gpu_malloc_internal(p, numbytes, VCSM_CACHE_TYPE_HOST, "ffmpeg cached");
+ gpu_env_t * const ge = gpu_lock_ref();
+ if (ge == NULL)
+ return -1;
+ r = gpu_malloc_cached_internal(ge->mb, numbytes, p);
+ gpu_unlock();
+ return r;
+} +}
+ +
+void gpu_free(GPU_MEM_PTR_T * const p) { +void gpu_free(GPU_MEM_PTR_T * const p) {
+ gpu_env_t * const ge = gpu_lock(); + gpu_free_internal(p);
+ gpu_free_internal(ge->mb, p);
+ gpu_unlock_unref(ge);
+} +}
+ +
+unsigned int vpu_get_fn(const unsigned int bit_depth) { +unsigned int vpu_get_fn(const unsigned int bit_depth) {

View File

@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) # Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="freetype" PKG_NAME="freetype"
PKG_VERSION="2.6.5" PKG_VERSION="2.6.5"
@ -26,7 +27,6 @@ pre_configure_target() {
post_makeinstall_target() { post_makeinstall_target() {
sed -e "s:\(['=\" ]\)/usr:\\1$SYSROOT_PREFIX/usr:g" -i $SYSROOT_PREFIX/usr/bin/freetype-config sed -e "s:\(['=\" ]\)/usr:\\1$SYSROOT_PREFIX/usr:g" -i $SYSROOT_PREFIX/usr/bin/freetype-config
ln -v -sf $SYSROOT_PREFIX/usr/include/freetype2 $SYSROOT_PREFIX/usr/include/freetype
rm -rf $INSTALL/usr/bin rm -rf $INSTALL/usr/bin
} }