We are working on implementing ID3v2.3 and possibly ID3v2.2 read support.
Comment #1
Posted on Mar 26, 2008 by Helpful HippoComment deleted
Comment #2
Posted on Mar 27, 2008 by Happy PandaSupport for 2.3.0 read is plausible, but I don't think 2.2.0 can be supported without making a separate class for that. The difference between 2.2 and the newer standards is notable.
Nevertheless, support for 2.3.0 would also require major changes to the class. The standard specifies completely different extended header, has a dozen new (or deprecated, rather) frames, and writes all the size information in big-endian 32-integers that are not safesynch'ed. For this to work there must be some sort of an option passed to the classes.
Comment #3
Posted on Mar 27, 2008 by Happy PandaComment deleted
Comment #4
Posted on Apr 3, 2008 by Helpful Hipposorry I haven't been on for a while, but question, couldn't you just have the reader get the subversion of ID3v2 (like you already do) and then have an if clause whereby if the version is 2.3 then read the size (which is really the big thing) as not safesynch'ed, and if it's 2.4 then read the size as being safesync'ed...? that way there would be no extra switch, and it would work 100% of the time. I think the version variable is $id3->getVersion, so you even already have that built... all you would have to do is build the if statement inside the getSize or whatever that's called... no? I'll work on it and see if I can't come up with something.
Comment #5
Posted on Apr 4, 2008 by Happy PandaYes, that would be the point in passing an option to the classes. It is set/read with with setOptions/getOptions methods of each class.
What I'm still wondering is how to get that ExtendedHeader work the ID3v2.3 style. I would almost have to create two separate classes for that and inherit both from an abstract ExtendedHeader class and then use the options to see which one to instantiate. I have to see if that works in practise.
Comment #6
Posted on Apr 15, 2008 by Happy PandaManaged to fit everything in one class. Version is detected automatically and write defaults to versio 4.0. I will put the code to the next release.
Status: Verified
Labels:
Type-Enhancement
Priority-Medium