]> git.ipfire.org Git - thirdparty/tvheadend.git/log
thirdparty/tvheadend.git
6 years agoui: Add fanart background to dvr details dialog.
E.Smith [Wed, 26 Sep 2018 22:35:26 +0000 (23:35 +0100)] 
ui: Add fanart background to dvr details dialog.

We now display fanart (if available) on the background of the dvr
dialog. This fanart image is also displayed every ten seconds where
the existing image is displayed.

We have to put the image inside a fixed width container, otherwise if
you alternate between a long thin image and a wide image then the text
reflows.

6 years agoxmltv: Use format "X" instead of "X/" for season/episode export.
E.Smith [Sat, 29 Sep 2018 13:03:44 +0000 (14:03 +0100)] 
xmltv: Use format "X" instead of "X/" for season/episode export.

Previously we'd output "4/ . 3/. /", but some clients can not handle
the omitted "total" number. So we now output the simpler "4 . 3 ."
instead.

6 years agoFreeBSD: Add libunwind trap support for FreeBSD only.
E.Smith [Mon, 1 Oct 2018 17:05:26 +0000 (18:05 +0100)] 
FreeBSD: Add libunwind trap support for FreeBSD only.

Although the existing backtrace works correctly on Linux, on
FreeBSD it frequently generates a backtrace with completely
wrong function names. (FreeBSD 11.2, current latest version).

For example, making htsp_build_dvrentry crash with SEGV, it
would either not generate a stacktrace or would generate a
backtrace of:
-pthread_sigmask
-pthread_getspecific
-service_remove_unseen
-htsp_get_subscription_status
-htsp_init
-tcp_server_done
-tvhthread_create.

...instead of the correct backtrace of:
-<signal>
-htsp_build_dvrentry
-htsp_method_async
-htsp_read_loop
-htsp_serve...

So on FreeBSD only, we use libunwind to generate the
backtrace and function names. We explicitly make
libunwind and libexecinfo mutually exclusive since
FreeBSD has both.

Line are logged similar to:
  CRASH: htsp_build_dvrentry+5d (ip=11f659d sp=7fffd8bc3930)

Note that it does not have line numbers since the addr2line
does not appear to work on FreeBSD (even with the original
backtrace code).

An example of the problem with the old backtrace code using
the frame from htsp_method_async from within the tvheadend
traphandler after the retrieval of the stack frames:

(gdb) print frames
$38 = {0x806473954, 0x806472eb2, 0x7ffffffff193, 0x11f1638 <htsp_method_async+1640>, 0x11fe400 <htsp_read_loop+880>, 0x11f58e6 <htsp_serve+502>, 0x11b9b11 <tcp_server_start+401>,
  0x11af45e <thread_wrapper+302>, 0x80646dc06, 0x0 <repeats 91 times>}

(gdb) print dladdr(0x11f1638, &dli)    <--- addr of htsp_method_async from frame 4.
$39 = 1  <--- success

(gdb) print dli
$40 = {dli_fname = 0x7fffffffef97 ".../build.freebsd/tvheadend", dli_fbase = 0x1021000, dli_sname = 0x1044f91 "service_remove_unseen",   <--- but wrong name
    dli_saddr = 0x11eff80 <service_remove_unseen>}   <--- and this is nearest symbol address

(gdb) print htsp_method_async+1640
    $41 = (htsmsg_t *(*)(htsp_connection_t *, htsmsg_t *)) 0x11f1638 <htsp_method_async+1640>   <---but gdb knows the original address is htsp_method_async

(gdb) print service_remove_unseen
    $42 = {void (const char *, int)} 0x11eff80 <service_remove_unseen> <--- and gdb knows sevice_remove_unseen is at the dli_saddr.

By contrast, with libunwind, we get:

(gdb) print buf
$50 = "htsp_method_async", '\000' <repeats 110 times> <--- libunwind detected correct function name

(gdb) where 10  <--- even though our signal has been delivered on its own stack
 #0  traphandler_libunwind () at src/trap.c:162
 #1  0x000000000120cf06 in traphandler (sig=11, si=0x7fffdbbdb860, UC=0x7fffdbbdb4f0) at src/trap.c:221
 #2  0x0000000806673954 in ?? ()
 #3  0x0000000000000000 in ?? ()

(gdb) print ip
$51 = 18814904

(gdb) disass 18814904  <--- and gdb knows that ip address is for the same method as libunwind detected
Dump of assembler code for function htsp_method_async:
   0x00000000011f1150 <+0>:     push   %rbp

6 years agotrap: Allow chdir /tmp even if prctl not supported.
E.Smith [Mon, 1 Oct 2018 15:57:36 +0000 (16:57 +0100)] 
trap: Allow chdir /tmp even if prctl not supported.

