From: Jaroslav Kysela Date: Thu, 18 May 2017 06:41:18 +0000 (+0200) Subject: mkv muxer: always create first chapter at position 0 X-Git-Tag: v4.2.3~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa3c28ff6edaa4c3e636caba777d49774dda02d1;p=thirdparty%2Ftvheadend.git mkv muxer: always create first chapter at position 0 --- diff --git a/src/muxer/muxer_mkv.c b/src/muxer/muxer_mkv.c index 016a90be6..8cdee2c18 100644 --- a/src/muxer/muxer_mkv.c +++ b/src/muxer/muxer_mkv.c @@ -88,7 +88,7 @@ typedef struct mk_cue { */ typedef struct mk_chapter { TAILQ_ENTRY(mk_chapter) link; - int uuid; + uint32_t uuid; int64_t ts; } mk_chapter_t; @@ -911,6 +911,22 @@ addcue(mk_muxer_t *mk, int64_t pts, int tracknum) } +/** + * + */ +static void +mk_add_chapter0(mk_muxer_t *mk, uint32_t uuid, int64_t ts) +{ + mk_chapter_t *ch; + + ch = malloc(sizeof(mk_chapter_t)); + + ch->uuid = uuid; + ch->ts = ts; + + TAILQ_INSERT_TAIL(&mk->chapters, ch, link); +} + /** * */ @@ -922,23 +938,21 @@ mk_add_chapter(mk_muxer_t *mk, int64_t ts) ch = TAILQ_LAST(&mk->chapters, mk_chapter_queue); if(ch) { - // don't add a new chapter if the previous one was - // added less than 10s ago - if(ts - ch->ts < 10000) + /* don't add a new chapter if the previous one was added less than 5s ago */ + if(ts - ch->ts < 5000) return; uuid = ch->uuid + 1; - } - else { + } else { uuid = 1; + /* create first chapter at zero position */ + if (ts >= 5000) { + mk_add_chapter0(mk, uuid++, ts); + } else { + ts = 0; + } } - - ch = malloc(sizeof(mk_chapter_t)); - - ch->uuid = uuid; - ch->ts = ts; - - TAILQ_INSERT_TAIL(&mk->chapters, ch, link); + mk_add_chapter0(mk, uuid, ts); } /** @@ -1329,6 +1343,7 @@ mkv_muxer_open_stream(muxer_t *m, int fd) mk->filename = strdup("Live stream"); mk->fd = fd; mk->cluster_maxsize = 0; + mk->totduration = 0; return 0; } @@ -1365,6 +1380,7 @@ mkv_muxer_open_file(muxer_t *m, const char *filename) mk->fd = fd; mk->cluster_maxsize = 2000000; mk->seekable = 1; + mk->totduration = 0; return 0; }