summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/db-artwork-parser.c8
-rw-r--r--src/db-artwork-writer.c6
-rw-r--r--src/itdb_artwork.c8
-rw-r--r--src/itdb_itunesdb.c22
-rw-r--r--src/itdb_track.c15
-rw-r--r--src/ithumb-writer.c1
7 files changed, 30 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index 9eba702..3f0e139 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
}