[FFmpeg-devel] [PATCH v2] avformat/flvdec: check FLVHeader PreviousTagSize0
Steven Liu
lingjiujianke at gmail.com
Tue Mar 28 12:00:03 EEST 2017
2017-03-26 18:39 GMT+08:00 Bodecs Bela <bodecsb at vivanet.hu>:
>
>
> 2017.03.25. 14:15 keltezéssel, Steven Liu írta:
>
>> refer to SPEC:
>> Annex E. The FLV File Format said:
>> E.3 TheFLVFileBody have a table:
>> Field Type Comment
>> PreviousTagSize0 UI32 Always 0
>>
>> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
>> ---
>> libavformat/flvdec.c | 12 +++++++++++-
>> 1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
>> index cdcfb9c..94c9e28 100644
>> --- a/libavformat/flvdec.c
>> +++ b/libavformat/flvdec.c
>> @@ -709,6 +709,7 @@ static int flv_read_header(AVFormatContext *s)
>> int flags;
>> FLVContext *flv = s->priv_data;
>> int offset;
>> + int pre_tag_size = 0;
>> avio_skip(s->pb, 4);
>> flags = avio_r8(s->pb);
>> @@ -719,7 +720,16 @@ static int flv_read_header(AVFormatContext *s)
>> offset = avio_rb32(s->pb);
>> avio_seek(s->pb, offset, SEEK_SET);
>> - avio_skip(s->pb, 4);
>> +
>> + /* Annex E. The FLV File Format
>> + * E.3 TheFLVFileBody
>> + * Field Type Comment
>> + * PreviousTagSize0 UI32 Always 0
>> + * */
>> + pre_tag_size = avio_rb32(s->pb);
>> + if (pre_tag_size) {
>> + av_log(s, AV_LOG_WARNING, "Read FLV header error, input file is
>> not a standard flv format, first PreviousTagSize0 always is 0\n");
>> + }
>> s->start_time = 0;
>> flv->sum_flv_tag_size = 0;
>>
> I think this forgiving behaviour is better, than the earlier rigorous one.
> I agree that showing warning is more useful than returning error and
> stopping execution because if
>
> PreviousTagSize0 is not zero that causes no harm.
>
> bb
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
Pushed
Thanks!
More information about the ffmpeg-devel
mailing list