diff --git a/docs/html/config_tvadapters.html b/docs/html/config_tvadapters.html index 12802af4..27a9c273 100644 --- a/docs/html/config_tvadapters.html +++ b/docs/html/config_tvadapters.html @@ -72,6 +72,10 @@ The rows have the following functions
+
diff --git a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c index eca30ce6..620dcec3 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c @@ -106,6 +106,13 @@ const idclass_t linuxdvb_frontend_class = .opts = PO_ADVANCED, .off = offsetof(linuxdvb_frontend_t, lfe_skip_bytes), }, + { + .type = PT_U32, + .id = "ibuf_size", + .name = "Input Buffer (Bytes)", + .opts = PO_ADVANCED, + .off = offsetof(linuxdvb_frontend_t, lfe_ibuf_size), + }, {} } }; @@ -886,7 +893,7 @@ linuxdvb_frontend_input_thread ( void *aux ) tvhpoll_add(efd, ev, 2); /* Allocate memory */ - sbuf_init_fixed(&sb, 18800); + sbuf_init_fixed(&sb, MIN(MAX(18800, lfe->lfe_ibuf_size), 1880000)); /* Read */ while (tvheadend_running) { @@ -1433,6 +1440,7 @@ linuxdvb_frontend_create lfe->lfe_type = type; strncpy(lfe->lfe_name, name, sizeof(lfe->lfe_name)); lfe->lfe_name[sizeof(lfe->lfe_name)-1] = '\0'; + lfe->lfe_ibuf_size = 18800; lfe = (linuxdvb_frontend_t*)mpegts_input_create0((mpegts_input_t*)lfe, idc, uuid, conf); if (!lfe) return NULL; diff --git a/src/input/mpegts/linuxdvb/linuxdvb_private.h b/src/input/mpegts/linuxdvb/linuxdvb_private.h index 7d8156ae..f03557c8 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_private.h +++ b/src/input/mpegts/linuxdvb/linuxdvb_private.h @@ -116,6 +116,7 @@ struct linuxdvb_frontend int lfe_powersave; int lfe_tune_repeats; uint32_t lfe_skip_bytes; + uint32_t lfe_ibuf_size; /* * Satconf (DVB-S only)