[FFmpeg-devel] [PATCH 1/2] fix the bug that AV_PKT_FLAG_CORRUPT flags lost after parse_packet()

Marton Balint cus at passwd.hu
Sun Jun 28 23:26:58 EEST 2020



On Sat, 13 Jun 2020, Andreas Rheinhardt wrote:

> levizhao at live.cn:
>> From: zhaoyi <levizhao at 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



More information about the ffmpeg-devel mailing list