Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Tree [07d714] /
History



File Date Author Commit
bindings 2005-10-09 Jorg Schuler Jorg Schuler [0c2b4e] * bindings/python/gpod.i: applied Kelvin Lawso...
po 2005-09-27 Jorg Schuler Jorg Schuler [b7c735] removed accidentially added file po/POTFIlES
src 2005-11-21 Christophe Fergeau Christophe Fergeau [9ff165] 2005-11-21 Christophe Fergeau <teuf@gnome.org>
tests 2005-10-23 Jorg Schuler Jorg Schuler [4a8edd] * (itdb_write): remove mountpoint as parameter...
AUTHORS 2005-09-10 Christophe Fergeau Christophe Fergeau [c76e33] Initial import
COPYING 2005-11-21 Christophe Fergeau Christophe Fergeau [07d714] 2005-11-21 Christophe Fergeau <teuf@gnome.org>
ChangeLog 2005-11-21 Christophe Fergeau Christophe Fergeau [07d714] 2005-11-21 Christophe Fergeau <teuf@gnome.org>
INSTALL 2005-09-22 Jorg Schuler Jorg Schuler [3a9ca9] * applied Christophe Fergeau's patch which add...
INSTALL_CVS 2005-09-20 Jorg Schuler Jorg Schuler [ce7d7f] release of 0.1.3
Makefile.am 2005-10-02 Jorg Schuler Jorg Schuler [c4ea9e] * Makefile.am: added bindings/... to EXTRA_DIST
NEWS 2005-09-10 Christophe Fergeau Christophe Fergeau [c76e33] Initial import
README 2005-10-09 Jorg Schuler Jorg Schuler [0c2b4e] * bindings/python/gpod.i: applied Kelvin Lawso...
TROUBLESHOOTING 2005-10-19 Jorg Schuler Jorg Schuler [d501e5] * configure.ac: print warning and hint if ./mk...
autogen.sh 2005-11-21 Christophe Fergeau Christophe Fergeau [a7b3cb] 2005-11-21 Christophe Fergeau <teuf@gnome.org>
configure.ac 2005-11-21 Christophe Fergeau Christophe Fergeau [9ff165] 2005-11-21 Christophe Fergeau <teuf@gnome.org>
gnome-autogen.sh 2005-11-21 Christophe Fergeau Christophe Fergeau [a7b3cb] 2005-11-21 Christophe Fergeau <teuf@gnome.org>
libgpod-1.0.pc.in 2005-09-10 Christophe Fergeau Christophe Fergeau [c76e33] Initial import

Read Me

libgpod is a library meant to abstract access to an iPod content. It
provides an easy to use API to retrieve the list of files and playlist
stored on an iPod, to modify them and to save them back to the iPod.

This code was originally part of gtkpod (www.gtkpod.org). When the iPod
content parsing code was made to be self-contained with gtkpod 0.93,
we chose to put this code in a separate library so that other project
can benefit from it without duplicating code.

If you decide to make improvements, like support for cover art or
photos please contact us so we can work together. Just drop a mail to
Gtkpod-devel@lists.sourceforge.net (you may ask to be CC in the
answer).

----------------------------------------------------------------------
For the time being please always use the current version in CVS. See
http://sourceforge.net/cvs/?group_id=67873 for information on how to
access the CVS server. The module to download is called 'libgpod'. The
package released on sourceforge is simply there to raise awareness and
hopefully have some package maintainers pick up the library.
----------------------------------------------------------------------

Note about photo databases:

First thing, there are 2 different artwork databases on the iPod
Photo/Color, the ArtworkDB file which stores information about cover art
(thumbnails) for the songs stored on the iPod, and the Photo Database
which is used to store random photos not associated with songs on the
iPod. 

The main target I had in mind when writing artwork support was cover art
thumbnails for songs. The parsing code should be reusable for generic
Photo Database support, but there are probably some tweaks to do, and
some stuff isn't handled, for example Photo Albums (roughtly equivalent
to a playlist) which aren't used in the ArtworkDB (they are only
useful/meaningful in the Photo Database)

Even though the cover art data is stored in a separate file (ArtworkDB),
it's intrisically linked with a song in the iTunesDB files through the
'dbid' 64 bit field in the mhit iTunesDB records (it's meant to be
displayed along when the song is being played, so it makes sense to
associate them).

What ipod_parse_photo_db is to parse this ArtworkDB file to gather info
about the song thumbnails. It then fills the 'thumbnails' field in
Itdb_Track which is a list of Itdb_Image. The Itdb_Image structure
contains a few basic information about the image (I'll let you check its
definition in itdb.h for more details), but it doesn't store the pixel
data since this is stored separately, and I feared loading all the cover
thumbnails automatically would be too memory hungry. So an
itdb_image_get_rgb_data function is provided to trigger the load of the
pixel data when it's useful.

The 2 test programs I added are meant to be small samples of how this
stuff works, one of them parses the ArtworkDB and outputs all the
thumbnails it finds in /tmp as .png files, the other one is used to
randomly associate images as thumbnails to all songs in the database,
it's meant to show how to write thumbnails. If you add support for that
to gtkpod, be aware that currently adding cover thumbnails to a few
songs on an iPod which already has cover thumbnails assigned to some
other songs is not something that is tranparently handled, ie you'll
need to add code either to libgpod or to gtkpod to make that work
properly.

As for Photo Database handling (which is not dealt with currently), I
agree it doesn't make sense to associate its parsing with an
Itdb_ItunesDB object, and that a 'parallel' api mimicking somewhat the
Track/Playlist stuff with Photo/Album entities would need to be
designed, but I didn't work on that since, and I probably won't short
term.

People wanting more info can find lots of details on
http://ipodlinux.org/ITunesDB#Artwork_Database

I hope that's helpful,

Christophe