Merge pull request #2788 from MilhouseVH/le90_kodi_201807

Kodi: next
This commit is contained in:
Christian Hewitt 2018-07-15 07:49:42 +04:00 committed by GitHub
commit ac1666c346
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 450 additions and 426 deletions

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="audioencoder.flac" PKG_NAME="audioencoder.flac"
PKG_VERSION="16be0ef" PKG_VERSION="c24fc36"
PKG_SHA256="06dc5d7f4f653b61c49c0266888ed2e9fa61508ebc182c8a047afe5899471879" PKG_SHA256="be83cead5cc19a0db2e1577d58f91bcc9bff4ad22b607ec6b2c099065486307c"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="audioencoder.lame" PKG_NAME="audioencoder.lame"
PKG_VERSION="1399236" PKG_VERSION="c6fff50"
PKG_SHA256="9ff1cd4538d2f3e4e5eec1b31f5a5455bf3c67c10a0a7ff2720f2e2b881c3668" PKG_SHA256="9d37e4da6dab2877e8d029ad086dd517e79846cc27a12784f6c4b83130c00755"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="audioencoder.vorbis" PKG_NAME="audioencoder.vorbis"
PKG_VERSION="6ebadfd" PKG_VERSION="fdca99b"
PKG_SHA256="2c561df3e34efa41be9467bd643fa15af438737632d0422e7e67eb059f53abf9" PKG_SHA256="8e5bfa7f3a2303e20826d27c278b62b3e57861dd5fa240ace58212e38eaf0a6a"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="imagedecoder.raw" PKG_NAME="imagedecoder.raw"
PKG_VERSION="d78dff5" PKG_VERSION="ba18fb1"
PKG_SHA256="08e66aabf7e571a57c06cc4fb6cf6655570e39abc3760ef11678c06b8baa742a" PKG_SHA256="d3334626cd37b4dd5271c8a2ac374ff4ddf16755dda0736422321d63b9b35453"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="inputstream.adaptive" PKG_NAME="inputstream.adaptive"
PKG_VERSION="d89b547" PKG_VERSION="faf22f1"
PKG_SHA256="7c276aa374fc69cddd8286a348667acee71556623fbb6f1b0ad18e743f818d41" PKG_SHA256="6d01a6b6e03fd4a05b03860dce245cedbff264972d13321ae95bcf44eba15a6b"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv" PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/peak3d/inputstream.adaptive/archive/$PKG_VERSION.tar.gz" PKG_URL="https://github.com/peak3d/inputstream.adaptive/archive/$PKG_VERSION.tar.gz"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="inputstream.rtmp" PKG_NAME="inputstream.rtmp"
PKG_VERSION="b8e3f39" PKG_VERSION="bf5351e"
PKG_SHA256="eb6cc5f164c3bc76582362ea0683cfdc368ae31591786e11b4a75e0b30c8b0b8" PKG_SHA256="f1a6117569f3293bc61dad6091ed216d0c82428c3d8981eea9870b16947b2c04"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv" PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/notspiff/inputstream.rtmp/archive/$PKG_VERSION.tar.gz" PKG_URL="https://github.com/notspiff/inputstream.rtmp/archive/$PKG_VERSION.tar.gz"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="peripheral.joystick" PKG_NAME="peripheral.joystick"
PKG_VERSION="6312745" PKG_VERSION="dbdeded"
PKG_SHA256="0afec1587bed5c1e32e3717529b5e9dec839f28e01a60ec3c49054577532abf9" PKG_SHA256="b36fa4a0c4f4a05dd1704be76f47a8c4bb811ff738226717bea6fa922735ba62"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.demo" PKG_NAME="pvr.demo"
PKG_VERSION="bcd8289" PKG_VERSION="481f2fa"
PKG_SHA256="c5a33274c400644970cee167ed2c69ca277e07778272657be46ed75410413c2f" PKG_SHA256="ca20f0794977027ec6d803c230deecbab260a306e71353ac6db6249b4881c1bf"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.dvblink" PKG_NAME="pvr.dvblink"
PKG_VERSION="1732e4b" PKG_VERSION="c66203b"
PKG_SHA256="eb3a849102fe5d21d43600bbc97b120ed1b6d5716ac8a2a52079dff1ab4e4364" PKG_SHA256="4a50319e49c13773a3d6b41b506c0a23f4c0416f5e48469612a15b00faefe9a5"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.dvbviewer" PKG_NAME="pvr.dvbviewer"
PKG_VERSION="d6f1629" PKG_VERSION="75e2447"
PKG_SHA256="9c02b2f075eb5243750786e22ecd56215b51107ce96bedfb8d3ef97d17bf7ddf" PKG_SHA256="5e487fa510576879e957c63e72b70f49e7b39243d77034f1fa8c61f46f8beb79"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.filmon" PKG_NAME="pvr.filmon"
PKG_VERSION="ba261c9" PKG_VERSION="93ae10d"
PKG_SHA256="62787a2e5a7bfff874a5138b013f11a00cf1e9c527f531bd3a7e25e0d0eabcb7" PKG_SHA256="b4505877101fde2f5fef13bb15eeecd425b8feff4ae28fb5360d38cf85c0eb03"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.hdhomerun" PKG_NAME="pvr.hdhomerun"
PKG_VERSION="379c62c" PKG_VERSION="ced70bd"
PKG_SHA256="52e6567184ae4ed3c2ca9fd4e5fec67f94ca5eb98e16b4c8996d199f4923ca0a" PKG_SHA256="408fd5abce1138967becfa57b1b78d1e2aea20b82cecf4bbc0cb9cf16b43919f"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.hts" PKG_NAME="pvr.hts"
PKG_VERSION="f569808" PKG_VERSION="306fac5"
PKG_SHA256="84435fadeb53c0cbfc63d096b40a99b2a74448b4a7dbadc954e29e4943ad07f7" PKG_SHA256="d5ad6d9492eae6ea06169996ea33ec0d3b00eee9d584d056ca3632545c81ba22"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.iptvsimple" PKG_NAME="pvr.iptvsimple"
PKG_VERSION="663040c" PKG_VERSION="55637c8"
PKG_SHA256="6be5a4dcf368924a04cd458b9b3f264336e8cdb68a2fca77fe26673f224798a7" PKG_SHA256="5b415fe54bc9248e83792f02b8ecc73b6e22051d7aaae70eebdfc0b8d7da71d6"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.mediaportal.tvserver" PKG_NAME="pvr.mediaportal.tvserver"
PKG_VERSION="01af5a0" PKG_VERSION="6439be6"
PKG_SHA256="5efd46277ec487e600890785059a20cacd4b7bf0ddada235e09dca40231623e0" PKG_SHA256="0bd0b98050e95b88abaf9d0491158e64882fe683ced570d4e1acb64596b9f56e"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.mythtv" PKG_NAME="pvr.mythtv"
PKG_VERSION="c18ca9e" PKG_VERSION="c4d8899"
PKG_SHA256="4a85244371c4a7105c219b90875893c76b9441b4d0f4da59931ea26483359d2a" PKG_SHA256="80e979abdd2cd83984211cc47f7926ca8adce534f74782537d4db6211df7cb55"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.nextpvr" PKG_NAME="pvr.nextpvr"
PKG_VERSION="fad3ca9" PKG_VERSION="6f0515b"
PKG_SHA256="4549b3bb4038a9d381f95483a65cababfdf13abdc0f8aa9af44e2cf1b092e2ee" PKG_SHA256="2df81507db75722520f40d6bd4bd7363e49cbc84e6002f986f05c25e9bfb1878"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.njoy" PKG_NAME="pvr.njoy"
PKG_VERSION="30743c6" PKG_VERSION="30aae48"
PKG_SHA256="93996b7bfcf076051eee7ce3d2108efed5f7af32223afd8fe92808cf478a6355" PKG_SHA256="d4cbcf720f9bbc0ecd7f905853166c95b9f6b936221ee02f11242a0e64307a6a"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.pctv" PKG_NAME="pvr.pctv"
PKG_VERSION="d0c7241" PKG_VERSION="32d4b66"
PKG_SHA256="abefc40b02505189dc55dba11b774ddd897922ee057c88b5cea289f30ec1b5da" PKG_SHA256="509d9fe09208d60f80e064aa5a13cfcf0c1be435e49f95628f159d6647f26a49"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.stalker" PKG_NAME="pvr.stalker"
PKG_VERSION="00f3fc4" PKG_VERSION="6026419"
PKG_SHA256="1b3a4354991d24ee5b32273133eef48d03749f2d493988f524421a6ab35e0bd6" PKG_SHA256="c8c0ab82149096ced5e781c86d969c28ebcdd15bfc4f1f97eefaf70ec550fc7f"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.teleboy" PKG_NAME="pvr.teleboy"
PKG_VERSION="dfa68b0" PKG_VERSION="0460536"
PKG_SHA256="dde0747985c9f535642a9be5830cfe59b8651b426883c38653ea4a191f1aa9cf" PKG_SHA256="c0e3a3410af7e31124d5c821847864e1cd8674f86fbfad15b95c29fad5724b24"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.vbox" PKG_NAME="pvr.vbox"
PKG_VERSION="d2e61a9" PKG_VERSION="12e1304"
PKG_SHA256="e726378bcd8365d527404ec8831e9d82b716926f30a89734b99db5523fc17d73" PKG_SHA256="fd3c5c944725e3a0d5c5087756d678e79c316a1b90c4588b11ed0781914cdb49"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.vuplus" PKG_NAME="pvr.vuplus"
PKG_VERSION="bcfd34d" PKG_VERSION="75179a3"
PKG_SHA256="03e6a7c762d54a97ba57a83d5bb012ee24134991bc42e6101e127b8340d7aa39" PKG_SHA256="4aa46b8de08e8d1c14400cbb5e9ca7c91b04498fcf60d9ac1b09af2aee6e9a91"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.wmc" PKG_NAME="pvr.wmc"
PKG_VERSION="ce4b47a" PKG_VERSION="ec652db"
PKG_SHA256="a260a35149e60a53a8c8cab9b62b9ddb7eaf04d6a5cf73e8992c83e8a9c3ae74" PKG_SHA256="b23e51ac361488e15f63e982cd79d9bec974facc379bc2e0bdd4677ff2b6bfaf"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="pvr.zattoo" PKG_NAME="pvr.zattoo"
PKG_VERSION="e72598d" PKG_VERSION="12134c8"
PKG_SHA256="0751cd169345c7b69c8eeb1711934d4dbf6c6ef92ae4d520ee30a970d8902658" PKG_SHA256="859e25c0f233be46eed7889bfabde6191e930a33cc78470c1aa32b264c6f6955"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="vfs.libarchive" PKG_NAME="vfs.libarchive"
PKG_VERSION="84a4876" PKG_VERSION="1bc1517"
PKG_SHA256="38591095f93a380aac4be58c5e92bf870da095679a152a3ca4a1552ac4415968" PKG_SHA256="421eee7eca4544ae22736b7594ff15934dbee3b592a5d0e6c576cc6c756f481c"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="visualization.projectm" PKG_NAME="visualization.projectm"
PKG_VERSION="a533f9b" PKG_VERSION="06d02b5"
PKG_SHA256="98cde0715786fb1d23469bccd2a174e06bfc02e9e1e983b3240f1fd3acbe3bf6" PKG_SHA256="e37b93450b4f33eb6a1b2cfdeeebb182869d61c96f7f15df1cee840a2deb99f8"
PKG_REV="2" PKG_REV="2"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -18,8 +18,8 @@
################################################################################ ################################################################################
PKG_NAME="kodi" PKG_NAME="kodi"
PKG_VERSION="87c7f9b" PKG_VERSION="b7583e3"
PKG_SHA256="97f8aec04fcc7a19890ae6f02520f375bbb7bb798d0fb229e486092dc0bc1ff1" PKG_SHA256="fabea735a5fdfc423d5c98762696516c9968eebfa68aec2c877406370935146e"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv" PKG_SITE="http://www.kodi.tv"

