From: Flole998 Date: Wed, 31 Jan 2024 12:41:24 +0000 (+0000) Subject: Add timeshift support for audio-only channels X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcfbe7dbeebb79c08fad22a214ecbfbbd426a3bd;p=thirdparty%2Ftvheadend.git Add timeshift support for audio-only channels --- diff --git a/src/timeshift/private.h b/src/timeshift/private.h index 5c6000e2a..16536229c 100644 --- a/src/timeshift/private.h +++ b/src/timeshift/private.h @@ -131,6 +131,7 @@ typedef struct timeshift { int file_segments; ///< Count of segments in files int vididx; ///< Index of (current) video stream + int audidx; ///< Index of (current) audio stream streaming_start_t *smt_start; ///< Streaming start info diff --git a/src/timeshift/timeshift_writer.c b/src/timeshift/timeshift_writer.c index 8eb22a167..6f15a38c1 100644 --- a/src/timeshift/timeshift_writer.c +++ b/src/timeshift/timeshift_writer.c @@ -249,6 +249,13 @@ static void _update_smt_start ( timeshift_t *ts, streaming_start_t *ss ) ts->vididx = ss->ss_components[i].es_index; break; } + + /* Update audio index */ + for (i = 0; i < ss->ss_num_components; i++) + if (SCT_ISAUDIO(ss->ss_components[i].es_type)) { + ts->audidx = ss->ss_components[i].es_index; + break; + } } /* @@ -283,9 +290,9 @@ static inline ssize_t _process_msg0 if (err > 0) { th_pkt_t *pkt = sm->sm_data; - /* Index video iframes */ - if (pkt->pkt_componentindex == ts->vididx && - pkt->v.pkt_frametype == PKT_I_FRAME) { + /* Index video iframes or audio frames for audio-only streams*/ + if ((pkt->pkt_componentindex == ts->vididx && pkt->v.pkt_frametype == PKT_I_FRAME) || + (ts->vididx == -1 && pkt->pkt_componentindex == ts->audidx)) { timeshift_index_iframe_t *ti = calloc(1, sizeof(timeshift_index_iframe_t)); memoryinfo_alloc(×hift_memoryinfo, sizeof(*ti)); ti->pos = tsf->size;