From: Jaroslav Kysela Date: Wed, 12 Sep 2018 10:45:29 +0000 (+0200) Subject: mkv: set keyframe flag for all audio tracks, fixes #5151 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e71dd168f5a7355055505f3ee1a9674814a5d418;p=thirdparty%2Ftvheadend.git mkv: set keyframe flag for all audio tracks, fixes #5151 --- diff --git a/src/muxer/muxer_mkv.c b/src/muxer/muxer_mkv.c index f965e91a9..73ff9b0d5 100644 --- a/src/muxer/muxer_mkv.c +++ b/src/muxer/muxer_mkv.c @@ -1010,7 +1010,8 @@ mk_write_frame_i(mk_muxer_t *mk, mk_track_t *t, th_pkt_t *pkt) { int64_t pts = pkt->pkt_pts, delta, nxt; unsigned char c_delta_flags[3]; - int video = t->tracktype == 1; + const int video = t->tracktype == 1; + const int audio = t->tracktype == 2; int keyframe = 0, skippable = 0; if (video) { @@ -1093,6 +1094,7 @@ mk_write_frame_i(mk_muxer_t *mk, mk_track_t *t, th_pkt_t *pkt) c_delta_flags[0] = delta >> 8; c_delta_flags[1] = delta; + if (audio && pkt->a.pkt_keyframe) keyframe = 1; c_delta_flags[2] = (keyframe << 7) | skippable; htsbuf_append(mk->cluster, c_delta_flags, 3); htsbuf_append(mk->cluster, data, len); diff --git a/src/packet.h b/src/packet.h index 1911f3431..3b2bed91e 100644 --- a/src/packet.h +++ b/src/packet.h @@ -70,6 +70,7 @@ typedef struct th_pkt { uint16_t pkt_aspect_den; } v; struct { + uint8_t pkt_keyframe; uint8_t pkt_channels; uint8_t pkt_sri; uint8_t pkt_ext_sri; diff --git a/src/parsers/parsers.c b/src/parsers/parsers.c index 670614bf2..48be9cf18 100644 --- a/src/parsers/parsers.c +++ b/src/parsers/parsers.c @@ -527,6 +527,7 @@ makeapkt(parser_t *t, parser_es_t *st, const void *buf, pkt->pkt_commercial = t->prs_tt_commercial_advice; pkt->pkt_duration = duration; + pkt->a.pkt_keyframe = 1; pkt->a.pkt_channels = channels; pkt->a.pkt_sri = sri; pkt->pkt_err = st->es_buf_a.sb_err;