GNOME Bugzilla – Bug 579788
[id3demux] fails to parse tags if APIC frame is at the beginning
Last modified: 2009-04-23 16:27:21 UTC
Please describe the problem: Most of my mp3 collection has cover art stored in id3v2 tags - easytag, amarok, and other apps read tags on these files correctly, but gstreamer based applications (such as rhythmbox) do not. Steps to reproduce: here's gstreamer looking at a file with an attached image: [18:56:02] dberger@rage : /pensive/Media/Music/Mp3/marc cohn/join the parade 595 $ gst-launch-0.10 file:///pensive/Media/Music/Mp3/marc%20cohn/join%20the%20parade/01%20-%20listening%20to%20levon.mp3 ! decodebin ! fakesink -t Setting pipeline to PAUSED ... Pipeline is PREROLLING ... FOUND TAG : found by element "id3demux0". image: buffer of 19322 bytes, type: image/jpeg, image-type=(GstTagImageType)GST_TAG_IMAGE_TYPE_FRONT_COVER FOUND TAG : found by element "mpegaudioparse0". audio codec: MPEG 1 Audio, Layer 3 (MP3) FOUND TAG : found by element "mpegaudioparse0". bitrate: 137000 has crc: FALSE channel mode: joint-stereo FOUND TAG : found by element "mad0". duration: 287000000000 bitrate: 137190 FOUND TAG : found by element "mad0". layer: 3 mode: joint emphasis: none Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock Got EOS from element "pipeline0". Execution ended after 2046012334 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... FREEING pipeline ... and here's the same file, after the image is removed using eyeD3 --remove-images [18:56:18] dberger@rage : /pensive/Media/Music/Mp3/marc cohn/join the parade 596 $ gst-launch-0.10 file:///pensive/Media/Music/Mp3/marc%20cohn/join%20the%20parade/01%20-%20listening%20to%20levon.noapic.mp3 ! decodebin ! fakesink -t Setting pipeline to PAUSED ... Pipeline is PREROLLING ... FOUND TAG : found by element "id3demux0". album: Join the Parade title: Listening of Levon artist: Marc Cohn track number: 1 album ID: 723dda68-a730-44e2-ad43-3460f91e04b8 ID3v2 frame: buffer of 41 bytes, type: application/x-gst-id3v2-txxx-frame, version=(int)3 : buffer of 47 bytes, type: application/x-gst-id3v2-txxx-frame, version=(int)3 : buffer of 66 bytes, type: application/x-gst-id3v2-ufid-frame, version=(int)3 : buffer of 43 bytes, type: application/x-gst-id3v2-txxx-frame, version=(int)3 artist ID: ddf18377-0bf5-4972-90d2-7de878b5eec4 date: 2007-01-01 FOUND TAG : found by element "mpegaudioparse0". audio codec: MPEG 1 Audio, Layer 3 (MP3) FOUND TAG : found by element "mpegaudioparse0". bitrate: 137000 has crc: FALSE channel mode: joint-stereo FOUND TAG : found by element "mad0". duration: 287000000000 bitrate: 137190 FOUND TAG : found by element "mad0". layer: 3 mode: joint emphasis: none Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock Got EOS from element "pipeline0". Execution ended after 2081332123 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... FREEING pipeline ... here's id3v2 -l of each file, first with the image: [19:05:50] dberger@rage : /pensive/Media/Music/Mp3/marc cohn/join the parade 598 $ id3v2 -l 01\ -\ listening\ to\ levon.mp3 id3v2 tag info for 01 - listening to levon.mp3: APIC (Attached picture): ()[, 3]: image/jpeg, 19322 bytes TALB (Album/Movie/Show title): Join the Parade TIT2 (Title/songname/content description): Listening of Levon TPE1 (Lead performer(s)/Soloist(s)): Marc Cohn TRCK (Track number/Position in set): 01 TXXX (User defined text information): (MusicBrainz Album Id): 723dda68-a730-44e2-ad43-3460f91e04b8 TXXX (User defined text information): (MusicBrainz Sortname): Marc Cohn TXXX (User defined text information): (MusicBrainz Artist Id): ddf18377-0bf5-4972-90d2-7de878b5eec4 TXXX (User defined text information): (MD5): f9d250b2100a5498a8b470cf3f484404 TYER (Year): 2007 UFID (Unique file identifier): 3772a98f-caaa-48d5-b61f-f14ed4f91102, 19 bytes and then without [19:05:54] dberger@rage : /pensive/Media/Music/Mp3/marc cohn/join the parade 599 $ id3v2 -l 01\ -\ listening\ to\ levon.noapic.mp3 id3v2 tag info for 01 - listening to levon.noapic.mp3: TALB (Album/Movie/Show title): Join the Parade TIT2 (Title/songname/content description): Listening of Levon TPE1 (Lead performer(s)/Soloist(s)): Marc Cohn TRCK (Track number/Position in set): 01 TXXX (User defined text information): (MusicBrainz Album Id): 723dda68-a730-44e2-ad43-3460f91e04b8 TXXX (User defined text information): (MusicBrainz Sortname): Marc Cohn TXXX (User defined text information): (MusicBrainz Artist Id): ddf18377-0bf5-4972-90d2-7de878b5eec4 TXXX (User defined text information): (MD5): f9d250b2100a5498a8b470cf3f484404 TYER (Year): 2007 UFID (Unique file identifier): 3772a98f-caaa-48d5-b61f-f14ed4f91102, 19 bytes TXXX (User defined text information): (Tagging time): 2009-04-22T01:38:35 looking at the affected files in a hex editor reveals that the APIC tag is first in the tag set (this may affect reproducability) Actual results: when files like this are added to a rhythmbox library, or their "Audio" properties displayed in nautilus, the tags are all "unknown" Expected results: the tags should be correctly displayed Does this happen every time? yes Other information: I can supply sample files if desired.
Could you attach samples of tags that aren't parsed correctly please? (head --bytes=100k > head.mp3 will extract the first 100kB in a separate file)
Created attachment 133117 [details] tags which don't parse correctly
Created attachment 133118 [details] tags from the same mp3, after the APIC frame is removed with eyeD --remove-images
Thanks for the samples. Actually, this looks to me like it has nothing to do with the APIC frame being at the beginning after all (cp. the working sample from bug #577468), but rather with id3demux messing up somehow when unsynchronisation is used. *** This bug has been marked as a duplicate of 577468 ***
confirmed - I re-tagged the files without unsync, and gstreamer got happy.