On Wed, Jan 31, 2018 at 05:43:24PM +0100, Carl Eugen Hoyos wrote: > 2018-01-31 15:22 GMT+01:00 Michael Niedermayer <mich...@niedermayer.cc>: > > Fixes misdetection of sbQ9.bin > > > > Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > > --- > > libavformat/bintext.c | 49 > > ++++++++++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 48 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/bintext.c b/libavformat/bintext.c > > index 12e3bfde4d..722a40c3e5 100644 > > --- a/libavformat/bintext.c > > +++ b/libavformat/bintext.c > > @@ -126,6 +126,53 @@ static void predict_width(AVCodecParameters *par, > > uint64_t fsize, int got_width) > > par->width = fsize > 4000 ? (160<<3) : (80<<3); > > } > > > > +static int bin_probe(AVProbeData *p) > > +{ > > + const uint8_t *d = p->buf; > > + int magic = 0, sauce = 0; > > + int invisible = 0; > > + int i; > > + > > + if (p->buf_size > 256) > > + magic = !memcmp(d + p->buf_size - 256, next_magic, > > sizeof(next_magic)); > > + if (p->buf_size > 128) > > + sauce = !memcmp(d + p->buf_size - 128, "SAUCE00", 7); > > + > > + if (magic) > > + return AVPROBE_SCORE_MAX / 2; > > This seems too low to me or am I wrong? > > > + > > + if (av_match_ext(p->filename, "bin")) { > > + AVCodecParameters par; > > + int got_width = 0; > > + par.width = par.height = 0; > > > + if (sauce) > > + return AVPROBE_SCORE_MAX / 2; > > Same here.
was thinking the same but that was what the filename based detection used before. I kind of just left it where it was, the main goal of the patch was just to fix the misdetection not to raise the score. But we can surely raise these. WHat would you think is a good value ? > > > + > > + predict_width(&par, p->buf_size, got_width); > > + if (par.width <= 0) > > + return 0; > > + calculate_height(&par, p->buf_size); > > + if (par.height <= 0) > > + return 0; > > + > > + for (i = 0; i < p->buf_size - 256; i+=2) { > > + if ((d[i+1] & 15) == (d[i+1] >> 4) && d[i] && d[i] != 0xFF && > > d[i] != ' ') { > > > + invisible ++; > > This looks unused. yes, iam aware, ive added it thinking it would be needed but all my test files where detected correctly so it wasnt needed i can remove it if people prefer ? or it can be left so next time something gets probed wrong the code is already there to check the next level of information. > > > + } > > + } > > + > > + if (par.width * par.height * 2 / (8*16) == p->buf_size) > > + return AVPROBE_SCORE_MAX / 2; > > Shouldn't this also be a higher score? This one here, no. This is a rather weak test. It looks stronger than it is Its weak as width and height are computed currently from the size > > Thank you for looking into this issue, Carl Eugen > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Why not whip the teacher when the pupil misbehaves? -- Diogenes of Sinope
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel