tvheadend: update to 2024-11-12, new options, patch for bug #26422
authorMarius Dinu <redacted>
Sun, 11 May 2025 13:19:01 +0000 (16:19 +0300)
committerHannu Nyman <redacted>
Sun, 11 May 2025 18:01:38 +0000 (21:01 +0300)
Changes:
- update to git master 2024-11-12 (dev stalled since then)
- patch for OpenWrt bug #26422 / tvheadend bug #1786
- Options removed:
  - imagecache = tvheadend doesn't support disabling it anymore
- Options added:
  - detailed (but slow) memory utilization reporting
  - Timeshift (default on)
  - tsfile (currently bugged in tvheadend, commented out / always on)
  - HDHomeRun server emulation (default on)
  - Digital Devices DVB CI descrambling cards (default off)
- RegEx options cleaned up, PCRE2 is the new default.
- Some help text improved

Signed-off-by: Marius Dinu <redacted>
multimedia/tvheadend/Config.in
multimedia/tvheadend/Makefile
multimedia/tvheadend/patches/010-fix-tvheadend-bug-1786.patch [new file with mode: 0644]

index b750bd9eb4f5a3473d78c6cc5108bde3fef1a601..b1171d522bdaff9cf93c698e689cec51e444ce4a 100644 (file)
@@ -9,6 +9,14 @@ config TVHEADEND_OPTIMIZE_SPEED
     Optimize tvheadend for speed instead of size. This option adds -O3 and LTO (Link Time Optimization).
     Note: No benchmarks were performed when this option was added. Speed improvements (if any) are not known.
 
+config TVHEADEND_MEMORYINFO
+  bool "Memory info"
+  depends on PACKAGE_tvheadend
+  default n
+  help
+    Add htsmsg/htsmsg_field to Memory Information Entries tab.
+    Note: impacts performance.
+
 config TVHEADEND_TRACE
   bool "Low level debug trace"
   depends on PACKAGE_tvheadend
@@ -19,23 +27,15 @@ config TVHEADEND_TRACE
     Note: Selecting this option does not automatically enable trace logging.
     It only includes support for --trace command line option and GUI.
 
-config TVHEADEND_AVAHI_SUPPORT
-  bool "Avahi client"
-  depends on PACKAGE_tvheadend
-  select PACKAGE_libavahi-client
-  default n
-  help
-    Enables the opensource implementation of Apple's zero configuration protocol.
-    Tvheadend will advertise itself on the network using this protocol.
-
 choice
   prompt "Regular Expression"
   depends on PACKAGE_tvheadend
+  default TVHEADEND_REGEX_PCRE2
   config TVHEADEND_REGEX_POSIX
     bool "POSIX (internal)"
     help
       Use internal POSIX Regular Expressions.
-      Note that not all EPG parsers will work with POSIX RegEx.
+      Note: Some EPG parsers will not work with POSIX RegEx.
   config TVHEADEND_REGEX_PCRE2
     bool "PCRE2 (libpcre2)"
     select PACKAGE_libpcre2
@@ -43,32 +43,52 @@ choice
       Use more advanced Perl-Compatible Regular Expressions, provided by libpcre2.
 endchoice
 
-config TVHEADEND_IMAGECACHE
-  bool "Image cache"
+config TVHEADEND_AVAHI_SUPPORT
+  bool "Avahi client"
   depends on PACKAGE_tvheadend
+  select PACKAGE_libavahi-client
   default n
   help
-    Support caching TV station logos and other images on disk.
-    Note: Activating disk cache will increase fash memory wear.
-    Selecting this option does not automatically enable disk caching. It only includes support for it.
+    Enables the opensource implementation of Apple's zero configuration protocol.
+    Tvheadend will advertise itself on the network using this protocol.
+
+config TVHEADEND_TIMESHIFT
+  bool "Timeshift"
+  depends on PACKAGE_tvheadend
+  default y
+  help
+    Allow continuous recording of a selected TV channel in a circular memory or file buffer,
+    and allow clients playing that live TV channel to pause/rewind/replay/ffwd within the limits of the buffer.
+    Note: Timeshift must be supported by the clients too.
+    Note: Timeshift recording is continuous. It must be stopped manually. Recording on flash-based storage is NOT recommended!
 
 comment "Input & output support"
   depends on PACKAGE_tvheadend
 
+# BUG in tvheadend. Can't be disabled.
+#config TVHEADEND_TSFILE
+#  bool "ts file streaming"
+#  depends on PACKAGE_tvheadend
+#  default n
+#  help
+#    Support creation of a virtual TV network that streams from a file.
+#    This is done manually with --tsfile_tuners <no> and --tsfile <file> command line arguments
+#    and is not supported by OpenWrt tvheadend configuration and startup script.
+
 config TVHEADEND_LINUXDVB_SUPPORT
   bool "DVB tuners"
   depends on PACKAGE_tvheadend
   default y
   help
     Include support for DVB tuners.
