summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Froehlich <decke@FreeBSD.org>2017-09-11 09:27:04 +0000
committerBernhard Froehlich <decke@FreeBSD.org>2017-09-11 09:27:04 +0000
commitcd52421acd332abe17bf46177e8bce0358687af4 (patch)
tree153695618fd0ffbff1ba273282111dcd42873f7a
parentdatabases/evolution-data-server: switch to C++11, required by ICU >= 59 (diff)
- Update to 4.2.3
- Fix various portlint warnings - Add missing LICENSE_FILE - Update pkg-descr to match recent upstream development The update was postponed a few times because early 4.2 releases had some serious regressions on FreeBSD. I know that there are still a few issues in the current release especially around IPTV and SAT>IP but they do not seem to be FreeBSD specific. If you run into regressions please let me know then we can still decide if we need to keep tvheadend 4.0 around. Thanks to all people for their patience and the people which helped during the testing phase especially Rainer and Heiko! Thanks to: Rainer Hurling <rhurlin@gwdg.de>, Heiko Kirschke <heiko.kirschke@posteo.de>
Notes
Notes: svn path=/head/; revision=449622
-rw-r--r--multimedia/tvheadend/Makefile34
-rw-r--r--multimedia/tvheadend/distinfo6
-rw-r--r--multimedia/tvheadend/files/patch-Makefile.webui8
-rw-r--r--multimedia/tvheadend/files/patch-ffmpeg30425
-rw-r--r--multimedia/tvheadend/files/patch-src_http.c10
-rw-r--r--multimedia/tvheadend/files/patch-src_main.c62
-rw-r--r--multimedia/tvheadend/files/patch-src_satip_server.c11
-rw-r--r--multimedia/tvheadend/files/patch-src_spawn.c10
-rw-r--r--multimedia/tvheadend/files/patch-src_tcp.c64
-rw-r--r--multimedia/tvheadend/files/patch-src_wrappers.c30
-rw-r--r--multimedia/tvheadend/pkg-descr7
-rw-r--r--multimedia/tvheadend/pkg-message5
-rw-r--r--multimedia/tvheadend/pkg-plist310
13 files changed, 413 insertions, 569 deletions
diff --git a/multimedia/tvheadend/Makefile b/multimedia/tvheadend/Makefile
index d11dfe41fdc2..428274f938d0 100644
--- a/multimedia/tvheadend/Makefile
+++ b/multimedia/tvheadend/Makefile
@@ -2,17 +2,18 @@
# $FreeBSD$
PORTNAME= tvheadend
-PORTVERSION= 4.0.8
+PORTVERSION= 4.2.3
DISTVERSIONPREFIX= v
-PORTREVISION= 5
CATEGORIES= multimedia
MAINTAINER= decke@FreeBSD.org
-COMMENT= TV streaming server supporting DVB, IPTV and V4L
+COMMENT= TV streaming server supporting DVB, IPTV, SAT>IP and more
LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/LICENSE.md
BUILD_DEPENDS= bash:shells/bash \
+ cmake:devel/cmake \
${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
LIB_DEPENDS= libcurl.so:ftp/curl \
liburiparser.so:net/uriparser
@@ -22,9 +23,9 @@ BROKEN_mips= fails to configure: No C compiler found
BROKEN_mips64= fails to configure: No C compiler found
BROKEN_powerpc64= fails to configure: No C compiler found
+USES= execinfo gettext gmake pkgconfig python shebangfix ssl
USE_GITHUB= yes
-USES= execinfo gmake pkgconfig python shebangfix
GNU_CONFIGURE= yes
MAKE_JOBS_UNSAFE= yes
USE_RC_SUBR= ${PORTNAME}
@@ -45,7 +46,8 @@ SUB_LIST+= TVHUSER="${TVHUSER}" \
TVHGROUP="${TVHGROUP}"
CONFIGURE_ENV+= PLATFORM=freebsd
-CONFIGURE_ARGS+=--disable-dvbscan --disable-zlib
+CONFIGURE_ARGS+=--disable-dvbscan --disable-zlib --disable-hdhomerun_static \
+ --disable-bintray_cache --disable-ffmpeg_static --disable-pie
CFLAGS+= -I${LOCALBASE}/include -Wno-conversion -Wno-int-to-pointer-cast
LDFLAGS+= -L${LOCALBASE}/lib -lexecinfo -lssl -lcrypto -lz
@@ -73,27 +75,15 @@ TRANSCODING_CONFIGURE_ENABLE= libav
XMLTV_RUN_DEPENDS= p5-xmltv>=0:textproc/p5-xmltv
-# CLANG also needs -Wno-microsoft which GCC 4.2 does not know
-CFLAGS+= -Wno-microsoft \
- -Wno-tautological-constant-out-of-range-compare
+.include <bsd.port.pre.mk>
post-patch:
- @${REINPLACE_CMD} 's|0.0.0~unknown|${PORTVERSION}-${GH_TAGNAME}|' \
- ${WRKSRC}/support/version
- @${REINPLACE_CMD} 's|-g||' \
- ${WRKSRC}/Makefile
@${REINPLACE_CMD} 's|-ldl||' \
${WRKSRC}/Makefile
- # ignore gcc warnings on FreeBSD 9.X, and clang warnings on FreeBSD 10+
@${REINPLACE_CMD} 's|-Werror||' \
${WRKSRC}/Makefile
- # Remove -Wunused-result because gcc 4.2 on FreeBSD 9.x does not know it
- @${REINPLACE_CMD} 's|-Wunused-result||' \
- ${WRKSRC}/Makefile
- # to suppress clang CC flags on FreeBSD 10+
- # @${REINPLACE_CMD} 's|clang|clang-options-disabled|' \
- # to enable clang CC flags, because clang is identified as 'cc' on FreeBSD 10+
- @${REINPLACE_CMD} 's|clang|cc|' \
- ${WRKSRC}/Makefile
-.include <bsd.port.mk>
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}/${PREFIX}/bin/tvheadend
+
+.include <bsd.port.post.mk>
diff --git a/multimedia/tvheadend/distinfo b/multimedia/tvheadend/distinfo
index f98a5e03de79..e89ae6a24ab3 100644
--- a/multimedia/tvheadend/distinfo
+++ b/multimedia/tvheadend/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1464777173
-SHA256 (tvheadend-tvheadend-v4.0.8_GH0.tar.gz) = 04f485c25fcca604165622679e9e7be7aee7575d67f326f5ed8b4ceff63d8f4c
-SIZE (tvheadend-tvheadend-v4.0.8_GH0.tar.gz) = 15826229
+TIMESTAMP = 1501062908
+SHA256 (tvheadend-tvheadend-v4.2.3_GH0.tar.gz) = 2d289a1a8a0a960feba1da2da97c977a2b714d87adfdfaf00a53142e39d808e6
+SIZE (tvheadend-tvheadend-v4.2.3_GH0.tar.gz) = 21518785
diff --git a/multimedia/tvheadend/files/patch-Makefile.webui b/multimedia/tvheadend/files/patch-Makefile.webui
index a0306169e1c0..d0d4b7b7b136 100644
--- a/multimedia/tvheadend/files/patch-Makefile.webui
+++ b/multimedia/tvheadend/files/patch-Makefile.webui
@@ -1,6 +1,6 @@
---- Makefile.webui.orig 2015-09-25 13:57:59 UTC
-+++ Makefile.webui
-@@ -153,22 +153,22 @@ define GO_JS
+--- Makefile.webui.orig 2017-01-20 19:41:51.000000000 +0100
++++ Makefile.webui 2017-02-08 10:35:04.215801000 +0100
+@@ -189,22 +189,22 @@
$(VV)$(CSS_PY) --in="$^" utf-check
$(VV)cat $^ > $@.tmp
$(VV)$(RUN_JS) < $@.tmp > $@.tmp2
@@ -26,4 +26,4 @@
+ @stat -f "%-35N %7b" $@
endef
- all:
+ define merge-po
diff --git a/multimedia/tvheadend/files/patch-ffmpeg30 b/multimedia/tvheadend/files/patch-ffmpeg30
deleted file mode 100644
index 8c49fd0e7aa7..000000000000
--- a/multimedia/tvheadend/files/patch-ffmpeg30
+++ /dev/null
@@ -1,425 +0,0 @@
-https://github.com/tvheadend/tvheadend/commit/ea02889c149e3d2b80dcaed3d9ad976145bb92b0
-https://github.com/tvheadend/tvheadend/commit/c63371c8bf51928a6c965bdf17dd73555b7b9d54
-
---- Makefile.orig 2015-12-16 17:33:33 UTC
-+++ Makefile
-@@ -60,7 +60,7 @@ CFLAGS += -I${ROOTDIR}/libav_static/bui
- LDFLAGS_FFDIR = ${ROOTDIR}/libav_static/build/ffmpeg/lib
- LDFLAGS += ${LDFLAGS_FFDIR}/libavresample.a
- LDFLAGS += ${LDFLAGS_FFDIR}/libswresample.a
--LDFLAGS += ${LDFLAGS_FFDIR}/libswscale.a
-+LDFLAGS += ${LDFLAGS_FFDIR}/libavfilter.a
- LDFLAGS += ${LDFLAGS_FFDIR}/libavutil.a
- LDFLAGS += ${LDFLAGS_FFDIR}/libavformat.a
- LDFLAGS += ${LDFLAGS_FFDIR}/libavcodec.a
---- Makefile.ffmpeg.orig 2015-12-16 17:33:33 UTC
-+++ Makefile.ffmpeg
-@@ -60,7 +60,7 @@ FFMPEG_URL = http://ffmpeg.org/rele
- FFMPEG_SHA1 = 65470c9b967485f72f81758a7bad44cf7a1763db
-
- EXTLIBS = libx264 libvorbis libvpx
--COMPONENTS = avutil avformat avcodec swresample swscale avresample
-+COMPONENTS = avutil avformat avcodec swresample avfilter avresample
- PROTOCOLS = file
- DECODERS = mpeg2video mp2 ac3 eac3 h264 h264_vdpau aac aac_latm vorbis libvorbis
- ENCODERS = mpeg2video mp2 libx264 libvpx_vp8 libvpx_vp9 aac libaacplus vorbis libvorbis
---- configure.orig 2015-12-16 17:33:33 UTC
-+++ configure
-@@ -395,7 +395,7 @@ else
- has_libav=false
- fi
-
-- if $has_libav && ! check_pkg libswscale ">=2.3.100"; then
-+ if $has_libav && ! check_pkg libavfilter ">=4.0.0"; then
- has_libav=false
- fi
-
-@@ -421,7 +421,7 @@ else
- has_libav=false
- fi
-
-- if $has_libav && ! check_pkg libswscale ">=2.1.2"; then
-+ if $has_libav && ! check_pkg libavfilter ">=4.0.0"; then
- has_libav=false
- fi
-
---- src/libav.c.orig 2015-12-16 17:33:33 UTC
-+++ src/libav.c
-@@ -186,4 +186,5 @@ libav_init(void)
- av_log_set_callback(libav_log_callback);
- av_log_set_level(AV_LOG_VERBOSE);
- av_register_all();
-+ avfilter_register_all();
- }
---- src/libav.h.orig 2015-12-16 17:33:33 UTC
-+++ src/libav.h
-@@ -21,6 +21,7 @@
-
-
- #include <libavformat/avformat.h>
-+#include <libavfilter/avfilter.h>
- #include "tvheadend.h"
-
- /*
---- src/plumbing/transcoding.c.orig 2015-12-16 17:33:33 UTC
-+++ src/plumbing/transcoding.c
-@@ -19,12 +19,14 @@
- #include <unistd.h>
- #include <libavformat/avformat.h>
- #include <libavcodec/avcodec.h>
--#include <libswscale/swscale.h>
-+#include <libavfilter/avfiltergraph.h>
-+#include <libavfilter/buffersink.h>
-+#include <libavfilter/buffersrc.h>
-+#include <libavutil/opt.h>
- #include <libavresample/avresample.h>
- #include <libavutil/opt.h>
- #include <libavutil/audio_fifo.h>
- #include <libavutil/dict.h>
--#include <libavutil/audioconvert.h>
-
- #if LIBAVUTIL_VERSION_MICRO >= 100 /* FFMPEG */
- #define USING_FFMPEG 1
-@@ -91,9 +93,12 @@ typedef struct video_stream {
- AVCodec *vid_ocodec;
-
- AVFrame *vid_dec_frame;
-- struct SwsContext *vid_scaler;
- AVFrame *vid_enc_frame;
-
-+ AVFilterGraph *flt_graph;
-+ AVFilterContext *flt_bufsrcctx;
-+ AVFilterContext *flt_bufsinkctx;
-+
- int16_t vid_width;
- int16_t vid_height;
-
-@@ -952,6 +957,114 @@ send_video_packet(transcoder_t *t, trans
-
- }
-
-+/* create a simple deinterlacer-scaler video filter chain */
-+static int
-+create_video_filter(video_stream_t *vs, transcoder_t *t,
-+ AVCodecContext *ictx, AVCodecContext *octx)
-+{
-+ AVFilterInOut *flt_inputs, *flt_outputs;
-+ AVFilter *flt_bufsrc, *flt_bufsink;
-+ char opt[128];
-+ int err;
-+
-+ err = 1;
-+ flt_inputs = flt_outputs = NULL;
-+ flt_bufsrc = flt_bufsink = NULL;
-+
-+ if (vs->flt_graph)
-+ avfilter_graph_free(&vs->flt_graph);
-+
-+ vs->flt_graph = avfilter_graph_alloc();
-+ if (!vs->flt_graph)
-+ return err;
-+
-+ flt_inputs = avfilter_inout_alloc();
-+ if (!flt_inputs)
-+ goto out_err;
-+
-+ flt_outputs = avfilter_inout_alloc();
-+ if (!flt_outputs)
-+ goto out_err;
-+
-+ flt_bufsrc = avfilter_get_by_name("buffer");
-+ flt_bufsink = avfilter_get_by_name("buffersink");
-+ if (!flt_bufsrc || !flt_bufsink) {
-+ tvherror("transcode", "%04X: libav default buffers unknown", shortid(t));
-+ goto out_err;
-+ }
-+
-+ memset(opt, 0, sizeof(opt));
-+ snprintf(opt, sizeof(opt), "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
-+ ictx->width,
-+ ictx->height,
-+ ictx->pix_fmt,
-+ ictx->time_base.num,
-+ ictx->time_base.den,
-+ ictx->sample_aspect_ratio.num,
-+ ictx->sample_aspect_ratio.den);
-+
-+ err = avfilter_graph_create_filter(&vs->flt_bufsrcctx, flt_bufsrc, "in",
-+ opt, NULL, vs->flt_graph);
-+ if (err < 0) {
-+ tvherror("transcode", "%04X: fltchain IN init error", shortid(t));
-+ goto out_err;
-+ }
-+
-+ err = avfilter_graph_create_filter(&vs->flt_bufsinkctx, flt_bufsink,
-+ "out", NULL, NULL, vs->flt_graph);
-+ if (err < 0) {
-+ tvherror("transcode", "%04X: fltchain OUT init error", shortid(t));
-+ goto out_err;
-+ }
-+
-+ flt_outputs->name = av_strdup("in");
-+ flt_outputs->filter_ctx = vs->flt_bufsrcctx;
-+ flt_outputs->pad_idx = 0;
-+ flt_outputs->next = NULL;
-+ flt_inputs->name = av_strdup("out");
-+ flt_inputs->filter_ctx = vs->flt_bufsinkctx;
-+ flt_inputs->pad_idx = 0;
-+ flt_inputs->next = NULL;
-+
-+ /* add filters: yadif to deinterlace and a scaler */
-+ memset(opt, 0, sizeof(opt));
-+ snprintf(opt, sizeof(opt), "yadif,scale=%dx%d",
-+ octx->width,
-+ octx->height);
-+ err = avfilter_graph_parse_ptr(vs->flt_graph,
-+ opt,
-+ &flt_inputs,
-+ &flt_outputs,
-+ NULL);
-+ if (err < 0) {
-+ tvherror("transcode", "%04X: failed to init filter chain", shortid(t));
-+ goto out_err;
-+ }
-+
-+ err = avfilter_graph_config(vs->flt_graph, NULL);
-+ if (err < 0) {
-+ tvherror("transcode", "%04X: failed to config filter chain", shortid(t));
-+ goto out_err;
-+ }
-+
-+ avfilter_inout_free(&flt_inputs);
-+ avfilter_inout_free(&flt_outputs);
-+
-+ return 0; /* all OK */
-+
-+out_err:
-+ if (flt_inputs)
-+ avfilter_inout_free(&flt_inputs);
-+ if (flt_outputs)
-+ avfilter_inout_free(&flt_outputs);
-+ if (vs->flt_graph) {
-+ avfilter_graph_free(&vs->flt_graph);
-+ vs->flt_graph = NULL;
-+ }
-+
-+ return err;
-+}
-+
- /**
- *
- */
-@@ -962,9 +1075,7 @@ transcoder_stream_video(transcoder_t *t,
- AVCodecContext *ictx, *octx;
- AVDictionary *opts;
- AVPacket packet, packet2;
-- AVPicture deint_pic;
-- uint8_t *buf, *deint;
-- int length, len, ret, got_picture, got_output, got_ref;
-+ int length, ret, got_picture, got_output, got_ref;
- video_stream_t *vs = (video_stream_t*)ts;
- streaming_message_t *sm;
- th_pkt_t *pkt2;
-@@ -980,7 +1091,6 @@ transcoder_stream_video(transcoder_t *t,
- icodec = vs->vid_icodec;
- ocodec = vs->vid_ocodec;
-
-- buf = deint = NULL;
- opts = NULL;
-
- got_ref = 0;
-@@ -1061,7 +1171,7 @@ transcoder_stream_video(transcoder_t *t,
- switch (ts->ts_type) {
- case SCT_MPEG2VIDEO:
- octx->codec_id = AV_CODEC_ID_MPEG2VIDEO;
-- octx->pix_fmt = PIX_FMT_YUV420P;
-+ octx->pix_fmt = AV_PIX_FMT_YUV420P;
- octx->flags |= CODEC_FLAG_GLOBAL_HEADER;
-
- // Default settings for quantizer. Best quality unless changed by the streaming profile.
-@@ -1089,7 +1199,7 @@ transcoder_stream_video(transcoder_t *t,
-
- case SCT_VP8:
- octx->codec_id = AV_CODEC_ID_VP8;
-- octx->pix_fmt = PIX_FMT_YUV420P;
-+ octx->pix_fmt = AV_PIX_FMT_YUV420P;
-
- av_dict_set(&opts, "quality", "realtime", 0);
-
-@@ -1120,7 +1230,7 @@ transcoder_stream_video(transcoder_t *t,
-
- case SCT_H264:
- octx->codec_id = AV_CODEC_ID_H264;
-- octx->pix_fmt = PIX_FMT_YUV420P;
-+ octx->pix_fmt = AV_PIX_FMT_YUV420P;
- octx->flags |= CODEC_FLAG_GLOBAL_HEADER;
-
- // Qscale difference between I-frames and P-frames.
-@@ -1177,79 +1287,53 @@ transcoder_stream_video(transcoder_t *t,
- transcoder_stream_invalidate(ts);
- goto cleanup;
- }
-- }
--
-- len = avpicture_get_size(ictx->pix_fmt, ictx->width, ictx->height);
-- deint = av_malloc(len);
-
-- avpicture_fill(&deint_pic,
-- deint,
-- ictx->pix_fmt,
-- ictx->width,
-- ictx->height);
--
-- if (avpicture_deinterlace(&deint_pic,
-- (AVPicture *)vs->vid_dec_frame,
-- ictx->pix_fmt,
-- ictx->width,
-- ictx->height) < 0) {
-- tvherror("transcode", "%04X: Cannot deinterlace frame", shortid(t));
-- transcoder_stream_invalidate(ts);
-- goto cleanup;
-+ if (create_video_filter(vs, t, ictx, octx)) {
-+ tvherror("transcode", "%04X: Video filter creation failed",
-+ shortid(t));
-+ transcoder_stream_invalidate(ts);
-+ goto cleanup;
-+ }
- }
-
-- len = avpicture_get_size(octx->pix_fmt, octx->width, octx->height);
-- buf = av_malloc(len + FF_INPUT_BUFFER_PADDING_SIZE);
-- memset(buf, 0, len);
--
-- avpicture_fill((AVPicture *)vs->vid_enc_frame,
-- buf,
-- octx->pix_fmt,
-- octx->width,
-- octx->height);
--
-- vs->vid_scaler = sws_getCachedContext(vs->vid_scaler,
-- ictx->width,
-- ictx->height,
-- ictx->pix_fmt,
-- octx->width,
-- octx->height,
-- octx->pix_fmt,
-- 1,
-- NULL,
-- NULL,
-- NULL);
--
-- if (sws_scale(vs->vid_scaler,
-- (const uint8_t * const*)deint_pic.data,
-- deint_pic.linesize,
-- 0,
-- ictx->height,
-- vs->vid_enc_frame->data,
-- vs->vid_enc_frame->linesize) < 0) {
-- tvherror("transcode", "%04X: Cannot scale frame", shortid(t));
-+ /* push decoded frame into filter chain */
-+ if (av_buffersrc_add_frame(vs->flt_bufsrcctx, vs->vid_dec_frame) < 0) {
-+ tvherror("transcode", "%04X: filter input error", shortid(t));
- transcoder_stream_invalidate(ts);
- goto cleanup;
- }
-
-- vs->vid_enc_frame->format = octx->pix_fmt;
-- vs->vid_enc_frame->width = octx->width;
-- vs->vid_enc_frame->height = octx->height;
-+ /* and pull out a filtered frame */
-+ while (1) {
-+ ret = av_buffersink_get_frame(vs->flt_bufsinkctx, vs->vid_enc_frame);
-+ if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
-+ break;
-+ if (ret < 0) {
-+ tvherror("transcode", "%04X: filter output error", shortid(t));
-+ transcoder_stream_invalidate(ts);
-+ goto cleanup;
-+ }
-
-- vs->vid_enc_frame->pkt_pts = vs->vid_dec_frame->pkt_pts;
-- vs->vid_enc_frame->pkt_dts = vs->vid_dec_frame->pkt_dts;
-+ vs->vid_enc_frame->format = octx->pix_fmt;
-+ vs->vid_enc_frame->width = octx->width;
-+ vs->vid_enc_frame->height = octx->height;
-
-- if (vs->vid_dec_frame->reordered_opaque != AV_NOPTS_VALUE)
-- vs->vid_enc_frame->pts = vs->vid_dec_frame->reordered_opaque;
-+ vs->vid_enc_frame->pkt_pts = vs->vid_dec_frame->pkt_pts;
-+ vs->vid_enc_frame->pkt_dts = vs->vid_dec_frame->pkt_dts;
-
-- else if (ictx->coded_frame && ictx->coded_frame->pts != AV_NOPTS_VALUE)
-- vs->vid_enc_frame->pts = vs->vid_dec_frame->pts;
-+ if (vs->vid_dec_frame->reordered_opaque != AV_NOPTS_VALUE)
-+ vs->vid_enc_frame->pts = vs->vid_dec_frame->reordered_opaque;
-
-- ret = avcodec_encode_video2(octx, &packet2, vs->vid_enc_frame, &got_output);
-- if (ret < 0) {
-- tvherror("transcode", "%04X: Error encoding frame", shortid(t));
-- transcoder_stream_invalidate(ts);
-- goto cleanup;
-+ else if (ictx->coded_frame && ictx->coded_frame->pts != AV_NOPTS_VALUE)
-+ vs->vid_enc_frame->pts = vs->vid_dec_frame->pts;
-+
-+ ret = avcodec_encode_video2(octx, &packet2, vs->vid_enc_frame, &got_output);
-+ if (ret < 0) {
-+ tvherror("transcode", "%04X: Error encoding frame", shortid(t));
-+ transcoder_stream_invalidate(ts);
-+ goto cleanup;
-+ }
-+ av_frame_unref(vs->vid_enc_frame);
- }
-
- if (got_output)
-@@ -1263,12 +1347,6 @@ transcoder_stream_video(transcoder_t *t,
-
- av_free_packet(&packet);
-
-- if(buf)
-- av_free(buf);
--
-- if(deint)
-- av_free(deint);
--
- if(opts)
- av_dict_free(&opts);
-
-@@ -1548,15 +1626,17 @@ transcoder_destroy_video(transcoder_t *t
- if(vs->vid_dec_frame)
- av_free(vs->vid_dec_frame);
-
-- if(vs->vid_scaler)
-- sws_freeContext(vs->vid_scaler);
--
- if(vs->vid_enc_frame)
- av_free(vs->vid_enc_frame);
-
- if (vs->vid_first_pkt)
- pkt_ref_dec(vs->vid_first_pkt);
-
-+ if (vs->flt_graph) {
-+ avfilter_graph_free(&vs->flt_graph);
-+ vs->flt_graph = NULL;
-+ }
-+
- free(ts);
- }
-
-@@ -1603,11 +1683,13 @@ transcoder_init_video(transcoder_t *t, s
- vs->vid_ictx->thread_count =
- vs->vid_octx->thread_count = transcoder_thread_count(t, sct);
-
-- vs->vid_dec_frame = avcodec_alloc_frame();
-- vs->vid_enc_frame = avcodec_alloc_frame();
-+ vs->vid_dec_frame = av_frame_alloc();
-+ vs->vid_enc_frame = av_frame_alloc();
-
-- avcodec_get_frame_defaults(vs->vid_dec_frame);
-- avcodec_get_frame_defaults(vs->vid_enc_frame);
-+ av_frame_unref(vs->vid_dec_frame);
-+ av_frame_unref(vs->vid_enc_frame);
-+
-+ vs->flt_graph = NULL; /* allocated in packet processor */
-
- LIST_INSERT_HEAD(&t->t_stream_list, (transcoder_stream_t*)vs, ts_link);
-
diff --git a/multimedia/tvheadend/files/patch-src_http.c b/multimedia/tvheadend/files/patch-src_http.c
deleted file mode 100644
index 0dd6f568c038..000000000000
--- a/multimedia/tvheadend/files/patch-src_http.c
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/http.c.orig 2015-09-25 13:57:59 UTC
-+++ src/http.c
-@@ -30,6 +30,7 @@
- #include <netinet/in.h>
- #include <netinet/tcp.h>
- #include <arpa/inet.h>
-+#include <sys/socket.h>
-
- #include "tvheadend.h"
- #include "tcp.h"
diff --git a/multimedia/tvheadend/files/patch-src_main.c b/multimedia/tvheadend/files/patch-src_main.c
new file mode 100644
index 000000000000..48f8d7644e6b
--- /dev/null
+++ b/multimedia/tvheadend/files/patch-src_main.c
@@ -0,0 +1,62 @@
+Avoid build error with recent clang on FreeBSD 12-CURRENT.
+
+CC src/main.o
+In file included from src/main.c:51:
+In file included from
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/dvr/dvr.h:27:
+/usr/local/include/profile.h:24:28: error: typedef redefinition with
+different types ('struct _profile_t *' vs
+ 'struct profile')
+typedef struct _profile_t *profile_t;
+ ^
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/profile.h:148:3:
+note: previous definition is here
+} profile_t;
+ ^
+In file included from src/main.c:51:
+In file included from
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/dvr/dvr.h:27:
+/usr/local/include/profile.h:45:20: error: conflicting types for
+'profile_init'
+long KRB5_CALLCONV profile_init
+ ^
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/profile.h:197:6:
+note: previous declaration is here
+void profile_init(void);
+ ^
+In file included from src/main.c:51:
+In file included from
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/dvr/dvr.h:27:
+/usr/local/include/profile.h:71:20: error: conflicting types for
+'profile_release'
+void KRB5_CALLCONV profile_release
+ ^
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/profile.h:159:20:
+note: previous definition is here
+static inline void profile_release( profile_t *pro )
+ ^
+3 errors generated.
+gmake[2]: *** [Makefile:631:
+/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/build.freebsd/src/main.o]
+Error 1
+gmake[2]: Leaving directory
+
+Reported by: Rainer Hurling <rhurlin@gwdg.de>
+--- src/main.c.orig 2017-07-01 07:22:23.000000000 +0000
++++ src/main.c 2017-08-23 15:27:26.427162000 +0000
+@@ -48,6 +48,7 @@
+ #include "subscriptions.h"
+ #include "service_mapper.h"
+ #include "descrambler.h"
++#include "profile.h"
+ #include "dvr/dvr.h"
+ #include "htsp_server.h"
+ #include "satip/server.h"
+@@ -68,7 +69,6 @@
+ #include "intlconv.h"
+ #include "dbus.h"
+ #include "libav.h"
+-#include "profile.h"
+ #include "bouquet.h"
+ #include "tvhtime.h"
+ #include "packet.h"
diff --git a/multimedia/tvheadend/files/patch-src_satip_server.c b/multimedia/tvheadend/files/patch-src_satip_server.c
deleted file mode 100644
index 2fde225c1256..000000000000
--- a/multimedia/tvheadend/files/patch-src_satip_server.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/satip/server.c.orig 2015-09-25 13:57:59 UTC
-+++ src/satip/server.c
-@@ -17,6 +17,8 @@
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-+#include <sys/socket.h>
-+
- #include "tvheadend.h"
- #include "upnp.h"
- #include "settings.h"
diff --git a/multimedia/tvheadend/files/patch-src_spawn.c b/multimedia/tvheadend/files/patch-src_spawn.c
deleted file mode 100644
index 53f4e59bcb65..000000000000
--- a/multimedia/tvheadend/files/patch-src_spawn.c
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/spawn.c.orig 2015-09-25 13:57:59 UTC
-+++ src/spawn.c
-@@ -28,6 +28,7 @@
- #include <syslog.h>
- #include <fcntl.h>
- #include <dirent.h>
-+#include <signal.h>
-
- #include "tvheadend.h"
- #include "tvhpoll.h"
diff --git a/multimedia/tvheadend/files/patch-src_tcp.c b/multimedia/tvheadend/files/patch-src_tcp.c
new file mode 100644
index 000000000000..ff2c9f9c4ea1
--- /dev/null
+++ b/multimedia/tvheadend/files/patch-src_tcp.c
@@ -0,0 +1,64 @@
+- DSCP cannot be modified on FreeBSD yet
+src/tcp.c:61:14: error: use of undeclared identifier 'IPTOS_DSCP_MASK'
+ v = dscp & IPTOS_DSCP_MASK;
+
+- Change include order for FreeBSD
+In file included from src/tcp.c:33:
+/usr/include/netinet/ip.h:69:17: error: field has incomplete type 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+/usr/include/netinet/ip.h:69:9: note: forward declaration of 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+/usr/include/netinet/ip.h:69:24: error: field has incomplete type 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+/usr/include/netinet/ip.h:69:9: note: forward declaration of 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+/usr/include/netinet/ip.h:181:19: error: field has incomplete type 'struct in_addr'
+ struct in_addr ipt_addr;
+ ^
+/usr/include/netinet/ip.h:69:9: note: forward declaration of 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+/usr/include/netinet/ip.h:216:17: error: field has incomplete type 'struct in_addr'
+ struct in_addr ippseudo_src; /* source internet address */
+ ^
+/usr/include/netinet/ip.h:69:9: note: forward declaration of 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+/usr/include/netinet/ip.h:217:17: error: field has incomplete type 'struct in_addr'
+ struct in_addr ippseudo_dst; /* destination internet address */
+ ^
+/usr/include/netinet/ip.h:69:9: note: forward declaration of 'struct in_addr'
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+ ^
+--- src/tcp.c.orig 2017-01-20 19:41:51.000000000 +0100
++++ src/tcp.c 2017-02-08 11:15:26.836727000 +0100
+@@ -30,8 +30,8 @@
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <signal.h>
+-#include <netinet/ip.h>
+ #include <netinet/in.h>
++#include <netinet/ip.h>
+ #include <netinet/tcp.h>
+ #include <arpa/inet.h>
+
+@@ -56,6 +56,7 @@
+ int
+ socket_set_dscp(int sockfd, uint32_t dscp, char *errbuf, size_t errbufsize)
+ {
++#ifdef IPTOS_DSCP_MASK
+ int r, v;
+
+ v = dscp & IPTOS_DSCP_MASK;
+@@ -65,6 +66,7 @@
+ snprintf(errbuf, errbufsize, "IP_TOS failed: %s", strerror(errno));
+ return -1;
+ }
++#endif
+ return 0;
+ }
+
diff --git a/multimedia/tvheadend/files/patch-src_wrappers.c b/multimedia/tvheadend/files/patch-src_wrappers.c
new file mode 100644
index 000000000000..5aca192cf560
--- /dev/null
+++ b/multimedia/tvheadend/files/patch-src_wrappers.c
@@ -0,0 +1,30 @@
+--- src/wrappers.c.orig 2017-05-16 11:15:24.000000000 +0000
++++ src/wrappers.c 2017-06-21 18:00:42.352871000 +0000
+@@ -290,6 +290,19 @@
+ } while (r > 0);
+ }
+
++#ifdef PLATFORM_FREEBSD
++int64_t
++tvh_usleep(int64_t us)
++{
++ return usleep(us);
++}
++
++int64_t
++tvh_usleep_abs(int64_t us)
++{
++ return usleep(us - getfastmonoclock());
++}
++#else
+ int64_t
+ tvh_usleep(int64_t us)
+ {
+@@ -323,6 +336,7 @@
+ return val;
+ return r ? -r : 0;
+ }
++#endif
+
+ /*
+ * qsort
diff --git a/multimedia/tvheadend/pkg-descr b/multimedia/tvheadend/pkg-descr
index 26672c58139f..e6bd4ea7cd60 100644
--- a/multimedia/tvheadend/pkg-descr
+++ b/multimedia/tvheadend/pkg-descr
@@ -1,5 +1,6 @@
-A TV streaming server for Linux and FreeBSD supporting
-DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video
-(V4L) as input sources.
+A TV streaming server and recorder for Linux, FreeBSD and
+Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T,
+IPTV, SAT>IP, HDHomeRune and other formats through the unix
+pipe as input sources.
WWW: https://tvheadend.org/
diff --git a/multimedia/tvheadend/pkg-message b/multimedia/tvheadend/pkg-message
index 690fd5c24bce..df2cfb153c02 100644
--- a/multimedia/tvheadend/pkg-message
+++ b/multimedia/tvheadend/pkg-message
@@ -2,9 +2,10 @@
For the first start in your /etc/rc.conf:
tvheadend_enable="YES"
- tvheadend_flags="-C"
-The second line can be removed after the first start.
+If you plan to use webcamd you need to add tvheadend to the webcamd group.
+
+ pw usermod tvheadend -G webcamd
Patches, feedback and help are always welcome!
diff --git a/multimedia/tvheadend/pkg-plist b/multimedia/tvheadend/pkg-plist
index d78c9b9174ff..b3925c61daf6 100644
--- a/multimedia/tvheadend/pkg-plist
+++ b/multimedia/tvheadend/pkg-plist
@@ -1,5 +1,6 @@
bin/tvheadend
man/man1/tvheadend.1.gz
+%%DATADIR%%/data/conf/descrambler
%%DATADIR%%/data/conf/epggrab/opentv/dict/skyeng
%%DATADIR%%/data/conf/epggrab/opentv/dict/skyit
%%DATADIR%%/data/conf/epggrab/opentv/dict/skynz
@@ -13,81 +14,6 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/data/conf/epggrab/opentv/prov/skyuk
%%DATADIR%%/data/conf/fastscan
%%DATADIR%%/data/conf/satellites
-%%DATADIR%%/docs/docresources/accessconfig.png
-%%DATADIR%%/docs/docresources/accessconfigexample.png
-%%DATADIR%%/docs/docresources/autorec.png
-%%DATADIR%%/docs/docresources/autorecpopup.png
-%%DATADIR%%/docs/docresources/channeltab.png
-%%DATADIR%%/docs/docresources/configcapmt.png
-%%DATADIR%%/docs/docresources/configcwc.png
-%%DATADIR%%/docs/docresources/configdvbmux.png
-%%DATADIR%%/docs/docresources/configdvbmuxsched.png
-%%DATADIR%%/docs/docresources/configdvbnetwork.png
-%%DATADIR%%/docs/docresources/configdvbservices.png
-%%DATADIR%%/docs/docresources/configdvbtab.png
-%%DATADIR%%/docs/docresources/configdvrtab1.png
-%%DATADIR%%/docs/docresources/configdvrtab2.png
-%%DATADIR%%/docs/docresources/configdvrtab3.png
-%%DATADIR%%/docs/docresources/configgeneraltab1.png
-%%DATADIR%%/docs/docresources/configgeneraltab2.png
-%%DATADIR%%/docs/docresources/configtabs.png
-%%DATADIR%%/docs/docresources/configtimeshifttab.png
-%%DATADIR%%/docs/docresources/configtvadapters.png
-%%DATADIR%%/docs/docresources/configtvhlog.png
-%%DATADIR%%/docs/docresources/dvrautorecentries.png
-%%DATADIR%%/docs/docresources/dvrlog.png
-%%DATADIR%%/docs/docresources/dvrlog2.png
-%%DATADIR%%/docs/docresources/dvrlog3.png
-%%DATADIR%%/docs/docresources/dvrlog4.png
-%%DATADIR%%/docs/docresources/dvrlogentry.png
-%%DATADIR%%/docs/docresources/epg.png
-%%DATADIR%%/docs/docresources/epg2.png
-%%DATADIR%%/docs/docresources/epg3.png
-%%DATADIR%%/docs/docresources/failedrecordings1.png
-%%DATADIR%%/docs/docresources/failedrecordings2.png
-%%DATADIR%%/docs/docresources/finishedrecordings1.png
-%%DATADIR%%/docs/docresources/finishedrecordings2.png
-%%DATADIR%%/docs/docresources/muxbylocation.png
-%%DATADIR%%/docs/docresources/tagstab.png
-%%DATADIR%%/docs/docresources/timeschedules.png
-%%DATADIR%%/docs/docresources/tvheadendlogo.png
-%%DATADIR%%/docs/docresources/upcomingrecordings1.png
-%%DATADIR%%/docs/docresources/upcomingrecordings2.png
-%%DATADIR%%/docs/docresources/xmltvtab.png
-%%DATADIR%%/docs/html/autorec.html
-%%DATADIR%%/docs/html/config.html
-%%DATADIR%%/docs/html/config_access.html
-%%DATADIR%%/docs/html/config_bouquet.html
-%%DATADIR%%/docs/html/config_caclient.html
-%%DATADIR%%/docs/html/config_channels.html
-%%DATADIR%%/docs/html/config_dvb.html
-%%DATADIR%%/docs/html/config_dvr.html
-%%DATADIR%%/docs/html/config_epggrab.html
-%%DATADIR%%/docs/html/config_esfilter.html
-%%DATADIR%%/docs/html/config_iptv.html
-%%DATADIR%%/docs/html/config_misc.html
-%%DATADIR%%/docs/html/config_muxes.html
-%%DATADIR%%/docs/html/config_muxsched.html
-%%DATADIR%%/docs/html/config_networks.html
-%%DATADIR%%/docs/html/config_services.html
-%%DATADIR%%/docs/html/config_streamprofile.html
-%%DATADIR%%/docs/html/config_tags.html
-%%DATADIR%%/docs/html/config_timeshift.html
-%%DATADIR%%/docs/html/config_tvadapters.html
-%%DATADIR%%/docs/html/config_tvhlog.html
-%%DATADIR%%/docs/html/dvr.html
-%%DATADIR%%/docs/html/dvr_autorec.html
-%%DATADIR%%/docs/html/dvr_failed.html
-%%DATADIR%%/docs/html/dvr_finished.html
-%%DATADIR%%/docs/html/dvr_timerec.html
-%%DATADIR%%/docs/html/dvr_upcoming.html
-%%DATADIR%%/docs/html/dvrlog.html
-%%DATADIR%%/docs/html/epg.html
-%%DATADIR%%/docs/html/faq.html
-%%DATADIR%%/docs/html/features.html
-%%DATADIR%%/docs/html/install.html
-%%DATADIR%%/docs/html/overview.html
-%%DATADIR%%/docs/html/sysreq.html
%%DATADIR%%/src/webui/static/app/acleditor.js
%%DATADIR%%/src/webui/static/app/caclient.js
%%DATADIR%%/src/webui/static/app/chconf.js
@@ -98,21 +24,30 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/app/epg.js
%%DATADIR%%/src/webui/static/app/epggrab.js
%%DATADIR%%/src/webui/static/app/esfilter.js
+%%DATADIR%%/src/webui/static/app/ext-access.css
+%%DATADIR%%/src/webui/static/app/ext-blue.css
+%%DATADIR%%/src/webui/static/app/ext-gray.css
%%DATADIR%%/src/webui/static/app/ext.css
%%DATADIR%%/src/webui/static/app/extensions.js
+%%DATADIR%%/src/webui/static/app/i18n-post.js
+%%DATADIR%%/src/webui/static/app/i18n.js
%%DATADIR%%/src/webui/static/app/idnode.js
+%%DATADIR%%/src/webui/static/app/marked.js
%%DATADIR%%/src/webui/static/app/mpegts.js
%%DATADIR%%/src/webui/static/app/namespace.js
%%DATADIR%%/src/webui/static/app/servicemapper.js
%%DATADIR%%/src/webui/static/app/status.js
-%%DATADIR%%/src/webui/static/app/tableeditor.js
%%DATADIR%%/src/webui/static/app/timeshift.js
%%DATADIR%%/src/webui/static/app/tvadapters.js
%%DATADIR%%/src/webui/static/app/tvheadend.js
%%DATADIR%%/src/webui/static/app/tvhlog.js
+%%DATADIR%%/src/webui/static/app/wizard.js
%%DATADIR%%/src/webui/static/checkcolumn/CheckColumn.js
%%DATADIR%%/src/webui/static/extjs/adapter/ext/ext-base-debug.js
%%DATADIR%%/src/webui/static/extjs/adapter/ext/ext-base.js
+%%DATADIR%%/src/webui/static/extjs/examples/ux/Spinner.js
+%%DATADIR%%/src/webui/static/extjs/examples/ux/SpinnerField.js
+%%DATADIR%%/src/webui/static/extjs/examples/ux/css/Spinner.css
%%DATADIR%%/src/webui/static/extjs/examples/ux/gridfilters/GridFilters.js
%%DATADIR%%/src/webui/static/extjs/examples/ux/gridfilters/css/GridFilters.css
%%DATADIR%%/src/webui/static/extjs/examples/ux/gridfilters/css/RangeMenu.css
@@ -130,6 +65,8 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/extjs/examples/ux/gridfilters/images/sort_filtered_desc.gif
%%DATADIR%%/src/webui/static/extjs/examples/ux/gridfilters/menu/ListMenu.js
%%DATADIR%%/src/webui/static/extjs/examples/ux/gridfilters/menu/RangeMenu.js
+%%DATADIR%%/src/webui/static/extjs/examples/ux/images/spinner-split.gif
+%%DATADIR%%/src/webui/static/extjs/examples/ux/images/spinner.gif
%%DATADIR%%/src/webui/static/extjs/ext-all-debug.js
%%DATADIR%%/src/webui/static/extjs/ext-all.js
%%DATADIR%%/src/webui/static/extjs/resources/css/debug.css
@@ -1018,19 +955,28 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/extjs/resources/images/yourtheme/window/right-corners.psd
%%DATADIR%%/src/webui/static/extjs/resources/images/yourtheme/window/top-bottom.png
%%DATADIR%%/src/webui/static/extjs/resources/images/yourtheme/window/top-bottom.psd
-%%DATADIR%%/src/webui/static/htslogo.png
%%DATADIR%%/src/webui/static/icons/abort.png
%%DATADIR%%/src/webui/static/icons/accept.png
+%%DATADIR%%/src/webui/static/icons/acl.png
%%DATADIR%%/src/webui/static/icons/add.png
+%%DATADIR%%/src/webui/static/icons/application_form.png
+%%DATADIR%%/src/webui/static/icons/arrow_branch.png
%%DATADIR%%/src/webui/static/icons/arrow_down.png
%%DATADIR%%/src/webui/static/icons/arrow_join.png
+%%DATADIR%%/src/webui/static/icons/arrow_left.png
%%DATADIR%%/src/webui/static/icons/arrow_out.png
+%%DATADIR%%/src/webui/static/icons/arrow_right.png
%%DATADIR%%/src/webui/static/icons/arrow_switch.png
%%DATADIR%%/src/webui/static/icons/arrow_up.png
%%DATADIR%%/src/webui/static/icons/auto_rec.png
+%%DATADIR%%/src/webui/static/icons/award_star_bronze_3.png
+%%DATADIR%%/src/webui/static/icons/award_star_gold_3.png
+%%DATADIR%%/src/webui/static/icons/award_star_silver_3.png
+%%DATADIR%%/src/webui/static/icons/baseconf.png
+%%DATADIR%%/src/webui/static/icons/bell.png
%%DATADIR%%/src/webui/static/icons/bouquets.png
+%%DATADIR%%/src/webui/static/icons/brick.png
%%DATADIR%%/src/webui/static/icons/broadcast_details.png
-%%DATADIR%%/src/webui/static/icons/bullet_add.png
%%DATADIR%%/src/webui/static/icons/cancel.png
%%DATADIR%%/src/webui/static/icons/cancel_button.png
%%DATADIR%%/src/webui/static/icons/channel_tags.png
@@ -1051,6 +997,7 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/icons/epg.png
%%DATADIR%%/src/webui/static/icons/exclamation.png
%%DATADIR%%/src/webui/static/icons/eye.png
+%%DATADIR%%/src/webui/static/icons/fetch_images.png
%%DATADIR%%/src/webui/static/icons/film.png
%%DATADIR%%/src/webui/static/icons/film_edit.png
%%DATADIR%%/src/webui/static/icons/film_key.png
@@ -1059,7 +1006,10 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/icons/general.png
%%DATADIR%%/src/webui/static/icons/group.png
%%DATADIR%%/src/webui/static/icons/help.png
+%%DATADIR%%/src/webui/static/icons/imdb.png
+%%DATADIR%%/src/webui/static/icons/imgcacheconf.png
%%DATADIR%%/src/webui/static/icons/information.png
+%%DATADIR%%/src/webui/static/icons/ip_block.png
%%DATADIR%%/src/webui/static/icons/key.png
%%DATADIR%%/src/webui/static/icons/layers.png
%%DATADIR%%/src/webui/static/icons/linked.gif
@@ -1068,6 +1018,7 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/icons/networks.png
%%DATADIR%%/src/webui/static/icons/newspaper.png
%%DATADIR%%/src/webui/static/icons/other_filters.png
+%%DATADIR%%/src/webui/static/icons/pass.png
%%DATADIR%%/src/webui/static/icons/pci.png
%%DATADIR%%/src/webui/static/icons/plugin.png
%%DATADIR%%/src/webui/static/icons/progress-bg-green.gif
@@ -1076,11 +1027,13 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/icons/rec.png
%%DATADIR%%/src/webui/static/icons/recordingtab.png
%%DATADIR%%/src/webui/static/icons/reseticon.png
+%%DATADIR%%/src/webui/static/icons/satipsrvconf.png
%%DATADIR%%/src/webui/static/icons/save.png
%%DATADIR%%/src/webui/static/icons/scheduled.png
%%DATADIR%%/src/webui/static/icons/service_mapper.png
%%DATADIR%%/src/webui/static/icons/services.png
%%DATADIR%%/src/webui/static/icons/sound.png
+%%DATADIR%%/src/webui/static/icons/sound_mute.png
%%DATADIR%%/src/webui/static/icons/stop.png
%%DATADIR%%/src/webui/static/icons/stop_rec.png
%%DATADIR%%/src/webui/static/icons/stream.png
@@ -1090,6 +1043,7 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/icons/tag_blue.png
%%DATADIR%%/src/webui/static/icons/teletext.png
%%DATADIR%%/src/webui/static/icons/television.png
+%%DATADIR%%/src/webui/static/icons/thetvdb.png
%%DATADIR%%/src/webui/static/icons/tick.png
%%DATADIR%%/src/webui/static/icons/time_schedules.png
%%DATADIR%%/src/webui/static/icons/timeshift.png
@@ -1099,11 +1053,207 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/icons/wand.png
%%DATADIR%%/src/webui/static/icons/watch_tv.png
%%DATADIR%%/src/webui/static/icons/world.png
+%%DATADIR%%/src/webui/static/icons/world_add.png
%%DATADIR%%/src/webui/static/icons/wrench.png
%%DATADIR%%/src/webui/static/img/bg-header.png
+%%DATADIR%%/src/webui/static/img/doc/access_entry/new.png
+%%DATADIR%%/src/webui/static/img/doc/access_entry/tab.png
+%%DATADIR%%/src/webui/static/img/doc/before_begin/schematic.png
+%%DATADIR%%/src/webui/static/img/doc/bouquet/add.png
+%%DATADIR%%/src/webui/static/img/doc/bouquet/detach.png
+%%DATADIR%%/src/webui/static/img/doc/bouquet/tab.png
+%%DATADIR%%/src/webui/static/img/doc/caclient/tab.png
+%%DATADIR%%/src/webui/static/img/doc/caclient_capmt/tab.png
+%%DATADIR%%/src/webui/static/img/doc/channel/add.png
+%%DATADIR%%/src/webui/static/img/doc/channel/tab.png
+%%DATADIR%%/src/webui/static/img/doc/channeltag/tab.png
+%%DATADIR%%/src/webui/static/img/doc/config/tab.png
+%%DATADIR%%/src/webui/static/img/doc/debugging/tab.png
+%%DATADIR%%/src/webui/static/img/doc/dvrautorec/add.png
+%%DATADIR%%/src/webui/static/img/doc/dvrautorec/tab.png
+%%DATADIR%%/src/webui/static/img/doc/dvrconfig/tab.png
+%%DATADIR%%/src/webui/static/img/doc/dvrentry/add.png
+%%DATADIR%%/src/webui/static/img/doc/dvrentry/tab.png
+%%DATADIR%%/src/webui/static/img/doc/dvrtimerec/add.png
+%%DATADIR%%/src/webui/static/img/doc/dvrtimerec/tab.png
+%%DATADIR%%/src/webui/static/img/doc/epg/autorec.png
+%%DATADIR%%/src/webui/static/img/doc/epg/series_link.png
+%%DATADIR%%/src/webui/static/img/doc/epg/tab.png
+%%DATADIR%%/src/webui/static/img/doc/epgconf/tab.png
+%%DATADIR%%/src/webui/static/img/doc/epggrabber_channel/tab.png
+%%DATADIR%%/src/webui/static/img/doc/epggrabber_modules/tab.png
+%%DATADIR%%/src/webui/static/img/doc/filters/example.png
+%%DATADIR%%/src/webui/static/img/doc/filters/tab.png
+%%DATADIR%%/src/webui/static/img/doc/icons/abort.png
+%%DATADIR%%/src/webui/static/img/doc/icons/accept.png
+%%DATADIR%%/src/webui/static/img/doc/icons/acl.png
+%%DATADIR%%/src/webui/static/img/doc/icons/add.png
+%%DATADIR%%/src/webui/static/img/doc/icons/application_form.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_branch.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_down.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_join.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_left.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_out.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_right.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_switch.png
+%%DATADIR%%/src/webui/static/img/doc/icons/arrow_up.png
+%%DATADIR%%/src/webui/static/img/doc/icons/auto_rec.png
+%%DATADIR%%/src/webui/static/img/doc/icons/award_star_bronze_3.png
+%%DATADIR%%/src/webui/static/img/doc/icons/award_star_gold_3.png
+%%DATADIR%%/src/webui/static/img/doc/icons/award_star_silver_3.png
+%%DATADIR%%/src/webui/static/img/doc/icons/baseconf.png
+%%DATADIR%%/src/webui/static/img/doc/icons/bell.png
+%%DATADIR%%/src/webui/static/img/doc/icons/bouquets.png
+%%DATADIR%%/src/webui/static/img/doc/icons/brick.png
+%%DATADIR%%/src/webui/static/img/doc/icons/broadcast_details.png
+%%DATADIR%%/src/webui/static/img/doc/icons/cancel.png
+%%DATADIR%%/src/webui/static/img/doc/icons/cancel_button.png
+%%DATADIR%%/src/webui/static/img/doc/icons/channel_tags.png
+%%DATADIR%%/src/webui/static/img/doc/icons/channels.png
+%%DATADIR%%/src/webui/static/img/doc/icons/clean.png
+%%DATADIR%%/src/webui/static/img/doc/icons/clock.png
+%%DATADIR%%/src/webui/static/img/doc/icons/connections.png
+%%DATADIR%%/src/webui/static/img/doc/icons/control_pause.png
+%%DATADIR%%/src/webui/static/img/doc/icons/control_play.png
+%%DATADIR%%/src/webui/static/img/doc/icons/control_stop.png
+%%DATADIR%%/src/webui/static/img/doc/icons/debug.png
+%%DATADIR%%/src/webui/static/img/doc/icons/delete.png
+%%DATADIR%%/src/webui/static/img/doc/icons/download.png
+%%DATADIR%%/src/webui/static/img/doc/icons/drive.png
+%%DATADIR%%/src/webui/static/img/doc/icons/dvr.png
+%%DATADIR%%/src/webui/static/img/doc/icons/dvrprofiles.png
+%%DATADIR%%/src/webui/static/img/doc/icons/edit.png
+%%DATADIR%%/src/webui/static/img/doc/icons/epg.png
+%%DATADIR%%/src/webui/static/img/doc/icons/exclamation.png
+%%DATADIR%%/src/webui/static/img/doc/icons/eye.png
+%%DATADIR%%/src/webui/static/img/doc/icons/fetch_images.png
+%%DATADIR%%/src/webui/static/img/doc/icons/film.png
+%%DATADIR%%/src/webui/static/img/doc/icons/film_edit.png
+%%DATADIR%%/src/webui/static/img/doc/icons/film_key.png
+%%DATADIR%%/src/webui/static/img/doc/icons/find.png
+%%DATADIR%%/src/webui/static/img/doc/icons/full_screen.png
+%%DATADIR%%/src/webui/static/img/doc/icons/general.png
+%%DATADIR%%/src/webui/static/img/doc/icons/group.png
+%%DATADIR%%/src/webui/static/img/doc/icons/help.png
+%%DATADIR%%/src/webui/static/img/doc/icons/imdb.png
+%%DATADIR%%/src/webui/static/img/doc/icons/imgcacheconf.png
+%%DATADIR%%/src/webui/static/img/doc/icons/information.png
+%%DATADIR%%/src/webui/static/img/doc/icons/ip_block.png
+%%DATADIR%%/src/webui/static/img/doc/icons/key.png
+%%DATADIR%%/src/webui/static/img/doc/icons/layers.png
+%%DATADIR%%/src/webui/static/img/doc/icons/linked.gif
+%%DATADIR%%/src/webui/static/img/doc/icons/mux_schedulers.png
+%%DATADIR%%/src/webui/static/img/doc/icons/muxes.png
+%%DATADIR%%/src/webui/static/img/doc/icons/networks.png
+%%DATADIR%%/src/webui/static/img/doc/icons/newspaper.png
+%%DATADIR%%/src/webui/static/img/doc/icons/other_filters.png
+%%DATADIR%%/src/webui/static/img/doc/icons/pass.png
+%%DATADIR%%/src/webui/static/img/doc/icons/pci.png
+%%DATADIR%%/src/webui/static/img/doc/icons/plugin.png
+%%DATADIR%%/src/webui/static/img/doc/icons/progress-bg-green.gif
+%%DATADIR%%/src/webui/static/img/doc/icons/progress-bg-orange.gif
+%%DATADIR%%/src/webui/static/img/doc/icons/progress-bg-red.gif
+%%DATADIR%%/src/webui/static/img/doc/icons/rec.png
+%%DATADIR%%/src/webui/static/img/doc/icons/recordingtab.png
+%%DATADIR%%/src/webui/static/img/doc/icons/reseticon.png
+%%DATADIR%%/src/webui/static/img/doc/icons/satipsrvconf.png
+%%DATADIR%%/src/webui/static/img/doc/icons/save.png
+%%DATADIR%%/src/webui/static/img/doc/icons/scheduled.png
+%%DATADIR%%/src/webui/static/img/doc/icons/service_mapper.png
+%%DATADIR%%/src/webui/static/img/doc/icons/services.png
+%%DATADIR%%/src/webui/static/img/doc/icons/sound.png
+%%DATADIR%%/src/webui/static/img/doc/icons/sound_mute.png
+%%DATADIR%%/src/webui/static/img/doc/icons/stop.png
+%%DATADIR%%/src/webui/static/img/doc/icons/stop_rec.png
+%%DATADIR%%/src/webui/static/img/doc/icons/stream.png
+%%DATADIR%%/src/webui/static/img/doc/icons/subscriptions.png
+%%DATADIR%%/src/webui/static/img/doc/icons/subtitle.png
+%%DATADIR%%/src/webui/static/img/doc/icons/tag.png
+%%DATADIR%%/src/webui/static/img/doc/icons/tag_blue.png
+%%DATADIR%%/src/webui/static/img/doc/icons/teletext.png
+%%DATADIR%%/src/webui/static/img/doc/icons/television.png
+%%DATADIR%%/src/webui/static/img/doc/icons/thetvdb.png
+%%DATADIR%%/src/webui/static/img/doc/icons/tick.png
+%%DATADIR%%/src/webui/static/img/doc/icons/time_schedules.png
+%%DATADIR%%/src/webui/static/img/doc/icons/timeshift.png
+%%DATADIR%%/src/webui/static/img/doc/icons/tv_cards.png
+%%DATADIR%%/src/webui/static/img/doc/icons/undo.png
+%%DATADIR%%/src/webui/static/img/doc/icons/upcoming_rec.png
+%%DATADIR%%/src/webui/static/img/doc/icons/wand.png
+%%DATADIR%%/src/webui/static/img/doc/icons/watch_tv.png
+%%DATADIR%%/src/webui/static/img/doc/icons/world.png
+%%DATADIR%%/src/webui/static/img/doc/icons/world_add.png
+%%DATADIR%%/src/webui/static/img/doc/icons/wrench.png
+%%DATADIR%%/src/webui/static/img/doc/imagecache/tab.png
+%%DATADIR%%/src/webui/static/img/doc/index/logo.png
+%%DATADIR%%/src/webui/static/img/doc/ipblocking/tab.png
+%%DATADIR%%/src/webui/static/img/doc/linuxdvb_frontend_dvbc/tab.png
+%%DATADIR%%/src/webui/static/img/doc/linuxdvb_frontend_dvbs/tab.png
+%%DATADIR%%/src/webui/static/img/doc/linuxdvb_frontend_dvbt/tab.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_mux/tab.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_mux_sched/tab.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_network/tab.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_service/add_service.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_service/map_all.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_service/map_selected.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_service/service_filter.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_service/service_info.png
+%%DATADIR%%/src/webui/static/img/doc/mpegts_service/tab.png
+%%DATADIR%%/src/webui/static/img/doc/overview/screenshot.png
+%%DATADIR%%/src/webui/static/img/doc/passwd/add.png
+%%DATADIR%%/src/webui/static/img/doc/passwd/tab.png
+%%DATADIR%%/src/webui/static/img/doc/profile/tab.png
+%%DATADIR%%/src/webui/static/img/doc/satip_client/tab.png
+%%DATADIR%%/src/webui/static/img/doc/satip_server/tab.png
+%%DATADIR%%/src/webui/static/img/doc/service_mapper/dialog.png
+%%DATADIR%%/src/webui/static/img/doc/status_connections/tab.png
+%%DATADIR%%/src/webui/static/img/doc/status_service_mapper/tab.png
+%%DATADIR%%/src/webui/static/img/doc/status_stream/tab.png
+%%DATADIR%%/src/webui/static/img/doc/status_subscriptions/tab.png
+%%DATADIR%%/src/webui/static/img/doc/timeshift/tab.png
+%%DATADIR%%/src/webui/static/img/doc/tv_adapters/params.png
+%%DATADIR%%/src/webui/static/img/doc/tv_adapters/tree.png
+%%DATADIR%%/src/webui/static/img/epg.png
%%DATADIR%%/src/webui/static/img/error.png
%%DATADIR%%/src/webui/static/img/logo.png
+%%DATADIR%%/src/webui/static/img/logobig.png
+%%DATADIR%%/src/webui/static/img/logomid.png
%%DATADIR%%/src/webui/static/img/spinner_black_bg.gif
+%%DATADIR%%/src/webui/static/intl/tvh.ach.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.ady.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.ar.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.bg.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.cs.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.da.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.de.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.en_GB.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.en_US.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.es.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.et.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.fa.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.fi.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.fr.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.he.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.hr.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.hu.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.it.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.ko.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.lt.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.lv.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.nl.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.no.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.pl.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.pt.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.ro.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.ru.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.sk.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.sl.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.sq.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.sv.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.tr.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.uk.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.zh-Hans.js.gz
+%%DATADIR%%/src/webui/static/intl/tvh.zh.js.gz
%%DATADIR%%/src/webui/static/livegrid/livegrid-all.js
%%DATADIR%%/src/webui/static/livegrid/resources/css/ext-ux-livegrid.css
%%DATADIR%%/src/webui/static/livegrid/resources/images/loading.gif
@@ -1126,7 +1276,9 @@ man/man1/tvheadend.1.gz
%%DATADIR%%/src/webui/static/tv.js
%%DATADIR%%/src/webui/static/tvh-tv.css.gz
%%DATADIR%%/src/webui/static/tvh-tv.js.gz
-%%DATADIR%%/src/webui/static/tvh.css.gz
+%%DATADIR%%/src/webui/static/tvh.access.css.gz
+%%DATADIR%%/src/webui/static/tvh.blue.css.gz
+%%DATADIR%%/src/webui/static/tvh.gray.css.gz
%%DATADIR%%/src/webui/static/tvh.js.gz
%%DATADIR%%/src/webui/static/xcheckbox/xcheckbox.css
%%DATADIR%%/src/webui/static/xcheckbox/xcheckbox.js