id3v2: re-fix handling of v2.4 extended headers
authorEdward Hervey <edward@centricular.com>
Mon, 12 Feb 2018 15:26:01 +0000 (16:26 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 1 Mar 2018 12:42:10 +0000 (12:42 +0000)
commit6f5c9db1cc7b8c70c525198f25aa4085fede2c7f
treef02876825527fb037437e921aefaecb908054e7d
parent10835e99198b4dde6eb71ab0b9d47f22e0159193
id3v2: re-fix handling of v2.4 extended headers

The various id3v2 specs handle the extended header sizes differently
(because hey, it wouldn't be fun otherwise).

http://id3.org/id3v2.3.0 states:
"Where the 'Extended header size', currently 6 or 10 bytes, excludes
 itself."

http://id3.org/id3v2.4.0-structure states:
  Extended header size   4 * %0xxxxxxx
     Number of flag bytes       $01
     Extended Flags             $xx

   Where the 'Extended header size' is the size of the whole extended
   header, stored as a 32 bit synchsafe integer. An extended header can
   thus never have a size of fewer than six bytes.

So in id3v2.4.0 it's the *whole* extended header size (a-la ISOBMFF
atom), whereas in id3v2.3.0 it's the extended header size *excluding*
those 4 initial bytes.

And for other versions, god knows..

Fixes regression introduced in commit da607005.

https://bugzilla.gnome.org/show_bug.cgi?id=792983
gst-libs/gst/tag/id3v2.c