[FFmpeg-devel] [PATCH] avformat/hls: add supporting EXT-X-DISCONTINUITY tag

Aleksey Skripka caspy at undev.ru
Sat Jul 18 20:29:01 EEST 2020


Greetings!

unconditional AVFMT_TS_DISCONT also helps to survive when pts rollover in mpegts occurs.
seems like this patch will break again reading long-lasting hls.

-- 
Aleksey Skripka



> On 17 Jul 2020, at 04:09, Dongwon Kim <dongwon00.kim at gmail.com> wrote:
> 
> I modified setting AVFMT_TS_DISCONT flag on HLS input format depending on whether "EXT-X-DISCONTINUITY" existed or not in M3U8.
> previous, commits are set "AVFMT_TS_DISCONT" flag unconditionally, whether "EXT-X-DISCONTINUITY" existed or not, as below
> https://github.com/FFmpeg/FFmpeg/commit/d6ac6650b911f0957e69545d7fc25be6b7728705#diff-0e876d29bdcae30d9d256f04bc8795db
> 
> So, I added checking and parsing "EXT-X-DISCONTINUITY" syntax, and if only it exists then set AVFMT_TS_DISCONT flag.
> 
> 
> On Fri, Jul 17, 2020 at 12:43:05AM +0000, Dongwon Kim wrote:
>> Signed-off-by: Dongwon Kim <dongwon.kim at sk.com>
>> ---
>> libavformat/hls.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>> 
>> diff --git a/libavformat/hls.c b/libavformat/hls.c index ba17c4ed96..5e331ab68f 100644
>> --- a/libavformat/hls.c
>> +++ b/libavformat/hls.c
>> @@ -810,6 +810,8 @@ static int parse_playlist(HLSContext *c, const char *url,
>>             ff_parse_key_value(ptr, (ff_parse_key_val_cb) handle_rendition_args,
>>                                &info);
>>             new_rendition(c, &info, url);
>> +        } else if (av_strstart(line, "#EXT-X-DISCONTINUITY", &ptr)) {
>> +            c->ctx->iformat->flags |= AVFMT_TS_DISCONT;
>>         } else if (av_strstart(line, "#EXT-X-TARGETDURATION:", &ptr)) {
>>             ret = ensure_playlist(c, &pls, url);
>>             if (ret < 0)
>> @@ -2406,7 +2408,7 @@ AVInputFormat ff_hls_demuxer = {
>>     .long_name      = NULL_IF_CONFIG_SMALL("Apple HTTP Live Streaming"),
>>     .priv_class     = &hls_class,
>>     .priv_data_size = sizeof(HLSContext),
>> -    .flags          = AVFMT_NOGENSEARCH | AVFMT_TS_DISCONT,
>> +    .flags          = AVFMT_NOGENSEARCH,
>>     .read_probe     = hls_probe,
>>     .read_header    = hls_read_header,
>>     .read_packet    = hls_read_packet,
>> --
>> 2.25.1
>> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".



More information about the ffmpeg-devel mailing list