Even though prctl is Linux specific, other platforms allow core
dumps to occur in the cwd, so it's useful to allow the "cd /tmp"
for those platforms if the existing --dump option is specified.

6 years agoepg: Change && to ||.
E.Smith [Mon, 1 Oct 2018 15:52:51 +0000 (16:52 +0100)] 
epg: Change && to ||.

6 years agobuild: Enable hardening options for Debian build.
E.Smith [Mon, 1 Oct 2018 23:44:16 +0000 (00:44 +0100)] 
build: Enable hardening options for Debian build.

The Debian guidelines recommend enable hardening for processes
that handle untrusted data such as network listeners.

This sets various compiler flags for stack smashing and
makes some segments read-only.
https://wiki.debian.org/Hardening

6 years agobuild: Add hardening options.
E.Smith [Mon, 1 Oct 2018 17:32:26 +0000 (18:32 +0100)] 
build: Add hardening options.

Add some hardening options from:
https://wiki.debian.org/Hardening
These protect against basic buffer overruns.

Although debian/rules can have an "export DEB_BUILD_HARDENING=1",
it's useful to have these available across all builds that support
the compiler options.

6 years agochannel: Return unique list of services
E.Smith [Sun, 30 Sep 2018 17:41:02 +0000 (18:41 +0100)] 
channel: Return unique list of services

Previously if multiple services were mapped to same channel then
we would get duplicate entries in the csv, such as a string of
'DVB-T,DVB-T,DVB-S,DVB-S'.

Now we return a unique list of 'DVB-T,DVB-S'.

6 years agosubscription: try to iterate through all adapters on tuning failed error, fixes ...
Jaroslav Kysela [Mon, 1 Oct 2018 09:14:59 +0000 (11:14 +0200)] 
subscription: try to iterate through all adapters on tuning failed error, fixes #5230

6 years agoservice: add error text to the service instance log
Jaroslav Kysela [Mon, 1 Oct 2018 08:17:33 +0000 (10:17 +0200)] 
service: add error text to the service instance log

6 years agosatip: pass specinv by default for DVB-C, fixes #5231
Jaroslav Kysela [Mon, 1 Oct 2018 08:11:55 +0000 (10:11 +0200)] 
satip: pass specinv by default for DVB-C, fixes #5231

6 years agolinuxdvb satconf: fix typo
Jaroslav Kysela [Fri, 28 Sep 2018 18:37:11 +0000 (20:37 +0200)] 
linuxdvb satconf: fix typo

6 years agomakefile disclean: remove debian/.dephelper directory, fixes #5223
Jaroslav Kysela [Fri, 28 Sep 2018 08:43:14 +0000 (10:43 +0200)] 
makefile disclean: remove debian/.dephelper directory, fixes #5223

6 years agodebian: add python-requests to control file
Jaroslav Kysela [Thu, 27 Sep 2018 16:41:03 +0000 (18:41 +0200)] 
debian: add python-requests to control file

6 years agodoozer: add python-requests package as requirement
Jaroslav Kysela [Thu, 27 Sep 2018 16:39:50 +0000 (18:39 +0200)] 
doozer: add python-requests package as requirement

6 years agotry to move build caching to pcloud
Jaroslav Kysela [Thu, 27 Sep 2018 16:35:51 +0000 (18:35 +0200)] 
try to move build caching to pcloud

6 years agogcc8: Only disable warning options for gcc.
E.Smith [Wed, 26 Sep 2018 21:17:19 +0000 (22:17 +0100)] 
gcc8: Only disable warning options for gcc.

The clang compiler does not have such options.

6 years agodvr: Persist dvr entry filename upon creation.
E.Smith [Sun, 23 Sep 2018 09:13:12 +0000 (10:13 +0100)] 
dvr: Persist dvr entry filename upon creation.

Previously we added the filename to the dvr_entry at the start of the
recording, but did not persist it. This meant that if tvheadend
crashed before the programme completed then we would leave a file on
disk which is not referenced by any recording, hence will never be
deleted.

So we persist after the file is created/stream opened. This entry then
has filename, stream info, and (actual) start time, but no (actual)
stop time.

6 years agoAdd fanartImage to htsp dvrEntry messages.
E.Smith [Wed, 26 Sep 2018 12:13:49 +0000 (13:13 +0100)] 
Add fanartImage to htsp dvrEntry messages.

Currently this fanartImage is set by the user in recording
post-processing. So, a "%U" format specifier gives the user the
uuid of the recording and they can use api/idnode/{load,save}
to add fanart/image artwork from appropriate sources.
This fanart is then displayed in Kodi via pvr.hts.

6 years agopython: Add tvhmeta program for setting artwork on a dvr recording.
E.Smith [Wed, 26 Sep 2018 00:23:28 +0000 (01:23 +0100)] 
python: Add tvhmeta program for setting artwork on a dvr recording.

