Export to GitHub

php-reader - issue #3

Support for reading ID3v2.3 tags


Posted on Mar 26, 2008 by Helpful Hippo

We are working on implementing ID3v2.3 and possibly ID3v2.2 read support.

Comment #1

Posted on Mar 26, 2008 by Helpful Hippo

Comment deleted

Comment #2

Posted on Mar 27, 2008 by Happy Panda

Support 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 Panda

Comment deleted

Comment #4

Posted on Apr 3, 2008 by Helpful Hippo

sorry 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 Panda

Yes, 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 Panda

Managed 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