mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e882c649fe | ||
|
|
a09b8ea227 | ||
|
|
3c6b246da1 | ||
|
|
0dc0085d12 | ||
|
|
501d64503f | ||
|
|
ce9deb7aa7 | ||
|
|
0ddf2aa42e | ||
|
|
1951715877 | ||
|
|
83282b6af0 | ||
|
|
d019b64b78 | ||
|
|
fb3975758f | ||
|
|
2b3c251900 | ||
|
|
332ab42cc7 | ||
|
|
9ab6b71716 | ||
|
|
469f1829c1 | ||
|
|
ec759de239 | ||
|
|
18581f3006 | ||
|
|
2a5e229a20 | ||
|
|
c3b52d6284 | ||
|
|
fd8aa6610d | ||
|
|
57afce6129 | ||
|
|
110ea515dc | ||
|
|
ec446e21ef | ||
|
|
c7d8093c6b | ||
|
|
ba0a2ec358 | ||
|
|
07aa491253 | ||
|
|
00437c4c8d | ||
|
|
2509ccd743 | ||
|
|
4d9caffbe4 | ||
|
|
e39892557d | ||
|
|
e347b69d0e | ||
|
|
f20200dad3 | ||
|
|
cb7c0c9361 | ||
|
|
4ca25d29a7 | ||
|
|
2dab8326c4 | ||
|
|
169ebdb762 | ||
|
|
fcfa9a9d9c | ||
|
|
ed3ea1d53d | ||
|
|
de9a2ba961 | ||
|
|
a24745c9be | ||
|
|
bad81a508e | ||
|
|
bfa4e8d74b | ||
|
|
d2a7c9c5d2 | ||
|
|
24fb463fda | ||
|
|
63f25a2f8a | ||
|
|
c9695b5868 | ||
|
|
aade987f76 | ||
|
|
d8f951533a | ||
|
|
f840cb7ecf | ||
|
|
b384e473b5 | ||
|
|
5d50feac62 |
@@ -1,5 +1,5 @@
|
|||||||
# VERSION: set full version, use "devel" for development version
|
# VERSION: set full version, use "devel" for development version
|
||||||
LIBREELEC_VERSION="8.2.0.1"
|
LIBREELEC_VERSION="8.2.2"
|
||||||
|
|
||||||
# OS_VERSION: OS Version
|
# OS_VERSION: OS Version
|
||||||
OS_VERSION="8.2"
|
OS_VERSION="8.2"
|
||||||
|
|||||||
37
packages/addons/addon-depends/ccid/package.mk
Normal file
37
packages/addons/addon-depends/ccid/package.mk
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
################################################################################
|
||||||
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC
|
||||||
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||||
|
#
|
||||||
|
# LibreELEC is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# LibreELEC is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
PKG_NAME="ccid"
|
||||||
|
PKG_VERSION="1.4.28"
|
||||||
|
PKG_ARCH="any"
|
||||||
|
PKG_LICENSE="LGPL"
|
||||||
|
PKG_SITE="http://pcsclite.alioth.debian.org/ccid.html"
|
||||||
|
PKG_URL="https://alioth.debian.org/frs/download.php/latestfile/112/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||||
|
PKG_DEPENDS_TARGET="toolchain pcsc-lite"
|
||||||
|
PKG_SECTION="driver"
|
||||||
|
PKG_SHORTDESC="CCID free software driver"
|
||||||
|
PKG_LONGDESC="CCID free software driver"
|
||||||
|
PKG_AUTORECONF="yes"
|
||||||
|
|
||||||
|
PKG_CONFIGURE_OPTS_TARGET="--enable-static --enable-twinserial"
|
||||||
|
|
||||||
|
make_target() {
|
||||||
|
make
|
||||||
|
make -C src/ Info.plist
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
# This file is part of LibreELEC - https://libreelec.tv
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
# Copyright (C) 2016 Team LibreELEC
|
# Copyright (C) 2016-present Team LibreELEC
|
||||||
#
|
#
|
||||||
# LibreELEC 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
|
||||||
@@ -17,12 +17,12 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="squeezelite"
|
PKG_NAME="squeezelite"
|
||||||
PKG_VERSION="a3d95ec"
|
PKG_VERSION="e92c09c"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPLv3"
|
PKG_LICENSE="GPLv3"
|
||||||
PKG_SITE="https://github.com/ralph-irving/squeezelite"
|
PKG_SITE="https://github.com/ralph-irving/squeezelite"
|
||||||
PKG_URL="https://github.com/ralph-irving/squeezelite/archive/$PKG_VERSION.tar.gz"
|
PKG_URL="https://github.com/ralph-irving/squeezelite/archive/$PKG_VERSION.tar.gz"
|
||||||
PKG_DEPENDS_TARGET="toolchain faad2 ffmpeg flac libmad libvorbis mpg123 soxr"
|
PKG_DEPENDS_TARGET="toolchain faad2 ffmpeg flac libmad libvorbis mpg123 soxr libogg"
|
||||||
PKG_SECTION="tools"
|
PKG_SECTION="tools"
|
||||||
PKG_SHORTDESC="squeezelite"
|
PKG_SHORTDESC="squeezelite"
|
||||||
PKG_LONGDESC="A client for the Logitech Media Server"
|
PKG_LONGDESC="A client for the Logitech Media Server"
|
||||||
@@ -31,9 +31,9 @@ PKG_IS_ADDON="no"
|
|||||||
PKG_AUTORECONF="no"
|
PKG_AUTORECONF="no"
|
||||||
|
|
||||||
pre_make_target() {
|
pre_make_target() {
|
||||||
OPTS="-DDSD -DFFMPEG -DRESAMPLE -DVISEXPORT"
|
OPTS="-DDSD -DFFMPEG -DRESAMPLE -DVISEXPORT -DLINKALL"
|
||||||
CFLAGS="$CFLAGS $OPTS"
|
CFLAGS="$CFLAGS $OPTS"
|
||||||
LDFLAGS="$LDFLAGS -lasound -lpthread -lm -lrt -lFLAC -lmad -lvorbisfile -lfaad -lmpg123"
|
LDFLAGS="$LDFLAGS -lasound -lpthread -lm -lrt -lFLAC -lmad -lvorbisfile -lfaad -lmpg123 -lvorbis -logg"
|
||||||
}
|
}
|
||||||
|
|
||||||
makeinstall_target() {
|
makeinstall_target() {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
# This file is part of LibreELEC - https://LibreELEC.tv
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
# Copyright (C) 2016 Team LibreELEC
|
# Copyright (C) 2016-present Team LibreELEC
|
||||||
#
|
#
|
||||||
# LibreELEC 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
|
||||||
@@ -17,21 +17,19 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="pcsc-lite"
|
PKG_NAME="pcsc-lite"
|
||||||
PKG_VERSION="1.8.16"
|
PKG_VERSION="1.8.22"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="http://pcsclite.alioth.debian.org/pcsclite.html"
|
PKG_SITE="http://pcsclite.alioth.debian.org/pcsclite.html"
|
||||||
PKG_URL="https://alioth.debian.org/frs/download.php/file/4164/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
PKG_URL="https://alioth.debian.org/frs/download.php/latestfile/39/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||||
PKG_DEPENDS_TARGET="toolchain libusb"
|
PKG_DEPENDS_TARGET="toolchain libusb"
|
||||||
PKG_SECTION="service/system"
|
PKG_SECTION="service/system"
|
||||||
PKG_SHORTDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
PKG_SHORTDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||||
PKG_LONGDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
PKG_LONGDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||||
|
|
||||||
PKG_IS_ADDON="no"
|
|
||||||
PKG_AUTORECONF="no"
|
PKG_AUTORECONF="no"
|
||||||
|
|
||||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
|
PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--disable-libudev \
|
--disable-libudev \
|
||||||
--enable-libusb \
|
--enable-libusb \
|
||||||
--enable-usbdropdir=/storage/.kodi/addons/service.system.pcscd-addon/drivers"
|
--enable-usbdropdir=/storage/.kodi/addons/service.pcscd/drivers"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
104
|
||||||
|
- use new output from mediaclient
|
||||||
|
use xmlstartlet to parse settings.xml file
|
||||||
|
|
||||||
103
|
103
|
||||||
- once a serial number is in config file then ir_disabled parameter
|
- once a serial number is in config file then ir_disabled parameter
|
||||||
needs to be localized below it (it is not global parameter anymore)
|
needs to be localized below it (it is not global parameter anymore)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
PKG_NAME="sundtek-mediatv"
|
PKG_NAME="sundtek-mediatv"
|
||||||
PKG_VERSION="7.0"
|
PKG_VERSION="7.0"
|
||||||
PKG_REV="103"
|
PKG_REV="104"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
PKG_SITE="http://support.sundtek.com/"
|
PKG_SITE="http://support.sundtek.com/"
|
||||||
|
|||||||
@@ -67,7 +67,15 @@ fi
|
|||||||
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
|
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
|
||||||
|
|
||||||
mkdir -p /var/config
|
mkdir -p /var/config
|
||||||
cat "$SUNDTEK_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf
|
|
||||||
|
# check settings version
|
||||||
|
XML_SETTINGS_VER="$(xmlstarlet sel -t -m settings -v @version $SUNDTEK_ADDON_SETTINGS)"
|
||||||
|
if [ "$XML_SETTINGS_VER" = "2" ]; then
|
||||||
|
xmlstarlet sel -t -m settings/setting -v @id -o "=\"" -v . -o "\"" -n "$SUNDTEK_ADDON_SETTINGS" > /var/config/sundtek-addon.conf
|
||||||
|
else
|
||||||
|
xmlstarlet sel -t -m settings -m setting -v @id -o "=\"" -v @value -o "\"" -n "$SUNDTEK_ADDON_SETTINGS" > /var/config/sundtek-addon.conf
|
||||||
|
fi
|
||||||
|
|
||||||
. /var/config/sundtek-addon.conf
|
. /var/config/sundtek-addon.conf
|
||||||
|
|
||||||
# check if there is new driver on web
|
# check if there is new driver on web
|
||||||
@@ -186,7 +194,7 @@ if [ -z "$(pidof mediasrv)" ]; then
|
|||||||
KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
|
KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
|
||||||
|
|
||||||
if [ "$DVBMODE" = "DVB-T" ]; then
|
if [ "$DVBMODE" = "DVB-T" ]; then
|
||||||
# only set DVB-T because default is DVB-C (and DVB-S is not set either)
|
# only set DVB-T because default is DVB-C (and DVB-S/S2 is not set either)
|
||||||
DVBMODE="DVBT"
|
DVBMODE="DVBT"
|
||||||
else
|
else
|
||||||
DVBMODE=""
|
DVBMODE=""
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ def get_devices_sundtek(mediaclient_e):
|
|||||||
str = line.strip()
|
str = line.strip()
|
||||||
if str.startswith('device '):
|
if str.startswith('device '):
|
||||||
name = str[str.find("[")+1:str.find("]")]
|
name = str[str.find("[")+1:str.find("]")]
|
||||||
tuners.append([name, 0, 's'])
|
tuners.append([name, 0, []])
|
||||||
|
|
||||||
if str.startswith('[SERIAL]:'):
|
if str.startswith('[SERIAL]:'):
|
||||||
line = p.readline()
|
line = p.readline()
|
||||||
@@ -85,20 +85,31 @@ def get_devices_sundtek(mediaclient_e):
|
|||||||
if str.startswith('ID:'):
|
if str.startswith('ID:'):
|
||||||
id = str.split(':');
|
id = str.split(':');
|
||||||
id = id[1].strip()
|
id = id[1].strip()
|
||||||
tuners[len(tuners)-1] = [name, id, 's']
|
tuners[len(tuners)-1][1] = id
|
||||||
|
|
||||||
|
if str.startswith('[DVB'):
|
||||||
|
types_arr = tuners[len(tuners)-1][2]
|
||||||
|
str = str.translate(None, '[]:')
|
||||||
|
types = str.split(",")
|
||||||
|
for i in range(len(types)):
|
||||||
|
if types[i] == 'DVB-C':
|
||||||
|
types_arr.append('c')
|
||||||
|
elif types[i] == 'DVB-T':
|
||||||
|
types_arr.append('t')
|
||||||
|
elif types[i] == 'DVB-T2':
|
||||||
|
types_arr.append('t2')
|
||||||
|
elif types[i] == 'DVB-S/S2':
|
||||||
|
types_arr.append('s')
|
||||||
|
|
||||||
|
tuners[len(tuners)-1][2] = types_arr
|
||||||
|
|
||||||
if str.startswith('[DVB-C]:'):
|
|
||||||
tuners[len(tuners)-1] = [name, id, 'c']
|
|
||||||
elif str.startswith('[DVB-T]:'):
|
|
||||||
tuners[len(tuners)-1] = [name, id, 'c']
|
|
||||||
elif str.startswith('[DVB-T2]:'):
|
|
||||||
tuners[len(tuners)-1] = [name, id, 'c']
|
|
||||||
except IOError:
|
except IOError:
|
||||||
print 'Error getting sundtek tuners info'
|
print 'Error getting sundtek tuners info'
|
||||||
return tuners
|
return tuners
|
||||||
|
|
||||||
"""
|
"""
|
||||||
root ~ # mediaclient -e
|
root ~ # mediaclient -e
|
||||||
|
|
||||||
**** List of Media Hardware Devices ****
|
**** List of Media Hardware Devices ****
|
||||||
device 0: [Sundtek MediaTV Pro (USB 2.0)] DVB-C, DVB-T, ANALOG-TV, FM-RADIO, REMOTE-CONTROL, OSS-AUDIO, RDS
|
device 0: [Sundtek MediaTV Pro (USB 2.0)] DVB-C, DVB-T, ANALOG-TV, FM-RADIO, REMOTE-CONTROL, OSS-AUDIO, RDS
|
||||||
[BUS]:
|
[BUS]:
|
||||||
@@ -123,6 +134,21 @@ device 0: [Sundtek MediaTV Pro (USB 2.0)] DVB-C, DVB-T, ANALOG-TV, FM-RADIO, RE
|
|||||||
INPUT0: /dev/mediainput0
|
INPUT0: /dev/mediainput0
|
||||||
[OSS]:
|
[OSS]:
|
||||||
OSS0: /dev/dsp0
|
OSS0: /dev/dsp0
|
||||||
|
|
||||||
|
**** List of Media Hardware Devices ****
|
||||||
|
device 0: [MediaTV Digital Home III (EU)] DVB-C, DVB-T, DVB-T2, REMOTE-CONTROL
|
||||||
|
[INFO]:
|
||||||
|
STATUS: STANDBY
|
||||||
|
[BUS]:
|
||||||
|
ID: 2-5
|
||||||
|
[SERIAL]:
|
||||||
|
ID: U170130193421
|
||||||
|
[DVB-C,DVB-T,DVB-T2]:
|
||||||
|
FRONTEND: /dev/dvb/adapter0/frontend0
|
||||||
|
DVR: /dev/dvb/adapter0/dvr0
|
||||||
|
DMX: /dev/dvb/adapter0/demux0
|
||||||
|
[REMOTECONTROL]:
|
||||||
|
INPUT0: /dev/mediainput0
|
||||||
"""
|
"""
|
||||||
|
|
||||||
######################################################################################################
|
######################################################################################################
|
||||||
@@ -182,19 +208,42 @@ def add_sundtek(xmldoc, node_cat, tuners):
|
|||||||
for ix, tuner in enumerate(tuners):
|
for ix, tuner in enumerate(tuners):
|
||||||
tuner_name = tuner[0]
|
tuner_name = tuner[0]
|
||||||
tuner_serial = tuner[1]
|
tuner_serial = tuner[1]
|
||||||
tuner_type = tuner[2]
|
tuner_types = tuner[2]
|
||||||
|
|
||||||
node1 = xmldoc.createElement("setting")
|
node1 = xmldoc.createElement("setting")
|
||||||
node1.setAttribute("id", 'ATTACHED_TUNER_' + tuner_serial + '_DVBMODE')
|
node1.setAttribute("id", 'ATTACHED_TUNER_' + tuner_serial + '_DVBMODE')
|
||||||
node1.setAttribute("label", tuner_name + ", " + tuner_serial)
|
node1.setAttribute("label", tuner_name + ", " + tuner_serial)
|
||||||
node1.setAttribute("type", 'labelenum')
|
node1.setAttribute("type", 'labelenum')
|
||||||
|
|
||||||
if (tuner_type == 's'):
|
if len(tuner_types) == 0:
|
||||||
node1.setAttribute("default", 'DVB-S')
|
values = 'unkn'
|
||||||
node1.setAttribute("values", 'DVB-S')
|
default = 'unkn'
|
||||||
else:
|
else:
|
||||||
node1.setAttribute("default", 'DVB-C')
|
values = ''
|
||||||
node1.setAttribute("values", 'DVB-C|DVB-T')
|
default = ''
|
||||||
|
|
||||||
|
for ix, type in enumerate(tuner_types):
|
||||||
|
if type == 'c':
|
||||||
|
type_str = 'DVB-C'
|
||||||
|
elif type == 't':
|
||||||
|
type_str = 'DVB-T'
|
||||||
|
elif type == 't2':
|
||||||
|
type_str = 'DVB-T2'
|
||||||
|
elif type == 's':
|
||||||
|
type_str = 'DVB-S/S2'
|
||||||
|
else:
|
||||||
|
type_str = 'unkn'
|
||||||
|
|
||||||
|
if not default: # first one
|
||||||
|
default = type_str;
|
||||||
|
|
||||||
|
if ix == 0:
|
||||||
|
values = type_str
|
||||||
|
else:
|
||||||
|
values = values + '|' + type_str
|
||||||
|
|
||||||
|
node1.setAttribute("default", default)
|
||||||
|
node1.setAttribute("values", values)
|
||||||
|
|
||||||
node_cat.appendChild(node1)
|
node_cat.appendChild(node1)
|
||||||
|
|
||||||
@@ -237,7 +286,7 @@ def add_new_tuners(xmldoc, tuners, which):
|
|||||||
def save_settings(settings_xml, xmldoc):
|
def save_settings(settings_xml, xmldoc):
|
||||||
try:
|
try:
|
||||||
outputfile = open(settings_xml, 'w')
|
outputfile = open(settings_xml, 'w')
|
||||||
xmlpp.pprint(xmldoc.toxml(), output = outputfile, indent=2)
|
xmlpp.pprint(xmldoc.toxml(), output = outputfile, indent=2, width=500)
|
||||||
outputfile.close()
|
outputfile.close()
|
||||||
except IOError:
|
except IOError:
|
||||||
print 'Error saving file:', settings_xml
|
print 'Error saving file:', settings_xml
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
108
|
||||||
|
- Correct bug which prevented disabling the service from Kodi
|
||||||
|
- Place named pipe in /var/run/librespot
|
||||||
|
|
||||||
107
|
107
|
||||||
- Update to ddfc28f
|
- Update to ddfc28f
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
PKG_NAME="librespot"
|
PKG_NAME="librespot"
|
||||||
PKG_VERSION="ddfc28f"
|
PKG_VERSION="ddfc28f"
|
||||||
PKG_REV="107"
|
PKG_REV="108"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="MIT"
|
PKG_LICENSE="MIT"
|
||||||
PKG_SITE="https://github.com/plietar/$PKG_NAME/"
|
PKG_SITE="https://github.com/plietar/$PKG_NAME/"
|
||||||
|
|||||||
@@ -119,6 +119,6 @@ if [ -z "$(pactl list short modules | grep source=$LS_SINK.monitor)" ]; then
|
|||||||
destination_ip=127.0.0.1 port="$LS_PORT" source_ip=127.0.0.1 > /dev/null
|
destination_ip=127.0.0.1 port="$LS_PORT" source_ip=127.0.0.1 > /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LS_FIFO="$ADDON_DIR/rc"
|
export LS_FIFO="/var/run/librespot"
|
||||||
|
|
||||||
eval $LIBRESPOT
|
eval $LIBRESPOT
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import xbmc
|
|||||||
import xbmcaddon
|
import xbmcaddon
|
||||||
import xbmcgui
|
import xbmcgui
|
||||||
|
|
||||||
|
|
||||||
PORT = '6666'
|
PORT = '6666'
|
||||||
SINK = 'librespot_sink'
|
SINK = 'librespot_sink'
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ def systemctl(command):
|
|||||||
|
|
||||||
class Controller(threading.Thread):
|
class Controller(threading.Thread):
|
||||||
|
|
||||||
FIFO = os.path.join(xbmcaddon.Addon().getAddonInfo('path'), 'rc')
|
FIFO = '/var/run/librespot'
|
||||||
|
|
||||||
def __init__(self, player):
|
def __init__(self, player):
|
||||||
super(Controller, self).__init__()
|
super(Controller, self).__init__()
|
||||||
@@ -65,13 +66,15 @@ class Controller(threading.Thread):
|
|||||||
self.player.play()
|
self.player.play()
|
||||||
elif command[0] == 'stop':
|
elif command[0] == 'stop':
|
||||||
self.player.stop()
|
self.player.stop()
|
||||||
|
|
||||||
def stop(self):
|
|
||||||
try:
|
try:
|
||||||
os.unlink(self.FIFO)
|
os.unlink(self.FIFO)
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
with open(self.FIFO, 'w') as fifo:
|
||||||
|
fifo.close()
|
||||||
|
|
||||||
|
|
||||||
class Player(xbmc.Player):
|
class Player(xbmc.Player):
|
||||||
|
|
||||||
@@ -79,7 +82,6 @@ class Player(xbmc.Player):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Player, self).__init__(self)
|
super(Player, self).__init__(self)
|
||||||
self.window = xbmcgui.Window(12006)
|
|
||||||
if self.isPlaying():
|
if self.isPlaying():
|
||||||
self.onPlayBackStarted()
|
self.onPlayBackStarted()
|
||||||
|
|
||||||
@@ -104,7 +106,7 @@ class Player(xbmc.Player):
|
|||||||
listitem.setArt({'thumb': xbmcaddon.Addon().getAddonInfo('icon')})
|
listitem.setArt({'thumb': xbmcaddon.Addon().getAddonInfo('icon')})
|
||||||
super(Player, self).play(self.ITEM, listitem)
|
super(Player, self).play(self.ITEM, listitem)
|
||||||
del listitem
|
del listitem
|
||||||
self.window.show()
|
xbmcgui.Window(12006).show()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
suspendSink('1')
|
suspendSink('1')
|
||||||
@@ -130,3 +132,4 @@ if __name__ == '__main__':
|
|||||||
controller.start()
|
controller.start()
|
||||||
Monitor(player).waitForAbort()
|
Monitor(player).waitForAbort()
|
||||||
controller.stop()
|
controller.stop()
|
||||||
|
controller.join()
|
||||||
|
|||||||
@@ -1,3 +1,14 @@
|
|||||||
|
104
|
||||||
|
- Change daemon startup option
|
||||||
|
|
||||||
|
103
|
||||||
|
- update config.sub to support new hardware
|
||||||
|
- disable mini-agent in config options to get system MIB
|
||||||
|
- compile static binary to avoid cross compiling linking issue
|
||||||
|
|
||||||
|
102
|
||||||
|
-version bump
|
||||||
|
|
||||||
101
|
101
|
||||||
- make addon configurable
|
- make addon configurable
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
# This file is part of LibreELEC - https://libreelec.tv
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
# Copyright (C) 2016 Team LibreELEC
|
# Copyright (C) 2016-present Team LibreELEC
|
||||||
#
|
#
|
||||||
# LibreELEC 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
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
PKG_NAME="net-snmp"
|
PKG_NAME="net-snmp"
|
||||||
PKG_VERSION="5.7.3"
|
PKG_VERSION="5.7.3"
|
||||||
PKG_REV="101"
|
PKG_REV="104"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="BSD"
|
PKG_LICENSE="BSD"
|
||||||
PKG_SITE="http://www.net-snmp.org"
|
PKG_SITE="http://www.net-snmp.org"
|
||||||
@@ -40,9 +40,8 @@ PKG_CONFIGURE_OPTS_TARGET="--with-defaults \
|
|||||||
--disable-deprecated \
|
--disable-deprecated \
|
||||||
--disable-snmptrapd-subagent \
|
--disable-snmptrapd-subagent \
|
||||||
--disable-scripts \
|
--disable-scripts \
|
||||||
--enable-static=no \
|
--enable-static=yes \
|
||||||
--enable-shared=yes \
|
--enable-shared=no \
|
||||||
--enable-mini-agent \
|
|
||||||
--with-nl \
|
--with-nl \
|
||||||
--with-logfile=/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID} \
|
--with-logfile=/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID} \
|
||||||
--with-persistent-directory=/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID} \
|
--with-persistent-directory=/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID} \
|
||||||
@@ -67,9 +66,4 @@ makeinstall_target() {
|
|||||||
addon() {
|
addon() {
|
||||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
|
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||||
cp -r $PKG_BUILD/.$TARGET_NAME/storage/.kodi/addons/${PKG_ADDON_ID}/bin $PKG_BUILD/.$TARGET_NAME/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID}/share $ADDON_BUILD/$PKG_ADDON_ID/
|
cp -r $PKG_BUILD/.$TARGET_NAME/storage/.kodi/addons/${PKG_ADDON_ID}/bin $PKG_BUILD/.$TARGET_NAME/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID}/share $ADDON_BUILD/$PKG_ADDON_ID/
|
||||||
#Do not copy symlinks
|
|
||||||
find $PKG_BUILD/.$TARGET_NAME/storage/.kodi/addons/${PKG_ADDON_ID}/lib/ -type f -name '*.so.*' -exec cp '{}' $ADDON_BUILD/$PKG_ADDON_ID/lib/ \;
|
|
||||||
#remove all but major version from so file
|
|
||||||
for f in $ADDON_BUILD/$PKG_ADDON_ID/lib/*.so.* ; do mv "$f" "${f%.*.*}" ; done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
diff -ur net-snmp-5.7.3/config.sub net-snmp-5.7.3.new/config.sub
|
||||||
|
--- net-snmp-5.7.3/config.sub 2014-12-08 21:23:22.000000000 +0100
|
||||||
|
+++ net-snmp-5.7.3.new/config.sub 2017-11-09 18:39:31.638689732 +0100
|
||||||
|
@@ -247,10 +247,11 @@ case $basic_machine in
|
||||||
|
# Some are omitted here because they have special meanings below.
|
||||||
|
1750a | 580 \
|
||||||
|
| a29k \
|
||||||
|
+ | aarch64 | aarch64_be \
|
||||||
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||||
|
| am33_2.0 \
|
||||||
|
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||||
|
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||||
|
| bfin \
|
||||||
|
| c4x | clipper \
|
||||||
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
|
@@ -339,6 +340,7 @@ case $basic_machine in
|
||||||
|
# Recognize the basic CPU types with company name.
|
||||||
|
580-* \
|
||||||
|
| a29k-* \
|
||||||
|
+ | aarch64-* | aarch64_be-* \
|
||||||
|
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||||
|
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||||
|
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||||
|
@@ -1171,6 +1173,9 @@ case $basic_machine in
|
||||||
|
basic_machine=hppa1.1-winbond
|
||||||
|
os=-proelf
|
||||||
|
;;
|
||||||
|
+ x64)
|
||||||
|
+ basic_machine=x86_64-pc
|
||||||
|
+ ;;
|
||||||
|
xbox)
|
||||||
|
basic_machine=i686-pc
|
||||||
|
os=-mingw32
|
||||||
@@ -24,4 +24,4 @@ ADDON_ID=service.net-snmp
|
|||||||
ADDON_DIR="$HOME/.kodi/addons/$ADDON_ID"
|
ADDON_DIR="$HOME/.kodi/addons/$ADDON_ID"
|
||||||
ADDON_HOME="$HOME/.kodi/userdata/addon_data/$ADDON_ID"
|
ADDON_HOME="$HOME/.kodi/userdata/addon_data/$ADDON_ID"
|
||||||
|
|
||||||
$ADDON_DIR/bin/snmpd -f -LS0-6d -c $ADDON_HOME/share/snmp/snmpd.conf -M $ADDON_DIR/share/snmp/mibs -p /var/run/snmpd.pid
|
$ADDON_DIR/bin/snmpd -f -LS0-6d -C -c $ADDON_HOME/share/snmp/snmpd.conf -M $ADDON_DIR/share/snmp/mibs -p /var/run/snmpd.pid
|
||||||
|
|||||||
2
packages/addons/service/pcscd/changelog.txt
Normal file
2
packages/addons/service/pcscd/changelog.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
100
|
||||||
|
- initial addon
|
||||||
10
packages/addons/service/pcscd/config/reader.conf
Normal file
10
packages/addons/service/pcscd/config/reader.conf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Gemalto reader with serial communication
|
||||||
|
# - n is the serial port to use n in [0..3]
|
||||||
|
# - reader is the reader name. It is needed for multi-slot readers.
|
||||||
|
# Possible reader values are: GemPCPinPad, GemCorePOSPro, GemCoreSIMPro,
|
||||||
|
# GemPCTwin (default value)
|
||||||
|
# example: /dev/ttyS0:GemPCPinPad
|
||||||
|
#FRIENDLYNAME "GemPCTwin serial"
|
||||||
|
#DEVICENAME /dev/ttySn[:reader]
|
||||||
|
#LIBPATH /storage/.kodi/addons/service.pcscd/drivers/serial/libccidtwin.so
|
||||||
|
#CHANNELID n
|
||||||
BIN
packages/addons/service/pcscd/icon/icon.png
Executable file
BIN
packages/addons/service/pcscd/icon/icon.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
59
packages/addons/service/pcscd/package.mk
Normal file
59
packages/addons/service/pcscd/package.mk
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
################################################################################
|
||||||
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC
|
||||||
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||||
|
# Copyright (C) 2011-2011 Gregor Fuis (gujs@openelec.tv)
|
||||||
|
#
|
||||||
|
# LibreELEC is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# LibreELEC is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
PKG_NAME="pcscd"
|
||||||
|
PKG_VERSION="1.0"
|
||||||
|
PKG_REV="100"
|
||||||
|
PKG_ARCH="any"
|
||||||
|
PKG_LICENSE="GPL"
|
||||||
|
PKG_SITE="https://libreelec.tv"
|
||||||
|
PKG_URL=""
|
||||||
|
PKG_DEPENDS_TARGET="toolchain pcsc-lite libusb ccid"
|
||||||
|
PKG_SECTION="service"
|
||||||
|
PKG_SHORTDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||||
|
PKG_LONGDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||||
|
PKG_AUTORECONF="no"
|
||||||
|
|
||||||
|
PKG_IS_ADDON="yes"
|
||||||
|
PKG_ADDON_NAME="PC/SC Smart Card Daemon"
|
||||||
|
PKG_ADDON_TYPE="xbmc.service"
|
||||||
|
|
||||||
|
make_target() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
makeinstall_target() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
addon() {
|
||||||
|
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin/
|
||||||
|
cp -Pa $(get_build_dir pcsc-lite)/.install_pkg/usr/sbin/pcscd $ADDON_BUILD/$PKG_ADDON_ID/bin/pcscd.bin
|
||||||
|
|
||||||
|
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/drivers/serial
|
||||||
|
cp -Pa $(get_build_dir ccid)/.$TARGET_NAME/src/.libs/libccidtwin.so $ADDON_BUILD/$PKG_ADDON_ID/drivers/serial
|
||||||
|
|
||||||
|
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents/Linux/
|
||||||
|
cp -Pa $(get_build_dir ccid)/.$TARGET_NAME/src/.libs/libccid.so $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents/Linux/
|
||||||
|
cp -Pa $(get_build_dir ccid)/.$TARGET_NAME/src/Info.plist $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents
|
||||||
|
|
||||||
|
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||||
|
cp -Pa $PKG_DIR/config/* $ADDON_BUILD/$PKG_ADDON_ID/config/
|
||||||
|
}
|
||||||
34
packages/addons/service/pcscd/source/bin/pcscd.start
Executable file
34
packages/addons/service/pcscd/source/bin/pcscd.start
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC
|
||||||
|
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||||
|
#
|
||||||
|
# LibreELEC is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# LibreELEC is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
. /etc/profile
|
||||||
|
|
||||||
|
oe_setup_addon service.pcscd
|
||||||
|
|
||||||
|
mkdir -p $ADDON_HOME/config
|
||||||
|
|
||||||
|
chmod a+x $ADDON_DIR/bin/*
|
||||||
|
|
||||||
|
if [ ! -f "$ADDON_HOME/config/reader.conf" ]; then
|
||||||
|
cp $ADDON_DIR/config/reader.conf $ADDON_HOME/config/reader.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec pcscd.bin --foreground -c $ADDON_HOME/config/reader.conf
|
||||||
35
packages/addons/service/pcscd/source/default.py
Normal file
35
packages/addons/service/pcscd/source/default.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
################################################################################
|
||||||
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
|
# Copyright (C) 2017-present Team LibreELEC
|
||||||
|
#
|
||||||
|
# LibreELEC is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# LibreELEC is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import xbmc
|
||||||
|
import xbmcaddon
|
||||||
|
|
||||||
|
|
||||||
|
class Monitor(xbmc.Monitor):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
xbmc.Monitor.__init__(self)
|
||||||
|
self.id = xbmcaddon.Addon().getAddonInfo('id')
|
||||||
|
|
||||||
|
def onSettingsChanged(self):
|
||||||
|
subprocess.call(['systemctl', 'restart', self.id])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
Monitor().waitForAbort()
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=PCSC lite
|
||||||
|
After=graphical.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.pcscd/bin/pcscd.start"
|
||||||
|
TimeoutStopSec=1
|
||||||
|
Restart=always
|
||||||
|
RestartSec=2
|
||||||
|
StartLimitInterval=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=kodi.target
|
||||||
@@ -49,8 +49,8 @@ addon() {
|
|||||||
|
|
||||||
cp $PKG_DIR/addon.xml $ADDON_BUILD/$PKG_ADDON_ID
|
cp $PKG_DIR/addon.xml $ADDON_BUILD/$PKG_ADDON_ID
|
||||||
|
|
||||||
# set version (no need to edit xml file on version bump)
|
# set only version (revision will be added by buildsystem)
|
||||||
$SED -e "s|@ADDON_VERSION@|$ADDON_VERSION.$PKG_REV|g" \
|
$SED -e "s|@ADDON_VERSION@|$ADDON_VERSION|g" \
|
||||||
-i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
-i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||||
|
|
||||||
cp $(get_build_dir tslib)/.install_pkg/usr/bin/* $ADDON_BUILD/$PKG_ADDON_ID/bin
|
cp $(get_build_dir tslib)/.install_pkg/usr/bin/* $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
109
|
||||||
|
- Update to 5.4.1.6
|
||||||
|
|
||||||
108
|
108
|
||||||
- Update to 5.4.0.201
|
- Update to 5.4.0.201
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="mono"
|
PKG_NAME="mono"
|
||||||
PKG_VERSION="5.4.0.201"
|
PKG_VERSION="5.4.1.6"
|
||||||
PKG_REV="108"
|
PKG_REV="109"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="MIT"
|
PKG_LICENSE="MIT"
|
||||||
PKG_SITE="http://www.mono-project.com"
|
PKG_SITE="http://www.mono-project.com"
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
105
|
||||||
|
- squeezelite: update to e92c09c and support all possible media formats
|
||||||
|
|
||||||
104
|
104
|
||||||
- squeezelite: update to a3d95ec and link audio libraries
|
- squeezelite: update to a3d95ec and link audio libraries
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
# This file is part of LibreELEC - http://www.libreelec.tv
|
# This file is part of LibreELEC - http://www.libreelec.tv
|
||||||
# Copyright (C) 2016 Team LibreELEC
|
# Copyright (C) 2016-present Team LibreELEC
|
||||||
#
|
#
|
||||||
# LibreELEC 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
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
PKG_NAME="multimedia-tools"
|
PKG_NAME="multimedia-tools"
|
||||||
PKG_VERSION=""
|
PKG_VERSION=""
|
||||||
PKG_REV="104"
|
PKG_REV="105"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE=""
|
PKG_SITE=""
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ PKG_IS_ADDON="no"
|
|||||||
PKG_AUTORECONF="no"
|
PKG_AUTORECONF="no"
|
||||||
|
|
||||||
PKG_CONFIGURE_OPTS_TARGET="BASH_SHELL=/bin/sh \
|
PKG_CONFIGURE_OPTS_TARGET="BASH_SHELL=/bin/sh \
|
||||||
ac_cv_path_PERL= \
|
ac_cv_path_PERL=no \
|
||||||
ac_cv_prog_MAKEINFO= \
|
ac_cv_prog_MAKEINFO= \
|
||||||
--libexecdir=/usr/lib/glibc \
|
--libexecdir=/usr/lib/glibc \
|
||||||
--cache-file=config.cache \
|
--cache-file=config.cache \
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="inputstream.adaptive"
|
PKG_NAME="inputstream.adaptive"
|
||||||
PKG_VERSION="f2904b5"
|
PKG_VERSION="9af2121"
|
||||||
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"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="peripheral.joystick"
|
PKG_NAME="peripheral.joystick"
|
||||||
PKG_VERSION="b464260"
|
PKG_VERSION="0acb777"
|
||||||
PKG_REV="0"
|
PKG_REV="0"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="pvr.dvbviewer"
|
PKG_NAME="pvr.dvbviewer"
|
||||||
PKG_VERSION="602042c"
|
PKG_VERSION="2a8c91e"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="kodi"
|
PKG_NAME="kodi"
|
||||||
PKG_VERSION="5bd45ab"
|
PKG_VERSION="a9a7a20"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="http://www.kodi.tv"
|
PKG_SITE="http://www.kodi.tv"
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
--- a/system/settings/settings.xml 2017-08-05 04:22:39.894495691 +0100
|
|
||||||
+++ b/system/settings/settings.xml 2017-08-05 07:41:42.493159153 +0100
|
|
||||||
@@ -1964,7 +1964,7 @@
|
|
||||||
</setting>
|
|
||||||
<setting id="smb.maxprotocol" type="integer" label="36621" help="36622">
|
|
||||||
<level>2</level>
|
|
||||||
- <visible>false</visible>
|
|
||||||
+ <visible>true</visible>
|
|
||||||
<default>0</default>
|
|
||||||
<constraints>
|
|
||||||
<options>
|
|
||||||
@@ -0,0 +1,232 @@
|
|||||||
|
From 76f6d6fef6494d2dfd8cbc0ea8d88a8d82029c09 Mon Sep 17 00:00:00 2001
|
||||||
|
From: chewitt <github@chrishewitt.net>
|
||||||
|
Date: Sat, 11 Nov 2017 05:44:48 +0000
|
||||||
|
Subject: [PATCH] smbclient: allow config of min client and legacy security
|
||||||
|
|
||||||
|
---
|
||||||
|
.../resource.language.en_gb/resources/strings.po | 34 ++++++++++++++++++----
|
||||||
|
system/settings/linux.xml | 6 ++++
|
||||||
|
system/settings/settings.xml | 25 ++++++++++++++++
|
||||||
|
xbmc/filesystem/SMBFile.cpp | 16 ++++++++++
|
||||||
|
xbmc/network/NetworkServices.cpp | 4 ++-
|
||||||
|
xbmc/settings/Settings.cpp | 4 +++
|
||||||
|
xbmc/settings/Settings.h | 2 ++
|
||||||
|
7 files changed, 85 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
|
||||||
|
index 9009023f4d39..f7755776eea6 100644
|
||||||
|
--- a/addons/resource.language.en_gb/resources/strings.po
|
||||||
|
+++ b/addons/resource.language.en_gb/resources/strings.po
|
||||||
|
@@ -19075,25 +19075,25 @@ msgctxt "#36622"
|
||||||
|
msgid "Set the maximum SMB protocol version to negotiate when making connections. Forcing SMBv2 or SMBv1 compatibility may be required with older NAS and Windows shares."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
-#. Values for setting with label #36621 "Maximum protocol version" - none means "no protocol version is forced"
|
||||||
|
+#. Values for settings with label #36621 and #36628 "Minimum/Maximum protocol version" - none means "no protocol version is forced"
|
||||||
|
#: system/settings/settings.xml
|
||||||
|
msgctxt "#36623"
|
||||||
|
msgid "None"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
-#. Values for setting with label #36621 "Maximum protocol version"
|
||||||
|
+#. Values for setting with label #36621 and #36628 "Minimum/Maximum protocol version"
|
||||||
|
#: system/settings/settings.xml
|
||||||
|
msgctxt "#36624"
|
||||||
|
msgid "SMBv1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
-#. Values for setting with label #36621 "Maximum protocol version"
|
||||||
|
+#. Values for setting with label #36621 and #36628 "Minimum/Maximum protocol version"
|
||||||
|
#: system/settings/settings.xml
|
||||||
|
msgctxt "#36625"
|
||||||
|
msgid "SMBv2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
-#. Values for setting with label #36621 "Maximum protocol version"
|
||||||
|
+#. Values for setting with label #36621 and #36628 "Minimum/Maximum protocol version"
|
||||||
|
#: system/settings/settings.xml
|
||||||
|
msgctxt "#36626"
|
||||||
|
msgid "SMBv3"
|
||||||
|
@@ -19105,7 +19105,31 @@ msgctxt "#36627"
|
||||||
|
msgid "Client"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
-#empty strings from id 36628 to 36899
|
||||||
|
+#. Label of a setting, allow the minimum smbclient protocol to be configured
|
||||||
|
+#: system/settings/settings.xml
|
||||||
|
+msgctxt "#36628"
|
||||||
|
+msgid "Minimum protocol version"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. Description of setting with label #36628 "Minimum protocol version"
|
||||||
|
+#: system/settings/settings.xml
|
||||||
|
+msgctxt "#36629"
|
||||||
|
+msgid "Set the minimum SMB protocol version to negotiate when making connections. Forcing SMBv2 may be required to prevent SMBv1 use on some OS."
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. Label of a setting, sets additional config required for some proprietary SMBv1 implementations (mostly routers)
|
||||||
|
+#: system/settings/settings.xml
|
||||||
|
+msgctxt "#36630"
|
||||||
|
+msgid "Use legacy security"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. Description of setting with label #36630 "Use legacy security"
|
||||||
|
+#: system/settings/settings.xml
|
||||||
|
+msgctxt "#36631"
|
||||||
|
+msgid "Force weak SMBv1 security for compatibility with the USB sharing features on some WiFi routers and NAS devices."
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#empty strings from id 36632 to 36899
|
||||||
|
|
||||||
|
#: xbmc/media/MediaType.cpp
|
||||||
|
msgctxt "#36900"
|
||||||
|
diff --git a/system/settings/linux.xml b/system/settings/linux.xml
|
||||||
|
index 7cb276acddba..5c27e489a0ad 100644
|
||||||
|
--- a/system/settings/linux.xml
|
||||||
|
+++ b/system/settings/linux.xml
|
||||||
|
@@ -12,9 +12,15 @@
|
||||||
|
<section id="services">
|
||||||
|
<category id="smb">
|
||||||
|
<group id="2">
|
||||||
|
+ <setting id="smb.minprotocol">
|
||||||
|
+ <visible>true</visible>
|
||||||
|
+ </setting>
|
||||||
|
<setting id="smb.maxprotocol">
|
||||||
|
<visible>true</visible>
|
||||||
|
</setting>
|
||||||
|
+ <setting id="smb.legacysecurity">
|
||||||
|
+ <visible>true</visible>
|
||||||
|
+ </setting>
|
||||||
|
</group>
|
||||||
|
</category>
|
||||||
|
</section>
|
||||||
|
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
|
||||||
|
index 5ff71b9741c5..79b4321ab9c7 100644
|
||||||
|
--- a/system/settings/settings.xml
|
||||||
|
+++ b/system/settings/settings.xml
|
||||||
|
@@ -1956,6 +1956,20 @@
|
||||||
|
<default>0.0.0.0</default>
|
||||||
|
<control type="edit" format="ip" />
|
||||||
|
</setting>
|
||||||
|
+ <setting id="smb.minprotocol" type="integer" label="36628" help="36629">
|
||||||
|
+ <level>2</level>
|
||||||
|
+ <visible>false</visible>
|
||||||
|
+ <default>0</default>
|
||||||
|
+ <constraints>
|
||||||
|
+ <options>
|
||||||
|
+ <option label="36623">0</option>
|
||||||
|
+ <option label="36624">1</option>
|
||||||
|
+ <option label="36625">2</option>
|
||||||
|
+ <option label="36626">3</option>
|
||||||
|
+ </options>
|
||||||
|
+ </constraints>
|
||||||
|
+ <control type="list" format="integer" />
|
||||||
|
+ </setting>
|
||||||
|
<setting id="smb.maxprotocol" type="integer" label="36621" help="36622">
|
||||||
|
<level>2</level>
|
||||||
|
<visible>false</visible>
|
||||||
|
@@ -1970,6 +1984,17 @@
|
||||||
|
</constraints>
|
||||||
|
<control type="list" format="integer" />
|
||||||
|
</setting>
|
||||||
|
+ <setting id="smb.legacysecurity" type="boolean" label="36630" help="36631">
|
||||||
|
+ <level>2</level>
|
||||||
|
+ <visible>false</visible>
|
||||||
|
+ <default>false</default>
|
||||||
|
+ <control type="toggle" />
|
||||||
|
+ <dependencies>
|
||||||
|
+ <dependency type="enable">
|
||||||
|
+ <condition setting="smb.maxprotocol" operator="is">1</condition>
|
||||||
|
+ </dependency>
|
||||||
|
+ </dependencies>
|
||||||
|
+ </setting>
|
||||||
|
</group>
|
||||||
|
</category>
|
||||||
|
<category id="weather" label="8" help="36316">
|
||||||
|
diff --git a/xbmc/filesystem/SMBFile.cpp b/xbmc/filesystem/SMBFile.cpp
|
||||||
|
index e5301b0452f9..7fc139635f0b 100644
|
||||||
|
--- a/xbmc/filesystem/SMBFile.cpp
|
||||||
|
+++ b/xbmc/filesystem/SMBFile.cpp
|
||||||
|
@@ -117,6 +117,15 @@ void CSMB::Init()
|
||||||
|
|
||||||
|
fprintf(f, "\tlock directory = %s/.smb/\n", home.c_str());
|
||||||
|
|
||||||
|
+ // set minimum smbclient protocol version
|
||||||
|
+ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MINPROTOCOL) > 0)
|
||||||
|
+ {
|
||||||
|
+ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MINPROTOCOL) == 1)
|
||||||
|
+ fprintf(f, "\tclient min protocol = NT1\n");
|
||||||
|
+ else
|
||||||
|
+ fprintf(f, "\tclient min protocol = SMB%d\n", CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MINPROTOCOL));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// set maximum smbclient protocol version
|
||||||
|
if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) > 0)
|
||||||
|
{
|
||||||
|
@@ -126,6 +135,13 @@ void CSMB::Init()
|
||||||
|
fprintf(f, "\tclient max protocol = SMB%d\n", CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // set legacy security options
|
||||||
|
+ if (CSettings::GetInstance().GetBool(CSettings::SETTING_SMB_LEGACYSECURITY) && (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) == 1))
|
||||||
|
+ {
|
||||||
|
+ fprintf(f, "\tclient NTLMv2 auth = no\n");
|
||||||
|
+ fprintf(f, "\tclient use spnego = no\n");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// set wins server if there's one. name resolve order defaults to 'lmhosts host wins bcast'.
|
||||||
|
// if no WINS server has been specified the wins method will be ignored.
|
||||||
|
if (CSettings::GetInstance().GetString(CSettings::SETTING_SMB_WINSSERVER).length() > 0 && !StringUtils::EqualsNoCase(CSettings::GetInstance().GetString(CSettings::SETTING_SMB_WINSSERVER), "0.0.0.0") )
|
||||||
|
diff --git a/xbmc/network/NetworkServices.cpp b/xbmc/network/NetworkServices.cpp
|
||||||
|
index 393dabc3067d..5dad5c22c0af 100644
|
||||||
|
--- a/xbmc/network/NetworkServices.cpp
|
||||||
|
+++ b/xbmc/network/NetworkServices.cpp
|
||||||
|
@@ -439,7 +439,9 @@ void CNetworkServices::OnSettingChanged(const CSetting *setting)
|
||||||
|
#endif // HAS_WEB_SERVER
|
||||||
|
if (settingId == CSettings::SETTING_SMB_WINSSERVER ||
|
||||||
|
settingId == CSettings::SETTING_SMB_WORKGROUP ||
|
||||||
|
- settingId == CSettings::SETTING_SMB_MAXPROTOCOL)
|
||||||
|
+ settingId == CSettings::SETTING_SMB_MINPROTOCOL ||
|
||||||
|
+ settingId == CSettings::SETTING_SMB_MAXPROTOCOL ||
|
||||||
|
+ settingId == CSettings::SETTING_SMB_LEGACYSECURITY)
|
||||||
|
{
|
||||||
|
// okey we really don't need to restart, only deinit samba, but that could be damn hard if something is playing
|
||||||
|
//! @todo - General way of handling setting changes that require restart
|
||||||
|
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
|
||||||
|
index f76c152b4d37..5400ba229164 100644
|
||||||
|
--- a/xbmc/settings/Settings.cpp
|
||||||
|
+++ b/xbmc/settings/Settings.cpp
|
||||||
|
@@ -333,7 +333,9 @@ const std::string CSettings::SETTING_SERVICES_AIRPLAYPASSWORD = "services.airpla
|
||||||
|
const std::string CSettings::SETTING_SERVICES_AIRPLAYVIDEOSUPPORT = "services.airplayvideosupport";
|
||||||
|
const std::string CSettings::SETTING_SMB_WINSSERVER = "smb.winsserver";
|
||||||
|
const std::string CSettings::SETTING_SMB_WORKGROUP = "smb.workgroup";
|
||||||
|
+const std::string CSettings::SETTING_SMB_MINPROTOCOL = "smb.minprotocol";
|
||||||
|
const std::string CSettings::SETTING_SMB_MAXPROTOCOL = "smb.maxprotocol";
|
||||||
|
+const std::string CSettings::SETTING_SMB_LEGACYSECURITY = "smb.legacysecurity";
|
||||||
|
const std::string CSettings::SETTING_VIDEOSCREEN_MONITOR = "videoscreen.monitor";
|
||||||
|
const std::string CSettings::SETTING_VIDEOSCREEN_SCREEN = "videoscreen.screen";
|
||||||
|
const std::string CSettings::SETTING_VIDEOSCREEN_RESOLUTION = "videoscreen.resolution";
|
||||||
|
@@ -1160,7 +1162,9 @@ void CSettings::InitializeISettingCallbacks()
|
||||||
|
settingSet.insert(CSettings::SETTING_SERVICES_ESCONTINUOUSDELAY);
|
||||||
|
settingSet.insert(CSettings::SETTING_SMB_WINSSERVER);
|
||||||
|
settingSet.insert(CSettings::SETTING_SMB_WORKGROUP);
|
||||||
|
+ settingSet.insert(CSettings::SETTING_SMB_MINPROTOCOL);
|
||||||
|
settingSet.insert(CSettings::SETTING_SMB_MAXPROTOCOL);
|
||||||
|
+ settingSet.insert(CSettings::SETTING_SMB_LEGACYSECURITY);
|
||||||
|
m_settingsManager->RegisterCallback(&CNetworkServices::GetInstance(), settingSet);
|
||||||
|
|
||||||
|
settingSet.clear();
|
||||||
|
diff --git a/xbmc/settings/Settings.h b/xbmc/settings/Settings.h
|
||||||
|
index ab6770997ce5..c40ab2d31957 100644
|
||||||
|
--- a/xbmc/settings/Settings.h
|
||||||
|
+++ b/xbmc/settings/Settings.h
|
||||||
|
@@ -290,7 +290,9 @@ class CSettings : public CSettingCreator, public CSettingControlCreator
|
||||||
|
static const std::string SETTING_SERVICES_AIRPLAYVIDEOSUPPORT;
|
||||||
|
static const std::string SETTING_SMB_WINSSERVER;
|
||||||
|
static const std::string SETTING_SMB_WORKGROUP;
|
||||||
|
+ static const std::string SETTING_SMB_MINPROTOCOL;
|
||||||
|
static const std::string SETTING_SMB_MAXPROTOCOL;
|
||||||
|
+ static const std::string SETTING_SMB_LEGACYSECURITY;
|
||||||
|
static const std::string SETTING_VIDEOSCREEN_MONITOR;
|
||||||
|
static const std::string SETTING_VIDEOSCREEN_SCREEN;
|
||||||
|
static const std::string SETTING_VIDEOSCREEN_RESOLUTION;
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
--- a/system/settings/settings.xml 2017-11-13 14:24:41.584692775 +0000
|
||||||
|
+++ b/system/settings/settings.xml 2017-11-13 14:22:03.245527087 +0000
|
||||||
|
@@ -1964,7 +1964,7 @@
|
||||||
|
</setting>
|
||||||
|
<setting id="smb.minprotocol" type="integer" label="36628" help="36629">
|
||||||
|
<level>2</level>
|
||||||
|
- <visible>false</visible>
|
||||||
|
+ <visible>true</visible>
|
||||||
|
<default>0</default>
|
||||||
|
<constraints>
|
||||||
|
<options>
|
||||||
|
@@ -1978,7 +1978,7 @@
|
||||||
|
</setting>
|
||||||
|
<setting id="smb.maxprotocol" type="integer" label="36621" help="36622">
|
||||||
|
<level>2</level>
|
||||||
|
- <visible>false</visible>
|
||||||
|
+ <visible>true</visible>
|
||||||
|
<default>0</default>
|
||||||
|
<constraints>
|
||||||
|
<options>
|
||||||
|
@@ -1992,7 +1992,7 @@
|
||||||
|
</setting>
|
||||||
|
<setting id="smb.legacysecurity" type="boolean" label="36630" help="36631">
|
||||||
|
<level>2</level>
|
||||||
|
- <visible>false</visible>
|
||||||
|
+ <visible>true</visible>
|
||||||
|
<default>false</default>
|
||||||
|
<control type="toggle" />
|
||||||
|
<dependencies>
|
||||||
@@ -433,6 +433,18 @@ index bb28aea1e2..741aa0bdc4 100644
|
|||||||
+
|
+
|
||||||
+$(SUBDIR)rpi_qpu.o: $(SUBDIR)rpi_hevc_transform8.h $(SUBDIR)rpi_hevc_transform10.h
|
+$(SUBDIR)rpi_qpu.o: $(SUBDIR)rpi_hevc_transform8.h $(SUBDIR)rpi_hevc_transform10.h
|
||||||
+$(SUBDIR)hevcdec.o $(SUBDIR)rpi_shader_template.o $(SUBDIR)rpi_qpu.o: $(SUBDIR)rpi_shader.h
|
+$(SUBDIR)hevcdec.o $(SUBDIR)rpi_shader_template.o $(SUBDIR)rpi_qpu.o: $(SUBDIR)rpi_shader.h
|
||||||
|
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
|
||||||
|
index 54efaad..02a89c3 100644
|
||||||
|
--- a/libavcodec/allcodecs.c
|
||||||
|
+++ b/libavcodec/allcodecs.c
|
||||||
|
@@ -667,6 +667,7 @@ void avcodec_register_all(void)
|
||||||
|
REGISTER_PARSER(H261, h261);
|
||||||
|
REGISTER_PARSER(H263, h263);
|
||||||
|
REGISTER_PARSER(H264, h264);
|
||||||
|
+ REGISTER_PARSER(H264_MVC, h264_mvc);
|
||||||
|
REGISTER_PARSER(HEVC, hevc);
|
||||||
|
REGISTER_PARSER(MJPEG, mjpeg);
|
||||||
|
REGISTER_PARSER(MLP, mlp);
|
||||||
diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
|
diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
|
||||||
index a4ceca7f46..f8229a80e2 100644
|
index a4ceca7f46..f8229a80e2 100644
|
||||||
--- a/libavcodec/arm/Makefile
|
--- a/libavcodec/arm/Makefile
|
||||||
@@ -6979,6 +6991,135 @@ index 1bf1c620d6..ccfa991f60 100644
|
|||||||
const uint8_t *bytestream_start;
|
const uint8_t *bytestream_start;
|
||||||
const uint8_t *bytestream;
|
const uint8_t *bytestream;
|
||||||
const uint8_t *bytestream_end;
|
const uint8_t *bytestream_end;
|
||||||
|
diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
|
||||||
|
index 9d94b72..535ebf0 100644
|
||||||
|
--- a/libavcodec/codec_desc.c
|
||||||
|
+++ b/libavcodec/codec_desc.c
|
||||||
|
@@ -1563,6 +1563,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
||||||
|
.long_name = NULL_IF_CONFIG_SMALL("YUY2 Lossless Codec"),
|
||||||
|
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
|
||||||
|
},
|
||||||
|
+ {
|
||||||
|
+ .id = AV_CODEC_ID_H264_MVC,
|
||||||
|
+ .type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
+ .name = "h264_mvc",
|
||||||
|
+ .long_name = NULL_IF_CONFIG_SMALL("H264 MVC"),
|
||||||
|
+ .props = AV_CODEC_PROP_LOSSY,
|
||||||
|
+ },
|
||||||
|
|
||||||
|
/* various PCM "codecs" */
|
||||||
|
{
|
||||||
|
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
|
||||||
|
index efe3555..16358aa 100644
|
||||||
|
--- a/libavcodec/h264.h
|
||||||
|
+++ b/libavcodec/h264.h
|
||||||
|
@@ -126,7 +126,9 @@ enum {
|
||||||
|
NAL_END_STREAM = 11,
|
||||||
|
NAL_FILLER_DATA = 12,
|
||||||
|
NAL_SPS_EXT = 13,
|
||||||
|
+ NAL_SPS_SUBSET = 15,
|
||||||
|
NAL_AUXILIARY_SLICE = 19,
|
||||||
|
+ NAL_SLICE_EXT = 20,
|
||||||
|
NAL_FF_IGNORE = 0xff0f001,
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
|
||||||
|
index ce4bab2..b9b0c78 100644
|
||||||
|
--- a/libavcodec/h264_parser.c
|
||||||
|
+++ b/libavcodec/h264_parser.c
|
||||||
|
@@ -58,6 +58,8 @@ typedef struct H264ParseContext {
|
||||||
|
uint8_t parse_history[6];
|
||||||
|
int parse_history_count;
|
||||||
|
int parse_last_mb;
|
||||||
|
+ int is_mvc;
|
||||||
|
+ int slice_ext;
|
||||||
|
} H264ParseContext;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -105,24 +107,27 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf,
|
||||||
|
} else if (state <= 5) {
|
||||||
|
int nalu_type = buf[i] & 0x1F;
|
||||||
|
if (nalu_type == NAL_SEI || nalu_type == NAL_SPS ||
|
||||||
|
- nalu_type == NAL_PPS || nalu_type == NAL_AUD) {
|
||||||
|
+ nalu_type == NAL_PPS || nalu_type == NAL_AUD ||
|
||||||
|
+ nalu_type == NAL_SPS_SUBSET) {
|
||||||
|
if (pc->frame_start_found) {
|
||||||
|
i++;
|
||||||
|
goto found;
|
||||||
|
}
|
||||||
|
} else if (nalu_type == NAL_SLICE || nalu_type == NAL_DPA ||
|
||||||
|
- nalu_type == NAL_IDR_SLICE) {
|
||||||
|
+ nalu_type == NAL_IDR_SLICE || (p->is_mvc && nalu_type == NAL_SLICE_EXT)) {
|
||||||
|
state += 8;
|
||||||
|
+
|
||||||
|
+ p->slice_ext = (nalu_type == NAL_SLICE_EXT);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
state = 7;
|
||||||
|
} else {
|
||||||
|
p->parse_history[p->parse_history_count++] = buf[i];
|
||||||
|
- if (p->parse_history_count > 5) {
|
||||||
|
+ if (p->parse_history_count > 8) {
|
||||||
|
unsigned int mb, last_mb = p->parse_last_mb;
|
||||||
|
GetBitContext gb;
|
||||||
|
|
||||||
|
- init_get_bits(&gb, p->parse_history, 8*p->parse_history_count);
|
||||||
|
+ init_get_bits8(&gb, p->parse_history + 3*p->slice_ext, p->parse_history_count - 3*p->slice_ext);
|
||||||
|
p->parse_history_count = 0;
|
||||||
|
mb= get_ue_golomb_long(&gb);
|
||||||
|
p->parse_last_mb = mb;
|
||||||
|
@@ -145,7 +150,7 @@ found:
|
||||||
|
pc->frame_start_found = 0;
|
||||||
|
if (p->is_avc)
|
||||||
|
return next_avc;
|
||||||
|
- return i - (state & 5) - 5 * (state > 7);
|
||||||
|
+ return i - (state & 5) - 8 * (state > 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scan_mmco_reset(AVCodecParserContext *s, GetBitContext *gb,
|
||||||
|
@@ -585,7 +590,8 @@ static int h264_parse(AVCodecParserContext *s,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- parse_nal_units(s, avctx, buf, buf_size);
|
||||||
|
+ if (!p->is_mvc)
|
||||||
|
+ parse_nal_units(s, avctx, buf, buf_size);
|
||||||
|
|
||||||
|
if (avctx->framerate.num)
|
||||||
|
avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1}));
|
||||||
|
@@ -622,7 +628,7 @@ static int h264_split(AVCodecContext *avctx,
|
||||||
|
if ((state & 0xFFFFFF00) != 0x100)
|
||||||
|
break;
|
||||||
|
nalu_type = state & 0x1F;
|
||||||
|
- if (nalu_type == NAL_SPS) {
|
||||||
|
+ if (nalu_type == NAL_SPS || nalu_type == NAL_SPS_SUBSET) {
|
||||||
|
has_sps = 1;
|
||||||
|
} else if (nalu_type == NAL_PPS)
|
||||||
|
has_pps = 1;
|
||||||
|
@@ -672,3 +678,23 @@ AVCodecParser ff_h264_parser = {
|
||||||
|
.parser_close = h264_close,
|
||||||
|
.split = h264_split,
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+static av_cold int init_mvc(AVCodecParserContext *s)
|
||||||
|
+{
|
||||||
|
+ H264ParseContext *p = s->priv_data;
|
||||||
|
+ int ret = init(s);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ p->is_mvc = 1;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+AVCodecParser ff_h264_mvc_parser = {
|
||||||
|
+ .codec_ids = { AV_CODEC_ID_H264_MVC },
|
||||||
|
+ .priv_data_size = sizeof(H264ParseContext),
|
||||||
|
+ .parser_init = init_mvc,
|
||||||
|
+ .parser_parse = h264_parse,
|
||||||
|
+ .parser_close = h264_close,
|
||||||
|
+ .split = h264_split,
|
||||||
|
+};
|
||||||
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
|
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
|
||||||
index c1fa67f67b..6f99021339 100644
|
index c1fa67f67b..6f99021339 100644
|
||||||
--- a/libavcodec/hevc.c
|
--- a/libavcodec/hevc.c
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="samba"
|
PKG_NAME="samba"
|
||||||
PKG_VERSION="4.6.8"
|
PKG_VERSION="4.6.10"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPLv3+"
|
PKG_LICENSE="GPLv3+"
|
||||||
PKG_SITE="https://www.samba.org"
|
PKG_SITE="https://www.samba.org"
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From 7470b9b18af282a742929d3fc90f4be5520428a1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Mulder <dmulder@suse.com>
|
||||||
|
Date: Thu, 2 Nov 2017 08:25:11 -0600
|
||||||
|
Subject: [PATCH] smbc_opendir should not return EEXIST with invalid login
|
||||||
|
credentials
|
||||||
|
|
||||||
|
Signed-off-by: David Mulder <dmulder@suse.com>
|
||||||
|
|
||||||
|
Reviewed-by: Andreas Schneider <asn@samba.org>
|
||||||
|
Reviewed-by: Jim McDonough <jmcd@samba.org>
|
||||||
|
|
||||||
|
Autobuild-User(master): Jim McDonough <jmcd@samba.org>
|
||||||
|
Autobuild-Date(master): Thu Nov 9 01:49:06 CET 2017 on sn-devel-144
|
||||||
|
---
|
||||||
|
source3/libsmb/libsmb_server.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
|
||||||
|
index b0e5926fa65..93b9e800910 100644
|
||||||
|
--- a/source3/libsmb/libsmb_server.c
|
||||||
|
+++ b/source3/libsmb/libsmb_server.c
|
||||||
|
@@ -351,8 +351,8 @@ SMBC_server_internal(TALLOC_CTX *ctx,
|
||||||
|
"?????",
|
||||||
|
*pp_password);
|
||||||
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
|
- errno = map_errno_from_nt_status(status);
|
||||||
|
cli_shutdown(srv->cli);
|
||||||
|
+ errno = map_errno_from_nt_status(status);
|
||||||
|
srv->cli = NULL;
|
||||||
|
smbc_getFunctionRemoveCachedServer(context)(context,
|
||||||
|
srv);
|
||||||
|
@@ -562,8 +562,8 @@ SMBC_server_internal(TALLOC_CTX *ctx,
|
||||||
|
|
||||||
|
status = cli_tree_connect_creds(c, share, "?????", creds);
|
||||||
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
|
- errno = map_errno_from_nt_status(status);
|
||||||
|
cli_shutdown(c);
|
||||||
|
+ errno = map_errno_from_nt_status(status);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
ACTION=="add", SUBSYSTEM=="usb", \
|
ACTION=="add", SUBSYSTEM=="usb", \
|
||||||
ATTR{idVendor}=="05ac", ATTR{idProduct}=="824[012]", \
|
ATTR{idVendor}=="05ac", ATTR{idProduct}=="824[012]", \
|
||||||
|
RUN+="wakeup_enable", \
|
||||||
TAG+="systemd", ENV{SYSTEMD_WANTS}+="atvclient.service"
|
TAG+="systemd", ENV{SYSTEMD_WANTS}+="atvclient.service"
|
||||||
|
|||||||
13
packages/sysutils/eventlircd/evmap/osmc_rf2.evmap
Normal file
13
packages/sysutils/eventlircd/evmap/osmc_rf2.evmap
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#KEY_HOME = KEY_HOME
|
||||||
|
KEY_I = KEY_INFO
|
||||||
|
#KEY_UP = KEY_UP
|
||||||
|
#KEY_DOWN = KEY_DOWN
|
||||||
|
#KEY_LEFT = KEY_LEFT
|
||||||
|
#KEY_RIGHT = KEY_RIGHT
|
||||||
|
KEY_ENTER = KEY_OK
|
||||||
|
#KEY_BACK = KEY_BACK
|
||||||
|
KEY_C = KEY_EPG
|
||||||
|
#KEY_PLAYPAUSE = KEY_PLAYPAUSE
|
||||||
|
#KEY_STOP = KEY_STOP
|
||||||
|
KEY_MINUS = KEY_VOLUMEDOWN
|
||||||
|
KEY_EQUAL = KEY_VOLUMEUP
|
||||||
@@ -199,6 +199,10 @@ ENV{ID_VENDOR_ID}=="2252", ENV{ID_MODEL_ID}=="1037", \
|
|||||||
ENV{eventlircd_enable}="true", \
|
ENV{eventlircd_enable}="true", \
|
||||||
ENV{eventlircd_evmap}="osmc_rf.evmap"
|
ENV{eventlircd_evmap}="osmc_rf.evmap"
|
||||||
|
|
||||||
|
ENV{ID_VENDOR_ID}=="2017", ENV{ID_MODEL_ID}=="1688", \
|
||||||
|
ENV{eventlircd_enable}="true", \
|
||||||
|
ENV{eventlircd_evmap}="osmc_rf2.evmap"
|
||||||
|
|
||||||
# Enable wake-on-usb for the USB remotes.
|
# Enable wake-on-usb for the USB remotes.
|
||||||
RUN+="wakeup_enable"
|
RUN+="wakeup_enable"
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="tz"
|
PKG_NAME="tz"
|
||||||
PKG_VERSION="2017b"
|
PKG_VERSION="2017c"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="Public Domain"
|
PKG_LICENSE="Public Domain"
|
||||||
PKG_SITE="http://www.iana.org/time-zones"
|
PKG_SITE="http://www.iana.org/time-zones"
|
||||||
|
|||||||
@@ -2,13 +2,12 @@
|
|||||||
Description=Setup Timezone data
|
Description=Setup Timezone data
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Before=systemd-udevd.service
|
Before=systemd-udevd.service
|
||||||
After=var.mount
|
After=var.mount systemd-tmpfiles-setup.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
Environment=TIMEZONE=UTC
|
Environment=TIMEZONE=UTC
|
||||||
EnvironmentFile=-/storage/.cache/timezone
|
EnvironmentFile=-/storage/.cache/timezone
|
||||||
ExecStartPre=/bin/mkdir -p /var/run
|
|
||||||
ExecStart=/bin/ln -sf /usr/share/zoneinfo/${TIMEZONE} /var/run/localtime
|
ExecStart=/bin/ln -sf /usr/share/zoneinfo/${TIMEZONE} /var/run/localtime
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
StartLimitInterval=0
|
StartLimitInterval=0
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ diff -Naur util-linux-2.27/configure.ac util-linux-2.27.patch/configure.ac
|
|||||||
+ AS_HELP_STRING([--disable-uuidgen], [do not build uuidgen]),
|
+ AS_HELP_STRING([--disable-uuidgen], [do not build uuidgen]),
|
||||||
+ [], [UL_DEFAULT_ENABLE([uuidgen], [check])]
|
+ [], [UL_DEFAULT_ENABLE([uuidgen], [check])]
|
||||||
+)
|
+)
|
||||||
+UL_BUILD_INIT([uuidgen]])
|
+UL_BUILD_INIT([uuidgen])
|
||||||
UL_REQUIRES_BUILD([uuidgen], [libuuid])
|
UL_REQUIRES_BUILD([uuidgen], [libuuid])
|
||||||
AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
|
AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,176 @@
|
|||||||
|
From c3d7ae58a87018b39f0cca9a49c4a7b553135b22 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sean Young <sean@mess.org>
|
||||||
|
Date: Wed, 29 Nov 2017 17:08:04 +0000
|
||||||
|
Subject: [PATCH 1/2] ir-ctl: fix multiple scancodes in one file
|
||||||
|
|
||||||
|
A file with contents:
|
||||||
|
|
||||||
|
scancode sony12:0x100015
|
||||||
|
space 25000
|
||||||
|
scancode sony12:0x100015
|
||||||
|
|
||||||
|
Will produce bogus results.
|
||||||
|
|
||||||
|
Reported-by: Matthias Reichl <hias@horus.com>
|
||||||
|
Tested-by: Matthias Reichl <hias@horus.com>
|
||||||
|
Signed-off-by: Sean Young <sean@mess.org>
|
||||||
|
---
|
||||||
|
utils/ir-ctl/ir-ctl.c | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
|
||||||
|
index 544ad3415..8538ec5db 100644
|
||||||
|
--- a/utils/ir-ctl/ir-ctl.c
|
||||||
|
+++ b/utils/ir-ctl/ir-ctl.c
|
||||||
|
@@ -230,8 +230,8 @@ static struct file *read_file(const char *fname)
|
||||||
|
char *scancodestr;
|
||||||
|
|
||||||
|
if (!expect_pulse) {
|
||||||
|
- fprintf(stderr, _("error: %s:%d: space must precede scancode\n"), fname, lineno);
|
||||||
|
- return NULL;
|
||||||
|
+ f->buf[len++] = IR_DEFAULT_TIMEOUT;
|
||||||
|
+ expect_pulse = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
scancodestr = strchr(p, ':');
|
||||||
|
@@ -268,7 +268,8 @@ static struct file *read_file(const char *fname)
|
||||||
|
else
|
||||||
|
f->carrier = carrier;
|
||||||
|
|
||||||
|
- len += protocol_encode(proto, scancode, f->buf);
|
||||||
|
+ len += protocol_encode(proto, scancode, f->buf + len);
|
||||||
|
+ expect_pulse = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
||||||
|
|
||||||
|
From 26eca33b62f988ecbc4df8134ebdef20f9f75c97 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sean Young <sean@mess.org>
|
||||||
|
Date: Wed, 29 Nov 2017 17:54:32 +0000
|
||||||
|
Subject: [PATCH 2/2] ir-ctl: set the gap between scancodes or files
|
||||||
|
|
||||||
|
Between sending multiple scancodes or pulse space files, there is
|
||||||
|
a gap of 125 milliseconds. Allow this to be set.
|
||||||
|
|
||||||
|
Tested-by: Matthias Reichl <hias@horus.com>
|
||||||
|
Signed-off-by: Sean Young <sean@mess.org>
|
||||||
|
---
|
||||||
|
utils/ir-ctl/ir-ctl.1.in | 6 +++++-
|
||||||
|
utils/ir-ctl/ir-ctl.c | 18 +++++++++++++-----
|
||||||
|
2 files changed, 18 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/utils/ir-ctl/ir-ctl.1.in b/utils/ir-ctl/ir-ctl.1.in
|
||||||
|
index 05550fb12..641b11152 100644
|
||||||
|
--- a/utils/ir-ctl/ir-ctl.1.in
|
||||||
|
+++ b/utils/ir-ctl/ir-ctl.1.in
|
||||||
|
@@ -93,6 +93,10 @@ Comma separated list of emitters to use for sending. The first emitter is
|
||||||
|
number 1. Some devices only support enabling one emitter (the winbond-cir
|
||||||
|
driver).
|
||||||
|
.TP
|
||||||
|
+\fB\-g\fR, \fB\-\-gap\fR=\fIGAP\fR
|
||||||
|
+Set the gap between scancodes or the gap between files when multiple files
|
||||||
|
+are specified on the command line. The default is 125000 microseconds.
|
||||||
|
+.TP
|
||||||
|
\fB\-?\fR, \fB\-\-help\fR
|
||||||
|
Prints the help message
|
||||||
|
.TP
|
||||||
|
@@ -220,7 +224,7 @@ To send the pulse and space file \fBplay\fR on emitter 3:
|
||||||
|
.br
|
||||||
|
\fBir\-ctl \-e 3 \-\-send=play\fR
|
||||||
|
.PP
|
||||||
|
-To send the rc-5 hauppuage '1' scancode:
|
||||||
|
+To send the rc-5 hauppauge '1' scancode:
|
||||||
|
.br
|
||||||
|
\fBir\-ctl \-S rc5:0x1e01
|
||||||
|
.PP
|
||||||
|
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
|
||||||
|
index 8538ec5db..6fb05b1aa 100644
|
||||||
|
--- a/utils/ir-ctl/ir-ctl.c
|
||||||
|
+++ b/utils/ir-ctl/ir-ctl.c
|
||||||
|
@@ -82,6 +82,7 @@ struct arguments {
|
||||||
|
int wideband;
|
||||||
|
unsigned carrier_low, carrier_high;
|
||||||
|
unsigned timeout;
|
||||||
|
+ unsigned gap;
|
||||||
|
int carrier_reports;
|
||||||
|
int timeout_reports;
|
||||||
|
unsigned carrier;
|
||||||
|
@@ -111,6 +112,7 @@ static const struct argp_option options[] = {
|
||||||
|
{ "carrier", 'c', N_("CARRIER"), 0, N_("set send carrier") },
|
||||||
|
{ "duty-cycle", 'D', N_("DUTY"), 0, N_("set duty cycle") },
|
||||||
|
{ "emitters", 'e', N_("EMITTERS"), 0, N_("set send emitters") },
|
||||||
|
+ { "gap", 'g', N_("GAP"), 0, N_("set gap between files or scancodes") },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -130,6 +132,7 @@ static const char doc[] = N_(
|
||||||
|
" CARRIER - the carrier frequency to use for sending\n"
|
||||||
|
" DUTY - the duty cycle to use for sending\n"
|
||||||
|
" EMITTERS - comma separated list of emitters to use for sending, e.g. 1,2\n"
|
||||||
|
+ " GAP - gap between pulse and files or scancodes in microseconds\n"
|
||||||
|
" RANGE - set range of accepted carrier frequencies, e.g. 20000-40000\n"
|
||||||
|
" TIMEOUT - set length of space before recording stops in microseconds\n"
|
||||||
|
" SCANCODE - protocol:scancode, e.g. nec:0xa814\n\n"
|
||||||
|
@@ -185,7 +188,7 @@ static unsigned parse_emitters(char *p)
|
||||||
|
return emit;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static struct file *read_file(const char *fname)
|
||||||
|
+static struct file *read_file(struct arguments *args, const char *fname)
|
||||||
|
{
|
||||||
|
bool expect_pulse = true;
|
||||||
|
int lineno = 0, lastspace = 0;
|
||||||
|
@@ -230,7 +233,7 @@ static struct file *read_file(const char *fname)
|
||||||
|
char *scancodestr;
|
||||||
|
|
||||||
|
if (!expect_pulse) {
|
||||||
|
- f->buf[len++] = IR_DEFAULT_TIMEOUT;
|
||||||
|
+ f->buf[len++] = args->gap;
|
||||||
|
expect_pulse = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -486,6 +489,11 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state)
|
||||||
|
if (arguments->emitters == 0)
|
||||||
|
argp_error(state, _("cannot parse emitters `%s'"), arg);
|
||||||
|
break;
|
||||||
|
+ case 'g':
|
||||||
|
+ arguments->gap = strtoint(arg, "");
|
||||||
|
+ if (arguments->gap == 0)
|
||||||
|
+ argp_error(state, _("cannot parse gap `%s'"), arg);
|
||||||
|
+ break;
|
||||||
|
case 'D':
|
||||||
|
arguments->duty = strtoint(arg, "%");
|
||||||
|
if (arguments->duty == 0 || arguments->duty >= 100)
|
||||||
|
@@ -494,7 +502,7 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state)
|
||||||
|
case 's':
|
||||||
|
if (arguments->record || arguments->features)
|
||||||
|
argp_error(state, _("send can not be combined with record or features option"));
|
||||||
|
- s = read_file(arg);
|
||||||
|
+ s = read_file(arguments, arg);
|
||||||
|
if (s == NULL)
|
||||||
|
exit(EX_DATAERR);
|
||||||
|
|
||||||
|
@@ -884,7 +892,7 @@ err:
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
- struct arguments args = {};
|
||||||
|
+ struct arguments args = { .gap = IR_DEFAULT_TIMEOUT };
|
||||||
|
|
||||||
|
#ifdef ENABLE_NLS
|
||||||
|
setlocale (LC_ALL, "");
|
||||||
|
@@ -912,7 +920,7 @@ int main(int argc, char *argv[])
|
||||||
|
while (s) {
|
||||||
|
struct file *next = s->next;
|
||||||
|
if (s != args.send)
|
||||||
|
- usleep(IR_DEFAULT_TIMEOUT);
|
||||||
|
+ usleep(args.gap);
|
||||||
|
|
||||||
|
rc = lirc_send(&args, fd, features, s);
|
||||||
|
if (rc) {
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From 9a20a75e132e26f6c49971f9818c6fad053875f2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sean Young <sean@mess.org>
|
||||||
|
Date: Wed, 2 Aug 2017 11:47:23 -0400
|
||||||
|
Subject: [PATCH] ir-ctl: "ir-ctl -S rc6_mce:0x800f0410" does not work on
|
||||||
|
32-bit
|
||||||
|
|
||||||
|
0x800f0410 does not fit in 32-bit signed long.
|
||||||
|
|
||||||
|
Signed-off-by: Sean Young <sean@mess.org>
|
||||||
|
---
|
||||||
|
utils/ir-ctl/ir-ctl.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
|
||||||
|
index 3d66063af..562a05da3 100644
|
||||||
|
--- a/utils/ir-ctl/ir-ctl.c
|
||||||
|
+++ b/utils/ir-ctl/ir-ctl.c
|
||||||
|
@@ -152,7 +152,7 @@ static int strtoint(const char *p, const char *unit)
|
||||||
|
static bool strtoscancode(const char *p, unsigned *ret)
|
||||||
|
{
|
||||||
|
char *end;
|
||||||
|
- long arg = strtol(p, &end, 0);
|
||||||
|
+ long long arg = strtoll(p, &end, 0);
|
||||||
|
if (end == NULL || end[0] != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
||||||
@@ -3827,7 +3827,7 @@ CONFIG_HID_GENERIC=y
|
|||||||
CONFIG_HID_A4TECH=y
|
CONFIG_HID_A4TECH=y
|
||||||
# CONFIG_HID_ACRUX is not set
|
# CONFIG_HID_ACRUX is not set
|
||||||
CONFIG_HID_APPLE=y
|
CONFIG_HID_APPLE=y
|
||||||
CONFIG_HID_APPLEIR=y
|
CONFIG_HID_APPLEIR=m
|
||||||
CONFIG_HID_AUREAL=y
|
CONFIG_HID_AUREAL=y
|
||||||
CONFIG_HID_BELKIN=y
|
CONFIG_HID_BELKIN=y
|
||||||
# CONFIG_HID_BETOP_FF is not set
|
# CONFIG_HID_BETOP_FF is not set
|
||||||
|
|||||||
@@ -67,3 +67,6 @@ esac
|
|||||||
# Include deinterlacer into default VFM map
|
# Include deinterlacer into default VFM map
|
||||||
echo rm default > /sys/class/vfm/map
|
echo rm default > /sys/class/vfm/map
|
||||||
echo add default decoder ppmgr deinterlace amvideo > /sys/class/vfm/map
|
echo add default decoder ppmgr deinterlace amvideo > /sys/class/vfm/map
|
||||||
|
|
||||||
|
# Turn off the annoying Kernel activity - Blue Flashing LED
|
||||||
|
echo none > /sys/class/leds/blue:heartbeat/trigger
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user