Very basic program for setting artwork/fanart in a dvr entry,
primarily as a proof of concept. Retrieving of artwork from an
external source is not done.

The program demonstrates retrieving existing data from the server for
the recording, updating the artwork, saving it, then re-fetching to
show the change has been applied.

The uuid can be found via the %U format specifier in the recording
post-processing commands.

Sample usage:
./tvhmeta --artwork-url http://art/img1.jpg --fanart-url http://art/img2.jpg --uuid 8fefddddaa8a57ae4335323222f8e83a1

6 years agodvr: Add new format specifier %U for uuid in postproc.
E.Smith [Tue, 25 Sep 2018 23:25:39 +0000 (00:25 +0100)] 
dvr: Add new format specifier %U for uuid in postproc.

6 years agodvr: Allow artwork to be set via idnode/save.
E.Smith [Tue, 25 Sep 2018 23:19:07 +0000 (00:19 +0100)] 
dvr: Allow artwork to be set via idnode/save.

6 years agodvr: Add fanart_image to dvr_entry.
E.Smith [Tue, 25 Sep 2018 18:44:53 +0000 (19:44 +0100)] 
dvr: Add fanart_image to dvr_entry.

6 years agoFix building with gcc 8
MastaG [Wed, 26 Sep 2018 08:25:00 +0000 (10:25 +0200)] 
Fix building with gcc 8
- Patch for nasm taken from Fedora 28
- Added CFLAGS -Wno-stringop-truncation -Wno-stringop-overflow
- fdk-aac requires -fPIC to link properly

6 years agopython: Update to be compatible with python 3.
E.Smith [Tue, 25 Sep 2018 17:07:56 +0000 (18:07 +0100)] 
python: Update to be compatible with python 3.

6 years agopython: Bump to latest HTSP_PROTO_VERSION.
E.Smith [Tue, 25 Sep 2018 12:14:14 +0000 (13:14 +0100)] 
python: Bump to latest HTSP_PROTO_VERSION.

6 years agopython: Port to Python3.
E.Smith [Tue, 25 Sep 2018 11:53:46 +0000 (12:53 +0100)] 
python: Port to Python3.

Python 3 requires "Exception as e" instead of "Exception, e". This new
syntax is compatible with Python2.6+ and was introduced in PEP-3110
(Jan 2006).

6 years agopython: Handle incorrect utf-8 decodes.
E.Smith [Tue, 25 Sep 2018 11:50:57 +0000 (12:50 +0100)] 
python: Handle incorrect utf-8 decodes.

Some broadcasts can have different charsets (such as iso-8859-1) but
we assume utf-8 unless user has set it correctly. So when decode fails
we get an exception.  So we now attempt to decode with error
replacement so user sees incorrect character.

This gives "u'Denise Th\ufffd\ufffd':" as the string returned instead
when the received name contains an é that is in iso-8859-1 instead of
utf-8.

6 years agopython: Make files python2/python3 compatible.
E.Smith [Tue, 25 Sep 2018 00:08:34 +0000 (01:08 +0100)] 
python: Make files python2/python3 compatible.

Ensure files are compatible with python2 and python3.
Main differences:
- print requires brackets
- string is bytes in python2 and unicode in python3
- need to use struct to pack/unpack binary data
- need to convert socket data to bytearray to allow data extraction

6 years agopython: Need to utf-8 decode our strings.
E.Smith [Sun, 23 Sep 2018 13:59:39 +0000 (14:59 +0100)] 
python: Need to utf-8 decode our strings.

6 years agoui: Add Next/Prev buttons to filter epg channels.
E.Smith [Sat, 22 Sep 2018 17:19:15 +0000 (18:19 +0100)] 
ui: Add Next/Prev buttons to filter epg channels.

This provides a simple way to provide a "now & next" view in the
EPG.

