[FFmpeg-devel] [PATCH v2] avformat/flvdec: check FLVHeader PreviousTagSize0
Bodecs Bela
bodecsb at vivanet.hu
Sun Mar 26 13:39:41 EEST 2017
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
More information about the ffmpeg-devel
mailing list