Petteri Hintsanen <[email protected]> writes: > (apologies it you get this message twice, my mailer is complaining for > some reason) > > Yoni Rabkin <[email protected]> writes: > >> Petteri, what do you think of the dynamic-scaling idea? > > It could help but I think it’s not the best way to go forward. I am > afraid it is the design itself that is failing here. > > Namely, the current implementation reads in the whole tag (which can be > big, as we’ve seen) before parsing, even though we are not interested in > most of it. At the end, we need only a few, relatively small textual > frames (album, artist, etc.) from the complete tag. > > I hacked together an "incremental" parser that goes through the tag one > frame at a time, and skips over those that EMMS does not care about. > Hopefully it saves memory and, who knows, it may also give some > performance boost. (I didn’t have time to do any benchmarking.) Due to > id3v2 peculiarities, the code is quite ugly and regressions are likely. > > But please test if it gives any better results. Code is in info-native > branch.
This gives me no errors on about 1000 classical tracks and runs close to 4 seconds; 250 tracks a second is just fine. When I try it on a wider selection of tracks I get a framing mismatch early on. Attached are the first 10k of that file.
framing-mismatch.mp3
Description: audio/mpeg
-- "Cut your own wood and it will warm you twice"