6 years agoxmltv: Output genres to exported xmltv. (#4266)
E.Smith [Sat, 22 Sep 2018 12:04:14 +0000 (13:04 +0100)] 
xmltv: Output genres to exported xmltv. (#4266)

Based on patch by Iván M. A. posted in issue #4266.

Issue: #4266

6 years agoxmltv: Add episode number information to exported xmltv guide. (#4266)
E.Smith [Sat, 22 Sep 2018 11:51:35 +0000 (12:51 +0100)] 
xmltv: Add episode number information to exported xmltv guide. (#4266)

This assumes that the imported tv guide has correct populated
the fields, rather than using an arbitrary scheme.

Issue: #4266

6 years agodvr: Change time(NULL) to gclk for consistency.
E.Smith [Fri, 21 Sep 2018 23:29:05 +0000 (00:29 +0100)] 
dvr: Change time(NULL) to gclk for consistency.

6 years agodvr: Fake create timestamp for old dvr entries.
E.Smith [Fri, 21 Sep 2018 17:23:31 +0000 (18:23 +0100)] 
dvr: Fake create timestamp for old dvr entries.

Old dvr_entry records (tvh4.2) do not have a create timestamp, so we
fake one based on the start time of the recording. This will allow
us to send the timestamp to the UI in the future knowing that it
will give consistent results for user sorting since it may be
useful for user to sort upcoming recordings by when they were
created (i.e., scheduled).

6 years agodvr: Add create time to dvr_entry and use it.
E.Smith [Fri, 21 Sep 2018 17:19:28 +0000 (18:19 +0100)] 
dvr: Add create time to dvr_entry and use it.

We have to ensure we don't async reschedule if we have only just been
created then destroyed, otherwise we can enter a loop where every few
minutes the autorec is checked, realizes it can schedule against a
current broadcast, create the dvr_entry, then find it's a duplicate
of an existing recording/dvr_entry, so destroy the new entry, which
then causes the loop to start again later.

So, if a dvr_entry is created and destroy quickly then we avoid
the async reschedule. This breaks the loop since we no longer
trigger a second async reschedule.

6 years agodvr: Fix logging of duplicates (needs different buffer for second uuid).
E.Smith [Fri, 21 Sep 2018 23:13:10 +0000 (00:13 +0100)] 
dvr: Fix logging of duplicates (needs different buffer for second uuid).

6 years agodvr: Mark dvr entries as duplicates early to avoid logging.
E.Smith [Fri, 21 Sep 2018 10:01:09 +0000 (11:01 +0100)] 
dvr: Mark dvr entries as duplicates early to avoid logging.

When autorecs are modified, we can do an async reschedule to ensure
recordings are correctly updated in case the autorecs interact.
However this can cause excessve logging in some circumstances.

Effectively, if there is a recording on disk and the autorec matches
the same recording in the future then the dvr_entry_create_by_autorec
can exit the "bcast" loop with no match at all (since entry on disk
frequently, but not always, has a null de_bcast).

This then means we create the dvr_entry, and, if the programme is
broadcasting now, then we immediately schedule a timer to start the
recording and log an info to say scheduled. We then immediately cancel
the recording, delete the dvr_entry, which then causes us do an async
schedule. But this async schedule realizes the autorec matches the
broadcast, so we go through the process again.

So, first stage is to delete the duplicate before we do any logging.
Unfortunately, due to the way dup matching works (only dvr entry vs
dvr entry, not vs bcast), we have to create a dvr_entry to do the
matching.

We also need to check duplicate event after it is inserted in to
de_global_link (to avoid assertion fault).

6 years agodvr: Ensure non-scheduled dvr_entry is always "best".
E.Smith [Thu, 20 Sep 2018 22:08:06 +0000 (23:08 +0100)] 
dvr:  Ensure non-scheduled dvr_entry is always "best".

Previously in dvr_is_better_recording_timeslot we would sanity check
that the old channel and broadcast exists before further checks.

However, it probably makes sense to ensure that a non-scheduled
dvr_entry (such as already recorded) is always the better match even
though it might not be linked to any broadcasts.

6 years agowebui: Deleted name text from previous / next buttons, hide "Record program" button...
pablozg [Sat, 22 Sep 2018 18:37:39 +0000 (20:37 +0200)] 
webui: Deleted name text from previous / next buttons, hide "Record program" button when the event is scheduled or recording

6 years agowebui: Add Previous button to epg and dvr, fix minor issues (If you select the first...
pablozg [Fri, 21 Sep 2018 19:34:28 +0000 (21:34 +0200)] 
webui: Add Previous button to epg and dvr, fix minor issues (If you select the first/last row the previous/next are active when the popup window is opened first time)

6 years agodvr: Add minseason and maxseason to autorec (#5176)
E.Smith [Thu, 20 Sep 2018 19:00:37 +0000 (20:00 +0100)] 
dvr: Add minseason and maxseason to autorec (#5176)

This allows users to specify specific seasons to record,
it has to be >= min and <= max.

For example min=5,max=5 will record only season 5.

Setting min=5,max=0 will record everything on season 5 or
later, which is useful if you've already seen seasons 1--4.

This can then be combined with the normal fulltext regex
such as "Simpsons"+minseason=12.

Fixes: #5176
6 years agoeit config: fix Bulsatcom 39E, issue #5219
Jaroslav Kysela [Tue, 25 Sep 2018 06:16:50 +0000 (08:16 +0200)] 
eit config: fix Bulsatcom 39E, issue #5219

6 years agobintray.py: handle 409 error as warning for upload (fix jessie builds)
Jaroslav Kysela [Thu, 20 Sep 2018 15:20:20 +0000 (17:20 +0200)] 
bintray.py: handle 409 error as warning for upload (fix jessie builds)

6 years agoepg.js: fix indent
Jaroslav Kysela [Thu, 20 Sep 2018 15:02:12 +0000 (17:02 +0200)] 
epg.js: fix indent

6 years agohttp: add http_username() and use it in webui, fixes #5214, fixes #5215
Jaroslav Kysela [Thu, 20 Sep 2018 14:49:05 +0000 (16:49 +0200)] 
http: add http_username() and use it in webui, fixes #5214, fixes #5215

6 years agoparser hevc: fix return value from hevc_decode_sps(), fixes #5204
Jaroslav Kysela [Thu, 20 Sep 2018 13:51:47 +0000 (15:51 +0200)] 
parser hevc: fix return value from hevc_decode_sps(), fixes #5204

6 years agoui: Add channel name to dvr dialog.
E.Smith [Thu, 20 Sep 2018 13:10:35 +0000 (14:10 +0100)] 
ui: Add channel name to dvr dialog.

6 years agoui: Include channel name on epg broadcast details dialog.
E.Smith [Thu, 20 Sep 2018 09:33:33 +0000 (10:33 +0100)] 
ui: Include channel name on epg broadcast details dialog.

6 years agoui: Make epg dialog slightly wider.
E.Smith [Thu, 20 Sep 2018 01:17:25 +0000 (02:17 +0100)] 
ui: Make epg dialog slightly wider.

This is to accomodate the "next" button which was slightly truncated.

6 years agoui: Add 'next' button to DVR broadcast details.
E.Smith [Thu, 20 Sep 2018 00:57:34 +0000 (01:57 +0100)] 
ui: Add 'next' button to DVR broadcast details.

6 years agoui: Add 'next' button to EPG broadcast details.
E.Smith [Thu, 20 Sep 2018 00:05:44 +0000 (01:05 +0100)] 
ui: Add 'next' button to EPG broadcast details.

6 years agotranscode: fix hwaccels_decode_setup_context() for ffmpeg 4.0.2, fixes #5202
Jaroslav Kysela [Thu, 20 Sep 2018 13:39:37 +0000 (15:39 +0200)] 
transcode: fix hwaccels_decode_setup_context() for ffmpeg 4.0.2, fixes #5202

6 years agomain: set default user/group only when specified for non-root users, fixes #5213
Jaroslav Kysela [Thu, 20 Sep 2018 12:46:42 +0000 (14:46 +0200)] 
main: set default user/group only when specified for non-root users, fixes #5213

6 years agoFreeBSD: Check for fdatasync system call since it is supported on FreeBSD 11.1 and...
E.Smith [Mon, 17 Sep 2018 12:10:27 +0000 (13:10 +0100)] 
FreeBSD: Check for fdatasync system call since it is supported on FreeBSD 11.1 and later.

6 years agoFreeBSD: Requires libinotify for inotify support.
E.Smith [Wed, 19 Sep 2018 16:16:22 +0000 (17:16 +0100)] 
FreeBSD: Requires libinotify for inotify support.

6 years agoFreeBSD: Support different stat format in Makefile.webui.
E.Smith [Wed, 19 Sep 2018 15:57:24 +0000 (16:57 +0100)] 
FreeBSD: Support different stat format in Makefile.webui.

The stat program on FreeBSD requires different arguments to GNU
stat. In the past, this is done by the ports patching the Makefile
post-extract.

Instead, we'll configure the program's arguments based on platform.
We'll also use %z (filesize) instead of the port's %b (file blocks) so
we generate equivalent output to the Linux version..

6 years agoui: Add grouping format specifier for dates.
E.Smith [Wed, 19 Sep 2018 18:43:05 +0000 (19:43 +0100)] 
ui: Add grouping format specifier for dates.

When grouping recordings by datetime, each group tends to only
have one recording since time field is unique.

So, when grouping, we only use the date-portion and not the time
portion in order to create the group.

6 years agodvr: Async reschedule autorecs whenever a log entry is destroyed.
E.Smith [Wed, 19 Sep 2018 13:14:37 +0000 (14:14 +0100)] 
dvr: Async reschedule autorecs whenever a log entry is destroyed.

Destroying a log entry can cause another autorec rule to be valid and
need scheduling.

For example, if you have two autorec rules that match the same
programme then only one autorec rule will schedule the programme
and the other autorec will see the programme is scheduled and do
nothing.

However, if you then disable the first autorec rule, then we need the
second autorec rule to re-arm the timer for that programme since it
still matches it.

This resheduling is done async after a delay. This avoids large
changes causing constant rescheduling. So, if user deletes a thousand
log files, we do not want a thousand reschedules to occur. Instead,
we dispatch a single timer after the last update has occurred.

6 years agodvr: Add minyear/maxyear to autorec.
E.Smith [Tue, 18 Sep 2018 22:34:04 +0000 (23:34 +0100)] 
dvr: Add minyear/maxyear to autorec.

My listings provider thinks every old film is worth 5/5, so we add
minyear to allow an autorec of "good films" to filter out old
films. Also add corresponding maxyear for people who think the
opposite and only want old programmes recorded.

6 years agoui: Fix createToolbar2 issues on some recent browsers.
E.Smith [Tue, 18 Sep 2018 17:25:15 +0000 (18:25 +0100)] 
ui: Fix createToolbar2 issues on some recent browsers.

Recent versions of Firefox had an exception saying the createToolbar2
function does not exist when it was called to create the secondary
toolbar that is used for category searching in the EPG.

I believe this was due to scoping issues, so rescoped the variables.
This worked, but although the toolbar was added it was not displayed
on Firefox.  So changed the way the toolbar is added and it now works
on Firefox and Safari.

6 years agoFix a few "old-style-declaration" warnings in gcc.
E.Smith [Mon, 17 Sep 2018 16:17:24 +0000 (17:17 +0100)] 
Fix a few "old-style-declaration" warnings in gcc.

Mainly needing to put "static" first and "__thread" earlier.

6 years agoRemove clang no-incompatible-pointer-types flag.
E.Smith [Mon, 17 Sep 2018 15:26:11 +0000 (16:26 +0100)] 
Remove clang no-incompatible-pointer-types flag.

The official build runs with gcc which checks for some incompatible
pointers for assignment of const to non-const, whereas clang
build disabled such warnings.

So, update to re-enable the check on clang and fixup couple of
locations that failed.

6 years agoUpgrade to libhdhomerun_20180817
Alex Mekkering [Mon, 17 Sep 2018 12:26:02 +0000 (14:26 +0200)] 
Upgrade to libhdhomerun_20180817

6 years agodvr: Avoid recording partial programme if autorec created mid-programme.
E.Smith [Wed, 19 Sep 2018 14:22:31 +0000 (15:22 +0100)] 
dvr: Avoid recording partial programme if autorec created mid-programme.

When creating an autorec, it can match a programme that has already
started. If so, it's better to prefer the later recording so you get a
full recording.

So, if it's 09:10 and there is an hour long programme that started at
09:00 but is repeated at 10:00, then let's record at 10:00 instead and
get the full hour, instead of at 09:10 and only get 50 minutes.

6 years agodvr: Only do time slot scheduling in the scheduled state.
E.Smith [Mon, 17 Sep 2018 19:41:52 +0000 (20:41 +0100)] 
dvr: Only do time slot scheduling in the scheduled state.

We do not want a currently recording programme to be cancelled
due to a better channel being found. For example recording a SD
channel and then the OTA updates and finds an HD version of the
show at the same time and so tries to schedule that HD version
instead.

6 years agodvr: Make timeslot scheduling configurable.
E.Smith [Mon, 17 Sep 2018 19:10:01 +0000 (20:10 +0100)] 
dvr: Make timeslot scheduling configurable.

The configuration to enable finding a 'best' time slot for
recording is now configurable as an advanced option in
Configuration->Recording->DVR Profiles, with the default being
disabled.

When toggled, the autorec rules themselves need to be manually
toggled to cause them to reschedule.

6 years agodvr: Prefer earlier/better schedule events for autorecs.
E.Smith [Fri, 14 Sep 2018 20:48:27 +0000 (21:48 +0100)] 
dvr: Prefer earlier/better schedule events for autorecs.

We now try to avoid scheduling on a timeshift channel X+1 if we have
the same programme on channel X. If a programme is on at the same time
on multiple channels then we will try and schedule on a better
channel, such as one with more services (such as mixed DVB-T/DVB-S) to
allow service switching fallback on tuner conflict.

An example of the new log entry:

dvr: Autorecord "movie misc" Replacing existing dvr recording entry of
"The Departed" on ITV4+1 @ start 2018-09-20;00:35:00(+0100) with
recording on ITV4 @ start 2018-09-19;23:35:00(+0100)

Context for the change is below:

In some areas, a broadcast programme might be shown at the same time
on multiple channels, or at different times on various timeshift,
repeat, or regional channels.

An example of this is the Astra 28.2E satellite where BBC1 has
multiple (26) regional channels that (mostly) show the same
programmes, but sometimes a region might have a +30m or +1h timeshift
for a single programme.

Similarly the commercial channel "Channel 4" has "Channel 4+1", and a
repeat channel of "4Seven" and various associated HD channels. Homes
receive all these regional channels via one dish and are required for
BBC to manually switch between HD/SD versions for local interest
programmes such as regional news.

Previously, when setting an autorec, the item chosen to record was
based on the first broadcast that matched the criteria (such as film
title). However, this broadcast is not necessarily the earliest or the
best.

So this meant that with timeshift channels, a programme could be
scheduled on X+1 instead of X, so record at 21:00 instead of 20:00.

On other setups, the event might correctly record at 20:00, since
scheduling depended on internal structures and which broadcasts are
found first (such as via OTA updates).

Similarly, in countries where the same programme can be received but
on different channels in different qualities, it was possible to
schedule on a non-HD channel, even though the user wanted HD purely
because the non-HD broadcast was found first and the channels were not
merged.

So we now check our recording list to determine if the event is better
than the already scheduled event. If so, the existing recording event
is replaced.

For our criteria, "better" is defined in the function
dvr_is_better_recording_timeslot, and has a variety of criteria such
as "matches service filter", "earlier start", and "has more services"
(so more likely to be able to failover if there is a problem).  If
other criteria are equal, then we use the channel with the lowest
channel number since Europe EPG has lower channel numbers for
'better' channels.

When determining if an autorec can be scheduled in a better timeslot,
we must only check against other autorecs and not a manually scheduled
entry since the user might schedule a recording at a later date
specifically to avoid conflicts.

This is achieved by replacing the old scheduled recording with a new
scheduled recording. A new log message indicates when this occurs.

Performance: Initial testing suggests that this rescheduling can occur
between zero and two times per programme (when there is an initial
schedule on +1, then a reschedule on non-timeshift SD, then final
schedule on HD). However, it should not add significant runtime
overhead for most people.

6 years agoChange search icons to a combobox and fix search string in Thedbtv site
pablozg [Thu, 13 Sep 2018 21:45:58 +0000 (23:45 +0200)] 
Change search icons to a combobox and fix search string in Thedbtv site

6 years agodescrambler: fix wrongly added lock in descrambler_notify_nokey(), fixes #5092
Jaroslav Kysela [Fri, 14 Sep 2018 08:37:32 +0000 (10:37 +0200)] 
descrambler: fix wrongly added lock in descrambler_notify_nokey(), fixes #5092

6 years agodescrambler: optimize descrambler_notify_deliver()
Jaroslav Kysela [Fri, 14 Sep 2018 08:29:47 +0000 (10:29 +0200)] 
descrambler: optimize descrambler_notify_deliver()

6 years agotprofile: fix tprofile_start1 when id==NULL
Jaroslav Kysela [Fri, 14 Sep 2018 08:27:12 +0000 (10:27 +0200)] 
tprofile: fix tprofile_start1 when id==NULL

6 years agoepggrab: eit - massive fixes for the previous commit 1134/head
Jaroslav Kysela [Thu, 13 Sep 2018 15:40:34 +0000 (17:40 +0200)] 
epggrab: eit - massive fixes for the previous commit

6 years agoepggrab: eit - reimplement the EIT grabber selection
Jaroslav Kysela [Thu, 13 Sep 2018 15:04:57 +0000 (17:04 +0200)] 
epggrab: eit - reimplement the EIT grabber selection

6 years agotvhcsa: optimize offset check for incomplete packet in CSA descramble
Jaroslav Kysela [Thu, 13 Sep 2018 13:10:11 +0000 (15:10 +0200)] 
tvhcsa: optimize offset check for incomplete packet in CSA descramble

6 years agoupdate valgrind.supp
Jaroslav Kysela [Thu, 13 Sep 2018 07:01:35 +0000 (09:01 +0200)] 
update valgrind.supp

6 years agodescrambler: fix leak in descrambler_notify_deliver()
Jaroslav Kysela [Thu, 13 Sep 2018 06:41:32 +0000 (08:41 +0200)] 
descrambler: fix leak in descrambler_notify_deliver()

6 years agotvhcsa: add invalid offset check for CSA descramble
Jaroslav Kysela [Thu, 13 Sep 2018 06:41:17 +0000 (08:41 +0200)] 
tvhcsa: add invalid offset check for CSA descramble

6 years agoxmltv: fix the desc import, fixes #5206
Jaroslav Kysela [Wed, 12 Sep 2018 19:45:36 +0000 (21:45 +0200)] 
xmltv: fix the desc import, fixes #5206

6 years agomkv: set keyframe flag for all audio tracks, fixes #5151
Jaroslav Kysela [Wed, 12 Sep 2018 10:45:29 +0000 (12:45 +0200)] 
mkv: set keyframe flag for all audio tracks, fixes #5151

6 years agoprofile: improve timeout description
Jaroslav Kysela [Wed, 12 Sep 2018 08:36:26 +0000 (10:36 +0200)] 
profile: improve timeout description

6 years agodescrambler: try to fix crash in descrambler_service_stop(), issue #5092
Jaroslav Kysela [Wed, 12 Sep 2018 08:02:49 +0000 (10:02 +0200)] 
descrambler: try to fix crash in descrambler_service_stop(), issue #5092

6 years agoparsers: hevc - wait for metadata completion
Jaroslav Kysela [Wed, 12 Sep 2018 07:59:01 +0000 (09:59 +0200)] 
parsers: hevc - wait for metadata completion

6 years agoparser: h264 - accept PPS metadata only when SPS is correct, fixes #5192
Jaroslav Kysela [Wed, 12 Sep 2018 07:49:01 +0000 (09:49 +0200)] 
parser: h264 - accept PPS metadata only when SPS is correct, fixes #5192

6 years agoMakefile.ffmpeg: add FFNVCODEC files to library
Jaroslav Kysela [Wed, 12 Sep 2018 07:26:19 +0000 (09:26 +0200)] 
Makefile.ffmpeg: add FFNVCODEC files to library

6 years agolinuxdvb: add 'Higher LNB voltage' option to the satconf, fixes #5199
Jaroslav Kysela [Wed, 12 Sep 2018 06:59:29 +0000 (08:59 +0200)] 
linuxdvb: add 'Higher LNB voltage' option to the satconf, fixes #5199

6 years agoxmltv: another fix for xmltv_appendit(), fixes #5194
Jaroslav Kysela [Wed, 12 Sep 2018 06:44:22 +0000 (08:44 +0200)] 
xmltv: another fix for xmltv_appendit(), fixes #5194

6 years agoxmltv: really fix the xmltv_appendit(), fixes #5194
Jaroslav Kysela [Tue, 11 Sep 2018 17:43:03 +0000 (19:43 +0200)] 
xmltv: really fix the xmltv_appendit(), fixes #5194

6 years agofix for the previous commit
Jaroslav Kysela [Tue, 11 Sep 2018 17:07:26 +0000 (19:07 +0200)] 
fix for the previous commit

6 years agoMakefile.ffmpeg: fix the build without nvenc
Jaroslav Kysela [Tue, 11 Sep 2018 16:52:14 +0000 (18:52 +0200)] 
Makefile.ffmpeg: fix the build without nvenc

6 years agoMakefile.ffmpeg: upgrade to ffmpeg 4.0.2
Jaroslav Kysela [Tue, 11 Sep 2018 11:30:22 +0000 (13:30 +0200)] 
Makefile.ffmpeg: upgrade to ffmpeg 4.0.2

6 years agodescrambler: fix the double free
Jaroslav Kysela [Fri, 7 Sep 2018 17:57:16 +0000 (19:57 +0200)] 
descrambler: fix the double free

6 years agoxmltv: fix the previous commit, fixes #5167
Jaroslav Kysela [Fri, 7 Sep 2018 13:15:51 +0000 (15:15 +0200)] 
xmltv: fix the previous commit, fixes #5167

6 years agoxmltv: fix xmltv_appendit() - NULL desc, fixes #5167
Jaroslav Kysela [Fri, 7 Sep 2018 13:11:33 +0000 (15:11 +0200)] 
xmltv: fix xmltv_appendit() - NULL desc, fixes #5167

6 years agoBugFix: SATIP_SETUP_SPECINV0 and SATIP_SETUP_SPECINV1 has the same definition
mw@hesotech.de [Fri, 7 Sep 2018 07:17:36 +0000 (09:17 +0200)] 
BugFix: SATIP_SETUP_SPECINV0 and SATIP_SETUP_SPECINV1 has the same definition

6 years agoxmltv: rewrite APPENDIT() macro to xmltv_appedit() fcn
Jaroslav Kysela [Fri, 7 Sep 2018 08:06:00 +0000 (10:06 +0200)] 
xmltv: rewrite APPENDIT() macro to xmltv_appedit() fcn

6 years agodvb support: add more comments to charsets in dvb_get_string()
Jaroslav Kysela [Fri, 7 Sep 2018 07:48:35 +0000 (09:48 +0200)] 
dvb support: add more comments to charsets in dvb_get_string()

6 years agolinuxdvb ca: another fix for the PIN enquiry, fixes #5187, fixes #5191
Jaroslav Kysela [Thu, 6 Sep 2018 14:26:59 +0000 (16:26 +0200)] 
linuxdvb ca: another fix for the PIN enquiry, fixes #5187, fixes #5191

6 years agofreesat huffman: reduce the number of includes
Jaroslav Kysela [Wed, 5 Sep 2018 09:11:58 +0000 (11:11 +0200)] 
freesat huffman: reduce the number of includes

6 years agofix regex_match_substring (one characeter strip), fixes #5172
Jaroslav Kysela [Tue, 4 Sep 2018 11:15:58 +0000 (13:15 +0200)] 
fix regex_match_substring (one characeter strip), fixes #5172