View File

@ -1,7 +1,7 @@
From 867d7535140dcf7b987ce86c3947c2ec5f5c7bd4 Mon Sep 17 00:00:00 2001 From ac5906ee4bc7b59f48457b01a318139ab15f6c8d Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca> From: Stefan Saraev <stefan@saraev.ca>
Date: Mon, 18 Aug 2014 17:46:54 +0300 Date: Mon, 18 Aug 2014 17:46:54 +0300
Subject: [PATCH 08/13] setup timezone Subject: [PATCH] setup timezone
on TZ country setting change, store the value in format on TZ country setting change, store the value in format
TIMEZONE=Xx/Yyy to /storage/.cache/timezone to be used with TIMEZONE=Xx/Yyy to /storage/.cache/timezone to be used with
@ -11,19 +11,19 @@ tz-data.service
1 file changed, 12 insertions(+) 1 file changed, 12 insertions(+)
diff --git a/xbmc/platform/linux/LinuxTimezone.cpp b/xbmc/platform/linux/LinuxTimezone.cpp diff --git a/xbmc/platform/linux/LinuxTimezone.cpp b/xbmc/platform/linux/LinuxTimezone.cpp
index 372c119..0759a3b 100644 index fae9276..2c24542 100644
--- a/xbmc/platform/linux/LinuxTimezone.cpp --- a/xbmc/platform/linux/LinuxTimezone.cpp
+++ b/xbmc/platform/linux/LinuxTimezone.cpp +++ b/xbmc/platform/linux/LinuxTimezone.cpp
@@ -43,6 +43,8 @@ @@ -36,6 +36,8 @@
#include <algorithm> #include <algorithm>
+#include <fstream> +#include <fstream>
+ +
CLinuxTimezone::CLinuxTimezone() : m_IsDST(0) CLinuxTimezone::CLinuxTimezone()
{ {
char* line = NULL; char* line = NULL;
@@ -160,6 +162,16 @@ void CLinuxTimezone::OnSettingChanged(std::shared_ptr<const CSetting> setting) @@ -153,6 +155,16 @@ void CLinuxTimezone::OnSettingChanged(std::shared_ptr<const CSetting> setting)
const std::string &settingId = setting->GetId(); const std::string &settingId = setting->GetId();
if (settingId == CSettings::SETTING_LOCALE_TIMEZONE) if (settingId == CSettings::SETTING_LOCALE_TIMEZONE)
{ {
@ -41,5 +41,5 @@ index 372c119..0759a3b 100644
CDateTime::ResetTimezoneBias(); CDateTime::ResetTimezoneBias();
-- --
2.7.4 2.14.1

View File

@ -1,24 +1,24 @@
From 84b516ffd5fbf0f7a53c30590dd412aeb4600481 Mon Sep 17 00:00:00 2001 From a2a5ae054768afe9906bbd7ea96d4eb69bf1b857 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca> From: Stefan Saraev <stefan@saraev.ca>
Date: Sat, 18 Apr 2015 15:45:54 +0300 Date: Sat, 18 Apr 2015 15:45:54 +0300
Subject: [PATCH 12/13] prevent kodi switching to windowed mode Subject: [PATCH] prevent kodi switching to windowed mode
--- ---
xbmc/windowing/X11/WinSystemX11.h | 1 + xbmc/windowing/X11/WinSystemX11.h | 1 +
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h
index 5ac2482..cb84940 100644 index 6f8d443..3739b92 100644
--- a/xbmc/windowing/X11/WinSystemX11.h --- a/xbmc/windowing/X11/WinSystemX11.h
+++ b/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h
@@ -54,6 +54,7 @@ public: @@ -49,6 +49,7 @@ public:
bool ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) override; void FinishWindowResize(int newWidth, int newHeight) override;
bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) override; bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) override;
void UpdateResolutions() override; void UpdateResolutions() override;
+ bool CanDoWindowed() override { return false; } + bool CanDoWindowed() override { return false; }
int GetNumScreens() override { return 1; }
int GetCurrentScreen() override { return m_nScreen; }
void ShowOSMouse(bool show) override; void ShowOSMouse(bool show) override;
--
2.5.0 void NotifyAppActiveChange(bool bActivated) override;
--
2.14.1

View File

@ -19,7 +19,7 @@ index 0e57cb0b4c..b2e3374fea 100644
/ffplay /ffplay
/ffprobe /ffprobe
diff --git a/configure b/configure diff --git a/configure b/configure
index dee507cb6a..0ee9efe1e7 100755 index dee507cb6a..9a93189107 100755
--- a/configure --- a/configure
+++ b/configure +++ b/configure
@@ -318,6 +318,7 @@ External library support: @@ -318,6 +318,7 @@ External library support:
@ -30,15 +30,6 @@ index dee507cb6a..0ee9efe1e7 100755
--disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect] --disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect]
--disable-nvenc disable Nvidia video encoding code [autodetect] --disable-nvenc disable Nvidia video encoding code [autodetect]
--enable-omx enable OpenMAX IL code [no] --enable-omx enable OpenMAX IL code [no]
@@ -1036,7 +1037,7 @@ EOF
check_insn(){
log check_insn "$@"
- check_inline_asm ${1}_inline "$2"
+ check_inline_asm ${1}_inline "\"$2\""
check_as ${1}_external "$2"
}
@@ -1776,6 +1777,7 @@ FEATURE_LIST=" @@ -1776,6 +1777,7 @@ FEATURE_LIST="
gray gray
hardcoded_tables hardcoded_tables
@ -12100,10 +12091,10 @@ index 0000000000..6ce3d3ca8d
+ +
diff --git a/libavcodec/arm/rpi_hevcpred_intra_hv_neon.S b/libavcodec/arm/rpi_hevcpred_intra_hv_neon.S diff --git a/libavcodec/arm/rpi_hevcpred_intra_hv_neon.S b/libavcodec/arm/rpi_hevcpred_intra_hv_neon.S
new file mode 100644 new file mode 100644
index 0000000000..afafb6bc44 index 0000000000..67192e7213
--- /dev/null --- /dev/null
+++ b/libavcodec/arm/rpi_hevcpred_intra_hv_neon.S +++ b/libavcodec/arm/rpi_hevcpred_intra_hv_neon.S
@@ -0,0 +1,922 @@ @@ -0,0 +1,911 @@
+/* +/*
+ * Copyright (c) 2018 John Cox <jc@kynesim.co.uk> (for Raspberry Pi) + * Copyright (c) 2018 John Cox <jc@kynesim.co.uk> (for Raspberry Pi)
+ * + *
@ -12340,28 +12331,25 @@ index 0000000000..afafb6bc44
+@ ? Might be faster as simple arm +@ ? Might be faster as simple arm
+ +
+function ff_hevc_rpi_pred_horizontal_4_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_4_neon_8, export=1
+ vld1.32 {d0[0] }, [r1 :32] @ Up + ldrb ip, [r2, #-1] @ Top-left
+ ldrb r12, [r2, #-1] @ Up-left + vld1.32 {d0[0]}, [r1 :32] @ Top
+ vld1.32 {d16[0]}, [r2 :32] @ left + add r1, r2, #3
+ + vld1.8 {d1[]}, [r2]!
+ vdup.8 d4, r12 + vdup.8 d2, ip
+ vmov.u8 d6, #128 + vmov.i8 d3, #128
+ vhsub.u8 d0, d4 + vhsub.u8 d0, d2
+ + veor d1, d3
+ veor.8 d2, d16, d6 @ Make -128,127 so we can qadd + vld1.8 {d2[]}, [r2]!
+ add r2, r0, r3 + add ip, r0, r3
+ vdup.8 d2, d2[0] + vqadd.s8 d0, d0, d1
+ lsl r3, #1 + lsl r3, #1
+ vqadd.s8 d0, d2 + vld1.8 {d1[]}, [r2]
+ veor.8 d0, d6 + vld1.8 {d4[]}, [r1]
+ + veor d0, d3
+ vdup.8 d1, d16[1]
+ vdup.8 d2, d16[2]
+ vdup.8 d3, d16[3]
+ vst1.32 {d0[0]}, [r0 :32], r3 + vst1.32 {d0[0]}, [r0 :32], r3
+ vst1.32 {d1[0] }, [r2 :32], r3 + vst1.32 {d2[0]}, [ip :32], r3
+ vst1.32 {d2[0] }, [r0 :32] + vst1.32 {d1[0]}, [r0 :32]
+ vst1.32 {d3[0] }, [r2 :32] + vst1.32 {d4[0]}, [ip :32]
+ +
+ bx lr + bx lr
+endfunc +endfunc
@ -12374,35 +12362,27 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_8_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_8_neon_8, export=1
+ vld1.8 {d0 }, [r1 :64] @ Up + ldrb ip, [r2, #-1] @ Top-left
+ ldrb r12, [r2, #-1] @ Up-left + vld1.8 {d0}, [r1 :64] @ Top
+ vld1.8 {d16}, [r2 :64] @ left + vmov.i8 d1, #128
+ + vld1.8 {d2[]}, [r2]!
+ vdup.8 d4, r12 + mov r1, #8-2
+ vmov.u8 d6, #128 + vdup.8 d3, ip
+ vhsub.u8 d0, d4 + vhsub.u8 d0, d3
+ + veor d2, d1
+ veor.8 d2, d16, d6 @ Make -128,127 so we can qadd
+ add r2, r0, r3
+ vdup.8 d2, d2[0]
+ lsl r3, #1
+ vqadd.s8 d0, d2 + vqadd.s8 d0, d2
+ mov r1, #3 + vld1.8 {d2[]}, [r2]!
+ veor.8 d0, d6 + veor d0, d1
+ + vst1.8 {d0}, [r0], r3
+ vdup.8 d4, d16[1]
+ vst1.8 {d0 }, [r0 :64], r3
+ vst1.8 {d4 }, [r2 :64], r3
+
+1: +1:
+ vext.8 d16, d16, #2 + vld1.8 {d0[]}, [r2]!
+ subs r1, #1 + subs r1, #2
+ vdup.8 d0, d16[0] + vst1.8 {d2}, [r0 :64], r3
+ vdup.8 d4, d16[1] + vld1.8 {d2[]}, [r2]!
+ vst1.8 {d0}, [r0 :64], r3 + vst1.8 {d0}, [r0 :64], r3
+ vst1.8 {d4 }, [r2 :64], r3
+ bne 1b + bne 1b
+ +
+ vst1.8 {d2}, [r0 :64]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12414,35 +12394,27 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_16_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_16_neon_8, export=1
+ vld1.8 {q0 }, [r1 :128] @ Up + ldrb ip, [r2, #-1] @ Top-left
+ ldrb r12, [r2, #-1] @ Up-left + vld1.8 {q0}, [r1 :64] @ Top
+ vld1.8 {q8 }, [r2 :128] @ left + mov r1, #16-2
+ + vld1.8 {d4[],d5[]}, [r2]!
+ vdup.8 q2, r12 + vdup.8 q3, ip
+ vmov.u8 q3, #128 + vhsub.u8 q0, q3
+ vhsub.u8 q0, q2 + vmov.i8 q1, #128
+ + veor q2, q1
+ veor.8 d2, d16, d6 @ Make -128,127 so we can qadd + vqadd.s8 q0, q2
+ add r2, r0, r3 + vld1.8 {d4[],d5[]}, [r2]!
+ vdup.8 q1, d2[0] + veor q0, q1
+ lsl r3, #1 + vst1.8 {q0}, [r0], r3
+ vqadd.s8 q0, q1
+ mov r1, #7
+ veor.8 q0, q3
+
+ vdup.8 q2, d16[1]
+ vst1.8 {q0 }, [r0 :128], r3
+ vst1.8 {q2 }, [r2 :128], r3
+
+1: +1:
+ vext.8 q8, q8, #2 + vld1.8 {d0[],d1[]}, [r2]!
+ subs r1, #1 + subs r1, #2
+ vdup.8 q0, d16[0] + vst1.8 {q2}, [r0 :64], r3
+ vdup.8 q2, d16[1] + vld1.8 {d4[],d5[]}, [r2]!
+ vst1.8 {q0 }, [r0 :128], r3 + vst1.8 {q0}, [r0 :64], r3
+ vst1.8 {q2 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.8 {q2}, [r0 :64]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12454,22 +12426,24 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_32_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_32_neon_8, export=1
+ vld1.8 {q8, q9 }, [r2 :128] @ Left + vld1.8 {d0[],d1[]}, [r2]!
+ add r2, r0, r3 + add ip, r0, #16
+ lsl r3, #1 + mov r1, #32-2
+ mov r1, #16 + vld1.8 {d2[],d3[]}, [r2]!
+ vst1.8 {q0}, [r0 :128], r3
+ vst1.8 {q0}, [ip :128], r3
+1: +1:
+ vdup.8 q0, d16[0] + vld1.8 {d0[],d1[]}, [r2]!
+ vdup.8 q1, d16[0] + subs r1, #2
+ vdup.8 q2, d16[1] + vst1.8 {q1}, [r0 :128], r3
+ vdup.8 q3, d16[1] + vst1.8 {q1}, [ip :128], r3
+ vext.8 q8, q9, #2 + vld1.8 {d2[],d3[]}, [r2]!
+ vext.8 q9, q9, #2 + vst1.8 {q0}, [r0 :128], r3
+ vst1.8 {q0, q1 }, [r0 :128], r3 + vst1.8 {q0}, [ip :128], r3
+ subs r1, #1
+ vst1.8 {q2, q3 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.8 {q1}, [r0 :128]
+ vst1.8 {q1}, [ip :128]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12481,15 +12455,18 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_c_4_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_c_4_neon_8, export=1
+ vld1.16 {d16}, [r2 :64] @ Left + add r1, r2, #2
+ add r2, r0, r3, lsl #1 + vld1.16 {d0[]}, [r2]
+ lsl r3, #2 + add r2, #4
+ + vld1.16 {d1[]}, [r1]
+ vdup.16 d0, d16[0] + add r1, #4
+ vdup.16 d1, d16[1] + vld1.16 {d2[]}, [r2]
+ vdup.16 d2, d16[2] +A add r2, r0, r3, lsl #1
+ vdup.16 d3, d16[3] +T lsl r3, #1
+ +T add r2, r0, r3
+ vld1.16 {d3[]}, [r1]
+A lsl r3, #2
+T lsl r3, #1
+ vst1.16 {d0}, [r0 :64], r3 + vst1.16 {d0}, [r0 :64], r3
+ vst1.16 {d1}, [r2 :64], r3 + vst1.16 {d1}, [r2 :64], r3
+ vst1.16 {d2}, [r0 :64] + vst1.16 {d2}, [r0 :64]
@ -12506,19 +12483,20 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_c_8_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_c_8_neon_8, export=1
+ vld1.16 {q8 }, [r2 :128] @ Left + vld1.16 {d0[],d1[]}, [r2]!
+ add r2, r0, r3, lsl #1 + lsl r3, #1
+ lsl r3, #2 + vld1.16 {d2[],d3[]}, [r2]!
+ mov r1, #4 + mov r1, #8-2
+ vst1.16 {q0}, [r0 :64], r3
+1: +1:
+ vdup.16 q0, d16[0] + vld1.16 {d0[],d1[]}, [r2]!
+ vdup.16 q2, d16[1] + subs r1, #2
+ vext.16 q8, q8, #2 + vst1.16 {q1}, [r0 :64], r3
+ vst1.16 {q0 }, [r0 :128], r3 + vld1.16 {d2[],d3[]}, [r2]!
+ subs r1, #1 + vst1.16 {q0}, [r0 :64], r3
+ vst1.16 {q2 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.16 {q1}, [r0 :64]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12530,22 +12508,25 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_c_16_neon_8, export=1 +function ff_hevc_rpi_pred_horizontal_c_16_neon_8, export=1
+ vld1.16 {q8, q9 }, [r2 :128] @ Left + vld1.16 {d0[],d1[]}, [r2]!
+ add r2, r0, r3, lsl #1 + lsl r3, #1
+ lsl r3, #2 + add ip, r0, #16
+ mov r1, #8 + mov r1, #16-2
+ vld1.16 {d2[],d3[]}, [r2]!
+ vst1.16 {q0}, [r0 :128], r3
+ vst1.16 {q0}, [ip :128], r3
+1: +1:
+ vdup.16 q0, d16[0] + vld1.16 {d0[],d1[]}, [r2]!
+ vdup.16 q1, d16[0] + subs r1, #2
+ vdup.16 q2, d16[1] + vst1.16 {q1}, [r0 :128], r3
+ vdup.16 q3, d16[1] + vst1.16 {q1}, [ip :128], r3
+ vext.16 q8, q9, #2 + vld1.16 {d2[],d3[]}, [r2]!
+ vext.16 q9, q9, #2 + vst1.16 {q0}, [r0 :128], r3
+ vst1.16 {q0, q1 }, [r0 :128], r3 + vst1.16 {q0}, [ip :128], r3
+ subs r1, #1
+ vst1.16 {q2, q3 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.16 {q1}, [r0 :128]
+ vst1.16 {q1}, [ip :128]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12780,31 +12761,28 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_4_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_4_neon_10, export=1
+ vld1.16 {d0 }, [r1 :64] @ Up + ldrh ip, [r2, #-2] @ Top-left
+ ldrh r12, [r2, #-2] @ Up-left + vld1.16 {d0}, [r1 :64] @ Top
+ vld1.16 {d16}, [r2 :64] @ left + vmov.i16 d1, #0
+ + vld1.16 {d2[]}, [r2]!
+ vdup.16 d4, r12 +T lsl r3, #1
+ add r2, r0, r3, lsl #1 + vdup.16 d3, ip
+ vhsub.u16 d0, d4 + vmov.i16 d4, #0x3ff
+ + vhsub.u16 d0, d3
+ vdup.16 d6, d16[0] +A add ip, r0, r3, lsl #1
+ vmov.s16 d4, #0 +T add ip, r0, r3
+ vadd.i16 d0, d6 + vld1.16 {d3[]}, [r2]!
+ +A lsl r3, #2
+ vmov.s16 d6, #0x3ff +T lsl r3, #1
+ vmax.s16 d0, d4 + vadd.i16 d0, d2
+ lsl r3, #2 + vld1.16 {d2[]}, [r2]!
+ vmin.s16 d0, d6 + vmax.s16 d0, d1
+ + vld1.16 {d1[]}, [r2]
+ vdup.16 d1, d16[1] + vmin.s16 d0, d4
+ vdup.16 d2, d16[2]
+ vdup.16 d3, d16[3]
+
+ vst1.16 {d0}, [r0 :64], r3 + vst1.16 {d0}, [r0 :64], r3
+ vst1.16 {d1 }, [r2 :64], r3 + vst1.16 {d3}, [ip :64], r3
+ vst1.16 {d2}, [r0 :64] + vst1.16 {d2}, [r0 :64]
+ vst1.16 {d3 }, [r2 :64] + vst1.16 {d1}, [ip :64]
+ +
+ bx lr + bx lr
+endfunc +endfunc
@ -12817,37 +12795,29 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_8_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_8_neon_10, export=1
+ vld1.16 {q0 }, [r1 :128] @ Up + ldrh ip, [r2, #-2] @ Top-left
+ ldrh r12, [r2, #-2] @ Up-left + vld1.16 {q0}, [r1 :128] @ Top
+ vld1.16 {q8 }, [r2 :128] @ left + lsl r3, #1
+ + vdup.16 q1, ip
+ vdup.16 q2, r12 + mov r1, #8-2
+ add r2, r0, r3, lsl #1 + vhsub.u16 q0, q1
+ vhsub.u16 q0, q2 + vld1.16 {d2[],d3[]}, [r2]!
+ + vmov.i16 q2, #0
+ vdup.16 q3, d16[0] + vadd.i16 q0, q1
+ lsl r3, #2 + vmov.i16 q1, #0x3ff
+ vmov.s16 q2, #0
+ vadd.i16 q0, q3
+
+ mov r1, #3
+ vmov.s16 q3, #0x3ff
+ vmax.s16 q0, q2 + vmax.s16 q0, q2
+ vmin.s16 q0, q3 + vld1.16 {d4[],d5[]}, [r2]!
+ + vmin.s16 q0, q1
+ vdup.16 q2, d16[1]
+
+ vst1.16 {q0}, [r0 :128], r3 + vst1.16 {q0}, [r0 :128], r3
+ vst1.16 {q2 }, [r2 :128], r3
+1: +1:
+ vext.16 q8, q8, #2 + vld1.16 {d0[],d1[]}, [r2]!
+ vdup.16 q0, d16[0] + subs r1, #2
+ vdup.16 q2, d16[1] + vst1.16 {q2}, [r0 :128], r3
+ subs r1, #1 + vld1.16 {d4[],d5[]}, [r2]!
+ vst1.16 {q0}, [r0 :128], r3 + vst1.16 {q0}, [r0 :128], r3
+ vst1.16 {q2 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.16 {q2}, [r0 :128]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12859,46 +12829,38 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_16_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_16_neon_10, export=1
+ vld1.16 {q0, q1 }, [r1 :128] @ Up + ldrh ip, [r2, #-2] @ Top-left
+ ldrh r12, [r2, #-2] @ Up-left + vld1.16 {q0-q1}, [r1 :128] @ Top
+ vld1.16 {q8, q9 }, [r2 :128] @ left + lsl r3, #1
+ + vdup.16 q2, ip
+ + add ip, r0, r3
+ vdup.16 q2, r12
+ add r2, r0, r3, lsl #1
+ vhsub.u16 q0, q2 + vhsub.u16 q0, q2
+ add ip, #16
+ vhsub.u16 q1, q2 + vhsub.u16 q1, q2
+ + mov r1, #16-2
+ vdup.16 q3, d16[0] + vld1.16 {d4[],d5[]}, [r2]!
+ lsl r3, #2 + vmov.i16 q3, #0
+ vmov.s16 q2, #0 + vadd.u16 q0, q2
+ vadd.i16 q0, q3 + vadd.i16 q1, q2
+ vadd.i16 q1, q3 + vmov.i16 q2, #0x3ff
+ + vmax.s16 q0, q3
+ mov r1, #7 + vmax.s16 q1, q3
+ vmov.s16 q3, #0x3ff + vld1.16 {d6[],d7[]}, [r2]!
+ vmax.s16 q0, q2 + vmin.s16 q0, q2
+ vmax.s16 q1, q2 + vmin.s16 q1, q2
+ vmin.s16 q0, q3 + vst1.16 {q0-q1}, [r0 :128], r3
+ vmin.s16 q1, q3
+
+ vdup.16 q2, d16[1]
+ vdup.16 q3, d16[1]
+
+ vst1.16 {q0, q1 }, [r0 :128], r3
+ vst1.16 {q2, q3 }, [r2 :128], r3
+1: +1:
+ vext.16 q8, q9, #2 + vld1.16 {d0[],d1[]}, [r2]!
+ vext.16 q9, q9, #2 + subs r1, #2
+ vdup.16 q0, d16[0] + vst1.16 {q3}, [r0 :128], r3
+ vdup.16 q1, d16[0] + vst1.16 {q3}, [ip :128], r3
+ vdup.16 q2, d16[1] + vld1.16 {d6[],d7[]}, [r2]!
+ vdup.16 q3, d16[1] + vst1.16 {q0}, [r0 :128], r3
+ subs r1, #1 + vst1.16 {q0}, [ip :128], r3
+ vst1.16 {q0, q1 }, [r0 :128], r3
+ vst1.16 {q2, q3 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.16 {q3}, [r0 :128]
+ vst1.16 {q3}, [ip :128]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12910,31 +12872,37 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_32_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_32_neon_10, export=1
+ vldm r2, { q8-q11} + vld1.16 {d0[],d1[]}, [r2]!
+ mov r1, #16 + add ip, r0, #16
+ push {lr}
+ mov lr, #32
+ vld1.16 {d2[],d3[]}, [r2]!
+ lsl r3, #1
+ vst1.16 {q0}, [r0 :128], lr
+ sub r3, #32
+ vst1.16 {q0}, [ip :128], lr
+ mov r1, #32-2
+ vst1.16 {q0}, [r0 :128], r3
+ vst1.16 {q0}, [ip :128], r3
+1: +1:
+ vdup.16 q0, d16[0] + vld1.16 {d0[],d1[]}, [r2]!
+ vdup.16 q1, d16[0] + subs r1, #2
+ vdup.16 q2, d16[0] + vst1.16 {q1}, [r0 :128], lr
+ vdup.16 q3, d16[0] + vst1.16 {q1}, [ip :128], lr
+ add r2, r0, r3, lsl #1 + vst1.16 {q1}, [r0 :128], r3
+ vdup.16 q12, d16[1] + vst1.16 {q1}, [ip :128], r3
+ vdup.16 q13, d16[1] + vld1.16 {d2[],d3[]}, [r2]!
+ vdup.16 q14, d16[1] + vst1.16 {q0}, [r0 :128], lr
+ vdup.16 q15, d16[1] + vst1.16 {q0}, [ip :128], lr
+ vstm r0, { q0-q3 } + vst1.16 {q0}, [r0 :128], r3
+ vstm r2, {q12-q15} + vst1.16 {q0}, [ip :128], r3
+
+ vext.16 q8, q9, #2
+ vext.16 q9, q10, #2
+ add r0, r0, r3, lsl #2
+ vext.16 q10, q11, #2
+ subs r1, #1
+ vext.16 q11, q11, #2
+
+ bne 1b + bne 1b
+ +
+ bx lr + vst1.16 {q1}, [r0 :128], lr
+ vst1.16 {q1}, [ip :128], lr
+ vst1.16 {q1}, [r0 :128]
+ vst1.16 {q1}, [ip :128]
+ pop {pc}
+endfunc +endfunc
+ +
+ +
@ -12945,19 +12913,22 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_c_4_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_c_4_neon_10, export=1
+ vld1.16 {q8 }, [r2 :128] @ Left + add r1, r2, #4
+ add r2, r0, r3, lsl #2 + vld1.32 {d0[],d1[]}, [r2]
+ lsl r3, #3 + add r2, #8
+ + vld1.32 {d2[],d3[]}, [r1]
+ vdup.32 q0, d16[0] + add r1, #8
+ vdup.32 q1, d16[1] + vld1.32 {d4[],d5[]}, [r2]
+ vdup.32 q2, d17[0] +A add r2, r0, r3, lsl #2
+ vdup.32 q3, d17[1] +T lsl r3, #2
+ +T add r2, r0, r3
+ vld1.32 {d6[],d7[]}, [r1]
+A lsl r3, #3
+T lsl r3, #1
+ vst1.32 {q0}, [r0 :128], r3 + vst1.32 {q0}, [r0 :128], r3
+ vst1.16 {q1 }, [r2 :128], r3 + vst1.32 {q1}, [r2 :128], r3
+ vst1.32 {q2}, [r0 :128] + vst1.32 {q2}, [r0 :128]
+ vst1.16 {q3 }, [r2 :128] + vst1.32 {q3}, [r2 :128]
+ +
+ bx lr + bx lr
+endfunc +endfunc
@ -12970,22 +12941,25 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_c_8_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_c_8_neon_10, export=1
+ vld1.16 {q8, q9 }, [r2 :128] @ Left + vld1.32 {d0[],d1[]}, [r2]!
+ add r2, r0, r3, lsl #2 + lsl r3, #2
+ lsl r3, #3 + add ip, r0, #16
+ mov r1, #4 + mov r1, #8-2
+ vld1.32 {d2[],d3[]}, [r2]!
+ vst1.32 {q0}, [r0 :128], r3
+ vst1.32 {q0}, [ip :128], r3
+1: +1:
+ vdup.32 q0, d16[0] + vld1.32 {d0[],d1[]}, [r2]!
+ vdup.32 q1, d16[0] + subs r1, #2
+ vdup.32 q2, d16[1] + vst1.32 {q1}, [r0 :128], r3
+ vdup.32 q3, d16[1] + vst1.32 {q1}, [ip :128], r3
+ vext.32 q8, q9, #2 + vld1.32 {d2[],d3[]}, [r2]!
+ vext.32 q9, q9, #2 + vst1.32 {q0}, [r0 :128], r3
+ vst1.32 {q0, q1 }, [r0 :128], r3 + vst1.32 {q0}, [ip :128], r3
+ subs r1, #1
+ vst1.32 {q2, q3 }, [r2 :128], r3
+ bne 1b + bne 1b
+ +
+ vst1.32 {q1}, [r0 :128]
+ vst1.32 {q1}, [ip :128]
+ bx lr + bx lr
+endfunc +endfunc
+ +
@ -12997,31 +12971,37 @@ index 0000000000..afafb6bc44
+@ ptrdiff_t stride) [r3] +@ ptrdiff_t stride) [r3]
+ +
+function ff_hevc_rpi_pred_horizontal_c_16_neon_10, export=1 +function ff_hevc_rpi_pred_horizontal_c_16_neon_10, export=1
+ vldm r2, { q8-q11} + vld1.32 {d0[],d1[]}, [r2]!
+ mov r1, #8 + add ip, r0, #16
+ push {lr}
+ mov lr, #32
+ vld1.32 {d2[],d3[]}, [r2]!
+ lsl r3, #2
+ vst1.32 {q0}, [r0 :128], lr
+ sub r3, #32
+ vst1.32 {q0}, [ip :128], lr
+ mov r1, #16-2
+ vst1.32 {q0}, [r0 :128], r3
+ vst1.32 {q0}, [ip :128], r3
+1: +1:
+ vdup.32 q0, d16[0] + vld1.32 {d0[],d1[]}, [r2]!
+ vdup.32 q1, d16[0] + subs r1, #2
+ vdup.32 q2, d16[0] + vst1.32 {q1}, [r0 :128], lr
+ vdup.32 q3, d16[0] + vst1.32 {q1}, [ip :128], lr
+ add r2, r0, r3, lsl #2 + vst1.32 {q1}, [r0 :128], r3
+ vdup.32 q12, d16[1] + vst1.32 {q1}, [ip :128], r3
+ vdup.32 q13, d16[1] + vld1.32 {d2[],d3[]}, [r2]!
+ vdup.32 q14, d16[1] + vst1.32 {q0}, [r0 :128], lr
+ vdup.32 q15, d16[1] + vst1.32 {q0}, [ip :128], lr
+ vstm r0, { q0-q3 } + vst1.32 {q0}, [r0 :128], r3
+ vstm r2, {q12-q15} + vst1.32 {q0}, [ip :128], r3
+
+ vext.32 q8, q9, #2
+ vext.32 q9, q10, #2
+ add r0, r0, r3, lsl #3
+ vext.32 q10, q11, #2
+ subs r1, #1
+ vext.32 q11, q11, #2
+
+ bne 1b + bne 1b
+ +
+ bx lr + vst1.32 {q1}, [r0 :128], lr
+ vst1.32 {q1}, [ip :128], lr
+ vst1.32 {q1}, [r0 :128]
+ vst1.32 {q1}, [ip :128]
+ pop {pc}
+endfunc +endfunc
+ +
+ +
@ -18040,10 +18020,10 @@ index 0000000000..8e7695bcf9
+ +
diff --git a/libavcodec/rpi_hevc_mvs.c b/libavcodec/rpi_hevc_mvs.c diff --git a/libavcodec/rpi_hevc_mvs.c b/libavcodec/rpi_hevc_mvs.c
new file mode 100644 new file mode 100644
index 0000000000..f283f01489 index 0000000000..163e2558dc
--- /dev/null --- /dev/null
+++ b/libavcodec/rpi_hevc_mvs.c +++ b/libavcodec/rpi_hevc_mvs.c
@@ -0,0 +1,704 @@ @@ -0,0 +1,681 @@
+/* +/*
+ * HEVC video decoder + * HEVC video decoder
+ * + *
@ -18163,7 +18143,7 @@ index 0000000000..f283f01489
+ refPicList, X, refIdxLx, \ + refPicList, X, refIdxLx, \
+ refPicList_col, L ## l, temp_col.ref_idx[l]) + refPicList_col, L ## l, temp_col.ref_idx[l])
+ +
+// derive the motion vectors section 8.5.3.1.8 +// derive the motion vectors section 8.5.3.2.8
+static int derive_temporal_colocated_mvs(const HEVCRpiContext * const s, const MvField temp_col, +static int derive_temporal_colocated_mvs(const HEVCRpiContext * const s, const MvField temp_col,
+ const int refIdxLx, Mv * const mvLXCol, const int X, + const int refIdxLx, Mv * const mvLXCol, const int X,
+ const int colPic, const RefPicList * const refPicList_col) + const int colPic, const RefPicList * const refPicList_col)
@ -18173,35 +18153,12 @@ index 0000000000..f283f01489
+ if (temp_col.pred_flag == PF_INTRA) + if (temp_col.pred_flag == PF_INTRA)
+ return 0; + return 0;
+ +
+ if (!(temp_col.pred_flag & PF_L0)) + if (temp_col.pred_flag == PF_L0 ||
+ return CHECK_MVSET(1); + (temp_col.pred_flag == PF_BI && (s->no_backward_pred_flag ? s->sh.collocated_list == L1 : X == 0)))
+ else if (temp_col.pred_flag == PF_L0) + {
+ return CHECK_MVSET(0); + return CHECK_MVSET(0);
+ else if (temp_col.pred_flag == PF_BI) {
+ int check_diffpicount = 0;
+ int i, j;
+ for (j = 0; j < 2; j++) {
+ for (i = 0; i < refPicList[j].nb_refs; i++) {
+ if (refPicList[j].list[i] > s->poc) {
+ check_diffpicount++;
+ break;
+ } + }
+ }
+ }
+ if (!check_diffpicount) {
+ if (X==0)
+ return CHECK_MVSET(0);
+ else
+ return CHECK_MVSET(1); + return CHECK_MVSET(1);
+ } else {
+ if (s->sh.collocated_list == L1)
+ return CHECK_MVSET(0);
+ else
+ return CHECK_MVSET(1);
+ }
+ }
+
+ return 0;
+} +}
+ +
+#define TAB_MVF(x, y) \ +#define TAB_MVF(x, y) \
@ -27149,10 +27106,10 @@ index 0000000000..3557348e30
+}; +};
diff --git a/libavcodec/rpi_hevcdec.c b/libavcodec/rpi_hevcdec.c diff --git a/libavcodec/rpi_hevcdec.c b/libavcodec/rpi_hevcdec.c
new file mode 100644 new file mode 100644
index 0000000000..255dd6835a index 0000000000..eef98e5643
--- /dev/null --- /dev/null
+++ b/libavcodec/rpi_hevcdec.c +++ b/libavcodec/rpi_hevcdec.c
@@ -0,0 +1,5799 @@ @@ -0,0 +1,5820 @@
+/* +/*
+ * HEVC video Decoder + * HEVC video Decoder
+ * + *
@ -31981,12 +31938,33 @@ index 0000000000..255dd6835a
+} +}
+ +
+ +
+static void set_no_backward_pred(HEVCRpiContext * const s)
+{
+ int i, j;
+ const RefPicList *const refPicList = s->ref->refPicList;
+
+ s->no_backward_pred_flag = 0;
+ if (s->sh.slice_type != HEVC_SLICE_B || !s->sh.slice_temporal_mvp_enabled_flag)
+ return;
+
+ for (j = 0; j < 2; j++) {
+ for (i = 0; i < refPicList[j].nb_refs; i++) {
+ if (refPicList[j].list[i] > s->poc) {
+ s->no_backward_pred_flag = 1;
+ return;
+ }
+ }
+ }
+}
+
+static int hls_slice_data(HEVCRpiContext * const s, const H2645NAL * const nal) +static int hls_slice_data(HEVCRpiContext * const s, const H2645NAL * const nal)
+{ +{
+ int err; + int err;
+ if ((err = gen_entry_points(s, nal)) < 0) + if ((err = gen_entry_points(s, nal)) < 0)
+ return err; + return err;
+ +
+ set_no_backward_pred(s);
+
+ return rpi_decode_entry(s->avctx, NULL); + return rpi_decode_entry(s->avctx, NULL);
+} +}
+ +
@ -32954,10 +32932,10 @@ index 0000000000..255dd6835a
+ +
diff --git a/libavcodec/rpi_hevcdec.h b/libavcodec/rpi_hevcdec.h diff --git a/libavcodec/rpi_hevcdec.h b/libavcodec/rpi_hevcdec.h
new file mode 100644 new file mode 100644
index 0000000000..a5ce342ab3 index 0000000000..ea08308be2
--- /dev/null --- /dev/null
+++ b/libavcodec/rpi_hevcdec.h +++ b/libavcodec/rpi_hevcdec.h
@@ -0,0 +1,956 @@ @@ -0,0 +1,959 @@
+/* +/*
+ * HEVC video decoder + * HEVC video decoder
+ * + *
@ -33616,13 +33594,18 @@ index 0000000000..a5ce342ab3
+ const AVClass *c; // needed by private avoptions + const AVClass *c; // needed by private avoptions
+ AVCodecContext *avctx; + AVCodecContext *avctx;
+ +
+ HEVCRpiLocalContext *HEVClcList[MAX_NB_THREADS];
+ HEVCRpiLocalContext *HEVClc;
+
+ uint8_t threads_type; + uint8_t threads_type;
+ +
+ /** 1 if the independent slice segment header was successfully parsed */ + /** 1 if the independent slice segment header was successfully parsed */
+ uint8_t slice_initialized; + uint8_t slice_initialized;
+ char used_for_ref; // rpi
+ char offload_recon;
+ uint8_t eos; ///< current packet contains an EOS/EOB NAL
+ uint8_t last_eos; ///< last packet contains an EOS/EOB NAL
+ uint8_t no_backward_pred_flag;
+ uint8_t is_decoded;
+ uint8_t no_rasl_output_flag;
+
+ +
+ /** + /**
+ * Sequence counters for decoded and output frames, so that old + * Sequence counters for decoded and output frames, so that old
@ -33634,9 +33617,6 @@ index 0000000000..a5ce342ab3
+ int width; + int width;
+ int height; + int height;
+ +
+ char used_for_ref; // rpi
+ char offload_recon;
+
+ HEVCRpiJobCtl * jbc; + HEVCRpiJobCtl * jbc;
+ // cabac stash + // cabac stash
+ // b0 skip flag + // b0 skip flag
@ -33662,33 +33642,19 @@ index 0000000000..a5ce342ab3
+ uint8_t *sao_pixel_buffer_h[3]; + uint8_t *sao_pixel_buffer_h[3];
+ uint8_t *sao_pixel_buffer_v[3]; + uint8_t *sao_pixel_buffer_v[3];
+ +
+ HEVCRpiParamSets ps;
+
+ AVBufferPool *tab_mvf_pool; + AVBufferPool *tab_mvf_pool;
+ AVBufferPool *rpl_tab_pool; + AVBufferPool *rpl_tab_pool;
+ +
+ ///< candidate references for the current frame
+ RefPicList rps[5];
+
+ RpiSliceHeader sh;
+ RpiSAOParams *sao; + RpiSAOParams *sao;
+ DBParams *deblock; + DBParams *deblock;
+ enum HEVCNALUnitType nal_unit_type; + enum HEVCNALUnitType nal_unit_type;
+ int temporal_id; ///< temporal_id_plus1 - 1 + int temporal_id; ///< temporal_id_plus1 - 1
+ HEVCFrame *ref; + HEVCFrame *ref;
+ HEVCFrame DPB[HEVC_DPB_ELS];
+ int poc; + int poc;
+ int pocTid0; + int pocTid0;
+ int slice_idx; ///< number of the slice being currently decoded + int slice_idx; ///< number of the slice being currently decoded
+ int eos; ///< current packet contains an EOS/EOB NAL
+ int last_eos; ///< last packet contains an EOS/EOB NAL
+ int max_ra; + int max_ra;
+ +
+ int is_decoded;
+ int no_rasl_output_flag;
+
+ HEVCRpiPredContext hpc;
+ HEVCDSPContext hevcdsp;
+ int8_t *qp_y_tab; + int8_t *qp_y_tab;
+ +
+ // Deblocking block strength bitmaps + // Deblocking block strength bitmaps
@ -33731,6 +33697,21 @@ index 0000000000..a5ce342ab3
+ +
+ struct AVMD5 *md5_ctx; + struct AVMD5 *md5_ctx;
+ +
+ RpiSliceHeader sh;
+
+ HEVCRpiParamSets ps;
+
+ HEVCRpiLocalContext *HEVClc;
+ HEVCRpiLocalContext *HEVClcList[MAX_NB_THREADS];
+
+ HEVCFrame DPB[HEVC_DPB_ELS];
+
+ ///< candidate references for the current frame
+ RefPicList rps[5];
+
+ HEVCRpiPredContext hpc;
+ HEVCDSPContext hevcdsp;
+
+ HEVCSEIContext sei; + HEVCSEIContext sei;
+ +
+ // Put structures that allocate non-trivial storage at the end + // Put structures that allocate non-trivial storage at the end

View File

@ -0,0 +1,42 @@
From: Michael Niedermayer <michael@niedermayer.cc>
Date: Mon, 21 May 2018 01:16:58 +0000 (+0200)
Subject: avformat/mov: replace a value error by clipping into valid range in mov_read_stsc()
X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=commitdiff_plain;h=fe84f70819d6f5aab3c4823290e0d32b99d6de78
avformat/mov: replace a value error by clipping into valid range in mov_read_stsc()
Fixes: #7165
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
diff --git a/libavformat/mov.c b/libavformat/mov.c
index a078bf4712..f2a540ad50 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2642,14 +2642,22 @@ static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
sc->stsc_count = i;
for (i = sc->stsc_count - 1; i < UINT_MAX; i--) {
+ int64_t first_min = i + 1;
if ((i+1 < sc->stsc_count && sc->stsc_data[i].first >= sc->stsc_data[i+1].first) ||
(i > 0 && sc->stsc_data[i].first <= sc->stsc_data[i-1].first) ||
- sc->stsc_data[i].first < 1 ||
+ sc->stsc_data[i].first < first_min ||
sc->stsc_data[i].count < 1 ||
sc->stsc_data[i].id < 1) {
av_log(c->fc, AV_LOG_WARNING, "STSC entry %d is invalid (first=%d count=%d id=%d)\n", i, sc->stsc_data[i].first, sc->stsc_data[i].count, sc->stsc_data[i].id);
- if (i+1 >= sc->stsc_count || sc->stsc_data[i+1].first < 2)
- return AVERROR_INVALIDDATA;
+ if (i+1 >= sc->stsc_count) {
+ sc->stsc_data[i].first = FFMAX(sc->stsc_data[i].first, first_min);
+ if (i > 0 && sc->stsc_data[i].first <= sc->stsc_data[i-1].first)
+ sc->stsc_data[i].first = FFMIN(sc->stsc_data[i-1].first + 1LL, INT_MAX);
+ sc->stsc_data[i].count = FFMAX(sc->stsc_data[i].count, 1);
+ sc->stsc_data[i].id = FFMAX(sc->stsc_data[i].id, 1);
+ continue;
+ }
+ av_assert0(sc->stsc_data[i+1].first >= 2);
// We replace this entry by the next valid
sc->stsc_data[i].first = sc->stsc_data[i+1].first - 1;
sc->stsc_data[i].count = sc->stsc_data[i+1].count;

View File

@ -1,24 +1,25 @@
################################################################################ ################################################################################
# This file is part of OpenELEC - http://www.openelec.tv # This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2018-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) # Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# #
# OpenELEC is free software: you can redistribute it and/or modify # LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or # the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# OpenELEC is distributed in the hope that it will be useful, # LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>. # along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################ ################################################################################
PKG_NAME="libnfs" PKG_NAME="libnfs"
PKG_VERSION="2.0.0" PKG_VERSION="3.0.0"
PKG_SHA256="7ea6cd8fa6c461d01091e584d424d28e137d23ff4b65b95d01a3fd0ef95d120e" PKG_SHA256="445d92c5fc55e4a5b115e358e60486cf8f87ee50e0103d46a02e7fb4618566a5"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="https://github.com/sahlberg/libnfs" PKG_SITE="https://github.com/sahlberg/libnfs"