[FFmpeg-devel] [PATCH] lavf/mp3dec: fix mp3 file probe fail
Tiejun.Peng
tiejun.peng at foxmail.com
Fri Dec 8 19:45:41 EET 2017
i agree with you. too much experience value in condition of Judgement like this:
"else if(max_frames>=4 && max_frames >= p->buf_size/10000)".
why it is the value ? it is hard to known.
maybe the work of cleaned up need a few days, so i just repair of the probe.
------------------ Original ------------------
From: "wm4";<nfxjfg at googlemail.com>;
Send time: Thursday, Dec 7, 2017 9:16 PM
To: "ffmpeg-devel"<ffmpeg-devel at ffmpeg.org>;
Subject: Re: [FFmpeg-devel] [PATCH] lavf/mp3dec: fix mp3 file probe fail
On Wed, 6 Dec 2017 17:27:43 +0800
"tiejun.peng" <tiejun.peng at foxmail.com> wrote:
> fix #6895: https://trac.ffmpeg.org/ticket/6895
> stream:https://trac.ffmpeg.org/attachment/ticket/6895/music_mp3
>
> Signed-off-by: tiejun.peng <tiejun.peng at foxmail.com>
> ---
> libavformat/mp3dec.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c
> index a76fe32..286eb68 100644
> --- a/libavformat/mp3dec.c
> +++ b/libavformat/mp3dec.c
> @@ -73,6 +73,7 @@ static int mp3_read_probe(AVProbeData *p)
> int frames, ret;
> uint32_t header;
> const uint8_t *buf, *buf0, *buf2, *end;
> + int match_size = 0;
>
> buf0 = p->buf;
> end = p->buf + p->buf_size - sizeof(uint32_t);
> @@ -92,6 +93,7 @@ static int mp3_read_probe(AVProbeData *p)
> if (ret != 0)
> break;
> buf2 += h.frame_size;
> + match_size += h.frame_size;
> }
> max_frames = FFMAX(max_frames, frames);
> if(buf == buf0) {
> @@ -104,6 +106,8 @@ static int mp3_read_probe(AVProbeData *p)
> // issues with MPEG-files!
> if (first_frames>=7) return AVPROBE_SCORE_EXTENSION + 1;
> else if(max_frames>200)return AVPROBE_SCORE_EXTENSION;
> + // over 50% of probe size is valid
> + else if (p->buf_size > 10000 && match_size > (p->buf_size/2)) return AVPROBE_SCORE_EXTENSION;
> else if(max_frames>=4 && max_frames >= p->buf_size/10000) return AVPROBE_SCORE_EXTENSION / 2;
> else if(ff_id3v2_match(buf0, ID3v2_DEFAULT_MAGIC) && 2*ff_id3v2_tag_len(buf0) >= p->buf_size)
> return p->buf_size < PROBE_BUF_MAX ? AVPROBE_SCORE_EXTENSION / 4 : AVPROBE_SCORE_EXTENSION - 2;
That doesn't necessarily affect whether this patch should be applied,
but: I think this mp4 probe should really be cleaned up. It's one of
the most complex probe functions, and it doesn't even work correctly.
It still detects some ELF files as mp3 (or mp1/2), for example.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel at ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list