GNOME Bugzilla – Bug 348762
[ID3v2] comment frame extraction/writing doesn't retain descriptions
Last modified: 2006-08-16 13:05:15 UTC
The problem: ID3v2 comment tags consist of 3 parts: - comment description string - language code - the comment string The language code is not that important, but it would be nice if we could retain the description/comment association somehow, so the frames can be rewritten properly again when retagging. In particular iTunes seems to store information that way. Maybe we can use some generic key=value tag for this (which we'll also need to retain unknown vorbis/ape tags, see bug #347091).
Just to document this, here is an example of retagging (original file was an ID3v2.3 file and can be found on attachment #69586 [details]): gst-launch filesrc location=test4.mp3 ! id3demux ! id3v2mux ! filesink location=test4-retagged.mp3 the original tags look like this: # gst-launch-0.10 -t filesrc location=test4.mp3 ! decodebin ! fakesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... FOUND TAG : found by element "id3demux0". title: Ready Lets Go artist: Boards Of Canada ID3v2 frame: buffer of 49 bytes, type: application/x-gst-id3v2-tcm, version=(int)2 : buffer of 21 bytes, type: application/x-gst-id3v2-ten, version=(int)2 album: Geogaddi track count: 23 track number: 1 disc count: 1 disc number: 1 date: 2002-01-01 genre: Electronica/Dance comment: Description: iTunNORM Comment: 00000079 00000022 0000023C 000000BA 00003F5E 00009AB1 000024F5 00001A48 00003F5E 0000A70A : Description: iTunSMPB Comment: 00000000 00000210 000008AC 000000000027B844 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 : Description: iTunes_CDDB_IDs Comment: 23+E250754DC17FE498A1CC9CA31B41E6A9+3700554 image: buffer of 415153 bytes, type: image/PNG, image-type=(GstTagImageType)GST_TAG_IMAGE_TYPE_UNDEFINED FOUND TAG : found by element "mad0". duration: 59000000000 bitrate: 244028 FOUND TAG : found by element "mad0". layer: 3 mode: stereo emphasis: none audio codec: MPEG-1 layer 3 but after retagging it looks like this: # gst-launch-0.10 -t filesrc location=test4-retagged.mp3 ! decodebin ! fakesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... FOUND TAG : found by element "id3demux0". title: Ready Lets Go artist: Boards Of Canada ID3v2 frame: buffer of 52 bytes, type: application/x-gst-id3v2-tcom-frame, version=(int)4 : buffer of 24 bytes, type: application/x-gst-id3v2-tenc-frame, version=(int)4 album: Geogaddi track count: 23 track number: 1 disc count: 1 disc number: 1 date: 2002-01-01 genre: Electronica/Dance comment: Description: c0 Comment: Description: iTunNORM Comment: 00000079 00000022 0000023C 000000BA 00003F5E 00009AB1 000024F5 00001A48 00003F5E 0000A70A : Description: c1 Comment: Description: iTunSMPB Comment: 00000000 00000210 000008AC 000000000027B844 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 : Description: c2 Comment: Description: iTunes_CDDB_IDs Comment: 23+E250754DC17FE498A1CC9CA31B41E6A9+3700554 image: buffer of 415153 bytes, type: image/PNG, image-type=(GstTagImageType)GST_TAG_IMAGE_TYPE_UNDEFINED FOUND TAG : found by element "mad0". duration: 59000000000 bitrate: 244028 FOUND TAG : found by element "mad0". layer: 3 mode: stereo emphasis: none audio codec: MPEG-1 layer 3
Should be fixed in CVS: 2006-08-16 Tim-Philipp Müller <tim at centricular dot net> * configure.ac: Require CVS of GStreamer core and -base (for GST_TAG_EXTENDED_COMMENT and gst_tag_parse_extended_comment()). * ext/taglib/gstid3v2mux.cc: Write extended comment tags properly (#348762). * gst/id3demux/id3v2frames.c: (id3demux_id3v2_parse_frame), (parse_comment_frame): Extract COMM frames into extended comments, which makes it easier to properly retain the description bit of the tag and maintain this information when re-tagging (#348762).