[FFmpeg-devel] [PATCH 1/1] avformat hls check discard state of streams always
vectronic
hello.vectronic at gmail.com
Fri May 1 18:24:36 EEST 2020
The discard needs to be checked on a stream even after the first packet is read. The first packet has already been read as part of calling avformat_find_stream_info. This means that setting AVStream->discard on a stream after having determined the stream info for the HLS package had no effect and unwanted packets were returned by subsequent calls to hls_read_packet.
Signed-off-by: vectronic <hello.vectronic at gmail.com>
---
libavformat/hls.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libavformat/hls.c b/libavformat/hls.c
index fc45719d1c..0740e9c546 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -2014,7 +2014,7 @@ fail:
return ret;
}
-static int recheck_discard_flags(AVFormatContext *s, int first)
+static int recheck_discard_flags(AVFormatContext *s)
{
HLSContext *c = s->priv_data;
int i, changed = 0;
@@ -2041,7 +2041,7 @@ static int recheck_discard_flags(AVFormatContext *s, int first)
pls->seek_stream_index = -1;
}
av_log(s, AV_LOG_INFO, "Now receiving playlist %d, segment %d\n", i, pls->cur_seq_no);
- } else if (first && !cur_needed && pls->needed) {
+ } else if (!cur_needed && pls->needed) {
ff_format_io_close(pls->parent, &pls->input);
pls->input_read_done = 0;
ff_format_io_close(pls->parent, &pls->input_next);
@@ -2101,7 +2101,7 @@ static int hls_read_packet(AVFormatContext *s, AVPacket *pkt)
HLSContext *c = s->priv_data;
int ret, i, minplaylist = -1;
- recheck_discard_flags(s, c->first_packet);
+ recheck_discard_flags(s);
c->first_packet = 0;
for (i = 0; i < c->n_playlists; i++) {
--
2.24.2 (Apple Git-127)
More information about the ffmpeg-devel
mailing list