Message ID | HK0PR02MB3601CDA7444C0A2D5B504209C59E0@HK0PR02MB3601.apcprd02.prod.outlook.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/2] fix the bug that AV_PKT_FLAG_CORRUPT flags lost after parse_packet() | expand |
Context | Check | Description |
---|---|---|
andriy/default | pending | |
andriy/make | success | Make finished |
andriy/make_fate | fail | Make fate failed |
levizhao@live.cn: > From: zhaoyi <levizhao@live.cn> > > --- > libavformat/utils.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/libavformat/utils.c b/libavformat/utils.c > index 667249362c..a74c0f74a2 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -1516,6 +1516,7 @@ static int parse_packet(AVFormatContext *s, AVPacket *pkt, > out_pkt.dts = st->parser->dts; > out_pkt.pos = st->parser->pos; > out_pkt.flags |= pkt->flags & AV_PKT_FLAG_DISCARD; > + out_pkt.flags |= pkt->flags & AV_PKT_FLAG_CORRUPT; > > if (st->need_parsing == AVSTREAM_PARSE_FULL_RAW) > out_pkt.pos = st->parser->frame_offset; > You can combine this with the line above via pkt->flags & (AV_PKT_FLAG_DISCARD | AV_PKT_FLAG_CORRUPT). - Andreas
On Sat, 13 Jun 2020, Andreas Rheinhardt wrote: > levizhao@live.cn: >> From: zhaoyi <levizhao@live.cn> >> >> --- >> libavformat/utils.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/libavformat/utils.c b/libavformat/utils.c >> index 667249362c..a74c0f74a2 100644 >> --- a/libavformat/utils.c >> +++ b/libavformat/utils.c >> @@ -1516,6 +1516,7 @@ static int parse_packet(AVFormatContext *s, AVPacket *pkt, >> out_pkt.dts = st->parser->dts; >> out_pkt.pos = st->parser->pos; >> out_pkt.flags |= pkt->flags & AV_PKT_FLAG_DISCARD; >> + out_pkt.flags |= pkt->flags & AV_PKT_FLAG_CORRUPT; >> >> if (st->need_parsing == AVSTREAM_PARSE_FULL_RAW) >> out_pkt.pos = st->parser->frame_offset; >> > You can combine this with the line above via pkt->flags & > (AV_PKT_FLAG_DISCARD | AV_PKT_FLAG_CORRUPT). I sent a similar patch a while ago, but Michael was against it because a parser can repacketize packets, and it is not clear what should we do if part of a packet comes from a corrupt packet. Nevertheless I still think it is better to propagate this flag as this patch does it, than removing all corrupt flags at parsing. Regards, Marton
diff --git a/libavformat/utils.c b/libavformat/utils.c index 667249362c..a74c0f74a2 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1516,6 +1516,7 @@ static int parse_packet(AVFormatContext *s, AVPacket *pkt, out_pkt.dts = st->parser->dts; out_pkt.pos = st->parser->pos; out_pkt.flags |= pkt->flags & AV_PKT_FLAG_DISCARD; + out_pkt.flags |= pkt->flags & AV_PKT_FLAG_CORRUPT; if (st->need_parsing == AVSTREAM_PARSE_FULL_RAW) out_pkt.pos = st->parser->frame_offset;
From: zhaoyi <levizhao@live.cn> --- libavformat/utils.c | 1 + 1 file changed, 1 insertion(+)