-    Note: Kernel driver(s) and firmware must also be installed.
+    Note: Kernel driver(s) and firmware must also be installed. These are not available as OpenWrt packages.
 
 config TVHEADEND_DVBSCAN_SUPPORT
   bool "Include DVB-scan tables"
   depends on TVHEADEND_LINUXDVB_SUPPORT
   default TVHEADEND_LINUXDVB_SUPPORT
   help
-    Download and include DVB scan tables.
+    Download and include DVB scan tables into the package.
 
 config TVHEADEND_IPTV
   bool "IPTV client"
@@ -97,9 +117,35 @@ config TVHEADEND_HDHOMERUN_CLIENT
   default y
   help
     Include HDHomeRun client.
-    HDHomeRun is a network-attached, digital television tuner box.
+    HDHomeRun is a network-attached digital television tuner box.
+
+config TVHEADEND_HDHOMERUN_SERVER
+  bool "HDHomeRun server emulation"
+  depends on PACKAGE_tvheadend
+  default y
+  help
+    Support emulating a HDHomeRun device (live TV only).
+    HDHomeRun is a network-attached digital television tuner box.
+    This option will allow tvheadend to act as a server and stream live TV to HDHomeRun clients.
+
+comment "Hardware descrambling"
+  depends on PACKAGE_tvheadend
+
+config TVHEADEND_DVB_DDCI
+  bool "DVB CI cards from Digital Devices"
+  depends on PACKAGE_tvheadend
+  depends on TVHEADEND_LINUXDVB_SUPPORT
+  default n
+  help
+    Support DVB CI (Common Interface) adapter cards from Digital Devices.
+    Note: Kernel drivers are required for the adapter cards. These are not available as OpenWrt packages.
+    Note: Not tested due to lack of hardware.
+
+comment "Software descrambling and some codecs are only available with BUILD_PATENTED."
+  depends on PACKAGE_tvheadend
+  depends on !BUILD_PATENTED
 
-comment "SoftCAM (Software Conditional Access Module)"
+comment "Software descrambling, SoftCAM (Software Conditional Access Module)"
   depends on PACKAGE_tvheadend
   depends on BUILD_PATENTED
 
@@ -110,7 +156,7 @@ config TVHEADEND_CSA
   select PACKAGE_libdvbcsa
   default n
   help
-    Support decoding CSA (Common Scrambling Algorithm). Uses libdvbcsa package.
+    Support CSA (Common Scrambling Algorithm). Uses libdvbcsa package.
 
 config TVHEADEND_CONSTCW
   bool "CCW"
@@ -120,11 +166,11 @@ config TVHEADEND_CONSTCW
     Support Constant Control Word.
 
 config TVHEADEND_CAPMT
-  bool "CWC capmt client"
+  bool "capmt client"
   depends on TVHEADEND_CSA
   default n
   help
-    Support Control Word Client capmt (Linux Network DVBAPI) protocol.
+    Support capmt (Linux Network DVBAPI) protocol.
 
 config TVHEADEND_NEWCAMD
   bool "CWC newcamd client"
@@ -138,10 +184,6 @@ config TVHEADEND_CCCAM
   depends on TVHEADEND_CSA
   default n
 
-comment "DVB descrambling and some codecs are only available with BUILD_PATENTED."
-  depends on PACKAGE_tvheadend
-  depends on !BUILD_PATENTED
-
 ## Transcoding | Uncomment these options.
 ##comment "Transcoding and codecs"
 ##  depends on PACKAGE_tvheadend
index 61cd48616b0cb0094704ebeb50a3dfee8e0f9a38..e9cc5a8f71f48b8bdca990bc717ebd87c863234b 100644 (file)
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/tvheadend/tvheadend
-PKG_MIRROR_HASH:=0dbdc13634db4150e772aec8da730ffb7f0cadf3d3c46158a422a7dada16dcfc
-PKG_SOURCE_VERSION:=adef81b8d2a6edb3a665679f394bac05b7dc91c8
-PKG_SOURCE_DATE:=2024-08-12
+PKG_MIRROR_HASH:=53b0a85ceee9989688471220dfb2070fe4cd68ceef50234202f9c1af1b8b5dc8
+PKG_SOURCE_VERSION:=653bd0400b4413db96b80c807f0f7524f9248adb
+PKG_SOURCE_DATE:=2024-11-12
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=LICENSE.md
@@ -52,7 +52,7 @@ endef
 define Package/tvheadend/description
   Tvheadend is a TV streaming server and recorder for Linux, FreeBSD and Android
   supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, SAT>IP and HDHomeRun as input sources.
-  Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
+  Tvheadend supports streaming to clients via HTTP (VLC, MPlayer), HTSP (Kodi, Movian), SAT>IP and TVHeadEnd emulation.
 endef
 
 define Package/tvheadend/config
