diff mbox series

[FFmpeg-devel] libavformat/hlsenc.c resend headers when generate a new segment in single_file mode

Message ID 20220625151433.83031-1-heng.hu.1989@gmail.com
State New
Headers show
Series [FFmpeg-devel] libavformat/hlsenc.c resend headers when generate a new segment in single_file mode | expand

Checks

Context Check Description
yinshiyou/commit_msg_loongarch64 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/commit_msg_x86 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/commit_msg_armv7_RPi4 warning The first line of the commit message must start with a context terminated by a colon and a space, for example "lavu/opt: " or "doc: ".
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished

Commit Message

hu heng June 25, 2022, 3:14 p.m. UTC
Add pat and pmt table at start of each segment in single_file mode
enhanced compatibility of hls stream

Because some hls clients separate parsing segment of hls stream,
the absence of pat/pmt will cause parsing to fail

Signed-off-by: huheng <heng.hu.1989@gmail.com>
---
 libavformat/hlsenc.c | 5 +++++
 1 file changed, 5 insertions(+)
diff mbox series

Patch

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 3bafddfa61..ee5c5afe56 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -2631,6 +2631,11 @@  static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
             vs->start_pos += vs->size;
             if (hls->key_info_file || hls->encrypt)
                 ret = hls_start(s, vs);
+
+            if (oc->oformat->priv_class && oc->priv_data) {
+                av_opt_set(oc->priv_data, "mpegts_flags", "resend_headers", 0);
+            }
+
         } else if (hls->max_seg_size > 0) {
             if (vs->size + vs->start_pos >= hls->max_seg_size) {
                 vs->sequence++;