Saturday, 6 July 2013

AudioCD. Week 3.

Goal for third week was "Decision about track enumeration routine should be made."
During second week I composed a list with few applications which I planned to review: k3b, kscd, vlc. Close friend of word 'review' is 'criteria'. Formulating criteria helped me realized that goal for third week is incomplete because we need not only enumerate tracks but also fetch metadata: artist name, track title and so on. And it is better to have solution which works for both problem. For the metadata fetching two approaches can be used: read CD-Text which is stored on CD or get metadata from internet databases such as MusicBrainz or CDDB. My opinion is that we should definielly support CD-Text and one of the internet databases. Now Amarok supports CDDB, so I think we should stay with it. Another important thing is that solution should work not only in Linux, but also in Windows.

Last week I showed track enumeration routine which was based on libmusicbrainz3. This approach has following advantages: first, libmusicbrainz3 uses libdiscid for track enumeration and disc id calculation and this library is cross-platform, second, MusicBrainz database can be used for metadata fetching. But as I said above I really want to support CD-Text (my motivation is simple -- most of my CDs has CD-Text on them).

But I think I found better solution during last week: libcdio (vlc uses it). I'll quote description of libcdio:
The libcdio package contains a library for CD-ROM and CD image access. Applications wishing to be oblivious of the OS- and device-dependent properties of a CD-ROM or of the specific details of various CD-image formats may benefit from using this library.
Plus it supports CD-Text and also CDDB. I've started playing with it. Current code which uses libcdio is synchronous, supports track enumeration and fetching some information from CD-Text.  For more details, check libcdio branch in my clone.

No comments:

Post a Comment