@@ -74,14 +74,18 @@ endif
 ifeq ($(CONFIG_TVHEADEND_TRACE),)
        CONFIGURE_ARGS += --disable-trace
 endif
+ifneq ($(CONFIG_TVHEADEND_MEMORYINFO),)
+       CONFIGURE_ARGS += --enable-slow_memoryinfo
+endif
 
-CONFIGURE_ARGS += --disable-pcre
-ifneq ($(CONFIG_TVHEADEND_REGEX_PCRE2),)
-       CONFIGURE_ARGS += --enable-pcre2
-else
-ifneq ($(CONFIG_TVHEADEND_REGEX_POSIX),)
+ifeq ($(CONFIG_TVHEADEND_REGEX_PCRE2),)
        CONFIGURE_ARGS += --disable-pcre2
+else
+       CONFIGURE_ARGS += --enable-pcre2
 endif
+
+ifeq ($(CONFIG_TVHEADEND_TIMESHIFT),)
+       CONFIGURE_ARGS += --disable-timeshift
 endif
 
 ifeq ($(CONFIG_TVHEADEND_AVAHI_SUPPORT),)
@@ -90,13 +94,13 @@ else
        CONFIGURE_ARGS += --enable-avahi
 endif
 
-ifeq ($(CONFIG_TVHEADEND_IMAGECACHE),)
-       CONFIGURE_ARGS += --disable-imagecache
-else
-       CONFIGURE_ARGS += --enable-imagecache
-endif
-
 ## TV sources
+
+# Bug in tvheadend. Can't be disabled.
+#ifeq ($(CONFIG_TVHEADEND_TSFILE),)
+#      CONFIGURE_ARGS += --disable-tsfile
+#endif
+
 ifeq ($(CONFIG_TVHEADEND_LINUXDVB_SUPPORT),)
        CONFIGURE_ARGS += --disable-linuxdvb
 endif
@@ -118,12 +122,29 @@ ifeq ($(CONFIG_TVHEADEND_SATIP_CLIENT),)
 endif
 
 ifeq ($(CONFIG_TVHEADEND_HDHOMERUN_CLIENT),)
-       CONFIGURE_ARGS += --disable-hdhomerun_static
+ifeq ($(CONFIG_TVHEADEND_HDHOMERUN_SERVER),)
+       CONFIGURE_ARGS += --disable-hdhomerun_static --disable-hdhomerun_client --disable-hdhomerun_server
+else
+       CONFIGURE_ARGS += --enable-hdhomerun_static --disable-hdhomerun_client --enable-hdhomerun_server
+endif
 else
-       CONFIGURE_ARGS += --enable-hdhomerun_client
+       CONFIGURE_ARGS += --enable-hdhomerun_static --enable-hdhomerun_client
+ifeq ($(CONFIG_TVHEADEND_HDHOMERUN_SERVER),)
+       CONFIGURE_ARGS += --disable-hdhomerun_server
+else
+       CONFIGURE_ARGS += --enable-hdhomerun_server
+endif
 endif
 
 ## Descrambling
+ifeq ($(CONFIG_TVHEADEND_LINUXDVB_SUPPORT),)
+       CONFIGURE_ARGS += --disable-ddci
+else
+ifeq ($(CONFIG_TVHEADEND_DVB_DDCI),)
+       CONFIGURE_ARGS += --disable-ddci
+endif
+endif
+
 ifeq ($(CONFIG_BUILD_PATENTED),)
        CONFIGURE_ARGS += --disable-tvhcsa --disable-dvbcsa --disable-constcw --disable-cwc --disable-capmt --disable-cccam
 else
@@ -196,6 +217,7 @@ CONFIGURE_ARGS += \
        --arch=$(ARCH) \
        --disable-libsystemd_daemon \
        --disable-dbus_1 \
+       --disable-pcre \
        --disable-libav \
        --disable-ffmpeg_static \
        --disable-libx264 \
diff --git a/multimedia/tvheadend/patches/010-fix-tvheadend-bug-1786.patch b/multimedia/tvheadend/patches/010-fix-tvheadend-bug-1786.patch
new file mode 100644 (file)
index 0000000..767c813
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/src/webui/static/lovcombo/lovcombo-all.js
++++ b/src/webui/static/lovcombo/lovcombo-all.js
+@@ -297,7 +297,7 @@ Ext.ux.form.LovCombo = Ext.extend(Ext.ux
+                               this.store.clearFilter();
+                               this.store.each(function(r) {
+                                       var checked = !(!v.match(
+-                                               '(^|' + this.separator + ')' + RegExp.escape(r.get(this.valueField))
++                                               '(^|' + this.separator + ')' + RegExp.escape(String(r.get(this.valueField)))
+                                               +'(' + this.separator + '|$)'))
+                                       ;
git clone https://git.99rst.org/PROJECT