aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/mp4_tag.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mp4_tag.c')
-rw-r--r--[-rwxr-xr-x]src/mp4_tag.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/mp4_tag.c b/src/mp4_tag.c
index 86b4cff..ab2bdde 100755..100644
--- a/src/mp4_tag.c
+++ b/src/mp4_tag.c
@@ -84,6 +84,7 @@ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
uint16_t disk, disktotal;
u_int8_t *coverArt;
u_int32_t coverSize;
+ Picture *prev_pic = NULL;
if (!filename || !FileTag)
return FALSE;
@@ -91,7 +92,7 @@ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
if ( (file=fopen(filename,"r"))==NULL )
{
gchar *filename_utf8 = filename_to_display(filename);
- Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
g_free(filename_utf8);
return FALSE;
}
@@ -102,7 +103,7 @@ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
if (mp4file == MP4_INVALID_FILE_HANDLE)
{
gchar *filename_utf8 = filename_to_display(filename);
- Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+ Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
g_free(filename_utf8);
return FALSE;
}
@@ -176,7 +177,6 @@ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
/* Unimplemented
-
Tempo / BPM
MP4GetMetadataTempo(file, &string)
*/
@@ -184,16 +184,28 @@ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
/***********
* Picture *
***********/
- // There is only one picture!
+#ifdef NEWMP4
+ // There version can handle multiple pictures!
+ // Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart
+ for (i = 0; (MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize,i )); i++)
+#else
+ // There version handle only one picture!
if ( MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize ) )
+#endif
{
- Picture *pic = Picture_Allocate();
+ Picture *pic;
+
+ pic = Picture_Allocate();
+ if (!prev_pic)
+ FileTag->picture = pic;
+ else
+ prev_pic->next = pic;
+ prev_pic = pic;
+
pic->size = coverSize;
pic->data = coverArt;
pic->type = PICTURE_TYPE_FRONT_COVER;
pic->description = NULL;
-
- FileTag->picture = pic;
}
@@ -231,7 +243,7 @@ gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
/* Test to know if we can write into the file */
if ( (file=fopen(filename,"r+"))==NULL )
{
- Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+ Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
return FALSE;
}
fclose(file);
@@ -240,7 +252,7 @@ gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
mp4file = MP4Modify(filename,0,0);
if (mp4file == MP4_INVALID_FILE_HANDLE)
{
- Log_Print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+ Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
return FALSE;
}
@@ -405,6 +417,7 @@ gboolean Mp4tag_Write_File_Tag (ET_File *ETFile)
* Picture *
***********/
{
+ // Can handle only one picture...
Picture *pic;
//MP4DeleteMetadataCoverArt(mp4file);