[FFmpeg-devel] [PATCH v2 2/2] avformat: add demuxer for Pro Pinball Series' Soundbanks
Carl Eugen Hoyos
ceffmpeg at gmail.com
Sun Mar 29 02:49:32 EET 2020
Am Fr., 27. März 2020 um 15:25 Uhr schrieb Zane van Iperen
<zane at zanevaniperen.com>:
>
> On Wed, 18 Mar 2020 15:19:19 +0100
> "Carl Eugen Hoyos" <ceffmpeg at gmail.com> wrote:
> >
> > Any restrictions on track_count and sample_rate that can be used for
> > auto-detection?
> >
>
> I've done a preliminary probe function. How's this?
>
> On all the files I tested, I received one of two values:
> 99 - For music (these have an extra condition I can test for)
> 87 - For everything else
>
> static int pp_bnk_probe(const AVProbeData *p)
> {
> PPBnkHeader hdr;
> uint32_t expected_sample_rate;
> int score;
>
> pp_bnk_parse_header(&hdr, p->buf);
>
> if (hdr.track_count == 0 || hdr.sample_rate == 0)
> return 0;
>
> score = 0;
>
> /* These limits are based on analysing the game files. */
> if (hdr.track_count <= 113)
> score += AVPROBE_SCORE_MAX / 4;
>
> if (hdr.sample_rate <= 44100)
> score += AVPROBE_SCORE_MAX / 4;
>
> if ((hdr.flags & ~PP_BNK_FLAG_MASK) == 0)
> score += AVPROBE_SCORE_MAX / 4;
>
> if ((hdr.flags & PP_BNK_FLAG_MUSIC) && hdr.track_count == 2)
> score += AVPROBE_SCORE_MAX / 8;
>
> /* Also check based on file extension, if we have it. */
> if (av_match_ext(p->filename, "5c"))
> expected_sample_rate = 5512;
> else if (av_match_ext(p->filename, "11c"))
> expected_sample_rate = 11025;
> else if (av_match_ext(p->filename, "22c"))
> expected_sample_rate = 22050;
> else if (av_match_ext(p->filename, "44c"))
> expected_sample_rate = 44100;
> else
> expected_sample_rate = 0;
>
> if (expected_sample_rate && hdr.sample_rate == expected_sample_rate)
> score += AVPROBE_SCORE_MAX / 8;
>
> return score;
Apart from what I wrote on irc:
What surprises me most is that iirc, you explained that the sample_rate
is written repeatedly to the file and is always identical in one file. Why
is that not checked?
You seem to have a fine (and small) collection of sample rates to check against.
Carl Eugen
More information about the ffmpeg-devel
mailing list