Compare commits

..

1815 commits

Author SHA1 Message Date
b82ae7239a http: add interpretation of "X-Forwarded-For" header
This allows to use the builtin ACL when serving TVH behind a SSL reverse
proxy.
2015-05-04 00:32:49 +02:00
Jaroslav Kysela
b6095136b3 config: fix the global config variable initialization on error, fixes #2816 2015-05-03 20:01:06 +02:00
Jaroslav Kysela
fff2c36063 config: add more null path checks 2015-05-03 19:57:51 +02:00
Nita Vesa
130f413ed8 More elegant solution by perexg 2015-05-02 20:02:39 +02:00
Nita Vesa
eb8aa7f00d Add workarounds for AVM's FRITZ\!-devices. 2015-05-02 20:02:39 +02:00
Damjan Marion
70bd3350b1 linuxdvb_ca: add gui and configurable options 2015-05-02 18:39:43 +02:00
Jaroslav Kysela
92736802f6 deferred_unlink: add (fix) the directory tree removal, fixes #2814 2015-05-02 18:38:42 +02:00
Jaroslav Kysela
8d8374b430 subscriptions: added NULL check to subscription_unsubscribe() 2015-05-02 12:01:20 +02:00
Jaroslav Kysela
41bb5cdd99 deferred_unlink() - fix wrong allocation, fixes #2814 2015-05-02 11:56:11 +02:00
Jaroslav Kysela
8dbc38df4a htsp: add subtitle to the epg event, fixes #2785 2015-05-01 22:06:30 +02:00
Jaroslav Kysela
fd16a1e3ef linuxdvb & satip: fix pid subscription locking 2015-05-01 22:03:53 +02:00
Jaroslav Kysela
a00a3da84d tsfix: do not use wrong DTS as the reference clock, fixes #2731, fixes #2754 2015-05-01 18:49:31 +02:00
Jaroslav Kysela
5971f7b84b DVR: Remove unused 'Episode Duplicate Detect' option in DVR config, fixes #2715 2015-05-01 18:23:24 +02:00
Jaroslav Kysela
e0630fa458 main: add -S or --nosyslog option to disable completely syslog logging, fixes #2787 2015-05-01 18:14:03 +02:00
Jaroslav Kysela
1c10cd6fe9 IPTV: add rtsp:// and rtsps:// support 2015-05-01 16:58:39 +02:00
Jaroslav Kysela
4d7d61e39a doc: updates for XBMC->Kodi, Showtime->Movian changes 2015-04-30 17:01:41 +02:00
Jaroslav Kysela
02948826e9 time update - make it work again using TDT/TOT tables, fixes #2776 2015-04-30 11:37:26 +02:00
Jaroslav Kysela
86b3650e42 subscriptions: fix possible NULL dereference 2015-04-30 10:48:09 +02:00
Jaroslav Kysela
01406e0e5f htsp: add dataSize field to the dvrentry msg 2015-04-30 09:34:45 +02:00
Jaroslav Kysela
cb6e8aed90 dvr: de_last_error cleanpus 2015-04-30 09:25:24 +02:00
Nick Burrett
2bcf09f2ab Fix crash when trying to configure adapters that are already in use.
If another application has an adapter open, then la==NULL.  Skip the
adapter so that another can be configured.
2015-04-29 17:35:37 +02:00
Jaroslav Kysela
09265f0205 profile: add 'continue on access error', fix 'force priority' 2015-04-29 16:08:22 +02:00
Jaroslav Kysela
ed3a02ec14 descrambler: mark ECM late msg as error 2015-04-29 15:27:39 +02:00
Damjan Marion
8ae5b7fce4 linuxdvb_ca: check for CAIDs on the ES level, fixes #2794 2015-04-29 08:40:14 +02:00
Jaroslav Kysela
aaaa7a1cfd SAT>IP Client: fix possible NULL dereference 2015-04-28 22:29:57 +02:00
Jaroslav Kysela
bd219954c1 linuxdvb: fix for the previous patch (fixed bad macro), fixes #2807 2015-04-28 15:08:29 +02:00
Jaroslav Kysela
97229aa881 linuxdvb: use DTV_LNA only when set, fixes #2807 2015-04-28 14:49:52 +02:00
Jaroslav Kysela
5ba809b6bb linuxdvb: rewrite PID subscription (limit used PID at once) 2015-04-28 14:48:32 +02:00
Jaroslav Kysela
c79a41dbb2 SAT>IP Client: fix close_pid callback 2015-04-28 09:07:29 +02:00
Damjan Marion
cb98d6a94d linuxdvb_ca: add basic mmi suport and some code cleanup
Currently it just provides log of messages received by CAM and
exits menu.
2015-04-27 20:55:07 +02:00
Jaroslav Kysela
08c4c75364 SAT>IP Client: add configurable grace timeout 2015-04-27 20:54:33 +02:00
Jaroslav Kysela
2623cc52d9 mpegts: implemented weighted PID subscriptions (sequential PMT scan) 2015-04-27 19:57:14 +02:00
Jaroslav Kysela
4fce256468 mpegts table: added MT_ONESHOT, change pmt scan weight 2015-04-27 19:57:13 +02:00
Jaroslav Kysela
db3101400d mpegts: add weight to the pid subscription 2015-04-27 19:56:58 +02:00
Jaroslav Kysela
3049486768 linuxdvb: Added LNA settings to DVB-T for DVBAPI v5.9+, fixes #2784 2015-04-24 22:05:27 +02:00
Jaroslav Kysela
d1e6a61a29 subscriptions: reschedule - add warning when a service instance goes to the bad state 2015-04-24 21:41:56 +02:00
Jaroslav Kysela
2f2d7cef42 mpegts_mux_unsubscribe_by_name: fixed nasty bug - used another link ptr 2015-04-24 21:40:06 +02:00
Jaroslav Kysela
3f4c630ecc mpegts input: move active list of services from input to mux, fixes #2801
In last changes, the mux filter was removed from the main TS packet
decoder loop. Also, it is not good to have this filter in this
"exponed" function. The solution is quite easy - move the active list
of services from the input object to the mux object. It seems that
this change reduces the code (mux filters) all around.
2015-04-24 20:27:00 +02:00
Jaroslav Kysela
0e4a41168f main: init dispatch_clock early 2015-04-24 19:41:38 +02:00
Jaroslav Kysela
dc311fd3f8 gtimer check fix - wrong fcn redirects 2015-04-24 19:41:27 +02:00
Jaroslav Kysela
209d02282b gtimer check: little cleanup (show the previous caller id) 2015-04-24 17:12:16 +02:00
Jaroslav Kysela
03f044a72b subscriptions: fix the weight init issue caused by last commits 2015-04-24 16:48:20 +02:00
Jaroslav Kysela
4112e4b30b added gtimer check framework 2015-04-24 16:46:53 +02:00
Jaroslav Kysela
79e5ff8d4b remove unused ffmpeg_lock 2015-04-24 15:40:57 +02:00
Jaroslav Kysela
99920b83e3 epgdb: deferred write 2015-04-24 15:38:17 +02:00
Jaroslav Kysela
d4f1c108fe spawn: another reap fix (zero return code), fixes #2800 2015-04-24 14:41:24 +02:00
Jaroslav Kysela
536736daaa tcp: a little optimization in tcp_server_done() and more debug msgs 2015-04-24 14:34:24 +02:00
Jaroslav Kysela
2b00b88784 implemented deferred_unlink() for DVR 2015-04-24 14:11:01 +02:00
Jaroslav Kysela
c4d8b7a3fe added tasklets 2015-04-24 13:29:25 +02:00
Jaroslav Kysela
c649ef2bdf profile: add priority settings, fixes #2783 2015-04-24 12:57:04 +02:00
Jaroslav Kysela
84ee61634d muxer: change mime types for mpegts stream to audio|video/mp2t, fixes #2775
see: http://www.w3.org/2013/12/byte-stream-format-registry/
2015-04-23 21:16:42 +02:00
Jaroslav Kysela
3e56c175e3 mpegts: fix linked inputs (abort), fixes #2791 2015-04-23 20:47:40 +02:00
Jaroslav Kysela
706beee703 SAT>IP Client: do not save config in the load procedure 2015-04-23 16:53:31 +02:00
Jaroslav Kysela
8cb63d919b config: do not take ECHILD as error from spawn_reap() 2015-04-23 16:40:51 +02:00
Jaroslav Kysela
98464be592 spawn: fix spawn_reaper - handle errors 2015-04-23 14:47:16 +02:00
Jaroslav Kysela
926e04eacc spawn_reap: wait for specified pid, check correctly return codes from waitpid(), fixes #2766 2015-04-23 09:03:59 +02:00
Jaroslav Kysela
9d042c2418 opentv: process all channels 2015-04-22 21:30:22 +02:00
Jaroslav Kysela
9270518314 EIT: process all channels, fixes #2764, fixes #2743 2015-04-22 21:19:29 +02:00
Jaroslav Kysela
d4160380a2 iptv: rewrite iptv_input_is_free() - use per IPTV network limits, fixes #2780 2015-04-22 17:26:36 +02:00
Jaroslav Kysela
6a110d871b mpegts: add mpegts_mux_t arg to mi_get_weight() callback 2015-04-22 17:22:10 +02:00
Jaroslav Kysela
89bb07fe82 iptv_input_get_weight: remove unused code 2015-04-22 17:18:21 +02:00
Jaroslav Kysela
f29a293e37 mpegts: remove mi_is_free() callback, it is no longer used 2015-04-22 16:56:35 +02:00
Jaroslav Kysela
a1844b88af subscriptions: fix source_info leak in subscription_show_info() 2015-04-22 16:13:30 +02:00
Jaroslav Kysela
91ad9832ff another satpos fix for source_info_t 2015-04-22 15:37:24 +02:00
Jaroslav Kysela
ef7946f5ee Fix memory leak for struct source_info (si_satpos) 2015-04-22 14:45:20 +02:00
Jaroslav Kysela
bfec4e7f9c EIT: Fix possible wrong memory access in _eit_process_event() 2015-04-22 14:42:23 +02:00
Glenn-1990
7749976fed bump version to 20 2015-04-22 10:21:21 +02:00
Glenn-1990
60338204e1 duplicate detect for autorecs 2015-04-22 10:21:21 +02:00
Jaroslav Kysela
1b2e2c8482 SAT>IP Client: fix the slave tuners (wrong satellite position check) 2015-04-22 09:59:23 +02:00
Mariusz Bialonczyk
a7cb06cd6b another typo fix in dvb_mux_conf_str_dvbs() 2015-04-21 14:19:38 +02:00
Jaroslav Kysela
0af90088e3 dvb_mux_create0 - fix initial orbital position handling 2015-04-19 21:10:32 +02:00
Jaroslav Kysela
1ca7ed5e89 fix typo in dvb_mux_conf_str_dvbs() 2015-04-19 20:08:33 +02:00
Jaroslav Kysela
6b472cd999 linuxdvb_ca: coding style update, don't call pthread_join when thread is off 2015-04-17 16:53:59 +02:00
Jaroslav Kysela
caa6f8ed26 mpegts network: show the mux parameter changes more nicely 2015-04-17 11:15:26 +02:00
Jaroslav Kysela
bda5d8ce25 stream status: add possibility to clear statistics, introduce tvh_input_instance_t 2015-04-17 11:11:00 +02:00
Jaroslav Kysela
abb14095cb libdvben50221 - fix detection 2015-04-16 08:49:47 +02:00
Damjan Marion
f3582868d9 Introduce DVB CA support 2015-04-16 08:29:15 +02:00
Jaroslav Kysela
b1b9b42685 mpegts service: fix compilation when \!ENABLE_MPEGTS_DVB 2015-04-16 08:26:11 +02:00
Jaroslav Kysela
4e1e909946 Makefile.ffmpeg: replace make with \$(MAKE) 2015-04-15 21:45:30 +02:00
Kai Sommerfeld
ce3a9a1347 Fix dvr_autorec_create_htsp to actually use "fulltext" parameter and not to always set fulltext to "1". 2015-04-15 18:23:05 +02:00
Jaroslav Kysela
e78b3f4e27 Makefile.ffmpeg: upgrade to ffmpeg 2.6.2 2015-04-15 18:22:51 +02:00
stbenz
01a095ceb5 transcoding: set AVFrame format, width and height, fixes #2763
ffmpeg 2.6 checks, if format, width and height is set in avcodec_encode_video2 and generates a warning, if they aren't set.
2015-04-15 18:17:39 +02:00
Ullrich Kossow
f2af011618 Corrected some unsigned int comparisons. 2015-04-15 18:16:27 +02:00
Ullrich Kossow
e3debcd435 Use llabs instead of abs on 64bit integers. 2015-04-15 18:16:27 +02:00
Ullrich Kossow
310a77ce93 Fixed include guard of src/satip/server.h 2015-04-15 18:16:27 +02:00
Adrian Strilchuk
203b48ed94 hdhomerun: Upgrade libhdhomerun to 20150406 2015-04-15 18:15:40 +02:00
Jaroslav Kysela
903ca33ed2 revert previous change 2015-04-15 18:15:07 +02:00
Glenn-1990
2221286368 add satpos and subsription status 2015-04-15 18:14:16 +02:00
Jaroslav Kysela
04e5a9d26f mpegts: warn when the mux changed parameters 2015-04-15 18:12:43 +02:00
Jaroslav Kysela
c8ae8a9cb0 SAT>IP Server: parse fec also for DVB-C 2015-04-14 22:07:34 +02:00
Jaroslav Kysela
daaebf916a SAT>IP client: add RTCP workaround for broken servers (minisatip) 2015-04-13 20:11:19 +02:00
Jaroslav Kysela
6751ade06e linuxdvb: notify user that tuners with same types cannot be used simultaneously when they're assigned to one adapter 2015-04-12 22:29:05 +02:00
Sam Stenvall
14f03b8efb avoid leaving dangling children by killing spawned processes recursively 2015-04-09 15:14:06 +02:00
Jaroslav Kysela
02427fe00c initialize PKG_CONFIG varible if empty, fixes previous commit 2015-04-09 12:05:39 +02:00
Niels Ole Salscheider
098213f545 Use $PKG_CONFIG instead of pkg-config
This allows to use prefixed versions of pkg-config for cross-compilation.
2015-04-09 12:04:09 +02:00
Dave Jaggar
d000264e28 Genre map for Sky New Zealand 2015-04-09 12:03:14 +02:00
Dave Jaggar
fdbcbcf015 Huffman dictionary for Sky New Zealand 2015-04-09 12:03:14 +02:00
Dave Jaggar
ecdf96828d Provider file for Sky New Zealand 2015-04-09 12:03:14 +02:00
Dave Jaggar
ad5d5690d1 Remove extra characters in title of skynz provider and set skynz lang to eng 2015-04-09 12:03:14 +02:00
Jaroslav Kysela
79ec2df4dd epggrab: set minimal epggrab_epgdb_periodicsave value to 3600, fixes #2765 2015-04-09 12:02:33 +02:00
Jaroslav Kysela
2a792c4e4c mpegts: show pids for complete/incomplete tables, move scan needs more time msg to trace 2015-04-09 11:55:56 +02:00
Jaroslav Kysela
e138492f5e dvb_psi_lib: remove the wrong pmt hack - causes scan FAIL issues in this form 2015-04-09 11:55:26 +02:00
Jaroslav Kysela
995aaf895b linuxdvb: allow to force using old linuxdvb ioctls, fixes#2759 2015-04-07 09:44:53 +02:00
Jaroslav Kysela
d58afc0415 mpegts: improve streaming latency for low-bandwidth subscriptions 2015-04-05 20:42:31 +02:00
Jaroslav Kysela
c7a87457cf SAT>IP Server: rtsp/options - handle also '*' url 2015-04-05 20:16:14 +02:00
Jaroslav Kysela
2518d4f821 globalheaders: when an elementary stream is disabled, notify via debug log 2015-04-05 20:15:52 +02:00
Jaroslav Kysela
e4f034aed3 SAT>IP Server: export active connection for webui 2015-04-02 12:28:42 +02:00
Jaroslav Kysela
1c885f100d SAT>IP server: subscribe at least one PID (PAT) 2015-04-02 12:12:39 +02:00
Jaroslav Kysela
d63c36a36e http: add protocol version and command to dump_request() 2015-04-02 12:02:13 +02:00
Bob Lightfoot
ffe92dfed1 changelog added to rpm spec file 2015-04-02 08:59:19 +02:00
Jaroslav Kysela
b988813057 opentv: add boundary check to _opentv_parse_event() 2015-04-02 08:58:53 +02:00
Jaroslav Kysela
08c4af7e6a mpegts mux+service: export uuid for parent network and mux 2015-04-01 12:57:57 +02:00
Jaroslav Kysela
fabd01191d htsp server: fix epg query (missing title filter), add fulltext flag 2015-04-01 10:48:00 +02:00
Jaroslav Kysela
ad4dd4fa50 simpleui: fix search, fixes #2753 2015-04-01 10:37:26 +02:00
Jaroslav Kysela
9a8242a082 cosmetic: remove old tvh_strlcatf() and rename tvh_strlcatf2() as tvh_strlcatf() 2015-04-01 10:27:15 +02:00
Jaroslav Kysela
4eeecb2a0f subscription: cleanup the subscription messages 2015-04-01 10:22:32 +02:00
Jaroslav Kysela
3b9253679b subscription: do not call subscription_schedule recursively() - mux subscriptions, fixes #2750 2015-03-31 21:16:38 +02:00
Jaroslav Kysela
f6d9813ff5 SAT>IP server: change default fec to auto for dvb-c 2015-03-31 20:21:26 +02:00
Jaroslav Kysela
3e4c8e7314 pid-count.py: improve sync 2015-03-30 17:03:56 +02:00
Jaroslav Kysela
e4cdd3ca0f descrambler: fix another thinko (and crash) 2015-03-27 18:40:30 +01:00
Jaroslav Kysela
722c9250ac webui: about page: 2015 year 2015-03-27 17:30:08 +01:00
Jaroslav Kysela
169b71bb72 lang codes: add syn 2015-03-27 12:53:15 +01:00
Jaroslav Kysela
1f79d9dd5f mpegts.h - undefine mpegts_psi_section_t (duplicate with dvb.h) 2015-03-26 21:03:36 +01:00
Bob Lightfoot
b427d7ecba Patching rpm spec file so the arm architecture builds properly modified: rpm/tvheadend.spec.in 2015-03-26 14:19:52 +01:00
Jaroslav Kysela
6bc1a6fe74 SAT>IP Server: clean/extend the doc 2015-03-26 11:48:57 +01:00
Jaroslav Kysela
0d4f44385c doc: more words to the channel / Auto EPG checkbox 2015-03-25 15:17:39 +01:00
Ben Fennema
1ccdcd33a2 tvhdhomerun: lock tuners when in use 2015-03-25 15:16:36 +01:00
Ben Fennema
266b28cfd1 epg: allow epg source to be set with auto epg channel unchecked 2015-03-25 15:16:32 +01:00
Jaroslav Kysela
baab7707a2 SAT>IP Client: do not show 12345678 error 2015-03-25 14:37:29 +01:00
Jaroslav Kysela
3fab60a1b6 mpegts pass muxer: recode the PAT rewritter to use psi library functions 2015-03-25 13:56:52 +01:00
Jaroslav Kysela
04f0ef966d mpegts pass muxer: optimize the parsing loop using mpegts_word_count() 2015-03-25 12:51:37 +01:00
Jaroslav Kysela
41431f71d8 configure: fix ffmpeg check 2015-03-25 12:35:12 +01:00
Jaroslav Kysela
9ee27b671b mpegts pass muxer: add possibility to rewrite/filter SDT and EIT tables, fixes #2043 2015-03-25 12:35:12 +01:00
Jaroslav Kysela
d5c5f67bfe psi parser: more code reorganization, add parser/remux helpers for other layers 2015-03-25 12:35:12 +01:00
Jaroslav Kysela
75cad931c4 check all snprintf() callers and modify code to work correctly with the return value using tvh_strlcatf2() macro, fixes #2734 2015-03-24 23:16:22 +01:00
Jaroslav Kysela
cc58797fb6 profile: fix transcode subscription flags, fixes #2735 2015-03-24 22:11:34 +01:00
Jaroslav Kysela
4f2b94f281 http: use stack for the session variables 2015-03-24 12:47:38 +01:00
Jaroslav Kysela
a1fd6adaaf SAT>IP Server: use ths_raw_service instead ths_service 2015-03-24 11:21:46 +01:00
Jaroslav Kysela
b941aedf93 configure: add --disable-libffmpeg_static_x264 to satisfy i386 debian builds 2015-03-24 11:02:05 +01:00
Jaroslav Kysela
27382c275f SAT>IP Server: fix new session id assignment, fix possible null dereference 2015-03-24 08:55:35 +01:00
Jaroslav Kysela
3332f8614b mpegts: fix the mpegts_input_close_pids() - fullmux/tables subscriptions 2015-03-23 21:06:38 +01:00
Jaroslav Kysela
8974fac450 config.h - include unistd to resolve git_t dependency 2015-03-23 20:10:06 +01:00
Jaroslav Kysela
55281a87ac SAT>IP server: parse correctly more auto values 2015-03-23 17:48:09 +01:00
Jaroslav Kysela
6cd5f1b379 Remove MPEGPS/V4L support 2015-03-23 16:39:35 +01:00
Jaroslav Kysela
dddc4249ef SAT>IP Client: skip universal LNB check for the TVHeadend server 2015-03-23 16:21:05 +01:00
Jaroslav Kysela
3f4002d984 http: optimize dump_request(), call it also for RTSP 2015-03-23 15:52:17 +01:00
Jaroslav Kysela
5518397784 http: optimize tcp_get_ip_str() calls for the peer ip addr 2015-03-23 15:47:42 +01:00
Jaroslav Kysela
fc68ad0a74 http: a little cleanup 2015-03-23 15:28:04 +01:00
Jaroslav Kysela
b520cbeb34 psi tables: moved base parsers outside mpegts.h 2015-03-23 15:28:04 +01:00
Jaroslav Kysela
6547bbe2e0 dvb psi reorganize - create parsing library 2015-03-23 15:28:04 +01:00
Jaroslav Kysela
30f5c44d2c SAT>IP Server: fix the pid subscriptions (stack overflow, duplicate pids) 2015-03-23 12:50:05 +01:00
Jaroslav Kysela
1063fbf472 spawn: fix stack overflow 2015-03-23 12:32:09 +01:00
Jaroslav Kysela
a139c2545c SAT>IP server: fix url= for RTSP port != 554 2015-03-23 10:54:10 +01:00
Jaroslav Kysela
47f249fe09 SAT>IP Client: increase pids limit for TVHeadend SAT>IP server 2015-03-23 10:36:50 +01:00
Jaroslav Kysela
02a9b02e1c descrambler: fix the wrong cut on the buffered data 2015-03-23 10:03:20 +01:00
Jaroslav Kysela
c54f9b0ca7 capmt: extend log for subscription 2015-03-23 09:35:57 +01:00
Ben Fennema
0c6cce080a service_mapper: move SUBSCRIPTION_PACKET from weight to flags field of subscription_create_from_service 2015-03-23 00:16:35 +01:00
Jaroslav Kysela
db5cf2adff another coverity fix for the cc checking code, fixes #2724 2015-03-22 21:38:23 +01:00
Jaroslav Kysela
c308e1705e opentv: another coverity scan fix 2015-03-22 21:24:01 +01:00
Jaroslav Kysela
d8e7bafc3b mpegts input: fix the continuity counter check, fixes #2724 2015-03-22 21:23:32 +01:00
Jaroslav Kysela
4db85f0396 revert one mutex code (from coverity fixes) 2015-03-22 21:09:10 +01:00
Jaroslav Kysela
34ed9da0e6 main: fix build using --disable-satip_server 2015-03-22 21:02:19 +01:00
Jaroslav Kysela
3ed12146c9 coverity fixes... 2015-03-22 21:01:10 +01:00
Ben Fennema
e5dc86b3dd epggrab: match off channel major/minor in addition to name 2015-03-22 18:18:23 +01:00
Jaroslav Kysela
0b548808a7 fix uninitialized error in webui.c, fixes #2725 2015-03-22 18:01:09 +01:00
Jaroslav Kysela
023563f602 mpegts input: mini-optimization in ts_sync_count() 2015-03-22 17:54:47 +01:00
Jaroslav Kysela
a7445b1f2d docs: access - add network separator; channels - add streaming URLs, fixes #2697 2015-03-22 17:18:48 +01:00
Jaroslav Kysela
e247500a08 picon: fix the hash calculation for invalid onid/tsid using Enigma2 code, fixes #2700 2015-03-22 17:05:18 +01:00
Jaroslav Kysela
93f3f6fbdd linuxdvb: improve diseqc switch handling, cleanups 2015-03-22 16:40:58 +01:00
Bob Lightfoot
c61be4ed90 On branch Bug2720Fix Changes to be committed: modified: support/version lines 20 and 21 to correct location of rpm/version files <boblfoot@gmail.com> 20150319 2015-03-22 15:52:27 +01:00
Ben Fennema
5e7efab324 epggrab: allow updating channel name/number/icon Allow epg grabber to update channel name, number, and/or icon if "Update Channel name", "Update channel number", and/or "Update channel icon" are set in "EPG Grabber" -> "General Config". 2015-03-22 15:51:25 +01:00
Mariusz Bialonczyk
ac3599bc79 capmt: fix endless loop
When tvh receives less then 4 bytes from the socket for some reason,
it stuck in the endless loop in handle_single() calling:
capmt_msg_size()
capmt_analyze_cmd()
The capmt thread eats 100% CPU and cannot be normally terminated
because the capmt_msg_size() was constantly returning 0.

The commit fixes the problem.
2015-03-22 15:50:05 +01:00
Glenn-1990
7414ebafe4 set modulation 2015-03-22 15:47:39 +01:00
Glenn-1990
72835054ce add HD pids for astra1 2015-03-22 15:47:39 +01:00
Jaroslav Kysela
bb5fe1145d SAT>IP Server: DVBC - fix stream id initialization 2015-03-19 23:01:28 +01:00
Jaroslav Kysela
db52de8151 SAT>IP Client: XML - make manufacturerURL tag optional 2015-03-19 21:29:54 +01:00
Jaroslav Kysela
fbd41d806b linuxdvb: fix build for headers < 5.5 2015-03-19 19:54:20 +01:00
Jaroslav Kysela
35029f1e51 mpegts input: Fix ommited code change for changed MIN_TS_SYN 2015-03-19 16:00:58 +01:00
Jaroslav Kysela
9c8dde32f5 main: finish tcp connections (thus subscriptions) before mpegts done call 2015-03-19 15:42:14 +01:00
Jaroslav Kysela
f72c67b629 linuxdvb: fix detection for multiple frontends (dtv_property was overwritten) 2015-03-19 13:13:56 +01:00
Jaroslav Kysela
953dfa0f3f SAT>IP Server: fix bandwidth parsing 2015-03-19 12:50:07 +01:00
Jaroslav Kysela
196462292e http: show protocol/command in http_error() 2015-03-19 12:20:36 +01:00
Jaroslav Kysela
819fc6766b SAT>IP Server: reorganize code to support VLC RTSP 2015-03-19 12:14:27 +01:00
Jaroslav Kysela
fb7ffa7a2c config: handle chown error 2015-03-18 16:34:09 +01:00
Jaroslav Kysela
a08311dff9 SAT>IP Server: Fix describe (count of tuners) 2015-03-18 13:19:47 +01:00
Jaroslav Kysela
fe8e0b0c16 mpegts input: return mutex lock order in mpegts_input_table_dispatch() 2015-03-18 12:29:15 +01:00
Jaroslav Kysela
8480557f76 SAT>IP Server: remove debug line 2015-03-18 12:00:46 +01:00
Jaroslav Kysela
5c5950b698 mpegts input: fix the assert() crash when PID is out-of-range 2015-03-18 11:48:26 +01:00
Jaroslav Kysela
3dfc1eba78 SAT>IP Server/Client: Add more tuner types (atsc, dvbcb, dvbs, dvbc2) 2015-03-18 11:45:04 +01:00
Jaroslav Kysela
28e8db1dc2 Fix the unsigned issue for gid/uid handling 2015-03-18 09:48:46 +01:00
Jaroslav Kysela
de0d8d379f config: fix the load order for the early config access 2015-03-18 00:06:41 +01:00
Jaroslav Kysela
ecf91c3866 SAT>IP Client: simplify the PID handling using mpegts_apid fcns 2015-03-17 23:43:58 +01:00
Jaroslav Kysela
e1a14dff0e SAT>IP server: add mux handling configuration option 2015-03-17 18:58:02 +01:00
Jaroslav Kysela
e424493113 Add more inputs and outputs to README.md 2015-03-17 16:44:43 +01:00
Jaroslav Kysela
2665e13507 mpegts open service: do not add pid multiple times, handle filtered PIDs correctly 2015-03-17 16:44:27 +01:00
Jaroslav Kysela
fd24aa9339 SAT>IP server: Don't enable SAT>IP server by default, fix some locking issues 2015-03-17 15:51:46 +01:00
Jaroslav Kysela
e16a5ca3d1 subscriptions: Fix crash when subscription is in the remove queue list, but unsubscribed before 2015-03-17 14:08:26 +01:00
Jaroslav Kysela
74adbe8f7d SAT>IP Client: maintain session also in the idle mode 2015-03-17 14:02:53 +01:00
Jaroslav Kysela
e1b2da8e74 descrambler: fixed thinko 2015-03-17 10:46:09 +01:00
Jaroslav Kysela
6601ca39f9 mpegts input: change ts_sync_count() return value 2015-03-17 09:53:22 +01:00
Jaroslav Kysela
a698e088e8 mpegts: optimize the data patch (join MPEG-TS packets for processing) 2015-03-17 09:52:53 +01:00
Jaroslav Kysela
c4adde611f SAT>IP Server: fixed issues for the Elgato SAT>IP Android app 2015-03-13 23:59:31 +01:00
Jaroslav Kysela
ce01edeb8c SAT>IP Server: cosmetic change 2015-03-13 19:45:10 +01:00
Jaroslav Kysela
0138a37aee SAT>IP Server: Finish service descrambling 2015-03-13 19:26:07 +01:00
Jaroslav Kysela
385c4167c0 subscription: fix the assert from the last cleanup 2015-03-13 15:55:30 +01:00
Jaroslav Kysela
2d703fbe42 udp: fix typo 2015-03-13 10:38:37 +01:00
Jaroslav Kysela
19e1ae1451 subscription: cleanup for the subscription type selection 2015-03-13 10:36:31 +01:00
Jaroslav Kysela
0eb8587510 SAT>IP Server: more work on the descrambling 2015-03-13 10:18:52 +01:00
Jaroslav Kysela
c66213c745 SAT>IP server: implement DESCRIBE RTSP command 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
be3749f45c subscriptions: manage ths_mux_link early to avoid wrong memory accesses 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
7cafa5ef70 mpegts: fix mpegts_mux_unsubscribe_by_name() - use right list 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
8b7c67abec SAT>IP Server: fixes, fixes... 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
cd99597a5c subscription: add TABLES subscription type handling, fix some memory leaks 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
ffa0639149 profile: improve prch_sq destroy 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
9dbaa441f3 udp: fix memory leak (peer_host) 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
3c889e15a9 http: fix memory leak in http_arg_get_remove(), optimize http_serve_requests() 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
38b541e420 subscription: add ONESHOT subscription type for mux subs 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
20d521975e mpegts mux: remove the unused mm_start code 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
6753203c65 SAT>IP server: fix the tuner configuration 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
a4c2cc2a0f linuxdvb: fix the signal strenght / dB(m) calculations 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
514adb06dd SAT>IP server: fix the signal strength calculation 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
af7e0a385d mpegts pid: add mpegts_pid_dump(), fix mpegts_pid_init() 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
2dfc2710b7 service/mpegts: add raw service type and raw PID handling 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
2b6dd0f73d mpegts elementary stream: remove pcr decoder - not used 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
1ef7dae510 service: remove unused s_flags field from struct service 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
29308193bd mpegts input: optimize the PID decoding 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
787ba1f1d6 dvbpsi: fix compilation without ENABLE_MPEGTS_DVB 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
9a6d0961e4 SAT>IP Server: improve PID handling (using new fcn set) 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
c522d71ed0 SAT>IP Client: add RTSP port to log messages 2015-03-11 21:41:13 +01:00
Jaroslav Kysela
afede2267f SAT>IP: use HTTP headers instead UPC XML text to pass RTSP port and Sources 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
fd505efe5a SAT>IP Server: do not put version to friendly name (XML) 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
7bb903a397 SAT>IP server: many fixes and additions, first "somewhat working" version
Tested only with another tvheadend as client with the DVB-T adapter.
2015-03-11 21:41:12 +01:00
Jaroslav Kysela
ca0a703779 http server: RTSP Session header cleanups, add more RTSP status codes 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
d90bc3ebd3 tcp: fix tcp_server_bound() function, null addr check 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
cfbe927b43 UDP: rearrange udp_connect/udp_sendinit 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
cbf1b15d00 RTSP client: handle also different RTSP port than 554 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
1c9b527011 SAT>IP: handle SRCS pass (for DVB-S) in server and client 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
a87aae0aaf SAT>IP Client: Add RTSP port detection based on the UPC string (TVheadend specific server) 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
da6eb2c4b3 SAT>IP server: handle streams correctly, add more RTSP headers 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
78e4ddf86e SAT>IP server: more work, add subscriptions and add RTP and RTCP threads 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
83f94f6f0c udp: add tx buffer size setup for udp_bind(_double) 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
56ac461d06 dvb: export dvb_network_find_mux() for the SAT>IP server 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
be1cc5c97c dvb: create mux - rearrange parameters for SAT>IP server 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
d563dc9127 udp: add multisend code (sendmmsg) 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
fd1bc1c5f7 SAT>IP server: initial RTSP code 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
1c3f608194 http: export http_serve_requests, add hc_process callback to connection 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
b306c7c9d5 http: allow to specify different paths 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
3c95a84d81 http: reorganize http_serve 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
ea60066a3f SAT>IP server: initial code 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
3e33da55c9 upnp: add debug fcn to dump output packets 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
53984a38a4 tcp: add IP_PORT_SET() macro 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
af698f0c19 config: add universal fcns to access to global variables 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
2904a96ea1 UPnP: add delay handling to write queue 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
97f52f6d20 http: export http_server variable 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
c19217e6e3 tcp: add helpers to determine default and used IP address for SAT>IP 2015-03-11 21:41:12 +01:00
Jaroslav Kysela
434fc5de6a main: move the http server registration to the end of the initialization phase 2015-03-11 21:41:12 +01:00
stbenz
96898a66e9 transcoding: fix compile error when using libav, fixes #2708
AVCodecContext.framerate and av_make_q() are only available since ffmpeg 2.5 and not available in libav
2015-03-11 21:40:12 +01:00
dero
bd06d3c79a - duplicate handling fixes according to pull comments 2015-03-09 16:18:54 +01:00
dero
ef799f9c24 - better duplicate handling (ui fix) 2015-03-09 16:18:35 +01:00
dero
2b22bc75a1 - better duplicate handling - better subtitle handling 2015-03-09 16:18:35 +01:00
dero
ce78f14570 - set subtitle from DVB OTA EPG 2015-03-09 16:18:35 +01:00
Kai Sommerfeld
cd4da6aa36 No calls to stat() in dvr_inotify_add(). This may significantly slowdown tvh startup. 2015-03-09 16:18:14 +01:00
Glenn-1990
81ae6bf0cd add streaming error for active recordings 2015-03-09 16:17:23 +01:00
stbenz
a69ee153d0 transcoding: fix encoder time_base again 2015-03-09 16:16:37 +01:00
Glenn-1990
e797e46129 update with HD pids 2015-03-09 16:15:37 +01:00
Glenn-1990
6acd4b60a3 auto create mux 2015-03-09 16:15:37 +01:00
Glenn-1990
e91074c812 set mux satpos from network satpos if set 2015-03-09 16:15:37 +01:00
Jaroslav Kysela
50016a15f2 dvb_psi: handle private data also without ENABLE_MPEGTS_DVB 2015-02-24 15:28:36 +01:00
Jaroslav Kysela
1d8b5411df cwc: mutex order cleanups, improve ECM_RESET 2015-02-21 23:08:02 +01:00
Jaroslav Kysela
19422a4d29 cwc: small optimization - prefcapid handling in cwc_table_input 2015-02-21 21:46:23 +01:00
Jaroslav Kysela
ab258685f4 cwc: reset the preferred CA PID when key is late... 2015-02-21 21:32:29 +01:00
Jaroslav Kysela
a2491ffcd7 descrambler: prefcapid_lock - add constants to increase source readability 2015-02-21 21:16:36 +01:00
Jaroslav Kysela
a50f74c9aa HTSP server: add stream and data errors to DVR entry, fixes #2515 2015-02-18 19:55:17 +01:00
Jaroslav Kysela
ba7ec12f91 HTSP server: add errors field to packet statistics 2015-02-18 19:50:27 +01:00
Jaroslav Kysela
2ba84e8a82 picons: do not use abort for not-critical check 2015-02-18 19:23:18 +01:00
Jaroslav Kysela
1bd1564a8c picons: fix filaname calculation for West positions, fixes #2685 2015-02-18 13:09:10 +01:00
stbenz
051412d7e0 transcoding: use input time base for output 2015-02-17 21:27:25 +01:00
Christian Lohmaier
2f830922f5 use iso format for date in default timerec title
as local date format often conflicts with sorting/playback order
also update documentation with pointers to escape-code documentation
2015-02-17 21:27:25 +01:00
Jaroslav Kysela
6327ca671e dvb support: fix dvb_mux_conf_str_dvbs - satpos 2015-02-17 21:15:15 +01:00
Jaroslav Kysela
f2cc2bc866 fastscan: add services to all muxes/networks, fixes #2674 2015-02-17 21:00:38 +01:00
Jaroslav Kysela
b826a7785e dvb: fix ENABLE_MPEGTS_DVB for dvb/orbitalpos/list, fixes #2683 2015-02-17 11:24:32 +01:00
Jaroslav Kysela
496e4b1f00 dvb_psi: improve check for dead muxes, fixes #2682 2015-02-16 23:59:32 +01:00
Jaroslav Kysela
51e9aec9a0 mpegts network: mux discovery - add check to avoid NULL dereference, fixes #2678, fixes #2674 2015-02-16 20:26:47 +01:00
Jaroslav Kysela
379672a6fb mpegts: linked tuner - do not crash when the linked tuner cannot be started, fixes #2678 2015-02-15 20:19:36 +01:00
Jaroslav Kysela
54533b30fc dvb mux: fix the frequency display name, add set helpers 2015-02-13 23:03:44 +01:00
Jaroslav Kysela
d386ed020a udp: fix compilation for kernels/libc without recvmmsg 2015-02-12 09:05:33 +01:00
Jaroslav Kysela
fafec1e053 parsers: AAC - fix the thinko in the previous patch 2015-02-11 21:05:00 +01:00
Jaroslav Kysela
538e7acb56 parsers: AAC - better handle SBR extension 2015-02-11 20:59:34 +01:00
Jaroslav Kysela
f6537ab39f cwc: little optimization in cwc_table_input 2015-02-11 15:03:43 +01:00
Jaroslav Kysela
89a5ca4914 dvb: mux discovery - add forced muxes also to another DVB-S networks, fixes #2674 2015-02-11 14:25:44 +01:00
Jaroslav Kysela
cc1fbb0202 parsers: improve AAC/LATM parser 2015-02-11 13:41:24 +01:00
Jaroslav Kysela
cd1f081909 transcode: fix wrong memory access introduced by previous patch 2015-02-10 20:43:52 +01:00
Jaroslav Kysela
c475b2531b transcode: handle packets with the NULL payload 2015-02-10 18:24:08 +01:00
Jaroslav Kysela
4cfbb2e024 WEBUI: dvr - add DVR Configuration to finished and failed recordings, too 2015-02-10 10:52:52 +01:00
Jaroslav Kysela
77d947fe57 channel: icons - do not generate auto icon URL with {name-not-set}, fixes #2661 2015-02-10 09:41:28 +01:00
Jaroslav Kysela
4a9dfec70f linuxdvb: fix compilation for dvb < 5.0 2015-02-09 22:17:15 +01:00
Jaroslav Kysela
f578c96949 scanfile: add some loading stats and warning when predefined muxes are empty 2015-02-09 22:05:23 +01:00
Jaroslav Kysela
a6ac407dbf mpegts dvb: fix the DVB-S mux initialization - wrong position value 2015-02-08 20:32:03 +01:00
Jaroslav Kysela
3396fe7a4b fix typo in comment 2015-02-08 20:22:20 +01:00
Jaroslav Kysela
2ebbd5f42a channel: handle better ch_enable in EPG and DVR, fixes #2668 2015-02-08 15:17:50 +01:00
Jaroslav Kysela
9fc758f946 DVR: improve autorec doc for the directory field, fixes #2667 2015-02-08 15:01:26 +01:00
Jaroslav Kysela
9ce2fa7885 add data/conf/satellites file 2015-02-08 11:29:20 +01:00
Jaroslav Kysela
6bb5e0f7f4 bouquet: save bouquet on name change 2015-02-05 17:56:42 +01:00
Glenn-1990
ac34185e67 dvb_psi: fastscan fix - force to add fastscan muxes from NIT 2015-02-05 17:52:46 +01:00
Jaroslav Kysela
36283c6598 dvb: remove orbital_dir, use negative orbital_pos value to distinguish East and West 2015-02-05 17:33:56 +01:00
Jaroslav Kysela
53f8b5068e mpegts dvb: add satellite position field to network, add proper interaction with predefined muxes 2015-02-05 16:57:50 +01:00
Jaroslav Kysela
31cd397f3c timeshift: reader - fix the possible wrong ctrl variable usage 2015-02-05 12:44:57 +01:00
Jaroslav Kysela
7ab46e3d5d dvb mux: change field names for multiple stream config parameters 2015-02-04 17:57:02 +01:00
Ben Kibbey
d09e0c9fa8 ACL: add "All DVR (rw)" to delete a DVR entry.
This is to let a user remove a DVR entry created by another user rather
than only being able to access it.
2015-02-04 17:53:09 +01:00
Glenn-1990
2726332724 update fastscan conf with astra3 2015-02-04 17:53:09 +01:00
Jaroslav Kysela
399aa99e89 dvb: add dvb_mux_conf_init() helper to move mux_conf initialization to one place 2015-02-04 17:41:37 +01:00
Jaroslav Kysela
aac2d0774f SAT>IP: Do extra shutdown only once 2015-02-04 12:45:19 +01:00
Mariusz Bialonczyk
2796c69750 Fix file permissions 2015-02-03 19:26:57 +01:00
Mariusz Bialonczyk
4050f98ef1 capmt: net proto: send stop descrambling command instead of closing socket
This should also improve zap times a little bit.
2015-02-03 19:20:06 +01:00
Jaroslav Kysela
83d05d49d4 fastscan: Fix typo for TV Vlaanderen 2015-02-03 15:31:11 +01:00
Jaroslav Kysela
1fca590172 fastscan: add discovered muxes at first unconditionally - it should be _FAST_ 2015-02-03 15:30:34 +01:00
Jaroslav Kysela
7a2560e642 matroska muxer: update total duration using only audio/video tracks 2015-02-02 21:26:07 +01:00
Jaroslav Kysela
78b5fb6dce descrambler: cleanups for EMM handling 2015-02-02 20:21:14 +01:00
Jaroslav Kysela
9a265d503d SAT>IP: add pls parameter for the DVB-T2 setup message 2015-02-02 15:14:12 +01:00
Jaroslav Kysela
18c9d1dcc2 dvb: add DVB_NO_STREAM_ID_FILTER define 2015-02-02 15:03:20 +01:00
CrazyCat
e92996132b Fixed DVB-S2 multistream tuning. 2015-02-02 14:53:37 +01:00
CrazyCat
412df6d098 DVB-S2/T2 multistream support. 2015-02-02 14:53:37 +01:00
Glenn-1990
0bc1987d1e timerec entry not saved with htsp 2015-02-02 14:38:45 +01:00
Jaroslav Kysela
d2acb64025 htsp server: do not queue packets with NULL payload 2015-02-02 11:50:24 +01:00
Jaroslav Kysela
facee6f9e5 DVR WEBUI: add and update filesize in upcoming/current recordings 2015-02-01 17:45:07 +01:00
Jaroslav Kysela
4b05735b87 dvr: implement file size change notifications 2015-02-01 17:36:26 +01:00
Jaroslav Kysela
a650b2ea79 cwc: add CAID to reader nice name 2015-02-01 12:07:10 +01:00
Jaroslav Kysela
3a92f1d2f8 descrambler: reset ecm states for all readers when key is late 2015-02-01 12:03:19 +01:00
Jaroslav Kysela
4835c6c53e tsfix: postpone the reference time decision until packets from all streams are collected 2015-01-31 20:14:44 +01:00
Jaroslav Kysela
a39bb434f4 mpegts parsers: another error forwarding fixes 2015-01-31 18:24:35 +01:00
Jaroslav Kysela
ce2fc637b6 muxers: ignore the NULL payload 2015-01-31 17:39:16 +01:00
Jaroslav Kysela
362fb68002 mpegts parsers: cleanup the error forwarding 2015-01-31 17:35:35 +01:00
Jaroslav Kysela
bdfc4d779f tsdemux: move the error handling to the parsers.c 2015-01-31 16:55:40 +01:00
Jaroslav Kysela
e2f9483dbe dvr: use direct error flag handling 2015-01-31 16:53:07 +01:00
Jaroslav Kysela
94880c5b3e opentv: fix bug introduced with recent changes - missing EPG for some channels 2015-01-31 16:22:23 +01:00
Jaroslav Kysela
30d6fa5300 DVR: Add data errors field 2015-01-30 22:53:34 +01:00
Jaroslav Kysela
adcd748fc0 tsdemux: pass TS continuity errors to subscriptions 2015-01-30 21:49:37 +01:00
beralt
5eca4d7be8 tvhdhomerun: add modulation and symbolrate to channel tuning 2015-01-28 21:00:11 +01:00
Jaroslav Kysela
e6d124d110 mpegts mux: fix the copy-and-paste type (default value for AC-3 Detection), fixes #2647 2015-01-28 20:59:38 +01:00
Jaroslav Kysela
927ebf2f0f dvb psi: add another AC-3 detection hack, fixes #2647 2015-01-28 14:56:24 +01:00
Jaroslav Kysela
ebdd85f5ba parser: add support for ADTS data to SCT_AAC parser, fixes #2645 2015-01-27 21:06:21 +01:00
Jaroslav Kysela
e95e23ab2f doc: tvadapters - little fix in the Full DiseqC description 2015-01-27 19:58:11 +01:00
Jaroslav Kysela
2f13317fa0 tvhcsa: fix compilation when TVHCSA is not enabled, fixes #2642 2015-01-27 19:55:37 +01:00
Jaroslav Kysela
5a063fe71d linuxdvb: make Full DiseqC as default 2015-01-27 19:50:13 +01:00
Jaroslav Kysela
98783a5c9e SAT>IP: add parsing for RTCP status string ver=1.2 (DVB-C), fixes #2646 2015-01-27 16:06:30 +01:00
Jaroslav Kysela
c664af6f60 mpegts mux dvb: fix the load sequence and possible memory leak 2015-01-27 12:22:42 +01:00
Jaroslav Kysela
3c0a279825 xml parser: skip UTF-8 BOM header, fixes #2644 2015-01-27 11:48:03 +01:00
Jaroslav Kysela
b98e688f57 mpegts mux subscription: fix the live check (data timeout) 2015-01-26 20:58:39 +01:00
Jaroslav Kysela
0515caa92f tvhcsa: fix the read after allocated memory valgrind error 2015-01-26 20:13:01 +01:00
Jaroslav Kysela
62e2971020 opentv: fix complation with --disable-trace 2015-01-26 19:56:16 +01:00
Jaroslav Kysela
ee66809d18 mpegts input: linked inputs - optimization, trace fixes 2015-01-26 19:55:45 +01:00
Jaroslav Kysela
879b842ea1 esfilter: rename ONCE to ONE_TIME, improve doc 2015-01-26 15:00:04 +01:00
Jaroslav Kysela
f39ddd1f05 otamux: do not queue not enabled muxes 2015-01-25 20:32:35 +01:00
Jaroslav Kysela
22554c723d mpegts input: move linked input to advanced in WEB UI 2015-01-25 19:12:43 +01:00
Jaroslav Kysela
cde875ecb2 SAT>IP: corner case fixes, fixes #2638
- fixed wait before next tune (flush the incoming rtsp replies)
- fixed mutex global_lock deadlock (satip_frontend_tuning_error)
2015-01-25 18:25:30 +01:00
Jaroslav Kysela
c3ec4b114d Makefile: add -ldl for static ffmpeg build to fix arm dependencies 2015-01-24 22:16:34 +01:00
Jaroslav Kysela
2b8ad616a4 profile: add matroska/mpegts muxers from libav 2015-01-24 21:55:01 +01:00
Jaroslav Kysela
1a9319571b filebundle: try to fix build error for older zlib.. #3 2015-01-24 20:58:57 +01:00
Jaroslav Kysela
a7d26442b1 filebundle: try to fix build error for older zlib.. #2 2015-01-24 20:47:37 +01:00
Jaroslav Kysela
078dff5b98 filebundle: try to fix build error for older zlib.. 2015-01-24 20:30:28 +01:00
Jaroslav Kysela
d83aefe0fe descrambler: fix mm_descrambler_lock deadlock in the CAT callback, fixes #2636 2015-01-24 20:22:29 +01:00
Jaroslav Kysela
44a1df1fac mpegts network scan: remove from queue disabled muxes 2015-01-24 20:07:21 +01:00
Jaroslav Kysela
28337dcbbe SAT>IP: Add frequency filter for DVB-S/S2 2015-01-24 20:06:51 +01:00
Mariusz Bialonczyk
6a27c4ccab Fix 519ec96 (capmt: network mode: fix a crash when oscam is restarted)
When there was a further subscribing requests, the queued greeting could
be queued not as the first position in the queue, leading to problems
when subscribing the channel.
Now requesting to flush the queue in capmt_notify_server() to be sure
that the greeting go out to OSCam as a first command.
2015-01-24 14:56:34 +01:00
Jaroslav Kysela
3feccf34b5 filebundle: do not use extra input buffer 2015-01-23 21:30:23 +01:00
Lauri Myllari
9508a68aa1 hdhomerun: autodetect ATSC network type 2015-01-23 18:19:19 +01:00
Jaroslav Kysela
b1883ed51e opentv: add bouquet filter to avoid heavy LCN switches 2015-01-23 18:15:02 +01:00
Jaroslav Kysela
bca6214866 WEBUI: distinguish the disabled channels/tags by {}, fixes #2635 2015-01-23 14:30:28 +01:00
Adam Sutton
dcdef424fc linuxdvb: appears some tuners are not supporting FE_GET_EVENT
This results in a terminal lockup as the ioctl() will loop indefinitely,
testing for != -1 was always a bad idea!
2015-01-22 15:12:25 +00:00
Adam Sutton
f88f2f33ff linuxdvb: fix possible bug with multi-frontend adapters 2015-01-22 15:12:09 +00:00
Mariusz Bialonczyk
519ec9677e capmt: network mode: fix a crash when oscam is restarted
Use capmt_queue_msg() after connecting instead of direct write to socket.
Fixes a crash when the channel is played and oscam is restarted.
2015-01-22 11:22:06 +01:00
Jaroslav Kysela
3077ffa4d3 epggrab: ota - add trigger button to webui 2015-01-21 20:56:22 +01:00
Jaroslav Kysela
1377fad8a0 linuxdvb: add Tune Before DiseqC option, fixes #2629 2015-01-21 17:21:29 +01:00
Jaroslav Kysela
8174eb953d mux stop: pass the stop reason for OTA epggrab to avoid re-tuning on muxes with no data 2015-01-21 12:02:50 +01:00
Jaroslav Kysela
abea248bab otamux: do not requeue muxes with failed scan status 2015-01-20 20:40:11 +01:00
Jaroslav Kysela
8018b54d6b doc: some text for satellite config 2015-01-20 17:35:51 +01:00
Jaroslav Kysela
b28f37bf8a WEBUI: Fix the LovCombo regex handling - fixes #2598 2015-01-20 15:21:14 +01:00
Jaroslav Kysela
e565e7cbf0 quick fix for the previous patch 2015-01-20 14:50:18 +01:00
Jaroslav Kysela
3ddf768edf WEBUI DVR: Fix the additional rows in the column header menus, fixes #2571 2015-01-20 14:40:12 +01:00
Jaroslav Kysela
fc7d3d8484 WEBUI DVR upcoming: use channel field instead channelname, fixes #2609 2015-01-20 13:38:33 +01:00
Jaroslav Kysela
a8a175136d channels: do not allow empty string channel names, fixes #2628 2015-01-20 11:33:12 +01:00
Jaroslav Kysela
aca5c6b976 timeshift: add 'use only RAM' option 2015-01-19 21:31:18 +01:00
Jaroslav Kysela
bc9874cc26 timeshift: implement timeshift to RAM, fixes #2626 2015-01-19 21:08:15 +01:00
Jaroslav Kysela
ca0021e3b6 htsp server: cleanup the conditions in update fcns 2015-01-19 19:07:47 +01:00
Jaroslav Kysela
b3db352ecf linuxdvb: fix the retune call 2015-01-19 18:20:10 +01:00
Jaroslav Kysela
9801ef1a1a mpegts input: fix the linked input unset action 2015-01-18 22:01:44 +01:00
Jaroslav Kysela
a2c01ed520 doc: add fulltext checkbox documentation for epg and autorec 2015-01-18 21:46:04 +01:00
Jaroslav Kysela
ba7d8fa23a service: add per-service priority modificator, fixes #2249 2015-01-18 21:35:00 +01:00
Jaroslav Kysela
c92ccca440 DVR autorec: implement fulltext (title, subtitle, summary, description) filter, fixes #2170 2015-01-18 21:19:26 +01:00
Jaroslav Kysela
941dbcbd74 fix condition for previous patch 2015-01-18 20:23:48 +01:00
Jaroslav Kysela
f8b3bf40ec fix typo for previous patch 2015-01-18 20:22:15 +01:00
Jaroslav Kysela
ac92591ba1 mpegts service: Add 'Service IDs as Channel Numbers' network option 2015-01-18 20:21:33 +01:00
Jaroslav Kysela
7006b9fd88 DVR: fix the verify functions for anonymous users, fixes #2623 2015-01-18 11:25:26 +01:00
Jaroslav Kysela
60f959ba59 EPG: implement fulltext search (title, subtitle, summary, description) 2015-01-17 22:43:14 +01:00
Jaroslav Kysela
3dba7bf3ac config: backup - handle correctly spawnv return code 2015-01-17 22:26:51 +01:00
Jaroslav Kysela
dafea1a693 linuxdvb: make the status period (read times) configurable 2015-01-17 19:20:49 +01:00
Jaroslav Kysela
f157e1818d linuxdvb: allow to modify the input buffer size 2015-01-17 19:20:43 +01:00
Jaroslav Kysela
4df20c2b6a linuxdvb: add nodata and signal retune code
Sometimes, the linux drivers requires "re-tune" requests to stabilize
or re-trigger reception which may hang. The two checks were added:

nodata - when no data are available for a little time period, issue re-tune
signal - when signal is lost for a little time period, issue re-tune
2015-01-17 18:55:08 +01:00
Jaroslav Kysela
93aac31870 doc: improve tvadapters text (add missing linuxdvb rows, re-organize) 2015-01-17 18:35:46 +01:00
Jaroslav Kysela
273835ff46 mpegts: add linked tuner feature
The DvbSky S952 drivers have numerous tuning bugs and one of it is
that if two tuners are not used together, streaming from one tuner
can "hang".

This change implements a workaround which makes the second (linked)
tuner alive (tuning is joined with these two linked tuners).
2015-01-17 18:12:18 +01:00
Jaroslav Kysela
37eb9d2cfd remove debug line in api_mpegts.c 2015-01-16 18:53:46 +01:00
Jaroslav Kysela
ed513c0d6f DVR: Add per-user filters for all DVR entries (including timerec and autorec), fixes #2533 2015-01-16 17:46:43 +01:00
Jaroslav Kysela
a65f6179e5 dvr autorec: handle filter rules also for series autorecs 2015-01-16 10:36:08 +01:00
J. Dierkse
fc57f52aeb Update timeshift_filemgr.c
It seems that in currently the timeshift_unlimited_period boolean is completely ignored when it comes to taking action on removing files or reporting a full buffer. This small patch should fix that, so that when the timeshift_unlimited_period boolean is set to true, tvheadend no longer evaluates the period of the current timeshift.
2015-01-15 14:18:03 +01:00
Jaroslav Kysela
2820a7cf41 doc: add more text to Skip initial Scan - networks 2015-01-15 14:14:52 +01:00
Jaroslav Kysela
65fd96395a prop: skip completely the PT_NONE variables, fixes #2601 2015-01-14 20:58:23 +01:00
Jaroslav Kysela
f48e390437 DVB network grid: add 'Force Scan' functionality 2015-01-14 15:49:53 +01:00
Jaroslav Kysela
d9f4230881 dvb psi: NIT/SDT/VCT callback add/handle services only for active muxes 2015-01-14 13:44:58 +01:00
Jaroslav Kysela
30cc0a73bd dvb psi: change the NIT parser to handle correctly new mux descriptors, fixes #2605 2015-01-14 13:16:46 +01:00
Jaroslav Kysela
eb5cfaa6e9 dvb network: Add EIT local time option, fixes #2617 2015-01-14 09:47:12 +01:00
Jaroslav Kysela
04fcdce37d SAT>IP: remove debug printf 2015-01-13 20:33:49 +01:00
Jaroslav Kysela
6f6f20eac0 packet: return zero for pktbuf_len() when pktbuf ptr is NULL 2015-01-13 20:22:06 +01:00
Carlo Landmeter
4949382c87 lock: posix needs fcntl.h 2015-01-13 18:52:03 +01:00
Carlo Landmeter
0d5194c17c queue: check if list_move is already defined 2015-01-13 18:52:03 +01:00
Joakim Gissberg
b497168ab4 transcoding: Code cosmetics 2015-01-13 18:51:33 +01:00
Joakim Gissberg
b2132d72c2 transcoding: Remove deprecated bandwith property. Code cosmetics 2015-01-13 18:51:33 +01:00
Joakim Gissberg
baec61b674 transcoding: Fix mpeg2 video bitrate limiter/quantizer. Tweaking of misc default settings 2015-01-13 18:51:33 +01:00
Joakim Gissberg
7b01d9c1f0 Transcoding: Add audio bitrate limiter, video quantizer, tweaking of default encoder settings 2015-01-13 18:51:33 +01:00
Joakim Gissberg
ad8b61ba5a transcoding: Remove redundant double default definition 2015-01-13 18:51:33 +01:00
Joakim Gissberg
619654f1f4 transcoding: Add video bitrate limiter for h.264/VP8/MPEG2 2015-01-13 18:51:33 +01:00
Jaroslav Kysela
ef9556efff SAT>IP: Remove double teardown workaround (wasn't working) 2015-01-13 16:38:20 +01:00
Jaroslav Kysela
d9b781771d SAT>IP: implement extra shutdown (teardown) workaround for IDL4K firmware (gssbox) 2015-01-13 16:32:25 +01:00
Jaroslav Kysela
0818adf576 httpc: add more traces 2015-01-13 16:31:48 +01:00
Jaroslav Kysela
1723e733f5 AAC ADTS header - fix comments for AOT 2015-01-13 16:07:42 +01:00
Jaroslav Kysela
e9eadac057 Another ADTS header fix in transcoding (length) 2015-01-13 10:22:16 +01:00
Jaroslav Kysela
26b18fe141 Another ADTS header fix (AOT) 2015-01-13 10:18:27 +01:00
Jaroslav Kysela
33f72a3483 dvb psi: fix build without DVB 2015-01-13 10:06:49 +01:00
Jaroslav Kysela
940ab268e5 AAC ADTS header fixes (reported by Simon Bond) 2015-01-12 22:05:36 +01:00
Jaroslav Kysela
45eec90f11 transcode: fix the video timeout in globalheaders, including AAC ADTS header fix 2015-01-12 22:00:44 +01:00
Jaroslav Kysela
0a7ce2caf5 subscription: fix the mux data timeout 2015-01-12 14:37:13 +01:00
Joakim Gissberg
98b5304be6 hdhomerun: Upgrade libhdhomerun 2015-01-12 13:50:49 +01:00
Damian Gołda
0196790734 Issue 1625 - Option for Windows-compatible filenames - trim trailing spaces and dots, fixes #1625 2015-01-12 09:54:20 +01:00
Damian Gołda
028826b7df Issue 1625 - Option for Windows-compatible filenames * trim trailing spaces and dots 2015-01-12 09:51:23 +01:00
Jaroslav Kysela
76558d286a httpc: add hc_id to distinguish connections 2015-01-11 22:23:22 +01:00
Jaroslav Kysela
bfa463df8b dvb_psi: prefer HD simulcast LCNs (if present), fixes #2610 2015-01-11 21:52:51 +01:00
Jaroslav Kysela
eed4d8cdc5 dvb_psi: nit,sdt,vct callbacks - operate on all muxes with same tsid, fixes #2605 2015-01-11 21:43:22 +01:00
Sam Stenvall
f5c8e4ce86 accept "%c" placeholder for channel icons to use unmangled channel
name
2015-01-09 13:34:03 +01:00
Sam Stenvall
396700797b [utils] add url_encode() function 2015-01-09 13:34:03 +01:00
Jaroslav Kysela
f1631752c4 SAT>IP: Do not use SHUTDOWN for immediate tune requests 2015-01-09 12:39:11 +01:00
Damian Gołda
022e8d45a5 Issue 1625 - Option for Windows-compatible filenames 2015-01-08 22:22:03 +01:00
Damian Gołda
f8de301910 Issue 1625 - Option for remove unsafe characters from filename while keeping Umlaute and other national characters 2015-01-08 22:22:03 +01:00
Jaroslav Kysela
6f18074477 mpegts mux: improve log for missing in PAT/SDT 2015-01-08 22:14:17 +01:00
Sam Stenvall
c51b16224f [dvr] add "directory" option to auto and time recorder entries to
override directory settings for matching recordings.

Useful for e.g. recording multiple different shows into a single
directory (e.g. news).

Fixes #2123, fixes #2448
2015-01-07 15:56:15 +01:00
Mariusz Bialonczyk
09bd4c4d0e help: add missing information about new OSCam mode 2015-01-07 15:56:15 +01:00
Joakim Gissberg
ba36e4584d Upgrade to FFmpeg 2.5.2 2015-01-07 15:56:15 +01:00
Jaroslav Kysela
0872d71c12 dvb_psi: fix the service re-enable procedure 2015-01-07 15:54:14 +01:00
Jaroslav Kysela
900b20e280 SAT>IP: Trace RTP discontinuity 2015-01-07 15:53:49 +01:00
Jaroslav Kysela
1afee1663a service check: text cleanups, add help text, re-enable service when they're broadcasted again, fixes #2595 2015-01-06 10:33:19 +01:00
Jaroslav Kysela
1027f294d0 transcode: fix AAC encoding (wrong ADTS header - typo in source) 2015-01-05 15:36:44 +01:00
Jaroslav Kysela
6f8b1c5ad6 passthrough muxer: fix pmt packet overflow, fixes #2593 2015-01-05 08:59:13 +01:00
Mariusz Bialonczyk
b85ec59d46 capmt: add support for OSCam network protocol v1 2015-01-04 20:23:59 +01:00
Piotr Kuchciak
93e533ffad Help: clear cosmetic 2015-01-04 20:23:59 +01:00
Piotr Kuchciak
60d41123b5 HELP: Cosmetic update help for Config>General 2015-01-04 20:23:58 +01:00
Piotr Kuchciak
6605d5ec02 HELP: update description. 2015-01-04 16:11:09 +01:00
Piotr Kuchciak
c43c607d5a HELP: add file to button 2015-01-04 16:11:09 +01:00
Piotr Kuchciak
9697eab66c HELP: Add help text for stream profiles
Please add this to button help.
2015-01-04 16:11:09 +01:00
Piotr Kuchciak
a7704655f8 Help: Remove Transcoding from General 2015-01-04 16:11:09 +01:00
Piotr Kuchciak
3af9d86ef8 Help: Update Config>General
@ProfYaffle please update description :)
2015-01-04 16:11:09 +01:00
Glenn-1990
24d24a8107 htsp: add enabled flag to autorec and timerec 2015-01-04 15:59:06 +01:00
Glenn-1990
306f2520a6 htsp: bump version 2015-01-04 15:59:06 +01:00
Glenn-1990
6c8b7d6e48 htsp: add some missing values to dvr/timerec/autorec 2015-01-04 15:59:06 +01:00
Glenn-1990
75ffd0cc5a timerec: fix crash if stop and start times are equal 2015-01-04 15:59:06 +01:00
Glenn-1990
dbd3a1237e add timerec support to htsp server 2015-01-04 15:59:06 +01:00
Jaroslav Kysela
b305d98315 dvb psi: improve the sdt_callback mux selection logic 2015-01-04 15:57:52 +01:00
Jaroslav Kysela
294afe51b1 dvb psi: add Freeview DVB-T private dtag to parse LCN (0x83), fixes #2583 2015-01-04 12:20:41 +01:00
Jaroslav Kysela
c051d0bda5 global headers: improve again the timeout condition 2015-01-03 22:47:36 +01:00
Jaroslav Kysela
86f10581d5 SAT>IP: Fix the possible pointer dereference 2015-01-03 22:06:36 +01:00
Jaroslav Kysela
a890c6bf4b tsfix: cosmetic log issue (new line) 2015-01-03 22:06:19 +01:00
Jaroslav Kysela
c4089cc7a3 dvb_psi: fix sdt parser (when tableid == 0x46 and mux is available), fixes #2586 2015-01-03 21:30:57 +01:00
Jaroslav Kysela
fdbc68abf2 tsfix: add backlog to not drop too many packets (faster start) 2015-01-03 20:30:29 +01:00
Jaroslav Kysela
4dbc7d94ac global headers: analyze queue delays for all streams separately, fixes #2573 2015-01-03 18:01:08 +01:00
Jaroslav Kysela
cb5aed875d mpegts input: fix the wrong variable access 2015-01-02 21:30:02 +01:00
Jaroslav Kysela
4dcdbef28e mpegts: add more logging (mux start, unsubscribe) 2015-01-02 21:18:13 +01:00
Jaroslav Kysela
2635a3d1bf mpegts mux: add more traces to mpegts_mux_start 2015-01-01 19:46:48 +01:00
Jaroslav Kysela
1f62c46d72 mpegts scan: improve dead service detection (add SDT checks) 2015-01-01 16:12:23 +01:00
Jaroslav Kysela
9aa0600b81 udp: implement recvmmsg emulation for older linux kernels 2015-01-01 14:38:53 +01:00
Jaroslav Kysela
2dcf53f71e globalheaders: gh_queue_delay(), fixes #2573
- compute dts difference only for A/V packets
- handle dts wrap
2015-01-01 13:29:30 +01:00
Jaroslav Kysela
c1ed929c31 DVR: add EPG update window doc, fixes #2576 2014-12-30 20:22:06 +01:00
Jaroslav Kysela
cde79eb75f dvb network scan: don't subscribe to already active mux, move Idle Scan to hidden (grid), fixes #2568 2014-12-28 16:16:41 +01:00
Jaroslav Kysela
75fb7a929d DVR autorec: use 'Start After' and 'Start Before' for the start time window 2014-12-26 16:09:02 +01:00
Jaroslav Kysela
e2bd233a4f DVR autorec: change start_window meaning to start up to 2014-12-25 21:43:49 +01:00
ProfYaffle
56d8c8fc2a WebUI: Increase CSS spacing on day of week in EPG/DVR info dialogs 2014-12-25 17:56:15 +01:00
Jaroslav Kysela
0324cf8c8b tsfix: use time offset also for audio streams, sct_type optimization 2014-12-25 17:42:01 +01:00
Jaroslav Kysela
03b88cefc0 DVR autorec: more start,start_window type cleanups 2014-12-25 10:07:57 +01:00
Jaroslav Kysela
e07ee906cc htsp server: correct approxTime, start, startWindow type to handle -1 2014-12-25 10:05:00 +01:00
Jaroslav Kysela
159efe7411 dvr autorec: time window is in minutes, not seconds 2014-12-25 10:00:36 +01:00
Jaroslav Kysela
74090c626a globalheaders: don't disable SCT_TELETEXT 2014-12-24 15:23:07 +01:00
Jaroslav Kysela
b47a14bd8b HTSP server: handle correctly ssc_disabled flag in streaming start structure 2014-12-24 15:22:33 +01:00
Daniel Scheller
74c563ffdf dvb-psi: Fix LCN for UMKBW germany DVB-C 2014-12-21 20:57:29 +01:00
Jaroslav Kysela
8df348fbc3 WEBUI JS DVR: Correct the start column width 2014-12-21 20:53:24 +01:00
ProfYaffle
5dade4fd37 WebUI: Add CSS elements for day of week in EPG and DVR info dialogs 2014-12-21 16:19:18 +00:00
ProfYaffle
31b47ffe00 WebUI: Add error checking to information dialog in Recording grid 2014-12-21 13:08:17 +00:00
ProfYaffle
0748af88cf WebUI: Add day of week to information dialogs in EPG and Recording grid 2014-12-21 13:07:41 +00:00
ProfYaffle
d5ce076150 WebUI: Restore weekday name to Upcoming/Finished/Failed Recordings grids 2014-12-21 12:06:25 +00:00
Jaroslav Kysela
9a5b4db242 mpegts network: move Idle Scan to advanced config 2014-12-20 22:31:17 +01:00
Jaroslav Kysela
c040ab0542 linuxdvb satconf: voltage settings cleanups, fixes #2566 2014-12-20 18:22:34 +01:00
Jaroslav Kysela
c6793b3bab config channels: improve docs (User Icon), fixes #2564 2014-12-19 18:41:03 +01:00
Jaroslav Kysela
3c5d40916d linuxdvb satconf: handle correctly LNB power off 2014-12-19 16:35:57 +01:00
Jaroslav Kysela
eae66e1424 Makefile.ffmpeg: upgrade libx264 and use different mirror, vlc ftp is not accessible, fixes #2567 2014-12-19 12:11:56 +01:00
Niels Ole Salscheider
ba4e998cf4 Fix build with libressl 2014-12-19 11:41:45 +01:00
Jaroslav Kysela
5a9b31e7da ACL: use createdefault in access_init() 2014-12-18 18:15:04 +01:00
Jaroslav Kysela
a67c6bbc1b subscriptions: changed 'no transponder available' to 'no input source available' 2014-12-18 15:15:02 +01:00
Jaroslav Kysela
75084b79e6 mkmux: fix crash when wrong localtime argument was used 2014-12-18 12:26:38 +01:00
Jaroslav Kysela
7a16e29293 linuxdvb rotor: Add Min Rotor Move 2014-12-18 09:04:46 +01:00
Jaroslav Kysela
c8885ce5cb channel tags: add sort index, fixes #2560 2014-12-18 08:50:01 +01:00
Jaroslav Kysela
8db7c13281 CAPMT: Correct type for port property, fixes #2559 2014-12-17 15:42:54 +01:00
Jaroslav Kysela
066b273387 DVR: Add owner (user) field 2014-12-16 20:29:44 +01:00
Jaroslav Kysela
932ade39e8 linuxdvb rotor: Fix a little typo in USALS formula 2014-12-16 20:27:59 +01:00
Jaroslav Kysela
abea3ddee0 DVR: Implement autorec start window instead Starting Around (approx) 2014-12-16 16:10:27 +01:00
Jaroslav Kysela
34be15898f muxer: fix the meta write errors, fixes #2557 2014-12-16 14:01:12 +01:00
Jaroslav Kysela
cfa7cd0577 linuxdvb rotor: add ROTOR_TEST code 2014-12-16 08:55:10 +01:00
Jaroslav Kysela
f39f7b87ab linuxdvb satconf: tone fix..., fixes #2547 2014-12-15 19:58:34 +01:00
Jaroslav Kysela
7a707122e9 linuxdvb satconf: another diseqc tone optimization 2nd, fixes #2547 2014-12-15 18:31:01 +01:00
Jaroslav Kysela
32ad45b47c linuxdvb satconf: another diseqc tone optimization, fixes #2547 2014-12-15 18:29:46 +01:00
Jaroslav Kysela
d02f23302b linuxdvb rotor: change Max Rotor Movement to Init Rotor Time 2014-12-15 18:19:43 +01:00
Piotr Kuchciak
3184c8b01d EPGGRABER: cosmetic changes to show more name grabber 2014-12-15 18:06:31 +01:00
Jaroslav Kysela
c7be037d0c webui: fix the css clash for date picker, fixes #2553 2014-12-15 18:03:29 +01:00
Jaroslav Kysela
774323d002 linuxdvb satconf: tone off - move log 2014-12-15 16:00:19 +01:00
Jaroslav Kysela
5d7039c6da linuxdvb: tone off optimization - 3rd, fixes #2547 2014-12-15 15:58:14 +01:00
Jaroslav Kysela
6de939111d linuxdvb: tone off optimization - 2nd, fixes #2547 2014-12-15 15:55:52 +01:00
Jaroslav Kysela
a7754e8009 linuxdvb: tone off optimization, fixes #2547 2014-12-15 15:54:16 +01:00
Jaroslav Kysela
1827ef1347 mpegts input: introduce linuxdvb_filter_close() 2014-12-15 15:42:10 +01:00
Jaroslav Kysela
cfc78aba5f linuxdvb rotor: reshuffle code again 2014-12-15 15:23:02 +01:00
Jaroslav Kysela
080dfb4ef9 linuxdvb rotor: cleanups, move site config to frontend, fixes 2014-12-15 14:57:42 +01:00
Jaroslav Kysela
948de597c3 tvhlog: improve subsystem parser 2nd, fixes #2552 2014-12-15 14:44:47 +01:00
Jaroslav Kysela
85a5d7c4d2 tvhlog: improve subsystem parser, fixes #2552 2014-12-15 14:42:32 +01:00
Jaroslav Kysela
c08adfdaef linuxdvb: add linuxdvb_frontend_clear(), fixes #2547 2014-12-15 13:13:53 +01:00
Jaroslav Kysela
82cb4f7f42 linuxdvb: add Tune Repeats for frontend 2014-12-15 09:38:59 +01:00
Jaroslav Kysela
70c65a3fba linuxdvb rotor: another fix for last orbital position caching, code shuffle 2014-12-15 08:14:56 +01:00
Jaroslav Kysela
1145484e9f linuxdvb rotor: fix orbital position check 2014-12-15 00:22:34 +01:00
Jaroslav Kysela
f1fda287d8 ACL: fixed ACCESS_FULL (added ACCESS_HTSP_RECORDER), fixes #2551 2014-12-14 22:37:29 +01:00
Jaroslav Kysela
d9bb16eea6 linuxdvb rotor: do not rely on NIT, use site position value only 2014-12-14 22:21:33 +01:00
Jaroslav Kysela
920cb3582c ACL: add HTSP DVR rights for the initial user, fixes #2551 2014-12-14 20:21:52 +01:00
Jaroslav Kysela
40a2e93c8a linuxdvb satconf: another tone fix 2014-12-14 18:33:28 +01:00
Jaroslav Kysela
49e22d400a linuxdvb satconf: move voltage settings as last (for LNB polarization) 2014-12-14 17:34:34 +01:00
Jaroslav Kysela
32540dd18b linuxdvb rotor: fix the polarization caching 2014-12-14 17:26:19 +01:00
Jaroslav Kysela
d4fed8839b linuxdvb diseqc: improve log 2014-12-14 16:00:47 +01:00
Jaroslav Kysela
4fadb70767 linuxdvb diseqc: handle 22khz tone better for unicable 2014-12-14 15:57:13 +01:00
Jaroslav Kysela
811eeb4376 linuxdvb diseqc: reset cache values when frontend is closed, fixes #2547 2014-12-14 13:32:25 +01:00
Jaroslav Kysela
70a17dfb42 linuxdvb diseqc: fix and improve command caching, fixes #2547 2014-12-14 13:28:44 +01:00
Jaroslav Kysela
450c2be234 linuxdvb: remove debug line 2014-12-14 11:34:49 +01:00
Jaroslav Kysela
5ba47ff711 linuxdvb: implement 'Full DiseqC', fixes #2547 2014-12-14 11:28:37 +01:00
Jaroslav Kysela
c4ce18c47d linuxdvb: do not send switch command twice for rotor, add 'Switch Then Rotor' config 2014-12-14 11:20:13 +01:00
Jaroslav Kysela
3a6088cfd9 linuxdvb: fixed typo in the sat config (Longitude Direction West) 2014-12-14 11:10:28 +01:00
Jaroslav Kysela
388f57ecc3 linuxdvb rotor: fix USALS formula (removed debug code) 2014-12-14 10:24:14 +01:00
Jaroslav Kysela
27e3b34d8c mkv: add DESCRIPTION tag, fixes #2510 2014-12-13 21:53:26 +01:00
Jaroslav Kysela
98ed29fb67 DVR: write comments also for entries not based on EPG, fixes #2510 2014-12-13 21:44:46 +01:00
Jaroslav Kysela
ad16b3dbe7 linuxdvb rotor: change the USALS formula 2014-12-13 21:29:36 +01:00
Jaroslav Kysela
b0b48bdf85 rtsp: correct the timeout range (20-3600), warn user
- fix also small typo in linuxdvb rotor
2014-12-13 18:51:57 +01:00
Jaroslav Kysela
39d985be1c linux rotor: add more debug info to the USALS routine 2014-12-12 23:03:34 +01:00
Jaroslav Kysela
19dbe37cc0 mkmux: fix language selection for comment when primary languages are not set, fixes #2549 2014-12-12 22:45:21 +01:00
Jaroslav Kysela
9ce0c5542d linuxdvb rotor: small cleanups 2014-12-12 19:00:18 +01:00
Jaroslav Kysela
129bb84bf6 htsp: move I/O calls outside global lock 2014-12-12 16:38:30 +01:00
Jaroslav Kysela
9469ef0ddf dvbpsi: add hack for broken PMT tables 2014-12-12 16:25:15 +01:00
Jaroslav Kysela
c6d2a0912f DVR: Add episode check to the fuzzy EPG match 2014-12-12 14:16:04 +01:00
Jaroslav Kysela
a609cd2edb HTTP dvrfile streaming: add subscription handling - fixes #2540 2014-12-12 13:41:47 +01:00
Jaroslav Kysela
5ec120c378 ACL: Add HTSP Recorder permission, fixes #2541 2014-12-12 12:01:21 +01:00
Jaroslav Kysela
d6b59b9ee3 mpegts network: create new muxes when delivery system does not match, fixes #2544 2014-12-12 11:45:50 +01:00
Jaroslav Kysela
07a8f5ff06 SAT>IP: Do not enable the second RTSP SHUTDOWN sequence by default 2014-12-12 11:28:04 +01:00
Jaroslav Kysela
d760c4cb7c implement TSS_TUNING message for late tuning error notification (SAT>IP) 2014-12-12 11:19:26 +01:00
Jaroslav Kysela
0b416b3e29 fix SM_CODE_NO_VALID_ADAPTER constant 2014-12-12 08:56:37 +01:00
Jaroslav Kysela
d18fc1a422 tsdebug: avoid I/O when file descriptors are not set 2014-12-12 08:50:43 +01:00
Jaroslav Kysela
f98f580ee0 SAT>IP: Move complete I/O to the separate thread 2014-12-12 08:50:06 +01:00
Jaroslav Kysela
b0e030b326 descrambler: move the key change code to proper location 2014-12-08 20:39:21 +01:00
Jaroslav Kysela
67938bc9d9 descrambler: implement proper TS queue flush before key change, fixes #2171 2014-12-08 20:20:39 +01:00
Jaroslav Kysela
3535d7d22e globalheaders: reduce scan time, add warning for disabled streams 2014-12-08 16:13:56 +01:00
Jaroslav Kysela
0e8647a534 tsfix, htsp: wait only for first video stream 2014-12-08 15:51:05 +01:00
Jaroslav Kysela
8668734eff mpegts parser: speed & PCR extraction improvements 2014-12-08 15:27:28 +01:00
Jaroslav Kysela
2b2cb3236e tsdebug: add possibility to save the whole input mux with decrambler keys 2014-12-07 21:18:42 +01:00
Jaroslav Kysela
b87eb898c8 tvhpoll: cosmetic chage for cppcheck 2014-12-06 16:30:47 +01:00
Jaroslav Kysela
b659bce22d spawn: fix thinko in spawn_parse_args() 2014-12-06 16:29:55 +01:00
Jaroslav Kysela
75e4e787ed webui: fix hostpath memory leaks 2014-12-06 16:27:40 +01:00
Jaroslav Kysela
d254f520a6 utils: trivial cleanups 2014-12-05 22:46:01 +01:00
Jaroslav Kysela
5ba389bd86 WEBUI DVR: Add more informative questions for the delete operation 2014-12-05 20:11:40 +01:00
Jaroslav Kysela
da2ae270f5 profile: use pass as default profile when config files are corrupted 2014-12-05 19:41:10 +01:00
Jaroslav Kysela
2d7cda7eef idnode: implement sort for simple enums 2014-12-05 19:18:17 +01:00
Jaroslav Kysela
f20bab4aed service: Add possibility to disable automatic service checking per service 2014-12-05 13:20:40 +01:00
Jaroslav Kysela
a9d3e4a7d9 linuxdvb rotor: Zero Sat Longitude should be for USALS not for GOTOX 2014-12-05 11:07:08 +01:00
Jaroslav Kysela
5339e1a956 htsp server: fix NULL dereference in addDvrEntry 2014-12-04 21:00:16 +01:00
Jaroslav Kysela
c65dfa1884 service: use --- prefix for disabled services in GUI 2014-12-04 20:38:14 +01:00
Jaroslav Kysela
6391e7b6c5 create <CFG>/.lock file to protect sharing config directory 2014-12-04 17:11:18 +01:00
Jaroslav Kysela
89baf880d6 mpegts service: auto-disable services not seen in the PAT table 2014-12-04 16:24:37 +01:00
Jaroslav Kysela
95ef1c4c0b mpegts service: add created field (timestamp) 2014-12-04 15:14:50 +01:00
Jaroslav Kysela
4fcc326b98 bouquet: do not map disabled services, fixes #2525 2014-12-04 14:11:23 +01:00
Jaroslav Kysela
64eec14399 http: allow ACL with HTSP streaming to fetch icons from imagecache via HTTP, fixes #2529 2014-12-03 18:27:52 +01:00
Jaroslav Kysela
360dd56661 h264: handle NAL delimiter type, fixes #2456 2014-12-03 18:20:31 +01:00
Jaroslav Kysela
5caf1202fa tsfile: disable EPG by default 2014-12-03 18:13:18 +01:00
Jaroslav Kysela
a95ef0b237 transcode: fix for previous memory leak fix 2014-12-02 21:07:27 +01:00
Jaroslav Kysela
4e42e041c5 mpegts dvb: implement last seen, fixes #2528 2014-12-02 20:52:26 +01:00
Jaroslav Kysela
7db9f44a30 epggrab: xmltv - do not use any arguments by default 2014-12-02 19:58:01 +01:00
Jaroslav Kysela
638b870a19 transcode: fix memory leaks (audio, video) 2014-12-02 19:55:15 +01:00
Jaroslav Kysela
1b193a3f7d linuxdvb rotor: USALS addr zero longtitute 2014-12-02 17:16:39 +01:00
Jaroslav Kysela
6967a9a281 linuxdvb rotor: improve GOTOX mode (separate sat longtitute and position byte) 2014-12-02 17:10:39 +01:00
Jaroslav Kysela
3e505d77d9 epggrab: try to fix the thread kill & wrong memory access 2014-12-01 21:25:15 +01:00
Jaroslav Kysela
70b3ef658b IPTV: mux - fix simple memory leak 2014-12-01 20:50:29 +01:00
Jaroslav Kysela
bbed9a309e tsfile: keep valgrind happy (fix memory leaks) 2014-12-01 20:48:28 +01:00
Jaroslav Kysela
f63d16f605 htsmsg_xml: fix uninitialized variable access 2014-12-01 20:32:27 +01:00
Jaroslav Kysela
6b152b942d XMTTV: allow to specify arguments for grabbers, fixes #2516 2014-12-01 20:32:09 +01:00
Jaroslav Kysela
bb31907761 spawn: move argument parser from iptv_pipe 2014-12-01 17:03:28 +01:00
Jaroslav Kysela
bd20a5393c mkvmux: handle COMMENT tag in metadata, fixes #2511, fixes #2510 2014-11-30 18:44:00 +01:00
Jaroslav Kysela
8c743ba44b HTSP: add comment to DVR entry and all related APIs 2014-11-30 18:39:01 +01:00
Jaroslav Kysela
abfae4c9f8 channels: add Auto EPG Channel, fixes #2520 2014-11-30 17:03:54 +01:00
Jaroslav Kysela
01e7cc1478 xmltv: use --quiet argument for grabber binary 2014-11-30 15:32:30 +01:00
Jaroslav Kysela
1d9a3483a5 access: initialize correctly ACCESS_HTSP_STREAMING bitmask 2014-11-30 15:15:35 +01:00
Jaroslav Kysela
8265dbd902 ACL: add HTSP streaming, reshuffle fields, fixes #2518 2014-11-30 13:29:05 +01:00
Jaroslav Kysela
9778bca323 channel,tags: differentiate between user and admin (config) requests - use all argument, fixes #2517 2014-11-30 12:47:51 +01:00
Jaroslav Kysela
452ca85ff6 epg query: fix thinko 2014-11-28 17:45:26 +01:00
Jaroslav Kysela
1f1b36a9e2 imagecache: fix global mutex deadlock 2014-11-28 14:20:06 +01:00
Jaroslav Kysela
2ae32e61af tcp: fix error msg 2014-11-28 13:48:06 +01:00
Jaroslav Kysela
cf827862dc httpc: fix the EOC test in http_client_data_chunked() 2014-11-28 11:40:21 +01:00
Jaroslav Kysela
ea7c5b5056 Makefile.ffmpeg: do not try to use pkg-config to look for system libs 2014-11-27 21:19:36 +01:00
Jaroslav Kysela
36a06a66e0 uuid: use tvh_open instead direct open (O_CLOEXEC issue) 2014-11-27 12:17:14 +01:00
Jaroslav Kysela
c2c5b81330 transcode: improve mpeg2 global (meta) data parser 2014-11-27 09:08:02 +01:00
Jaroslav Kysela
60574bf3e4 mkmux: found another stupid bug in mk_mux_write_pkt 2014-11-26 20:53:23 +01:00
Jaroslav Kysela
39a4db4994 mkmux: always initialize component index in track and use only disabled (remove enabled) variable 2014-11-26 11:29:16 +01:00
Adam Sutton
3e4c0a39d2 support: updated list of apt dist builds 2014-11-26 09:50:02 +00:00
Jaroslav Kysela
3579d04f48 profile: fix sharing (missing STOP messages) 2014-11-25 13:56:45 +01:00
Jaroslav Kysela
fbe1f1f302 httpc: accept only LF (instead CR/LF) for HTTP headers to be tolerant according RFC 2014-11-25 12:34:41 +01:00
Jaroslav Kysela
448b0a4acd mkmux; Fix the cluster start (keyframe) 2014-11-25 10:56:02 +01:00
Jaroslav Kysela
4d6c1bba0e transcoding: fix the resample output buffer allocation 2014-11-25 10:15:30 +01:00
Jaroslav Kysela
bb07ead99b transcode: h264 - merge the meta data to output packet 2014-11-24 18:08:54 +01:00
Jaroslav Kysela
d37a0c6df4 doc: tags - improve private field documetation 2014-11-24 17:45:01 +01:00
Jaroslav Kysela
f4d0859337 fix libav muxer to keep sync with the internal H264 packet changes 2014-11-24 17:23:18 +01:00
Jaroslav Kysela
fe24184ded htsp server: review channel access verification, fixes #2505 2014-11-24 09:01:59 +01:00
Jaroslav Kysela
d6bfd1ffe6 access: optimization for the webroot ticket patch 2014-11-23 19:03:27 +01:00
Patrick Gaubatz
25e48734c9 minor code clean-up in access_ticket_verify2() 2014-11-23 19:03:27 +01:00
Patrick Gaubatz
3539dbf13d fix access_ticket_verify2() when using non-default webroot 2014-11-23 19:03:27 +01:00
Jaroslav Kysela
fe995bda63 channel tags: added private flag, fixes #2501 2014-11-23 18:41:19 +01:00
Patrick Gaubatz
d1bdce093d minor optimizations in http_get_hostpath() 2014-11-23 17:53:59 +01:00
Patrick Gaubatz
664d24308d http: this fixes streaming when tvheadend is behind a https reverse proxy *and* a non-default webroot (e.g. /tvheadend) 2014-11-23 17:53:59 +01:00
Jaroslav Kysela
085fd89465 service: another STOP/START msg cleanup 2014-11-23 17:47:42 +01:00
Jaroslav Kysela
3ba0ae6e62 service: try to fix the service_restart START/STOP msg mismatch 2014-11-23 17:01:31 +01:00
Jaroslav Kysela
44633b8f74 access: fix copy-and-paste error for the destroy fcns 2014-11-23 16:39:03 +01:00
Jaroslav Kysela
e874526824 channel tags: fix permissions code (for HTSP and HTTP API), fixes #2501 2014-11-23 16:13:17 +01:00
Jaroslav Kysela
3081776240 H264 parser: add the rest of frame (after 01Ex start code), fixes#2482 2014-11-22 22:07:36 +01:00
Jaroslav Kysela
1a622c1b67 xmltv: add --quiet argument to the internal search 2014-11-22 18:42:20 +01:00
Jaroslav Kysela
ea23369c5d H264 parser: do not merge header NAL units twice 2014-11-22 18:20:37 +01:00
Jaroslav Kysela
da3d9ecb48 channel enhancements (enabled), fixed min/max chnum handling (access) 2014-11-21 18:02:27 +01:00
Prof Yaffle
00f3cc0e8a WebUI: Enable animated rollup on idnode panels for UI consistency 2014-11-21 15:13:00 +01:00
Prof Yaffle
701e6b373d WebUI: Add rollup-on-create to idnode panels; set readonly panels to rolled up by default 2014-11-21 15:13:00 +01:00
Christian Karrié
ba4bb99489 40px should be ok 2014-11-21 15:13:00 +01:00
Christian Karrié
daae05eb75 small UI update to see values greater than 999 2014-11-21 15:13:00 +01:00
Jaroslav Kysela
3ba5bb9d0b bouquets: add --nobat debug option 2014-11-21 15:10:49 +01:00
Jaroslav Kysela
6bcecff056 epggrab: ota - add more traces 2014-11-21 14:22:36 +01:00
Jaroslav Kysela
a670ec1eee dvb_psi: fix build error for \!DVB config 2014-11-21 08:59:12 +01:00
Jaroslav Kysela
a6420f9713 DVR config: allow admin access (without DVR permissins) to the DVR config entries 2014-11-20 20:21:44 +01:00
Jaroslav Kysela
d0a6684f40 dvb psi: LCN updates 2014-11-20 20:09:43 +01:00
Jaroslav Kysela
898f88a098 dvb psi: fix the table completion notification 2014-11-20 16:53:18 +01:00
Jaroslav Kysela
98854eaacd IPTV: pipe - add respawn option and environment option 2014-11-20 15:04:17 +01:00
Jaroslav Kysela
68b07236d0 mpegts network scan: do not be too frequency strict for the forced bouquet scan 2014-11-20 13:22:21 +01:00
Jaroslav Kysela
f7d356cff2 bouquets: fastscan - do not check the frequency too strictly 2014-11-20 12:28:13 +01:00
Jaroslav Kysela
1ddd261627 iptv pipe: skip the character after backslash 2014-11-19 23:20:42 +01:00
Jaroslav Kysela
dbd31acc3c DVR: improve the episode name saving, fixes #2357 2014-11-19 20:04:32 +01:00
Jaroslav Kysela
c7d08fb316 avc parser: little optimization, pkt_meta is not used in avc_convert_pkt 2014-11-19 17:39:09 +01:00
Jaroslav Kysela
bf1c902fbf H264: move avc parsing from globalheaders to mkv mux 2014-11-19 17:29:16 +01:00
Jaroslav Kysela
b70fa32a71 Partial revert "htsp: another fix for H264 - headers merge"
This reverts commit 33792bf601.
2014-11-19 16:50:20 +01:00
Jaroslav Kysela
207fcbfb10 channel: fix channel_get_icon() - memory leak and handling 2014-11-19 15:23:27 +01:00
Piotr Kuchciak
a0a26513ff WEBUI EPG: small fix name 2014-11-19 14:47:09 +01:00
Jaroslav Kysela
f34f872cb9 SAT>IP: Change the default number of positions for IPLNB to 1 2014-11-19 14:44:43 +01:00
Jaroslav Kysela
b0e31dd880 DVR: Move freeing of some variables to dvr_entry_dec_ref() 2014-11-19 13:50:54 +01:00
Jaroslav Kysela
6ddbd16704 DVR: Store episode string to storage, fixes #2357 2014-11-19 13:47:52 +01:00
Jaroslav Kysela
f15b8a6978 epggrab: ota - om_complete load fix 2014-11-19 13:17:50 +01:00
Richard Kunze
e59a8b41e7 Fixed iconv handle type
Signed-off-by: Richard Kunze <richard.kunze@web.de>
2014-11-19 13:04:54 +01:00
Jaroslav Kysela
a2dfb056ea WEBUI JS: Aligh time properly in EPG/DVR dialogs 2014-11-19 13:03:41 +01:00
Piotr Kuchciak
8aee57930d WEBUI JS: cosmetic changes for dvr and epg dialogs 2014-11-19 12:45:24 +01:00
Jaroslav Kysela
33792bf601 htsp: another fix for H264 - headers merge
The real headers merge is in avc_convert_pkt() but this is called
only from the global headers plugin. Add the global headers plugin
to all HTSP chains.

This patch removes the merging from the TS parser.
2014-11-19 11:39:46 +01:00
Jaroslav Kysela
7743670045 iptv pipe: fix the backslash handling 2014-11-19 08:45:12 +01:00
Jaroslav Kysela
5df9cdf97d epggrab: ota - fix om_requeue handling 2014-11-18 21:01:14 +01:00
Jaroslav Kysela
4f68d03875 iptv pipe: handle the backslash character, fixes#2487 2014-11-18 20:44:00 +01:00
Jaroslav Kysela
fa22f18dfc dvb support: revert dvb_sat_position_to_str() change (missing direction character) 2014-11-18 15:07:22 +01:00
Jaroslav Kysela
a0e69f8c7e linuxdvb: add more traces to linuxdvb_frontend_network_list() 2014-11-18 13:39:00 +01:00
Jaroslav Kysela
d49e965738 http: improve the request dump (for post) 2014-11-18 13:34:29 +01:00
Jaroslav Kysela
46f7e41e62 bouquet: extend help 2014-11-18 13:32:32 +01:00
Jaroslav Kysela
ccf64a0c57 hdhomerun: remove hf_master code - not used 2014-11-18 10:48:54 +01:00
Jaroslav Kysela
c119b442dd linuxdvb,satip,hdhomerun: make uuid persistent per tuner 2014-11-18 10:47:20 +01:00
Jaroslav Kysela
a2d7e1797c spawn: implement spawn_kill, improve IPTV pipe (busy loop) 2014-11-18 09:45:17 +01:00
Jaroslav Kysela
4290f79748 spawn: allow spawnv stdout/stderr redirection to logs 2014-11-18 09:10:48 +01:00
Jaroslav Kysela
fc7e0f4a36 spawn: reshuffle code to get proper stdin for spawned process 2014-11-17 23:26:18 +01:00
Jaroslav Kysela
29ccb30ff6 spawn: another cleanups in spawn_and_give_stdout() 2014-11-17 23:17:19 +01:00
Jaroslav Kysela
2cee0bfeb6 spawn: more CLOEXEC fixes 2014-11-17 22:01:33 +01:00
Jaroslav Kysela
cee7147eef spawn: improve the pipe log reading 2014-11-17 17:13:16 +01:00
Jaroslav Kysela
9cabe1ad55 fix DVR docs - fixes#2483 2014-11-17 15:07:13 +01:00
Jaroslav Kysela
7c1ff4740b spawn: remove spawn_and_store_stdout() 2014-11-17 14:57:46 +01:00
Jaroslav Kysela
c4f30d1e51 iptv pipe: fix url / arg parsing bug, add ${service_name} substitution 2014-11-17 14:57:35 +01:00
Jaroslav Kysela
7548fc5c3e spawn: introduce tvh_fopen() to close fds for spawned processes 2014-11-17 14:22:40 +01:00
Jaroslav Kysela
a563d786e9 spawn: add thread for fast info/error messages, fix spawn_pipe_read() 2014-11-17 14:14:43 +01:00
Jaroslav Kysela
3f7ac5b5e0 spawn: fix a compiler warning (unused-variable) 2014-11-17 08:57:35 +01:00
Jaroslav Kysela
0d10db2514 IPTV: add pipe:// handler to read MPEG-TS stream from an external program 2014-11-16 22:30:39 +01:00
Jaroslav Kysela
003c4a2699 spawn: implement spawn_and_give_stdout() 2014-11-16 21:17:28 +01:00
Jaroslav Kysela
b2290d30a8 spawn: do not use syslog calls in the child process
The syslog routines uses private mutex so it can cause
various crashes and other misbehaviour.

Use pipes to send messages from the child processes.
2014-11-16 21:06:02 +01:00
Jaroslav Kysela
0bb2356a5f simplify file_readall() 2014-11-16 20:32:03 +01:00
Jaroslav Kysela
114298ad15 spawn: fix possible NULL dereferences 2014-11-16 19:41:02 +01:00
Jaroslav Kysela
b6fcb4523d WEBUI JS: Add start/stop times to epg dialog, more cosmetic changes for EPG/DVR dialogs 2014-11-16 16:29:30 +01:00
Jaroslav Kysela
e065cf6823 Fix H264 packet merging, fixes #2480 2014-11-16 16:08:09 +01:00
Jaroslav Kysela
fcd16fa0d8 mpegts scan: fix the wrong constant usage (idle scan) 2014-11-16 11:33:28 +01:00
Jaroslav Kysela
37bee9eb5e mpegts_input_open_pid: fix the wrong variable assignment 2014-11-16 11:04:09 +01:00
Jaroslav Kysela
6ce9b4d3b1 mpegts input: another optimization for mpegts_mux_find_pid_() 2014-11-16 10:54:36 +01:00
Jaroslav Kysela
eb600253ae mpegts_mux_start: add flags to the trace log 2014-11-16 10:50:53 +01:00
Craig Forbes
745cc6f70c Fix double free of hdhomerun_debug_obj
Bug #2479
2014-11-15 18:36:49 +01:00
Jaroslav Kysela
dd6c882bc8 mpegts input: optimize the mpegts_mux_find_pid_() for last change 2014-11-15 18:34:53 +01:00
Jaroslav Kysela
7f1d851a40 mpegts input: protect global variable mpegts_pid_skel using mutex
- the skel variable is shared in multiple thread
- also remove mpegts_pid_sub_skel, it's not used frequently
2014-11-15 16:30:05 +01:00
Jaroslav Kysela
fbf7a3da3c mpegts input: add back last_mp, it should be safe
The PID subscriptions are protected using mi_output lock, so
the whole mpegts_input_process() subroutine should be safe
for the mp structure caching.
2014-11-14 19:05:24 +01:00
Jaroslav Kysela
47ecb74bee mpegts input: tiny optimization 2014-11-14 18:45:34 +01:00
Jaroslav Kysela
74a3b77e5f mpegts input: only cleanups for mi_output_lock 2014-11-14 18:41:20 +01:00
Jaroslav Kysela
fdbe678793 mpegts network scan: remove debug printf(), add help for init+idle scan checkboxes 2014-11-14 15:37:48 +01:00
Jaroslav Kysela
af4a2af9ab mpegts inputs: allow to disable init/idle scan per tuner/input, fixes #2475 2014-11-14 15:07:37 +01:00
Piotr Kuchciak
7e5abcb0c4 WEB UI: add icon for button in windows add
http://www.softicons.com/toolbar-icons/flatastic-icons-part-1-by-custom-icon-design/cancel-icon
2014-11-12 16:40:29 +01:00
Jaroslav Kysela
322f6c6af9 linuxdvb: Add Skip Initial Bytes... 2014-11-12 16:39:43 +01:00
Jaroslav Kysela
8fca50269a Makefile: remove python3 explicit call 2014-11-12 11:51:18 +01:00
Jaroslav Kysela
1a97e86aa6 WEBUI: DVR tabs - improvde filesize renderer 2014-11-12 11:50:43 +01:00
Jaroslav Kysela
e296f3c3ac WEBUI JS: change stop recoding behaviour from delete to abort, fixes#2472 2014-11-12 10:36:23 +01:00
Jaroslav Kysela
99907809bb mpegts table: use atomic refcounting 2014-11-12 10:35:33 +01:00
Jaroslav Kysela
7211380a9e mpegts input: fix possible NULL dereference (fix for the last patch) 2014-11-12 09:52:55 +01:00
Jaroslav Kysela
053c0e4bc3 mpegts input: remove wrong implemented mi_stop flag, depend on mm_active, fixes #2468 2014-11-12 09:47:45 +01:00
Jaroslav Kysela
afdd605341 mkbundle: another StringIO fix, python3 conversion, fixes #2469 2014-11-11 22:43:44 +01:00
Jaroslav Kysela
e0f8ee4669 dvb: add MHz to display mux name, fixes #2466 2014-11-11 12:16:53 +01:00
Jaroslav Kysela
6c6c69d81c iptv: fix iptv_lock mutex deadlock for http client, fixes #2465 2014-11-11 10:12:48 +01:00
Jaroslav Kysela
3cc291c2ed mkbundle: fix missed StringIO usage instead cStringIO.StringIO, fixes #2461 2014-11-10 20:34:36 +01:00
Jaroslav Kysela
7c00e47c24 access, esfilter: reindex calls fix, fixes #2462 2014-11-10 20:32:10 +01:00
Jaroslav Kysela
dc399207eb another --disable-trace compilation fixes, fixes #2460 2014-11-10 20:17:22 +01:00
Jaroslav Kysela
c3c767549b http streaming: DVR file - fix wrong lseek check 2014-11-10 19:53:41 +01:00
Jaroslav Kysela
307354abd6 tsfix: deliver TELETEXT packets without DTS, remove warnings for this case 2014-11-10 19:16:25 +01:00
Jaroslav Kysela
4d86a34aff doc: a note about Idle Scan Muxes for SAT>IP 2014-11-10 17:45:28 +01:00
Jaroslav Kysela
89d0dd25c6 access: fix typo, fixes #2460 2014-11-10 15:07:33 +01:00
Piotr Kuchciak
da342d8e8c WEBUI: icon for Bouquets tab 2014-11-10 15:07:33 +01:00
Piotr Kuchciak
56b0012f4a WEBUI: Cosmetic change icon
-DVR changed icon download

http://www.softicons.com/business-icons/flatastic-icons-part-4-by-custom-icon-design/download-icon
-upcoming/current rec changed icon

http://www.softicons.com/system-icons/oxygen-icons-by-oxygen/actions-view-calendar-upcoming-days-icon
-changed icon Abort for round style

http://www.softicons.com/toolbar-icons/flatastic-icons-part-1-by-custom-icon-design/delete-circle-icon
2014-11-10 15:05:51 +01:00
Piotr Kuchciak
36a60f8f9e WEBUI EPG: Change text and icon for stop button 2014-11-10 15:05:51 +01:00
Jaroslav Kysela
d1f43ae2c0 another coverity fix in access.c 2014-11-10 14:38:38 +01:00
Jaroslav Kysela
758a5b9b8d bouquet: fix comment memory-leak 2014-11-10 14:27:31 +01:00
Jaroslav Kysela
4e63e0d74a coverity fixes.... 2014-11-10 14:25:14 +01:00
Jaroslav Kysela
1efe779dbb mpegts input: add more lock_asserts 2014-11-10 13:39:57 +01:00
Jaroslav Kysela
5a07ff166a mkbundle: add support for python3, fixes #2444 2014-11-10 09:46:24 +01:00
Jaroslav Kysela
679989e91f channel: add mux to OTA EPG queue when service is mapped to channel to grab EPG ASAP, fixes #2447 2014-11-10 09:44:03 +01:00
Jaroslav Kysela
4c1f0fa1b6 xmltv: parser - dates and times without a explicit timezone are in UTC, fixes #2449 2014-11-10 09:13:13 +01:00
Jaroslav Kysela
f35f00fd7a bouquets: allow compilation without ENABLE_MPEGTS_DVB, fixes #2458 2014-11-10 08:51:00 +01:00
Jaroslav Kysela
1a9f8d463a bouquets: dvb_psi - move regions to dvb_bat_id_t 2014-11-09 21:51:12 +01:00
Jaroslav Kysela
ffbc62a0ee mpegts network idlescan: fix behaviour, add more documentation, fixes #2422 2014-11-09 20:34:20 +01:00
Jaroslav Kysela
ab810bb517 WEB UI CSS: fix tv_cards.git - .png typo... 2014-11-09 20:25:00 +01:00
Jaroslav Kysela
0b2e072076 mpegts tables: reorganize destroy / mt_subscribed code 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
e2df5d2700 bouquets: optimize the bouquet creation loops 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
bb3f3fa00b bouquet: BSkyB / Freesat: another fix for duplicated / missing services 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
e55d7c5284 bouquets: BSkyB/Freesat - don't create services with duplicate chnums 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
858f73b529 dvb_psi: fix the bouquet lcn 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
deb9473e22 dvb_psi: cosmetic - remove extra new-lines from traces 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
0c9f5921b8 WEB UI: cteditor - fix internet explorer array 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
34f803a7c7 dvb_psi: improve stype logs 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
ae95ede165 bouquet: improve the LCN handling for fastscan and dvb bouquets 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
2b909f2601 bouquet: fix rescan for the enabled bouquet 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
966d3a898a dvb_sat_position_from_str - fix the parsing for positions without dot 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
abef913871 bouquet: prepare storage for tags 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
f2f3c9d5cf bouquets: BSkyB - improve the region list, enable all regions, fix bouquet creation 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
7e99756d3c bouquet: do not keep services for not enabled bouquets, fix bouquet delete 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
bdaab51c30 bouquet: fix the per-bouquet LCN handling 2014-11-08 21:05:39 +01:00
Jaroslav Kysela
1af5f9f5d1 bouquet: another satellite position fix 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
b11b218d7b epggrab: ota - fix the stolen mux requeue 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
9ed76a5753 bouquet: write mux name to comment 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
2b93b1e04d bouquet: fix the nit fastscan service list 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
cd0d7363a3 bouquets: enhanced help 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
f60ecec797 bouquets: scan + bat tables - fix the scan end condition for bouquets 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
851982fdbf bouquets: add mapradio to webui 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
d2aac3ec87 idnode set: add sorted insert / lookup for bouquets 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
14537475fa uuid: add inline for hexnibble 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
d08ec05ae7 bouquets: reduce BSkyB region to one (CPU usage) 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
95fb7aa627 bouquet: cosmetic (logs) 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
213fc145bf bouquets: freesat/bskyb - fix the bouquet update logic (do not add duplicate services) 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
aae5ac1f02 bouquet: add map radio 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
cfca93866c bouquet: notify about a new bouquet 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
fd5a2758e3 bouquets: add BSkyB support 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
0d05c293db bouquets: add initial help file 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
af2979d233 mpegts network: cosmetic # Channels - # Mapped Channels 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
4a9eee89c0 bouquets: dvb - change again url, add tsid (to avoid wrong merges) 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
fb33f89200 dvb fastscan: fix mux find method 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
8060bbd551 dvb_support: don't use negative values for satpos 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
ab51ae2f80 bouquet: freesat support 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
8812f5c51c bouquet: use hard channel tag link to allow tag renaming 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
75cdc2831b bouquet: notify channels on lcn offset change 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
7b086cbede bouquets: add noname, no channel, channel tag options 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
77d4d392eb fastscan: add missing files 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
4de6525170 fastscan/bouquet: the satpos in local urls is human readable now 2014-11-08 21:05:38 +01:00
Jaroslav Kysela
42901e6140 bouquets: add auto-map, auto-remove features 2014-11-08 21:05:37 +01:00
Jaroslav Kysela
7134315e0f bouquet,fastscan: initial implementation 2014-11-08 21:05:37 +01:00
Jaroslav Kysela
a9b1d171be idnode: fix the string filter for webui 2014-11-07 18:12:50 +01:00
Jaroslav Kysela
ea904c66f8 api epg: do not provide the DVR info to users without permissions 2014-11-07 17:07:57 +01:00
Jaroslav Kysela
94daa8bb74 WEBUI JS: Improved the EPG details dialog
- moved play / search IMBD outside DVR condition
- added stop DVR button (if applicable)
2014-11-07 17:07:56 +01:00
Piotr Kuchciak
e012bf8cce WEBUI: cosmetic changes
-changed icon for adapters
-scheduled icon changed:
https://www.iconfinder.com/icons/8810/calendar_date_time_icon#size=16
-time schedule icon changed:
https://www.iconfinder.com/icons/9211/calendar_diary_today_icon#size=16
-add icon for Reset All in EPG page
2014-11-07 15:56:44 +01:00
Piotr Kuchciak
80563f189b WEBUI: Add icon for button save in tab TV Adapters 2014-11-07 15:55:56 +01:00
Piotr Kuchciak
046a998640 DVR: Details upcomin, finished and faild recordings
Add more description to details upcoming, finished and failed
recordings.
-add episod
-add start schedule
-add stop schedule
-add duration
-add file size
2014-11-07 15:55:55 +01:00
Mikael Karlsson
e7b613bf06 webui: Fixes in webui/static scripts for Internet Explorer 2014-11-07 15:54:52 +01:00
Piotr Kuchciak
2ad7585597 WEBUI: small cosmetic changes
-add tooltip for button Reset All in EPG

How i can add tooltip or qtip to for example in EPG to icon Broadcast
Details ? When i add some qtip and info this not show when i narrow
mouse(select mouse).
2014-11-07 15:54:51 +01:00
Jaroslav Kysela
f1da79f5d1 dbus: fix the hang dbus_shutdown() hang when dbus is not active 2014-11-03 21:22:47 +01:00
Jaroslav Kysela
464383aceb profile: don't create duplicate profile when it's not enabled 2014-11-02 16:33:01 +01:00
Jaroslav Kysela
fa48fe7c87 profile: try to keep the default htsp profile even when not set in ACL 2014-11-02 16:21:42 +01:00
Jaroslav Kysela
723a7ed168 profile/service: sharer - fix the stop/reconfiguration 2014-11-02 16:16:01 +01:00
Jaroslav Kysela
409b0140c6 subscription: add profile name to creating subscription log 2014-11-02 13:30:59 +01:00
Jaroslav Kysela
c053acd84e WEBUI JS: EPG - moved IMDB search to a button, add play button handler 2014-10-31 16:40:10 +01:00
Piotr Kuchciak
e8d0cad90a DVR: Update icon with source URL
http://www.fancyicons.com/free-icon/112/must-have-icon-set/free-download-icon-png/
2014-10-31 16:18:43 +01:00
Piotr Kuchciak
20dd7ad958 WEBUI: update icon schedule recording and tab Time Schedule
Source icon:

http://www.fancyicons.com/free-icon/103/pretty-office-2-icon-set/free-event-calendar-icon-png/

http://www.softicons.com/toolbar-icons/pretty-office-v-icons-by-custom-icon-design/schedule-icon
2014-10-31 16:18:43 +01:00
Piotr Kuchciak
ab731f7534 Update icon general
Updated icon to general because for previous i can not found source.

http://www.softicons.com/system-icons/crystal-clear-icons-by-everaldo-coelho/apps-advanced-settings-icon
2014-10-31 16:18:43 +01:00
Piotr Kuchciak
e48853e6de WEBUI: update icons muxes and general to looks better and most friendly 2014-10-31 16:18:43 +01:00
Piotr Kuchciak
1034081317 WEBUI: add icons for windows and cosmetic changes 2014-10-31 16:18:43 +01:00
Piotr Kuchciak
96bc6d894b EPG: small changes
-Add button PLAY ( for replace link PLAY, @perexg please write function
for this button because i dont know how, and then remove link PLAY under
SEARCH IMDB)
-add tooltip for buttons
-add icon for window Broadcast Details
2014-10-31 16:18:43 +01:00
Piotr Kuchciak
c083aeec26 Update icon
Update icon because to previous i have not source. For this is:

http://www.softicons.com/system-icons/oxygen-icons-by-oxygen/actions-document-info-koffice-icon
2014-10-31 16:18:43 +01:00
Piotr Kuchciak
66316f22f6 WEBUI: update icon broadcast_details to looks better and change icon networks in color blue 2014-10-31 16:18:43 +01:00
Jaroslav Kysela
fc96ba2f75 cwc: reset preferred CA PID when NOKs are received and PID is not locked 2014-10-31 15:38:36 +01:00
Piotr Kuchciak
d347c3d381 WEBUI: cosmetic changes Live TV Player
-changed icon in Live TV Player: play, pause, stop
2014-10-30 14:57:50 +01:00
Jaroslav Kysela
9449a285ba Remove some icons 2014-10-30 14:57:46 +01:00
Jaroslav Kysela
eef6f429b4 Merge branch 'cosmetic' of git://github.com/PiterEL/tvheadend into a 2014-10-30 14:38:57 +01:00
Jaroslav Kysela
03578d3226 mpegts mux scheduler: fixed crash, fixes #2434 2014-10-30 14:24:22 +01:00
Piotr Kuchciak
978e7f831e WEBUI: cosmetic changes
-changed icon in Live TV Player: play, pause, stop
-cosmetic in Live TV Player
-changed icon for broadcast details and cosmetic name field, and add
icon for buttons (Please add button STOP RECORD about button RECORD
PROGRAM !!! and moved link PLAY about DVR PROFILE SELECT as BUTTON)
-changed icon in details for finished recordings in DVR
-changed windows size for broadcast details
-add icon for title help window
-changed icon tab EPG
-changed icon tab DVR
2014-10-30 08:41:28 +01:00
Beralt
9bb73c118d tvhdhomerun: only run discovery once upon startup (fixes #2418) 2014-10-28 21:08:29 +01:00
Piotr Kuchciak
7c523992ef webTV: changed icon full screen 2014-10-28 21:08:29 +01:00
Jaroslav Kysela
863ea6f707 mpegts input: mm_active cleanups, fix also memory leak introduced by mi_stop 2014-10-28 21:02:39 +01:00
Jaroslav Kysela
a4cfbb99b0 service: log the instance source 2014-10-28 10:26:30 +01:00
Jaroslav Kysela
6b5c0cde45 DVR: all states starting with recording should be allowed to abort, fixes #2390 2014-10-27 19:49:20 +01:00
Jaroslav Kysela
5e0908cc7f DVR: NOSTATE belogs to the upcoming recordings - user is allowed to edit it, fixes #2426 2014-10-27 19:48:18 +01:00
Jaroslav Kysela
5a672586e9 help: access config - enhance combining description 2014-10-27 14:26:43 +01:00
Piotr Kuchciak
4a52ff5f2e HELP: Update text for streamin profile 2014-10-27 14:24:04 +01:00
Piotr Kuchciak
a03231482c HELP: update help for access 2014-10-27 14:24:04 +01:00
Jaroslav Kysela
466d27b7fe mpegts service: Add Ignore EPG (EIT) checkbox, fixes #2410 2014-10-27 14:21:47 +01:00
Jaroslav Kysela
32b51737ba udp: improve udp_bind_double 2014-10-26 22:42:07 +01:00
Jaroslav Kysela
6e82328003 channel icon: fix the wrong load sequence (lost services) 2014-10-26 21:43:08 +01:00
Jaroslav Kysela
dec23cab69 http server: improve shutdown for streaming 2014-10-26 21:43:08 +01:00
Jaroslav Kysela
46ce1de009 mpegts input: cleanups in locking and queue shutdown 2014-10-26 21:43:05 +01:00
Jaroslav Kysela
16363a4ae3 http server: added dump request trace 2014-10-26 18:26:01 +01:00
Jaroslav Kysela
be8279c60a profile: add chain reopen function for DVR,fixes #2419 2014-10-26 18:01:47 +01:00
Jaroslav Kysela
68f7acaca8 webui: http streaming - cosmetic changes, check getsockopt return code 2014-10-26 17:47:19 +01:00
Jaroslav Kysela
73f781efe2 muxer libav: do not write new data when an error occured, fixes #2420 2014-10-26 17:46:52 +01:00
Jaroslav Kysela
eea8a5a374 tsfix: substitles might have large time gaps, fixes #2423 2014-10-26 17:07:53 +01:00
Jaroslav Kysela
af9cb5b805 profile: fix typo 2014-10-26 16:27:06 +01:00
Jaroslav Kysela
b80c232fc2 access: added access rights dump to check active ACL (trace) 2014-10-25 21:38:20 +02:00
Jaroslav Kysela
daa9788c42 profile: add profile work sharing 2014-10-25 21:38:20 +02:00
Jaroslav Kysela
596b4e0b29 http: return correct error code to obtain authorization, fix http_access_verify_channel - mask check 2014-10-24 21:21:42 +02:00
Piotr Kuchciak
38f73e1c90 HELP: Update help text AutoREC and Time Schedules 2014-10-24 18:06:05 +02:00
Piotr Kuchciak
e639c8d63c HELP: Update images and preparations to fields to help text 2014-10-24 18:06:05 +02:00
Jaroslav Kysela
e8eb6eb311 streaming: msg_free - allow NULL ptr as input 2014-10-24 18:03:28 +02:00
Jaroslav Kysela
c77e07d1e9 epggrab: enhance eit trace 2014-10-24 18:00:25 +02:00
Jaroslav Kysela
8a0078d7ed streaming: change streaming_pad_deliver() semantics 2014-10-24 17:59:20 +02:00
Jaroslav Kysela
ad5f59ce14 timeshift: move the pts_delta init code to a function 2014-10-24 09:02:21 +02:00
Jaroslav Kysela
c23eca2b0b tsfix: Fix the decision boundary for ts_diff, handle reference for text subtitles, too 2014-10-24 08:53:24 +02:00
Jaroslav Kysela
9c6b8c2975 tsfix: apply local reference for teletext if the MPEG-TS encoder is crazy 2014-10-23 21:55:08 +02:00
Jaroslav Kysela
c297aa739a tsfix: remove if (1) condition 2014-10-23 21:30:23 +02:00
Jaroslav Kysela
a8b96b7b8a mpegts table: add more traces 2014-10-23 20:43:31 +02:00
Jaroslav Kysela
2ad44b0acf timeshift: add little comment to last pts delta fix 2014-10-23 18:19:11 +02:00
Jaroslav Kysela
1d2df400b5 dvb support: more fixes in conv_utf8() - fixes#2414
- add ucs2 for 0x14
- fix the first character skip for 0x15 (utf8)
2014-10-23 18:12:31 +02:00
Jaroslav Kysela
82b17a74fd timeshift: for initial pts value, scan more packets (now 6) 2014-10-23 15:24:41 +02:00
Jaroslav Kysela
6106b71a6e tsfix: fix pts/dts for all streams (including teletext) 2014-10-23 15:22:56 +02:00
Piotr Kuchciak
4ad249ec01 WEBUI: Changed icon
-Clean icon image cache
-Reset Icon
2014-10-23 11:15:59 +02:00
Piotr Kuchciak
4c3ff47cca HELP: Update image for help
-Configuration > General
-Channel/EPG > Channels
2014-10-23 11:15:59 +02:00
Jaroslav Kysela
777b3484f6 profile: fix timeshift creation for htsp profile, add more timeshift logs 2014-10-23 11:15:03 +02:00
Jaroslav Kysela
d0ee05985e config: fix prefer_picon name in the storage structure, fixes #2413 2014-10-23 08:37:56 +02:00
Jaroslav Kysela
ea0ea5861f webui: /play - direct streaming for no user-agent providers, remove VLC for direct
(note vlc is fine with playlists and shows the correct title for matroska)
2014-10-23 08:27:21 +02:00
Jaroslav Kysela
59206653fb webui: the /play redirector - add more user-agent direct streaming, fixes #2412
- 'VLC/'
- 'MPlayer '
- 'Lavf/' (ffmpeg, libav)
- shoutcastsource (some media players?)
2014-10-22 22:21:46 +02:00
Jaroslav Kysela
472d1e9691 service mapper: fix the abort due to missing streaming target initialization 2014-10-22 21:56:05 +02:00
Jaroslav Kysela
e7e6754c8d muxer libav: review again the h264 filter payload free code 2014-10-22 21:47:49 +02:00
Jaroslav Kysela
2e15888712 webui: changed rights for playlist, dvrfile, fixes #2409
- /dvrfile requires (advanced) streaming or recorder rights
- /play requires (advanced) streaming or recorder rights
- /playlist requires rights depending on functionality
  - dvr playlists requires recording rights
  - channel and tags playlist requires streaming rights
2014-10-22 21:26:34 +02:00
Jaroslav Kysela
917fb808a0 htsp server: fixed wrong condition (profile_chain_work) 2014-10-22 17:47:00 +02:00
Jaroslav Kysela
afacbb3dd7 profile: fixed copy-and-paste error 2014-10-22 17:35:45 +02:00
Jaroslav Kysela
584c8c28c8 dvb get string: allow to override charset when auto detection fails, fixes #2407 2014-10-22 16:43:10 +02:00
Jaroslav Kysela
e21b2207cc mpegts: allow to remove dvb service 2014-10-22 16:28:22 +02:00
Jaroslav Kysela
c2609312d0 profile/subscription: use profile chain everywhere, add profile refcounting 2014-10-22 16:17:29 +02:00
Jaroslav Kysela
97e7f1a86d profile: added unique id (service or channel) to profile chains 2014-10-22 14:48:57 +02:00
Jaroslav Kysela
aa53af579a profile: move all stream chain code to profile.c from htsp_service.c 2014-10-22 14:31:24 +02:00
Jaroslav Kysela
fcb7b833b0 profile: fix profile_chain_open (for profiles without muxing) 2014-10-22 10:17:55 +02:00
Jaroslav Kysela
46e75c2a2d Makefile: fix distclean 2014-10-22 10:08:36 +02:00
Jaroslav Kysela
469f8343d7 WEBUI JS: Add channel icon reset 2014-10-22 10:06:23 +02:00
Jaroslav Kysela
9da4003dac global config: allow to prefer picons or channel names for auto icon urls, fixes #2403
- also do file access checks to choose
2014-10-22 10:06:23 +02:00
Jaroslav Kysela
f0d25a5195 WEBUI JS: Debugging tab - change save to apply 2014-10-22 10:06:12 +02:00
Jaroslav Kysela
c2661b0dc7 WEBUI: Add more documentation for Debugging tab, fixes #2398 2014-10-21 21:12:55 +02:00
Jaroslav Kysela
54e7efa674 mpegts input: simplify and make faster the TS input stop procedure 2014-10-21 21:00:19 +02:00
Jaroslav Kysela
109939d585 webui: return service unavailable (503) rather than bad request (400) for unavailable streaming 2014-10-21 20:59:37 +02:00
Jaroslav Kysela
e1d8c2a68c mpegts tables: protect more mt structure in open/close, fix memory leak (missing release), enhance traces 2014-10-21 16:46:00 +02:00
Jaroslav Kysela
250666e40a descrambler: code style changed, added opaque to pid traces 2014-10-21 16:44:41 +02:00
Jaroslav Kysela
43a7a077e6 mpegts mux: the mm_pids flush must be protected by mi_output_lock 2014-10-21 16:07:59 +02:00
Jaroslav Kysela
33449e80f5 muxer libav: fix another memory leaks caused by wrong ffmpeg code 2014-10-21 14:54:57 +02:00
Jaroslav Kysela
15db6d188a epggrab: channels - fix another leaks in epggrab_channel_destroy() 2014-10-21 13:44:41 +02:00
Jaroslav Kysela
ace1b95fd1 epggrab: fix leak in epggrab_module_ch_save() 2014-10-21 13:41:39 +02:00
Jaroslav Kysela
7d87d20d03 IPTV: fix muxname leak in iptv mux class 2014-10-21 13:39:22 +02:00
Jaroslav Kysela
a0d7d97403 imagecache: allow to clean the image cache through General Configuration tab 2014-10-21 13:36:16 +02:00
Jaroslav Kysela
3e8cd7d7f0 channels: icon - generate default channel icon using channel name and path in global config, fixes #2393 2014-10-21 11:20:52 +02:00
Jaroslav Kysela
55d410cdbc WEBUI JS: idnode - fix the tree updating, expanding and selection (TV adapters) 2014-10-21 10:05:55 +02:00
Jaroslav Kysela
43e805d608 mpegts tables: added mpegts_table_consistency_check to invoke psi tables inconsistency early 2014-10-20 20:35:15 +02:00
Ian
93056943b6 WebTV: Correct remote sort (defaultL: by channel number) 2014-10-20 19:38:09 +02:00
Ian
a9c2ebb3ec WebTV: Remove unused parameters to navup/navdown 2014-10-20 19:38:09 +02:00
Ian
fad648d79a WebTV: Correct next/prev (esp. final page); add on-screen controls 2014-10-20 19:38:09 +02:00
Ian
74fee8a1fd WebTV: Code cosmetics 2014-10-20 19:38:09 +02:00
Ian
60f6c9099e WebTV: Code cosmetics 2014-10-20 19:38:09 +02:00
Ian
008770c132 WebTV: Add Home/End, PgUp/PgDn, Left/Right plus overall code cosmetics 2014-10-20 19:38:09 +02:00
Ian
b26e3ccaa7 WebTV: Implement basic touchscreen-compatible navigation controls, inc. paging and scrolling channel list 2014-10-20 19:38:09 +02:00
Piotr Kuchciak
aae8a89198 update ignore file in windows 2014-10-20 19:35:33 +02:00
Piotr Kuchciak
60082edc21 WEBUI: Fix icon for current recording
Fix icon for current recording because was the same as recording tab.
2014-10-20 19:35:09 +02:00
Jaroslav Kysela
bd6e5ed7cb muxer_libav: fix memory leaks 2014-10-20 19:33:06 +02:00
Jaroslav Kysela
87151767ad transcode: free extradata from context structures 2014-10-20 16:45:43 +02:00
Jaroslav Kysela
06236ade10 transcode: remove h264 side data creation, it's not required 2014-10-20 15:05:18 +02:00
Jaroslav Kysela
956e8a05e2 DVR: log dvr entry delete operation 2014-10-20 15:04:18 +02:00
Jaroslav Kysela
4b63409706 transcode: fix H264 decoding 2014-10-20 09:17:58 +02:00
Jaroslav Kysela
0fa68f751d htsp: filter out the profiles and dvr configs without granted access 2014-10-19 21:46:23 +02:00
Jaroslav Kysela
5e98c69d85 DVR: the dvr entries should be accessed with ACCESS_RECORDER proviledges 2014-10-19 20:28:37 +02:00
Jaroslav Kysela
7ef42efec7 transcoding: simplify streaming_start_t structure copy 2014-10-19 11:40:43 +02:00
Jaroslav Kysela
8a1f44738b htsp: log subsystem should be lowercase 2014-10-19 11:40:43 +02:00
Jaroslav Kysela
d504bcf44b remove pkt_merge_header()
- rename pkt_header to pkt_meta
- unify logic for the metadata processing
- add meta field to components to the htsp stream start message
2014-10-19 11:40:08 +02:00
Jaroslav Kysela
4a6d5ca601 descrambler: fix TSS_NO_ACCESS reset for buffered packets 2014-10-18 17:32:06 +02:00
Jaroslav Kysela
53b168cc10 libav muxer: added WEBM support 2014-10-17 20:53:57 +02:00
Piotr Kuchciak
94ff39dead WEBUI: help changes, cosmetics and icon 2014-10-17 17:29:34 +02:00
Jaroslav Kysela
59e9a897b6 Revert "Makefile.ffmpeg: prefer static linking for x264, vpx, vorbis libs to avoid conflicts with distro"
This reverts commit 8e876995f3.

It does not work..
2014-10-17 17:26:07 +02:00
Jaroslav Kysela
e393311e27 AAC fixes (ADTS header) in transcoder and libav muxer 2014-10-17 17:25:59 +02:00
Jaroslav Kysela
8e876995f3 Makefile.ffmpeg: prefer static linking for x264, vpx, vorbis libs to avoid conflicts with distro 2014-10-17 14:45:06 +02:00
Jaroslav Kysela
69b585f0d0 Makefile.ffmpeg: enable h264_mp4toannexb bsf for libav muxer 2014-10-17 13:50:59 +02:00
Jaroslav Kysela
1ae61a1c17 libav muxer: add AVMATROSKA muxer type 2014-10-17 09:40:28 +02:00
Jaroslav Kysela
fa90b08748 global headers: create own AAC/MP4A header only if a valid does not exist 2014-10-17 09:11:47 +02:00
Jaroslav Kysela
14bc4e0595 trancode: fix time_base and pkt_sri for audio, other cosmetic updates 2014-10-17 09:11:25 +02:00
Jaroslav Kysela
26ccee696e fix hard bugs for the profile selection 2014-10-16 18:06:16 +02:00
Jaroslav Kysela
4a0f9bf1e3 cosmetic change for sri table 2014-10-16 18:05:27 +02:00
Jaroslav Kysela
40d0ac4395 find_by list routines : fix ommited copy 2014-10-16 16:36:34 +02:00
Jaroslav Kysela
f5d700e369 dvr: add dvr_config_find_by_list() like for profiles 2014-10-16 16:01:05 +02:00
Jaroslav Kysela
599150006b ACL: add per entry (user) stream profile selection 2014-10-16 15:44:34 +02:00
Jaroslav Kysela
b1edb29e83 profile: added htsp profile for the htsp protocol
- also added alternate default lookups for profiles (not defined) for
  * DVR               : 'dvr'
  * Channel streaming : 'channel'
  * Service streaming : 'service'
2014-10-16 12:37:18 +02:00
Jaroslav Kysela
b72ad69e66 mpegts: add # Channels to networks and muxes, fixes #2366 2014-10-16 12:08:32 +02:00
Jaroslav Kysela
a4d364bcb7 mpegts service: allow to force CAID (for constcw or as filter for capmt,cwc), fixes #2379 2014-10-16 11:55:50 +02:00
Jaroslav Kysela
7eefd4459f WEBUI: Change Watch TV video player - allow to select profile instead resolution 2014-10-16 11:51:59 +02:00
Jaroslav Kysela
4b7a674e7f ACL: add more restrictive permissions for all config urls, fix the http ticket issue, fixes #2383 2014-10-16 11:03:22 +02:00
Jaroslav Kysela
8d71f8ed25 configure: another improvement in the libav detection, fixes #2382 2014-10-16 09:13:16 +02:00
Jaroslav Kysela
e180b8dd4e dvb charset: added back AUTO_POLISH charset selection, fixes #2381 2014-10-16 09:06:19 +02:00
Jaroslav Kysela
954d98046c packet: remove aligned_alloc 2014-10-15 20:55:03 +02:00
Beralt
baf2a2c42c tvhdhomerun: properly close sockets on error 2014-10-15 20:20:34 +02:00
Beralt
4992f73e28 tvhdhomerun: check return values of setsockopt 2014-10-15 20:20:34 +02:00
Jaroslav Kysela
b3379d5d25 WEBUI HELP: DVR: Try to clean the help filenames 2014-10-15 20:15:19 +02:00
Piotr Kuchciak
3b43521456 WEBUI: Correct help and cosmetic 2014-10-15 20:07:32 +02:00
Jaroslav Kysela
39aa466d6a configure: print the error message when no or old libav/ffmpeg found, fixes #2378 2014-10-15 19:05:00 +02:00
Jaroslav Kysela
c182493656 hdhomerun: fix a leak 2014-10-15 18:14:26 +02:00
Jaroslav Kysela
d1a014f329 transcode: log cleanups, some memory leaks fixed 2014-10-15 18:09:16 +02:00
Jaroslav Kysela
2637ee0aad linuxdvb_adapter: remove ommited debug line 2014-10-15 12:45:34 +02:00
Jaroslav Kysela
f70e601c7a Makefile.ffmpeg,hdhomerun: try to fix the test condition 2014-10-15 12:33:04 +02:00
Jaroslav Kysela
bce2c52e63 Add VP9 stream type, but VP9 encoding does not work (1-pass VP9 encoder in libvpx is broken) 2014-10-15 12:32:08 +02:00
Jaroslav Kysela
8d1eb5b6c6 channel tag: export public URL for icons 2014-10-15 11:50:52 +02:00
Piotr Kuchciak
ec231ac12a Cosmetic update help 2014-10-15 11:33:53 +02:00
Piotr Kuchciak
12649aa1ba Update help TV Adapter 2014-10-15 11:33:53 +02:00
Piotr Kuchciak
759f3529a1 WEBUI: help cosmetic 2014-10-15 11:33:53 +02:00
Piotr Kuchciak
dd06df7028 WEBUI: cosmetic, add help for upcoming/current recordings 2014-10-15 11:33:53 +02:00
Jaroslav Kysela
d239e65363 udp: add more error checking to udp_bind() 2014-10-15 11:31:12 +02:00
Jaroslav Kysela
b7c8a30862 Makefile.ffmpeg,hdhomerun: add sha1sum tests to avoid hijacking 2014-10-15 11:14:11 +02:00
Jaroslav Kysela
f064cccc79 WEBUI JS: Add checkField initialization for LovCombo to avoid wrong sharing, fixes #2363 2014-10-15 10:26:44 +02:00
Jaroslav Kysela
1159ba09bc linuxdvb_satconf: fix typo 2014-10-15 08:55:26 +02:00
Jaroslav Kysela
ee4043c6cb configure: another fix for the libhdhomerun detection, fixes #2377 2014-10-15 08:26:35 +02:00
Jaroslav Kysela
b1e1097a0d webui: accept profile in /play playlist redirects 2014-10-14 21:59:20 +02:00
Jaroslav Kysela
3f4387b045 epggrab: ota - fix the frozen epggrab subscriptions, fixes #2365 2014-10-14 21:19:29 +02:00
Jaroslav Kysela
6ba3b926fe subscriptions: add shortid to each log messages to identify parallel tasks 2014-10-14 21:03:08 +02:00
Jaroslav Kysela
7a27aaf46d config: another libhdhomerun check fix 2014-10-14 19:53:42 +02:00
Jaroslav Kysela
8cdaab42c5 trancode: remove code for old libs 2014-10-14 18:59:02 +02:00
Jaroslav Kysela
419f69df53 configure: add better check for ffmpeg n1.2+ and libav v10+ version 2014-10-14 18:55:30 +02:00
Jaroslav Kysela
c0c797d4f8 configure: fix hdhomerun library check, fixes #2375 2014-10-14 18:14:53 +02:00
Jaroslav Kysela
9bf584ada1 Makefile.ffmpeg: added ac3 eac3 decoders 2014-10-14 17:55:38 +02:00
Jaroslav Kysela
a35d66160e doozer conf: enable hdhomerun static libs 2014-10-14 15:28:27 +02:00
Jaroslav Kysela
2b2a4cf65b build system: add --enable-hdhomerun_static option 2014-10-14 15:16:44 +02:00
Jaroslav Kysela
b67d741336 configure: fix hdhomerun check condition, fix compilation 2014-10-14 14:18:05 +02:00
Christian Lohmaier
cef28a6c9e create colored teletext subs
no dedicated configuration setting, since if color is not needed/wanted,
~all playback software that support colored subs allow to override it.
And playback software that doesn't support colored subs just will ignore
the font-tags.
2014-10-14 14:12:53 +02:00
Piotr Kuchciak
dc5d042522 WEBUI: Update image for help failed and finished recordings 2014-10-14 14:12:53 +02:00
Piotr Kuchciak
78cb1ba005 WEBUI: Cosmetic change, add PLAY and DOWNLOAD button to Failed Recordings 2014-10-14 14:12:53 +02:00
Beralt
4fb306670f tvhdhomerun: cleanup mutex'es and remove debugging 2014-10-14 14:12:53 +02:00
Beralt
b04a02dc93 tvhdhomerun: implement statistics scaling 2014-10-14 14:12:53 +02:00
Beralt
9380934c1b tvhdhomerun: initial cleanup of the plugin
- attempt to mirror linuxdvb more closely
- remove bunch of mutex'es
- implement UDP unicast
- attempt to fix the PID filter issues
2014-10-14 14:12:53 +02:00
Beralt
e7ca66cbe2 tvhdhomerun: fix idnode domain changes 2014-10-14 14:12:53 +02:00
Ben Fennema
a78a83c93a Fix changing tuner-type 2014-10-14 14:12:53 +02:00
Patric Karlstrom
21a8762c3f hdhomerun: buildfix for latest rebase 2014-10-14 14:12:53 +02:00
Patric Karlstrom
d31b70303f hdhomerun: fix hf_input_mux_lock bug 2014-10-14 14:12:53 +02:00
Patric Karlstrom
db10daf582 hdhomerun: updates after merge 2014-10-14 14:12:53 +02:00
Patric Karlstrom
24d2ab4071 tvhdhomerun: Add ATSC type for device-override 2014-10-14 14:12:52 +02:00
Patric Karlstrom
6718019acb libhdhomerun integration 2014-10-14 14:12:52 +02:00
Jaroslav Kysela
d6f66e7a3a profile: extend the timeout field name (infinite) 2014-10-14 12:17:09 +02:00
Jaroslav Kysela
28757bcb1d transcoding: remove some extra header files, fixes #2373 2014-10-14 12:03:00 +02:00
Jaroslav Kysela
e77607c9d0 DVR timerec: fix the weekdays handling, allow times through midnight, fixes #2372 2014-10-14 11:58:47 +02:00
Jaroslav Kysela
2349f48cda epggrab: ota - small optimization 2014-10-14 11:32:20 +02:00
Jaroslav Kysela
6b9d0d1c45 streaming profile: allow configuratible timeout and restart, fixes #2368
Note: If restart is enabled, tvh will keep trying to subscribe any service
from the channel's list until unsubscribed.
2014-10-14 11:08:23 +02:00
Jaroslav Kysela
cc276263a3 url: fix port type to int (ports above 32766), use AI_NUMERICSERV in tcp and udp, fixes #2369 2014-10-14 09:13:52 +02:00
Jaroslav Kysela
73bf840f14 mpegts service: fix warning when \!ENABLE_MPEGTS_DVB, fixes #2370 2014-10-14 08:49:03 +02:00
Jaroslav Kysela
c655c067fb Makefile: link avutil twice for static ffmpeg (linker bug?) 2014-10-14 08:45:01 +02:00
Jaroslav Kysela
6f3324e000 RPM: Typo fixes 2014-10-13 21:58:10 +02:00
Jaroslav Kysela
14a7de8aa4 RPM build - config fixes 2014-10-13 21:49:50 +02:00
Jaroslav Kysela
45d00a3dd1 mpegts network: Allow to ignore the channel numbers set by a provider 2014-10-13 20:15:40 +02:00
Jaroslav Kysela
392dec0b1d Add basic RPM build support 2014-10-13 20:05:08 +02:00
Jaroslav Kysela
3bcfe3fa3c Makefile.ffmpeg: unexport global CFLAGS,LDFLAGS 2014-10-13 17:22:21 +02:00
Jaroslav Kysela
04da474772 Makefile.ffmpeg: add missing touch for i386 dummy build 2014-10-13 16:26:02 +02:00
Jaroslav Kysela
ddeb0020c4 Makefile.ffmpeg: create x264 dir for i386 dummy build 2014-10-13 16:24:57 +02:00
Jaroslav Kysela
97b593cfec Makefile.ffmpeg: another attempt to fix i386 build 2014-10-13 15:55:56 +02:00
Piotr Kuchciak
aa5b773711 WEBUI: Update help for finished recordings 2014-10-13 15:35:12 +02:00
Piotr Kuchciak
2a79f2e22e WEBUI: Help icon for tabs
Update icon help for all tabs
2014-10-13 15:35:01 +02:00
Piotr Kuchciak
0404b5261e Fix HTS Logo 2014-10-13 15:34:52 +02:00
Piotr Kuchciak
43669fee44 WEBUI: Cosmetic
Changed name Now recording to Current Recordings. It would probably
better.
2014-10-13 15:34:40 +02:00
Piotr Kuchciak
7f3b10941a WEBUI: change size columns in ACL 2014-10-13 15:34:31 +02:00
Piotr Kuchciak
e5958b1675 Update image in Live TV Player 2014-10-13 15:34:20 +02:00
Piotr Kuchciak
3d742f5fa0 Changed LOGO and update image in help debuging 2014-10-13 15:34:10 +02:00
Michel Verbraak
c244636850 Enable changing number of channels between input and output
Signed-off-by: Michel Verbraak <info@1st-setup.nl>
2014-10-13 15:31:58 +02:00
Jaroslav Kysela
84947edddb Makefile.ffmpeg: use distro specific libx264 library 2014-10-13 15:27:26 +02:00
Jaroslav Kysela
f6e0f50b9b profile: don't abort when class does not exist 2014-10-13 15:00:27 +02:00
Jaroslav Kysela
7bc16b6dc8 Makefile.ffmpeg: Fix PATHs, also simplificate deps in the main Makefile 2014-10-13 14:39:30 +02:00
Jaroslav Kysela
12d73de4ef config: libffmpeg_static is not default, attempt to update doozer cfg 2014-10-13 13:38:25 +02:00
Jaroslav Kysela
d7ad63185b Makefile.ffmpeg: Add yasm 1.3.0 2014-10-13 13:33:35 +02:00
Jaroslav Kysela
49ebb3c48d Makefile: fix dependencies for LIBFFMPEG_STATIC (parallel build) 2014-10-13 12:44:53 +02:00
Jaroslav Kysela
808b16f690 Makefile.ffmpeg: libx264 - use known version, add TVHEADEND_FILE_CACHE to the DOWNLOAD macro 2014-10-13 10:23:06 +02:00
Jaroslav Kysela
4b4610ea91 build: add libffmpeg_static=yes and Makefile.ffmpeg 2014-10-13 09:55:17 +02:00
Piotr Kuchciak
4c19cc8526 WEBUI: changed tabs name upcoming recordings>upcoming / now recordings 2014-10-12 19:43:44 +02:00
Piotr Kuchciak
02add0763c WEBUI: changed icon for upcoming and finished recording 2014-10-12 19:43:44 +02:00
Jaroslav Kysela
a51677e999 trancode: fix the video stream pts/dts - h264 works with ffmpeg now 2014-10-12 11:52:47 +02:00
Jaroslav Kysela
f2bbfa40e5 profile: cosmetic code list change 2014-10-12 11:28:31 +02:00
Jaroslav Kysela
9ca0248069 transcode: use av codec string names instead IDs
- to allow the selection from the multiple encoders for same type
2014-10-12 10:03:28 +02:00
Jaroslav Kysela
47f56f7f1f WEBUI JS: fix the idnode_filter_fields fcn 2014-10-11 21:58:08 +02:00
Jaroslav Kysela
812c87ec17 profile: add predefined (and shielded) profiles for WEBTV 2014-10-11 21:49:14 +02:00
Jaroslav Kysela
cf5ef00f39 profile: do not allow to change profile names for shielded profiles 2014-10-11 21:35:30 +02:00
Jaroslav Kysela
801ac876c2 WEB TV Player: update to use stream profiles, fix transcode muxer type bug 2014-10-11 21:24:42 +02:00
Jaroslav Kysela
1abcfda491 transcoding: do proper audio pts calculation in updated transcoder routine
- VP8 & VORBIS works with ffmpeg
2014-10-11 20:46:59 +02:00
Jaroslav Kysela
022fcd195f transcode: enable experimental codecs 2014-10-11 10:42:23 +02:00
Jaroslav Kysela
3ba4597ce2 transcoding: fix another gcc warning 2014-10-11 00:11:11 +02:00
Jaroslav Kysela
5017f10497 WEBUI: Fix the storage for profile builders, fixes #2360 2014-10-10 20:41:13 +02:00
Jaroslav Kysela
930bd978b4 transcoding: AVFrame has channels only for FFMPEG 2014-10-10 20:36:20 +02:00
Piotr Kuchciak
6051184e55 WEBUI: changed icon debug, add icon help for something tabs
Please make help icon for other tabs...
2014-10-10 19:53:24 +02:00
Piotr Kuchciak
a07a889cb1 WEBUI: change icon DVR Autorec Entires 2014-10-10 19:53:22 +02:00
Piotr Kuchciak
089159feab WEBUI: change icon watch TV, Auto Record, add icon for HELP
Please add icon help for all button for all tabs because i am beginner
and i dont know how...
2014-10-10 19:53:18 +02:00
Piotr Kuchciak
0d1f128e3a WEBUI: cosmetic Add icon for channels and channel tags 2014-10-10 19:53:14 +02:00
Jaroslav Kysela
da9b9b5f5f transcode: ffmpeg fixes, VP8 & VORBIS works
Does not work (for me):
 - H264
 - Audio sync for vorbis..
2014-10-10 19:45:44 +02:00
Jaroslav Kysela
7c6b1a8f7b mkv: flush cluster also after 1 sec timeout 2014-10-10 17:19:40 +02:00
Jaroslav Kysela
cc7d5c6bab capmt: Try to fix the locking deadlocks 2014-10-10 16:08:22 +02:00
Jaroslav Kysela
626fd9053e WEBUI: use tvCards icon for TV adapters 2014-10-10 12:03:17 +02:00
Piotr Kuchciak
64b21d800f WEBUI: cosmetic changes with add icon for tabs
I also add icon named tv_cards.png but i do not know how add this icon
to tabs named: TV adapters.

Please correct the more well-known for adding the icon to the tabs.
2014-10-10 11:56:25 +02:00
Jaroslav Kysela
4157c6f712 muxer: use inline for almost empty functions 2014-10-10 11:52:14 +02:00
Jaroslav Kysela
0632c29b63 transcode: move some logs from debug to trace 2014-10-10 10:51:11 +02:00
Jaroslav Kysela
39961d489f libav: allow to use libavresample >= 1.1.0 2014-10-10 10:45:27 +02:00
Michel Verbraak
4e098bd877 Added using new versions of libav audio and video decoding and encoding functions.
Added conversion/resampling functionality.
Added using of libav audio fifo buffer.

Works with latest git master of libav.

Signed-off-by: Michel Verbraak <info@1st-setup.nl>
2014-10-10 10:44:52 +02:00
Ian
5f0cc2c2dd WEB UI: EPG: Fix the channel tag passing to autorec (completes fix to #2340) 2014-10-10 09:54:50 +02:00
Jaroslav Kysela
8e6538a0bc transcoding: remove transcoding_enabled variable, not used now 2014-10-10 09:32:55 +02:00
Jaroslav Kysela
7753a6f618 profile: transcode - add missing transcoder_set_properties() call 2014-10-09 21:58:38 +02:00
Jaroslav Kysela
3a6f6af33c WEBUI: cosmetic changes for the stream edit tabs 2014-10-09 21:48:51 +02:00
Jaroslav Kysela
38603050f0 profile: default profile must be enabled 2014-10-09 20:33:28 +02:00
Jaroslav Kysela
9d0c46d56e htsp server: bumb version to 16 (profile - transcode, getDvrConfigs) 2014-10-09 20:31:35 +02:00
Jaroslav Kysela
0b69b2df55 htsp server: add getDvrConfigs method 2014-10-09 20:30:04 +02:00
Jaroslav Kysela
811191c862 profile, transcode: move transcode config to profiles, add new profile type 2014-10-09 20:23:41 +02:00
Jaroslav Kysela
24818812ff profile: cleanups, add profile_chain_open() 2014-10-09 15:36:26 +02:00
Jaroslav Kysela
ffa68cecdb config: migrate DVR config to stream profiles (v13) 2014-10-09 14:30:27 +02:00
Jaroslav Kysela
2012dc8e3d Add stream profile support 2014-10-09 09:22:56 +02:00
Jaroslav Kysela
29d5c75126 caclient: remove extra condition 2014-10-07 18:58:16 +02:00
Jaroslav Kysela
a510248efc ACL: add full rights copy for tickets to resolve connection counting, fixes #2349 2014-10-07 18:21:35 +02:00
Jaroslav Kysela
5b3f64834a htsp server: timeshift must be destroyed before subscription queue flush, fixes #2351 2014-10-07 14:16:03 +02:00
Jaroslav Kysela
078e61bb9f tcp: little improvements in the tcp_connection_launch() 2014-10-07 09:33:35 +02:00
Jaroslav Kysela
5270b9ed0c htsp server: fix missing tcp_connection_land() call, caused memory corruptions 2014-10-07 09:32:58 +02:00
Jaroslav Kysela
f16fc58dd7 htsp server: add dead-queue-check (for further analysis) 2014-10-07 09:03:08 +02:00
Jaroslav Kysela
20f603e359 WEBUI: Add possibility to cancel HTTP and HTSP streaming connections 2014-10-06 17:35:24 +02:00
Jaroslav Kysela
6f4661ddcf ACL, HTSP, HTTP: Added streaming connection limit per user 2014-10-06 16:33:22 +02:00
Jaroslav Kysela
6508c9448e http streaming: show the HTTP streaming connections in the webui status tab 2014-10-06 14:22:43 +02:00
Jaroslav Kysela
b92231bd13 tcp: some indentation and coding style cosmetic changes 2014-10-06 10:09:21 +02:00
Jaroslav Kysela
4b116f6886 tvhlog: fixed thinko, add closelog() call 2014-10-06 09:51:50 +02:00
Jaroslav Kysela
e993fc6d8a epg: remove unused argument for epg_broadcast_find_by_id(), replace atoi() with strtoll() for 32-bit numbers 2014-10-05 21:22:31 +02:00
Jaroslav Kysela
67f5e8477d DVR: entry - fix do not reschedule member typo, fixes #2343 2014-10-05 20:59:01 +02:00
Jaroslav Kysela
1fbbbb8e6a epg: more robust 32-bit object ID handling
Changes:
  - store the last id number to the epgdb file
    (the purpose is to reuse the id numbers as last as possible)
  - use RB tree to track id numbers (faster lookups)
  - skip invalid zero IDs (++_epg_object_idx)
  - skip used IDs (rare, but possible)

The goal is to handle correctly the 32-bit ID wrapping (++_epg_object_idx).
2014-10-05 20:51:13 +02:00
Ian
54de3dbc79 WebUI: Correct 'All' paging in idnode grids 2014-10-05 17:53:14 +01:00
Jaroslav Kysela
8d2c02574a WEB UI: EPG: Fix the channel tag passing to autorec, fix idnode enum renderer, fixes #2340 2014-10-05 17:59:45 +02:00
Jaroslav Kysela
a69cec62d6 WEBUI JS: idnode - fix move down 2014-10-05 16:49:02 +02:00
Jaroslav Kysela
72549c7172 cwc: faster reconfigure 2014-10-05 16:46:32 +02:00
Jaroslav Kysela
ef3ed0086a capmt: change label for socket name / IP address (mode 3 -> TCP mode) 2014-10-05 16:41:11 +02:00
Jaroslav Kysela
e00c6ff975 capmt: another quick mutex fix 2014-10-05 16:27:02 +02:00
Jaroslav Kysela
bd91b96bf7 capmt: fix the mutexes and do reconfigure faster, fixes#2344 2014-10-05 16:25:44 +02:00
Jaroslav Kysela
c434bc4f3d Makefile: fix the bundle.c <- dvb_scan dependency 2014-10-05 15:18:28 +02:00
Jaroslav Kysela
7b4d169b5e capmt: handle the reconfiguration properly 2014-10-05 15:16:02 +02:00
Jaroslav Kysela
9734af1092 config: fix another coverity NULL string issue in config_modify_dvr_log() 2014-10-03 23:07:37 +02:00
Jaroslav Kysela
49396483c5 another round of coverity fixes (mostly NULL checks) 2014-10-03 22:52:57 +02:00
Jaroslav Kysela
36166ca644 htsmsg: fix htsmsg_get_str_multi() - coverity 2014-10-03 22:50:52 +02:00
Jaroslav Kysela
297c79c9f6 extjs: fix wrong code path in extjs_tvhlog() - coverity 2014-10-03 22:48:56 +02:00
Jaroslav Kysela
338357371c settings: add another missing va_end() 2014-10-03 22:42:10 +02:00
Jaroslav Kysela
ff203abf22 mpegts network dvb: remove dead code (coverity) 2014-10-03 22:25:29 +02:00
Jaroslav Kysela
1932c7e564 coverity fixes: some wrong NULL checks 2014-10-03 22:24:25 +02:00
Jaroslav Kysela
d94850a3f8 linuxdvb: en50494 - use /dev/urandom value instead rand() 2014-10-03 22:16:43 +02:00
Jaroslav Kysela
e6bfe876d7 parser latm: remove dead code (coverity) 2014-10-03 22:15:06 +02:00
Jaroslav Kysela
7068a607c3 dvr config: remove dead code (coverity) 2014-10-03 22:13:09 +02:00
Jaroslav Kysela
871ad60b54 dvr cutpoints: fix memory leak (coverity) 2014-10-03 22:09:54 +02:00
Jaroslav Kysela
7f732d1b8a parsers: bitstream - wrong shift operator argument (coverity) 2014-10-03 22:08:28 +02:00
Jaroslav Kysela
8871709170 coverity fixes - fixed string copy 2014-10-03 22:06:37 +02:00
Jaroslav Kysela
c563c03fb1 linuxdvb adapter: coverity fixes 2014-10-03 22:03:20 +02:00
Jaroslav Kysela
34c4e716ce iptv mux: coverity fixes 2014-10-03 21:59:29 +02:00
Jaroslav Kysela
7808495eb9 misc dbl: coverity fixes 2014-10-03 21:54:57 +02:00
Jaroslav Kysela
e6badc8b9e api: epg - coverity fix 2014-10-03 21:48:58 +02:00
Jaroslav Kysela
b36f88cdd7 epggrab: channels - coverity fixes 2014-10-03 21:47:10 +02:00
Jaroslav Kysela
cf8cf94c55 extjs: coverity fixes 2014-10-03 21:44:11 +02:00
Jaroslav Kysela
6d594118d1 epggrab: eit - coverity fix 2014-10-03 21:42:01 +02:00
Jaroslav Kysela
a90285c03d opentv: coverity fixes 2014-10-03 21:39:49 +02:00
Jaroslav Kysela
100f7adc2e scanfile: coverity fixes 2014-10-03 21:37:39 +02:00
Jaroslav Kysela
6db559f0ae mpegts mux: coverity fixes 2014-10-03 21:28:56 +02:00
Jaroslav Kysela
f78bd7adcb dvr_db: coverity fixes 2014-10-03 21:25:01 +02:00
Jaroslav Kysela
f7336d2bfb dvr_inotify: coverity fixes 2014-10-03 21:23:37 +02:00
Jaroslav Kysela
1069ff4d7e satip: coverity fixes 2014-10-03 21:20:23 +02:00
Jaroslav Kysela
1fe84966a8 capmt: coverity fixes 2014-10-03 21:14:34 +02:00
Jaroslav Kysela
11eedbbd1e cwc: use better random values (coverity) 2014-10-03 21:12:31 +02:00
Jaroslav Kysela
ab8f4bf1f4 timeshift: fix some coverity issues 2014-10-03 21:02:56 +02:00
Jaroslav Kysela
d3fcdf37a7 access: fix access_entry_class_password_set() - coverity 2014-10-03 18:51:23 +02:00
Jaroslav Kysela
fd0282fd83 dvr: coverity - fix dvr_entry_class_channel_name_set() 2014-10-03 18:49:15 +02:00
Jaroslav Kysela
a1e10f7c5d idnode: better check for p argument in idnode_get_display() - coverity 2014-10-03 18:47:52 +02:00
Jaroslav Kysela
12be763bee capmt: check negative value for tvh_socket() 2014-10-03 18:46:43 +02:00
Jaroslav Kysela
be55658b02 config: fix the s1 string handling (coverity) 2014-10-03 18:44:38 +02:00
Jaroslav Kysela
3b5f981364 epggrab: eit - fix code block in _eit_get_string_with_len() - coverity 2014-10-03 18:42:26 +02:00
Jaroslav Kysela
cbeb3d1794 dvr: dvr_config_class_name_set() - NULL str - coverity 2014-10-03 18:39:38 +02:00
Jaroslav Kysela
a64f9a5ad3 dvr: dvr_inotify_add() - add missing free - coverity 2014-10-03 18:38:21 +02:00
Jaroslav Kysela
c72cadbd5d mpegts_input: add missing mutex unlock calls (coverity) 2014-10-03 18:32:06 +02:00
Jaroslav Kysela
284f70f19c httpc: coverity - used another variable in http_client_ssl_shutdown() 2014-10-03 17:43:43 +02:00
Jaroslav Kysela
b22085ee72 htsmsg: fix htsmsg_list_2_csv() first variable - coverity 2014-10-03 17:37:48 +02:00
Jaroslav Kysela
60aeeac40d filebundle: fix possible buf overflow in fb_scandir() - coverity 2014-10-03 17:31:29 +02:00
Jaroslav Kysela
a0e4c0133c epgdb: epg_init - fix possible negative value - coverity 2014-10-03 17:29:24 +02:00
Jaroslav Kysela
0cb732174d epg: _eq_add - move e == NULL check - coverity 2014-10-03 17:27:20 +02:00
Jaroslav Kysela
aff146364e config: coverity - missing NULL check 2014-10-03 17:25:38 +02:00
Jaroslav Kysela
52c812280a htsmsg: add missing va_end() calls - coverity 2014-10-03 17:20:19 +02:00
Jaroslav Kysela
2e858f339c epgdb: check return value in epg_save() 2014-10-03 17:18:56 +02:00
Jaroslav Kysela
f7a328ff3c service: remove dead code (esf_service) - coverity 2014-10-03 17:17:24 +02:00
Jaroslav Kysela
af518e9be4 subscriptions: reshuffle code in subscription_unlink_mux() - coverity 2014-10-03 17:15:56 +02:00
Jaroslav Kysela
749ce2efec esfilter: remove dead code (coverity) 2014-10-03 17:14:37 +02:00
Jaroslav Kysela
1cb1f674a0 filebundle: coverity - fix possible buf overflow in fb_readdir() 2014-10-03 17:03:33 +02:00
Jaroslav Kysela
152dc614e8 htsmsg: coverity - add missing break in htsmsg_field_get_string() 2014-10-03 17:02:08 +02:00
Jaroslav Kysela
1eb67bacf5 idnode: remove dead code - coverity 2014-10-03 17:00:43 +02:00
Jaroslav Kysela
bc1d444ed9 settings: coverity - possible buf overflow 2014-10-03 16:58:39 +02:00
Jaroslav Kysela
b2913639c4 tvhlog: cleanup tvhlog_queue on shutdown 2014-10-03 16:47:54 +02:00
Jaroslav Kysela
3d3d24aa3e epg: coverity - fix _epg_sort_title_ascending() 2014-10-03 16:08:48 +02:00
Jaroslav Kysela
49c5896b4b settings: add missing va_end() call to hts_settings_vload() - coverity 2014-10-03 16:04:43 +02:00
Jaroslav Kysela
3c7990b7e0 config: another coverity fix in config_modify_tag() 2014-10-03 15:58:30 +02:00
Jaroslav Kysela
a28696f4f9 subscriptions: subscription_create_from_mux() reshuffle some wrong code (coverity) 2014-10-03 15:56:51 +02:00
Jaroslav Kysela
854f4dfbae htsp server: fix len variable type in htsp_read_message() - coverity (signess) 2014-10-03 15:53:55 +02:00
Jaroslav Kysela
6daddcc761 filebundle: fix wrong malloc() in fb_scandir() - coverity 2014-10-03 15:52:02 +02:00
Jaroslav Kysela
0b991efe32 htsbuf: add two missing va_end() calls to htsbuf_vqprintf() 2014-10-03 15:49:38 +02:00
Jaroslav Kysela
02e2633c2a settings: add missing va_end() - coverity 2014-10-03 15:46:27 +02:00
Jaroslav Kysela
0ff555b50c cron: coverity chack for NULL string in cron_parse_val() 2014-10-03 15:45:04 +02:00
Jaroslav Kysela
d4611d147c tcp: coverity don't close(-1) 2014-10-03 15:44:43 +02:00
Jaroslav Kysela
d5712f1031 idnode: fix get functions (islist) - coverity 2014-10-03 15:26:42 +02:00
Jaroslav Kysela
f0e4ec0e10 config: coverify - fix possible NULL dereference 2014-10-03 15:21:47 +02:00
Jaroslav Kysela
fb30be0a6f tvhlog: tvhlog_thread - remove dead code (coverity) 2014-10-03 15:19:28 +02:00
Jaroslav Kysela
0f592f4d02 service: fix service_class_caid_get() snprintf - coverity 2014-10-03 15:17:41 +02:00
Jaroslav Kysela
3228f400f8 idnode: coverity fix variable initialization in idnode_filter_init() 2014-10-03 15:16:04 +02:00
Jaroslav Kysela
7544c6e9b0 prop: add extra assert to prop_read_value() 2014-10-03 15:13:03 +02:00
Jaroslav Kysela
5fff5d40bc coverity: fix memory leak in idnode_filter() 2014-10-03 15:08:21 +02:00
Jaroslav Kysela
ef4cebdb92 fsmonitor: coverity - fix variable access (beyond) 2014-10-03 15:02:39 +02:00
Jaroslav Kysela
36254905d7 htsp server: fix wrong fd condition (coverity) 2014-10-03 14:59:04 +02:00
Jaroslav Kysela
fc915fcdc4 fsmonitor: coverity - fsmonitor_fd cannot be negative 2014-10-03 14:57:07 +02:00
Jaroslav Kysela
60aa4e2658 tcp: connect - fix another memory leak (coverity) 2014-10-03 14:51:24 +02:00
Jaroslav Kysela
e136a37514 trap: fix digest variable initialization (coverity) 2014-10-03 14:50:25 +02:00
Jaroslav Kysela
7c2a37a6a1 imagecache: fix the url variable initialization for error path (coverity) 2014-10-03 14:49:01 +02:00
Jaroslav Kysela
7fc28acf56 http: handle negative value from base64_decode (coverity) 2014-10-03 14:47:23 +02:00
Jaroslav Kysela
1589bd8326 huffman: remove wrong htsmsg_destroy() call (coverity) 2014-10-03 14:45:18 +02:00
Jaroslav Kysela
07d5b1118e imagecache: coverity - fix wrong unlink() call 2014-10-03 14:42:26 +02:00
Jaroslav Kysela
a7e6993c13 tcp: fix memory leak in error path in tcp_server_create() (coverity) 2014-10-03 14:40:00 +02:00
Jaroslav Kysela
45d3685cd7 config: wrong map fix in v6 migrate (coverity) 2014-10-03 14:36:22 +02:00
Jaroslav Kysela
a03b8b06ae timeshift: reader - coverity - access to variable after free() 2014-10-03 14:35:37 +02:00
Jaroslav Kysela
a97c73d96e access: coverity - handle negative value from base64_decode() 2014-10-03 14:35:32 +02:00
Jaroslav Kysela
cb2e79788c intlconv: Add some missing close calls (coverity) 2014-10-03 14:17:04 +02:00
Jaroslav Kysela
22f0608421 htsp: reshuffle some code to prevent unexpected async messages on shutdown
valgrind reported:
   Invalid write of size 8
      at 0x43000F: htsp_serve (htsp_server.c:2510)
      by 0x4147D2: tcp_server_start (tcp.c:447)
      by 0x412250: thread_wrapper (wrappers.c:125)
      by 0x771CB4F: start_thread (pthread_create.c:304)
      by 0x7E97E6C: clone (clone.S:112)
    Address 0x11c30ca8 is 120 bytes inside a block of size 264 free'd
      at 0x4C27D4E: free (vg_replace_malloc.c:427)
      by 0x42FF27: htsp_serve (htsp_server.c:2488)
      by 0x4147D2: tcp_server_start (tcp.c:447)
      by 0x412250: thread_wrapper (wrappers.c:125)
      by 0x771CB4F: start_thread (pthread_create.c:304)
      by 0x7E97E6C: clone (clone.S:112)

The client was removed from the async list after all connections
were destroyed, but queues are part of the connection structure,
so sporadically, an async msg was queued after the queue flush.

This code change moves the async unlink before the connection
destroy call.
2014-10-03 11:36:10 +02:00
Jaroslav Kysela
604ff922fa mpegts service: use dvb_network_get_orbital_pos() in the picons code for dvb-s 2014-10-03 11:01:37 +02:00
Jaroslav Kysela
9a5e31449a mpegts service: fix memory leak - s_dvb_cridauth 2014-10-03 10:06:50 +02:00
Jaroslav Kysela
2699d86b42 timeshift: fix simple memory leak 2014-10-03 09:54:24 +02:00
Jaroslav Kysela
691b97cbec imagecache: fix a memory leak in imagecache_image_save() 2014-10-02 20:21:36 +02:00
Jaroslav Kysela
d1efa31f32 dvr timerec: remove unused variable 2014-10-02 20:18:31 +02:00
Jaroslav Kysela
2692fa68cd dvr timerec: don't delete spawned recordings on shutdown 2014-10-02 20:17:35 +02:00
Jaroslav Kysela
e3762f1c26 webui: allow access to imagecache also to streaming clients (like htsp for icons) 2014-10-02 19:59:40 +02:00
Jaroslav Kysela
797b033c06 picons: lower the buffer size 2014-10-02 19:50:21 +02:00
Jaroslav Kysela
370013bc47 tvhcsa: fix the dependencies correctly for dvbcsa (quick fix for the previous patch) 2014-10-02 18:19:10 +02:00
Jaroslav Kysela
11d6565821 tvhcsa: fix the compilation issue (dependencies) for dvbcsa 2014-10-02 18:11:59 +02:00
Jaroslav Kysela
5c483af6e2 Makefile: fix constcw FFDECSA dependency 2014-10-02 18:07:02 +02:00
Jaroslav Kysela
1249a5e812 avahi: improve shutdown sequence 2014-10-02 16:25:23 +02:00
Jaroslav Kysela
be5ae2ce84 remove data/conf/charset - not used 2014-10-02 16:02:10 +02:00
Jaroslav Kysela
94cb147321 descrambler: move tvhcsa structure to the descrambler runtime 2014-10-02 15:39:25 +02:00
Jaroslav Kysela
4faa0efc87 intlconv: add intlconv_to_utf8() and use it in dvb_support.c also fixes #2319 2014-10-02 13:36:31 +02:00
Jaroslav Kysela
ba8d90ff48 linuxdvb: satconf - check return value from linuxdvb_satconf_find_ele(), fixes #2320 2014-10-02 13:05:33 +02:00
Jaroslav Kysela
3373ac6ba3 epggrab: channels - fix wrong condition in epggrab_channel_link_delete() 2014-10-02 11:28:14 +02:00
Jaroslav Kysela
5d06c06b09 epg: fix regex leak in query 2014-10-02 09:21:43 +02:00
Jaroslav Kysela
e8607d660c avahi: fix memory leaks (missing avahi free calls) 2014-10-02 09:11:17 +02:00
Jaroslav Kysela
884ca540aa access: fix superuser variables leak 2014-10-02 08:58:15 +02:00
Jaroslav Kysela
38b2e31630 htsp: fix the channelIcon for current clients 2014-10-02 08:48:40 +02:00
Jaroslav Kysela
4f7e9284af descrambler: add constcw DES & AES clients 2014-10-02 08:40:01 +02:00
Jaroslav Kysela
e6b1d4ba2a cwc: remove tsdemux header 2014-10-01 20:27:01 +02:00
Jaroslav Kysela
e70841cb41 WEBUI JS: add show/hide passwords button for caclient 2014-10-01 20:24:45 +02:00
Jaroslav Kysela
3a37aa0304 WEBUI JS: enum lists are sorted using case-insensitive type now 2014-10-01 20:01:56 +02:00
Jaroslav Kysela
3cde304b1b cwc: fix the password field markers 2014-10-01 17:57:25 +02:00
Adam Sutton
0b3fcdce58 channel: added support for getting icons from underlying services
Also added an initial implementation of picon support.
2014-10-01 17:27:53 +02:00
Jaroslav Kysela
ab8af7c990 WEBUI JS: EPG - do not restore sorting and filters from cookie 2014-10-01 13:36:13 +02:00
Jaroslav Kysela
4861168d70 caclient: fix cwc,capmt thread handling, enhance capmt logs 2014-10-01 12:48:34 +02:00
Jaroslav Kysela
f3d4dba891 config: add cwc,capmt config migration to caclient 2014-10-01 11:50:51 +02:00
Jaroslav Kysela
ff104c4c18 caclient: improve webui, rewrite status notifications 2014-10-01 09:30:17 +02:00
Jaroslav Kysela
7f89149674 docs: moved the capmt,cwc docs to one caclient file... should be improved 2014-09-30 21:54:33 +02:00
Jaroslav Kysela
6c35524b30 WEBUI JS: remove the old capmt and cwc editors 2014-09-30 21:51:55 +02:00
Jaroslav Kysela
40d12b5fd4 dtable removal: celebrate new idnode system 2014-09-30 21:49:34 +02:00
Jaroslav Kysela
d307001c52 caclient: initial code to move cwc,capmt to idnode 2014-09-30 21:46:51 +02:00
Jaroslav Kysela
ecb2d7652c linuxdvb: lnb - fix Ku 10750 (Hi-Band, Inverted-Polar.) 2014-09-29 21:06:02 +02:00
Jaroslav Kysela
836aec0256 linuxdvb: lnb - added Ku 10750 (Hi-Band, Inverted-Polar.) 2014-09-29 20:53:23 +02:00
Jaroslav Kysela
5b8e6fc903 capmt: Fix filter data message for recent oscam 2014-09-29 20:27:07 +02:00
Jaroslav Kysela
ccb67158da epg api: apply the missing the ch_icon -> channelIcon change 2014-09-29 18:45:58 +02:00
Adam Sutton
7048335632 dvr autorec: don't delete spawned recordings on shutdown
This stops the odd behaviour of alerting the user to new recordings that are
added on startup, that were previously in existance on shutdown.
2014-09-29 16:28:49 +01:00
Jaroslav Kysela
4fb0774fa2 WEBUI JS: EPG: Do not show the clickable cursor and icon when filter is already set 2014-09-29 17:13:07 +02:00
Jaroslav Kysela
b528de6b05 WEBUI JS: EPG: Fix the clickable channel linking (autorec issue) 2014-09-29 16:53:09 +02:00
Jaroslav Kysela
05779c2a0d WEBUI JS: EPG/status: Use alias cursor for clickable columns 2014-09-29 16:47:45 +02:00
Jaroslav Kysela
8fa6977837 WEBUI JS: Some other tweaks to the epg broadcast info dialog styling 2014-09-29 15:58:35 +02:00
Jaroslav Kysela
9e007f5662 WEBUI JS: Replace the zoom icon with the small blue triangle 2014-09-29 15:43:41 +02:00
Jaroslav Kysela
8f7e6e565e scanfile: fix DVB-T bandwidth parsing for dvbv5 format, fixes #2336 2014-09-29 14:34:06 +02:00
Jaroslav Kysela
71478e1967 main: show more fail info in log for -u and -g 2014-09-29 14:18:37 +02:00
Jaroslav Kysela
8602487ae6 epggrab: fix memory leaks on shutdown for opentv/pyepg/xmltv 2014-09-29 10:09:44 +02:00
Jaroslav Kysela
9b0537f2af api epg: fix memory leak 2014-09-29 09:00:21 +02:00
Jaroslav Kysela
50b76cd5b8 main: fix pidfile variable initialization 2014-09-28 21:46:53 +02:00
Jaroslav Kysela
16269adf0b main: fix the pidfile handling (broken with the -u,-g movement) 2014-09-28 21:45:42 +02:00
Jaroslav Kysela
f5872e72d0 WEBUI JS: epg grid - escape regex for title linking 2014-09-28 21:09:19 +02:00
Jaroslav Kysela
6352e3494c WEBUI JS: epg grid - add info action (icon) to be consistent with dvr 2014-09-28 21:05:36 +02:00
Jaroslav Kysela
8667a57235 WEBUI JS: epg details dialog - move some styling to css 2014-09-28 20:57:52 +02:00
Jaroslav Kysela
e95576bbe8 WEBUI JS: epg details dialog - do not show broadcast title in the dialog title 2014-09-28 20:50:58 +02:00
Jaroslav Kysela
9468755b71 WEBUI JS: Channel config - fix number up/down/assign for maj.min numbers 2014-09-28 20:43:52 +02:00
Jaroslav Kysela
f918323ce6 main: move -u and -g processing outside fork, fixes 2331 2014-09-28 15:43:25 +02:00
Jaroslav Kysela
60c5bcc934 api: initialize saveptr for api_epg and api_idnode 2014-09-28 15:19:21 +02:00
Jaroslav Kysela
2238be7dd1 WEBUI: JS - status tab - use zoom icon and clicked() callback like in the epg grid 2014-09-28 15:17:13 +02:00
Kai Sommerfeld
74794abac9 [webui] - Use same selection list for extraStart and extraStop selection
in autorec entry editor like in recordings editor.
2014-09-28 12:35:47 +02:00
Jaroslav Kysela
d201a7afef WEBUI: EPG - add direct navigation for title/channel/genre 2014-09-28 12:28:01 +02:00
Jaroslav Kysela
0cb841a427 epg: query API rewrite 2014-09-27 22:19:05 +02:00
Kai Sommerfeld
ba136c5392 [htsp] fix typos in htsp_method_updateDvrEntry() 2014-09-25 22:31:33 +02:00
Sascha Kuehndel (InuSasha)
eea9d7dc0f remove unused files
(forgotten on rewrite of input system?)
2014-09-25 22:31:33 +02:00
Jaroslav Kysela
d57a53110b linuxdvb: rotor fix grace calculation for USALS (time units) 2014-09-25 22:18:08 +02:00
Jaroslav Kysela
bffd6fb2ca idnode api: little cleanup 2014-09-25 14:48:07 +02:00
Jaroslav Kysela
7fa70f9e87 epg: remove unused epg_hash() function 2014-09-25 11:48:32 +02:00
Jaroslav Kysela
d0ab5016be ACL: Fix the channel tag and DVR config handling, fixes #2326 2014-09-25 09:14:48 +02:00
Jaroslav Kysela
de634ddf91 htsp: fixed wrong mutex usage and leaks in htsp_write_scheduler() 2014-09-22 22:03:45 +02:00
Jaroslav Kysela
e0032402cf descrambler: fix two memory leaks 2014-09-22 18:02:40 +02:00
Jaroslav Kysela
b2bdcb3e3c opentv: fix memory leaks for regex patterns 2014-09-22 17:53:19 +02:00
Jaroslav Kysela
2ea3c96d3f globalheaders: fix again the wrong packet refcounting 2014-09-22 17:12:36 +02:00
Jaroslav Kysela
df1cf7dffe idnode: optimize idnodes (split to domains) 2014-09-22 17:08:14 +02:00
Jaroslav Kysela
fca35b9d2d htsp: ix config profile selection based on user ACL #2 2014-09-22 08:51:23 +02:00
Jaroslav Kysela
4bdcdd2f64 htsp: Fix config profile selection based on user ACL 2014-09-22 08:45:53 +02:00
Jaroslav Kysela
616e774031 DVR: Fix sorting for lists (like channel, config profile etc..) 2014-09-21 17:10:33 +02:00
Jaroslav Kysela
dff536a840 DVR: Fixed the channel icon url, fixes #2322 2014-09-21 15:28:13 +02:00
Mario Di Raimondo
a8d5bbc067 two genre maps for opentv sky-it/ausat imported from "EPG Collector" project
I've personally verified the sky-it one; the other one should work too.
2014-09-21 09:33:30 +02:00
Jaroslav Kysela
24b1818e43 linuxdvb: rotor - add Max Rotor Movement field to the frontend config #2 2014-09-21 09:21:51 +02:00
Jaroslav Kysela
dc56784fdd Revert "linuxdvb: rotor - add Max Rotor Movement field to the frontend config"
This reverts commit aaedddc7e0.
2014-09-21 09:18:19 +02:00
Jaroslav Kysela
aaedddc7e0 linuxdvb: rotor - add Max Rotor Movement field to the frontend config 2014-09-21 09:12:35 +02:00
Jaroslav Kysela
fa1ce0aa2f linuxdvb: fix the USALS grace calculation 2014-09-21 08:53:47 +02:00
Jaroslav Kysela
6a86c966f3 descrambler: remove the extra (not required) condition < 0 for uint16_t 2014-09-20 21:58:14 +02:00
Jaroslav Kysela
1b6c2275a6 channel: fix channel_find_by_number for maj.min support, fixes #2321 2014-09-20 21:55:09 +02:00
Jaroslav Kysela
710119a707 tcp: don't crash when tcp server cannot be registered, fixes #2315 2014-09-20 21:07:49 +02:00
Jaroslav Kysela
24e2c3dd10 linuxdvb: diseqc tune - show the wait trace msg for rotor 2014-09-19 22:48:02 +02:00
Jaroslav Kysela
7087d29dd5 linuxdvb: rotor - fix USALS goto position value in log 2014-09-19 22:44:47 +02:00
perexg
885d9ff077 Merge pull request #486 from diraimondo/master
moved opentv patterns from code-level to the provider configuration file
2014-09-19 22:34:54 +02:00
Mario Di Raimondo
f419834747 typo in a trace message 2014-09-19 22:19:03 +02:00
Mario Di Raimondo
c7bfb7c904 fixed escaping of a reference string in sky-it file 2014-09-19 22:15:18 +02:00
Mario Di Raimondo
42ab7a367b introduced function _opentv_apply_pattern_list in order to cleanup the code to apply regexes 2014-09-19 22:15:18 +02:00
Mario Di Raimondo
c424b5822a inserted as fake elements some reference strings for the patterns in the sky-it configuration file
they could be useful in the future in order to reconstruct the logic behind the patterns
2014-09-19 22:15:18 +02:00
Mario Di Raimondo
a6fd491710 moved opentv patterns from code-level to the provider configuration file
This permits to add/change patterns without touching the code.

In the original code of tvheadend there was an old pattern: it was
copied in ausat/skyuk conf file in order to maintain backward compatibility.
Note: now all the patterns are uniformly applied in a case-sensitive way (necessary for sky-it subtitle patterns)
2014-09-19 22:15:18 +02:00
Jaroslav Kysela
8d5e1814a0 WEBUI JS: status tabs - add missing comet shutdown calls 2014-09-19 21:40:14 +02:00
Jaroslav Kysela
a001ef012d tsfix: revert the code logic back in recover_pts() 2014-09-19 20:33:12 +02:00
Jaroslav Kysela
962f99c69f config: add more help to the log when backup fails 2014-09-19 14:14:01 +02:00
Jaroslav Kysela
286509b7f7 descrambler: show also section for ECM messages in traces 2014-09-19 14:03:29 +02:00
Jaroslav Kysela
5764703e4b cwc: ECM section filtering is in descrambler.c, remove it from cwc 2014-09-19 14:02:25 +02:00
Jaroslav Kysela
3ac7a43c0d cwc: Add missing loop break in the section resolved check 2014-09-19 13:57:56 +02:00
Jaroslav Kysela
8b1ce062aa cwc: show section in NOK log msgs 2014-09-19 13:56:41 +02:00
Jaroslav Kysela
0b2cddada3 descrambler: add ECM section filtering 2014-09-19 13:51:41 +02:00
Jaroslav Kysela
fcb1c5a7d1 DVR: timerec - clear the seconds for the scheduling times 2014-09-19 13:19:56 +02:00
Jaroslav Kysela
19afc9a017 htsp: add getChannel method, fixes #2283 2014-09-19 13:11:27 +02:00
Jaroslav Kysela
ad4de65b6f cwc: whitespace fixes and removal 2014-09-19 11:07:16 +02:00
Jaroslav Kysela
d38f9006d7 globalheaders: fix "reorganize refcounting for readability" commit 2014-09-19 10:28:04 +02:00
Jaroslav Kysela
4a53de9d76 DVR: Fix memory leak in dvr_entry_create_() 2014-09-19 08:55:34 +02:00
Jaroslav Kysela
b2d01569aa cwc: cosmetic fix (indentation) 2014-09-18 22:21:49 +02:00
Jaroslav Kysela
bafbf389f8 cwc: add support for the key state per section 2014-09-18 22:18:49 +02:00
Jaroslav Kysela
bdb31c36a2 cwc: use list for ep_sections rather than an array 2014-09-18 20:32:25 +02:00
Jaroslav Kysela
4bce3dc4ae muxer: Fix the preprocesor directive 2014-09-18 17:26:47 +02:00
Jaroslav Kysela
651d0404bd subscription: Move TSS_NO_ACCESS outside of the fatal errors
... but keep to report it as the first reason for which the streaming
was canceled ...

Remove also the 25-seconds descrambler check. There is a global
streaming timeout which takes care now.
2014-09-18 15:41:26 +02:00
Jaroslav Kysela
abad73972d descrambler: Fix the graceful flush for cwc 2014-09-18 14:51:50 +02:00
Jaroslav Kysela
249eac3e11 DVR: config - use combobox to set the extra times 2014-09-18 14:24:51 +02:00
Jaroslav Kysela
4f494c6cb6 DVR: Added configurable EPG update window 2014-09-18 12:43:07 +02:00
Jaroslav Kysela
c571413e65 tsfix: fix the crash caused by last tsfix.c modification (memory leak fix) 2014-09-18 11:40:23 +02:00
Jaroslav Kysela
03af723216 linuxdvb: rotor - try to fix the grace calculation routine for USALS and negative longtitudes 2014-09-18 10:37:54 +02:00
Jaroslav Kysela
34cb8509d1 scanfile: Fix new format parser for DVB-S and DVB-C 2014-09-18 08:21:45 +02:00
Jaroslav Kysela
a643a79f6b WEBUI: Whitespace fix 2014-09-17 20:25:25 +02:00
Jaroslav Kysela
81514467bc WEBUI: Show the browser (client) address in Tip in the login info text 2014-09-17 20:24:41 +02:00
Jaroslav Kysela
3c0ca052db ACL: Fix ugly typo in the address parsing 2014-09-17 19:17:49 +02:00
Jaroslav Kysela
9ac202d376 DVR: another dvr_config_find_by_name_default fix 2014-09-17 18:26:57 +02:00
Jaroslav Kysela
c94e2b99d5 DVR: move query functions to simpleui (only this user) 2014-09-17 18:26:37 +02:00
Jaroslav Kysela
0cd4319eb9 DVR: Fix dvr_config_find_by_name_default, attempt #2 2014-09-17 17:47:47 +02:00
Jaroslav Kysela
6ddd022056 DVR: Fix dvr_config_find_by_name_default (no config files) 2014-09-17 16:10:37 +02:00
Jaroslav Kysela
b3586c2f3b tsfix (matroska, htsp): fix memory leaks (refcounting) 2014-09-17 14:54:38 +02:00
Jaroslav Kysela
6df75e847a globalheaders (matroska): reorganize refcounting for readability 2014-09-17 14:53:27 +02:00
Jaroslav Kysela
a7f80d2a8e descrambler: do not allow to open new pids when flushed 2014-09-17 11:53:21 +02:00
Jaroslav Kysela
a766245f8a DVR: Fix the wrong memory access
Note that dvr_thread() uses the de->de_s contents which is
freed in subscription_unsubscribe().

Move the subscription_unsubscribe() as last.
2014-09-17 11:43:51 +02:00
Jaroslav Kysela
2e017d6b64 DVR: Fix memory leaks 2014-09-17 10:04:25 +02:00
Jaroslav Kysela
b9997bb64f DVR: Move dvr_entry_cancel() fcn 2014-09-17 09:51:11 +02:00
Jaroslav Kysela
6a90afd255 DVR: Move dvr config routines to dvr_config.c 2014-09-17 09:42:49 +02:00
Jaroslav Kysela
236b99864a globalheaders: add restart support to gh_pass() 2014-09-17 09:00:22 +02:00
Mario Di Raimondo
45bb1c8bad remove trailing spaces from title and subtitle 2014-09-17 08:41:33 +02:00
Jaroslav Kysela
e5137f8ef8 webui: fix the range variable formats in page_dvrfile() 2014-09-17 08:39:10 +02:00
Jaroslav Kysela
54dd7ddc01 DVR: Handle DVR_NOSTATE in cancel functions 2014-09-17 08:28:13 +02:00
Jaroslav Kysela
f35f4ce73a ACL: Rewrite a bit the IP address parsing and handling 2014-09-16 20:30:18 +02:00
Jaroslav Kysela
97999e4715 ACL: set the default (no filter) prefix when user entered empty or wrong prefix 2014-09-16 17:23:43 +02:00
Jaroslav Kysela
89ee111a26 ACL: Fix username match 2014-09-16 15:05:22 +02:00
Jaroslav Kysela
972306d813 HTTP server: use cookie to remember the logout state 2014-09-16 15:03:11 +02:00
Jaroslav Kysela
b55b9c9ac3 DVR: dvr_config_name cleanups 2014-09-16 13:08:34 +02:00
Jaroslav Kysela
175fee8e86 DVR: Fix dvr_config_find_by_name_default() 2014-09-16 12:33:21 +02:00
Jaroslav Kysela
a79cdee345 config: backup - exclude epggrab/*.sock files 2014-09-16 12:29:08 +02:00
Jaroslav Kysela
1a081469cc DVR: Cache the default dvr config, argument cleanups 2014-09-16 12:15:46 +02:00
Jaroslav Kysela
99152b547a DVR: Move the de->de_config init to the right place 2014-09-16 12:04:21 +02:00
Jaroslav Kysela
6b71fb0388 WEBUI JS: Fix null error in idnode_grid.. 2014-09-16 12:00:32 +02:00
Jaroslav Kysela
800949ab0a DVR: Link the autorec/timerec with dvr_config_t 2014-09-16 11:59:47 +02:00
Jaroslav Kysela
ca37050d23 DVR: Timer Based Recording - create "next day" entries, fix regular updates 2014-09-16 10:40:47 +02:00
Jaroslav Kysela
d11c919153 DVR: Fix the retention condition
Introduced by "[htsp] allow clients to get/set dvr priority and retention"
2014-09-16 08:52:19 +02:00
Jaroslav Kysela
5484e9940d WEBUI JS: rename the timerec to time schedule 2014-09-16 08:40:26 +02:00
Jaroslav Kysela
eeb5ac8e02 DVR WEB UI: Fix the DVR tabs bug introduced with latest changes (weekdays) 2014-09-15 23:23:41 +02:00
Jaroslav Kysela
e9d4a61cc5 DVR: Add all weekdays as default 2014-09-15 21:27:46 +02:00
Jaroslav Kysela
6de4fb94ea DVR: Time Based Recorder 2014-09-15 20:59:44 +02:00
Glenn-1990
d7b7f72845 [fix] use correct start/stop times 2014-09-15 09:24:44 +02:00
Mario Di Raimondo
b7a45dfaee a more robust check on the outcome of regexec and a more clean design 2014-09-15 09:22:28 +02:00
Mario Di Raimondo
651e26f0c1 further pattern refinements after some extensive testing 2014-09-15 09:22:28 +02:00
Mario Di Raimondo
77af58e506 generalized some patterns and added new cases signaled by @stan86 2014-09-15 09:22:28 +02:00
Mario Di Raimondo
90bcfd3047 extraction of part number from summary of sky-it EPG 2014-09-15 09:22:28 +02:00
Mario Di Raimondo
b39da3a8c5 added some reference examples for sky-it patterns
they could be useful in the future...
2014-09-15 09:22:28 +02:00
Mario Di Raimondo
d5f96489da extraction of subtitle (episode title) from the summary of sky-it EPG
(the regexp looks garbled because single quote can even occur in the subtitle and I don't want to introduce pcre dependency)
2014-09-15 09:22:28 +02:00
Jaroslav Kysela
388c665a90 dvr_autorec.c: Fix the utf-8 in comment 2014-09-14 19:23:47 +02:00
Jaroslav Kysela
74823d7440 DVR: Fix the stop time calculation in dvr_timer_start_recording() 2014-09-14 18:29:58 +02:00
Glenn-1990
32664acac9 [htsp] add autorec support 2014-09-14 18:28:49 +02:00
Glenn-1990
8b5f858cce [htsp] send actual pre/post times and retention 2014-09-14 18:28:49 +02:00
Glenn-1990
09acfa18f9 [htsp] add some more DVR fields 2014-09-14 18:28:49 +02:00
Glenn-1990
492a988271 [htsp] allow clients to get/set dvr priority and retention 2014-09-14 18:28:49 +02:00
Glenn-1990
1c2051d512 [htsp] bump htsp version 2014-09-14 18:28:49 +02:00
perexg
22a40bce25 Merge pull request #481 from ProfYaffle/master
Webui: Align epg duration filter with autorec grid values
2014-09-14 17:11:57 +02:00
Ian
dea2ccabd1 Webui: Align epg duration filter with autorec grid values 2014-09-14 09:11:28 +01:00
Jaroslav Kysela
0ac8cdcf83 service: fix the mutex deadlock at shutdown in service_saver() thread fcn 2014-09-13 21:31:34 +02:00
Jaroslav Kysela
a77b65a8af WEBUI: Do not show the access state if --noacl is active 2014-09-13 21:23:42 +02:00
Jaroslav Kysela
242496e163 DVR: Fix the autorec minduration/maxduration 2014-09-13 21:01:22 +02:00
Jaroslav Kysela
c6f0242049 avahi: make sure that mallocated path is freed 2014-09-13 18:10:03 +02:00
Jaroslav Kysela
1ac14a2d5b intlconv: Do not free alloca-ted string 2014-09-13 18:07:07 +02:00
Jaroslav Kysela
22eeadfac4 scanfile: add support for new linux dvb file format 2014-09-13 17:21:53 +02:00
perexg
c558924435 Merge pull request #480 from ProfYaffle/master
Webui: restore channel tag functionality to EPG query and autorec
2014-09-13 15:54:15 +02:00
Ian
60297b856d Webui: restore channel tag functionality to EPG query and autorec 2014-09-13 14:39:49 +01:00
perexg
e6ee82cf94 Merge pull request #478 from diraimondo/master
scraping season/episode numbers for sky-it
2014-09-13 13:34:44 +02:00
Mario Di Raimondo
42de59d34d several adjustments
- make use of ARRAY_SIZE macro;
- missing static keyword for global variables;
- better patterns for sky-it with possibility to support a description without season specification;
- debug messages;
2014-09-13 00:49:22 +02:00
Mario Di Raimondo
8a0a5183b0 improved regexs management
As suggested by perex, moved patterns and regexs as global variables and their management in opentv_init/opentv_done.
2014-09-12 21:56:08 +02:00
Mario Di Raimondo
a520d98cc8 scraping season/episode numbers for sky-it
Extended the already present hack to extract such numbers from episode descriptions in Sky IT EPG data.
2014-09-12 20:00:56 +02:00
Mario Di Raimondo
06782f719c Merge pull request #1 from tvheadend/master
sync with main repository
2014-09-12 19:56:58 +02:00
Jaroslav Kysela
ea9d782ba8 channel: fix ch_number type, might fix crashes and numbers > 2000 2014-09-12 17:43:38 +02:00
Jaroslav Kysela
9a1fc691d5 WEBUI JS: Do not allow to create events from EPG if ACL does not allow that 2014-09-12 17:18:10 +02:00
Jaroslav Kysela
33a516b14b HTTP API: add missing access verification for all API calls 2014-09-12 16:55:36 +02:00
Jaroslav Kysela
2c7cc8c453 WEBUI: add the logged user status, allow logout and login
Finally! It's here. I was missing it. The login/logout link
might need more work to follow the other extjs button look...
2014-09-12 16:40:27 +02:00
Jaroslav Kysela
6e42115ea6 epggrab: ota - fix the epggrab_ota_cron_multi init (not OTA EPG with defaults) 2014-09-12 09:44:53 +02:00
Jaroslav Kysela
02f98c3f8c idnode: fix idnode_cmp_sort (overflows) 2014-09-12 09:23:44 +02:00
Jaroslav Kysela
82eeb8a239 DVR: Show the status in failed grid, create doc templates... 2014-09-12 09:02:32 +02:00
Jaroslav Kysela
49cdc5a9db epggrab: ota - show warning when the cron settings are invalid 2014-09-11 21:43:22 +02:00
Jaroslav Kysela
b8fa239354 idnode: Add intsplit filtering (include double ops, too) 2014-09-11 19:49:19 +02:00
Jaroslav Kysela
c073538e05 channel number: add minor number handling for ATSC 2014-09-11 15:27:01 +02:00
Jaroslav Kysela
7074bb61bb DVR: Remove dvr_flags and m_config.m_flags - use direct values 2014-09-11 11:54:56 +02:00
Jaroslav Kysela
28dc589581 DVR: Introduce 'Do Not Include Title To Filename', fixes #2291 2014-09-11 11:39:08 +02:00
Jaroslav Kysela
5f5f554e40 WEBUI JS: DVR - fix the default sorting 2014-09-11 09:26:59 +02:00
Jaroslav Kysela
5c7196bbdb DVR: Fix bugs in the extra time calculators 2014-09-11 09:14:09 +02:00
Jaroslav Kysela
b9c3895746 service: little opmitization in service_instance_add() 2014-09-11 09:09:20 +02:00
Jaroslav Kysela
2051682c03 cron: Fix possible division by zero error 2014-09-11 08:48:37 +02:00
Jaroslav Kysela
26c778df63 ACL: Fix the password initialization when ACL entry is created, fixes #2252 2014-09-10 23:47:59 +02:00
Jaroslav Kysela
78de846639 DVR: autorec - enable the entries created from EPG by default 2014-09-10 23:34:11 +02:00
Jaroslav Kysela
6ba1d6f035 WEBUI JS: Fix rendering of weekdays in autorec 2014-09-10 23:30:18 +02:00
Jaroslav Kysela
8323fa7839 DVR: remove unused rend callback and fix the weekdays one 2014-09-10 23:29:57 +02:00
Jaroslav Kysela
3b1d18c306 idnode: Fix PT_S64 and PT_TIME filtering 2014-09-10 19:57:49 +02:00
Jaroslav Kysela
f7d2337464 DVR: fix copy typos (episode-in-title, subtitle-in-title) 2014-09-10 19:06:25 +02:00
Jaroslav Kysela
3716d28ff1 epggrab: ota - improve and fix the logic and defines for the EPG control, add documentation 2014-09-10 15:48:36 +02:00
Jaroslav Kysela
a76ee1921b epggrab: EIT - fix the service remove condition 2014-09-10 15:25:12 +02:00
Jaroslav Kysela
20171038ab WEBUI JS: Autorec - Fix the Starting Around loading 2014-09-10 09:10:52 +02:00
Jaroslav Kysela
ea60d88a9a config: backup - show the directory where tar was executed on error 2014-09-09 20:08:50 +02:00
Jaroslav Kysela
39cfa87a95 WEBUI JS: Sync the dynamic enum lists with grid columns better 2014-09-09 20:03:21 +02:00
Jaroslav Kysela
05783ac9d7 DVR: Do the autorec event checks after autorec create 2014-09-09 17:40:28 +02:00
Jaroslav Kysela
8fab74472d DVR: entry - fix the config name parsing 2014-09-09 17:02:18 +02:00
Jaroslav Kysela
34edcf8b2e http: access - fix ticked based access 2014-09-09 16:50:27 +02:00
Jaroslav Kysela
547369ec18 WEBUI JS: Fix the Create AutoRec from main EPG tab 2014-09-09 16:10:35 +02:00
Jaroslav Kysela
08b2b298e4 DVR: fix the autorec creation from EPG dialog 2014-09-09 15:57:46 +02:00
Jaroslav Kysela
7863fc923d linuxdvb: remove the wrong assert in mux stop (lfe_in_setup) 2014-09-09 14:05:22 +02:00
Jaroslav Kysela
3240a8eabc mpegts: add the AC-3 PMT 0x06 switch to the mux config 2014-09-09 11:45:37 +02:00
Jaroslav Kysela
bc021ad595 webui: cosmetic - move year in about to 2014 2014-09-09 09:26:14 +02:00
Jaroslav Kysela
b54cbf5cbd WEBUI JS: Channel config tab - add back the number handling buttons 2014-09-09 09:17:05 +02:00
Jaroslav Kysela
876b734297 WEBUI JS: DVR - fix the Play link in the finished recordings 2014-09-09 08:36:09 +02:00
Jaroslav Kysela
679eae577e WEBUI JS: DVR - fix typo in the default sort setup 2014-09-08 22:21:46 +02:00
Jaroslav Kysela
0e6c737626 idnode: Fix sorting for bool and time types 2014-09-08 22:11:47 +02:00
Jaroslav Kysela
c2680b5f0c config: Fix the autorec entries migration 2014-09-08 21:27:59 +02:00
Jaroslav Kysela
4c01042b58 DVR: Fix autorec updates from webui 2014-09-08 21:09:48 +02:00
Jaroslav Kysela
1b063c7600 WEBUI JS: Fix the idnode_tree (parameters missing) 2014-09-08 20:38:23 +02:00
Jaroslav Kysela
6a31c62e26 WEBUI JS: EPG: Fix the dvr create by series URL 2014-09-08 18:36:09 +02:00
Jaroslav Kysela
4963d4c94d cron: fix the cron_multi_set memory allocation - fixes #2273 2014-09-08 18:04:19 +02:00
Jaroslav Kysela
ba01c1000a WEBUI JS: fix the any match query for comboboxes 2014-09-08 17:56:47 +02:00
Sascha Kühndel
df01566def Update linuxdvb_lnb.c
add a comment, for better understanding
2014-09-08 17:56:47 +02:00
Sascha Kuehndel (InuSasha)
e80f07ea20 linuxdvb: improve internal collision prevention for en50494 2014-09-08 17:56:47 +02:00
Sascha Kuehndel (InuSasha)
21fc2f91c1 linuxdvb: fix bug 2229
change behavior for en50494
- don't use tone
- don't change voltage for tune (this makes the switch)
- skip unneeded test
2014-09-08 17:56:47 +02:00
Dietmar Konermann
cba6ac0003 Align condition when to show epg progress bar with bold face
Currently running programmes (bold) should always show the progress bar to avoid an inconstitent user experience.
2014-09-08 17:56:47 +02:00
xhaggi
a4d4d24099 [webui] enable any match mode for combo boxes
This enables the any match mode for combo boxes in the idnode.js which fix the issue that you can't search only for a service name within the service combo box.
2014-09-08 17:56:47 +02:00
Jaroslav Kysela
52d34e7c26 autorec: fix the compilation error (value computed is not used) 2014-09-08 17:35:33 +02:00
Jaroslav Kysela
04e9466164 config: do not ignore return value from getcwd() 2014-09-08 17:19:39 +02:00
Jaroslav Kysela
fe4dbc2c50 WEBUI JS: Improve look for forms with only basic settings 2014-09-08 17:08:15 +02:00
Jaroslav Kysela
ac09d42652 WEBUI JS: Add delete/abort confirm dialogs, improve idnode_form_grid 2014-09-08 16:49:00 +02:00
Jaroslav Kysela
4a60cb8801 WEBUI JS: DVR - fix the date filters, fix the file size rendering 2014-09-08 16:49:00 +02:00
Jaroslav Kysela
17a8c50c26 WEBUI JS: Improve layout for idnode_form_grid and idnode_tree 2014-09-08 16:49:00 +02:00
Jaroslav Kysela
755a5b0843 WEBUI JS: DVR autorec - fixed enable/enabled typo, better grid row column sizes 2014-09-08 16:49:00 +02:00
Jaroslav Kysela
41a4757a97 DVR fixes: creator, duration = 0, remove url from grid 2014-09-08 16:49:00 +02:00
Jaroslav Kysela
3a9c5d5a05 WEBUI JS: fix the idnode_form_grid 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
946edfd4ac config: backup - search for tar in more bin dirs 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
3faeb82e88 WEBUI JS: Add back the download button for finished recordings 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
7c4ff817b3 WEBUI JS: DVR - implement Abort, do not allow to edit rows with active recordinds 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
95c4abe53e config: add automatic backup at upgrade using 'tar cvjf' to <CFG>/backup directory 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
fe478893fd properties: introduce get_opts() callback for DVR 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
ce94d8c039 WEBUI JS: make dynamic behaviour as default 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
6aef861b76 mpegts table input: this fixes another access-after-free race in mpegts_input_table_thread() 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
1212a2d280 dvr: fix some webui interface issues 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
44bbfd4940 WEBUI JS: updated status tab to the dynamic behaviour 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
45667faa13 WEBUI JS: fix the status.js indentions 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
c7cd533fa1 WEBUI JS: add dynamic support to the idnode_tree 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
0baf95a392 WEBUI JS: Add possibility to create tab panels dynamically (disabled by default) 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
8d75fb0936 http: optimize the access verification 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
0fa4c91b5c WEBUI JS: root panel cleanups, ancient file removal 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
565004f63a WEBUI JS: remove comet debug log console messages 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
0d30c01800 WEBUI JS: remove all events from comet
- they are all used dynamically
2014-09-08 16:48:59 +02:00
Jaroslav Kysela
cf528dbe65 comet events - an attempt to clean them 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
9858ed04cd DVR: autorec duration fixes 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
0506aac6c1 WEBUI: add possibility to override column width for grid
- also improve the ACL edit window
2014-09-08 16:48:59 +02:00
Jaroslav Kysela
7fdf5f1f12 ACL/DVR: Rewrite channel tag and add DVR config selection
- remove also obsolete only_tag
- accept only uuid for DVR entry config name
- try to lock DVR entry when used in dvr_thread
2014-09-08 16:48:59 +02:00
Jaroslav Kysela
3c64f87d96 DVR: api - fix the dvr config entry create perm check 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
df7c00d122 subscription: Fix a memory leak in link service 2014-09-08 16:48:59 +02:00
Jaroslav Kysela
955dd33ad9 epggrab: channels - fix memory leak 2014-09-08 16:48:58 +02:00
Jaroslav Kysela
279ff71df7 dvr autorec: fix a memory leak 2014-09-08 16:48:58 +02:00
Jaroslav Kysela
0fa7365827 config migrate: run check only when version changed 2014-09-08 16:48:58 +02:00
Jaroslav Kysela
82c51826fa config migration: check for old filenames in the config dir 2014-09-08 16:48:58 +02:00
Jaroslav Kysela
82f7f89670 channel: cleanup the configuration tree
<cfg>/channel/config
  <cfg>/channel/tag

Also use hts_settings_load() instead hts_settings_load_r() for
the appropriate places..
2014-09-08 16:48:58 +02:00
Jaroslav Kysela
220833201f dvr: rewrite to use the idnode system 2014-09-08 16:48:58 +02:00
Ian
ca742e00a7 autorec: restore channel tag function in idnode model 2014-09-01 16:03:16 +02:00
Sascha Kuehndel (InuSasha)
999d184d69 [build] add LD flags to print_config 2014-09-01 15:36:21 +02:00
Sascha Kuehndel (InuSasha)
ae56b48e04 [build] fix configure with komplex enviroments
- add ldflags
- fix multivalued options like --cflags="-m64 -I/include/extra"
2014-09-01 15:36:21 +02:00
Kai Sommerfeld
f2a5c41099 Fixed signal_statetab. 2014-09-01 15:34:22 +02:00
Kai Sommerfeld
2090495244 Indentation fixes (remoevd hard tabs). 2014-09-01 15:34:22 +02:00
Michel Verbraak
8989eb0c9c Using new libav CODEC_ID values.
Signed-off-by: Michel Verbraak <info@1st-setup.nl>
2014-09-01 15:34:22 +02:00
Gary The Brown
6f7ddb36d3 FIX: when configure tries to update the mux lists through git it would cause a fail if anything had been changed in the Data/dvb-scan folder
changed the inital git pull to a git fetch and added git pull after the git reset to make sure they have the latest files
2014-09-01 15:34:22 +02:00
Jaroslav Kysela
1b3fe3d29f dbus: fix a memory leak 2014-09-01 15:26:29 +02:00
Jaroslav Kysela
65831229c0 ACL: revert 'Username Configs' to 'All Configs'..
(sorry - my mistake - perexg)
2014-09-01 15:26:20 +02:00
Jaroslav Kysela
2746998859 uuid: don't terminate app on an error 2014-08-29 20:15:24 +02:00
Dave Chapman
4ce05e56a7 webui: Fix typo in a settings label 2014-08-29 17:17:25 +01:00
Jaroslav Kysela
24171eb3d6 SAT>IP: break TEARDOWN poll loop also on ERROR or HUP 2014-08-29 16:10:52 +02:00
Jaroslav Kysela
9eea4812da linuxdvb: clear lfe_in_setup when a tune error occurred 2014-08-29 11:07:38 +02:00
Dave Chapman
6e4a22a52d Use the on-disk filename in the content-disposition header when downloading recordings in the webui. The old behaviour was to just take the episode title, and would generate a ".bin" extension for passthrough (TS) recordings. 2014-08-27 22:30:07 +01:00
Jaroslav Kysela
99ed831f37 mpegts network: discovery - always save the orbital position 2014-08-22 17:35:27 +02:00
Jaroslav Kysela
e5b83a6a7c webui: add missing Delete action/button to the channel tag tab 2014-08-22 08:32:42 +02:00
Jaroslav Kysela
cbf827fafd descrambler: Fix EMM PID open in the CAT data callback 2014-08-21 22:08:50 +02:00
Jaroslav Kysela
0db47ed59c Revert "dvr: migrate config v8 -> v9"
This reverts commit bee6c8ee2e.
2014-08-21 21:39:08 +02:00
Jaroslav Kysela
35a296c622 webui: Fix the broken access check for containers and cache systems 2014-08-21 21:37:27 +02:00
Jaroslav Kysela
bee6c8ee2e dvr: migrate config v8 -> v9 2014-08-21 21:36:49 +02:00
Jaroslav Kysela
00464a8deb SAT>IP: Reworked the wait delay at startup 2014-08-21 20:22:58 +02:00
Jaroslav Kysela
54569a5b92 channel: Fix the class name 2014-08-21 16:31:48 +02:00
Jaroslav Kysela
40cabce3d8 HTSP: It seems that XBMC PVR does not like big tag identifiers, renumber 2014-08-21 16:20:30 +02:00
Jaroslav Kysela
3c088cb271 channel: tags - move to idnode system 2014-08-21 14:49:19 +02:00
Jaroslav Kysela
a958fd749e config: add migration for channel tags to v8 config 2014-08-20 22:03:25 +02:00
Jaroslav Kysela
137041c5f1 descrambler: optimization for FTA channels 2014-08-20 21:10:00 +02:00
Jaroslav Kysela
6cbf1568bb idnode: ensure that idnode_insert return value is checked on all places 2014-08-20 19:27:09 +02:00
Jaroslav Kysela
17319d4927 tvhlog: fix the tvhlog_limit() plus linuxdvb quick-fix 2014-08-20 17:38:52 +02:00
Jaroslav Kysela
b7ff47f633 linuxdvb: limit to log status ioctl errors once per hour 2014-08-20 16:08:08 +02:00
Jaroslav Kysela
7fe33f7bfd Handle signal SIGILL for ARM 2014-08-20 13:37:49 +02:00
Jaroslav Kysela
8677a62f78 limit log: move it to tvhlog.h, use a condition instead a print function 2014-08-20 13:36:25 +02:00
Jaroslav Kysela
a82cdec82d mpegts: tables - print only one table error per 10 seconds + total errors value 2014-08-20 09:10:49 +02:00
Jaroslav Kysela
2e5b239cb5 epggrab: ota - do not requeue completed muxes 2014-08-19 20:11:54 +02:00
Jaroslav Kysela
a43e80d6a9 opentv: save service when the opentv channel number is updated 2014-08-19 17:30:47 +02:00
Jaroslav Kysela
ae0d4dc462 opentv: cnum 65535 is bad - handle it as zero 2014-08-19 17:21:25 +02:00
Jaroslav Kysela
d043dbe24b idnode: Fix the short idnode unique number detection 2014-08-19 16:46:43 +02:00
Jaroslav Kysela
e6d2f393fa opentv: Add the local channel number mapping 2014-08-19 16:46:38 +02:00
Jaroslav Kysela
2f9ab1bc14 SAT>IP: INPUT_STREAM_STATS_ -> SIGNAL_STATUS_ 2014-08-18 20:22:33 +02:00
Jaroslav Kysela
dbd5b24dbd make deltaU32() as inline fcn 2014-08-18 20:21:16 +02:00
Ullrich kossow
17f7c150a8 Corrected some unsigned int comparisons 2014-08-18 20:12:32 +02:00
Ullrich kossow
02bb99bb39 Removed doubele enum definition tvh_input_stream_stats_scale_t and signal_status_scale_t 2014-08-18 20:12:32 +02:00
Ullrich kossow
60ab48a876 Compare value, not the address of variable 2014-08-18 20:12:32 +02:00
Jaroslav Kysela
a208063195 dbus: add -U,--dbus switch to manually enable the DBus interface 2014-08-18 14:22:46 +02:00
Jaroslav Kysela
2bfa7e3c08 mpegts mux: fix the active mux check for IPTV - introduce warm mux callback 2014-08-18 14:06:20 +02:00
Jaroslav Kysela
e5fda6dd79 mpegts: improve the mux display name
- show MHz values also for DVB-T and DVB-C
- show also kHz digits after dot (up to 3)
2014-08-18 13:41:07 +02:00
Jaroslav Kysela
c31a0c8077 SAT>IP: The frequencies for DVB-T and DVB-C are in Hz - missin / 1000 2014-08-18 13:17:37 +02:00
Jaroslav Kysela
380c18639e dvb psi parser: fix the warning message in dvb_desc_terr_del() 2014-08-18 13:16:51 +02:00
Jaroslav Kysela
4a13a2b1ba uuid: check the uuid string size 2014-08-18 11:46:38 +02:00
Jaroslav Kysela
4dc87895d1 ACL: fix password migration 2014-08-18 11:42:35 +02:00
Jaroslav Kysela
51660ad01d SAT>IP: let static clients to initialize, even if UPnP init failed 2014-08-18 09:19:39 +02:00
Jaroslav Kysela
51ea193f2b subscriptions: send GRACE also for the MUX subscriptions 2014-08-18 08:49:58 +02:00
Jaroslav Kysela
adc59990be subcriptions: reschedule - add the early retry scheme for the busy situations 2014-08-17 23:04:47 +02:00
Jaroslav Kysela
68232b6604 linuxdvb: Do not allow to use tuner in the setup phase (diseqc+) 2014-08-17 22:43:12 +02:00
Jaroslav Kysela
f14d7beda9 mpegts: move active mux check to mpegts_mux_instance_start() 2014-08-17 22:41:44 +02:00
Jaroslav Kysela
ff0e7ef198 Revert "linuxdvb: handle lfe_ready better - send status all time"
This reverts commit 91f3b2c5f8.
2014-08-17 20:24:30 +02:00
Jaroslav Kysela
b886d1965c ACL: fix the channel tag list creation 2014-08-17 19:59:41 +02:00
Jaroslav Kysela
5a4da40133 ACL: 2nd attempt to fix the default access 2014-08-17 19:57:16 +02:00
Jaroslav Kysela
6883f39729 ACL: fix the default rights and rights updating 2014-08-17 15:47:43 +02:00
Jaroslav Kysela
91f3b2c5f8 linuxdvb: handle lfe_ready better - send status all time 2014-08-17 10:56:10 +02:00
Jaroslav Kysela
a5bca8637c ACL: add missing src/api/api_access.c file 2014-08-16 23:56:59 +02:00
Jaroslav Kysela
8c24a4cf6f ACL: rewrite to use idnode system... 2014-08-16 23:51:59 +02:00
Jaroslav Kysela
a75d6b75d0 linuxdvb: add more trace info to the tune functions 2014-08-16 21:09:31 +02:00
Jaroslav Kysela
0f43024f70 idnode: fix the short uuid check in idnode_insert() 2014-08-16 19:32:48 +02:00
Jaroslav Kysela
fd8649d495 whitespace fix 2014-08-16 15:55:02 +02:00
Sergio Costa Fortier
9af56fd79d Corrected ssize_t log printing. Cleanup. 2014-08-16 15:54:08 +02:00
Sergio Costa Fortier
d91375de0a Corrected build for android.
Included --enable-android on configure script.
Build with that sample script:
#!/bin/sh
# Make sure you have TOOLCHAIN defined in .bashrc or .bash_profile and have linux/dvb headers in include dir.
SRC_DIR="`pwd`/tvheadend"
INCLUDE_DIR="`pwd`/out/include"
cd $SRC_DIR
export SYS_ROOT="$TOOLCHAIN/sysroot"
export CC="arm-linux-androideabi-gcc --sysroot=$SYS_ROOT -I$INCLUDE_DIR"
export CXX="arm-linux-androideabi-g++ --sysroot=$SYS_ROOT -I$INCLUDE_DIR"
export CPP="arm-linux-androideabi-cpp"
export LD="arm-linux-androideabi-ld"
export AR="arm-linux-androideabi-ar"
export RANLIB="arm-linux-androideabi-ranlib"
export STRIP="arm-linux-androideabi-strip"
export CROSSCOMPILE="arm-linux-androideabi-"
export CFLAGS="--sysroot=$SYS_ROOT -I$INCLUDE_DIR"
export CXXFLAGS="--sysroot=$SYS_ROOT -I$INCLUDE_DIR"
export LIBS="-lc -lgcc"
./configure --prefix=$SYS_ROOT/usr --arch=armv7  --platform=linux --disable-avahi --enable-bundle --python=/usr/bin/python --enable-android
make
TODO: change shm code to ashmem on tvhtime.c
2014-08-16 15:54:08 +02:00
Dreamcat4
f78ce0a4fe Fix Syntax error. Redirection wrong way around. Thanks @ksooo ! 2014-08-16 12:21:12 +01:00
Dreamcat4
e679aefb4f For issue#2192. Run scripts though shellcheck. Put back configure.inc to use bash for now. 2014-08-16 12:21:08 +01:00
Jaroslav Kysela
f0b348d457 linuxdvb: Add default name Position#<num> for the advanced DVB-S settings 2014-08-16 09:13:22 +02:00
Jaroslav Kysela
98f197ce6c linuxdvb: one more en50494 creation fix 2014-08-16 09:07:37 +02:00
Jaroslav Kysela
e1add61aa8 idnode: handle short uuid identifiers better 2014-08-15 20:06:06 +02:00
Jaroslav Kysela
1dc009a94d epggrab: remove epggrab_running check from _epggrab_socket_thread()
... otherwise the loop will be terminated before epggrab_running is set to 1 at startup
2014-08-15 12:27:41 +02:00
Jaroslav Kysela
59242268bd http: improve the error logging 2014-08-15 12:25:44 +02:00
Sascha Kuehndel (InuSasha)
c66edd21c5 linuxdvb: en50494 fix saving settings 2014-08-14 20:07:36 +02:00
Jaroslav Kysela
1cf6149b06 linuxdvb: en50494 - ID (1-8) is really SCR number (0-7) 2014-08-14 17:07:56 +02:00
Jaroslav Kysela
c6d99fc4a7 linuxdvb: en50494 - add list (0, 1) for position val\ue, too 2014-08-14 17:07:53 +02:00
Jaroslav Kysela
6eb0a6b88c linuxdvb: en50494 - use safe values for data1 2014-08-14 16:40:44 +02:00
Jaroslav Kysela
8f00f09837 dvr: fix the start and end time for post processor - fixes #1990 2014-08-14 16:22:57 +02:00
Jaroslav Kysela
1eddf45a8a capmt: do properly the reconnection, fix another mutex bug - fixes #2227 2014-08-14 15:48:26 +02:00
Jaroslav Kysela
cb5c5d19dc access: fix access_get_hashed() the '*' user handling 2014-08-14 12:59:44 +02:00
Jaroslav Kysela
d32793258d access: add back proper --noacl handling, show error when no acl entries are present 2014-08-14 12:47:06 +02:00
Jaroslav Kysela
c7d2595d95 access: Fix ACCESS_FULL and handle --noacl also in access_get_by_addr() 2014-08-14 12:28:35 +02:00
Jaroslav Kysela
1579757ca0 server: Add the CAID column to make possible to filter services against CAID - fixes #2153 2014-08-13 20:53:02 +02:00
Jaroslav Kysela
39c202cff2 mpegts dvb mux: Allow to change the frequency and symbolrate trough the Edit button 2014-08-13 20:27:16 +02:00
Jaroslav Kysela
7d3a65d047 support: replace /bin/bash with /bin/sh for FreeBSD - fixes issue#2192 2014-08-13 18:05:25 +02:00
Jaroslav Kysela
261536c48f SAT>IP: Fix the master tuner function - fixes#2174 2014-08-13 16:53:58 +02:00
Jaroslav Kysela
17c23ee71d linuxdvb: another attempt to fix unicable config - fixes#2188 2014-08-13 15:50:12 +02:00
Jaroslav Kysela
0addaf1389 tcp: bind http and htsp ports before setting uid / gid - fixes#2190 2014-08-13 15:09:38 +02:00
Jaroslav Kysela
b64b62964a mpegts mux: include network to the mux class title - fixes #2219 2014-08-13 14:30:41 +02:00
Jaroslav Kysela
fc1f960629 mpegts tables: moved locking from inside to outside mux open/close 2014-08-13 09:54:03 +02:00
Sam Stenvall
767a75d2f5 [webui] render a progress bar for currently running programmes 2014-08-13 09:54:03 +02:00
Sam Stenvall
2563ab4fb6 [webui] remove some unused stuff 2014-08-13 09:54:02 +02:00
Sam Stenvall
d8572f7740 [webui] fix status icon updates when a recording is scheduled/started from the
EPG grid

We can listen on dvrdb comet updates but we should only act on them when the
EPG grid is visible. When it's not visible the update is delayed until the
tab becomes visible again.
2014-08-13 09:54:02 +02:00
Jaroslav Kysela
5745e3e0d4 subscriptions_reschedule: fix the timer value 2014-08-12 22:39:25 +02:00
Jaroslav Kysela
1648168cdb mpegts table: removed all code from mpegts_table_flush_all() which is already in mpegts_mux_close_table() 2014-08-12 21:09:12 +02:00
Jaroslav Kysela
5a621b2ff0 mpegts network: Fix the issue with no predefined muxes at the network creation 2014-08-12 20:42:57 +02:00
Jaroslav Kysela
34dd2b8da8 mpegts network discovery: don't allow to modify mux parameters when discovery is not enabled in network config 2014-08-12 17:40:41 +02:00
Jaroslav Kysela
81c08e2657 SAT>IP: Fix the UDP packet parser (issue#2212) 2014-08-12 17:22:18 +02:00
Jaroslav Kysela
0680bdbaaf htsp_server: implement subscriptionGrace message 2014-08-12 10:02:59 +02:00
Jaroslav Kysela
59e552c2f3 subscriptions: small fixes in subscription_reschedule() 2014-08-12 09:42:44 +02:00
Christian Brunner
189f11fc8d fix en50494 config parsing 2014-08-11 21:58:09 +02:00
Jaroslav Kysela
9d3168e2b0 dbus: dvr - don't declare dvr_dbus_timer without dbus 2014-08-11 21:27:45 +02:00
Jaroslav Kysela
cfe09bc14f dbus: fix write() compilation error 2014-08-11 21:20:32 +02:00
Jaroslav Kysela
e62642d8d8 dbus: fix some compilation errors 2014-08-11 21:11:48 +02:00
Jaroslav Kysela
57a038271f dbus: do not emit signals when the main thread finished early 2014-08-11 18:31:06 +02:00
Sharkimus
d3f8ad745f Update extjs.c
Hi Guys, I've deleted two lines in this file that is forcing IE to go into compatibility mode for IE8 and causes it to not work properly in IE10+
2014-08-11 18:01:32 +02:00
Jaroslav Kysela
7b61c750fb htsp server: Add a wait flag for the video dimensions 2014-08-11 17:58:07 +02:00
Jaroslav Kysela
ec1593ff21 tsfix: Add a wait flag for the video dimensions 2014-08-11 17:58:03 +02:00
Jaroslav Kysela
3be76456d8 ACL: Many improvements
- added min-max range for channel numbers for the ACL entry
- added channel tag match for the ACL entry
- introduced channel_access() routine
- moved the username channel tag to ae_rights
- add advanced streaming checkbox to control service and mux streaming separately
2014-08-11 17:54:55 +02:00
Jaroslav Kysela
da10a35ced ACL editor: correct the column name and description for dvrallcfg 2014-08-11 13:56:48 +02:00
Jaroslav Kysela
7d8470ba98 Streaming - add special streaming priority for all inputs (including IPTV) 2014-08-11 13:45:28 +02:00
Jaroslav Kysela
eb46c63532 satip: fix the addr blocking through dbus 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
2e4c99b678 support: added dbus_test.py utility 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
1376a005f7 dbus: fix the string RPC calls 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
da4574d393 dbus: added some info logs for dbus rpc callbacks 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
2beac9e064 dbus: fix the server loop 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
f08423f953 dbus: allow to select system or session message bus 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
840a0ae05c dbus: SAT>IP allow to block the server by IP address 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
9d6ab33b98 dbus: create interface for rpc calls 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
069090e1d9 dbus: SAT>IP - add SAT>IP tuner notifications 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
4b5da7c1f5 subscription/dbus: implement subscription postpone function 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
54164baa11 Introduce SMT_GRACE message 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
7e0d9693f8 dbus: add mpegts input subscription notifications 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
fc2776d5f4 dbus: add obj_path structure 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
1a01052a52 dbus: add notification signals for count of active subscriptions 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
7be9bbda2a dbus: epggrab ota - add next time ota epg notifications 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
0cd02f6df0 dbus: dvr - add next time schedule notifications 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
9c7b6047d2 dbus: initial support 2014-08-11 11:50:51 +02:00
Jaroslav Kysela
d77ec6c317 IPTV: Add priority value also for muxes 2014-08-11 10:42:29 +02:00
Jaroslav Kysela
2088863800 IPTV: Add priority value to the IPTV network 2014-08-11 10:24:41 +02:00
Jaroslav Kysela
88e692cd9e descrambler: use inlines for key conditions, fix the key_late() condition 2014-08-09 15:24:08 +02:00
Jaroslav Kysela
46b261f687 tcp: break the tcp_read_timeout() loop at shutdown 2014-08-08 18:55:47 +02:00
Jaroslav Kysela
c1166d75c8 cwc: Fix the emm tables shutdown sequence 2014-08-08 18:55:23 +02:00
Jaroslav Kysela
47a1cbccaf mpegts tables: move defer tables from list to tailq
The execution order must be same as queued.
2014-08-08 18:28:05 +02:00
Sam Stenvall
0a8c66772b [webui] make tableeditor based grids stateful too 2014-08-08 17:37:46 +02:00
Sam Stenvall
f89fe54f68 [webui] make the DVR grids stateful (remember column positions/visibility) 2014-08-08 17:37:46 +02:00
Sam Stenvall
b4cbe7bb57 [webui] rename and move tableEditor's save and revert buttons to the beginning of the row to match other panels 2014-08-08 17:37:46 +02:00
Jaroslav Kysela
0d14b8b716 descrambler: show "cannot decode packets" message as error once a time 2014-08-08 17:28:39 +02:00
Jaroslav Kysela
03b1993ed4 dvb_psi: one more fix for estype 0x06 2014-08-08 17:20:21 +02:00
Jaroslav Kysela
9a49f94d70 descrambler: fix the initial key index 2014-08-07 14:21:27 +02:00
Jaroslav Kysela
d1c62eead3 capmt: add the preliminary AES support 2014-08-07 11:13:35 +02:00
Sam Stenvall
6c8908cb87 [webui] always reload the EPG store when the tab is activated
If we update the store when the tab is not activated the grid will be empty
once the tab is activated again. This fixes that plus fixes the issue where
the EPG data can be outdated if the web interface has been left open for a
long time and the active tab has been something other than the EPG tab.
2014-08-07 09:55:39 +02:00
Sam Stenvall
848602d82e [webui] move the recording "Download" button to the toolbar 2014-08-07 09:55:39 +02:00
Sam Stenvall
9dd2224c8b [webui] fix checkboxes being disabled when they haven't been
explicitly enabled
2014-08-07 09:55:39 +02:00
Jaroslav Kysela
6d19440706 libav: better libav version check for CODEC_ID -> AV_CODEC_ID transition #2 2014-08-06 21:05:31 +02:00
Jaroslav Kysela
8200b55992 libav: better libav version check for CODEC_ID -> AV_CODEC_ID transition 2014-08-06 21:03:36 +02:00
Jaroslav Kysela
cfbd991d44 libav: add some missing defines for ffmpeg 0.8.3 2014-08-06 20:44:58 +02:00
Dreamcat4
f78015d022 Maintain compatibility for older versions of ffmpeg/libav which don't have the AV_ prefix on CODEC_ID_* 2014-08-06 20:00:57 +02:00
Dreamcat4
98826e3422 Take any newer libav version, not just up to 56.0.0 2014-08-06 20:00:57 +02:00
Dreamcat4
e0a5d06f0f libav: Use newer version of LIBAV. Patch by IRC user 'kvaster'.
source: http://pastebin.com/fGLBsdqb
Many thanks / all credit to @kvaster

[12:15] < kvaster> I've made a patch for newer libav locally. Will be able to submit today a bit later.
[12:17] < kvaster> http://pastebin.com/fGLBsdqb
[12:23] < kvaster> it was just small api changes inside libav, I'm worried only about audio stream buffer sizes.
[12:24] < kvaster> Anyway this is working for me at least.
2014-08-06 20:00:57 +02:00
Jaroslav Kysela
6e02f104b7 dvb_psi: fix the 0x06 estype behaviour, more DVB descriptor defines 2014-08-06 19:56:59 +02:00
Jaroslav Kysela
fd5a8a498a webui: dvr.js remove extra whitespaces 2014-08-06 10:22:47 +02:00
Sam Stenvall
fa0bba6c25 [squash] fix some comments 2014-08-06 10:10:28 +02:00
Sam Stenvall
89a484845e [squash] fix recording info button tooltip 2014-08-06 10:10:28 +02:00
Sam Stenvall
582f289551 [webui] remove the abort/delete buttons from the recording details dialog in
favor of the new panel buttons
2014-08-06 10:10:28 +02:00
Sam Stenvall
b5642cb723 [webui] make it possible to select and delete/abort/unschedule multiple
recordings
2014-08-06 10:10:27 +02:00
Sam Stenvall
dc0bcadd8b [webui] add an Info button to recording panels which opens the details dialog
Also disable the oncellclicked callback which previously triggered the dialog
2014-08-06 10:10:27 +02:00
Sam Stenvall
073169ae9c [webui] no need to check if we have selected any items when pressing Delete,
the button is unclickable when nothing is selected
2014-08-06 10:10:27 +02:00
Sam Stenvall
e43b0e6e00 [webui] reload the EPG store on "dvrdb" notifications
This way the DVR status icon gets updated correctly when a recording changes
state
2014-08-06 10:10:27 +02:00
Sam Stenvall
6f4fc91fef [webui] update all DVR stores on "dvrdb" notifications
This way a finished/aborted recording correctly appears in the corresponding
tab without having to reload the page
2014-08-06 10:10:27 +02:00
Jaroslav Kysela
3614b6c93b service mapper: file description correction 2014-08-06 10:02:46 +02:00
Sam Stenvall
d638f25225 [servicemapper] reset stats when starting the mapper 2014-08-06 10:00:38 +02:00
Sam Stenvall
2be4265a29 [webui] make it possible to increment/decrement channel numbers for many
channels simultaneously
2014-08-06 09:06:32 +02:00
Jaroslav Kysela
54291db90f webui: idnode.js remove trailing whitespaces 2014-08-06 09:04:53 +02:00
Sam Stenvall
3ab17d4919 [webui] make CheckColumn obey readonly status 2014-08-06 09:03:05 +02:00
Sam Stenvall
0956101299 [idnode] properly make columns uneditable when they're readonly
This prevents e.g. text columns to become oddly grey when double-clicked
2014-08-06 09:03:05 +02:00
Sam Stenvall
a5d0930624 [webui] properly render checkboxes in idnode grids 2014-08-06 09:03:05 +02:00
Jaroslav Kysela
deaa9ceaa2 libaesdec: more cosmetic tweaks 2014-08-06 08:59:41 +02:00
spdfrk1
482e46e6a0 Corrected indentation 2014-08-06 08:57:04 +02:00
spdfrk1
9c24eeb397 Corrected indentation 2014-08-06 08:57:04 +02:00
spdfrk1
af160e82da static inline for empty functions 2014-08-06 08:57:04 +02:00
spdfrk1
5c11131e3e Empty functions for !ENABLE_SSL 2014-08-06 08:57:04 +02:00
spdfrk1
3340ad20a8 Correct indentation 2014-08-06 08:57:04 +02:00
spdfrk1
5a731a4783 SRCS-${CONFIG_SSL} for libaesdec 2014-08-06 08:56:35 +02:00
spdfrk1
6a4a3572ff Cleanup 2014-08-06 08:56:35 +02:00
spdfrk1
bf9ce65661 Cleanup 2014-08-06 08:56:35 +02:00
spdfrk1
88672fd157 Cleanup 2014-08-06 08:56:35 +02:00
spdfrk1
16f99d440c Free AES keys when requested 2014-08-06 08:55:43 +02:00
spdfrk1
03bfb52183 Delete libaesdec_interface.c 2014-08-06 08:55:43 +02:00
spdfrk1
2850692c1a Remove interface from header 2014-08-06 08:55:43 +02:00
spdfrk1
1330eab10a Remove interface 2014-08-06 08:55:43 +02:00
spdfrk1
7f23bdc59c Process packet after descrambling 2014-08-06 08:55:43 +02:00
spdfrk1
ef598fa415 Added DES/AES switch by msg len 2014-08-06 08:55:43 +02:00
spdfrk1
3f4aa80e95 Init AES keys 2014-08-06 08:55:43 +02:00
spdfrk1
e9837d304d fixed typo 2014-08-06 08:55:43 +02:00
spdfrk1
de8433d7b1 Update Makefile 2014-08-06 08:55:43 +02:00
spdfrk1
ecd4f591f6 Update Makefile 2014-08-06 08:55:43 +02:00
spdfrk1
ac2e3d0d83 Started prepare for merge 2014-08-06 08:55:43 +02:00
spdfrk1
f581f6379c sync with master 2014-08-06 08:55:43 +02:00
spdfrk1
1ad7c31d25 reset to master 2014-08-06 08:55:43 +02:00
spdfrk1
4259bf8daf Fixed CW debug msg 2014-08-06 08:55:43 +02:00
spdfrk1
a44806b09f Larger cw support for capmt 2014-08-06 08:55:43 +02:00
spdfrk1
e58c1122b2 Free key buffer when requested 2014-08-06 08:55:41 +02:00
spdfrk1
a6f7793472 Larger cw support for capmt 2014-08-06 08:55:39 +02:00
spdfrk1
0d73f421b1 Handle incomplete packets 2014-08-06 08:55:39 +02:00
spdfrk1
a558c9e228 Reinstated even/odd AES keys 2014-08-06 08:54:32 +02:00
spdfrk1
66f6a3b99b Free key buffer when requested 2014-08-06 08:54:32 +02:00
spdfrk1
43aa20f837 aes key stored using ev/odd cw 2014-08-06 08:54:32 +02:00
spdfrk1
cb0c94dfc8 Initial libaesdec commit 2014-08-06 08:54:32 +02:00
Jaroslav Kysela
37a1aabd8b htsp: force SCT_MP4A type as AAC 2014-08-06 08:49:56 +02:00
Jaroslav Kysela
456f13b977 epg: another skel leak fixed 2014-08-05 22:22:56 +02:00
Sam Stenvall
e99a563f8b add Netbeans project files to .gitignore 2014-08-05 08:51:53 +02:00
Sam Stenvall
7d930e6696 [descrambler] fix typo in trace category 2014-08-05 00:27:20 +03:00
Jaroslav Kysela
10558cc900 http: enhance redirect and playlists mux override 2014-08-04 21:18:49 +02:00
Jaroslav Kysela
0362d507b8 descrambler: remove ecm_valid bits 2014-08-04 21:16:42 +02:00
Jaroslav Kysela
5de48d54d1 webui: Added autoscroll for the TV adapters panel 2014-08-04 20:34:03 +02:00
Gary The Brown
b887b6d4c7 fix for small error in code zigzag found 2014-08-04 18:55:23 +01:00
Jaroslav Kysela
7e442f4be6 dvb charset: a quick-fix for the latest merge 2014-08-04 19:11:13 +02:00
sangood
10446d4209 reverted the files" descrambler.h cwc.c descrambler.c" executable attribute. 2014-08-04 19:03:58 +02:00
sangood
592f85183d fixed stream guard card data length. 2014-08-04 19:03:58 +02:00
sangood
2a0968633b Add a deleted blank line. 2014-08-04 19:03:58 +02:00
sangood
d48c20527b Remove the blank line. 2014-08-04 19:03:58 +02:00
sangood
286ef83f6b Add missing space after '='. 2014-08-04 19:03:58 +02:00
sangood
7a6bc3a3fb fixed some ugly code's formats.Thanks @perexg help! 2014-08-04 19:03:58 +02:00
sangood
fc6195de4f add gb2312 ucs2 dvb-charset 2014-08-04 19:03:58 +02:00
sangood
4bee7563f5 deleted the unnecessary blank space. 2014-08-04 19:03:57 +02:00
sangood
4845d57b85 changed this files to not executable attribute. 2014-08-04 19:03:57 +02:00
sangood
6e35c47466 fixed some errors. 2014-08-04 19:03:57 +02:00
sangood
a916197ecf change the streamguard cwc_emm function. 2014-08-04 19:03:57 +02:00
sangood
f0dcb7532d Update dvb_psi.c 2014-08-04 19:03:57 +02:00
sangood
493d1e4daa Update dvb_psi.c 2014-08-04 19:03:57 +02:00
sangood
f605574e56 add missing ac3 audio track.
0x06 is Chinese Cable TV ac3 audio track.
2014-08-04 19:03:57 +02:00
sangood
a0a102acdc add dvb_support gb2312 and ucs2. 2014-08-04 19:03:57 +02:00
sangood
ec4e2cff14 fixed streamguard CA card descrambler .
streamguard CA cardid 0x4ad2.
2014-08-04 19:03:57 +02:00
Gary The Brown
b64b07f5a3 change check on orbital_pos to orbital_dir 2014-08-04 19:00:37 +02:00
Gary The Brown
70e650f20f fixes to previous commit as suggested by perexg 2014-08-04 19:00:37 +02:00
Gary The Brown
11b2136c99 added rotor grace timer calculation code with checks for missing info. 2014-08-04 19:00:37 +02:00
Jaroslav Kysela
09606dda4b SAT>IP: added second teardown call 2014-08-04 19:00:09 +02:00
Jaroslav Kysela
44eead081f mpegts: fix dvb_network_get_orbital_pos() 2014-08-04 17:19:04 +02:00
Jaroslav Kysela
b3a05e5f64 linuxdvb: add error log for the DTV_CLEAR cmd 2014-08-04 17:19:04 +02:00
Jaroslav Kysela
ec1b1602c2 linuxdvb: do not monitor frontend in the diseqc/rotor setup
Also, move the active mux check outside tune0() function to
ensure, that the linux frontend is set again to requested
parameters (to be sure).
2014-08-04 17:19:04 +02:00
Jaroslav Kysela
d5023cdac1 linuxdvb: rotor - remember the last orbital position to skip movement... 2014-08-04 17:19:04 +02:00
Jaroslav Kysela
8289df79be stream type: distinguish between AAC-LC/HE and newer AAC-LATM/LOAS 2014-08-04 17:18:41 +02:00
Jaroslav Kysela
cb74275f68 linuxdvb: show the ioctl warnings only once 2014-08-04 17:10:33 +02:00
Jaroslav Kysela
4bf8754ef3 descrambler/csa: prepare for AES keys... 2014-08-01 18:32:04 +02:00
Jaroslav Kysela
5ee5475067 IPTV: fix the mux URL set (NULL pointer dereference) 2014-08-01 17:29:09 +02:00
John Smith
b16218a516 Include subtitle type streams in PTS/DTS normalization 2014-08-01 16:57:26 +02:00
John Smith
04649b3b91 Indents for bug #2178 fix 2014-08-01 16:57:26 +02:00
John Smith
92b1a08743 Fix missing teletext stream with different time base (bug #2178) 2014-08-01 16:57:26 +02:00
John Smith
526417d139 Fix occasional audio stream not starting (bug #2172) 2014-08-01 16:57:26 +02:00
Jaroslav Kysela
b5f39d5c5b webui status tab: change the implementation back to static columns 2014-08-01 16:46:33 +02:00
Jaroslav Kysela
247848fd53 IPTV: fix a memory leak introduced in last commits 2014-08-01 14:46:48 +02:00
Kai Sommerfeld
cbffd47ad2 sat>ip: fixes for snr and signal strength calculation (contributed by stan86). 2014-08-01 14:39:42 +02:00
Kai Sommerfeld
1858323412 Cleanup, fixes and improvements of linuxdvb frontend statistics code,
including webui improvements and fixes.
2014-08-01 14:39:42 +02:00
Jaroslav Kysela
bcb8373f8b IPTV: Allow to specify a custom mux name for IPTV mux 2014-08-01 14:37:23 +02:00
Jaroslav Kysela
294fe5eefa IPTV: create sane mux name without username/password in URL 2014-08-01 14:34:53 +02:00
Jaroslav Kysela
47bb0efca7 linuxdvb: fix en50494 (unicable) config loading 2014-08-01 12:46:45 +02:00
Jaroslav Kysela
09e59d2f83 Remove PRIsize_t, PRIssize_t and PRIoff_t
The reason is that size_t and ssize_t are covered by %zu and %zd
format specifiers. The offset can be printed using %jd format
with the (intmax_t) type conversion.
2014-08-01 11:55:52 +02:00
perexg
d26ccbdbed Merge pull request #438 from dreamcat4/freebsd
Fix FreeBSD compiler errors.
2014-08-01 11:52:17 +02:00
Dreamcat4
cb63d4950a Put back project headers. From before to after the global includes. 2014-08-01 10:46:39 +01:00
Dreamcat4
65c91f433b Merge remote-tracking branch 'upstream/master' into freebsd
* upstream/master:
  service: add PMT# for noname services and include full service name in service lists
  service: esfilter - set CA use flag also for skipped types
  service: esfilter - set use flag when no filters are applied
  service: show also network name in the service nicename
  esfilter: add logical stream index, enhance the CA type filtering
2014-08-01 09:02:41 +01:00
Jaroslav Kysela
43253f88c0 service: add PMT# for noname services and include full service name in service lists 2014-07-31 21:11:18 +02:00
Jaroslav Kysela
ea7a93b776 service: esfilter - set CA use flag also for skipped types 2014-07-31 17:45:10 +02:00
Jaroslav Kysela
45492bfa77 service: esfilter - set use flag when no filters are applied 2014-07-31 17:45:01 +02:00
Jaroslav Kysela
b6bd2400eb service: show also network name in the service nicename 2014-07-31 11:50:39 +02:00
Jaroslav Kysela
a1811747d2 esfilter: add logical stream index, enhance the CA type filtering
- add the logical stream index - see help
- add the PID filtering for the CA type
- fix the service info dialog (do not show some filtered CAIDs)
2014-07-31 11:36:25 +02:00
Dreamcat4
c168cb3adc Merge remote-tracking branch 'upstream/master' into freebsd
* upstream/master:
  mpegts service: Add documentation for Lock Pref. CA PID
  cwc: little log fix (auto-reconnect)...
  mpegts dvb service: add CA PID filter (lock) mode 2 to force CA PID
  service: fix some compiler warnings
  cwc/mpegts dvb service: prevent auto-changes for prefcaid (see issue #2075)
  cwc: change the multiple CA PID handling
2014-07-30 20:15:33 +01:00
Dreamcat4
1af984c668 FreeBSD 2/X Fix path for dtv-scan-tables 2014-07-30 20:14:37 +01:00
Jaroslav Kysela
8ca95e9d79 mpegts service: Add documentation for Lock Pref. CA PID 2014-07-30 20:10:10 +02:00
Jaroslav Kysela
a621a5aa92 cwc: little log fix (auto-reconnect)... 2014-07-30 19:33:59 +02:00
Jaroslav Kysela
b611d69fdc mpegts dvb service: add CA PID filter (lock) mode 2 to force CA PID
- works for both cwc and capmt
2014-07-30 18:19:55 +02:00
Jaroslav Kysela
07e2ad24ac service: fix some compiler warnings 2014-07-30 17:49:56 +02:00
Jaroslav Kysela
e665969dfa cwc/mpegts dvb service: prevent auto-changes for prefcaid (see issue #2075) 2014-07-30 17:49:35 +02:00
Jaroslav Kysela
64c4a2d87c cwc: change the multiple CA PID handling 2014-07-30 17:33:44 +02:00
Dreamcat4
156b24a00f Merge remote-tracking branch 'upstream/master' into freebsd
* upstream/master:
  webui: enable file logging when the log file is set through GUI
  webui: remove dead code (tvhlog_level)
  webui: Stream directly for TVHeadend/ http client, too
  epggrab: ota - improve save caching and add no data timeout
  epggrab: ota - optimize the eit/opentv workflow
  epggrab: ota - requeue skipped muxes (network check)
  SAT>IP: finish the RTSP OPTIONS command to keep connection consistent
  SAT>IP: finish the RTSP command to keep connection consistent
  capmt: a slight optimization - remove the key data
  service_mapper: remove include "plumbing/tsfix.h"
  descrambler: add other odd/even key validity check based on the key update time
  capmt: do not cache keys for the descrambler layer
2014-07-30 15:47:05 +01:00
Dreamcat4
974bbcb4d6 FreeBSD 1/X - Fix compiler errors 2014-07-30 15:46:18 +01:00
Jaroslav Kysela
166a9504f0 webui: enable file logging when the log file is set through GUI 2014-07-30 12:39:31 +02:00
Jaroslav Kysela
5c250565e1 webui: remove dead code (tvhlog_level) 2014-07-30 12:38:29 +02:00
Jaroslav Kysela
b3ef094128 webui: Stream directly for TVHeadend/ http client, too 2014-07-30 12:23:41 +02:00
Jaroslav Kysela
edbc0771c5 epggrab: ota - improve save caching and add no data timeout
- fix the complete flag load
- improve the save request caching
- mark as completed all timeout states (no data, EPG timeout)
2014-07-30 12:09:41 +02:00
Jaroslav Kysela
0df3819a17 epggrab: ota - optimize the eit/opentv workflow
Assume that the EPG grab is completed when:

- no EIT data are present and opentv completed
- EIT data are present but opentv data were not seen
2014-07-30 12:09:34 +02:00
Jaroslav Kysela
2141112aac epggrab: ota - requeue skipped muxes (network check)
- enhance trace
- do not print delete problem? messages on shutdown
2014-07-30 12:09:27 +02:00
Jaroslav Kysela
854327aaba SAT>IP: finish the RTSP OPTIONS command to keep connection consistent 2014-07-28 18:31:38 +02:00
Jaroslav Kysela
9a6940cec3 SAT>IP: finish the RTSP command to keep connection consistent 2014-07-28 17:37:12 +02:00
Jaroslav Kysela
bb1a128cfd capmt: a slight optimization - remove the key data 2014-07-28 12:59:39 +02:00
Jaroslav Kysela
4faa4418cd service_mapper: remove include "plumbing/tsfix.h" 2014-07-28 12:50:50 +02:00
Jaroslav Kysela
4d8aa37dbc descrambler: add other odd/even key validity check based on the key update time 2014-07-28 12:24:38 +02:00
Jaroslav Kysela
3400ee8603 capmt: do not cache keys for the descrambler layer 2014-07-28 12:23:40 +02:00
Jaroslav Kysela
9b4165296b subscription: Add watchdog for the data reception
.. for sevices and add the timeout timer for the mux subscriptions
2014-07-27 16:18:53 +02:00
Jaroslav Kysela
65facb3fc4 SAT>IP: set the teardown timeout to 500ms 2014-07-27 16:17:43 +02:00
Jaroslav Kysela
ea02c4368a mpegts tables: fix another table list inconsistency 2014-07-27 16:05:20 +02:00
Jaroslav Kysela
52e5d7ff3f mpegts table destroy: move the data free calls to the release routine 2014-07-26 15:16:13 +02:00
Jaroslav Kysela
98473cd229 mpegts tables: fix the deferred tables locking mechanism 2014-07-25 20:53:34 +02:00
Dave Chapman
f72733ff08 Add the 0x80 stream type for DigiCipher II (North American cable) encrypted MPEG-2 2014-07-20 01:37:58 +01:00
Jaroslav Kysela
05d6da39a5 mpegts: add assert to mpegts_table_release() to check refcount 2014-07-13 10:51:07 +02:00
Jaroslav Kysela
8b22c3fc0d mpegts table dispatch: added back the assert to see the bug 2014-07-13 10:39:03 +02:00
Jaroslav Kysela
dcbf2cf512 mpegts: table dispatch - a quick fix for the previous patch 2014-07-13 09:43:25 +02:00
Jaroslav Kysela
adeafeb870 mpegts: table dispatch - another optimization 2014-07-13 09:40:51 +02:00
Jaroslav Kysela
4a43a508db settings - use alloca() in hts_settings_makedirs() 2014-07-12 22:37:47 +02:00
Jaroslav Kysela
9c783ef2d0 mpegts: table dispatch - replace assert with debug log 2014-07-12 22:16:48 +02:00
Jaroslav Kysela
3a1651e000 mpegts tables: and another table mutex protections to scan routines 2014-07-12 22:06:43 +02:00
Jaroslav Kysela
4d8aee669c mpegts tables: add another mutex protection to fastswitch 2014-07-12 22:05:28 +02:00
Jaroslav Kysela
e0ac8768a1 descrambler: ECM - updates in the key validity checks 2014-07-12 19:21:44 +02:00
Jaroslav Kysela
d9f1f88e24 epggrab: ota - optimizations - remove completed grab from pending 2014-07-11 21:57:13 +02:00
Jaroslav Kysela
163e1bd18d mpegts: tables - flush all - fix unregisteredd deferred table flush 2014-07-11 16:36:10 +02:00
Jaroslav Kysela
efdfaf1376 mpegts: tables - add mutex protection to mpegts_table_add() 2014-07-11 16:28:22 +02:00
Jaroslav Kysela
528a1db428 mpegts: tables - fix the assert() in the table dispatch routine
- rename mm_defer_tables_lock to mm_tables_lock
- protect all table list operations with this lock
- use this lock in the table dispatch routine
2014-07-11 16:15:18 +02:00
Andreas Öman
39b6bc1db0 Add automatic builds for Ubuntu 14.04 2014-07-10 21:31:59 +02:00
Andreas Öman
784cf12400 Fix JSON typo 2014-07-10 21:15:55 +02:00
Andreas Öman
560f840157 Add doozer autobuild control file 2014-07-10 21:14:29 +02:00
Jaroslav Kysela
300354b0bc epggrab: ota - fix the EPG scan mux config handling 2014-07-10 20:51:01 +02:00
Jaroslav Kysela
7394bf854b linuxdvb: lnb - added Ku 10750 and 11300 Hi-Band configs 2014-07-10 20:51:01 +02:00
Jaroslav Kysela
1f2e33b864 mpegts: add MT_DEFER tables for descrambler
This patch tries to fix mutex deadlocks:

descrambler_lock <-> input_lock

The defered table type allows to move the critical
(pid open/close) calls outside the table registration
calls.
2014-07-10 20:50:43 +02:00
Jaroslav Kysela
d81a612c5d SAT>IP: improve satip_frontend_pid_changed() - safe alloca() calls 2014-07-10 16:20:04 +02:00
Jaroslav Kysela
09140b9f35 descrambler: correct pid mask 2014-07-10 15:33:39 +02:00
Jaroslav Kysela
be6049c8d3 SAT>IP: fix the bug in satip_rtsp_play() - split add/del requests 2014-07-10 14:35:38 +02:00
Jaroslav Kysela
c16c743d01 httpc: fix multi-send bug and EINPROGRESS (SSL) bug 2014-07-10 14:33:25 +02:00
Jaroslav Kysela
a4d13f84a2 epggrab: ota - little optimizations for TAILQ 2014-07-10 09:56:14 +02:00
Jaroslav Kysela
1b8cfb2a14 epggrab: ota - fix issues with the previous register all patch 2014-07-10 00:10:19 +02:00
Jaroslav Kysela
7c91975c5f mpegts tables: improve incomplete/complete counting 2014-07-09 22:31:46 +02:00
Jaroslav Kysela
43922b0255 epggrab: ota - mux_start - register all muxes (second fix) 2014-07-09 17:34:12 +02:00
Jaroslav Kysela
f53bb4e05a epggrab: ota - mux_start - register all muxes 2014-07-09 17:26:41 +02:00
Jaroslav Kysela
bc7c41018e epggrab: add back channel_reicon to epggrab_save() 2014-07-09 15:31:22 +02:00
Jaroslav Kysela
dad38801b0 httpc: do not pass the default port numbers - some servers don't like them 2014-07-09 15:17:07 +02:00
Jaroslav Kysela
1f5895ce84 url parser: fix regexp for minus sign (must be at the end of the regexp group) 2014-07-09 15:05:15 +02:00
Jaroslav Kysela
fc0211fc29 capmt: Fix DMX_STOP_X value 2014-07-09 12:54:37 +02:00
Jaroslav Kysela
14206ba0a2 dvr: use tvh_alloca instead malloc in the postproc fcn 2014-07-09 12:40:44 +02:00
perexg
388b4d72de Merge pull request #431 from c0mm0n/master
Help WebUI Fix
2014-07-07 21:39:24 +02:00
Jonathan Belgourari
c4d3ec6c50 DVB Help Fix design 2014-07-07 21:32:10 +02:00
Jonathan Belgourari
60c0f6ddd9 DVB Help : filling blanks 2014-07-07 21:29:55 +02:00
Jonathan Belgourari
a0f8bdd41d DVB Help Content
Profyaflle input.

A few blanks in Networks.
2014-07-07 21:23:35 +02:00
perexg
018baf54e1 Merge pull request #408 from ProfYaffle/durationfilter
Concept of filtering EPG on duration
2014-07-07 20:39:17 +02:00
Jaroslav Kysela
7af06e4d8b iptv: udp - fix the mutex protection for the stop callback 2014-07-07 20:00:25 +02:00
Jaroslav Kysela
069baa5ad9 udp: multipacket - add NULL checks 2014-07-07 19:54:34 +02:00
Ian
7ad0f70ed3 webui: durationfilter code cosmetics (remove rogue whitespace) 2014-07-07 17:48:38 +01:00
Ian
d61fc95e68 webui: Update autorec help files for duration filter 2014-07-07 17:27:03 +01:00
Ian
8ec1a1264d webui: Update DVR help files 2014-07-07 17:27:03 +01:00
Ian
c6a76e64ea webui: Update EPG help files for duration filter et al 2014-07-07 17:27:03 +01:00
Ian
375dab7e38 code cosmetics 2014-07-07 17:27:03 +01:00
Ian
e2bbe6b288 webui: code cosmetics (place fields in the same order as the store) 2014-07-07 17:27:03 +01:00
Ian
88279741c9 webui: implement filter-specific clear options into autorec grid plus combo cosmetics 2014-07-07 17:27:03 +01:00
Ian
a7c304a443 webui: add clear filter option to all individual EPG filters 2014-07-07 17:27:03 +01:00
Ian
bc9c8189d8 webui: standardise duration filter options between epg and autorec 2014-07-07 17:27:03 +01:00
Ian
3fd4452a7e WebUI: Revert duration filter to comboboxes 2014-07-07 17:27:03 +01:00
Ian
8aa7cb83a2 WebUI: Duration filter - improved validation on autorec grid 2014-07-07 17:27:03 +01:00
Ian
dfd42b9204 WebUI: Add programme duration filtering 2014-07-07 17:27:03 +01:00
Ian
49be7e553a WebUI: Add programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
812d801a99 WebUI: Add programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
c3a3dfef98 WebUI: Grid validation on programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
c622dc9b1c WebUI: Add programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
2b46f09231 WebUI: Add programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
32ed32e4a4 WebUI: Add programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
423617a426 WebUI: Add programme duration filtering 2014-07-07 17:27:02 +01:00
Ian
0c9e9b2461 For comment: concept of filtering EPG on duration 2014-07-07 17:27:02 +01:00
Jaroslav Kysela
37d7156f6c tvhthread_create() - remove detach argument 2014-07-07 17:18:37 +02:00
Jaroslav Kysela
2ecc8d0a8b epggrab: int/ext module - fix the shutdown 2014-07-07 17:18:35 +02:00
Jaroslav Kysela
d8e9c2c91a epggrab: ota - improve the mux scheduler on busy situation
Queue only inactive ota muxes in all situations to not block
the scan on free tuners.
2014-07-07 16:41:53 +02:00
Jaroslav Kysela
d0fa95101d epggrab: ota - fix memory leak 2014-07-07 16:41:53 +02:00
Jaroslav Kysela
0cc375b62e epggrab: ota - improve service add/del debug 2014-07-07 16:41:53 +02:00
Jaroslav Kysela
3812a8ec67 mpegts input: add OTA EPG checkbox per input device 2014-07-07 16:41:53 +02:00
Jaroslav Kysela
98350cac5d epggrab: Update doc 2014-07-07 16:41:53 +02:00
Jaroslav Kysela
fd8aee4a7f epggrab: Fix busy situation - issue new kick after 64 seconds 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
fbfc2093b4 Add mpegts_mux_nice_name() function 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
6e8209dfd9 epggrab: migrate config in src/config.c 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
43ab41a3b6 mpegts mux dvb: remove the migration code (it's in src/config.c) 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
6f4ceabb3f webui: epggrab - do not collapse panels by default 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
fad7bbe0fa epggrab / mpegts mux: allow to force EPG scan per mux 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
26705e9310 epggrab: ota - add multi-line cron scheduler
- the initial EPG scan can be turned off in webui
- the OTA mux timeout is configurable through webui
2014-07-07 16:41:52 +02:00
Jaroslav Kysela
24adf59330 epggrab: ota - change the subscription scheme
- now all muxes are handled continuously in one queue
- the queue can be kicked using the start time
2014-07-07 16:41:52 +02:00
Jaroslav Kysela
80209a4aff cron, internal epggrab: add multi-line cron support for internal epggrab 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
4b993e3ef1 epggrab: ota - remove timeout / interval per module / per ota mux config 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
b2b65ebc80 epggrab: increase default timeout to 600 seconds (10 minutes) 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
6a6d3f65e4 epggrab: ota - move service lists from ota to map
- also use service filter for uk_freesat / viasat_baltic
2014-07-07 16:41:52 +02:00
Jaroslav Kysela
eab7b739b3 epggrab / eit: add automatic linked service removal 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
cc67e846dc epggrab: otamux - save linked services, too 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
f794f93d63 epggrab: improve the tune callback, do tsid check for opentv 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
940da633dc epggrab: fix a memory leak for ota mux 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
e164752754 epggrab: eit - fix the shutdown sequence 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
d60fb2b571 epggrab: fix the missing variable initialization and NULL dereference 2014-07-07 16:41:52 +02:00
Adam Sutton
39feb44ec8 epggrab: test code for only tuning muxes that require it 2014-07-07 16:41:52 +02:00
Jaroslav Kysela
6958e67784 muxers: handle ECONNRESET errno as end-of-stream 2014-07-07 16:40:47 +02:00
Jaroslav Kysela
0b4bcfaa98 add ERRNO_AGAIN() macro to check the interrupted / no data states correctly 2014-07-07 16:40:46 +02:00
Jaroslav Kysela
f0b284065d descrambler: improve the ECM handling
- for constcw (CAID 2600) do not expect any key change
- when the stream is broken, try to issue new ECM request

Note: The TS data might be wrong (which may cause the ECM late
situations). This patch tries to ask for new ECM to be sure
that the keys are correct. The constcw specific code is just
an optimization. The new ECM request is not required for it.
2014-07-07 13:21:50 +02:00
Jonathan Belgourari
4216dc76f2 DVB Help update 2014-07-07 01:41:02 +02:00
Jonathan Belgourari
65c18c4c5c Help WebUI Fix
First commit working on the help content and integration.
Summary is here :
https://www.icloud.com/iw/#numbers/BAIGS4VMg0uDnLQhOhqBzmIPZ3rb00E48p2F/
TVH_Help

This commit :
- Adds missing Help buttons on UI panes.
- Creates docs files related to those buttons when missing.
- Content will be reviewed later, currently « In progress » is
displayed in new help files.
2014-07-05 18:30:43 +02:00
Jaroslav Kysela
41a6af0c76 SATIP: do not show -failed to modify pids- error when no pids are opened 2014-07-05 09:12:15 +02:00
Jaroslav Kysela
89324208df Added preliminary HEVC support (no packetizer - only MPEG-TS passthrough) 2014-07-05 08:59:05 +02:00
Jaroslav Kysela
3f94def343 capmt: fix thread detach bug 2014-07-04 14:38:59 +02:00
Jaroslav Kysela
a3f7ef30ea linuxdvb: fix adapter enable/disable
- also remove unused dmx variable in the input thread
2014-07-04 09:39:54 +02:00
Jaroslav Kysela
fa10998268 dvb_psi - satellite nit descriptor - try to fix DVB-S2 detection 2014-07-03 19:07:28 +02:00
Jaroslav Kysela
91123eb73e Revert "mpegts network discovery: do not accept NIT params change on tuned mux"
This reverts commit 0472520eb9.
2014-07-03 19:02:50 +02:00
perexg
6e1815c376 Merge pull request #424 from Ingramz/master
Add new scanfile country codes
2014-07-03 18:50:31 +02:00
perexg
c8f9cf24f6 Merge pull request #421 from bluzee/master
Rename Circular 10750 LNB type to avoid confusion
2014-07-03 18:49:57 +02:00
Jaroslav Kysela
7bf59f2fa4 httpc: fix some memory leaks in the error paths 2014-07-02 22:19:01 +02:00
Jaroslav Kysela
dd06dde369 imagecache: fix locking and add missing fclose() 2014-07-02 22:15:00 +02:00
Jaroslav Kysela
27162914e3 mpegts network discovery: fix for DVB-T bandwidth 2014-07-02 21:44:27 +02:00
Jaroslav Kysela
0472520eb9 mpegts network discovery: do not accept NIT params change on tuned mux 2014-07-02 21:44:25 +02:00
Jaroslav Kysela
bb181b06c3 subcription: fix the warning 2014-07-02 17:41:03 +02:00
Jaroslav Kysela
e0028b308a subscriptions: add missing service_stop() call for the BAD_SERVICE state 2014-07-02 13:37:27 +02:00
Jaroslav Kysela
33ec853dbd subscription: log also hostname/username/client 2014-07-02 11:39:39 +02:00
Jaroslav Kysela
96210afc92 capmt: Fix the wrong pid handling in capmt_pid_flush() 2014-07-02 11:00:27 +02:00
Jaroslav Kysela
fceda8d798 webui: avoid NULL dereference for /play url if remain is NULL 2014-07-01 09:22:13 +02:00
Jaroslav Kysela
3414ff74ba cron: Fixes (correct month / day bitmaps and the days_in_month check) 2014-07-01 09:20:39 +02:00
Jaroslav Kysela
28dafc6d01 linuxdvb: diseqc switch - one more quick fix 2014-06-30 16:52:40 +02:00
Jaroslav Kysela
572df095b9 linuxdvb: diseqc switch - fix config issues for port2 and port4 switches 2014-06-30 16:49:30 +02:00
Jaroslav Kysela
404e522b9d linuxdvb_satconf: fix a typo 2014-06-30 12:54:55 +02:00
Jaroslav Kysela
d924c84202 httpc: fix the hc == NULL condition in the http_client_thread() 2014-06-28 22:12:30 +02:00
Indrek Ardel
8eece2621d Add new scanfile country codes 2014-06-11 17:38:49 +03:00
bluzee
948a1a09b1 linuxdvb: Make advanced sat config hint more generic. 2014-06-10 07:46:37 -06:00
bluzee
e0907a68d2 linuxdvb: Add hint to Advanced sat config so people can find C/Ku Band lnbs. 2014-06-09 20:33:40 -06:00
bluzee
f665c27240 linuxdvb: Rename LNB Type Circular 10750 to Ku 10750 2014-06-09 20:28:55 -06:00
406 changed files with 54831 additions and 19422 deletions

90
.doozer.json Normal file
View file

@ -0,0 +1,90 @@
{
"targets": {
"precise-amd64": {
"buildenv": "precise-amd64",
"builddeps": [
"git",
"build-essential",
"pkg-config",
"libavahi-client-dev",
"libssl-dev",
"zlib1g-dev",
"wget",
"bzip2",
"git-core",
"liburiparser-dev"
],
"buildcmd": [
"./configure --disable-dvbscan --enable-libffmpeg_static --enable-hdhomerun_static",
"make -j ${PARALLEL}"
]
},
"precise-i386": {
"buildenv": "precise-i386",
"builddeps": [
"git",
"build-essential",
"pkg-config",
"libavahi-client-dev",
"libssl-dev",
"zlib1g-dev",
"wget",
"bzip2",
"git-core",
"liburiparser-dev",
"libx264-dev"
],
"buildcmd": [
"./configure --disable-dvbscan --enable-libffmpeg_static --disable-libffmpeg_static_x264 --enable-hdhomerun_static",
"make -j ${PARALLEL}"
]
},
"trusty-amd64": {
"buildenv": "trusty-amd64",
"builddeps": [
"git",
"build-essential",
"pkg-config",
"libavahi-client-dev",
"libssl-dev",
"zlib1g-dev",
"wget",
"bzip2",
"git-core",
"liburiparser-dev"
],
"buildcmd": [
"./configure --disable-dvbscan --enable-libffmpeg_static --enable-hdhomerun_static",
"make -j ${PARALLEL}"
]
},
"trusty-i386": {
"buildenv": "trusty-i386",
"builddeps": [
"git",
"build-essential",
"pkg-config",
"libavahi-client-dev",
"libssl-dev",
"zlib1g-dev",
"wget",
"bzip2",
"git-core",
"liburiparser-dev",
"libx264-dev"
],
"buildcmd": [
"./configure --disable-dvbscan --enable-libffmpeg_static --disable-libffmpeg_static_x264 --enable-hdhomerun_static",
"make -j ${PARALLEL}"
]
}
}
}

15
.gitignore vendored
View file

@ -5,8 +5,11 @@ src/version.c
data/dvb-scan
libav_static
.cproject
.project
nbproject
.settings
*.pyc
@ -19,3 +22,15 @@ debian/tvheadend
debian/tvheadend-dbg
debian/tvheadend*substvars
debian/tvheadend*.debhelper*
rpm/tvheadend.spec
rpm/test.patch
#############
###Windows###
#############
#windows image file cache
Thumbs.db
#Folder config file
Desktop.ini

135
Makefile
View file

@ -27,21 +27,27 @@ PROG := $(BUILDDIR)/tvheadend
# Common compiler flags
#
CFLAGS += -g -O2
CFLAGS += -g -O2 -Wunused-result
CFLAGS += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
CFLAGS += -Wmissing-prototypes
CFLAGS += -fms-extensions -funsigned-char -fno-strict-aliasing
CFLAGS += -D_FILE_OFFSET_BITS=64
CFLAGS += -I${BUILDDIR} -I${ROOTDIR}/src -I${ROOTDIR}
ifeq ($(CONFIG_ANDROID),yes)
LDFLAGS += -ldl -lm
else
LDFLAGS += -ldl -lpthread -lm
endif
ifeq ($(CONFIG_LIBICONV),yes)
LDFLAGS += -liconv
endif
ifeq ($(PLATFORM), darwin)
LDFLAGS += -framework CoreServices
else
ifeq ($(CONFIG_ANDROID),no)
LDFLAGS += -lrt
endif
endif
ifeq ($(COMPILER), clang)
CFLAGS += -Wno-microsoft -Qunused-arguments -Wno-unused-function
@ -49,6 +55,20 @@ CFLAGS += -Wno-unused-value -Wno-tautological-constant-out-of-range-compare
CFLAGS += -Wno-parentheses-equality -Wno-incompatible-pointer-types
endif
ifeq ($(CONFIG_LIBFFMPEG_STATIC),yes)
CFLAGS += -I${ROOTDIR}/libav_static/build/ffmpeg/include
LDFLAGS += -L${ROOTDIR}/libav_static/build/ffmpeg/lib -Wl,-Bstatic \
-lavresample -lswresample -lswscale \
-lavutil -lavformat -lavcodec -lavutil \
-lvorbisenc -lvorbis -logg -lx264 -lvpx \
-Wl,-Bdynamic -ldl
endif
ifeq ($(CONFIG_HDHOMERUN_STATIC),yes)
CFLAGS += -I${ROOTDIR}/libhdhomerun_static
LDFLAGS += -L${ROOTDIR}/libhdhomerun_static/libhdhomerun \
-Wl,-Bstatic -lhdhomerun -Wl,-Bdynamic
endif
vpath %.c $(ROOTDIR)
vpath %.h $(ROOTDIR)
@ -89,7 +109,6 @@ SRCS = src/version.c \
src/utils.c \
src/wrappers.c \
src/access.c \
src/dtable.c \
src/tcp.c \
src/udp.c \
src/url.c \
@ -117,7 +136,7 @@ SRCS = src/version.c \
src/trap.c \
src/avg.c \
src/htsstr.c \
src/tvhpoll.c \
src/tvhpoll.c \
src/huffman.c \
src/filebundle.c \
src/config.c \
@ -132,11 +151,20 @@ SRCS = src/version.c \
src/fsmonitor.c \
src/cron.c \
src/esfilter.c \
src/intlconv.c
src/intlconv.c \
src/profile.c \
src/bouquet.c \
src/lock.c
SRCS-${CONFIG_UPNP} += \
src/upnp.c
# SATIP Server
SRCS-${CONFIG_SATIP_SERVER} += \
src/satip/server.c \
src/satip/rtsp.c \
src/satip/rtp.c
SRCS += \
src/api.c \
src/api/api_status.c \
@ -149,7 +177,12 @@ SRCS += \
src/api/api_epggrab.c \
src/api/api_imagecache.c \
src/api/api_esfilter.c \
src/api/api_intlconv.c
src/api/api_intlconv.c \
src/api/api_access.c \
src/api/api_dvr.c \
src/api/api_caclient.c \
src/api/api_profile.c \
src/api/api_bouquet.c
SRCS += \
src/parsers/parsers.c \
@ -170,6 +203,8 @@ SRCS += src/plumbing/tsfix.c \
SRCS += src/dvr/dvr_db.c \
src/dvr/dvr_rec.c \
src/dvr/dvr_autorec.c \
src/dvr/dvr_timerec.c \
src/dvr/dvr_config.c \
src/dvr/dvr_cutpoints.c \
SRCS += src/webui/webui.c \
@ -190,11 +225,15 @@ SRCS += src/muxer.c \
# Optional code
#
# MPEGTS core
# MPEGTS core, order by usage (psi lib, tsdemux)
SRCS-$(CONFIG_MPEGTS) += \
src/descrambler/descrambler.c \
src/descrambler/caclient.c \
src/input/mpegts.c \
src/input/mpegts/mpegts_pid.c \
src/input/mpegts/mpegts_input.c \
src/input/mpegts/tsdemux.c \
src/input/mpegts/dvb_psi_lib.c \
src/input/mpegts/mpegts_network.c \
src/input/mpegts/mpegts_mux.c \
src/input/mpegts/mpegts_service.c \
@ -202,9 +241,9 @@ SRCS-$(CONFIG_MPEGTS) += \
src/input/mpegts/dvb_support.c \
src/input/mpegts/dvb_charset.c \
src/input/mpegts/dvb_psi.c \
src/input/mpegts/tsdemux.c \
src/input/mpegts/fastscan.c \
src/input/mpegts/mpegts_mux_sched.c \
src/input/mpegts/mpegts_network_scan.c \
src/input/mpegts/mpegts_network_scan.c
# MPEGTS DVB
SRCS-${CONFIG_MPEGTS_DVB} += \
@ -230,13 +269,19 @@ SRCS-${CONFIG_LINUXDVB} += \
src/input/mpegts/linuxdvb/linuxdvb_rotor.c \
src/input/mpegts/linuxdvb/linuxdvb_en50494.c
# SATIP
# SATIP Client
SRCS-${CONFIG_SATIP_CLIENT} += \
src/input/mpegts/satip/satip.c \
src/input/mpegts/satip/satip_frontend.c \
src/input/mpegts/satip/satip_satconf.c \
src/input/mpegts/satip/satip_rtsp.c
# HDHOMERUN
SRCS_HDHOMERUN = \
src/input/mpegts/tvhdhomerun/tvhdhomerun.c \
src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c
SRCS-${CONFIG_HDHOMERUN_CLIENT} += $(SRCS_HDHOMERUN)
# IPTV
SRCS-${CONFIG_IPTV} += \
src/input/mpegts/iptv/iptv.c \
@ -244,6 +289,8 @@ SRCS-${CONFIG_IPTV} += \
src/input/mpegts/iptv/iptv_service.c \
src/input/mpegts/iptv/iptv_http.c \
src/input/mpegts/iptv/iptv_udp.c \
src/input/mpegts/iptv/iptv_rtsp.c \
src/input/mpegts/iptv/iptv_pipe.c
# TSfile
SRCS-$(CONFIG_TSFILE) += \
@ -269,9 +316,11 @@ SRCS-$(CONFIG_AVAHI) += src/avahi.c
SRCS-$(CONFIG_BONJOUR) += src/bonjour.c
# libav
SRCS-$(CONFIG_LIBAV) += src/libav.c \
SRCS_LIBAV = \
src/libav.c \
src/muxer/muxer_libav.c \
src/plumbing/transcoding.c \
src/plumbing/transcoding.c
SRCS-$(CONFIG_LIBAV) += $(SRCS_LIBAV)
# Tvhcsa
SRCS-${CONFIG_TVHCSA} += \
@ -285,10 +334,24 @@ SRCS-${CONFIG_CWC} += \
SRCS-${CONFIG_CAPMT} += \
src/descrambler/capmt.c
# CONSTCW
SRCS-${CONFIG_CONSTCW} += \
src/descrambler/constcw.c
# DVB CAM
SRCS-${CONFIG_LINUXDVB_CA} += \
src/input/mpegts/linuxdvb/linuxdvb_ca.c \
src/descrambler/dvbcam.c
# TSDEBUGCW
SRCS-${CONFIG_TSDEBUG} += \
src/descrambler/tsdebugcw.c
# FFdecsa
ifneq ($(CONFIG_DVBCSA),yes)
FFDECSA-$(CONFIG_CAPMT) = yes
FFDECSA-$(CONFIG_CWC) = yes
FFDECSA-$(CONFIG_CAPMT) = yes
FFDECSA-$(CONFIG_CWC) = yes
FFDECSA-$(CONFIG_CONSTCW) = yes
endif
ifeq ($(FFDECSA-yes),yes)
@ -300,6 +363,12 @@ ${BUILDDIR}/src/descrambler/ffdecsa/ffdecsa_mmx.o : CFLAGS += -mmmx
${BUILDDIR}/src/descrambler/ffdecsa/ffdecsa_sse2.o : CFLAGS += -msse2
endif
# libaesdec
SRCS-${CONFIG_SSL} += src/descrambler/libaesdec/libaesdec.c
# DBUS
SRCS-${CONFIG_DBUS_1} += src/dbus.c
# File bundles
SRCS-${CONFIG_BUNDLE} += bundle.c
BUNDLES-yes += docs/html docs/docresources src/webui/static
@ -323,6 +392,13 @@ OBJS = $(SRCS:%.c=$(BUILDDIR)/%.o)
OBJS_EXTRA = $(SRCS_EXTRA:%.c=$(BUILDDIR)/%.so)
DEPS = ${OBJS:%.o=%.d}
ifeq ($(CONFIG_LIBFFMPEG_STATIC),yes)
DEPS += ${BUILDDIR}/libffmpeg_stamp
endif
ifeq ($(CONFIG_HDHOMERUN_STATIC),yes)
DEPS += ${BUILDDIR}/libhdhomerun_stamp
endif
#
# Build Rules
#
@ -363,6 +439,8 @@ clean:
find . -name "*~" | xargs rm -f
distclean: clean
rm -rf ${ROOTDIR}/libav_static
rm -rf ${ROOTDIR}/libhdhomerun_static
rm -rf ${ROOTDIR}/build.*
rm -f ${ROOTDIR}/.config.mk
@ -383,16 +461,43 @@ $(BUILDDIR)/bundle.o: $(BUILDDIR)/bundle.c
@mkdir -p $(dir $@)
$(CC) -I${ROOTDIR}/src -c -o $@ $<
$(BUILDDIR)/bundle.c:
$(BUILDDIR)/bundle.c: check_dvb_scan
@mkdir -p $(dir $@)
$(MKBUNDLE) -o $@ -d ${BUILDDIR}/bundle.d $(BUNDLE_FLAGS) $(BUNDLES:%=$(ROOTDIR)/%)
# Static FFMPEG
ifeq ($(CONFIG_LIBFFMPEG_STATIC),yes)
${ROOTDIR}/src/libav.h: ${BUILDDIR}/libffmpeg_stamp
${SRCS_LIBAV}: ${BUILDDIR}/libffmpeg_stamp
endif
${BUILDDIR}/libffmpeg_stamp: ${ROOTDIR}/libav_static/build/ffmpeg/lib/libavcodec.a
@touch $@
${ROOTDIR}/libav_static/build/ffmpeg/lib/libavcodec.a:
CONFIG_LIBFFMPEG_STATIC_X264=$(CONFIG_LIBFFMPEG_STATIC_X264) \
$(MAKE) -f Makefile.ffmpeg build
# Static HDHOMERUN library
ifeq ($(CONFIG_LIBHDHOMERUN_STATIC),yes)
${ROOTDIR}/src/input/mpegts/tvhdhomerun/tvhdhomerun_private.h: ${BUILDDIR}/libhdhomerun_stamp
${SRCS_HDHOMERUN}: ${BUILDDIR}/libhdhomerun_stamp
endif
${BUILDDIR}/libhdhomerun_stamp: ${ROOTDIR}/libhdhomerun_static/libhdhomerun/libhdhomerun.a
@touch $@
${ROOTDIR}/libhdhomerun_static/libhdhomerun/libhdhomerun.a:
$(MAKE) -f Makefile.hdhomerun build
# linuxdvb git tree
$(ROOTDIR)/data/dvb-scan/.stamp:
@echo "Receiving data/dvb-scan/dvb-t from http://linuxtv.org/git/dtv-scan-tables.git"
@rm -rf $(ROOTDIR)/data/dvb-scan/*
@$(ROOTDIR)/support/getmuxlist $(ROOTDIR)/data/dvb-scan
@touch $(ROOTDIR)/data/dvb-scan/.stamp
@touch $@
.PHONY: check_dvb_scan
check_dvb_scan: $(ROOTDIR)/data/dvb-scan/.stamp

248
Makefile.ffmpeg Normal file
View file

@ -0,0 +1,248 @@
#
# Static Audio/Video libs (ffmpeg version) build
# Copyright (C) 2014 Jaroslav Kysela
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
include $(dir $(lastword $(MAKEFILE_LIST))).config.mk
unexport CFLAGS
unexport LDFLAGS
define DOWNLOAD
@mkdir -p $(LIBAVDIR)/build
if test -z "$${TVHEADEND_FILE_CACHE}"; then \
wget --no-verbose -O $(2) $(1); \
else \
file=$$(basename $(2)); \
cp "$$TVHEADEND_FILE_CACHE/$$(file)" $(2); \
fi
@{ \
sum=$$(sha1sum $(2) | cut -d ' ' -f 1); \
printf "SHA1SUM test '$${sum}' == '$(3)': "; \
test "y$${sum}" = "y$(3)"; \
}
@echo "OK"
endef
define UNTAR
tar x -C $(LIBAVDIR) -$(2)f $(LIBAVDIR)/$(1)
endef
LIBAVDIR = $(ROOTDIR)/libav_static
export PATH := $(LIBAVDIR)/build/ffmpeg/bin:$(PATH)
ECFLAGS = -I$(LIBAVDIR)/build/ffmpeg/include
ELIBS = -L$(LIBAVDIR)/build/ffmpeg/lib -ldl
CONFIGURE = PKG_CONFIG=/tmp/nobin/pkg-config ./configure
FFMPEG = ffmpeg-2.6.2
FFMPEG_TB = $(FFMPEG).tar.bz2
FFMPEG_URL = http://ffmpeg.org/releases/$(FFMPEG_TB)
FFMPEG_SHA1 = 65470c9b967485f72f81758a7bad44cf7a1763db
EXTLIBS = libx264 libvorbis libvpx
COMPONENTS = avutil avformat avcodec swresample swscale avresample
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
MUXERS = mpegts mpeg2dvd matroska webm
BSFS = h264_mp4toannexb
LIBOGG = libogg-1.3.2
LIBOGG_TB = $(LIBOGG).tar.gz
LIBOGG_URL = http://downloads.xiph.org/releases/ogg/$(LIBOGG_TB)
LIBOGG_SHA1 = df7f3977bbeda67306bc2a427257dd7375319d7d
LIBVORBIS = libvorbis-1.3.4
LIBVORBIS_TB = $(LIBVORBIS).tar.gz
LIBVORBIS_URL = http://downloads.xiph.org/releases/vorbis/$(LIBVORBIS_TB)
LIBVORBIS_SHA1 = 1602716c187593ffe4302124535240cec2079df3
LIBX264 = x264-snapshot-20141218-2245
LIBX264_TB = $(LIBX264).tar.bz2
LIBX264_URL = http://ftp.via.ecp.fr/pub/videolan/x264/snapshots/$(LIBX264_TB)
LIBX264_SHA1 = 24a3b20e2c49a112e40df9f64885cbd81250298a
LIBVPX = libvpx-v1.3.0
LIBVPX_TB = $(LIBVPX).tar.bz2
LIBVPX_URL = https://webm.googlecode.com/files/$(LIBVPX_TB)
LIBVPX_SHA1 = 191b95817aede8c136cc3f3745fb1b8c50e6d5dc
YASM = yasm-1.3.0
YASM_TB = $(YASM).tar.gz
YASM_URL = http://www.tortall.net/projects/yasm/releases/$(YASM_TB)
YASM_SHA1 = b7574e9f0826bedef975d64d3825f75fbaeef55e
.PHONY: build
build: $(LIBAVDIR)/$(FFMPEG)/.tvh_build
#
# YASM
#
$(LIBAVDIR)/$(YASM)/.tvh_download:
$(call DOWNLOAD,$(YASM_URL),$(LIBAVDIR)/$(YASM_TB),$(YASM_SHA1))
$(call UNTAR,$(YASM_TB),z)
@touch $@
$(LIBAVDIR)/$(YASM)/.tvh_build: \
$(LIBAVDIR)/$(YASM)/.tvh_download
cd $(LIBAVDIR)/$(YASM) && $(CONFIGURE) \
--prefix=/ffmpeg
DESTDIR=$(LIBAVDIR)/build \
$(MAKE) -C $(LIBAVDIR)/$(YASM) install
@touch $@
#
# libogg & libvorbis
#
$(LIBAVDIR)/$(LIBOGG)/.tvh_download:
$(call DOWNLOAD,$(LIBOGG_URL),$(LIBAVDIR)/$(LIBOGG_TB),$(LIBOGG_SHA1))
$(call UNTAR,$(LIBOGG_TB),z)
@touch $@
$(LIBAVDIR)/$(LIBOGG)/.tvh_build: \
$(LIBAVDIR)/$(YASM)/.tvh_build \
$(LIBAVDIR)/$(LIBOGG)/.tvh_download
cd $(LIBAVDIR)/$(LIBOGG) && $(CONFIGURE) \
--prefix=/ffmpeg \
--enable-static \
--disable-shared
DESTDIR=$(LIBAVDIR)/build \
$(MAKE) -C $(LIBAVDIR)/$(LIBOGG) install
@touch $@
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_download: \
$(LIBAVDIR)/$(LIBOGG)/.tvh_download
$(call DOWNLOAD,$(LIBVORBIS_URL),$(LIBAVDIR)/$(LIBVORBIS_TB),$(LIBVORBIS_SHA1))
$(call UNTAR,$(LIBVORBIS_TB),z)
@touch $@
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_build: \
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_download \
$(LIBAVDIR)/$(YASM)/.tvh_build \
$(LIBAVDIR)/$(LIBOGG)/.tvh_build
cd $(LIBAVDIR)/$(LIBVORBIS) && $(CONFIGURE) \
--prefix=/ffmpeg \
--enable-static \
--disable-shared \
--with-ogg=$(LIBAVDIR)/build/ffmpeg
DESTDIR=$(LIBAVDIR)/build \
$(MAKE) -C $(LIBAVDIR)/$(LIBVORBIS) install
@touch $@
#
# libx264
#
ifneq (yes,$(CONFIG_LIBFFMPEG_STATIC_X264))
$(LIBAVDIR)/$(LIBX264)/.tvh_download:
@echo "***** LIBX264 STATIC BUILD IS DISABLED, USING INSTALLED PACKAGE *****"
@mkdir -p $(LIBAVDIR)/$(LIBX264)
@touch $@
$(LIBAVDIR)/$(LIBX264)/.tvh_build: $(LIBAVDIR)/$(LIBX264)/.tvh_download
@touch $@
else
$(LIBAVDIR)/$(LIBX264)/.tvh_download:
$(call DOWNLOAD,$(LIBX264_URL),$(LIBAVDIR)/$(LIBX264_TB),$(LIBX264_SHA1))
#rm -rf $(LIBAVDIR)/x264-snapshot-*
$(call UNTAR,$(LIBX264_TB),j)
#{ ln -sf $$(basename $(LIBAVDIR)/x264-snapshot-*) $(LIBAVDIR)/$(LIBX264); }
@touch $@
$(LIBAVDIR)/$(LIBX264)/.tvh_build: \
$(LIBAVDIR)/$(LIBX264)/.tvh_download \
$(LIBAVDIR)/$(YASM)/.tvh_build
cd $(LIBAVDIR)/$(LIBX264) && $(CONFIGURE) \
--prefix=/ffmpeg \
--enable-static \
--disable-shared \
--disable-avs \
--disable-swscale \
--disable-lavf \
--disable-ffms \
--disable-gpac \
--disable-lsmash
DESTDIR=$(LIBAVDIR)/build \
$(MAKE) -C $(LIBAVDIR)/$(LIBX264) install
@touch $@
endif
#
# libvpx (VP8)
#
$(LIBAVDIR)/$(LIBVPX)/.tvh_download:
@mkdir -p $(LIBAVDIR)
$(call DOWNLOAD,$(LIBVPX_URL),$(LIBAVDIR)/$(LIBVPX_TB),$(LIBVPX_SHA1))
$(call UNTAR,$(LIBVPX_TB),j)
@touch $@
$(LIBAVDIR)/$(LIBVPX)/.tvh_build: \
$(LIBAVDIR)/$(LIBVPX)/.tvh_download \
$(LIBAVDIR)/$(YASM)/.tvh_build
cd $(LIBAVDIR)/$(LIBVPX) && $(CONFIGURE) \
--prefix=/ffmpeg \
--enable-static \
--disable-shared
DIST_DIR=$(LIBAVDIR)/build/ffmpeg \
$(MAKE) -C $(LIBAVDIR)/$(LIBVPX) install
@touch $@
#
# FFMPEG
#
$(LIBAVDIR)/$(FFMPEG)/.tvh_download:
@mkdir -p $(LIBAVDIR)/build
$(call DOWNLOAD,$(FFMPEG_URL),$(LIBAVDIR)/$(FFMPEG_TB),$(FFMPEG_SHA1))
$(call UNTAR,$(FFMPEG_TB),j)
@touch $@
$(LIBAVDIR)/$(FFMPEG)/.tvh_build: \
$(LIBAVDIR)/$(YASM)/.tvh_build \
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_build \
$(LIBAVDIR)/$(LIBX264)/.tvh_build \
$(LIBAVDIR)/$(LIBVPX)/.tvh_build \
$(LIBAVDIR)/$(FFMPEG)/.tvh_download
cd $(LIBAVDIR)/$(FFMPEG) && $(CONFIGURE) \
--prefix=/ffmpeg \
--disable-all \
--enable-static \
--disable-shared \
--enable-gpl \
--extra-cflags="$(ECFLAGS)" \
--extra-libs="$(ELIBS)" \
$(foreach extlib,$(EXTLIBS),--enable-$(extlib)) \
$(foreach component,$(COMPONENTS),--enable-$(component)) \
$(foreach decoder,$(DECODERS),--enable-decoder=$(decoder)) \
$(foreach encoder,$(ENCODERS),--enable-encoder=$(encoder)) \
$(foreach muxer,$(MUXERS),--enable-muxer=$(muxer)) \
$(foreach bsf,$(BSFS),--enable-bsf=$(bsf))
DESTDIR=$(LIBAVDIR)/build \
$(MAKE) -C $(LIBAVDIR)/$(FFMPEG) install
@touch $@
.PHONY: static_libav_clean
static_libav_clean:
@rm -rf $(LIBAVDIR)

83
Makefile.hdhomerun Normal file
View file

@ -0,0 +1,83 @@
#
# HDhomerun library build
# Copyright (C) 2014 Jaroslav Kysela
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
include $(dir $(lastword $(MAKEFILE_LIST))).config.mk
unexport CFLAGS
unexport LDFLAGS
define DOWNLOAD
@mkdir -p $(LIBHDHRDIR)/build
if test -z "$${TVHEADEND_FILE_CACHE}"; then \
wget --no-verbose -O $(2) $(1); \
else \
file=$$(basename $(2)); \
cp "$$TVHEADEND_FILE_CACHE/$$(file)" $(2); \
fi
@{ \
sum=$$(sha1sum $(2) | cut -d ' ' -f 1); \
printf "SHA1SUM test '$${sum}' == '$(3)': "; \
test "y$${sum}" = "y$(3)"; \
}
@echo "OK"
endef
define UNTAR
tar x -C $(LIBHDHRDIR) -$(2)f $(LIBHDHRDIR)/$(1)
endef
LIBHDHRDIR = $(ROOTDIR)/libhdhomerun_static
export PATH := $(LIBHDHRDIR)/build/bin:$(PATH)
LIBHDHR = libhdhomerun_20150406
LIBHDHR_TB = $(LIBHDHR).tgz
LIBHDHR_URL = http://download.silicondust.com/hdhomerun/$(LIBHDHR_TB)
LIBHDHR_SHA1 = f0d5da744d981a80becea6cc862b5e2519e1c3c6
.PHONY: build
build: $(LIBHDHRDIR)/$(LIBHDHR)/.tvh_build
#
# libhdhomerun
#
-include $(LIBHDHRDIR)/$(LIBHDHR)/Makefile
OBJS = $(foreach file,$(LIBSRCS),$(LIBHDHRDIR)/$(LIBHDHR)/$(basename $(file)).o)
$(LIBHDHRDIR)/$(LIBHDHR)/%.o: $(LIBHDHRDIR)/$(LIBHDHR)/%.c
$(CC) -MD -MP $(CFLAGS) -c -o $@ $<
$(LIBHDHRDIR)/$(LIBHDHR)/libhdhomerun.a: $(OBJS)
$(AR) rcs $@ $^
$(LIBHDHRDIR)/$(LIBHDHR)/.tvh_download:
$(call DOWNLOAD,$(LIBHDHR_URL),$(LIBHDHRDIR)/$(LIBHDHR_TB),$(LIBHDHR_SHA1))
$(call UNTAR,$(LIBHDHR_TB),z)
ln -sf libhdhomerun $(LIBHDHRDIR)/$(LIBHDHR)
@touch $@
$(LIBHDHRDIR)/$(LIBHDHR)/.tvh_build: \
$(LIBHDHRDIR)/$(LIBHDHR)/.tvh_download
$(MAKE) -f Makefile.hdhomerun $(LIBHDHRDIR)/$(LIBHDHR)/libhdhomerun.a
@touch $@
.PHONY: static_libhdhr_clean
static_libhdhr_clean:
@rm -rf $(LIBHDHRDIR)

View file

@ -1,6 +1,6 @@
Tvheadend
====================================
(c) 2006 - 2014 Tvheadend Foundation CIC
========================================
(c) 2006 - 2015 Tvheadend Foundation CIC
What it is
@ -10,14 +10,22 @@ Tvheadend is a TV streaming server and digital video recorder.
It supports the following inputs:
* DVB-C
* DVB-C(2)
* DVB-T(2)
* DVB-S(2)
* ATSC
* SAT>IP
* HDHomeRun
* IPTV
* UDP
* HTTP
It support the following outputs:
* HTTP
* HTSP (own protocol)
* SAT>IP
How to build for Linux
----------------------

259
configure vendored
View file

@ -10,6 +10,7 @@
# ###########################################################################
ROOTDIR=$(cd "$(dirname "$0")"; pwd)
test -z "$PKG_CONFIG" && PKG_CONFIG=pkg-config
#
# Options
@ -18,9 +19,12 @@ ROOTDIR=$(cd "$(dirname "$0")"; pwd)
OPTIONS=(
"cwc:yes"
"capmt:yes"
"v4l:no"
"constcw:yes"
"linuxdvb:yes"
"satip_server:yes"
"satip_client:yes"
"hdhomerun_client:auto"
"hdhomerun_static:no"
"iptv:yes"
"tsfile:yes"
"dvbscan:yes"
@ -30,6 +34,8 @@ OPTIONS=(
"avahi:auto"
"zlib:auto"
"libav:auto"
"libffmpeg_static:no"
"libffmpeg_static_x264:yes"
"inotify:auto"
"epoll:auto"
"uriparser:auto"
@ -37,7 +43,12 @@ OPTIONS=(
"tvhcsa:auto"
"bundle:no"
"dvbcsa:no"
"dvben50221:auto"
"kqueue:no"
"dbus_1:auto"
"android:no"
"tsdebug:no"
"gtimer_check:no"
)
#
@ -45,7 +56,36 @@ OPTIONS=(
#
. "$ROOTDIR/support/configure.inc"
parse_args $*
# ###########################################################################
# Parse arguments
# ###########################################################################
opt=
val=
for opt do
val=${opt#*=}
opt=${opt%=*}
opt=${opt#*--}
case "$opt" in
help)
show_help
;;
*dir|prefix)
eval "$opt=$val"
;;
cc|cflags|ldflags|arch|cpu|platform|python)
eval "$(toupper $opt)=\"$val\""
;;
enable-*)
opt=${opt#*-}
enable $opt 1
;;
disable-*)
opt=${opt#*-}
disable $opt 1
;;
esac
done
# ###########################################################################
# Checks
@ -125,6 +165,17 @@ int test(void)
}
'
check_cc_snippet stime '
#include <time.h>
#define TEST test
int test(void)
{
time_t t = 1;
stime(&t);
return 0;
}
'
check_cc_snippet recvmmsg '
#define _GNU_SOURCE
#include <stdlib.h>
@ -137,6 +188,18 @@ int test(void)
}
'
check_cc_snippet sendmmsg '
#define _GNU_SOURCE
#include <stdlib.h>
#include <sys/socket.h>
#define TEST test
int test(void)
{
sendmmsg(0, NULL, 0, 0);
return 0;
}
'
check_cc_snippet libiconv '
#include <iconv.h>
int test(void)
@ -146,6 +209,23 @@ int test(void)
}
' -liconv
if enabled_or_auto dvben50221; then
check_cc_snippet libdvben50221 '
#include <libdvben50221/en50221_session.h>
#define TEST test
int test(void)
{
struct en50221_transport_layer *tl = en50221_tl_create(5, 32);
return 0;
}
' '-ldvben50221 -ldvbapi -lucsi'
if enabled libdvben50221; then
enable dvben50221
else
disable dvben50221
fi
fi
#
# Python
#
@ -165,6 +245,8 @@ if [ ${PLATFORM} = "freebsd" ]; then
enable ssl
elif check_pkg openssl || check_pkg libssl; then
enable ssl
elif check_cc_header 'openssl/ssl' ssl; then
enable ssl
else
die "SSL development support not found"
fi
@ -190,6 +272,24 @@ if enabled_or_auto linuxdvb; then
fi
fi
#
# HDHomeRun - libhdhomerun
#
if enabled hdhomerun_static; then
enable hdhomerun_client
else
if enabled_or_auto hdhomerun_client; then
if check_cc_header 'libhdhomerun/hdhomerun' libhdhomerun; then
enable hdhomerun_client
LDFLAGS="$LDFLAGS -lhdhomerun"
fi
fi
fi
#
# Gzip
#
@ -201,6 +301,13 @@ if enabled_or_auto zlib; then
fi
fi
#
# SAT>IP server
#
if enabled_or_auto satip_server; then
enable upnp
fi
#
# SAT>IP client
#
@ -242,38 +349,93 @@ fi
#
# libav
#
if enabled_or_auto libav; then
if enabled libffmpeg_static; then
enable libav
has_libav=true
if $has_libav && ! check_pkg libavcodec "<=55.0.0"; then
has_libav=false
else
if enabled_or_auto libav; then
has_libav=true
ffmpeg=$(${PKG_CONFIG} --modversion libavcodec | cut -d '.' -f 3)
test -z "$ffmpeg" && ffmpeg=0
printf "$TAB" "checking for ffmpeg libraries ..."
if test $ffmpeg -lt 100; then
ffmpeg=
echo "fail"
else
ffmpeg=yes
echo "ok"
fi
if test "$ffmpeg" == "yes"; then
#
# check for version n1.2+
#
if $has_libav && ! check_pkg libavcodec ">=55.18.102"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavutil ">=52.38.100"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavformat ">=55.12.100"; then
has_libav=false
fi
if $has_libav && ! check_pkg libswscale ">=2.3.100"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavresample ">=1.1.0"; then
has_libav=false
fi
else
#
# check for version v10+
#
if $has_libav && ! check_pkg libavcodec ">=55.34.1"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavutil ">=53.3.0"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavformat ">=55.12.0"; then
has_libav=false
fi
if $has_libav && ! check_pkg libswscale ">=2.1.2"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavresample ">=1.1.0"; then
has_libav=false
fi
fi
if $has_libav; then
enable libav
else
echo "WARNING: none or old libav or libffmpeg libraries were detected"
echo " * use --disable-libav or --enable-libffmpeg_static"
echo " ** supported ffmpeg libs n1.2+"
echo " ** supported libav libs v10+"
if enabled libav; then
die "libav development support not found"
fi
fi
fi
if $has_libav && ! check_pkg libavcodec ">=52.96.0"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavutil ">=50.43.0"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavformat "<=55.0.0"; then
has_libav=false
fi
if $has_libav && ! check_pkg libavformat ">=53.10.0"; then
has_libav=false
fi
if $has_libav && ! check_pkg libswscale ">=0.13.0"; then
has_libav=false
fi
if $has_libav; then
enable libav
elif enabled libav; then
die "libav development support not found (use --disable-libav)"
fi
fi
#
@ -290,7 +452,7 @@ fi
#
# libdvbcsa, tvhcsa
#
if enabled cwc || enabled capmt; then
if enabled cwc || enabled capmt || enabled constcw; then
enable tvhcsa
if enabled dvbcsa; then
(check_cc_header "dvbcsa/dvbcsa" dvbcsa_h &&\
@ -300,6 +462,14 @@ if enabled cwc || enabled capmt; then
fi
fi
#
# libdvben50221
#
if enabled libdvben50221; then
LDFLAGS="$LDFLAGS -ldvben50221 -ldvbapi -lucsi"
enable linuxdvb_ca
fi
#
# Icon caching
#
@ -335,23 +505,38 @@ if [ ${PLATFORM} = "freebsd" ] || [ ${PLATFORM} = "darwin" ]; then
fi
#
# MPEGTS/PS support
# MPEGTS support
#
disable mpegts
disable mpegps
disable mpegts_dvb
if enabled linuxdvb || enabled iptv || enabled tsfile || enabled satip_client;
if enabled linuxdvb || enabled iptv || enabled tsfile || enabled satip_client || \
enabled hdhomerun_client || enabled satip_server;
then
enable mpegts
fi
if enabled linuxdvb || enabled satip_client; then
if enabled linuxdvb || enabled satip_client || enabled hdhomerun_client || enabled satip_server; then
enable mpegts_dvb
fi
if enabled v4l; then
enable mpegps
#
# DBus
#
if enabled_or_auto dbus_1; then
if check_pkg dbus-1; then
enable dbus_1
elif enabled dbus-1; then
die "DBus-1 development support not found (use --disable-dbus-1)"
fi
fi
#
# TSDebug
#
if enabled_or_auto tsdebug; then
enable mpegts_dvb
fi
# ###########################################################################
# Write config
# ###########################################################################

View file

@ -1,968 +0,0 @@
[
{
"tsid": 1050,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10729.00 V"
},
{
"tsid": 1028,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10758.50 V"
},
{
"tsid": 1054,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10788.00 V"
},
{
"tsid": 1056,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10817.50 V"
},
{
"tsid": 1058,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10847.00 V"
},
{
"tsid": 1060,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10876.50 V"
},
{
"tsid": 1064,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10935.50 V"
},
{
"tsid": 1034,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 10979.00 V"
},
{
"tsid": 1038,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11038.00 V"
},
{
"tsid": 1040,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11068.00 V"
},
{
"tsid": 1042,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11097.00 V"
},
{
"tsid": 1044,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11126.50 V"
},
{
"tsid": 1046,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11156.00 V"
},
{
"tsid": 1048,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11185.50 V xx"
},
{
"tsid": 1004,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11258.50 V"
},
{
"tsid": 1008,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11317.50 V"
},
{
"tsid": 1016,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11435.50 V"
},
{
"tsid": 1032,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11685.50 V"
},
{
"tsid": 1066,
"onid": 1,
"charset": "ISO8859-15",
"sid": 0,
"description": "Astra 19.2E Canal + Spain 11739.00 V"
},
{
"tsid": 1,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 12070.50 H"
},
{
"tsid": 2,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11797.50 H"
},
{
"tsid": 3,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11719.50 H"
},
{
"tsid": 4,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 12031.50 H"
},
{
"tsid": 6,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11914.50 H"
},
{
"tsid": 10,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11332.25 H"
},
{
"tsid": 11,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 12382.50 H"
},
{
"tsid": 12,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 12304.50 H"
},
{
"tsid": 13,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11992.50 H"
},
{
"tsid": 14,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11875.50 H"
},
{
"tsid": 15,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 10920.75 H"
},
{
"tsid": 17,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 11758.50 H"
},
{
"tsid": 33,
"onid": 133,
"charset": "ISO-8859-15",
"sid": 0,
"description": "Astra 19.2E Sky Germany 12480.00 V"
},
{
"tsid": 1048,
"onid": 1,
"charset": "PL_AUTO",
"sid": 4310,
"description": "Astra 19.2E TV Trwam"
},
{
"tsid": 1059,
"onid": 1,
"charset": "PL_AUTO",
"sid": 0,
"description": "Astra 19.2E TVP"
},
{
"tsid": 3218,
"onid": 3,
"charset": "ISO-8859-5",
"sid": 0,
"description": "Astra 23.5E Satellite BG 12051.00 V"
},
{
"tsid": 3226,
"onid": 3,
"charset": "ISO-8859-5",
"sid": 0,
"description": "Astra 23.5E Satellite BG 12207.00 V"
},
{
"tsid": 8100,
"onid": 156,
"charset": "PL_AUTO",
"sid": 1500,
"description": "Eurobird 9.0E TV Polonia"
},
{
"tsid": 8300,
"onid": 156,
"charset": "PL_AUTO",
"sid": 620,
"description": "Eurobird 9.0E TVN International"
},
{
"tsid": 200,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 13805,
"description": "Hotbird 13.0 Eutelsat Eurosport GR"
},
{
"tsid": 200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13834,
"description": "Hotbird 13.0 Eutelsat Eurosport PL"
},
{
"tsid": 200,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 13840,
"description": "Hotbird 13.0 Eutelsat Eurosport GR"
},
{
"tsid": 200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13864,
"description": "Hotbird 13.0 Eutelsat Eurosport 2 PL"
},
{
"tsid": 200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13865,
"description": "Hotbird 13.0 Eutelsat Eurosport PL"
},
{
"tsid": 200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13878,
"description": "Hotbird 13.0 Eutelsat Eurosport 2 NE PL"
},
{
"tsid": 300,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+ HD PL"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13020,
"description": "Hotbird 13.0 NC+ Canal+ HD PL"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13022,
"description": "Hotbird 13.0 NC+ Canal+ Sport HD Polska"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13023,
"description": "Hotbird 13.0 NC+ Nat Geographic HD Polska"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13025,
"description": "Hotbird 13.0 NC+ Filmbox HD"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13026,
"description": "Hotbird 13.0 NC+ AXN Spin HD"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13027,
"description": "Hotbird 13.0 NC+ TVN 7 HD"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13070,
"description": "Hotbird 13.0 NC+ Eurosport HD PL"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13080,
"description": "Hotbird 13.0 NC+ Eurosport HD PL"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13081,
"description": "Hotbird 13.0 NC+ Eurosport HD PL"
},
{
"tsid": 400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13082,
"description": "Hotbird 13.0 NC+ Eurosport HD PL"
},
{
"tsid": 1000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+ TVN"
},
{
"tsid": 1100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 1300,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 1400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 30,
"description": "Hotbird 13.0 Nick Junior"
},
{
"tsid": 1400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 31,
"description": "Hotbird 13.0 Nickelodeon HD"
},
{
"tsid": 1500,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 1600,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 1800,
"onid": 200,
"charset": "PL_AUTO",
"sid": 3623,
"description": "Hotbird 13.0 Polo TV"
},
{
"tsid": 5500,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 0,
"description": "Hotbird 13.0 Nova GR"
},
{
"tsid": 6100,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 0,
"description": "Hotbird 13.0 Nova GR"
},
{
"tsid": 7100,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 0,
"description": "Hotbird 13.0 Nova GR"
},
{
"tsid": 7300,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 0,
"description": "Hotbird 13.0 Nova GR"
},
{
"tsid": 7400,
"onid": 113,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 Cyfrowy Polsat"
},
{
"tsid": 7700,
"onid": 318,
"charset": "PL_AUTO",
"sid": 117,
"description": "Hotbird 13.0 Hot TV PL"
},
{
"tsid": 7800,
"onid": 113,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 Cyfrowy Polsat"
},
{
"tsid": 7900,
"onid": 113,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 Cyfrowy Polsat"
},
{
"tsid": 8100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14900,
"description": "Hotbird 13.0 Eutelsat Sport Klub PL"
},
{
"tsid": 8100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14901,
"description": "Hotbird 13.0 Eutelsat Universal CE"
},
{
"tsid": 8100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14902,
"description": "Hotbird 13.0 Eutelsat Sci-Fi CE"
},
{
"tsid": 8100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14910,
"description": "Hotbird 13.0 Eutelsat Sport Klub PL"
},
{
"tsid": 8100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14911,
"description": "Hotbird 13.0 Eutelsat Universal CE"
},
{
"tsid": 8100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14912,
"description": "Hotbird 13.0 Eutelsat Sci-Fi CE"
},
{
"tsid": 11000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 11100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 4680,
"description": "Hotbird 13.0 Eutelsat 13th Street PL"
},
{
"tsid": 11200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 Polsat Cyfrowy"
},
{
"tsid": 11400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 11500,
"onid": 318,
"charset": "PL_AUTO",
"sid": 17309,
"description": "Hotbird 13.0 Baby TV PL"
},
{
"tsid": 11600,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 11900,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 NC+"
},
{
"tsid": 12000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 Polsat Cyfrowy"
},
{
"tsid": 12100,
"onid": 318,
"charset": "ISO-8859-7",
"sid": 0,
"description": "Hotbird 13.0 Nova GR"
},
{
"tsid": 12200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 7457,
"description": "Hotbird 13.0 Globecast Cartoon Network PL / TCM CE"
},
{
"tsid": 12200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 7466,
"description": "Hotbird 13.0 Globecast Disney Channel PL"
},
{
"tsid": 12200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 7467,
"description": "Hotbird 13.0 Globecast Cartoon Network CE"
},
{
"tsid": 12200,
"onid": 318,
"charset": "PL_AUTO",
"sid": 7468,
"description": "Hotbird 13.0 Globecast TCM CE"
},
{
"tsid": 12800,
"onid": 318,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 MTV Networks"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14602,
"description": "Hotbird 13.0 Globecast BBC Entertainment"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14603,
"description": "Hotbird 13.0 Globecast BBC Knowledge"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14604,
"description": "Hotbird 13.0 Globecast BBC Lifestyle"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14605,
"description": "Hotbird 13.0 Globecast BBC Cbeebies"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14612,
"description": "Hotbird 13.0 Globecast IDiscovery"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14613,
"description": "Hotbird 13.0 Globecast TLC Polska"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14619,
"description": "Hotbird 13.0 Globecast MTV Dance"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14620,
"description": "Hotbird 13.0 Globecast Viasat Explorer"
},
{
"tsid": 13000,
"onid": 318,
"charset": "PL_AUTO",
"sid": 14621,
"description": "Hotbird 13.0 Globecast ESPN America"
},
{
"tsid": 13100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 7324,
"description": "Hotbird 13.0 Crime & Investigation"
},
{
"tsid": 13100,
"onid": 318,
"charset": "PL_AUTO",
"sid": 7325,
"description": "Hotbird 13.0 Crime & Investigation"
},
{
"tsid": 13200,
"onid": 113,
"charset": "PL_AUTO",
"sid": 0,
"description": "Hotbird 13.0 Cyfrowy Polsat"
},
{
"tsid": 13400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 4754,
"description": "Hotbird 13.0 TVR"
},
{
"tsid": 15400,
"onid": 318,
"charset": "PL_AUTO",
"sid": 13511,
"description": "Hotbird 13.0 RBL.TV"
},
{
"tsid": 15700,
"onid": 318,
"charset": "PL_AUTO",
"sid": 10626,
"description": "Hotbird 13.0 Disco TV"
},
{
"tsid": 1,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 2,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 3,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 4,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 5,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 6,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 7,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 8,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 9,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 10,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 11,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 12,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 13,
"onid": 1,
"charset": "ISO-8859-2",
"sid": 0,
"description": "Intelsat/Thor 1W RCS DigiTV"
},
{
"tsid": 20400,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10762.00 V"
},
{
"tsid": 20600,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10803.75 V"
},
{
"tsid": 20700,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10845.00 H"
},
{
"tsid": 20800,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10845.25 V"
},
{
"tsid": 20900,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 108877.00 H"
},
{
"tsid": 21000,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10928.00 H"
},
{
"tsid": 21100,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10887.00 V"
},
{
"tsid": 21200,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 10928.00 V"
},
{
"tsid": 41200,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11455.50 V"
},
{
"tsid": 50100,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11471.00 H"
},
{
"tsid": 50200,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11492.00 V"
},
{
"tsid": 50300,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11673.00 H"
},
{
"tsid": 50400,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11534.00 V"
},
{
"tsid": 50500,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11554.00 H"
},
{
"tsid": 50600,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11575.00 V"
},
{
"tsid": 50700,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11596.00 H"
},
{
"tsid": 50800,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11679.00 H"
},
{
"tsid": 50900,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11513.00 H"
},
{
"tsid": 51000,
"onid": 126,
"charset": "ISO-8859-9",
"sid": 0,
"description": "Turksat 7E Digitürk 11617.00 V"
}
]

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,258 @@
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
32,
32,
32,
32,
32,
32,
32,
32,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
81,
48,
48,
80,
51,
48,
80,
48,
0,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
18,
18,
22,
19,
20,
17,
16,
16,
96,
0,
96,
0,
96,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
64,
64,
67,
64,
64,
64,
64,
64,
73,
64,
64,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]

View file

@ -0,0 +1,258 @@
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
48,
48,
48,
48,
21,
48,
48,
48,
48,
48,
48,
48,
48,
49,
51,
48,
48,
48,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
64,
68,
71,
64,
64,
64,
64,
64,
64,
70,
64,
64,
64,
74,
64,
64,
64,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
16,
23,
20,
22,
18,
16,
18,
20,
19,
18,
16,
18,
18,
16,
17,
16,
16,
16,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
96,
96,
96,
96,
96,
96,
96,
96,
96,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
96,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
48,
48,
48,
0,
48,
48,
24,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]

View file

@ -0,0 +1,257 @@
[ 0, 0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
16,
17,
18,
19,
20,
16,
22,
23,
23,
16,
19,
23,
23,
23,
18,
16,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
32,
33,
34,
35,
36,
144,
35,
144,
32,
145,
115,
146,
118,
148,
144,
32,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
48,
49,
51,
51,
48,
48,
48,
48,
48,
48,
48,
48,
49,
48,
51,
50,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
69,
64,
64,
64,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
80,
81,
82,
83,
84,
85,
80,
80,
84,
85,
80,
80,
80,
80,
80,
80,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
96,
97,
98,
99,
100,
101,
102,
96,
96,
96,
96,
96,
96,
96,
96,
96,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
0,
0,
0,
112,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]

View file

@ -1,9 +1,11 @@
{
"name": "Ausat",
"dict": "skyeng",
"genre": "ausat",
"nid": 4096,
"tsid": 17,
"sid": 17008,
"bouquetid": 0,
"channel" : [
17
],
@ -12,5 +14,11 @@
],
"summary": [
64, 65, 66, 67, 68, 69, 70, 71
],
"season_num": [
" *\\(S ?([0-9]+),? Ep? ?[0-9]+\\)"
],
"episode_num": [
" *\\(S ?[0-9]+,? Ep? ?([0-9]+)\\)"
]
}

View file

@ -1,9 +1,11 @@
{
"name": "Sky Italia",
"dict": "skyit",
"genre": "skyit",
"nid": 64511,
"tsid": 5800,
"sid": 3635,
"bouquetid": 0,
"channel" : [
17
],
@ -12,5 +14,35 @@
],
"summary": [
64, 65, 66, 67, 68, 69, 70, 71
],
"season_num": [
"([0-9]+)'?a? Stagione +Ep\\. ?[0-9]+[a-z]?",
"([0-9]+)'?a? Stagione -? ?Puntata ?[0-9]+",
"([0-9]+)'?a? Stagione"
],
"episode_num": [
"[0-9]+'?a? Stagione +Ep\\. ?([0-9]+)[a-z]?",
"[0-9]+'?a? Stagione -? ?Puntata ?([0-9]+)",
"^ *Ep\\. ?([0-9]+)[a-z]?",
"^ *Puntata ?([0-9]+)"
],
"part_num": [
"[0-9]+'?a? Stagione +Ep\\. ?[0-9]+([a-z]?)",
"^ *Ep\\. ?[0-9]+([a-z]?)"
],
"subtitle": [
"[0-9]+'?a? Stagione +Ep\\. ?[0-9]+[A-Za-z]? -? ?'(([^']*(' [^A-Z0-9-])?('[^ '])?)+)'",
"Ep\\. ?[0-9]+[A-Za-z]? -? ?'(([^']*(' [^A-Z0-9-])?('[^ '])?)+)'",
"[0-9]+'?a? Stagione -? ?'(([^']*(' [^A-Z0-9-])?('[^ '])?)+)'",
"[0-9]+'?a? Stagione -? ?Puntata ?[0-9]+[A-Za-z]? \"\" *([^\"]+) *\"\""
],
"__reference": [
"4' Stagione Ep.9B - 'L'Hub' Gli agenti ...: sara' Ward ...",
"3a Stagione - Puntata 1 ...",
"4' Stagione - 'Title' ...",
"Ep.9A ...",
"Puntata 5 ...",
"Ep.4 - 'Title' ...",
"7 Stagione Puntata 8 \"\" Title \"\" ..."
]
}

View file

@ -0,0 +1,24 @@
{
"name": "Sky NZ",
"dict": "skynz",
"genre": "skynz",
"nid": 169,
"tsid": 3,
"sid": 9003,
"bouquetid": 0,
"channel" : [
17
],
"title": [
48, 49, 50, 51, 52, 53, 54, 55
],
"summary": [
64, 65, 66, 67, 68, 69, 70, 71
],
"season_num": [
" *\\(S ?([0-9]+),? Ep? ?[0-9]+\\)"
],
"episode_num": [
" *\\(S ?[0-9]+,? Ep? ?([0-9]+)\\)"
]
}

View file

@ -5,6 +5,7 @@
"nid": 2,
"tsid": 2004,
"sid": 4152,
"bouquetid": 4101,
"channel" : [
17
],
@ -13,5 +14,11 @@
],
"summary": [
64, 65, 66, 67, 68, 69, 70, 71
],
"season_num": [
" *\\(S ?([0-9]+),? Ep? ?[0-9]+\\)"
],
"episode_num": [
" *\\(S ?[0-9]+,? Ep? ?([0-9]+)\\)"
]
}

155
data/conf/fastscan Normal file
View file

@ -0,0 +1,155 @@
[
{
"name": "Canal Digitaal SD",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 900
},
{
"name": "Canal Digitaal HD",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 901
},
{
"name": "TV Vlaanderen SD",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 910
},
{
"name": "TV Vlaanderen HD",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 911
},
{
"name": "TéléSAT SD",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 920
},
{
"name": "TéléSAT HD",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 921
},
{
"name": "Mobistar NL Astra1",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 930
},
{
"name": "Mobistar FR Astra1",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 940
},
{
"name": "AustriaSat Astra1",
"position": 192,
"frequency": 12515000,
"symbolrate" : 22000000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 950
},
{
"name": "Canal Digitaal HD",
"position": 235,
"frequency": 12187000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs2",
"pid": 901
},
{
"name": "TV Vlaanderen HD",
"position": 235,
"frequency": 12187000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs2",
"pid": 911
},
{
"name": "TéléSAT HD",
"position": 235,
"frequency": 12187000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs2",
"pid": 921
},
{
"name": "Mobistar NL Astra3",
"position": 235,
"frequency": 12187000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs2",
"pid": 930
},
{
"name": "Mobistar FR Astra3",
"position": 235,
"frequency": 12187000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs2",
"pid": 940
},
{
"name": "AustriaSat Astra3",
"position": 235,
"frequency": 12187000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs2",
"pid": 950
},
{
"name": "Skylink: Czech Republic",
"position": 235,
"frequency": 12070000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 30
},
{
"name": "Skylink: Slovak Republic",
"position": 235,
"frequency": 12070000,
"symbolrate" : 27500000,
"polarisation" : "H",
"delsys" : "dvbs",
"pid": 31
}
]

638
data/conf/satellites Normal file
View file

@ -0,0 +1,638 @@
[
{
"name": "NSS 9",
"pos": -1770
},
{
"name": "AMC 8",
"pos": -1390
},
{
"name": "AMC 7",
"pos": -1370
},
{
"name": "AMC 10",
"pos": -1350
},
{
"name": "Galaxy 15",
"pos": -1330
},
{
"name": "AMC 11",
"pos": -1310
},
{
"name": "Ciel 2/Galaxy 12",
"pos": -1290
},
{
"name": "Galaxy 13/Horizons 1",
"pos": -1270
},
{
"name": "AMC 21/Galaxy 14",
"pos": -1250
},
{
"name": "Galaxy 18",
"pos": -1230
},
{
"name": "EchoStar 9/Galaxy 23",
"pos": -1210
},
{
"name": "Anik F3/DirecTV 7S/EchoStar 14",
"pos": -1190
},
{
"name": "Eutelsat 117 West A",
"pos": -1168
},
{
"name": "Eutelsat 115 West A",
"pos": -1149
},
{
"name": "Eutelsat 113 West A",
"pos": -1130
},
{
"name": "Anik F2",
"pos": -1111
},
{
"name": "DirecTV 5/EchoStar 10/11",
"pos": -1100
},
{
"name": "Anik F1R/G1",
"pos": -1073
},
{
"name": "AMC 15/18",
"pos": -1050
},
{
"name": "AMC 1/SES 3/Spaceway 1 &amp; DirecTV 10/12",
"pos": -1030
},
{
"name": "DirecTV 4S/8/SES 1",
"pos": -1010
},
{
"name": "DirecTV 14/Galaxy 16/Spaceway 2 &amp; DirecTV 11",
"pos": -992
},
{
"name": "Galaxy 19",
"pos": -970
},
{
"name": "Galaxy 3C/Spaceway 3",
"pos": -950
},
{
"name": "Galaxy 25",
"pos": -931
},
{
"name": "Galaxy 17/Nimiq 6",
"pos": -910
},
{
"name": "Galaxy 28",
"pos": -890
},
{
"name": "TKSat 1",
"pos": -872
},
{
"name": "SES 2",
"pos": -870
},
{
"name": "AMC 16",
"pos": -850
},
{
"name": "Brasilsat B4",
"pos": -840
},
{
"name": "AMC 9",
"pos": -830
},
{
"name": "Nimiq 4",
"pos": -820
},
{
"name": "Simon Bolivar",
"pos": -780
},
{
"name": "EchoStar 8/QuetzSat 1",
"pos": -770
},
{
"name": "Star One C3",
"pos": -750
},
{
"name": "Nimiq 5",
"pos": -727
},
{
"name": "AMC 6",
"pos": -720
},
{
"name": "Star One C2",
"pos": -700
},
{
"name": "AMC 4",
"pos": -670
},
{
"name": "Star One C1",
"pos": -650
},
{
"name": "Telstar 14R",
"pos": -630
},
{
"name": "EchoStar 12/16",
"pos": -615
},
{
"name": "Amazonas 2/3/4A",
"pos": -610
},
{
"name": "Intelsat 21",
"pos": -580
},
{
"name": "Amazonas 1/Galaxy 11/Intelsat 805",
"pos": -555
},
{
"name": "Intelsat 23",
"pos": -530
},
{
"name": "Intelsat 1R",
"pos": -500
},
{
"name": "NSS 806",
"pos": -475
},
{
"name": "Intelsat 14",
"pos": -450
},
{
"name": "Intelsat 9/11",
"pos": -431
},
{
"name": "SES 6",
"pos": -405
},
{
"name": "NSS 10/Telstar 11N",
"pos": -375
},
{
"name": "Intelsat 903",
"pos": -345
},
{
"name": "Hylas 1",
"pos": -335
},
{
"name": "Intelsat 25",
"pos": -315
},
{
"name": "Hispasat 1D/1E",
"pos": -300
},
{
"name": "Intelsat 907",
"pos": -275
},
{
"name": "Intelsat 905",
"pos": -245
},
{
"name": "SES 4",
"pos": -220
},
{
"name": "NSS 7",
"pos": -200
},
{
"name": "Intelsat 901",
"pos": -180
},
{
"name": "Telstar 12",
"pos": -150
},
{
"name": "Express A4",
"pos": -140
},
{
"name": "Eutelsat 12 West A",
"pos": -125
},
{
"name": "Express AM44",
"pos": -110
},
{
"name": "Eutelsat 8 West A",
"pos": -80
},
{
"name": "Eutelsat 7 West A/Eutelsat 8 West C/Nilesat 102/201",
"pos": -73
},
{
"name": "Eutelsat 5 West A",
"pos": -50
},
{
"name": "Amos 2/3",
"pos": -40
},
{
"name": "Thor 5/6/Intelsat 10-02",
"pos": -8
},
{
"name": "Eutelsat 3B/Rascom QAF 1R",
"pos": 31
},
{
"name": "Astra 4A/SES 5",
"pos": 49
},
{
"name": "Eutelsat 7A/7B",
"pos": 70
},
{
"name": "Eutelsat 9A/Ka-Sat 9A",
"pos": 90
},
{
"name": "Eutelsat 10A",
"pos": 100
},
{
"name": "Eutelsat Hot Bird 13B/13C/13D",
"pos": 130
},
{
"name": "Eutelsat 16A",
"pos": 160
},
{
"name": "Amos 5",
"pos": 170
},
{
"name": "Astra 1KR/1L/1M/1N",
"pos": 192
},
{
"name": "Arabsat 5C",
"pos": 200
},
{
"name": "Eutelsat 21B",
"pos": 215
},
{
"name": "Astra 3B",
"pos": 235
},
{
"name": "Eutelsat 25B/Es'hail 1",
"pos": 255
},
{
"name": "Badr 4/5/6",
"pos": 260
},
{
"name": "Astra 2A/2C/2E/2F/Eutelsat 28A",
"pos": 282
},
{
"name": "Arabsat 5A",
"pos": 305
},
{
"name": "Eutelsat 31A",
"pos": 308
},
{
"name": "Astra 5B",
"pos": 315
},
{
"name": "Eutelsat 33B/Intelsat 28",
"pos": 330
},
{
"name": "Eutelsat 36A/36B",
"pos": 360
},
{
"name": "Paksat 1R",
"pos": 380
},
{
"name": "Hellas Sat 2",
"pos": 390
},
{
"name": "Türksat 2A/3A/4A",
"pos": 420
},
{
"name": "Intelsat 12",
"pos": 450
},
{
"name": "AzerSpace 1/Africasat 1a",
"pos": 460
},
{
"name": "Intelsat 10",
"pos": 475
},
{
"name": "Afghansat 1",
"pos": 480
},
{
"name": "Yamal 202",
"pos": 490
},
{
"name": "NSS 5",
"pos": 505
},
{
"name": "Y1A",
"pos": 525
},
{
"name": "Express AM22",
"pos": 530
},
{
"name": "G-Sat 8/Yamal 402",
"pos": 549
},
{
"name": "Express AT1",
"pos": 560
},
{
"name": "NSS 12",
"pos": 570
},
{
"name": "Intelsat 904",
"pos": 600
},
{
"name": "Intelsat 902",
"pos": 620
},
{
"name": "Intelsat 906",
"pos": 642
},
{
"name": "Intelsat 17",
"pos": 660
},
{
"name": "Intelsat 20",
"pos": 685
},
{
"name": "Eutelsat 70B",
"pos": 705
},
{
"name": "Intelsat 22",
"pos": 721
},
{
"name": "Insat 3C/4CR",
"pos": 740
},
{
"name": "ABS 2",
"pos": 750
},
{
"name": "Apstar 7",
"pos": 765
},
{
"name": "Thaicom 5/6",
"pos": 785
},
{
"name": "G-Sat 10/Insat 4A",
"pos": 830
},
{
"name": "Horizons 2/Intelsat 15",
"pos": 851
},
{
"name": "KazSat 2",
"pos": 865
},
{
"name": "ChinaSat 12",
"pos": 875
},
{
"name": "ST 2",
"pos": 880
},
{
"name": "Yamal 300K/401",
"pos": 900
},
{
"name": "Measat 3/3a/3b",
"pos": 915
},
{
"name": "ChinaSat 9",
"pos": 922
},
{
"name": "Insat 3A/4B",
"pos": 935
},
{
"name": "NSS 6/SES 8",
"pos": 950
},
{
"name": "Express AM33",
"pos": 965
},
{
"name": "AsiaSat 5",
"pos": 1005
},
{
"name": "Express AM3",
"pos": 1030
},
{
"name": "AsiaSat 7/8",
"pos": 1055
},
{
"name": "NSS 11/SES 7/Telkom 1",
"pos": 1082
},
{
"name": "BSAT 3A/3C/JCSAT 110R/N-Sat 110",
"pos": 1100
},
{
"name": "ChinaSat 10",
"pos": 1105
},
{
"name": "Koreasat 5/Palapa D",
"pos": 1130
},
{
"name": "ChinaSat 6B",
"pos": 1155
},
{
"name": "ABS 7/Koreasat 6",
"pos": 1160
},
{
"name": "AsiaSat 3S/Telkom 2",
"pos": 1180
},
{
"name": "Thaicom 4",
"pos": 1195
},
{
"name": "AsiaSat 4",
"pos": 1222
},
{
"name": "JCSAT 4B",
"pos": 1240
},
{
"name": "ChinaSat 6A",
"pos": 1250
},
{
"name": "JCSAT 3A",
"pos": 1280
},
{
"name": "JCSAT 5A/Vinasat 1/2",
"pos": 1320
},
{
"name": "Apstar 6",
"pos": 1340
},
{
"name": "Telstar 18",
"pos": 1380
},
{
"name": "Express AM5/AT2",
"pos": 1400
},
{
"name": "Superbird C2",
"pos": 1440
},
{
"name": "JCSAT 1B",
"pos": 1500
},
{
"name": "Optus D2",
"pos": 1520
},
{
"name": "JCSAT 2A",
"pos": 1540
},
{
"name": "Optus C1/D3",
"pos": 1560
},
{
"name": "ABS 6",
"pos": 1590
},
{
"name": "Optus D1",
"pos": 1600
},
{
"name": "Superbird B2",
"pos": 1620
},
{
"name": "Optus 10/B3",
"pos": 1640
},
{
"name": "Intelsat 19",
"pos": 1660
},
{
"name": "Intelsat 8",
"pos": 1690
},
{
"name": "Eutelsat 172A",
"pos": 1720
},
{
"name": "Intelsat 18",
"pos": 1800
}
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/docresources/epg3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View file

@ -1,5 +1,5 @@
<div class="hts-doc-text">
The 'Automatic Recorder' is used to create rules that will trig
The 'Automatic Recorder' is used to create rules that will trigger
automatic recording of events. You can use this to record you favorite
TV show(s), record all movies on a specific channel, etc.
<p>
@ -62,6 +62,10 @@ The columns have the following functions:
<dd>
Only match events belonging to the given content group.
<dt>Duration
<dd>
Only match events that fall within the specified duration range.
<dt>Weekdays
<dd>
Only record events if they occur on one of these days. By default all days

View file

@ -7,9 +7,9 @@ wide open.
<p>
When Tvheadend verifies access is scan through all the enabled access control entries.
The permission flags are combined for all matching access entries.
An access entry is said to match if the username / password matches and the IP source
address of the requesting peer is within the prefix.
The permission flags, streaming profiles, DVR config profiles, channel tags are combined
for all matching access entries. An access entry is said to match if the username / password
matches and the IP source address of the requesting peer is within the prefix.
<p>
The access rules are listed / edited in a grid.
@ -32,70 +32,113 @@ The access rules are listed / edited in a grid.
</ul>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<br><br>
<dl>
<dt>Enabled
<dd>Make the entry participate in access control. If disabled, the entry
is inactive.
<dt><b>Enabled</b>
<dd>Enable this access control rule. Uncheck the box to disable.
<dt>Username
<dt><b>Username</b>
<dd>
Name of user, if no username is needed for match it should contain a
single asterisk (*).
Login name to be used. If no username is required, this entry should contain a single asterisk (*).
<dt>Password
<dt><b>Password</b>
<dd>
Password to combine with user, if username is '*' (unused), the password
should be the same.
Login password to be used. If username is '*' (unused), the password should be the same (i.e. match any username/password combination, or no username/password required).
<dt>Prefix
<dt><b>Network prefix</b>
<dd>
IPv4 prefix for matching based on source IP address.
If set to 0.0.0.0/0 it will match everything.
The multiple networks can be delimited using comma or semicolon.
<dt>Streaming
<dd>
Enables access to streaming function. The 'streaming' access is enough to
make Showtime (over HTSP) work.
<dt>Video Recorder
<dd>
Enables access to all video recording functions. This also include administration of the auto recordings.
<dt>All Configs (VR)
<dd>
Allow use of and configuration of DVR configuration profiles.
<dt>Web interface
<dt><b>Web interface</b>
<dd>
Required for web user interface access. Also gives access to the EPG.
<dt>Admin
<dt><b>Admin</b>
<dd>
Enables access to the Configuration tab.
<dt>Channel Tag Only
<dt><b>Streaming</b>
<dd>
If enabled, the user will only be able to access channels with a tag the
same name as the username.
Enables access to streaming functionality for HTTP (web).
This provides a very rudimentary way of limiting access to certain channels.
<dt><b>Advanced Streaming</b>
<dd>
Enables access to advanced streaming function for HTTP (web) - like direct
service or whole MPEG-TS stream (mux)..
<dt><b>HTSP Streaming</b>
<dd>
Enables access to streaming for the HTSP protocol (Movian, Kodi etc.).
<dt>Comment
<dt><b>Streaming Profile</b>
<dd>
Specify a streaming profile to be used when this user logs in; use the (default) stream if not specified.
<dt><b>Limit Connections</b>
<dd>
If set, this will limit the number of concurrent streaming connections a user is permitted to have. 0=disabled
<dt><b>Video Recorder</b>
<dd>
Enables access to all video recording functions. This also include administration of the auto recordings.
<dt><b>HTSP DVR</b>
<dd>
Enables access to video recording functions for the HTSP protocol (Movian, Kodi etc.).
<dt><b>All DVR</b>
<dd>
Enable to access to DVR entries created by other users (read-only).
<dt><b>All DVR (rw)</b>
<dd>
Enable to access to DVR entries created by other users with the ability to
remove the DVR entries.
<dt><b>DVR Config Profile</b>
<dd>
If set, the user will only be able to use the DVR config profile
equal to this value.
Note that this field is unset when the DVR Config Profile is removed.
<dt><b>Min Channel Num</b>
<dd>
If non-zero, this sets the lower limit of the channels accessible by a user, i.e. the user will only be able to access channels where the channel number is equal to or greater than this value.
<dt><b>Max Channel Num</b>
<dd>
If non-zero, this sets the upper limit of the channels accessible by a user, i.e. the user will only be able to access channels where the channel number is equal to or less than this value.
<dt><b>Channel Tag</b>
<dd>
If set, the user will only be able to access channels containing
this channel tag.
Note that this field is unset when the channel tag is removed.
<dt><b>Comment</b>
<dd>
Allows the administrator to set a comment only visible in this editor.
It does not serve any active purpose.
</dl>
<p>
<br>
<hr>
Let's also take a look at an example:
<p>
<img src="docresources/accessconfigexample.png">
<p>
First line gives clients originating from 192.168.0.0 - 192.168.0.255 network
access to streaming functions. Typically you would use this for your
local media players at home (All though Showtime can prompt for username & password
local media players at home (All though Movian can prompt for username & password
in its HTSP client)
<p>
The second line adds a user with world wide access who might want to modify

View file

@ -0,0 +1,43 @@
<div class="hts-doc-text">
<p>
To use bouquets, ensure to add and scan all available muxes using
the predefined muxes or manual configuration.
</p>
<p>
The bouquets are obtained automatically from the DVB source during
the mux scan period. Note that bouquets may use more muxes and only
services from scanned muxes are added. The mux with bouquets might
require another scan when all muxes are discovered (manually using
the rescan checkbox).
</p>
<p>
The fastscan bouquets are pre-defined in the configuration tree. These
bouquets must be manually enabled to let tvheadend to subscribe and listen
to the specific MPEG-TS PIDs.
</p>
<p>
The bouquets are listed / edited in a grid.
<ul>
<li>To edit a cell, double click on it. After a cell is changed it
will flags one of its corner to red to indicated that it has been
changed. To commit these changes back to Tvheadend press the
'Save changes' button. In order to change a Checkbox cell you only
have to click once in it.
<li>To add a new entry, press the 'Add entry' button. The new (empty) entry
will be created on the server but will not be in its enabled state.
You can now change all the cells to the desired values, check the
'enable' box and then press 'Save changes' to activate the new entry.
<li>To delete one or more entries, select the lines (by clicking once on
them), and press the 'Delete selected' button. A popup
will ask you to confirm your request.
</ul>
</p>
</div>

View file

@ -1,7 +1,64 @@
<div class="hts-doc-text">
Tvheadend support connecting to card clients via the capmt protocol for so called softcam
descrambling.
Tvheadend support connecting to card clients via the cwc (newcamd) or capmt
(dvbapi) protocol for so called softcam descrambling.
<p>
<img src="docresources/configcwc.png">
<p>
The servers are listed / edited in a grid.
<ul>
<li>To edit a cell, double click on it. After a cell is changed it
will flags one of its corner to red to indicated that it has been
changed. To commit these changes back to Tvheadend press the
'Save changes' button. In order to change a Checkbox cell you only
have to click once in it.
<li>To add a new entry, press the 'Add entry' button. The new (empty) entry
will be created on the server but will not be in its enabled state.
You can now change all the cells to the desired values, check the
'enable' box and then press 'Save changes' to activate the new entry.
<li>To delete one or more entries, select the lines (by clicking once on
them), and press the 'Delete selected' button. A pop up
will ask you to confirm your request.
</ul>
<p>
The columns have the following functions:
<dl>
<dt>Enabled
<dd>If selected, connection will be tried to be established and retained up.
If unselected, Tvheadend will disconnect (if connected) and not try to reconnect.
<dt>Hostname
<dd>Server hostname. DNS lookup is performed upon every connection attempt.
<dt>Port
<dd>Server TCP port
<dt>Username
<dd>Username to use.
<dt>Password
<dd>Password to use.
<dt>DES Key
<dd>Initial DES key.
<dt>Update Card
<dd>Forward Entitlement Management Messages (EMMs) to the server.
<dt>Update One
<dd>Forward EMMs only from one channel at a time.
<dt>Comment
<dd>Allows the administrator to set a comment only visible in this editor.
It does not serve any active purpose.
</dl>
<p>
<img src="docresources/configcapmt.png">
@ -98,6 +155,18 @@
pmt_mode = 4
</dl>
<dt>mode 5 (new OSCam since revision 10087)
<dd>Similar to mode 3 (TCP), but uses a new network protocol which also added
client/server greeting messages and protocol version information (to be able
to smoothly detect enhancements in the future).<br><br>
<b>This is currently the preferred mode (the other may be removed in future)!</b><br><br>
The following lines are required in <b>[dvbapi]</b> section of oscam.conf file:
<dl>
<dt>boxtype = pc<br>
pmt_mode = 4<br>
listen_port = 9000 # or your preferred port<br>
</dl>
<dt>Comment
<dd>Allows the administrator to set a comment only visible in this editor.
It does not serve any active purpose.

View file

@ -21,6 +21,23 @@
The columns have the following functions:
<dl>
<dt>Play
<dd>Direct play link using the HTTP streaming.
<dl>
<dt>URL to the stream using a channel name
<dd>http://<i>host:port</i>/play/stream/channelname/<i>channel_name</i>
<dt>URL to the stream using a channel number
<dd>http://<i>host:port</i>/play/stream/channelnumber/<i>channel_number</i>
</dl>
<dt>Enabled
<dd>Whether or not the mux is enabled and thus available.
<dd>Channel number. This is not used by Tvheadend internally, but rather
intended to be used by HTSP clients for mapping to remote control
buttons, presentation order, etc
<dt>Number
<dd>Channel number. This is not used by Tvheadend internally, but rather
intended to be used by HTSP clients for mapping to remote control
@ -36,6 +53,12 @@
display a direct link that can be used to open in preferred media
player.
<dt>Auto EPG Channel
<dd>Auto-link EPG channels from XMLTV and OpenTV EPG grabbers using
the channel name for matching. If you turn this option off, only
OTA EPG grabber will be used for this channel unless the EPG Grab
Source option (bellow) is not set manually.
<dt>EPG Grab Source
<dd>Name of the Internet-based EPG provider (typically XMLTV) channel
that should be used to update this channels EPG info.
@ -54,10 +77,13 @@
in the EPG if you have many channels. The tags are also presented
in a Media player.
<dt>Icon
<dt>User Icon
<dd>An URL pointing to an image representing the channel.
The icon URL will be set automatically when importing data from
XMLTV. This field allows the user to edit it manually.
XMLTV, when picon path is set or when channel icon path is set
in the general config. This field allows the user to edit it manually. The
reset icon action allows to re-set the automatic URL for
selected channel (e.g. after configuration change).
<dt>DVR Pre-Start
<dd>Allows the user to specify an amount of extra time that should

View file

@ -1,61 +0,0 @@
<div class="hts-doc-text">
Tvheadend support connecting to card servers for so called softcam descrambling.
<p>
<img src="docresources/configcwc.png">
<p>
The servers are listed / edited in a grid.
<ul>
<li>To edit a cell, double click on it. After a cell is changed it
will flags one of its corner to red to indicated that it has been
changed. To commit these changes back to Tvheadend press the
'Save changes' button. In order to change a Checkbox cell you only
have to click once in it.
<li>To add a new entry, press the 'Add entry' button. The new (empty) entry
will be created on the server but will not be in its enabled state.
You can now change all the cells to the desired values, check the
'enable' box and then press 'Save changes' to activate the new entry.
<li>To delete one or more entries, select the lines (by clicking once on
them), and press the 'Delete selected' button. A pop up
will ask you to confirm your request.
</ul>
<p>
The columns have the following functions:
<dl>
<dt>Enabled
<dd>If selected, connection will be tried to be established and retained up.
If unselected, Tvheadend will disconnect (if connected) and not try to reconnect.
<dt>Hostname
<dd>Server hostname. DNS lookup is performed upon every connection attempt.
<dt>Port
<dd>Server TCP port
<dt>Username
<dd>Username to use.
<dt>Password
<dd>Password to use.
<dt>DES Key
<dd>Initial DES key.
<dt>Update Card
<dd>Forward Entitlement Management Messages (EMMs) to the server.
<dt>Update One
<dd>Forward EMMs only from one channel at a time.
<dt>Comment
<dd>Allows the administrator to set a comment only visible in this editor.
It does not serve any active purpose.
</dl>
</div>

View file

@ -1,6 +1,10 @@
<div class="hts-doc-text">
<img src="docresources/configdvrtab.png">
<img src="docresources/configdvrtab1.png">
<br>
<img src="docresources/configdvrtab2.png">
<br>
<img src="docresources/configdvrtab3.png">
<p>
This tab is used to configure operation of the Digital Video Recorder.
@ -56,8 +60,13 @@
<dd>If checked, broadcasts with matching title and matching non-zero episode number
are considered duplicates.
<dt>EPG update window
<dd>Maximum difference between event start times when the EPG event is changed.
TVHeadend uses a fuzzy match logic (using title, start times,
duration, episode) to check when the event was changed.
<dt>Post-processor command
<dd>Command to run after finishing a recording. The command will be run in background and is executed even if a recording is aborted or an error occurred. Use the %e error formatting string to check for errors, the error string is empty if recording finished successfully.
<dd>Command to run after finishing a recording. The command will be run in background and is executed even if a recording is aborted or an error occurred. Use the %e error formatting string to check for errors, the error string is "OK" if recording finished successfully.
<br><br>
Support format strings:<br>
<table class="hts-doc-text" border="0">
@ -167,10 +176,19 @@
<dd>If checked, insert the episode number before the data and time rather than after (assumes <i>Include date</i>, <i>Include time</i> and <i>Include episode</i> options are set).
<dt>Remove all unsafe characters from filename
<dd>If checked, all characters that could possibly cause problems for filenaming will be removed.
<dd>If checked, all characters that could possibly cause problems for filenaming will be replaced with '_'.<br>
Applies to characters:<br>
* not supported by Windows characters: <i>/ : \ < > | * ? ' "</i><br>
* control characters (ASCII code below 32)<br>
* control and national characters (ASCII code above 122)<br>
<dt>Replace whitespace in title with '-'
<dd>If checked, all whitespace characters will be replaced with '-'.
<dd>If checked, whitespace characters (spaces and tabs) will be replaced with '-'.
<dt>Use Windows-compatible filenames
<dd>If checked:<br>
* special characters not supported by Windows like: <i>/ : \ < > | * ? ' "</i> will be replaced with '_'<br>
* trailing spaces ' ' and dots '.' will be removed
</dl>
Changes to any of these settings must be confirmed by pressing the 'Save configuration' button before taking effect.

View file

@ -48,6 +48,51 @@
<a href='http://github.com/adamsutton/PyEPG'>http://github.com/adamsutton/PyEPG</a>.</li>
</ul>
<h2>Cron multi-line config text areas</h2>
<ul>
<li><p>The cron lines looks like:</p>
<pre>
# * * * * * command to execute
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)</pre>
<li><b>Cron special characters</b>
<dl>
<dt>Asterisk ( * )
<dd>The asterisk indicates that the cron expression matches for all values
of the field. E.g., using an asterisk in the 4th field (month)
indicates every month.
<dt>Slash ( / )
<dd>Slashes describe increments of ranges. For example 3-59/15 in the
1st field (minutes) indicate the third minute of the hour and every
15 minutes thereafter. The form "*/..." is equivalent to the form
"first-last/...", that is, an increment over the largest possible
range of the field.
<dt>Comma ( , )
<dd>Commas are used to separate items of a list. For example, using
"MON,WED,FRI" in the 5th field (day of week) means Mondays,
Wednesdays and Fridays.
<dt>Hyphen ( - )
<dd>Hyphens define ranges. For example, 2000-2010 indicates every year
between 2000 and 2010 AD, inclusive.
<dt>Number-sign ( # )
<dd>Number-sign defines a start of a comment. The rest of line is
ignored behind this character.
</dl>
</ul>
<h2>Configuration options</h2>
<h3>General Config</h3>
@ -74,14 +119,26 @@
<dt>Module:
<dd>Select which internal grabber to use.
<dt>Grab interval
<dd>Time period between grabs. Value and unit are independently set.
<dt>Cron multi-line
<dd>Multiple lines of the cron time specification.
</dl>
<h3>Over-the-air Grabbers</h3>
<p>
Checkbox list to enable/disable available modules.
By default all grabbers should be enabled.
<dl>
<dt>Force initial EPG scan at startup
<dd>... no comment
<dt>Cron multi-line
<dd>Multiple lines of the cron time specification.
<dt>EPG scan timeout in seconds
<dd>The multiplex (mux) is tuned for this amount of time at maximum. If EPG data
are completed before this limit, the mux is released sooner.
<dt>Checkbox list
<dd>Checkbox list to enable/disable available modules.
By default all grabbers should be enabled.
</dl>
<h3>External interfaces</h3>
<p>

View file

@ -1,7 +1,7 @@
<div class="hts-doc-text">
This table defines rules to filter and order the elementary streams
like video or audio from the input feed.
(PIDs) like video or audio from the input feed.
<p>
The execution order of commands is granted. It means that first rule
@ -67,9 +67,17 @@ The columns have the following functions:
<dt>CA Provider
<dd>The CA provider to compare. Empty field means any.
<dt>Stream Index
<dd>The logical stream index to compare. Note that this index is computed
using all filters. Example: If filter is set to AC3 audio type and
the language to 'eng' and there are two AC3 'eng' streams in
the service, the first stream could be identified using number 1
and the second using number 2.
<dt>PID
<dd>Program identification (PID) number to compare. Zero means any.
This comparison is processed only when service comparison is active.
This comparison is processed only when service comparison is active
and for the Conditional Access filter.
<dt>Action
<dd>The rule action defines the operation when all comparisons succeeds.
@ -82,10 +90,20 @@ The columns have the following functions:
<dt>USE
<dd>Use this elementary stream.
<dt>ONCE
<dd>Use this elementary stream only once per service type.
The language is distinguished, too.
The first successfully compared rule wins.
<dt>ONE_TIME
<dd>Use this elementary stream only one time per service type (like
video, audio, subtitles) and language. The first sucessfully
compared rule wins. For example, when one AC3 elementary stream
is marked to be used with 'eng' language and another rule with
the ONE_TIME action was matched, the new AC3 elementary stream
will not be added if the language for new AC3 elementary stream
is 'eng'. Note that the second rule might not have the language
filter (column) set.
<p>
For the CA filter, this rule means that the new CA elementary stream
is added only if another CA is not already used.
</p>
<dt>EXCLUSIVE
<dd>Use only this elementary stream. No other elementary streams

View file

@ -1,6 +1,8 @@
<div class="hts-doc-text">
<img src="docresources/configgeneraltab.png">
<img src="docresources/configgeneraltab1.png">
<br>
<img src="docresources/configgeneraltab2.png">
<p>
This tabs allow configuration of several general parameters that affect the
@ -58,16 +60,44 @@
<dt>Update tolerance (milliseconds)</dt>
<dd>Only update the system clock (doesn't affect NTP driver) if the delta
between the system clock and DVB time is greater than this. This can help
stop horrible oscillations on the system clock.</dd>
stop excessive oscillations on the system clock.</dd>
<br><br>
<hr>
<b>Picon</b>
<hr>
<dd>Picons (from p ersonal icons) are collections of similar icons that can be automatically
matched against your channels based on a number of technical parameters that will uniquely
define a channel. The use of these parameters (e.g. mux, frequency, orbital position)
removes the ambiguity of using names - it's not case sensitive, it doesn't care if there
are spaces or not, and so on.
You can generate picons yourself from existing images, or you can usually find sets
pre-made on the Internet if you search for them. They're a good way to get large numbers
of icons matched quickly, and usually in a similar style (such as square, x * y pixels, with
a consistent highlight/reflection effect).</dd>
<dl>
<dt>Prefer picons over channel name:</dt>
<dd>If both a picon and a channel-specific (e.g. channelname.jpg) icon are defined, use the picon.</dd>
<dt>Channel icon path</dt>
<dd>Path to an icon for this channel. This can be named however you wish, as a local (file://) or remote (http://) image.
The following placeholders are available:<br>
<ul>
<li>%C - the transliterated channel name in ASCII (safe characters, no spaces etc.)</li>
<li>%c - the channel name (URL encoded ASCII)</li>
</ul>
Example: file:///tmp/icons/%C.png or http://example.com/%c.png</dd>
<dt>Picon path</dt>
<dd>Path to a directory (folder) containing your picon collection. This can be named however
you wish, as a local (file://) or remote (http://) location - however, remember that it's pointing
to a directory as the picon names are automatically generated from the service parameters
frequency, orbital position, etc.).<br>
Example: file:///home/hts/picons</dd>
</dl>
<br><br>
<hr>
<b>Transcoding</b>
<hr>
<dd>If enabled at build time (src/plumbing/transcoding.c), this allows you to switch transcoding support on and off.</dd>
<br><br>
<hr>
@ -101,5 +131,72 @@
</dl>
<br><br>
<hr>
<b>SAT&gt;IP Server</b>
<hr>
<dd>SAT&gt;IP Server is something like DVB network tuner. TVHeadend can
forward mpegts input streams including on-the-fly descramling to SAT&gt;IP
clients.</dd>
<dd>Only networks with the "SAT>IP Source" field set are exported
through the SAT&gt;IP protocol. This field is matched through the "src"
parameter asked from the SAT>IP client. Usually (and by default) this value is 1.
For satellite tuners, this value determines the satellite source (dish).
By specification position 1 = DiseqC AA, 2 = DiseqC AB, 3 = DiseqC BA,
4 = DiseqC BB, but any numbers may be used - depends on the SAT&gt;IP client.
Note that if you use a similar number for multiple networks, the first matched
network containing the mux with requested parameters will win
(also for unknown mux).</dd>
<dl>
<dt>RTSP Port
<dd>
Select RTSP port (TCP) for realtime commands from SAT&gt;IP clients. Usually
(as defined in the specification) this port is 554. But as extension,
TVHeadend can use any TCP port value (which is default 9983 for non-root
users). But the SAT&gt;IP client must allow to set this value (TVHeadend
client will obtain the RTSP port number automatically using the XML
description). If the RTSP port value is zero, the SAT&gt;IP server
functionality is not enabled.
<dt>Subscription Weight
<dd>
Subscription weight value. Default value is 100 (standard streaming). Note
that the default value for DVR is 300 (normal priority).
<dt>Descramble Services
<dd>
The maximum limit of services descrambled per a mux. If zero, the
descrambling functionality is disabled.
<dt>Muxes Handling
<dd>
When SAT&gt;IP client requests new mux configuration, tvheadend can handle it
in three ways. The auto (0) configuration means that if the mux does not exists,
a temporary mux is created and removed when the client closes the
connection. The keep (1) configuration will remember all successfuly scanned muxes.
The reject (2) configuration will reject unknown muxes.
<dt>Exported DVB-T/T2 Tuners
<dd>
Exported DVB-T/T2 tuners - streaming instances.
<dt>Exported DVB-S/S2 Tuners
<dd>
Exported DVB-S/S2 tuners - streaming instances.
<dt>Exported DVB-C/C2 Tuners
<dd>
Exported DVB-C/C2 tuners - streaming instances.
<dt>Exported ATSC/DVB-C(AnnexB) Tuners
<dd>
Exported ATSC/DVB-C(AnnexB) - streaming instances.
</dl>
</dl>
</div>

136
docs/html/config_muxes.html Normal file
View file

@ -0,0 +1,136 @@
<div class="hts-doc-text">
<p>
Muxes are locations at which services can be found. On traditional networks (DVB-C, -T and -S), these are carrier signals on which the individual channels are multiplexed, hence the name. However, Tvheadend also uses the term 'mux' to describe a source for multiple IP streams - so an IP address, in effect.
</p>
<p>
<img src="docresources/configdvbmux.png">
</p>
The columns have the following functions:
<dl>
<dt>Play
<dd>Downloads a playlist file (M3U or XSPF, depending on your startup options) so you can tune to the mux from an external application.
<dt>Enabled
<dd>Whether or not the mux is enabled and thus available.
<dt>EPG
<dd>EPG scan setup
<dl>
<dt>Disable
<dd>Disable the EPG scan
<dt>Enable (auto)
<dd>Enable the EPG scan (when some services from this mux are assigned to channels)
<dt>Force (auto)
<dd>Force the EPG scan (everytime when the EPG scan is triggered)
<dt>Only EIT
<dd>Do only EIT EPG scan (when some services from this mux are assigned to channels)
<dt>Only UK Freesat
<dd>Do only UK Freesat EPG scan (when some services from this mux are assigned to channels)
<dt>Only UK Freeview
<dd>Do only UK Freeview EPG scan (when some services from this mux are assigned to channels)
<dt>Only Viasat Baltic
<dd>Do only Viasat Baltic EPG scan (when some services from this mux are assigned to channels)
<dt>Only OpenTV Sky UK
<dd>Do only OpenTV Sky UK EPG scan (the TSID must match in the skyuk configuration file)
<dt>Only OpenTV Sky Italia
<dd>Do only OpenTV Sky Italia EPG scan (the TSID must match in the skyit configuration file)
<dt>Only OpenTV Sky Ausat
<dd>Do only OpenTV Sky Ausat EPG scan (the TSID must match in the ausat configuration file)
</dl>
<dt>Network
<dd>The name of the network to which the mux belongs. Networks are defined in Configuration -> DVB Inputs -> Networks - DVB-S or ATSC, for example.
<dt>Original Network ID
<dd>The ONID is a code which uniquely identifies a network.
<dt>Transport Stream ID
<dd>The TSID is a code which identifies the network origination source or transmitter.
<dt>CRID Authority
<dd>The group responsible for the Content Reference Identifier for this mux. This is effectively a URL/URI to an authoritative source for programme data (e.g. series link).
<dt>Scan Status
<dd>Whether the mux is being scanned (ACTIVE), is planned to be scanned (PEND) or has reverted to idle scan (IDLE).
<dt>Scan Result
<dd>Whether there were any problems with the last scan of this mux.
<dt>URL
<dd>Mux URL.
<dl>
<dt>udp://
<dd>Raw MPEG-TS UDP packets
<dt>rtp://
<dd>MPEG-TS UDP packets with RTP header
<dt>http://
<dd>HTTP stream (MPEG-TS)
<dt>https://
<dd>Secure HTTP stream (MPEG-TS)
<dt>pipe://
<dd>Read standard output from an external program.
If the program name does not have the first
character '/', the PATH environment variable
is used to find the program name in all
directories specified by PATH.
Additional arguments may be separated
using spaces. A raw MPEG-TS stream is
expected. The string ${service_name}
is substituted with the service name
field contents. The \ (backslash) character means
"take the next character asis" (usually
space or the backslash itself.
</dl>
<dt># Services
<dd>The number of services found on this mux.
<dt>Character Set
<dd>The character encoding for this mux (e.g. UTF-8).
<dt>PMT Descriptor 0x06 = AC-3
<dd>Whether or not the empty PMT descriptor 0x06 defaults to
the AC-3 stream. Some Chinese cable providers are using
this. If unsure, keep this off.
<dt>Interface
<dd>IPTV : the network interface/card on which the IPTV source can be found.
<dt>ATSC
<dd>whether or not this is an ATSC IPTV source.
<dt>Priority
<dd>IPTV : The mux priority value (higher value = higher priority to use services from this mux). Value 0 means use the IPTV network priority value.
<dt>Streaming Priority
<dd>IPTV : The mux priority value for streamed channels through HTTP or HTSP (higher value = higher priority to use services from this mux). Value 0 means use the standard streaming network priority value.
<dt>Environment (pipe)
<dd>IPTV : List of environment variables for pipe (like PATH=/bin:/sbin)
separated by spaces. The backslash character is handled like
in URL.
<dt>Respawn (pipe)
<dd>IPTV : Respawn the executed process when it dies.
</dl>
</div>

View file

@ -0,0 +1,28 @@
<div class="hts-doc-text">
<p>
Mux Schedulers enable Tvheadend to automatically play channels.
This is useful to get EPG, services or access rights updates.
</p>
<p>
<img src="docresources/configdvbmuxsched.png">
</p>
The columns have the following functions:
<dl>
<dt>Enabled
<dd>If selected, schedule will be triggered.
If unselected, schedule will be ignored.
<dt>Mux
<dd>Select mux to be played from the available muxes.
<dt>Cron
<dd>Schedule frequency, using cron syntax.
<dd>Example : every day at 2am is : 0 2 * * *
<dt>Timeout
<dd>Time in seconds the selected mux will be played.
<dd>Example : 1 hour would be 3600.
</dl>
</div>

View file

@ -0,0 +1,115 @@
<div class="hts-doc-text">
<p>
A network is the type of carrier for your television signals. Tvheadend supports several different types of network, notably:
<dl>
<li><b>DVB-C</b> : Cable TV, delivered via a cable to your house
<li><b>DVB-S</b> : Satellite (includes S2), so any signal coming in via a dish
<li><b>DVB-T</b> : Terrestrial, so over-the-air broadcasts received through a traditional television aerial
<li><b>ATSC</b> : Over-the-air terrestrial, common in north and central America and parts of south Asia
<li><b>IPTV</b> : IP, so over the Internet
</dl>
</p>
<p>
<img src="docresources/configdvbnetwork.png">
</p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Add</b>
<dd>
Add a new network. You can choose from any of the types described above.
<p>
<dt><b>Delete</b>
<dd>
Delete an existing network. This will also remove any association with an adapter.
<p>
<dt><b>Edit</b>
<dd>
Edit an existing network. This allows you to change any of the parameters you'd otherwise set when adding a new network, e.g. network discovery, idle scan, etc. - similar to using the check boxes to enable/disable functions.
<p>
<dt><b>Save</b>
<dd>
Saves any changes.
<p>
<dt><b>Undo</b>
<dd>
Undoes any changes.
<p>
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<dl>
<dt><b>Network Name</b>
<dd>The name of the network. This can be set automatically or you can give it a name that means something to you (e.g. if you have multiple OTA networks).
<p>
<dt><b>Network Discovery</b>
<dd>Whether automatic discovery is enabled for this network, i.e. whether Tvheadend looks for muxes or simply stays with the list of muxes as defined initially.
<p>
<dt><b>Skip initial Scan</b>
<dd>Don't scan all muxes in this network at Tvheadend start.
The initial scan procedure is not a blind scan. Only known muxes
registered to this network are scanned. If Network Discovery
is enabled and new muxes are discovered using DVB
descriptors, these muxes will be scanned too.
<p>
<dt><b>Idle Scan Muxes</b>
<dd>When nothing else happens Tvheadend will continuously rotate among all muxes and tune to them to verify that they are still working
when the inputs are not used for streaming. If your adapter have problems with lots of (endless) tuning, try to disable this.
Note that this option should be OFF for the normal operation. This type of mux probing is not required and
it may cause issues for SAT>IP (limited number of PID filters).
<p>
<dt><b>Ignore Provider's Channel Numbers</b>
<dd>Some providers will try to set a channel number so that every receiver is consistent - "tune to Channel x on 150". This option allows you to ignore this and let tvhheadend allocate a channel number itself.
<p>
<dt><b>Max Input Streams</b>
<dd>IPTV : maximum simultaneous streams that can be played.
<p>
<dt><b>Max Bandwidth</b>
<dd>IPTV : maximum bandwidth allowed for streams.
<p>
<dt><b>Max timeout</b>
<dd>IPTV : maximum timeout trying to play stream.
<p>
<dt><b>Network ID</b>
<dd>If you experience problems caused by overlaps between multiple network
providers this option can be used to filter which network ID is received
by a given adapter.
<p>
<dt><b>Ignore Provider's Channel Numbers</b>
<dd>Do not use the local channel numbers defined by provider.
<p>
<dt><b>SAT&gt;IP Source Number</b>
<dd>This field is matched through the "src" parameter asked from the
SAT&gt;IP client. Usually (and by default) this value is 1.
For satellite tuners, this value determines the satellite source (dish).
By specification position 1 = DiseqC AA, 2 = DiseqC AB, 3 = DiseqC BA,
4 = DiseqC BB, but any numbers may be used - depends on the SAT&gt;IP
client. Note that if you use same number for multiple networks,
the first matched network containing the mux with requested parameters
will win (also for unknown mux). If this field is set to zero,
the network cannot be used by the SAT&gt;IP server.</dd>
<p>
<dt><b>EIT Local Time</b>
<dd>EPG (EIT) events uses local time instead UTC.
<p>
<dt><b>Character Set</b>
<dd>The character encoding for this network (e.g. UTF-8).
<p>
<dt><b>Priority</b>
<dd>IPTV : The network priority value (higher value = higher priority to use muxes/services from this network).
<p>
<dt><b>Streaming Priority</b>
<dd>IPTV : The network priority value for streamed channels through HTTP or HTSP (higher value = higher priority to use muxes/services from this
network). If not set, the standard network priority value is used.
</dl>
</div>

View file

@ -0,0 +1,83 @@
<div class="hts-doc-text">
<p>
Services are automatically pulled from muxes and can be mapped to Channels.
</p>
<p>
<img src="docresources/configdvbservices.png">
</p>
The columns have the following functions:
<dl>
<dt>Play
<dd>Opens a playlist (M3U of XSPF, depending on your startup options) to allow you to stream this service to another application, e.g. to watch a channel in VLC.
<dt>Details
<dd>Display details on this service, e.g. PID, streams, audio/video CODECs, languages, etc.
<dt>Enabled
<dd>Whether or not this service is available for use
<dt>Automatic Checking
<dd>Check for the service presence. If service is no longer broadcasted,
this field will become as "Missing In PAT/SDT". The
check can be also disabled for given service using this
column.
<dt>Priority
<dd>Define priority (range 0-10) for this service. The higher value means more preferred.
Note that this value is _added_ to the input (tuner) priority.
Take this in account when you set the input priorities.
<dt>Channel
<dd>The channel to which the service is mapped
<dt>Service Name
<dd>The name of the service, detected when the service was discovered
<dt>Encrypted
<dd>Whether or not the service is scrambled
<dt>Network
<dd>The network on which this service resides (i.e. whether it's a cable channel or a terrestrial one)
<dt>Mux
<dd>The mux which carries this service. This is typically the frequency of the carrier signal in kHz, with polarisation (H or V) as applicable.
<dt>Service ID
<dd>A unique identifier for this service within this mux/transport stream.
<dt>Local Channel Number
<dd>Channel number as assigned by the broadcaster.
<dt>Provider
<dd>Any supplied provider string, e.g. where multiple broadcasters share a platform, such as for free-to-air and pay TV.
<dt>CRID Authority
<dd>The group responsible for the Content Reference Identifier for this service. This is effectively a URL/URI to an authoritative source for programme data (e.g. series link).
<dt>Service Type
<dd>The service type flag as defined by the DVB specifications (e.g. 0x02 = radio, 0x11 = MPEG2 HD TV, 0x19 = H.264 HD TV)
<dt>Pref. CA PID
<dd>The Preferred Conditional Access Packet Identifier. Used for decrypting scrambled streams.
<dt>Lock Pref. CA PID
<dd>The locking mechanism selection for The Preferred Conditional Access Packet Identifier.
<dl>
<dt>Off
<dd>Automatic Preferred Conditional Access Packet Identifier selection.
<dt>On
<dd>Keep Preferred Conditional Access Packet Identifier selection (no automatic modifications allowed).
<dt>Only Pref. CA PID
<dd>Filter mode - use only Preferred Conditional Access Packet Identifier for the streams decryption.
</dl>
<dt>Character Set
<dd>The character encoding for this service (e.g. UTF-8).
</dl>
</div>

View file

@ -0,0 +1,41 @@
<div class="hts-doc-text">
<p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Add</b>
<dd>
Add a new profile. You can choose from any of the types from the list.
<p>
<dt><b>Delete</b>
<dd>
Delete an existing profile.
<p>
<dt><b>Save</b>
<dd>
Saves any changes.
<p>
<dt><b>Undo</b>
<dd>
Undoes any changes.
<p>
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<dl>
<dt><b>Stream Profile Name</b>
<dd>This column contains the name of Stream Profile.
</dl>
</div>

View file

@ -7,12 +7,12 @@
Tags are used to define a set of channels.
Notice that nothing prohibits a channel to be a member of multiple tags.
Also, there is no requirement to configure tags for running Tvheadend
itself. It is, however, required if you run Tvheadend together with Showtime.
itself. It is, however, required if you run Tvheadend together with Movian.
<p>
The tag-sets are used for:
<ul>
<li>Searches in the EPG.
<li>Display of channel groups in the Showtime Media player.
<li>Display of channel groups in the Movian Media player.
</ul>
<p>
@ -48,9 +48,16 @@
automatic recordings, groups, etc.
<dt>Internal
<dd>Tags are exported via HTSP (to the Showtime Media player) and used
there for grouping of TV channels. If you do not wish to export a
tag you can flag it as internal only.
<dd>Tags are exported via HTSP/HTTP and used there for grouping of
TV channels. If you do not wish to export a tag you can flag
it as internal only.
<dt>Private
<dd>Tags are exported via HTSP/HTTP and used there for grouping of TV
channels. If you do not wish to export a tag to other users you can
flag it as private only. Only users with this tag configured
in the access configuration (or users with not set tags) can
use it.
<dt>Icon
<dd>Full path to an icon used to depict the tag. This can be a TV network

View file

@ -36,6 +36,11 @@
specify an unlimited period its highly recommended you specifying a value
here.
<dt>Max. RAM Size (MegaBytes)
<dd>Specifies the maximum RAM (system memory) size for timeshift buffers.
When free RAM buffers are available, they are used instead storage to
save the timeshift data.
<dt>Unlimited:
<dd>If checked, this allows the combined size of all timeshift buffers to
potentially grow unbounded until your storage media runs out of space

View file

@ -8,68 +8,167 @@
you only have to click once in it.
</ul>
</p>
<h4>The rows have the following functions</h4>
<p>
<img src="docresources/configtvadapters.png">
</p>
<br>
<hr>
<b>Rows</b>
<hr>
The rows have the following functions
<br><br>
<dt><u><i><b>Basic Settings</b></i></u></dt>
<dl>
<dt>Enabled</dt>
<dd>If selected, the IPTV service will be enabled an use for channel
subscriptions.</dd>
<dt>Name</dt>
<dt><b>Enabled</b></dt>
<dd>If selected, this tuner/adapter will be enabled and will become available to receive broadcasts or programmes.</dd>
<p>
<dt><b>Name</b></dt>
<dd>The name of this tuner.</dd>
<dt>Priority</dt>
<p>
<dt><b>Over-the-Air EPG</b></dt>
<dd>Enable over-the-air programme guide (EPG) scanning on this input device.</dd>
<p>
<dt><b>Networks</b></dt>
<dd>Associate this device with one or more networks.</dd>
<p>
</dl>
<dt><u><i><b>Advanced Settings</b></i></u></dt>
<dl>
<dt><b>Priority</b></dt>
<dd>The tuner priority value (higher value = higher priority to use this
tuner).</dd>
<p>
<dt><b>Streaming Priority</b></dt>
<dd>The tuner priority value for streamed channels through HTTP or HTSP
(higher value = higher priority to use this tuner). If not set (zero),
the standard priority value is used.</dd>
<p>
<dt><b>Init Scan</b></dt>
<dd>Allow the initial scan tuning on this device. See to
Skip initial Scan in the network settings for the further description.</dd>
<p>
<dt><b>Idle Scan</b></dt>
<dd>Allow the idle scan tuning on this device.</dd>
<p>
<dt><b>Linked Input</b></dt>
<dd>Always make alive also the linked input. The subscriptions are named as "keep".</dd>
</dl>
</p>
</p>
<h4>LinuxDVB specific rows</h4>
<br>
<hr>
<b>LinuxDVB Specific Rows</b>
<hr>
<dl>
<dt>Keep FE open</dt>
<dd>Enable to not close the LinuxDVB frontend device in the idle state.</dd>
</dl>
<dt><b>Power Save</b></dt>
<dd>If enabled, allows the tuner to go to sleep when idle.</dd>
<p>
<dt><b>Tune Before DiseqC</b></dt>
<dd>If set, one tune request (setup) is proceed before the DiseqC
sequence (voltage, tone settings). Some linux drivers require this
procedure.</dd>
<p>
<dt><b>Tune Repeats</b></dt>
<dd>If set, the tune requests are repeated using this number. Zero means
one tune requests, one two tune requests etc.</dd>
<p>
<dt><b>Skip Initial Bytes</b></dt>
<dd>If set, first bytes from the MPEG-TS stream are discarded. It may be
required for some drivers / hardware which does not flush completely
the MPEG-TS buffers after a frequency/parameters change.</dd>
<p>
<dt><b>Input Buffer (Bytes)</b></dt>
<dd>By default, linuxdvb input buffer is 18800 bytes long. The accepted
range is 18800-1880000 bytes.</dd>
<p>
<dt><b>Status Period</b></dt>
<dd>By default, linuxdvb status read period is 1000ms (one second). The
accepted range is 250ms to 8000ms. Note that for some hardware /
drivers (like USB), the status operations takes too much time and CPU.
In this case, increase the default value. For fast hardware, this value
might be descreased to make the decision of the re-tune algorithm
based on the signal status faster.</dd>
<p>
<dt><b>Force old status</b></dt>
<dd>Always use the old ioctls to read the linuxdvb status (signal strenght,
SNR, error counters). Some drivers are not matured enough to provide
the correct values using the new v5 linuxdvb API.</dd>
</dl>
<h4>SAT>IP specific rows</h4>
<br>
<hr>
<b>LinuxDVB Satellite Config Rows</b>
<hr>
<dl>
<dt>Full Mux Rx mode supported</dt>
<dd>Enable, if the SAT>IP box supports the full mux rx mode (pids=all)
parameter.</dd>
<dt>Signal scale (240 or 100)</dt>
<dd>Some SAT>IP boxes has only 0-100 scale. If your signal is too low, try
value 100 here.</dd>
<dt>Maximum PIDs<dt>
<dt><b>DiseqC repeats</b></dt>
<dd>Number of repeats for the DiseqC commands (default is zero - no DiseqC repeats).</dd>
<p>
<dt><b>Full DiseqC</b></dt>
<dd>Always sent the whole DiseqC sequence including LNB setup (voltage, tone).
If this is not checked, only changed settings is set. It may cause
issues with some drivers. If the tuning is not reliable, try to
activate this option.</dd>
<p>
<dt><b>Turn off LNB when idle</b></dt>
<dd>Turn off LNB when it is not used. It may save some power.</dd>
<p>
<dt><b>Switch Then Rotor</b></dt>
<dd>If the DiseqC switch is before rotor (tuner - switch - rotor), enable this.</dd>
<p>
<dt><b>Init Rotor Time (seconds)</b></dt>
<dd>Upon new start, tvheadend does not know the last rotor position. This
value defined the initial rotor movement. TVHeadend waits the
specified seconds when the first movement is requested.</dd>
<dt><b>Min Rotor Time (seconds)</b></dt>
<dd>The minimum delay after the rotor movement command is send.</dd>
</dl>
<p>
<br>
<hr>
<b>SAT>IP Specific Rows</b>
<hr>
<dl>
<dt><b>Full Mux Rx mode supported</b></dt>
<dd>Enable if the SAT>IP box supports the full mux rx mode (pids=all)<br>
note: no comma after 'Enable'</dd>
<p>
<dt><b>Signal scale (240 or 100)</b></dt>
<dd>Some SAT>IP boxes only report a 0-100 (percentage) signal strength. If your signal strength reports as too low, try
setting this to 100.</dd>
<p>
<dt><b>Maximum PIDs</b><dt>
<dd>Maximum supported PIDs in the filter of the SAT>IP box.</dd>
<dt>Maximum length of PIDs<dt>
<p>
<dt><b>Maximum length of PIDs</b><dt>
<dd>Maximum length in characters for the command setting PIDs to the
SAT>IP box.</dd>
<dt>addpids/delpids supported</dt>
<dd>Enable, if the SAT>IP box supports the addpids/delpids command.
<dt>PIDs in setup</dt>
<p>
<dt><b>Addpids/delpids supported</b></dt>
<dd>Enable if the SAT>IP box supports the addpids/delpids command.
<p>
<dt><b>PIDs in setup</b></dt>
<dd>Enable, if the SAT>IP box requires pids=0 parameter in the SETUP RTSP command.</dd>
<dt>Force pilot for DVB-S2</dt>
<p>
<dt><b>Double RTSP Shutdown</b></dt>
<dd>Enable, if the SAT>IP box might require to send twice the RTSP SHUTDOWN command.</dd>
<p>
<dt><b>Force pilot for DVB-S2</b></dt>
<dd>Enable, if the SAT>IP box requiest plts=on parameter in the SETUP RTSP
command for DVB-S2 muxes.</dd>
<dt>UDP RTP Port Number (2 ports)</dt>
<p>
<dt><b>UDP RTP Port Number (2 ports)</b></dt>
<dd>Force the local UDP Port number here. The number should be even (RTP port).
The next odd number (+1) will be used as the RTCP port.</dd>
<dt>Satellite Positions</dt>
<p>
<dt><b>Satellite Positions</b></dt>
<dd>Select the number of satellite positions supported by the SAT>IP
hardware and your coaxial cable wiring.</dd>
<dt>Master Tuner</dt>
<p>
<dt><b>Master Tuner</b></dt>
<dd>Select the master tuner.
<p>The signal from the standard universal LNB can be split using
a simple coaxial splitter (no multiswitch) to several outputs.
@ -79,21 +178,22 @@
a slave one and tvheadend will assure that this tuner will not
use incompatible parameters (position, polarization, lo-hi).</p>
</dd>
<dt>Next tune delay in ms (0-2000)</dt>
<P>
<dt><b>Next tune delay in ms (0-2000)</b></dt>
<dd>The delay before tuning in milliseconds after tuner stop. If the time
after previous start and next start is greater than this value -
the delay is not applied.</dt>
<dt>Send full PLAY cmd</dt>
<p>
<dt><b>Send full PLAY cmd</b></dt>
<dd>Send the full RTSP PLAY command after full RTSP SETUP command. Some
device firmwares requires this to get MPEG-TS stream.</dd>
<dt>Force teardown delay<dt>
<p>
<dt><b>Force teardown delay</b><dt>
<dd>Force the delay between RTSP TEARDOWN and RTSP SETUP command (value
from 'Next tune delay in ms' is used). Some devices are not able to handle
quick continuous tuning.</dd>
</dl>
</p>
</div>

View file

@ -24,5 +24,15 @@
<dd></dd>
</dl>
Changes to any of these settings must be confirmed by pressing the 'Save configuration' button before taking effect.
<p>
Changes to any of these settings must be confirmed by pressing
the 'Save configuration' button before taking effect.
</p>
<p>
Note that the settings is not saved to a storage. It is available
only until the actual tvheadend process is running. If you like to change the
default behaviour permanently, use the command line options like -l,
--debug, --trace. This configuration is stored usually in the /etc/sysconfig
tree (depending on the distribution) or an init script.
<p>
</div>

View file

@ -1,5 +1,118 @@
<div class="hts-doc-section">Automatic recordings</div>
<div class="hts-doc-text">
is niiice.
This tab is used to create and maintain Digital Video Recorder rules. These can be EPG-driven (such as those created from the initial EPG tab) through the DVR AutoRec Entries tab , or can be timer-based through the Time Schedules tab.
<br>
<br>
This tab controls EPG-driven recording rules.
<p>
<img src="docresources/dvrautorecentries.png">
</p>
<p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Add</b>
<dd>
Add and configure a recording rule - define the channel, schedule, DVR configuration, priority, etc.
<p>
<dt><b>Delete</b>
<dd>
Delete an existing recording rule.
<p>
<dt><b>Edit</b>
<dd>
Manually edit an existing recording rule. This uses the same fields as <b>Add</b>, but they're pre-populated with their current values.
<p>
<dt><b>Save</b>
<dd>
Saves any changes made to the recording rule list.
<p>
<dt><b>Undo</b>
<dd>
Undoes any changes made to the recording rules list (any changed fields will be marked with a small red triangle).
<p>
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<br><br>
<dl>
<dt><b>Enabled</b>
<dd>
Check or clear this box to enable or disable this rule.
<p>
<dt><b>Name</b>
<dd>
The name you've given to the rule, e.g. 'Stuff involving Jeremy Clarkson'.
<p>
<dt><b>Directory</b>
<dd>
When specified, this setting overrides the subdirectory rules (except the base directory) specified by the DVR configuration
and puts all recordings done by this entry into the specified subdirectory. Useful for e.g. recording multiple different news
broadcasts into one common subdirectory called "News". The backshlash and other special characters are escaped, so it is possible
to create only one sublevel subdirectories (the base path for the target directory is always taken from the DVR configuration).
<p>
<dt><b>Title (Regexp)</b>
<dd>
The title of the programme to look for. Note that this accepts case-insensitive regular expressions, so you can use pattern matching as Tvheadend scans the EPG for programmes to record.
<p>
<dt><b>Fulltext</b>
<dd>
When the fulltext is checked, the title pattern is matched against title,
subtitle, summary and description.
<p>
<dt><b>Channel</b>
<dd>
The channel on which this rule applies, i.e. the channel you're aiming to record.
<p>
<dt><b>Channel Tag</b>
<dd>
A channel tag (e.g. a group of channels) on which this rule applies.
<p>
<dt><b>Content Type</b>
<dd>
The content type (Movie/Drama, Sports...) to be used to filter matching events/programmes.
<p>
<dt><b>Minimal Duration</b>
<dd>
The minimal duration of a matching event - in other words, only match programmes that are no shorter than this duration.
<p>
<dt><b>Maximal Duration</b>
<dd>
The maximal duration of a matching event - in other words, only match programmes that are no longer than this duration.
<p>
<dt><b>Week Days</b>
<dd>
On which specific days of the week to find matching programmes.
<p>
<dt><b>Start After</b>
<dd>
An event which starts between this "start after" and "start before" will be matched (including boundary values).
<p>
<dt><b>Start Before</b>
<dd>
An event which starts between this "start after" and "start before" will be matched (including boundary values).
<p>
<dt><b>Priority</b>
<dd>
The priority of any recordings set because of this rule: important, high, normal, low, unimportant.
<p>
<dt><b>DVR Configuration</b>
<dd>
The DVR configuration (e.g. extra start/stop time, post-processing rules) to be used for any recordings set because of this rule.
<p>
<dt><b>Creator</b>
<dd>
The creator of the rule. Automatically set.
<p>
<dt><b>Comment</b>
<dd>
A free-text comment. Not used otherwise.
<p>
</div>

82
docs/html/dvr_failed.html Normal file
View file

@ -0,0 +1,82 @@
<div class="hts-doc-text">
This tab show your all failed recordings.
<p>
<img src="docresources/failedrecordings1.png">
</p>
<p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Delete</b>
<dd>
If clicked delete selected failed recordings you delete recordings. Before deleted show message: Do you really want to delete the selection ? Answer Yes or No.
<p>
<dt><b>Download</b>
<dd>
Click this button to download the selected failed recordings to a local disk. You will be prompted to select the path for the saved file(s).
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<br><br>
<dl>
<dt><b>Details</b>
<dd>
Show red status and blue icon "i". After click on icon "i" you see info about select failed recordings.
<p>
<img src="docresources/failedrecordings2.png">
<p>
<dt><b>Play</b>
<dd>
Can play selected record in web browser by VLC Plugin or other external player.
<p>
<dt><b>Title</b>
<dd>
Showing title of record.
<p>
<dt><b>Episod</b>
<dd>
Showing number episod of record.
<p>
<dt><b>Scheduled Start Time</b>
<dd>
Showing date and time when the recording was started.
<p>
<dt><b>Scheduled Stop Time</b>
<dd>
Showing date and time when the recording was stoped.
<p>
<dt><b>Duration</b>
<dd>
Showing how long it took the recording.
<p>
<dt><b>File Size</b>
<dd>
<p>
Showing size of file recording.
<dt><b>Channel Name</b>
<dd>
Showing the name of the channel from which the recording was made.
<p>
<dt><b>Creator</b>
<dd>
Showing the name of the user who created the recording.
<p>
<dt><b>Schedule Status</b>
<dd>
Showing the status info of record.
<p>
<dt><b>URL</b>
<dd>
Showing the URL of record.
<p>
</div>

View file

@ -0,0 +1,82 @@
<div class="hts-doc-text">
This tab show your all finished recordings.
<p>
<img src="docresources/finishedrecordings1.png">
</p>
<p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Delete</b>
<dd>
If clicked delete selected finished recordings you delete recordings. Before deleted show message: Do you really want to delete the selection ? Answer Yes or No.
<p>
<dt><b>Download</b>
<dd>
Click this button to download the selected finished recordings to a local disk. You will be prompted to select the path for the saved file(s).
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<br><br>
<dl>
<dt><b>Details</b>
<dd>
Show green status and blue icon "i". After click on icon "i" you see info about select finished recordings.
<p>
<img src="docresources/finishedrecordings2.png">
<p>
<dt><b>Play</b>
<dd>
Can play selected record in web browser by VLC Plugin or other external player.
<p>
<dt><b>Title</b>
<dd>
Showing title of record.
<p>
<dt><b>Episod</b>
<dd>
Showing number episod of record.
<p>
<dt><b>Scheduled Start Time</b>
<dd>
Showing date and time when the recording was started.
<p>
<dt><b>Scheduled Stop Time</b>
<dd>
Showing date and time when the recording was stoped.
<p>
<dt><b>Duration</b>
<dd>
Showing how long it took the recording.
<p>
<dt><b>File Size</b>
<dd>
<p>
Showing size of file recording.
<dt><b>Channel Name</b>
<dd>
Showing the name of the channel from which the recording was made.
<p>
<dt><b>Creator</b>
<dd>
Showing the name of the user who created the recording.
<p>
<dt><b>Schedule Status</b>
<dd>
Showing the status info of record.
<p>
<dt><b>URL</b>
<dd>
Showing the URL of record.
<p>
</div>

101
docs/html/dvr_timerec.html Normal file
View file

@ -0,0 +1,101 @@
<div class="hts-doc-text">
This tab is used to create and maintain Digital Video Recorder rules. These can be EPG-driven (such as those created from the initial EPG tab) through the DVR AutoRec Entries tab , or can be timer-based through the Time Schedules tab.
<br>
<br>
This tab controls timer-driven recording rules.
<p>
<img src="docresources/timeschedules.png">
<p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Add</b>
<dd>
Add and configure a recording rule - define the channel, schedule, DVR configuration, priority, etc.
<p>
<dt><b>Delete</b>
<dd>
Delete an existing recording rule.
<p>
<dt><b>Edit</b>
<dd>
Manually edit an existing recording rule. This uses the same fields as Add, but they're pre-populated with their current values.
<p>
<dt><b>Save</b>
<dd>
Saves any changes made to the recording rule list.
<p>
<dt><b>Undo</b>
<dd>
Undoes any changes made to the recording rules list (any changed fields will be marked with a small red triangle).
<p>
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<br><br>
<dl>
<dt><b>Enabled</b>
<dd>
Check or clear this box to enable or disable this rule.
<p>
<dt><b>Name</b>
<dd>
The name you've given to the rule, e.g. 'Evening cartoons for the children'.
<p>
<dt><b>Directory</b>
<dd>
When specified, this setting overrides the subdirectory rules specified by the DVR configuration and puts all recordings done by this entry into the specified subdirectory. Useful for e.g. recording multiple different news broadcasts into one common subdirectory called "News".
<p>
<dt><b>Title</b>
<dd>
The title is used in the filename that is created for the recording
<br>
<br>
The default format string suggests Time-[date]_[time]:
<br>
<br>
The escape-codes use <a href="http://man7.org/linux/man-pages/man3/strftime.3.html">strftime</a> format. Examples:
<br>
%F The date in ISO-format (e.g. 2015-02-28)
<br>
%R The time in 24h HH:MM format (e.g. 19:45)
<br>
%x The date, formatted according to your locale settings
<p>
<dt><b>Channel</b>
<dd>
The channel on which this rule applies, i.e. the channel you're aiming to record.
<p>
<dt><b>Week Days</b>
<dd>
On which specific days of the week you wish this rule to be active (e.g. only record channel XXX at xx:yy on Saturdays and Sundays).
<p>
<dt><b>Start</b>
<dd>
Start recording at this time.
<p>
<dt><b>Stop</b>
<dd>
Stop recording at this time.
<p>
<dt><b>Priority</b>
<dd>
The priority of any recordings set because of this rule: important, high, normal, low, unimportant.
<p>
<dt><b>DVR Configuration</b>
<dd>
The DVR configuration (e.g. extra start/stop time, post-processing rules) to be used for any recordings set because of this rule.
<p>
<dt><b>Comment</b>
<dd>
A free-text comment. Not used otherwise.
<p>
</div>

103
docs/html/dvr_upcoming.html Normal file
View file

@ -0,0 +1,103 @@
<div class="hts-doc-text">
This tab show your all upcoming/current recordings.
<p>
<img src="docresources/upcomingrecordings1.png">
</p>
<p>
<br>
<hr>
<b>Buttons</b>
<hr>
Buttons have the following functions:
<br><br>
<dl>
<dt><b>Add</b>
<dd>
Add and configure a recording event by hand as opposed to choosing something from the EPG. This is useful if you wish to record something that isn't yet in the EPG, or record at a particular time that perhaps spans several EPG events.
<p>
<dt><b>Delete</b>
<dd>
If clicked delete selected upcoming/current recordings you delete recordings. Before deleted show message: Do you really want to delete the selection ? Answer Yes or No.
<p>
<dt><b>Abort</b>
<dd>
Abort an already-underway recording. Note that this does not remove the (partial) recording file from disk.
<p>
<dt><b>Edit</b>
<dd>
Manually edit an already-scheduled recording event. This uses the same fields as <b>Add</b>, but they're obviously pre-populated with their current values.
<p>
<dt><b>Save</b>
<dd>
Saves any changes made to the recording list.
<p>
<dt><b>Undo</b>
<dd>
Undoes any changes made to the recording list.
<p>
</dl>
<p>
<br>
<hr>
<b>Columns</b>
<hr>
The columns have the following functions:
<br><br>
<dl>
<dt><b>Details</b>
<dd>
Shows the status of the recording event:<br>
<br>
<b>Clock</b> - the recording is scheduled (upcoming).<br>
<br>
<b>Record symbol (red circle)</b> - the recording is active and underway (current).<br>
<br>
<b>InInfo</b> - displays detailed information about the selected recording (upcoming or current).<br>
<p>
<img src="docresources/upcomingrecordings2.png">
<p>
<dt><b>Title</b>
<dd>
The title (name) of the recording. While this is copied from the EPG when you create a recording, it's not used to match the event itself and is thus used here as the name of the event (see also: adding an event manually with the <b>Add</b> button).
<p>
<dt><b>Episode</b>
<dd>
The episode number of the recording (whether this is available depends on your broadcaster and/or EPG data source).
<p>
<dt><b>Priority</b>
<dd>
The priority of the recording: Not set, Important, High, Normal, Low, Unimportant.
<br>
If there is a clash, more important recordings will take priority over less important ones.
<p>
<dt><b>Scheduled Start Time</b>
<dd>
The date and time when the scheduled recording will start. Note that this includes any extra time defined in the recording profile (e.g. "start two minutes earlier than the EPG start time").
<p>
<dt><b>Scheduled Stop Time</b>
<dd>
The date and time when the scheduled recording will stop. Note that this includes any extra time defined in the recording profile (e.g. "finish recording five minutes after the EPG stop time").
<p>
<dt><b>Duration</b>
<dd>
The total duration of the scheduled recording, including any extra time before or after.
<p>
<dt><b>Channel Name</b>
<dd>
The channel to be recorded.
<p>
<dt><b>Creator</b>
<dd>
The user who created the recording or the auto-recording source and IP address if scheduled by a matching rule.
<p>
<dt><b>DVR Configuration</b>
<dd>
The DVR configuration to be used for this recording.
<p>
<dt><b>Schedule Status</b>
<dd>
The status of the recording(scheduled or recording).
<p>
</div>

View file

@ -1,27 +1,45 @@
<div class="hts-doc-text">
The DVR log is split into a series of paged grids:
<p></p>
<ul>
<li>Upcoming Recordings - stuff scheduled to be recorded in the future
<li>Finished Recordings - stuff that has succesfully finished recording
<li>Failed Recordings - stuff that failed to record
</ul>
<li><b>Upcoming Recordings</b> - events that are scheduled to be recorded in the future</li>
<img src="docresources/dvrlog.png">
<li><b>Finished Recordings</b> - events that have succesfully finished recording</li>
<img src="docresources/dvrlog2.png">
<p>
Use the bottom toolbar (not displayed in this manual) to navigate
between pages in the grid.
<img src="docresources/dvrlog.png">
Once the recording is completed there will be a clickable link to a playlist
for the recorded file (XSPF or M3U as per your startup options) so you can watch
it.</p>
<li><b>Failed Recordings</b> - events that failed to record</li>
<img src="docresources/dvrlog3.png">
</ul>
<p>
Use the bottom toolbar to navigate between pages in the grid.</p>
<img src="docresources/dvrlog4.png">
<p>Note that the columns are sortable, but only the current view will be sorted (by
default, this will be the first page of the most recent events). Select more events
per page if you want to sort a longer selection.</p>
<p>
To see more details about a recorded event, just click on it and a pop
up will appear:
<p>
up will appear:</p>
<p></p>
<img src="docresources/dvrlogentry.png">
<p></p>
<p>
In this pop up you can cancel a scheduled recording or abort a
recording in progress. To close the pop up, just close it with the
[X] window button.
<p>
Once the recording is completed there will be a clickable link to the
recorded matroska file so you can download it directly from the
interface.
[X] window button.</p>
</div>

View file

@ -1,95 +1,131 @@
<div class="hts-doc-text">
Tvheadend has a built in Electronic Program Guide. The EPG is an in memory
<p>Tvheadend has a built-in Electronic Program Guide. The EPG is an in-memory
database populated with all the information about events received from
the DVB networks or from XMLTV.
<p>
The EPG tab displays a filterable paged grid containing all the events
sorted based on start time.
the DVB networks over-the-air or from external grabbers such as XMLTV.</p>
<p></p>
<p>The EPG tab displays a filterable grid containing all events,
sorted based on start time.</p>
<img src="docresources/epg.png">
<p>
<dl>
<dt>Filtering (or searching)
<dd>
In the EPG top tool bar you can access four input fields.
<p></p>
<hr>
<b>Filtering (or searching)</b>
<hr>
<p>In the EPG top tool bar you can access five input fields.
These are used to filter/search for events. The form uses implicit AND
between the input fields. This means that all filters must match
for an event to be displayed.
for an event to be displayed.</p>
<dl>
<dt>[Search title...]
<dd>
Filter on the event title. The filter uses case insensitive regular
expression. If you don't know what a regular expression is this means
that you can type just parts of the title and filter on that too.
(No need for exact matching).
<dt>[Filter channel...]
Only display events that match the given title. The filter uses case-insensitive
regular expressions. If you don't know what a regular expression is, this simply
means that you can type just parts of the title and filter on that - there's no need
for full, exact matching. If the fulltext checkbox is checked, the title
text is matched against title, subtitle, summary and description.</dd>
<dt>[Filter channel...]</dt>
<dd>
Only display events from the selected channel. Channels in the drop down are
ordered by channel number and can be filtered (by name) by typing in the box.
<dt>[Filter tag...]
ordered by channel number and can be filtered (by name) by typing in the box.</dd>
<dt>[Filter tag...]</dt>
<dd>
Only display events from the channels which are included in the selected tag.
Tags are used for grouping channels and is configured by the administrator.
<dt>[Filter content type...]
Only display events from channels which are included in the selected tag.
Tags are used for grouping channels together - such as 'Radio' or 'HDTV' - and are
configured by the administrator. You can start typing a tag name to filter the list.</dd>
<dt>[Filter content type...]</dt>
<dd>
Most DVB networks classify their events into content groups. This field
allows you to filter based on content type.
Only display events that match the given content type tag. Most DVB networks
classify their events into content groups. This field allows you to filter based
on content type (e.g. "Sports" or "Game Show"). Supported tags are determined by
your broadcaster. Again, simply start typing to filter the entries if you have a
long list to choose from.</dd>
<dt>[Filter duration...]</dt>
<dd>
Only display events that fall between the given minimum and maximum durations.
This allows you to filter for or against, say, a daily broadcast and a weekly omnibus
edition of a programme, or only look for short news bulletins and not the 24-hour
rolling broadcasts.</dd>
<dd>&nbsp;</dd>
<dd>Options are:</dd>
<table class="hts-doc-text" border="0">
<tr><td>00:00:01 to 00:15:00 - for very short news bulletins, children's programmes, etc.</td></tr>
<tr><td>00:15:01 to 00:30:00 - for short programmes, e.g. daily soap operas</td></tr>
<tr><td>00:30:01 to 01:30:00 - for medium-length programmes, e.g. documentaries</td></tr>
<tr><td>01:30:01 to 03:00:00 - for longer programmes, e.g. films</td></tr>
<tr><td>03:00:00 to no maximum - for very long programmes, e.g. major sporting events</td></tr>
</table>
</dl>
Thus, if you only would like to browse Movies from your HD-channels you
would select 'HDTV' in the [Filter tag...]-field, and select
'Movie / Drama' in the [Only include content...]-field.
<p>
Notice that you don't have to press a 'Search' button, the grid immediately
updates itself as you change the filters.
<p>
If you would like to clear all filters, just press the [Reset] button.
<dt>Paging
<p>So, if you only want to see Movies from your available HD channels, you
would select 'HDTV' in the <i>[Filter tag...]</i> field, and select
'Movie / Drama' in the <i>[Filter content type...]</i> field. If you wish, you
could then further limit the search to programmes of between 90 minutes and 3 hours by
selecting '01:30:01 to 03:00:00' in the <i>[Filter duration...]</i> field.</p>
<p></p>
<p>Note that you don't have to press a 'Search' button: the grid immediately
updates itself as you change the filters.</p>
<p></p>
<p>You can clear an individual filter by simply deleting its contents, or by selecting
<i>'(Clear filter)'</i> as appropriate on all except the title filter. If you want to
clear all filters, just press the <i>[Reset All]</i> button.</p>
<br>&nbsp;</br>
<dd>
In large installations with many channels and full EPG feed there could be
tens of thousands of events in the database.
Therefore the EPG display employs a paging bar at the bottom of the grid.
Use it to browse backwards and forwards in the EPG. It also displays the
total amount of events matched by the current query.
<hr>
<b>Event details and recording</b>
<hr>
<dt>Event details and recording
<dd>
If you click on a single event, a popup will display detailed information
about the event. It also allows the user to schedule the event for recording
by clicking on the [Record program] button.
<p>If you click on a single event, a popup will display detailed information
about the event. It also allows you to schedule the event for recording
by clicking on the <i>[Record program]</i> button.</p>
<p>
For EPG providers that supply series link information there will also be a
[Record series] button that will record all entries in the series.
<i>[Record series]</i> button that will record all entries in the series.</p>
<p>
For events without any series link information, a [Autorec] button will be
provided to create a pseudo series link using the Autorec feature.
<p>
<img src="docresources/epg2.png">
<p>
To close the popup, just close it with the [X] window button.
The popup is not modal and you can open as many detailed information popups
as you want.
For events without any series link information, an <i>[Autorec]</i> button will be
provided to create a pseudo-series link using the autorec feature.</p>
<p></p>
<img src="docresources/epg2.png"> <img src="docresources/epg3.png">
<p></p>
<p>If you schedule any kind of recording from this point, you can choose a specific
DVR profile that will apply to the recording or autorec rule. This will normally show
as <i>(default)</i>, but you can define different profiles in the <b>Configuration ->
Recording -> Digital Video Recorder</b> tab. This allows you to set, for example, more post-
broadcast padding for a channel that always runs late, or perhaps define a different
post-processing command to strip adverts out on a commercial channel.</p>
<p>You will also see a <i>Search IMDB</i> link to look for the programme by name on
imdb.com, and a <i>Play</i> link to watch a programme that's already in progress. This
second link downloads a playlist file (XSPF or M3U depending on your startup options);
if your system is configured for it, this will automatically launch an appropriate
player, otherwise you will need to manually open the playlist to start watching (normally a
double-click on the downloaded file).</p>
<p></p>
<p>To close the popup, just click on the [X] window button.
The popup isn't modal, so you don't have to close it before doing something else,
and you can open as many detailed information popups as you want.</p>
<br>&nbsp;</br>
<dt>Autorecordings
<dd>
Should you wish to record all events matching a specific query. (Record
your favorite TV-show, etc) you can press the [Create Autorec] button
in the top toolbar.
<p>
A popup with details about the to-be-created autorecording rule needs to
be confirmed before the rule takes effect.
<p>
<hr>
<b>Autorecordings</b>
<hr>
<p>Should you wish to record all events matching a specific query (to record
your favourite show every week, for example) you can press the <i>[Create AutoRec]</i>
button in the top toolbar.</p>
<p></p>
<p>A popup with details about the to-be-created autorecording rule needs to
be confirmed before the rule takes effect.</p>
<p></p>
<img src="docresources/autorecpopup.png">
<p>
The autorecordings can later be changed/deleted in under the
'Digital Video Recorder'-tag. Use that editor if you temporary want
to disable an autorecording or make adjustments, etc.
<p></p>
<p>You can change or delete the autorec rules in the
<b>Digital Video Recorder</b> tab. Use that editor if you temporarily want
to disable an autorecording or make adjustments to the channel, tag, or similar.</p>
<br>&nbsp;</br>
<dt>Watch TV
<dd>
If you want to watch live TV in the web UI, the [Watch TV] button will pop-up
<hr>
<b>Watch TV</b>
<hr>
<p>If you want to watch live TV in the web UI, the <i>[Watch TV]</i> button will pop up
a VLC plugin window (if you don't have the plugin installed a direct URL should be
provided to load into your preferred media player).
</dl>
provided to load into your preferred media player).</p>
</div>

View file

@ -2,12 +2,12 @@
<dl>
<dt>Why does Tvheadend deliver data over TCP to Showtime? I thought it was
<dt>Why does Tvheadend deliver data over TCP to Movian? I thought it was
bad to use TCP for realtime sensitive traffic?
<dd>
'HTSP' - the protocol used for streaming TV, sending meta information
updates and RPC between Tvheadend and Showtime uses a transmission
updates and RPC between Tvheadend and Movian uses a transmission
scheduler with multiple queues on the Tvheadend side. This means that
Tvheadend can measure the available bandwidth between itself and the
mediaplayer and when congestion happens it's even capable of dropping
@ -15,7 +15,7 @@
links and DSL connections with zero picture/audio artifacts.
<p>
It's possible to get view drop statistics and bitrates directly in
Showtime. (Open the menu when watching a TV-channel and switch on
Movian. (Open the menu when watching a TV-channel and switch on
'Detailed Information')
</div>

View file

@ -7,7 +7,7 @@
<dt>Input sources
<dl>
<dt>DVB-T, DVB-C, DVB-S, DVB-S2 and ATSC.
<dt>DVB-T, DVB-C, DVB-S, DVB-S2, ATSC and SAT>IP.
<dd>
Multiple adapters are supported.
Each adapter can receive all programs available on the currently
@ -20,13 +20,17 @@
</dd>
<dt>Analog TV
<dd>
Using the Video4Linux2 API. Currently, only PAL is supported.
The IPTV extension URL - pipe:// allow to process any MPEG-TS input.
FFMPEG or LIBAV library can be used to produce analog to digital
conversion.
</dd>
</dl>
<dt>Output targets
<dl>
<dt>HTSP (Home TV Streaming Protocol), supported by Showtime Media player and <a href="http://www.xbmc.org/">XBMC</a>
<dt>HTTP (Web Protocol), supported by <a href="http://www.videolan.org/vlc/">VLC</a>, <a href="http://www.mplayerhq.hu">MPlayer</a>
<dt>HTSP (Home TV Streaming Protocol), supported by <a href="http://movian.tv">Movian Media player</a> and <a href="http://kodi.tv/">Kodi</a>
<dt>SAT>IP Server
<dt>The Built-in Digital Video Recorder
</dl>
@ -40,7 +44,7 @@
All setup and configuration is done from the built in web user interface.
Even so, all settings are stored in human readable text files.
<dt>Fully integrated with HTS Showtime Media player.
<dt>Fully integrated with HTS Movian Media player or Kodi HTS PVR addon.
<dd>
All channel data and their grouping, EPG and TV streaming is conducted over a
single TCP connection.
@ -79,6 +83,10 @@
<dd>
Requires a card server (newcamd and capmt protocol is supported).
<dt>Hardware based CSA descrambling
<dd>
Requires the standard dvben50221 linuxdvb library.
<dt>Internationalization
<dd>
All text is encoded in UTF-8 to provide full international support. All major

32
rpm/Makefile Normal file
View file

@ -0,0 +1,32 @@
#
# RPM build
# Copyright (C) 2014 Jaroslav Kysela
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
include $(dir $(lastword $(MAKEFILE_LIST)))../.config.mk
COMMIT ?= $(shell git rev-parse HEAD)
COMMIT1 = $(shell git rev-parse $(COMMIT))
VERSION = $(shell cd .. && git describe --match "v*" $(COMMIT1) | sed -e 's/-/./g' -e 's/^v//g' )
tvheadend.spec: tvheadend.spec.in
@sed -e 's/@VERSION@/$(VERSION)/g' \
-e 's/@COMMIT@/$(COMMIT1)/g' \
$< > $@
build: tvheadend.spec
spectool --get-files --sourcedir tvheadend.spec
rpmbuild -ba tvheadend.spec

14
rpm/tvheadend.service Normal file
View file

@ -0,0 +1,14 @@
[Unit]
Description=Tvheadend - a TV streaming server and DVR
After=syslog.target network.target auditd.service
[Service]
EnvironmentFile=/etc/sysconfig/tvheadend
ExecStart=/usr/bin/tvheadend -f -p /var/run/tvheadend.pid $OPTIONS
PIDFile=/var/run/tvheadend.pid
Type=forking
Restart=on-failure
RestartSec=54s
[Install]
WantedBy=multi-user.target

91
rpm/tvheadend.spec.in Normal file
View file

@ -0,0 +1,91 @@
%global commit @COMMIT@
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Summary: Tvheadend - a TV streaming server and DVR
Name: tvheadend
Version: @VERSION@
Release: 1
License: GPLv3
Group: Applications/Multimedia
URL: http://tvheadend.org
Source: https://github.com/tvheadend/tvheadend/archive/%{commit}/tvheadend-%{commit}.tar.gz
#Patch999: test.patch
BuildRequires: systemd-units >= 1
BuildRequires: dbus-devel
BuildRequires: avahi-libs
BuildRequires: openssl-devel
BuildRequires: git wget
Requires: systemd-units >= 1
%description
Tvheadend is a TV streaming server with DVR for Linux supporting
DVB, ATSC, IPTV, SAT>IP as input sources. Can be used as a backend
to Showtime, XBMC and various other clients.
%prep
%setup -q -n tvheadend-%{commit}
#%patch999 -p1 -b .test
%build
echo %{version} > %{_builddir}/%{buildsubdir}/rpm/version
%ifarch %arm
%configure --disable-lockowner --enable-bundle --disable-libffmpeg_static
%else
%configure --disable-lockowner --enable-bundle --enable-libffmpeg_static
%endif
%{__make}
%install
# binary
mkdir -p -m755 %{buildroot}%{_bindir}
install -p -m 755 build.linux/tvheadend %{buildroot}%{_bindir}
# systemd
mkdir -p -m755 %{buildroot}%{_sysconfdir}/sysconfig
install -p -m 644 rpm/tvheadend.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/tvheadend
mkdir -p -m755 %{buildroot}%{_unitdir}
install -p -m 644 rpm/tvheadend.service %{buildroot}%{_unitdir}
%pre
getent group tvheadend >/dev/null || groupadd -f -g 283 -r tvheadend
if ! getent passwd tvheadend > /dev/null ; then
if ! getent passwd 283 > /dev/null ; then
useradd -r -l -u 283 -g tvheadend -d /home/tvheadend -s /sbin/nologin -c "Tvheadend TV server" tvheadend
else
useradd -r -l -g tvheadend -d /home/tvheadend -s /sbin/nologin -c "Tvheadend TV server" tvheadend
fi
fi
if ! test -d /home/tvheadend ; then
mkdir -m 0755 /home/tvheadend || exit 1
chown tvheadend.tvheadend /home/tvheadend || exit 1
fi
exit 0
%post
%systemd_post tvheadend.service
%postun
%systemd_postun_with_restart tvheadend.service
%files
%{_bindir}/*
%{_sysconfdir}/sysconfig/*
%{_unitdir}/*
%changelog
* Wed Mar 25 2015 Bob Lightfoot <boblfoot@gmail.com> 3.9-2658-gb427d7e
- Patching rpm spec file so the arm architecture builds properly
* Mon Oct 13 2014 Jaroslav Kysela <perex@perex.cz> 3.9-1806-g6f3324e
- RPM: Typo fixes
* Mon Oct 13 2014 Jaroslav Kysela <perex@perex.cz> 3.9-1805-g14a7de8
- RPM build - config fixes
* Mon Oct 13 2014 Jaroslav Kysela <perex@perex.cz> 3.9-1803-g392dec0
- Add basic RPM build support
~

3
rpm/tvheadend.sysconfig Normal file
View file

@ -0,0 +1,3 @@
# Configuration file for the tvheadend service.
OPTIONS="-c /home/tvheadend/config -u tvheadend -g tvheadend -6 --http_port 9981 --htsp_port 9982"

File diff suppressed because it is too large Load diff

View file

@ -19,19 +19,24 @@
#ifndef ACCESS_H_
#define ACCESS_H_
#include "idnode.h"
#include "htsmsg.h"
struct profile;
struct dvr_config;
struct channel_tag;
typedef struct access_ipmask {
TAILQ_ENTRY(access_ipmask) ai_link;
int ai_ipv6;
int ai_family;
struct in_addr ai_ip;
struct in6_addr ai_ip6;
int ai_prefixlen;
uint32_t ai_network;
uint32_t ai_netmask;
uint32_t ai_network;
} access_ipmask_t;
TAILQ_HEAD(access_entry_queue, access_entry);
@ -39,21 +44,62 @@ TAILQ_HEAD(access_entry_queue, access_entry);
extern struct access_entry_queue access_entries;
typedef struct access_entry {
char *ae_id;
idnode_t ae_id;
TAILQ_ENTRY(access_entry) ae_link;
char *ae_username;
char *ae_password;
char *ae_password2;
char *ae_comment;
int ae_index;
int ae_enabled;
int ae_tagonly;
int ae_streaming;
int ae_adv_streaming;
int ae_htsp_streaming;
struct profile *ae_profile;
LIST_ENTRY(access_entry) ae_profile_link;
uint32_t ae_conn_limit;
int ae_dvr;
int ae_htsp_dvr;
int ae_all_dvr;
int ae_all_rw_dvr;
struct dvr_config *ae_dvr_config;
LIST_ENTRY(access_entry) ae_dvr_config_link;
int ae_webui;
int ae_admin;
uint64_t ae_chmin;
uint64_t ae_chmax;
struct channel_tag *ae_chtag;
LIST_ENTRY(access_entry) ae_channel_tag_link;
uint32_t ae_rights;
TAILQ_HEAD(, access_ipmask) ae_ipmasks;
} access_entry_t;
extern const idclass_t access_entry_class;
typedef struct access {
char *aa_username;
char *aa_representative;
uint32_t aa_rights;
htsmsg_t *aa_profiles;
htsmsg_t *aa_dvrcfgs;
uint64_t aa_chmin;
uint64_t aa_chmax;
htsmsg_t *aa_chtags;
int aa_match;
uint32_t aa_conn_limit;
} access_t;
TAILQ_HEAD(access_ticket_queue, access_ticket);
extern struct access_ticket_queue access_tickets;
@ -65,27 +111,49 @@ typedef struct access_ticket {
gtimer_t at_timer;
char *at_resource;
access_t *at_access;
} access_ticket_t;
#define ACCESS_ANONYMOUS 0x0
#define ACCESS_STREAMING 0x1
#define ACCESS_WEB_INTERFACE 0x2
#define ACCESS_RECORDER 0x4
#define ACCESS_RECORDER_ALL 0x8
#define ACCESS_ADMIN 0x10
#define ACCESS_FULL 0x3f
#define ACCESS_ANONYMOUS 0
#define ACCESS_STREAMING (1<<0)
#define ACCESS_ADVANCED_STREAMING (1<<1)
#define ACCESS_HTSP_STREAMING (1<<2)
#define ACCESS_WEB_INTERFACE (1<<3)
#define ACCESS_RECORDER (1<<4)
#define ACCESS_HTSP_RECORDER (1<<5)
#define ACCESS_ALL_RECORDER (1<<6)
#define ACCESS_ADMIN (1<<7)
#define ACCESS_ALL_RW_RECORDER (1<<8)
#define ACCESS_OR (1<<30)
#define ACCESS_FULL \
(ACCESS_STREAMING | ACCESS_ADVANCED_STREAMING | \
ACCESS_HTSP_STREAMING | ACCESS_WEB_INTERFACE | \
ACCESS_RECORDER | ACCESS_HTSP_RECORDER | \
ACCESS_ALL_RECORDER | ACCESS_ADMIN | ACCESS_ALL_RW_RECORDER)
/**
* Create a new ticket for the requested resource and generate a id for it
*/
const char* access_ticket_create(const char *resource);
const char* access_ticket_create(const char *resource, access_t *a);
/**
* Verifies that a given ticket id matches a resource
*/
int access_ticket_verify(const char *id, const char *resource);
access_t *access_ticket_verify2(const char *id, const char *resource);
int access_ticket_delete(const char *ticket_id);
/**
* Free the access structure
*/
void access_destroy(access_t *a);
/**
* Copy the access structure
*/
access_t *access_copy(access_t *src);
/**
* Verifies that the given user in combination with the source ip
* complies with the requested mask
@ -95,18 +163,53 @@ int access_ticket_delete(const char *ticket_id);
int access_verify(const char *username, const char *password,
struct sockaddr *src, uint32_t mask);
static inline int access_verify2(access_t *a, uint32_t mask)
{ return (mask & ACCESS_OR) ?
((a->aa_rights & mask) ? 0 : -1) :
((a->aa_rights & mask) == mask ? 0 : -1); }
int access_verify_list(htsmsg_t *list, const char *item);
/**
*
* Get the access structure
*/
uint32_t access_get_hashed(const char *username, const uint8_t digest[20],
const uint8_t *challenge, struct sockaddr *src,
int *entrymatch);
access_t *access_get(const char *username, const char *password,
struct sockaddr *src);
/**
*
*/
uint32_t access_get_by_addr(struct sockaddr *src);
access_t *
access_get_hashed(const char *username, const uint8_t digest[20],
const uint8_t *challenge, struct sockaddr *src);
/**
*
*/
access_t *
access_get_by_addr(struct sockaddr *src);
/**
*
*/
access_entry_t *
access_entry_create(const char *uuid, htsmsg_t *conf);
/**
*
*/
void
access_entry_save(access_entry_t *ae);
/**
*
*/
void
access_destroy_by_profile(struct profile *pro, int delconf);
void
access_destroy_by_dvr_config(struct dvr_config *cfg, int delconf);
void
access_destroy_by_channel_tag(struct channel_tag *ct, int delconf);
/**
*
@ -114,9 +217,4 @@ uint32_t access_get_by_addr(struct sockaddr *src);
void access_init(int createdefault, int noacl);
void access_done(void);
/**
*
*/
uint32_t access_tag_only(const char *username);
#endif /* ACCESS_H_ */

View file

@ -61,7 +61,8 @@ api_register_all ( const api_hook_t *hooks )
}
int
api_exec ( const char *subsystem, htsmsg_t *args, htsmsg_t **resp )
api_exec ( access_t *perm, const char *subsystem,
htsmsg_t *args, htsmsg_t **resp )
{
api_hook_t h;
api_link_t *ah, skel;
@ -83,6 +84,9 @@ api_exec ( const char *subsystem, htsmsg_t *args, htsmsg_t **resp )
return ENOSYS; // TODO: is this really the right error code?
}
if (access_verify2(perm, ah->hook->ah_access))
return EPERM;
/* Extract method */
op = htsmsg_get_str(args, "method");
if (!op)
@ -90,12 +94,12 @@ api_exec ( const char *subsystem, htsmsg_t *args, htsmsg_t **resp )
// Note: this is not required (so no final validation)
/* Execute */
return ah->hook->ah_callback(ah->hook->ah_opaque, op, args, resp);
return ah->hook->ah_callback(perm, ah->hook->ah_opaque, op, args, resp);
}
static int
api_serverinfo
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
*resp = htsmsg_create_map();
htsmsg_add_str(*resp, "sw_version", tvheadend_version);
@ -121,12 +125,17 @@ void api_init ( void )
api_mpegts_init();
api_service_init();
api_channel_init();
api_bouquet_init();
api_epg_init();
api_epggrab_init();
api_status_init();
api_imagecache_init();
api_esfilter_init();
api_intlconv_init();
api_access_init();
api_dvr_init();
api_caclient_init();
api_profile_init();
}
void api_done ( void )

View file

@ -23,15 +23,17 @@
#include "htsmsg.h"
#include "idnode.h"
#include "redblack.h"
#include "access.h"
#define TVH_API_VERSION 12
#define TVH_API_VERSION 15
/*
* Command hook
*/
typedef int (*api_callback_t)
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
( access_t *perm, void *opaque, const char *op,
htsmsg_t *args, htsmsg_t **resp );
typedef struct api_hook
{
@ -50,7 +52,8 @@ void api_register_all ( const api_hook_t *hooks );
/*
* Execute
*/
int api_exec ( const char *subsystem, htsmsg_t *args, htsmsg_t **resp );
int api_exec ( access_t *perm, const char *subsystem,
htsmsg_t *args, htsmsg_t **resp );
/*
* Initialise
@ -59,9 +62,9 @@ void api_init ( void );
void api_done ( void );
void api_idnode_init ( void );
void api_input_init ( void );
void api_input_satip_init ( void );
void api_service_init ( void );
void api_channel_init ( void );
void api_bouquet_init ( void );
void api_mpegts_init ( void );
void api_epg_init ( void );
void api_epggrab_init ( void );
@ -69,35 +72,41 @@ void api_status_init ( void );
void api_imagecache_init ( void );
void api_esfilter_init ( void );
void api_intlconv_init ( void );
void api_access_init ( void );
void api_dvr_init ( void );
void api_caclient_init ( void );
void api_profile_init ( void );
/*
* IDnode
*/
typedef struct api_idnode_grid_conf
{
int tindex;
int start;
int limit;
uint32_t start;
uint32_t limit;
idnode_filter_t filter;
idnode_sort_t sort;
} api_idnode_grid_conf_t;
typedef void (*api_idnode_grid_callback_t)
(idnode_set_t*, api_idnode_grid_conf_t*, htsmsg_t *args);
(access_t *perm, idnode_set_t*, api_idnode_grid_conf_t*, htsmsg_t *args);
typedef idnode_set_t *(*api_idnode_tree_callback_t)
(void);
(access_t *perm);
int api_idnode_grid
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
int api_idnode_class
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
int api_idnode_tree
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
int api_idnode_load_by_class
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp );
int api_idnode_handler
( access_t *perm, htsmsg_t *args, htsmsg_t **resp, void (*handler)(access_t *perm, idnode_t *in) );
/*
* Service mapper

63
src/api/api_access.c Normal file
View file

@ -0,0 +1,63 @@
/*
* API - access control
*
* Copyright (C) 2014 Jaroslav Kysela
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tvheadend.h"
#include "access.h"
#include "api.h"
static void
api_access_entry_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
access_entry_t *ae;
TAILQ_FOREACH(ae, &access_entries, ae_link)
idnode_set_add(ins, (idnode_t*)ae, &conf->filter);
}
static int
api_access_entry_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *conf;
access_entry_t *ae;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
pthread_mutex_lock(&global_lock);
if ((ae = access_entry_create(NULL, conf)) != NULL)
access_entry_save(ae);
pthread_mutex_unlock(&global_lock);
return 0;
}
void api_access_init ( void )
{
static api_hook_t ah[] = {
{ "access/entry/class", ACCESS_ADMIN, api_idnode_class, (void*)&access_entry_class },
{ "access/entry/grid", ACCESS_ADMIN, api_idnode_grid, api_access_entry_grid },
{ "access/entry/create", ACCESS_ADMIN, api_access_entry_create, NULL },
{ NULL },
};
api_register_all(ah);
}

93
src/api/api_bouquet.c Normal file
View file

@ -0,0 +1,93 @@
/*
* API - bouquet calls
*
* Copyright (C) 2014 Jaroslav Kysela
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __TVH_API_BOUQUET_H__
#define __TVH_API_BOUQUET_H__
#include "tvheadend.h"
#include "bouquet.h"
#include "access.h"
#include "api.h"
static int
api_bouquet_list
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
bouquet_t *bq;
htsmsg_t *l, *e;
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
RB_FOREACH(bq, &bouquets, bq_link) {
e = htsmsg_create_map();
htsmsg_add_str(e, "key", idnode_uuid_as_str(&bq->bq_id));
htsmsg_add_str(e, "val", bq->bq_name ?: "");
htsmsg_add_msg(l, NULL, e);
}
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static void
api_bouquet_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf )
{
bouquet_t *bq;
RB_FOREACH(bq, &bouquets, bq_link)
idnode_set_add(ins, (idnode_t*)bq, &conf->filter);
}
static int
api_bouquet_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *conf;
bouquet_t *bq;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
pthread_mutex_lock(&global_lock);
bq = bouquet_create(NULL, conf, NULL, NULL);
if (bq)
bouquet_save(bq, 0);
pthread_mutex_unlock(&global_lock);
return 0;
}
void api_bouquet_init ( void )
{
static api_hook_t ah[] = {
{ "bouquet/list", ACCESS_ADMIN, api_bouquet_list, NULL },
{ "bouquet/class", ACCESS_ADMIN, api_idnode_class, (void*)&bouquet_class },
{ "bouquet/grid", ACCESS_ADMIN, api_idnode_grid, api_bouquet_grid },
{ "bouquet/create", ACCESS_ADMIN, api_bouquet_create, NULL },
{ NULL },
};
api_register_all(ah);
}
#endif /* __TVH_API_BOUQUET_H__ */

108
src/api/api_caclient.c Normal file
View file

@ -0,0 +1,108 @@
/*
* tvheadend - API access to Conditional Access Clients
*
* Copyright (C) 2014 Jaroslav Kysela
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tvheadend.h"
#include "access.h"
#include "htsmsg.h"
#include "api.h"
#include "descrambler/caclient.h"
/*
*
*/
static int
api_caclient_list
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
caclient_t *cac;
htsmsg_t *l, *e;
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
TAILQ_FOREACH(cac, &caclients, cac_link) {
e = htsmsg_create_map();
htsmsg_add_str(e, "uuid", idnode_uuid_as_str(&cac->cac_id));
htsmsg_add_str(e, "title", idnode_get_title(&cac->cac_id));
htsmsg_add_str(e, "status", caclient_get_status(cac));
htsmsg_add_msg(l, NULL, e);
}
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static int
api_caclient_builders
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const idclass_t **r;
htsmsg_t *l, *e;
/* List of available builder classes */
l = htsmsg_create_list();
for (r = caclient_classes; *r; r++)
if ((e = idclass_serialize(*r)))
htsmsg_add_msg(l, NULL, e);
/* Output */
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static int
api_caclient_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err = 0;
const char *clazz;
htsmsg_t *conf;
if (!(clazz = htsmsg_get_str(args, "class")))
return EINVAL;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
htsmsg_set_str(conf, "class", clazz);
pthread_mutex_lock(&global_lock);
if (caclient_create(NULL, conf, 1) == NULL)
err = -EINVAL;
pthread_mutex_unlock(&global_lock);
return err;
}
/*
* Init
*/
void
api_caclient_init ( void )
{
static api_hook_t ah[] = {
{ "caclient/list", ACCESS_ADMIN, api_caclient_list, NULL },
{ "caclient/class", ACCESS_ADMIN, api_idnode_class, (void*)&caclient_class },
{ "caclient/builders", ACCESS_ADMIN, api_caclient_builders, NULL },
{ "caclient/create", ACCESS_ADMIN, api_caclient_create, NULL },
{ NULL },
};
api_register_all(ah);
}

View file

@ -17,29 +17,50 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __TVH_API_SERVICE_H__
#define __TVH_API_SERVICE_H__
#ifndef __TVH_API_CHANNEL_H__
#define __TVH_API_CHANNEL_H__
#include "tvheadend.h"
#include "channels.h"
#include "access.h"
#include "api.h"
static void
api_channel_key_val(htsmsg_t *dst, const char *key, const char *val)
{
htsmsg_t *e = htsmsg_create_map();
htsmsg_add_str(e, "key", key);
htsmsg_add_str(e, "val", val ?: "");
htsmsg_add_msg(dst, NULL, e);
}
static int
api_channel_is_all(access_t *perm, htsmsg_t *args)
{
return htsmsg_get_bool_or_default(args, "all", 0) &&
!access_verify2(perm, ACCESS_ADMIN);
}
// TODO: this will need converting to an idnode system
static int
api_channel_list
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
channel_t *ch;
htsmsg_t *l, *e;
htsmsg_t *l;
int cfg = api_channel_is_all(perm, args);
char buf[128];
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
CHANNEL_FOREACH(ch) {
e = htsmsg_create_map();
htsmsg_add_str(e, "key", idnode_uuid_as_str(&ch->ch_id));
htsmsg_add_str(e, "val", channel_get_name(ch));
htsmsg_add_msg(l, NULL, e);
if (!cfg && !channel_access(ch, perm, 0)) continue;
if (!ch->ch_enabled) {
snprintf(buf, sizeof(buf), "{%s}", channel_get_name(ch));
api_channel_key_val(l, idnode_uuid_as_str(&ch->ch_id), buf);
} else {
api_channel_key_val(l, idnode_uuid_as_str(&ch->ch_id), channel_get_name(ch));
}
}
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
@ -50,17 +71,19 @@ api_channel_list
static void
api_channel_grid
( idnode_set_t *ins, api_idnode_grid_conf_t *conf )
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
channel_t *ch;
int cfg = api_channel_is_all(perm, args);
CHANNEL_FOREACH(ch)
idnode_set_add(ins, (idnode_t*)ch, &conf->filter);
if (cfg || channel_access(ch, perm, 0))
idnode_set_add(ins, (idnode_t*)ch, &conf->filter);
}
static int
api_channel_create
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *conf;
channel_t *ch;
@ -78,27 +101,57 @@ api_channel_create
}
static int
api_channeltag_enum
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
api_channel_tag_list
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
channel_tag_t *ct;
htsmsg_t *l, *e;
int _enum = htsmsg_get_bool_or_default(args, "enum", 0);
htsmsg_t *l;
int cfg = api_channel_is_all(perm, args);
char buf[128];
if (_enum) {
l = htsmsg_create_list();
TAILQ_FOREACH(ct, &channel_tags, ct_link) {
e = htsmsg_create_map();
htsmsg_add_u32(e, "key", ct->ct_identifier);
htsmsg_add_str(e, "val", ct->ct_name);
htsmsg_add_msg(l, NULL, e);
l = htsmsg_create_list();
TAILQ_FOREACH(ct, &channel_tags, ct_link)
if (cfg || channel_tag_access(ct, perm, 0)) {
if (ct->ct_enabled) {
api_channel_key_val(l, idnode_uuid_as_str(&ct->ct_id), ct->ct_name);
} else {
snprintf(buf, sizeof(buf), "{%s}", ct->ct_name);
api_channel_key_val(l, idnode_uuid_as_str(&ct->ct_id), buf);
}
}
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
} else {
// TODO: support full listing v enum
}
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static void
api_channel_tag_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
channel_tag_t *ct;
int cfg = api_channel_is_all(perm, args);
TAILQ_FOREACH(ct, &channel_tags, ct_link)
if (cfg || channel_tag_access(ct, perm, 0))
idnode_set_add(ins, (idnode_t*)ct, &conf->filter);
}
static int
api_channel_tag_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *conf;
channel_tag_t *ct;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
pthread_mutex_lock(&global_lock);
ct = channel_tag_create(NULL, conf);
if (ct)
channel_tag_save(ct);
pthread_mutex_unlock(&global_lock);
return 0;
}
@ -110,7 +163,10 @@ void api_channel_init ( void )
{ "channel/list", ACCESS_ANONYMOUS, api_channel_list, NULL },
{ "channel/create", ACCESS_ADMIN, api_channel_create, NULL },
{ "channeltag/list", ACCESS_ANONYMOUS, api_channeltag_enum, NULL },
{ "channeltag/class",ACCESS_ANONYMOUS, api_idnode_class, (void*)&channel_tag_class },
{ "channeltag/grid", ACCESS_ANONYMOUS, api_idnode_grid, api_channel_tag_grid },
{ "channeltag/list", ACCESS_ANONYMOUS, api_channel_tag_list, NULL },
{ "channeltag/create", ACCESS_ADMIN, api_channel_tag_create, NULL },
{ NULL },
};
@ -119,4 +175,4 @@ void api_channel_init ( void )
}
#endif /* __TVH_API_IDNODE_H__ */
#endif /* __TVH_API_CHANNEL_H__ */

394
src/api/api_dvr.c Normal file
View file

@ -0,0 +1,394 @@
/*
* API - DVR
*
* Copyright (C) 2014 Jaroslav Kysela
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tvheadend.h"
#include "dvr/dvr.h"
#include "epg.h"
#include "api.h"
/*
*
*/
static void
api_dvr_config_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_config_t *cfg;
LIST_FOREACH(cfg, &dvrconfigs, config_link)
if (!idnode_perm((idnode_t *)cfg, perm, NULL))
idnode_set_add(ins, (idnode_t*)cfg, &conf->filter);
}
static int
api_dvr_config_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
dvr_config_t *cfg;
htsmsg_t *conf;
const char *s;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
if (!(s = htsmsg_get_str(conf, "name")))
return EINVAL;
if (s[0] == '\0')
return EINVAL;
pthread_mutex_lock(&global_lock);
if ((cfg = dvr_config_create(NULL, NULL, conf)))
dvr_config_save(cfg);
pthread_mutex_unlock(&global_lock);
return 0;
}
static int is_dvr_entry_finished(dvr_entry_t *entry)
{
dvr_entry_sched_state_t state = entry->de_sched_state;
return state == DVR_COMPLETED && !entry->de_last_error && dvr_get_filesize(entry) != -1;
}
static int is_dvr_entry_upcoming(dvr_entry_t *entry)
{
dvr_entry_sched_state_t state = entry->de_sched_state;
return state == DVR_RECORDING || state == DVR_SCHEDULED || state == DVR_NOSTATE;
}
static int is_dvr_entry_failed(dvr_entry_t *entry)
{
if (is_dvr_entry_finished(entry))
return 0;
if (is_dvr_entry_upcoming(entry))
return 0;
return 1;
}
static void
api_dvr_entry_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_entry_t *de;
LIST_FOREACH(de, &dvrentries, de_global_link)
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
}
static void
api_dvr_entry_grid_upcoming
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_entry_t *de;
LIST_FOREACH(de, &dvrentries, de_global_link)
if (is_dvr_entry_upcoming(de))
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
}
static void
api_dvr_entry_grid_finished
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_entry_t *de;
LIST_FOREACH(de, &dvrentries, de_global_link)
if (is_dvr_entry_finished(de))
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
}
static void
api_dvr_entry_grid_failed
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_entry_t *de;
LIST_FOREACH(de, &dvrentries, de_global_link)
if (is_dvr_entry_failed(de))
idnode_set_add(ins, (idnode_t*)de, &conf->filter);
}
static int
api_dvr_entry_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
dvr_entry_t *de;
dvr_config_t *cfg;
htsmsg_t *conf;
const char *s1;
int res = EPERM;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
pthread_mutex_lock(&global_lock);
s1 = htsmsg_get_str(conf, "config_name");
cfg = dvr_config_find_by_list(perm->aa_dvrcfgs, s1);
if (cfg) {
htsmsg_set_str(conf, "config_name", idnode_uuid_as_str(&cfg->dvr_id));
if (perm->aa_representative)
htsmsg_set_str(conf, "creator", perm->aa_representative);
if ((de = dvr_entry_create(NULL, conf)))
dvr_entry_save(de);
res = 0;
}
pthread_mutex_unlock(&global_lock);
return res;
}
static htsmsg_t *
api_dvr_entry_create_from_single(htsmsg_t *args)
{
htsmsg_t *entries, *m;
const char *s1, *s2, *s3;
if (!(s1 = htsmsg_get_str(args, "config_uuid")))
return NULL;
if (!(s2 = htsmsg_get_str(args, "event_id")))
return NULL;
s3 = htsmsg_get_str(args, "comment");
entries = htsmsg_create_list();
m = htsmsg_create_map();
htsmsg_add_str(m, "config_uuid", s1);
htsmsg_add_str(m, "event_id", s2);
if (s3)
htsmsg_add_str(m, "comment", s3);
htsmsg_add_msg(entries, NULL, m);
return entries;
}
static int
api_dvr_entry_create_by_event
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
dvr_entry_t *de;
const char *config_uuid, *comment;
epg_broadcast_t *e;
htsmsg_t *entries, *entries2 = NULL, *m;
htsmsg_field_t *f;
const char *s;
int count = 0;
if (!(entries = htsmsg_get_list(args, "entries"))) {
entries = entries2 = api_dvr_entry_create_from_single(args);
if (!entries)
return EINVAL;
}
HTSMSG_FOREACH(f, entries) {
if (!(m = htsmsg_get_map_by_field(f))) continue;
if (!(s = htsmsg_get_str(m, "event_id")))
continue;
config_uuid = htsmsg_get_str(m, "config_uuid");
comment = htsmsg_get_str(m, "comment");
pthread_mutex_lock(&global_lock);
if ((e = epg_broadcast_find_by_id(strtoll(s, NULL, 10)))) {
dvr_config_t *cfg = dvr_config_find_by_list(perm->aa_dvrcfgs, config_uuid);
if (cfg) {
de = dvr_entry_create_by_event(idnode_uuid_as_str(&cfg->dvr_id),
e, 0, 0,
perm->aa_username,
perm->aa_representative,
NULL, DVR_PRIO_NORMAL, 0, comment);
if (de)
dvr_entry_save(de);
}
}
pthread_mutex_unlock(&global_lock);
count++;
}
htsmsg_destroy(entries2);
return !count ? EINVAL : 0;
}
static void
api_dvr_cancel(access_t *perm, idnode_t *self)
{
dvr_entry_cancel((dvr_entry_t *)self);
}
static int
api_dvr_entry_cancel
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
return api_idnode_handler(perm, args, resp, api_dvr_cancel);
}
static void
api_dvr_autorec_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_autorec_entry_t *dae;
TAILQ_FOREACH(dae, &autorec_entries, dae_link)
idnode_set_add(ins, (idnode_t*)dae, &conf->filter);
}
static int
api_dvr_autorec_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *conf;
dvr_autorec_entry_t *dae;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
if (perm->aa_username)
htsmsg_set_str(conf, "owner", perm->aa_username);
if (perm->aa_representative)
htsmsg_set_str(conf, "creator", perm->aa_representative);
pthread_mutex_lock(&global_lock);
dae = dvr_autorec_create(NULL, conf);
if (dae) {
dvr_autorec_save(dae);
dvr_autorec_changed(dae, 1);
}
pthread_mutex_unlock(&global_lock);
return 0;
}
static int
api_dvr_autorec_create_by_series
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
dvr_autorec_entry_t *dae;
epg_broadcast_t *e;
htsmsg_t *entries, *entries2 = NULL, *m;
htsmsg_field_t *f;
const char *config_uuid, *s;
int count = 0;
if (!(entries = htsmsg_get_list(args, "entries"))) {
entries = entries2 = api_dvr_entry_create_from_single(args);
if (!entries)
return EINVAL;
}
HTSMSG_FOREACH(f, entries) {
if (!(m = htsmsg_get_map_by_field(f))) continue;
if (!(s = htsmsg_get_str(m, "event_id")))
continue;
config_uuid = htsmsg_get_str(m, "config_uuid");
pthread_mutex_lock(&global_lock);
if ((e = epg_broadcast_find_by_id(strtoll(s, NULL, 10)))) {
dvr_config_t *cfg = dvr_config_find_by_list(perm->aa_dvrcfgs, config_uuid);
if (cfg) {
dae = dvr_autorec_add_series_link(idnode_uuid_as_str(&cfg->dvr_id),
e,
perm->aa_username,
perm->aa_representative,
"Created from EPG query");
if (dae) {
dvr_autorec_save(dae);
dvr_autorec_changed(dae, 1);
}
}
}
pthread_mutex_unlock(&global_lock);
count++;
}
htsmsg_destroy(entries2);
return !count ? EINVAL : 0;
}
static void
api_dvr_timerec_grid
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
dvr_timerec_entry_t *dte;
TAILQ_FOREACH(dte, &timerec_entries, dte_link)
idnode_set_add(ins, (idnode_t*)dte, &conf->filter);
}
static int
api_dvr_timerec_create
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *conf;
dvr_timerec_entry_t *dte;
if (!(conf = htsmsg_get_map(args, "conf")))
return EINVAL;
if (perm->aa_username)
htsmsg_set_str(conf, "owner", perm->aa_username);
if (perm->aa_representative)
htsmsg_set_str(conf, "creator", perm->aa_representative);
pthread_mutex_lock(&global_lock);
dte = dvr_timerec_create(NULL, conf);
if (dte) {
dvr_timerec_save(dte);
dvr_timerec_check(dte);
}
pthread_mutex_unlock(&global_lock);
return 0;
}
void api_dvr_init ( void )
{
static api_hook_t ah[] = {
{ "dvr/config/class", ACCESS_OR|ACCESS_ADMIN|ACCESS_RECORDER,
api_idnode_class, (void*)&dvr_config_class },
{ "dvr/config/grid", ACCESS_OR|ACCESS_ADMIN|ACCESS_RECORDER,
api_idnode_grid, api_dvr_config_grid },
{ "dvr/config/create", ACCESS_ADMIN, api_dvr_config_create, NULL },
{ "dvr/entry/class", ACCESS_RECORDER, api_idnode_class, (void*)&dvr_entry_class },
{ "dvr/entry/grid", ACCESS_RECORDER, api_idnode_grid, api_dvr_entry_grid },
{ "dvr/entry/grid_upcoming", ACCESS_RECORDER, api_idnode_grid, api_dvr_entry_grid_upcoming },
{ "dvr/entry/grid_finished", ACCESS_RECORDER, api_idnode_grid, api_dvr_entry_grid_finished },
{ "dvr/entry/grid_failed", ACCESS_RECORDER, api_idnode_grid, api_dvr_entry_grid_failed },
{ "dvr/entry/create", ACCESS_RECORDER, api_dvr_entry_create, NULL },
{ "dvr/entry/create_by_event", ACCESS_RECORDER, api_dvr_entry_create_by_event, NULL },
{ "dvr/entry/cancel", ACCESS_RECORDER, api_dvr_entry_cancel, NULL },
{ "dvr/autorec/class", ACCESS_RECORDER, api_idnode_class, (void*)&dvr_autorec_entry_class },
{ "dvr/autorec/grid", ACCESS_RECORDER, api_idnode_grid, api_dvr_autorec_grid },
{ "dvr/autorec/create", ACCESS_RECORDER, api_dvr_autorec_create, NULL },
{ "dvr/autorec/create_by_series", ACCESS_RECORDER, api_dvr_autorec_create_by_series, NULL },
{ "dvr/timerec/class", ACCESS_RECORDER, api_idnode_class, (void*)&dvr_timerec_entry_class },
{ "dvr/timerec/grid", ACCESS_RECORDER, api_idnode_grid, api_dvr_timerec_grid },
{ "dvr/timerec/create", ACCESS_RECORDER, api_dvr_timerec_create, NULL },
{ NULL },
};
api_register_all(ah);
}

View file

@ -22,17 +22,63 @@
#include "access.h"
#include "api.h"
#include "epg.h"
#include "imagecache.h"
#include "dvr/dvr.h"
static htsmsg_t *
api_epg_entry ( epg_broadcast_t *eb, const char *lang )
api_epg_get_list ( const char *s )
{
htsmsg_t *m = NULL;
char *r, *saveptr = NULL;
if (s && s[0] != '\0') {
s = r = strdup(s);
r = strtok_r(r, ";", &saveptr);
while (r) {
while (*r != '\0' && *r <= ' ')
r++;
if (*r != '\0') {
if (m == NULL)
m = htsmsg_create_list();
htsmsg_add_str(m, NULL, r);
}
r = strtok_r(NULL, ";", &saveptr);
}
free((char *)s);
}
return m;
}
static void
api_epg_add_channel ( htsmsg_t *m, channel_t *ch )
{
int64_t chnum;
char buf[32];
const char *s;
htsmsg_add_str(m, "channelName", channel_get_name(ch));
htsmsg_add_str(m, "channelUuid", channel_get_uuid(ch));
if ((chnum = channel_get_number(ch)) >= 0) {
uint32_t maj = chnum / CHANNEL_SPLIT;
uint32_t min = chnum % CHANNEL_SPLIT;
if (min)
snprintf(buf, sizeof(buf), "%u.%u", maj, min);
else
snprintf(buf, sizeof(buf), "%u", maj);
htsmsg_add_str(m, "channelNumber", buf);
}
if ((s = channel_get_icon(ch)) != NULL)
htsmsg_add_str(m, "channelIcon", s);
}
static htsmsg_t *
api_epg_entry ( epg_broadcast_t *eb, const char *lang, access_t *perm )
{
const char *s;
char buf[64];
epg_episode_t *ee = eb->episode;
channel_t *ch = eb->channel;
htsmsg_t *m;
htsmsg_t *m, *m2;
epg_episode_num_t epnum;
epg_genre_t *eg;
dvr_entry_t *de;
if (!ee || !ch) return NULL;
@ -40,8 +86,6 @@ api_epg_entry ( epg_broadcast_t *eb, const char *lang )
m = htsmsg_create_map();
/* EPG IDs */
// Note: "id" is for UI compat, remove it?
htsmsg_add_u32(m, "id", eb->id);
htsmsg_add_u32(m, "eventId", eb->id);
if (ee) {
htsmsg_add_u32(m, "episodeId", ee->id);
@ -55,25 +99,17 @@ api_epg_entry ( epg_broadcast_t *eb, const char *lang )
}
/* Channel Info */
// Note: "channel" is for UI compat, remove it?
htsmsg_add_str(m, "channel", channel_get_name(ch));
htsmsg_add_str(m, "channelName", channel_get_name(ch));
htsmsg_add_str(m, "channelUuid", channel_get_uuid(ch));
htsmsg_add_u32(m, "channelId", channel_get_id(ch));
api_epg_add_channel(m, ch);
/* Time */
htsmsg_add_s64(m, "start", eb->start);
htsmsg_add_s64(m, "stop", eb->stop);
htsmsg_add_s64(m, "duration", eb->stop - eb->start);
// TODO: the above can be removed
/* Title/description */
if ((s = epg_broadcast_get_title(eb, lang)))
htsmsg_add_str(m, "title", s);
#if TODO
if ((s = epg_broadcast_get_subtitle(eb, lang)))
htsmsg_add_str(m, "subtitle", s);
#endif
if ((s = epg_broadcast_get_summary(eb, lang)))
htsmsg_add_str(m, "summary", s);
if ((s = epg_broadcast_get_description(eb, lang)))
@ -108,11 +144,32 @@ api_epg_entry ( epg_broadcast_t *eb, const char *lang )
/* Image */
if (ee->image)
htsmsg_add_str(m, "image", ee->image);
/* Rating */
if (ee->star_rating)
htsmsg_add_u32(m, "starRating", ee->star_rating);
if (ee->age_rating)
htsmsg_add_u32(m, "ageRating", ee->age_rating);
/* Content Type */
m2 = NULL;
LIST_FOREACH(eg, &ee->genre, link) {
if (m2 == NULL)
m2 = htsmsg_create_list();
htsmsg_add_u32(m2, NULL, eg->code);
}
if (m2)
htsmsg_add_msg(m, "genre", m2);
}
/* Recording */
if ((de = dvr_entry_find_by_event(eb)))
htsmsg_add_u32(m, "dvrId", de->de_id);
if (!access_verify2(perm, ACCESS_RECORDER) &&
(de = dvr_entry_find_by_event(eb)) &&
!access_verify_list(perm->aa_dvrcfgs,
idnode_uuid_as_str(&de->de_config->dvr_id))) {
htsmsg_add_str(m, "dvrUuid", idnode_uuid_as_str(&de->de_id));
htsmsg_add_str(m, "dvrState", dvr_entry_schedstatus(de));
}
/* Next event */
if ((eb = epg_broadcast_get_next(eb)))
@ -121,25 +178,244 @@ api_epg_entry ( epg_broadcast_t *eb, const char *lang )
return m;
}
static void
api_epg_filter_set_str
( epg_filter_str_t *f, const char *str, int comp )
{
f->str = strdup(str);
f->comp = comp;
}
static void
api_epg_filter_add_str
( epg_query_t *eq, const char *k, const char *v, int comp )
{
if (!strcmp(k, "channelName"))
api_epg_filter_set_str(&eq->channel_name, v, comp);
else if (!strcmp(k, "title"))
api_epg_filter_set_str(&eq->title, v, comp);
else if (!strcmp(k, "subtitle"))
api_epg_filter_set_str(&eq->subtitle, v, comp);
else if (!strcmp(k, "summary"))
api_epg_filter_set_str(&eq->summary, v, comp);
else if (!strcmp(k, "description"))
api_epg_filter_set_str(&eq->description, v, comp);
}
static void
api_epg_filter_set_num
( epg_filter_num_t *f, int64_t v1, int64_t v2, int comp )
{
/* Range? */
if (f->comp == EC_LT && comp == EC_GT) {
f->val2 = f->val1;
f->val1 = v1;
f->comp = EC_RG;
return;
}
if (f->comp == EC_GT && comp == EC_LT) {
f->val2 = v1;
f->comp = EC_RG;
return;
}
f->val1 = v1;
f->val2 = v2;
f->comp = comp;
}
static void
api_epg_filter_add_num
( epg_query_t *eq, const char *k, int64_t v1, int64_t v2, int comp )
{
if (!strcmp(k, "start"))
api_epg_filter_set_num(&eq->start, v1, v2, comp);
else if (!strcmp(k, "stop"))
api_epg_filter_set_num(&eq->stop, v1, v2, comp);
else if (!strcmp(k, "duration"))
api_epg_filter_set_num(&eq->duration, v1, v2, comp);
else if (!strcmp(k, "episode"))
api_epg_filter_set_num(&eq->episode, v1, v2, comp);
else if (!strcmp(k, "stars"))
api_epg_filter_set_num(&eq->episode, v1, v2, comp);
else if (!strcmp(k, "age"))
api_epg_filter_set_num(&eq->age, v1, v2, comp);
}
static struct strtab sortcmptab[] = {
{ "start", ESK_START },
{ "stop", ESK_STOP },
{ "duration", ESK_DURATION },
{ "title", ESK_TITLE },
{ "subtitle", ESK_SUBTITLE },
{ "summary", ESK_SUMMARY },
{ "description", ESK_DESCRIPTION },
{ "channelName", ESK_CHANNEL },
{ "channelNumber", ESK_CHANNEL_NUM },
{ "starRating", ESK_STARS },
{ "ageRating", ESK_AGE },
{ "genre", ESK_GENRE }
};
static struct strtab filtcmptab[] = {
{ "gt", EC_GT },
{ "lt", EC_LT },
{ "eq", EC_EQ },
{ "regex", EC_RE },
{ "range", EC_RG }
};
static int64_t
api_epg_decode_channel_num ( const char *s )
{
int64_t v = atol(s);
const char *s1 = strchr(s, '.');
if (s1)
v += atol(s1 + 1) % CHANNEL_SPLIT;
return v;
}
static int
api_epg_grid
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int i;
epg_query_result_t eqr;
const char *ch, *tag, *title, *lang/*, *genre*/;
uint32_t start, limit, end;
htsmsg_t *l = NULL, *e;
epg_query_t eq;
const char *lang, *str;
uint32_t start, limit, end, genre;
int64_t duration_min, duration_max;
htsmsg_field_t *f, *f2;
htsmsg_t *l = NULL, *e, *filter;
*resp = htsmsg_create_map();
memset(&eq, 0, sizeof(eq));
/* Query params */
ch = htsmsg_get_str(args, "channel");
tag = htsmsg_get_str(args, "tag");
//genre = htsmsg_get_str(args, "genre");
title = htsmsg_get_str(args, "title");
lang = htsmsg_get_str(args, "lang");
// TODO: support multiple tag/genre/channel?
lang = htsmsg_get_str(args, "lang");
if (lang)
eq.lang = strdup(lang);
str = htsmsg_get_str(args, "title");
if (str)
eq.stitle = strdup(str);
eq.fulltext = htsmsg_get_bool_or_default(args, "fulltext", 0);
str = htsmsg_get_str(args, "channel");
if (str)
eq.channel = strdup(str);
str = htsmsg_get_str(args, "channelTag");
if (str)
eq.channel_tag = strdup(str);
duration_min = -1;
duration_max = -1;
htsmsg_get_s64(args, "durationMin", &duration_min);
htsmsg_get_s64(args, "durationMax", &duration_max);
if (duration_min > 0 || duration_max > 0) {
eq.duration.comp = EC_RG;
eq.duration.val1 = duration_min < 0 ? 0 : duration_min;
eq.duration.val2 = duration_max < 0 ? 0 : duration_max;
}
if (!htsmsg_get_u32(args, "contentType", &genre)) {
eq.genre = eq.genre_static;
eq.genre[0] = genre;
eq.genre_count = 1;
}
/* Filter params */
if ((filter = htsmsg_get_list(args, "filter"))) {
HTSMSG_FOREACH(f, filter) {
const char *k, *t, *v;
int comp;
if (!(e = htsmsg_get_map_by_field(f))) continue;
if (!(k = htsmsg_get_str(e, "field"))) continue;
if (!(t = htsmsg_get_str(e, "type"))) continue;
comp = str2val(htsmsg_get_str(e, "comparison") ?: "", filtcmptab);
if (comp == -1) comp = EC_EQ;
if (!strcmp(k, "channelNumber")) {
if (!strcmp(t, "numeric")) {
f2 = htsmsg_field_find(e, "value");
if (f2) {
int64_t v1, v2 = 0;
if (f2->hmf_type == HMF_STR) {
const char *s = htsmsg_field_get_str(f2);
const char *z = s ? strchr(s, ';') : NULL;
if (s) {
v1 = api_epg_decode_channel_num(s);
if (z)
v2 = api_epg_decode_channel_num(z);
api_epg_filter_set_num(&eq.channel_num, v1, v2, comp);
}
} else {
if (!htsmsg_field_get_s64(f2, &v1)) {
if (v1 < CHANNEL_SPLIT)
v1 *= CHANNEL_SPLIT;
api_epg_filter_set_num(&eq.channel_num, v1, 0, comp);
}
}
}
}
} else if (!strcmp(k, "genre")) {
if (!strcmp(t, "numeric")) {
f2 = htsmsg_field_find(e, "value");
if (f2) {
int64_t v;
if (f2->hmf_type == HMF_STR) {
htsmsg_t *z = api_epg_get_list(htsmsg_field_get_str(f2));
if (z) {
htsmsg_field_t *f3;
uint32_t count = 0;
HTSMSG_FOREACH(f3, z)
count++;
if (ARRAY_SIZE(eq.genre_static) > count)
eq.genre = malloc(sizeof(eq.genre[0]) * count);
else
eq.genre = eq.genre_static;
HTSMSG_FOREACH(f3, z)
if (!htsmsg_field_get_s64(f3, &v))
eq.genre[eq.genre_count++] = v;
}
} else {
if (!htsmsg_field_get_s64(f2, &v)) {
eq.genre_count = 1;
eq.genre = eq.genre_static;
eq.genre[0] = v;
}
}
}
}
} else if (!strcmp(t, "string")) {
if ((v = htsmsg_get_str(e, "value")))
api_epg_filter_add_str(&eq, k, v, EC_RE);
} else if (!strcmp(t, "numeric")) {
f2 = htsmsg_field_find(e, "value");
if (f2) {
int64_t v1 = 0, v2 = 0;
if (f2->hmf_type == HMF_STR) {
const char *z = htsmsg_field_get_str(f2);
if (z) {
const char *z2 = strchr(z, ';');
if (z2)
v2 = strtoll(z2 + 1, NULL, 0);
v1 = strtoll(z, NULL, 0);
}
api_epg_filter_add_num(&eq, k, v1, v2, comp);
} else {
if (!htsmsg_field_get_s64(f2, &v1))
api_epg_filter_add_num(&eq, k, v1, v2, comp);
}
}
}
}
}
/* Sort */
if ((str = htsmsg_get_str(args, "sort"))) {
int skey = str2val(str, sortcmptab);
if (skey >= 0) {
eq.sort_key = skey;
if ((str = htsmsg_get_str(args, "dir")) && !strcasecmp(str, "DESC"))
eq.sort_dir = IS_DSC;
else
eq.sort_dir = IS_ASC;
}
} /* else.. keep default start time ascending sorting */
/* Pagination settings */
start = htsmsg_get_u32_or_default(args, "start", 0);
@ -147,34 +423,151 @@ api_epg_grid
/* Query the EPG */
pthread_mutex_lock(&global_lock);
epg_query(&eqr, ch, tag, NULL, /*genre,*/ title, lang);
epg_query_sort(&eqr);
// TODO: optional sorting
epg_query(&eq, perm);
/* Build response */
start = MIN(eqr.eqr_entries, start);
end = MIN(eqr.eqr_entries, start + limit);
start = MIN(eq.entries, start);
end = MIN(eq.entries, start + limit);
l = htsmsg_create_list();
for (i = start; i < end; i++) {
if (!(e = api_epg_entry(eqr.eqr_array[i], lang))) continue;
if (!l) l = htsmsg_create_list();
if (!(e = api_epg_entry(eq.result[i], lang, perm))) continue;
htsmsg_add_msg(l, NULL, e);
}
pthread_mutex_unlock(&global_lock);
epg_query_free(&eq);
/* Build response */
*resp = htsmsg_create_map();
htsmsg_add_u32(*resp, "totalCount", eq.entries);
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static void
api_epg_episode_broadcasts
( access_t *perm, htsmsg_t *l, const char *lang, epg_episode_t *ep,
uint32_t *entries, epg_broadcast_t *ebc_skip )
{
epg_broadcast_t *ebc;
channel_t *ch;
htsmsg_t *m;
LIST_FOREACH(ebc, &ep->broadcasts, ep_link) {
ch = ebc->channel;
if (ch == NULL) continue;
if (ebc == ebc_skip) continue;
m = api_epg_entry(ebc, lang, perm);
htsmsg_add_msg(l, NULL, m);
(*entries)++;
}
}
static int
api_epg_alternative
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
uint32_t id, entries = 0;
htsmsg_t *l = htsmsg_create_list();
epg_broadcast_t *e;
const char *lang = htsmsg_get_str(args, "lang");
if (!htsmsg_get_u32(args, "eventId", &id))
return -EINVAL;
/* Main Job */
pthread_mutex_lock(&global_lock);
e = epg_broadcast_find_by_id(id);
if (e && e->episode)
api_epg_episode_broadcasts(perm, l, lang, e->episode, &entries, e);
pthread_mutex_unlock(&global_lock);
/* Build response */
htsmsg_add_u32(*resp, "totalCount", eqr.eqr_entries);
if (l)
htsmsg_add_msg(*resp, "events", l);
htsmsg_add_u32(*resp, "totalCount", entries);
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static int
api_epg_related
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
uint32_t id, entries = 0;
htsmsg_t *l = htsmsg_create_list();
epg_broadcast_t *e;
epg_episode_t *ep, *ep2;
const char *lang = htsmsg_get_str(args, "lang");
if (!htsmsg_get_u32(args, "eventId", &id))
return -EINVAL;
/* Main Job */
pthread_mutex_lock(&global_lock);
e = epg_broadcast_find_by_id(id);
ep = e ? e->episode : NULL;
if (ep && ep->brand) {
LIST_FOREACH(ep2, &ep->brand->episodes, blink) {
if (ep2 == ep) continue;
if (!ep2->title) continue;
api_epg_episode_broadcasts(perm, l, lang, ep2, &entries, e);
entries++;
}
} else if (ep && ep->season) {
LIST_FOREACH(ep2, &ep->season->episodes, slink) {
if (ep2 == ep) continue;
if (!ep2->title) continue;
api_epg_episode_broadcasts(perm, l, lang, ep2, &entries, e);
}
}
pthread_mutex_unlock(&global_lock);
/* Build response */
htsmsg_add_u32(*resp, "totalCount", entries);
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
static int
api_epg_brand_list(access_t *perm, void *opaque, const char *op,
htsmsg_t *args, htsmsg_t **resp)
{
htsmsg_t *array;
*resp = htsmsg_create_map();
pthread_mutex_lock(&global_lock);
array = epg_brand_list();
pthread_mutex_unlock(&global_lock);
htsmsg_add_msg(*resp, "entries", array);
return 0;
}
static int
api_epg_content_type_list(access_t *perm, void *opaque, const char *op,
htsmsg_t *args, htsmsg_t **resp)
{
htsmsg_t *array;
int full = 0;
htsmsg_get_bool(args, "full", &full);
*resp = htsmsg_create_map();
array = epg_genres_list_all(full ? 0 : 1, 0);
htsmsg_add_msg(*resp, "entries", array);
return 0;
}
void api_epg_init ( void )
{
static api_hook_t ah[] = {
{ "epg/grid", ACCESS_ANONYMOUS, api_epg_grid, NULL },
{ "epg/events/grid", ACCESS_ANONYMOUS, api_epg_grid, NULL },
{ "epg/events/alternative", ACCESS_ANONYMOUS, api_epg_alternative, NULL },
{ "epg/events/related", ACCESS_ANONYMOUS, api_epg_related, NULL },
{ "epg/brand/list", ACCESS_ANONYMOUS, api_epg_brand_list, NULL },
{ "epg/content_type/list", ACCESS_ANONYMOUS, api_epg_content_type_list, NULL },
{ NULL },
};

View file

@ -24,7 +24,7 @@
static int
api_epggrab_channel_list
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *m;
pthread_mutex_lock(&global_lock);

View file

@ -25,7 +25,7 @@
static void
api_esfilter_grid
( idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args,
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args,
esfilter_class_t cls )
{
esfilter_t *esf;
@ -37,7 +37,7 @@ api_esfilter_grid
static int
api_esfilter_create
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp,
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp,
esfilter_class_t cls )
{
htsmsg_t *conf;
@ -54,11 +54,11 @@ api_esfilter_create
#define ESFILTER(func, t) \
static void api_esfilter_grid_##func \
( idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args ) \
{ return api_esfilter_grid(ins, conf, args, (t)); } \
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args ) \
{ return api_esfilter_grid(perm, ins, conf, args, (t)); } \
static int api_esfilter_create_##func \
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp ) \
{ return api_esfilter_create(opaque, op, args, resp, (t)); }
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp ) \
{ return api_esfilter_create(perm, opaque, op, args, resp, (t)); }
ESFILTER(video, ESF_CLASS_VIDEO);
ESFILTER(audio, ESF_CLASS_AUDIO);

View file

@ -23,6 +23,35 @@
#include "htsmsg.h"
#include "api.h"
static htsmsg_t *
api_idnode_flist_conf( htsmsg_t *args, const char *name )
{
htsmsg_t *m = NULL;
const char *s = htsmsg_get_str(args, name);
char *r, *saveptr = NULL;
int use = 1;
if (s && s[0] == '-') {
use = 0;
s++;
}
if (s && s[0] != '\0') {
s = r = strdup(s);
r = strtok_r(r, ",;:", &saveptr);
while (r) {
while (*r != '\0' && *r <= ' ')
r++;
if (*r != '\0') {
if (m == NULL)
m = htsmsg_create_map();
htsmsg_add_bool(m, r, use);
}
r = strtok_r(NULL, ",;:", &saveptr);
}
free((char *)s);
}
return m;
}
static struct strtab filtcmptab[] = {
{ "gt", IC_GT },
{ "lt", IC_LT },
@ -33,21 +62,12 @@ static void
api_idnode_grid_conf
( htsmsg_t *args, api_idnode_grid_conf_t *conf )
{
htsmsg_field_t *f;
htsmsg_field_t *f, *f2;
htsmsg_t *filter, *e;
const char *str;
/* Start */
if ((str = htsmsg_get_str(args, "start")))
conf->start = atoi(str);
else
conf->start = 0;
/* Limit */
if ((str = htsmsg_get_str(args, "limit")))
conf->limit = atoi(str);
else
conf->limit = 50;
conf->start = htsmsg_get_u32_or_default(args, "start", 0);
conf->limit = htsmsg_get_u32_or_default(args, "limit", 50);
/* Filter */
if ((filter = htsmsg_get_list(args, "filter"))) {
@ -60,11 +80,20 @@ api_idnode_grid_conf
if ((v = htsmsg_get_str(e, "value")))
idnode_filter_add_str(&conf->filter, k, v, IC_RE);
} else if (!strcmp(t, "numeric")) {
uint32_t v;
if (!htsmsg_get_u32(e, "value", &v)) {
int t = str2val(htsmsg_get_str(e, "comparison") ?: "",
filtcmptab);
idnode_filter_add_num(&conf->filter, k, v, t == -1 ? IC_EQ : t);
f2 = htsmsg_field_find(e, "value");
if (f2) {
int t = str2val(htsmsg_get_str(e, "comparison") ?: "", filtcmptab);
if (f2->hmf_type == HMF_DBL) {
double dbl;
if (!htsmsg_field_get_dbl(f2, &dbl))
idnode_filter_add_dbl(&conf->filter, k, dbl, t == -1 ? IC_EQ : t);
} else {
int64_t v;
int64_t intsplit = 0;
htsmsg_get_s64(e, "intsplit", &intsplit);
if (!htsmsg_field_get_s64(f2, &v))
idnode_filter_add_num(&conf->filter, k, v, t == -1 ? IC_EQ : t, intsplit);
}
}
} else if (!strcmp(t, "boolean")) {
uint32_t v;
@ -77,7 +106,7 @@ api_idnode_grid_conf
/* Sort */
if ((str = htsmsg_get_str(args, "sort"))) {
conf->sort.key = str;
if ((str = htsmsg_get_str(args, "dir")) && !strcmp(str, "DESC"))
if ((str = htsmsg_get_str(args, "dir")) && !strcasecmp(str, "DESC"))
conf->sort.dir = IS_DSC;
else
conf->sort.dir = IS_ASC;
@ -87,10 +116,11 @@ api_idnode_grid_conf
int
api_idnode_grid
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int i;
htsmsg_t *list, *e;
htsmsg_t *flist = api_idnode_flist_conf(args, "list");
api_idnode_grid_conf_t conf = { 0 };
idnode_set_t ins = { 0 };
api_idnode_grid_callback_t cb = opaque;
@ -100,7 +130,7 @@ api_idnode_grid
/* Create list */
pthread_mutex_lock(&global_lock);
cb(&ins, &conf, args);
cb(perm, &ins, &conf, args);
/* Sort */
if (conf.sort.key)
@ -111,7 +141,7 @@ api_idnode_grid
for (i = conf.start; i < ins.is_count && conf.limit != 0; i++) {
e = htsmsg_create_map();
htsmsg_add_str(e, "uuid", idnode_uuid_as_str(ins.is_array[i]));
idnode_read0(ins.is_array[i], e, 0);
idnode_read0(ins.is_array[i], e, flist, 0);
htsmsg_add_msg(list, NULL, e);
if (conf.limit > 0) conf.limit--;
}
@ -126,13 +156,14 @@ api_idnode_grid
/* Cleanup */
free(ins.is_array);
idnode_filter_clear(&conf.filter);
htsmsg_destroy(flist);
return 0;
}
int
api_idnode_load_by_class
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int i, _enum;
const idclass_t *idc;
@ -150,10 +181,13 @@ api_idnode_load_by_class
assert(idc);
l = htsmsg_create_list();
if ((is = idnode_find_all(idc))) {
if ((is = idnode_find_all(idc, NULL))) {
for (i = 0; i < is->is_count; i++) {
in = is->is_array[i];
if (idnode_perm(in, perm, NULL))
continue;
/* Name/UUID only */
if (_enum) {
e = htsmsg_create_map();
@ -161,8 +195,11 @@ api_idnode_load_by_class
htsmsg_add_str(e, "val", idnode_get_title(in));
/* Full record */
} else
e = idnode_serialize(in);
} else {
htsmsg_t *flist = api_idnode_flist_conf(args, "list");
e = idnode_serialize0(in, flist, 0);
htsmsg_destroy(flist);
}
if (e)
htsmsg_add_msg(l, NULL, e);
@ -180,11 +217,12 @@ api_idnode_load_by_class
static int
api_idnode_load
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err = 0;
int err = 0, meta, count = 0;
idnode_t *in;
htsmsg_t *uuids, *l = NULL;
htsmsg_t *uuids, *l = NULL, *m;
htsmsg_t *flist;
htsmsg_field_t *f;
const char *uuid, *class;
@ -197,7 +235,7 @@ api_idnode_load
if (!idc)
return EINVAL;
// TODO: bit naff that 2 locks are required here
return api_idnode_load_by_class((void*)idc, NULL, args, resp);
return api_idnode_load_by_class(perm, (void*)idc, NULL, args, resp);
}
/* UUIDs */
@ -206,25 +244,48 @@ api_idnode_load
if (!(uuids = htsmsg_field_get_list(f)))
if (!(uuid = htsmsg_field_get_str(f)))
return EINVAL;
meta = htsmsg_get_s32_or_default(args, "meta", 0);
flist = api_idnode_flist_conf(args, "list");
pthread_mutex_lock(&global_lock);
/* Multiple */
if (uuids) {
const idnodes_rb_t *domain = NULL;
l = htsmsg_create_list();
HTSMSG_FOREACH(f, uuids) {
if (!(uuid = htsmsg_field_get_str(f))) continue;
if (!(in = idnode_find(uuid, NULL))) continue;
htsmsg_add_msg(l, NULL, idnode_serialize(in));
if (!(in = idnode_find(uuid, NULL, domain))) continue;
domain = in->in_domain;
if (idnode_perm(in, perm, NULL)) {
err = EPERM;
continue;
}
m = idnode_serialize0(in, flist, 0);
if (meta > 0)
htsmsg_add_msg(m, "meta", idclass_serialize0(in->in_class, flist, 0));
htsmsg_add_msg(l, NULL, m);
count++;
}
if (count)
err = 0;
/* Single */
} else {
if (!(in = idnode_find(uuid, NULL)))
if (!(in = idnode_find(uuid, NULL, NULL)))
err = ENOENT;
else {
l = htsmsg_create_list();
htsmsg_add_msg(l, NULL, idnode_serialize(in));
if (idnode_perm(in, perm, NULL)) {
err = EPERM;
} else {
l = htsmsg_create_list();
m = idnode_serialize0(in, flist, 0);
if (meta > 0)
htsmsg_add_msg(m, "meta", idclass_serialize0(in->in_class, flist, 0));
htsmsg_add_msg(l, NULL, m);
}
}
}
@ -235,18 +296,21 @@ api_idnode_load
pthread_mutex_unlock(&global_lock);
htsmsg_destroy(flist);
return err;
}
static int
api_idnode_save
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err = EINVAL;
idnode_t *in;
htsmsg_t *msg, *conf;
htsmsg_field_t *f;
const char *uuid;
int count = 0;
if (!(f = htsmsg_field_find(args, "node")))
return EINVAL;
@ -260,23 +324,35 @@ api_idnode_save
if (!msg->hm_islist) {
if (!(uuid = htsmsg_get_str(msg, "uuid")))
goto exit;
if (!(in = idnode_find(uuid, NULL)))
if (!(in = idnode_find(uuid, NULL, NULL)))
goto exit;
if (idnode_perm(in, perm, msg)) {
err = EPERM;
goto exit;
}
idnode_update(in, msg);
err = 0;
/* Multiple */
} else {
const idnodes_rb_t *domain = NULL;
HTSMSG_FOREACH(f, msg) {
if (!(conf = htsmsg_field_get_map(f)))
continue;
if (!(uuid = htsmsg_get_str(conf, "uuid")))
continue;
if (!(in = idnode_find(uuid, NULL)))
if (!(in = idnode_find(uuid, NULL, domain)))
continue;
domain = in->in_domain;
if (idnode_perm(in, perm, conf)) {
err = EPERM;
continue;
}
count++;
idnode_update(in, conf);
}
err = 0;
if (count)
err = 0;
}
// TODO: return updated UUIDs?
@ -289,7 +365,7 @@ exit:
int
api_idnode_tree
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const char *uuid;
const char *root = NULL;
@ -313,7 +389,7 @@ api_idnode_tree
pthread_mutex_lock(&global_lock);
if (!isroot || root) {
if (!(node = idnode_find(isroot ? root : uuid, NULL))) {
if (!(node = idnode_find(isroot ? root : uuid, NULL, NULL))) {
pthread_mutex_unlock(&global_lock);
return EINVAL;
}
@ -329,7 +405,7 @@ api_idnode_tree
/* Children */
} else {
idnode_set_t *v = node ? idnode_get_childs(node) : rootfn();
idnode_set_t *v = node ? idnode_get_childs(node) : rootfn(perm);
if (v) {
int i;
idnode_set_sort_by_title(v);
@ -348,11 +424,12 @@ api_idnode_tree
int
api_idnode_class
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err = EINVAL;
const char *name;
const idclass_t *idc;
htsmsg_t *flist = api_idnode_flist_conf(args, "list");
pthread_mutex_lock(&global_lock);
@ -368,17 +445,20 @@ api_idnode_class
}
err = 0;
*resp = idclass_serialize(idc);
*resp = idclass_serialize0(idc, flist, 0);
exit:
pthread_mutex_unlock(&global_lock);
htsmsg_destroy(flist);
return err;
}
static int
int
api_idnode_handler
( htsmsg_t *args, htsmsg_t **resp, void (*handler)(idnode_t *in) )
( access_t *perm, htsmsg_t *args, htsmsg_t **resp,
void (*handler)(access_t *perm, idnode_t *in) )
{
int err = 0;
idnode_t *in;
@ -397,19 +477,21 @@ api_idnode_handler
/* Multiple */
if (uuids) {
const idnodes_rb_t *domain = NULL;
HTSMSG_FOREACH(f, uuids) {
if (!(uuid = htsmsg_field_get_string(f))) continue;
if (!(in = idnode_find(uuid, NULL))) continue;
handler(in);
if (!(in = idnode_find(uuid, NULL, domain))) continue;
domain = in->in_domain;
handler(perm, in);
}
/* Single */
} else {
uuid = htsmsg_field_get_string(f);
if (!(in = idnode_find(uuid, NULL)))
if (!(in = idnode_find(uuid, NULL, NULL)))
err = ENOENT;
else
handler(in);
handler(perm, in);
}
pthread_mutex_unlock(&global_lock);
@ -417,25 +499,43 @@ api_idnode_handler
return err;
}
static void
api_idnode_delete_ (access_t *perm, idnode_t *in)
{
return idnode_delete(in);
}
static int
api_idnode_delete
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
return api_idnode_handler(args, resp, idnode_delete);
return api_idnode_handler(perm, args, resp, api_idnode_delete_);
}
static void
api_idnode_moveup_ (access_t *perm, idnode_t *in)
{
return idnode_moveup(in);
}
static int
api_idnode_moveup
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
return api_idnode_handler(args, resp, idnode_moveup);
return api_idnode_handler(perm, args, resp, api_idnode_moveup_);
}
static void
api_idnode_movedown_ (access_t *perm, idnode_t *in)
{
return idnode_movedown(in);
}
static int
api_idnode_movedown
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
return api_idnode_handler(args, resp, idnode_movedown);
return api_idnode_handler(perm, args, resp, api_idnode_movedown_);
}
void api_idnode_init ( void )

View file

@ -27,7 +27,7 @@
static int
api_imagecache_load
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *l;
pthread_mutex_lock(&global_lock);
@ -41,11 +41,15 @@ api_imagecache_load
static int
api_imagecache_save
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int b;
pthread_mutex_lock(&global_lock);
if (imagecache_set_config(args))
imagecache_save();
if (!htsmsg_get_bool(args, "clean", &b) && b)
imagecache_clean();
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
htsmsg_add_u32(*resp, "success", 1);

View file

@ -30,7 +30,7 @@ static idnode_set_t *
api_input_hw_tree ( void )
{
tvh_hardware_t *th;
idnode_set_t *is = idnode_set_create();
idnode_set_t *is = idnode_set_create(0);
TVH_HARDWARE_FOREACH(th)
idnode_set_add(is, &th->th_id, NULL);
return is;

View file

@ -27,28 +27,22 @@
static int
api_intlconv_charset_enum
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const char **chrst;
htsmsg_t *l, *e;
int _enum = htsmsg_get_bool_or_default(args, "enum", 0);
if (_enum) {
l = htsmsg_create_list();
chrst = intlconv_charsets;
while (*chrst) {
e = htsmsg_create_map();
htsmsg_add_str(e, "key", *chrst);
htsmsg_add_str(e, "val", *chrst);
htsmsg_add_msg(l, NULL, e);
chrst++;
}
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
} else {
// TODO: support full listing v enum
l = htsmsg_create_list();
chrst = intlconv_charsets;
while (*chrst) {
e = htsmsg_create_map();
htsmsg_add_str(e, "key", *chrst);
htsmsg_add_str(e, "val", *chrst);
htsmsg_add_msg(l, NULL, e);
chrst++;
}
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
return 0;
}

View file

@ -31,7 +31,7 @@
*/
static int
api_mpegts_input_network_list
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int i, err = EINVAL;
const char *uuid;
@ -49,6 +49,8 @@ api_mpegts_input_network_list
if (!mi)
goto exit;
tvhtrace("mpegts", "network-list: found input '%s'", mi->mi_name ?: "");
htsmsg_t *l = htsmsg_create_list();
if ((is = mi->mi_network_list(mi))) {
for (i = 0; i < is->is_count; i++) {
@ -77,7 +79,7 @@ exit:
*/
static void
api_mpegts_network_grid
( idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
mpegts_network_t *mn;
@ -88,7 +90,7 @@ api_mpegts_network_grid
static int
api_mpegts_network_builders
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
mpegts_network_builder_t *mnb;
htsmsg_t *l, *e;
@ -108,7 +110,7 @@ api_mpegts_network_builders
static int
api_mpegts_network_create
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err;
const char *class;
@ -134,9 +136,46 @@ api_mpegts_network_create
return err;
}
static int
api_mpegts_network_scan
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_field_t *f;
htsmsg_t *uuids;
mpegts_network_t *mn;
const char *uuid;
if (!(f = htsmsg_field_find(args, "uuid")))
return -EINVAL;
if ((uuids = htsmsg_field_get_list(f))) {
HTSMSG_FOREACH(f, uuids) {
if (!(uuid = htsmsg_field_get_str(f))) continue;
mn = mpegts_network_find(uuid);
if (mn) {
pthread_mutex_lock(&global_lock);
mpegts_network_scan(mn);
pthread_mutex_unlock(&global_lock);
}
}
} else if ((uuid = htsmsg_field_get_str(f))) {
mn = mpegts_network_find(uuid);
if (mn) {
pthread_mutex_lock(&global_lock);
mpegts_network_scan(mn);
pthread_mutex_unlock(&global_lock);
}
else
return -ENOENT;
} else {
return -EINVAL;
}
return 0;
}
static int
api_mpegts_network_muxclass
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err = EINVAL;
const idclass_t *idc;
@ -164,7 +203,7 @@ exit:
static int
api_mpegts_network_muxcreate
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err = EINVAL;
mpegts_network_t *mn;
@ -198,7 +237,7 @@ exit:
*/
static void
api_mpegts_mux_grid
( idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
mpegts_network_t *mn;
mpegts_mux_t *mm;
@ -225,7 +264,7 @@ api_mpegts_mux_grid
*/
static void
api_mpegts_service_grid
( idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
mpegts_network_t *mn;
mpegts_mux_t *mm;
@ -244,7 +283,7 @@ api_mpegts_service_grid
LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) {
if (hide && !mm->mm_is_enabled(mm)) continue;
LIST_FOREACH(ms, &mm->mm_services, s_dvb_mux_link) {
if (hide == 2 && !ms->s_is_enabled((service_t*)ms)) continue;
if (hide == 2 && !ms->s_is_enabled((service_t*)ms, 0)) continue;
idnode_set_add(ins, (idnode_t*)ms, &conf->filter);
}
}
@ -256,7 +295,7 @@ api_mpegts_service_grid
*/
static void
api_mpegts_mux_sched_grid
( idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
( access_t *perm, idnode_set_t *ins, api_idnode_grid_conf_t *conf, htsmsg_t *args )
{
mpegts_mux_sched_t *mms;
LIST_FOREACH(mms, &mpegts_mux_sched_all, mms_link)
@ -265,7 +304,7 @@ api_mpegts_mux_sched_grid
static int
api_mpegts_mux_sched_create
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
int err;
htsmsg_t *conf;
@ -288,13 +327,51 @@ api_mpegts_mux_sched_create
return err;
}
#if ENABLE_MPEGTS_DVB
static int
api_dvb_orbitalpos_list
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
htsmsg_t *l, *e, *c;
htsmsg_field_t *f;
const char *s;
int satpos, i;
char buf[128];
if (!satellites)
return 0;
l = htsmsg_create_list();
HTSMSG_FOREACH(f, satellites) {
if((c = htsmsg_get_map_by_field(f)) == NULL)
continue;
if(htsmsg_get_s32(c, "pos", &satpos))
continue;
if((s = htsmsg_get_str(c, "name")) == NULL)
continue;
e = htsmsg_create_map();
dvb_sat_position_to_str(satpos, buf, sizeof(buf));
htsmsg_add_str(e, "key", buf);
i = strlen(buf);
snprintf(buf + i, sizeof(buf) - i, " : %s", s);
htsmsg_add_str(e, "val", buf);
htsmsg_add_msg(l, NULL, e);
}
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
return 0;
}
#endif
#if ENABLE_MPEGTS_DVB
static int
api_dvb_scanfile_list
( void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
char buf[512];
const char *type = htsmsg_get_str(args, "type");
int satpos = htsmsg_get_s32_or_default(args, "satpos", INT_MAX);
scanfile_region_list_t *list = NULL;
htsmsg_t *l, *e;
scanfile_region_t *r;
@ -317,6 +394,7 @@ api_dvb_scanfile_list
l = htsmsg_create_list();
LIST_FOREACH(r, list, sfr_link) {
LIST_FOREACH(n, &r->sfr_networks, sfn_link) {
if (satpos != INT_MAX && n->sfn_satpos != satpos) continue;
e = htsmsg_create_map();
sprintf(buf, "%s/%s/%s", type, r->sfr_id, n->sfn_id);
htsmsg_add_str(e, "key", buf);
@ -347,22 +425,24 @@ api_mpegts_init ( void )
extern const idclass_t mpegts_service_class;
static api_hook_t ah[] = {
{ "mpegts/input/network_list", ACCESS_ANONYMOUS, api_mpegts_input_network_list, NULL },
{ "mpegts/network/grid", ACCESS_ANONYMOUS, api_idnode_grid, api_mpegts_network_grid },
{ "mpegts/network/class", ACCESS_ANONYMOUS, api_idnode_class, (void*)&mpegts_network_class },
{ "mpegts/network/builders", ACCESS_ANONYMOUS, api_mpegts_network_builders, NULL },
{ "mpegts/network/create", ACCESS_ANONYMOUS, api_mpegts_network_create, NULL },
{ "mpegts/network/mux_class", ACCESS_ANONYMOUS, api_mpegts_network_muxclass, NULL },
{ "mpegts/network/mux_create", ACCESS_ANONYMOUS, api_mpegts_network_muxcreate, NULL },
{ "mpegts/mux/grid", ACCESS_ANONYMOUS, api_idnode_grid, api_mpegts_mux_grid },
{ "mpegts/mux/class", ACCESS_ANONYMOUS, api_idnode_class, (void*)&mpegts_mux_class },
{ "mpegts/service/grid", ACCESS_ANONYMOUS, api_idnode_grid, api_mpegts_service_grid },
{ "mpegts/service/class", ACCESS_ANONYMOUS, api_idnode_class, (void*)&mpegts_service_class },
{ "mpegts/mux_sched/class", ACCESS_ANONYMOUS, api_idnode_class, (void*)&mpegts_mux_sched_class },
{ "mpegts/mux_sched/grid", ACCESS_ANONYMOUS, api_idnode_grid, api_mpegts_mux_sched_grid },
{ "mpegts/mux_sched/create", ACCESS_ANONYMOUS, api_mpegts_mux_sched_create, NULL },
{ "mpegts/input/network_list", ACCESS_ADMIN, api_mpegts_input_network_list, NULL },
{ "mpegts/network/grid", ACCESS_ADMIN, api_idnode_grid, api_mpegts_network_grid },
{ "mpegts/network/class", ACCESS_ADMIN, api_idnode_class, (void*)&mpegts_network_class },
{ "mpegts/network/builders", ACCESS_ADMIN, api_mpegts_network_builders, NULL },
{ "mpegts/network/create", ACCESS_ADMIN, api_mpegts_network_create, NULL },
{ "mpegts/network/mux_class", ACCESS_ADMIN, api_mpegts_network_muxclass, NULL },
{ "mpegts/network/mux_create", ACCESS_ADMIN, api_mpegts_network_muxcreate, NULL },
{ "mpegts/network/scan", ACCESS_ADMIN, api_mpegts_network_scan, NULL },
{ "mpegts/mux/grid", ACCESS_ADMIN, api_idnode_grid, api_mpegts_mux_grid },
{ "mpegts/mux/class", ACCESS_ADMIN, api_idnode_class, (void*)&mpegts_mux_class },
{ "mpegts/service/grid", ACCESS_ADMIN, api_idnode_grid, api_mpegts_service_grid },
{ "mpegts/service/class", ACCESS_ADMIN, api_idnode_class, (void*)&mpegts_service_class },
{ "mpegts/mux_sched/class", ACCESS_ADMIN, api_idnode_class, (void*)&mpegts_mux_sched_class },
{ "mpegts/mux_sched/grid", ACCESS_ADMIN, api_idnode_grid, api_mpegts_mux_sched_grid },
{ "mpegts/mux_sched/create", ACCESS_ADMIN, api_mpegts_mux_sched_create, NULL },
#if ENABLE_MPEGTS_DVB
{ "dvb/scanfile/list", ACCESS_ANONYMOUS, api_dvb_scanfile_list, NULL },
{ "dvb/orbitalpos/list", ACCESS_ADMIN, api_dvb_orbitalpos_list, NULL },
{ "dvb/scanfile/list", ACCESS_ADMIN, api_dvb_scanfile_list, NULL },
#endif
{ NULL },
};

Some files were not shown because too many files have changed in this diff Show more