diff options
author | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2005-12-04 07:01:27 +0000 |
---|---|---|
committer | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2005-12-04 07:01:27 +0000 |
commit | 56225e8685de938e7e6eaf651bc5b6cca7674b84 (patch) | |
tree | 7cf080c719cfd11a02b5b722d766f654813fd768 | |
parent | 6f8befd8425ad913a612dfa9895b524f7c4ab202 (diff) | |
download | libgpod-56225e8685de938e7e6eaf651bc5b6cca7674b84.tar.gz libgpod-56225e8685de938e7e6eaf651bc5b6cca7674b84.tar.xz libgpod-56225e8685de938e7e6eaf651bc5b6cca7674b84.zip |
* src/db-artwork-writer.c, src/itdb_itunesdb.c,
src/itdb_track.c, src/ithumb-writer.c: handle artwork size and
count self-consistently.
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1184 f01d2545-417e-4e96-918e-98f8d0dbbcb6
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/db-artwork-parser.c | 8 | ||||
-rw-r--r-- | src/db-artwork-writer.c | 6 | ||||
-rw-r--r-- | src/itdb_artwork.c | 8 | ||||
-rw-r--r-- | src/itdb_itunesdb.c | 22 | ||||
-rw-r--r-- | src/itdb_track.c | 15 | ||||
-rw-r--r-- | src/ithumb-writer.c | 1 |
7 files changed, 30 insertions, 34 deletions
@@ -3,6 +3,10 @@ * src/db-artwork-writer/parser.c: Create ArtworkDB when it does not exist. + * src/db-artwork-writer.c, src/itdb_itunesdb.c, + src/itdb_track.c, src/ithumb-writer.c: handle artwork size and + count self-consistently. + 2005-11-30 Christophe Fergeau <teuf@gnome.org> * src/db-artwork-parser.c: (parse_mhni): don't crash if diff --git a/src/db-artwork-parser.c b/src/db-artwork-parser.c index 2709e42..152c245 100644 --- a/src/db-artwork-parser.c +++ b/src/db-artwork-parser.c @@ -34,6 +34,7 @@ #include "db-image-parser.h" #include "db-itunes-parser.h" #include "db-parse-context.h" +#include <glib/gi18n-lib.h> typedef int (*ParseListItem)(DBParseContext *ctx, Itdb_iTunesDB *db, GError *error); @@ -239,8 +240,9 @@ parse_mhii (DBParseContext *ctx, Itdb_iTunesDB *db, GError *error) return -1; } - if (song->artwork_size != GINT_FROM_LE (mhii->orig_img_size)-1) { - g_warning ("iTunesDB and ArtworkDB artwork sizes don't match (%d %d)", song->artwork_size , GINT_FROM_LE (mhii->orig_img_size)); + if ((song->artwork_size+song->artwork_count) != + GINT_FROM_LE (mhii->orig_img_size)-1) { + g_warning (_("iTunesDB and ArtworkDB artwork sizes inconsistent (%d+%d != %d)"), song->artwork_size, song->artwork_count, GINT_FROM_LE (mhii->orig_img_size)); } song->artwork->artwork_size = GINT_FROM_LE (mhii->orig_img_size)-1; @@ -376,7 +378,7 @@ parse_mhsd (DBParseContext *ctx, Itdb_iTunesDB *db, GError **error) break; } default: - g_warning ("Unexpected mhsd index: %d\n", + g_warning (_("Unexpected mhsd index: %d\n"), GINT_FROM_LE (mhsd->index)); return -1; break; diff --git a/src/db-artwork-writer.c b/src/db-artwork-writer.c index 7159885..4c728e8 100644 --- a/src/db-artwork-writer.c +++ b/src/db-artwork-writer.c @@ -435,11 +435,7 @@ write_mhii (Itdb_Track *song, iPodBuffer *buffer) total_bytes = GINT_FROM_LE (mhii->header_len); mhii->song_id = GINT64_TO_LE (song->dbid); mhii->image_id = GUINT_TO_LE (song->artwork->id); - /* Adding 1 to artwork_size since this is what iTunes 4.9 does (there - * is a 1 difference between the artwork size in iTunesDB and the - * artwork size in ArtworkDB) - */ - mhii->orig_img_size = GINT_TO_LE (song->artwork_size)+1; + mhii->orig_img_size = GINT_TO_LE (song->artwork->artwork_size); num_children = 0; for (it = song->artwork->thumbnails; it != NULL; it = it->next) { iPodBuffer *sub_buffer; diff --git a/src/itdb_artwork.c b/src/itdb_artwork.c index 072daa1..e5c5cbf 100644 --- a/src/itdb_artwork.c +++ b/src/itdb_artwork.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-11-29 00:56:32 jcs> +/* Time-stamp: <2005-12-04 15:56:23 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -83,9 +83,11 @@ Itdb_Artwork *itdb_artwork_duplicate (Itdb_Artwork *artwork) g_return_val_if_fail (artwork, NULL); dup = itdb_artwork_new (); + + memcpy (dup, artwork, sizeof (Itdb_Artwork)); + dup->thumbnails = dup_thumbnails (artwork->thumbnails); - dup->artwork_size = artwork->artwork_size; - dup->id = artwork->id; + return dup; } diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c index 9a6cb4b..de3e844 100644 --- a/src/itdb_itunesdb.c +++ b/src/itdb_itunesdb.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-11-27 18:31:02 jcs> +/* Time-stamp: <2005-12-01 22:11:33 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -2670,25 +2670,6 @@ static void mk_mhlt (FExport *fexp, guint32 num) } -static void update_artwork_info (Itdb_Track *track) -{ - GList *gl; - - track->artwork_count = 0; - /* count the number of valid thumbnails */ - for (gl=track->artwork->thumbnails; gl; gl=gl->next) - { - Itdb_Thumb *thumb = gl->data; - g_return_if_fail (thumb); - if (thumb->size != 0) ++track->artwork_count; - } - if (track->artwork_count != 0) - track->artwork_size = track->artwork->artwork_size; - else - track->artwork_size = 0; -} - - /* Write out the mhit header. Size will be written later */ static void mk_mhit (WContents *cts, Itdb_Track *track) { @@ -2733,7 +2714,6 @@ static void mk_mhit (WContents *cts, Itdb_Track *track) else put8int (cts, 0); put8int (cts, track->app_rating); put16lint (cts, track->BPM); - update_artwork_info (track); put16lint (cts, track->artwork_count); put16lint (cts, track->unk126); put32lint (cts, track->artwork_size); diff --git a/src/itdb_track.c b/src/itdb_track.c index 6b0bcf0..747c5fe 100644 --- a/src/itdb_track.c +++ b/src/itdb_track.c @@ -1,4 +1,4 @@ -/* Time-stamp: <2005-11-28 22:31:30 jcs> +/* Time-stamp: <2005-12-04 15:48:57 jcs> | | Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net> | Part of the gtkpod project. @@ -329,6 +329,17 @@ gboolean itdb_track_set_thumbnails (Itdb_Track *track, if (result == FALSE) itdb_artwork_remove_thumbnails (track->artwork); + /* some black magic :-( */ + /* track->artwork_size should actually be the total size of + artwork packed into MP3 tags. We don't write mp3 tags... */ + track->artwork_size = track->artwork->artwork_size; + /* track->artwork_count should actually be the number of images + packed into MP3 tags. */ + track->artwork_count = 1; + /* for some reason artwork->artwork_size is always + track->artwork_size + track->artwork_count */ + track->artwork->artwork_size += track->artwork_count; + return result; } @@ -337,6 +348,8 @@ void itdb_track_remove_thumbnails (Itdb_Track *track) { g_return_if_fail (track); itdb_artwork_remove_thumbnails (track->artwork); + track->artwork_size = 0; + track->artwork_count = 0; } diff --git a/src/ithumb-writer.c b/src/ithumb-writer.c index ecf86b6..c440226 100644 --- a/src/ithumb-writer.c +++ b/src/ithumb-writer.c @@ -535,7 +535,6 @@ itdb_write_ithumb_files (Itdb_iTunesDB *db) track = it->data; g_return_val_if_fail (track, -1); - track->artwork_count = 0; g_list_foreach (writers, write_thumbnail, track->artwork); } |