qtdemux: Read iTunes m4a/mp4 music tags
@nirbheek
Submitted by Nirbheek Chauhan Link to original bug (#753631)
Description
We need to read the proprietary iTunes tags to get gapless playback support for m4a files with fixed frame sizes.
$ GST_DEBUG=qtdemux:2 gst-discoverer-1.0 -v test.m4a
Analyzing file:///[path]/test.m4a
[snip]
0:00:00.070971448 30899 0x7f767805c230 WARN qtdemux qtdemux.c:10436:qtdemux_tag_add_revdns:<qtdemux0>
This tag com.apple.iTunes:iTunSMPB type:1 is not mapped, file a bug at bugzilla.gnome.org
0:00:00.071004339 30899 0x7f767805c230 WARN qtdemux qtdemux.c:10436:qtdemux_tag_add_revdns:<qtdemux0>
This tag com.apple.iTunes:iTunNORM type:1 is not mapped, file a bug at bugzilla.gnome.org
0:00:00.071016068 30899 0x7f767805c230 WARN qtdemux qtdemux.c:10436:qtdemux_tag_add_revdns:<qtdemux0>
This tag com.apple.iTunes:iTunMOVI type:1 is not mapped, file a bug at bugzilla.gnome.org
[snip]
The iTunSMPB tag contains information about how to do gapless playback. This is needed for bug 746109. See: http://yabb.jriver.com/interact/index.php?topic=65076
iTunNORM contains volume normalization information (perhaps this is useful for music/video players?)
iTunMOVI is an XML file with various metadata about the file. See: https://bitbucket.org/wez/atomicparsley/issues/1/itunes-atom-itunmovi
We should expose all this information.
Besides this, there's some QuickTime nodes that we don't know about and emit a warn for:
0:00:00.069971524 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type cnID
0:00:00.070032099 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type rtng
0:00:00.070046083 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type atID
0:00:00.070056063 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type cmID
0:00:00.070067572 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type plID
0:00:00.070081820 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type geID
0:00:00.070097419 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type akID
0:00:00.070112155 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type stik
0:00:00.070126745 30899 0x7f767805c230 WARN qtdemux qtdemux_types.c:209:qtdemux_type_get: unknown QuickTime node type xid
Some of these are useful (rtng = content rating). Some are not. We should know about these and discard/use as appropriate. See: https://code.google.com/p/mp4v2/wiki/iTunesMetadata