After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 579788 - [id3demux] fails to parse tags if APIC frame is at the beginning
[id3demux] fails to parse tags if APIC frame is at the beginning
Status: RESOLVED DUPLICATE of bug 577468
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.21
Other All
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-04-22 02:10 UTC by Dan Berger
Modified: 2009-04-23 16:27 UTC
See Also:
GNOME target: ---
GNOME version: 2.23/2.24


Attachments
tags which don't parse correctly (100.00 KB, application/octet-stream)
2009-04-22 14:28 UTC, Dan Berger
Details
tags from the same mp3, after the APIC frame is removed with eyeD --remove-images (100.00 KB, audio/mpeg)
2009-04-22 14:31 UTC, Dan Berger
Details

Description Dan Berger 2009-04-22 02:10:13 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.
Comment 1 Tim-Philipp Müller 2009-04-22 08:17:10 UTC
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)
Comment 2 Dan Berger 2009-04-22 14:28:33 UTC
Created attachment 133117 [details]
tags which don't parse correctly
Comment 3 Dan Berger 2009-04-22 14:31:03 UTC
Created attachment 133118 [details]
tags from the same mp3, after the APIC frame is removed with eyeD --remove-images
Comment 4 Tim-Philipp Müller 2009-04-22 19:20:24 UTC
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 ***
Comment 5 Dan Berger 2009-04-23 16:27:21 UTC
confirmed - I re-tagged the files without unsync, and gstreamer got happy.