Message ID | 20210516085939.605268-1-sj.hc_Zhong@sjtu.edu.cn |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/1] avformat/hlsenc: Fix bug on start_pts | expand |
Context | Check | Description |
---|---|---|
andriy/x86_make | success | Make finished |
andriy/x86_make_fate | success | Make fate finished |
andriy/PPC64_make | success | Make finished |
andriy/PPC64_make_fate | success | Make fate finished |
On Sun, 16 May 2021 16:59:39 +0800 Hongcheng Zhong <sj.hc_Zhong@sjtu.edu.cn> wrote: > From: spartazhc <spartazhc@gmail.com> > > This patch fixes Bug #9237 > In some bitstream, pts of some video packet can be N/A, which will set > start_pts to AV_NOPTS_VALUE. Adding an if condition can fix it. > > Signed-off-by: spartazhc <spartazhc@gmail.com> > --- > libavformat/hlsenc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index 5db7a744b4..fd265d0ffd 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -2446,7 +2446,8 @@ static int hls_write_packet(AVFormatContext *s, > AVPacket *pkt) if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) > vs->start_pts_from_audio = 1; > } > - if (vs->start_pts_from_audio && st->codecpar->codec_type == > AVMEDIA_TYPE_VIDEO && vs->start_pts > pkt->pts) { > + if (vs->start_pts_from_audio && st->codecpar->codec_type == > AVMEDIA_TYPE_VIDEO > + && vs->start_pts > pkt->pts && pkt->pts != AV_NOPTS_VALUE) { maybe it's better put pkt->pts != AV_NOPTS_VALUE before pkt->pts != AV_NOPTS_VALUE ? > vs->start_pts = pkt->pts; > vs->start_pts_from_audio = 0; > } Regards, Lingjiang Fang
diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 5db7a744b4..fd265d0ffd 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2446,7 +2446,8 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) vs->start_pts_from_audio = 1; } - if (vs->start_pts_from_audio && st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && vs->start_pts > pkt->pts) { + if (vs->start_pts_from_audio && st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO + && vs->start_pts > pkt->pts && pkt->pts != AV_NOPTS_VALUE) { vs->start_pts = pkt->pts; vs->start_pts_from_audio = 0; }