]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mdhelp: update/add various help docs + screenies mdhelp: update captions
authorMark Clarkstone <hello@markclarkstone.co.uk>
Wed, 11 May 2016 00:00:16 +0000 (01:00 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 11 May 2016 19:09:23 +0000 (21:09 +0200)
24 files changed:
docs/class/channel.md
docs/class/dvrconfig.md
docs/class/filters.md [new file with mode: 0644]
docs/class/mpegts_mux.md
docs/class/mpegts_service.md
docs/class/profile.md
docs/class/service_mapper.md [new file with mode: 0644]
docs/markdown/inc/play.md [new file with mode: 0644]
docs/markdown/status_connections.md
docs/markdown/status_service_mapper.md
docs/markdown/status_stream.md
docs/property/cache_scheme.md [new file with mode: 0644]
src/dvr/dvr_config.c
src/esfilter.c
src/parsers/parser_teletext.c
src/service_mapper.c
src/webui/static/img/doc/addfilterdialog.png [new file with mode: 0644]
src/webui/static/img/doc/configstreamprofiles.png
src/webui/static/img/doc/dvrnewprofile.png [new file with mode: 0644]
src/webui/static/img/doc/dvrprofiles.png [new file with mode: 0644]
src/webui/static/img/doc/status_connections.png [new file with mode: 0644]
src/webui/static/img/doc/statusservicemapper.png [new file with mode: 0644]
src/webui/static/img/doc/streamfiltertab.png [new file with mode: 0644]
src/webui/static/img/doc/streamtab.png [new file with mode: 0644]

index 2b61f5e2cd482b8444820194a53c2161ac698cc3..f14c4435b575d38c048b2d076bd6c678c3fe829d 100644 (file)
@@ -45,3 +45,7 @@ Numbering Button            | Function
 <tvh_include>inc/del_grid_entries</tvh_include>
 
 ---
+
+<tvh_include>inc/play</tvh_include>
+
+---
index 73a3d052dd2d5280521b04b1b41163f23341d30c..cb29ba5342dc40ab50600427dbc1adc42140c50d 100644 (file)
@@ -1,8 +1,49 @@
-##Configuration - Recording - Digital Video Recorder Profiles
-
 This tab is used to configure operation of the Digital Video Recorder.
 It is not used for scheduling or administration of individual
 recordings.
 
-!['Digital Video Recorder Profiles' Tab 1](static/img/doc/configdvrtab.png)
+!['Digital Video Recorder Profiles' Tab 1](static/img/doc/dvrprofiles.png)
+
+---
+
+###Menu Bar/Buttons
+
+The following functions are available:
+
+Button              | Function
+--------------------|---------
+**Save**            | Save any changes made to the selected profile
+**Undo**            | Undo any changes made to the selected profile since the last save.
+**Add**             | Add a new profile.
+**Delete**          | Delete an existing profile.
+**Clone**           | Clone the currently selected profile.
+
+<tvh_include>inc/common_button_table_end</tvh_include>
+
+---
+
+###Adding/Editing a Profile
+
+To create a new profile press the *[Add]* button from the 
+menu bar, a new entry "! New config" will be added to the grid, click 
+on that entry to configure it - don't forget to save!
+
+!['Add New Profile'](static/img/doc/dvrnewprofile.png)
+
+To edit an existing configuration, click on it from within the grid, the 
+*Parameters* panel should then appear on the right hand side.
+
+**Tips**: 
+* Remember to *[Save]* your changes before selecting another profile 
+from within the grid.
+* You can clone an existing profile by clicking the *[Clone]* 
+button.
+
+---
+
+###Deleting a Profile
+
+Highlight (select) the desired entry from the grid, then press the 
+*[Delete]* button from the menu bar. 
 
+---
diff --git a/docs/class/filters.md b/docs/class/filters.md
new file mode 100644 (file)
index 0000000..ad00e69
--- /dev/null
@@ -0,0 +1,46 @@
+This tab defines rules to filter and order the elementary streams 
+(PIDs) like video or audio from the input feed. The execution order of 
+commands is granted. It means that first rule is executed for all 
+available streams then second and so on.
+
+!['Stream filters'](static/img/doc/streamfiltertab.png)
+
+If any elementary stream is not marked as ignored or exclusive, it is 
+used. If you like to ignore unknown elementary streams, add a rule to 
+the end of grid with the any (not defined) comparisons and with the 
+action ignore.
+
+The rules for different elementary stream groups (video, audio,
+teletext, subtitle, CA, other) are executed separately (as visually edited).
+
+For the visual verification of the filtering, there is a service 
+info dialog in the [Services](class/mpegts_service) tab. 
+This dialog shows the received PIDs and filtered PIDs in one window.
+
+---
+<tvh_include>inc/common_button_table_start</tvh_include>
+
+<tvh_include>inc/common_button_table_end</tvh_include>
+
+Tab specific functions:
+
+Button                 | Function
+-----------------------|---------
+**Move Up**            | Move the selected entry up the grid.
+**Move Down**          | Move the selected entry down the grid. 
+
+---
+
+<tvh_include>inc/add_grid_entry</tvh_include>
+
+!['Stream filter dialog'](static/img/doc/addfilterdialog.png)
+
+---
+
+<tvh_include>inc/edit_grid_entries</tvh_include>
+
+---
+
+<tvh_include>inc/del_grid_entries</tvh_include>
+
+---
index fb58053cfc0123cfb8ba04e2332e86168c7dcd9d..0f878ef26f87f3127e4f310c309f293c879f4ed0 100644 (file)
@@ -68,17 +68,6 @@ automatically be re-added.
 
 ---
 
-###Playing a Mux
-
-You can stream a complete multiplex by copying/pasting the *Play* icon link 
-into the desired player/software.
-
-**Notes**:
-* The links don't link to the actual stream but to a playlist for 
-use with media players such as VLC, If you'd prefer to receive the raw 
-transport stream instead, you can do so by removing the `/play/` path from 
-the URL.
-* Not all devices support receiving a complete mux, notably low 
-powered set-top-boxes and older USB tuners. 
+<tvh_include>inc/play</tvh_include>
 
 ---
index 6402ab3c0b7338f4977263274b1b6c7799235273..0d44431f31f3552406306da7174bd40e31259041 100644 (file)
@@ -99,3 +99,14 @@ you'd like to associate/disassociate the service with.
 <tvh_include>inc/del_grid_entries</tvh_include>
 
 ---
+
+###Service Information
+
+Clicking the !['Information Icon'](static/icons/information.png) 
+information icon will display service details.
+
+---
+
+<tvh_include>inc/play</tvh_include>
+
+---
index 4c7d24a774e522397bb110119aabaff56e6f104f..d7b05bd5637a55f9e7ac6d5a21a7109ecb3487d9 100644 (file)
@@ -1,6 +1,6 @@
 Stream Profiles are the settings for output formats. These are used for Live TV
 streaming and recordings. The profiles are assigned through 
-the [Access Entries](class/access_entry),
+the [Access Entries](class/access),
 DVR Profiles or as parameter for HTTP Streaming.
 
 !['Stream Profiles'](static/img/doc/configstreamprofiles.png)
diff --git a/docs/class/service_mapper.md b/docs/class/service_mapper.md
new file mode 100644 (file)
index 0000000..9d1fc2f
--- /dev/null
@@ -0,0 +1,10 @@
+The map services to channels dialog allows you to control how 
+services are mapped. The options selected here get passed to the 
+[Service Mapper](status_service_mapper) tab when you press 
+the *[Map services]* button.
+
+!['Service mapper dialog'](static/img/doc/mapservicesdialog.png)
+
+See [Services](class/mpegts_service) for more details on service mapping.
+
+---
diff --git a/docs/markdown/inc/play.md b/docs/markdown/inc/play.md
new file mode 100644 (file)
index 0000000..9ff24b1
--- /dev/null
@@ -0,0 +1,11 @@
+###Playing a Stream/File
+
+You can play a stream/file by copying/pasting the Play icon link from 
+the grid into the desired player/software.
+
+**Notes**:
+* The links don't link to the actual stream but to a playlist for 
+use with media players such as VLC, If you'd prefer to receive the raw 
+stream instead, you can do so by removing the `/play/` path from 
+the URL - see [URL Syntax](url) for more.
+
index 40635d9ea11000cf1e840fb8f24b1702e1e368cb..3c551c5445de4424b51cfeecb8e657c10a3e8ded 100644 (file)
@@ -4,33 +4,35 @@ This tab shows information about all active connections.
 
 This is a read-only tab; nothing is configurable.
 
-!['Status - Subscriptions' Tab](static/img/doc/statusconnections.png)
+!['Status - Subscriptions' Tab](static/img/doc/status_connections.png)
 
 ---
 
-####Menu Bar/Buttons
+###Menu Bar/Buttons
 
 The following functions are available:
 
 Button     | Function
 -----------|---------
 **Help**   | Display this help page.
-**View Level**| Change the interface view level to show/hide more advanced options.
 
 ---
 
-####Grid Items
+###Grid Items
 
 The main grid items have the following functions:
 
-**Item**
-: Description
+**!['Cancel'](static/icons/cancel.png)**
+: Forcefully kill the connection. Note that many applications such as Kodi will automatically reconnect when a connection is dropped.
 
-**Item**
-: Description
+**Type**
+: Connection type - HTSP or HTTP.
 
-**Item**
-: Description
+**IP Address**
+: The IP address of the device. 
 
-**Item**
-: Description
+**Username**
+: The username used to access tvheadend (a blank cell indicates no username was supplied).
+
+**Started**
+: Date the connection started - YYYY-MM-DD HH:MM:SS.
index 473faf77b003c7eb076f4d647cfcd2d1ee3dc307..f1721b9268ca2d32a722749362701b74a3de85ca 100644 (file)
@@ -1,14 +1,18 @@
-##Status - Service Mapper
+##Service Mapper 
 
-This tab shows information about current service mapping activity.
+This tab shows information about current service mapping activity. 
 
-This is a read-only tab; nothing is configurable.
+This is a read-only tab; nothing is configurable. 
 
-!['Status - Subscriptions' Tab](static/img/doc/statusservicemapper.png)
+!['Status - Subscriptions' Tab](static/img/doc/statusservicemapper.png) 
+
+
+The [Map services to channels](class/service_mapper) dialog 
+determines how services are mapped.
 
 ---
 
-####Menu Bar/Buttons
+###Menu Bar/Buttons
 
 The following functions are available:
 
@@ -18,18 +22,16 @@ Button     | Function
 
 ---
 
-####Grid Items
-
-The main grid items have the following functions:
+###Items
 
-**Item**
-: Description
+**Mapped** 
+: Number of services mapped. 
 
-**Item**
-: Description
+**Ignored** 
+: Number of services ignored. 
 
-**Item**
-: Description
+**Failed** 
+: Number of services that failed to be mapped.
 
-**Item**
-: Description
+**Active** 
+: Progress bar indicating mapping status.
index 077bb1abe2d958885b025e96bc9093fd5ccd4510..14e659887039ba611f88d754ec3cf7aba52be5e6 100644 (file)
@@ -4,11 +4,11 @@ This tab shows information about all currently-open streams.
 
 This is a read-only tab; nothing is configurable.
 
-!['Status - Stream' Tab](static/img/doc/statusstream.png)
+!['Status - Stream' Tab](static/img/doc/streamtab.png)
 
 ---
 
-####Menu Bar/Buttons
+###Menu Bar/Buttons
 
 The following functions are available:
 
@@ -18,18 +18,50 @@ Button        | Function
 
 ---
 
-####Grid Items
+###Grid Items
 
 The main grid items have the following functions:
 
-**Item**
-: Description
+**Sweep/Clean Icon !['Status - Stream' Tab](static/icons/clean.png)**
+: Clear all "Uncorrected Blocks", "BER", etc stats. 
 
-**Item**
-: Description
+**Input**
+: Device used to receive the stream.
 
-**Item**
-: Description
+**Sub No**
+: Number of subscriptions using the stream.
+
+**Weight**
+: Stream weighting. 
+
+**Bandwidth**
+: Total stream input bandwidth.
+
+**BER**
+: [Bit Error Ratio](https://en.wikipedia.org/wiki/Bit_error_rate)
+
+**PER**
+: [Packet Error Ratio](https://en.wikipedia.org/wiki/Bit_error_rate#Packet_error_ratio)
+
+**Uncorrected Blocks**
+: Number of uncorrected blocks. A value higher than 0 can indicate a 
+weak signal or interference, note that some devices can send a false value.
+
+**Transport Errors**
+: Number of transport streams errors. A fast increasing value here can 
+indicate signal issues. Device drivers can sometimes send garbage data at 
+the beginning of a stream, as long as the value doesn't increase at a fast 
+pace and you have no playback issues, there is nothing to worry about.
+
+**Continuity Errors**
+: Continuity Count Error. Number of stream errors, a high value here can indicate a signal problem.
+
+**SNR**
+: Signal (To) Noise Ratio. [The level of a desired signal to the level of background noise](https://en.wikipedia.org/wiki/Signal-to-noise_ratio), 
+note that not all devices supply correct signal information, 
+the value here can sometimes be ambiguous.
+
+**Signal Strength**
+: The signal strength as reported by the device, note that not all devices 
+supply correct signal information, the value here can sometimes be ambiguous
 
-**Item**
-: Description
diff --git a/docs/property/cache_scheme.md b/docs/property/cache_scheme.md
new file mode 100644 (file)
index 0000000..f77055d
--- /dev/null
@@ -0,0 +1,16 @@
+:
+
+Whenever you read or write data to the filesystems, the information is 
+kept (cached) in memory for a while. This means that regularly-access 
+files are available quickly without going back to the disc; it also 
+means that there’s a disconnect when writing between the write request 
+(from the application) and the actual write itself (to the disc/storage) 
+as changes are buffered to be written in one go.
+
+Scheme                 | Description 
+-----------------------|------------
+**Unknown**            | A placeholder status, meaning that the configuration isn’t properly set.
+**System**             | Change nothing and rely on standard (default) system caching to behave as it normally would.
+**Don't keep**         | Tell the system that you’re not expecting to re-use the data soon, so don’t keep it in cache. The data will still be buffered for writing. Useful e.g. in a RAM-limited system like a Pi (given that you’re unlikely to be watching while recording, so data can be discarded now and read back from disc later).
+**Sync**               | Tell the system to write the data immediately. This doesn’t affect whether or not it’s cached. Useful e.g. if you’ve a particular problem with data loss due to delayed write (such as if you get frequent transient power problems).
+**Sync + Don't keep**  | A combination of last two variants above - data is written immediately and then discarded from cache.
index 6ac78d22c74a3e9a27ab72dc9d89c2b07727ebdd..ffdd5973a899ab3d83699a3b69d7228d0cffb0f9 100644 (file)
@@ -796,10 +796,11 @@ PROP_DOC(preprocessor)
 PROP_DOC(postprocessor)
 PROP_DOC(postremove)
 PROP_DOC(pathname)
+PROP_DOC(cache_scheme)
 
 const idclass_t dvr_config_class = {
   .ic_class      = "dvrconfig",
-  .ic_caption    = N_("DVR - Configuration Profile"),
+  .ic_caption    = N_("DVR - Profiles"),
   .ic_event      = "dvrconfig",
   .ic_doc        = tvh_doc_dvrconfig_class,
   .ic_changed    = dvr_config_class_changed,
@@ -887,10 +888,11 @@ const idclass_t dvr_config_class = {
       .desc     = N_("The cache scheme to use/used to store recordings. "
                      "Leave as \"system\" unless you have a special use "
                      "case for one of the others. See Help for details."),
+      .doc      = prop_doc_cache_scheme,
       .off      = offsetof(dvr_config_t, dvr_muxcnf.m_cache),
       .def.i    = MC_CACHE_DONTKEEP,
       .list     = dvr_config_class_cache_list,
-      .opts     = PO_ADVANCED,
+      .opts     = PO_ADVANCED | PO_DOC_NLIST,
       .group    = 1,
     },
     {
index 7be72ddf40657d41b962ee27fe6a7e04be0273cd..f7bd67c5f30943766c2eebf28edbf9d600ca34ff 100644 (file)
@@ -591,9 +591,12 @@ esfilter_class_action_enum(void *o, const char *lang)
   return l;
 }
 
+CLASS_DOC(filters)
+
 const idclass_t esfilter_class = {
   .ic_class      = "esfilter",
   .ic_caption    = N_("Elementary stream filter"),
+  .ic_doc        = tvh_doc_filters_class,
   .ic_event      = "esfilter",
   .ic_perm_def   = ACCESS_ADMIN,
   .ic_save       = esfilter_class_save,
@@ -606,14 +609,14 @@ const idclass_t esfilter_class = {
       .type     = PT_INT,
       .id       = "class",
       .name     = N_("Class"),
-      .opts     = PO_RDONLY | PO_HIDDEN,
+      .opts     = PO_RDONLY | PO_HIDDEN | PO_DOC_NLIST,
       .off      = offsetof(esfilter_t, esf_class),
     },
     {
       .type     = PT_INT,
       .id       = "index",
       .name     = N_("Index"),
-      .opts     = PO_RDONLY | PO_HIDDEN,
+      .opts     = PO_RDONLY | PO_HIDDEN | PO_DOC_NLIST,
       .off      = offsetof(esfilter_t, esf_index),
     },
     {
@@ -630,7 +633,7 @@ const idclass_t esfilter_class = {
 const idclass_t esfilter_class_video = {
   .ic_super      = &esfilter_class,
   .ic_class      = "esfilter_video",
-  .ic_caption    = N_("Video stream filter"),
+  .ic_caption    = N_("Video Stream Filter"),
   .ic_properties = (const property_t[]){
     {
       .type     = PT_STR,
@@ -652,6 +655,7 @@ const idclass_t esfilter_class_video = {
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
+      .opts     = PO_DOC_NLIST,
     },
     {
       .type     = PT_STR,
@@ -722,7 +726,7 @@ const idclass_t esfilter_class_video = {
 const idclass_t esfilter_class_audio = {
   .ic_super      = &esfilter_class,
   .ic_class      = "esfilter_audio",
-  .ic_caption    = N_("Audio stream filter"),
+  .ic_caption    = N_("Audio Stream Filter"),
   .ic_properties = (const property_t[]){
     {
       .type     = PT_STR,
@@ -744,6 +748,7 @@ const idclass_t esfilter_class_audio = {
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
+      .opts     = PO_DOC_NLIST,
     },
     {
       .type     = PT_STR,
@@ -814,7 +819,7 @@ const idclass_t esfilter_class_audio = {
 const idclass_t esfilter_class_teletext = {
   .ic_super      = &esfilter_class,
   .ic_class      = "esfilter_teletext",
-  .ic_caption    = N_("Teletext stream filter"),
+  .ic_caption    = N_("Teletext Stream Filter"),
   .ic_properties = (const property_t[]){
     {
       .type     = PT_STR,
@@ -836,6 +841,7 @@ const idclass_t esfilter_class_teletext = {
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
+      .opts     = PO_DOC_NLIST,
     },
     {
       .type     = PT_STR,
@@ -906,7 +912,7 @@ const idclass_t esfilter_class_teletext = {
 const idclass_t esfilter_class_subtit = {
   .ic_super      = &esfilter_class,
   .ic_class      = "esfilter_subtit",
-  .ic_caption    = N_("Subtitle stream filter"),
+  .ic_caption    = N_("Subtitle Stream Filter"),
   .ic_properties = (const property_t[]){
     {
       .type     = PT_STR,
@@ -928,6 +934,7 @@ const idclass_t esfilter_class_subtit = {
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
+      .opts     = PO_DOC_NLIST,
     },
     {
       .type     = PT_STR,
@@ -998,7 +1005,7 @@ const idclass_t esfilter_class_subtit = {
 const idclass_t esfilter_class_ca = {
   .ic_super      = &esfilter_class,
   .ic_class      = "esfilter_ca",
-  .ic_caption    = N_("CA stream filter"),
+  .ic_caption    = N_("CA Stream Filter"),
   .ic_properties = (const property_t[]){
     {
       .type     = PT_STR,
@@ -1101,7 +1108,7 @@ const idclass_t esfilter_class_ca = {
 const idclass_t esfilter_class_other = {
   .ic_super      = &esfilter_class,
   .ic_class      = "esfilter_other",
-  .ic_caption    = N_("Other stream filter"),
+  .ic_caption    = N_("Other Stream Filter"),
   .ic_properties = (const property_t[]){
     {
       .type     = PT_STR,
@@ -1123,6 +1130,7 @@ const idclass_t esfilter_class_other = {
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
+      .opts     = PO_DOC_NLIST,
     },
     {
       .type     = PT_STR,
index a51dc1b921c3fa39a4ebc6c44272e520b791cb3d..236098f6371b7862136a4695fcec2d15097fdf87 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Teletext parsing functions
- *  Copyright (C) 2007 Andreas Öman
+ *  Copyright (C) 2007 Andreas Öman
  *  Copyright (C) 2014 Jaroslav Kysela
  *
  *  This program is free software: you can redistribute it and/or modify
index 1b3ed70c5811135d31a8afbdbe3c86c88c9946be..1c81625b1719328e4d856ac5f9770f90cf670ed6 100644 (file)
@@ -475,10 +475,13 @@ service_mapper_services_enum ( void *obj, const char *lang )
   return m;
 }
 
+CLASS_DOC(service_mapper)
+
 static const idclass_t service_mapper_conf_class = {
   .ic_snode      = &service_mapper_conf.idnode,
   .ic_class      = "service_mapper",
-  .ic_caption    = N_("Service mapper"),
+  .ic_caption    = N_("Service Mapping (Map services to channels)"),
+  .ic_doc        = tvh_doc_service_mapper_class,
   .ic_event      = "service_mapper",
   .ic_perm_def   = ACCESS_ADMIN,
   .ic_save       = service_mapper_conf_class_save,
@@ -488,7 +491,7 @@ static const idclass_t service_mapper_conf_class = {
       .islist = 1,
       .id     = "services",
       .name   = N_("Services"),
-      .desc   = N_("Select services to map."),
+      .desc   = N_("Select/Selected services to map."),
       .get    = service_mapper_services_get,
       .set    = service_mapper_services_set,
       .list   = service_mapper_services_enum,
diff --git a/src/webui/static/img/doc/addfilterdialog.png b/src/webui/static/img/doc/addfilterdialog.png
new file mode 100644 (file)
index 0000000..32319c2
Binary files /dev/null and b/src/webui/static/img/doc/addfilterdialog.png differ
index 7826ba3f7bad57e1a87b5c32ff9643a2d45a838a..a868b7bca80a82d4b2c8d2ff6be9428676b1138e 100644 (file)
Binary files a/src/webui/static/img/doc/configstreamprofiles.png and b/src/webui/static/img/doc/configstreamprofiles.png differ
diff --git a/src/webui/static/img/doc/dvrnewprofile.png b/src/webui/static/img/doc/dvrnewprofile.png
new file mode 100644 (file)
index 0000000..27d07d2
Binary files /dev/null and b/src/webui/static/img/doc/dvrnewprofile.png differ
diff --git a/src/webui/static/img/doc/dvrprofiles.png b/src/webui/static/img/doc/dvrprofiles.png
new file mode 100644 (file)
index 0000000..d9cf357
Binary files /dev/null and b/src/webui/static/img/doc/dvrprofiles.png differ
diff --git a/src/webui/static/img/doc/status_connections.png b/src/webui/static/img/doc/status_connections.png
new file mode 100644 (file)
index 0000000..f959cc5
Binary files /dev/null and b/src/webui/static/img/doc/status_connections.png differ
diff --git a/src/webui/static/img/doc/statusservicemapper.png b/src/webui/static/img/doc/statusservicemapper.png
new file mode 100644 (file)
index 0000000..190856e
Binary files /dev/null and b/src/webui/static/img/doc/statusservicemapper.png differ
diff --git a/src/webui/static/img/doc/streamfiltertab.png b/src/webui/static/img/doc/streamfiltertab.png
new file mode 100644 (file)
index 0000000..d89e71f
Binary files /dev/null and b/src/webui/static/img/doc/streamfiltertab.png differ
diff --git a/src/webui/static/img/doc/streamtab.png b/src/webui/static/img/doc/streamtab.png
new file mode 100644 (file)
index 0000000..db483fb
Binary files /dev/null and b/src/webui/static/img/doc/streamtab.png differ