[SCM] easytag/master: Port MP4 support to taglib (reduced functionality compared to libmp4v2, but half a loaf is better than no bread)

lucidfox-guest at users.alioth.debian.org lucidfox-guest at users.alioth.debian.org
Wed Jun 8 17:43:45 UTC 2011


The following commit has been merged in the master branch:
commit b8ff841c2812936faddef0bbd462238bcd3e4f82
Author: Maia Kozheva <sikon at ubuntu.com>
Date:   Wed Jun 8 23:56:40 2011 +0700

    Port MP4 support to taglib (reduced functionality compared to libmp4v2, but half a loaf is better than no bread)

diff --git a/debian/control b/debian/control
index 6b36221..5571a9d 100644
--- a/debian/control
+++ b/debian/control
@@ -13,6 +13,7 @@ Build-Depends: debhelper (>= 7.0.50~),
                libid3-3.8.3-dev,
                libogg-dev,
                libspeex-dev,
+               libtagc0-dev,
                libvorbis-dev,
                libwavpack-dev,
                zlib1g-dev
@@ -31,8 +32,8 @@ Description: viewing, editing and writing ID3 tags
  .
  Currently EasyTAG supports the following:
   - View, edit, write tags of MP3, MP2 files (ID3 tag), FLAC files (FLAC Vorbis
-    tag), Ogg Vorbis files (Ogg Vorbis tag), and MusePack, Monkey's Audio files
-    (APE tag),
+    tag), Ogg Vorbis files (Ogg Vorbis tag), MP4/M4A/AAC files (MPEG-4 Part 10
+    tag), and MusePack, Monkey's Audio files (APE tag),
   - Auto tagging: parse filename and directory to complete automatically the
     fields (using masks),
   - Ability to rename files from the tag (using masks) or by loading 
diff --git a/debian/patches/series b/debian/patches/series
index 0818ebe..693245d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 desktop.patch
+taglib.patch
diff --git a/debian/patches/taglib.patch b/debian/patches/taglib.patch
new file mode 100644
index 0000000..28bca24
--- /dev/null
+++ b/debian/patches/taglib.patch
@@ -0,0 +1,654 @@
+Description: Replace libmp4v2 with taglib for MP4 support
+ Use taglib instead of libmp4v2 for MP4 files. Only the basic tags are
+ available for editing this way, but due to the licensing issues with
+ libmp4v2, it's better than nothing.
+Origin: vendor
+Author: Maia Kozheva <sikon at ubuntu.com>
+Forwarded: https://github.com/stsquad/easytag/issues/13
+Last-Update: 2011-06-08
+---
+Index: easytag/configure.in
+===================================================================
+--- easytag.orig/configure.in	2011-06-08 23:28:43.000000000 +0700
++++ easytag/configure.in	2011-06-08 23:28:50.000000000 +0700
+@@ -63,9 +63,9 @@
+               AC_HELP_STRING([--disable-flac],[Disable support for FLAC files (default=enabled)]),
+               , enable_flac=yes)
+ 
+-AC_ARG_ENABLE(mp4,
+-              AC_HELP_STRING([--disable-mp4],[Disable support for MP4 files (default=enabled)]),
+-              , enable_mp4=yes)
++AC_ARG_ENABLE(taglib,
++              AC_HELP_STRING([--disable-taglib],[Disable support for MP4 files via taglib (default=enabled)]),
++              , enable_taglib=yes)
+ 
+ AC_ARG_ENABLE(wavpack,
+               AC_HELP_STRING([--disable-wavpack],[Disable support for Wavpack files (default=enabled)]),
+@@ -313,67 +313,35 @@
+ 
+ 
+ dnl ################################################
+-dnl # libmp4v2 library
++dnl # taglib library
+ dnl ################################################
+-if test "x$enable_mp4" = "xyes"; then
+-    dnl Librairies required for mp4 files, if not found 'enable_mp4' is disabled
+-    AC_MSG_CHECKING(for MP4 file support)
+-    AC_CHECK_HEADER(mp4v2/mp4v2.h, [], [mp4_available=no])
+-    AC_CHECK_LIB(mp4v2, MP4GetTrackMediaDataName, [], [mp4_available=no], [-lmp4v2])
++if test "x$enable_taglib" = "xyes"; then
++    dnl Libraries required for mp4 files, if not found 'enable_taglib' is disabled
++    PKG_CHECK_MODULES(TAGLIB_C, taglib_c >= 1.6.0, , taglib_available=no)
+ fi
+ 
+-AC_MSG_CHECKING(for MP4/AAC file support)
+-if test "x$enable_mp4" = "xyes"; then
+-    if test "x$mp4_available" = "xno"; then
++AC_MSG_CHECKING(for taglib_c)
++if test "x$enable_taglib" = "xyes"; then
++    if test "x$taglib_available_available" = "xno"; then
+         AC_MSG_RESULT(no)
+-        enable_mp4="no"
++        enable_taglib="no"
+         echo "***"
+         echo "*** Warning: MP4 file support disabled"
+-        echo "*** (Install libmp4v2 >= 1.9.0 to enable it)"
++        echo "*** (Install taglib_c >= 1.6.0 to enable it)"
+         echo "***"
+     else
+ 
+-        dnl Check version of mp4v2 installed
+-        LIBS_SAVE="$LIBS"
+-        CFLAGS_SAVE="$CFLAGS"
+-        LIBS="$LIBS $LIBMP4V2_LIBS"
+-        CFLAGS="$CFLAGS $LIBMP4V2_CFLAGS"
+-        AC_MSG_CHECKING(for libmp4v2 version)
+-            AC_TRY_RUN([
+-                #include <stdio.h>
+-                #include <mp4v2/mp4v2.h>
+-                int main (void)
+-                {
+-                    FILE *output;
+-                    output=fopen("conftest.mp4v2","w");
+-                    fprintf(output,"MP4V2_PROJECT_name=%s\nMP4V2_PROJECT_version=%s\n",PACKAGE_TARNAME,PACKAGE_VERSION);
+-                    fclose(output);
+-                    exit(0);
+-                }
+-            ], . ./conftest.mp4v2; echo "${LIBMP4V2_NAME}-${LIBMP4V2_VERSION}", AC_MSG_WARN(could not determine libmp4v2 version),[echo $ac_n "cross compiling; assuming ${LIBMP4V2_NAME}-${LIBMP4V2_VERSION} $ac_c"])
+-        LIBS="$LIBS_SAVE"
+-        CFLAGS="$CFLAGS_SAVE"
+-        if test "$LIBMP4V2_VERSION" != ""; then
+-            LIBMP4V2_VERSION="($LIBMP4V2_NAME-$LIBMP4V2_VERSION)"
+-        fi
+-
+-        dnl Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart. So we define 'NEWMP4' if it is the case
+-        AC_COMPILE_IFELSE([
+-           #include <mp4v2/mp4v2.h>
+-           main () {
+-           MP4FileHandle hFile;
+-           MP4GetMetadataCoverArt(hFile, NULL, NULL,0); }
+-        ], AC_DEFINE(NEWMP4,1,[Define for MP4 lib with multiple image support]),)
+-
+         AC_MSG_RESULT(yes)
+-        AC_DEFINE(ENABLE_MP4,1,[Define for MP4 support])
++        AC_DEFINE(ENABLE_MP4,1,[Define for taglib support])
++        CFLAGS="$CFLAGS $TAGLIB_C_CFLAGS"
++        LIBS="$LIBS $TAGLIB_C_LIBS"
+     fi
+ else
+     AC_MSG_RESULT(no)
+-    enable_mp4="no"
++    enable_taglib="no"
+     echo "***"
+     echo "*** MP4 file support disabled on commandline"
+-    echo "*** (Install libmp4v2 and use --enable-mp4 to enable it)"
++    echo "*** (Install taglib_c and use --enable-taglib to enable it)"
+     echo "***"
+ fi
+ 
+@@ -494,7 +462,7 @@
+ echo Ogg Vorbis file support .: $enable_ogg
+ echo Speex file support ......: $enable_speex
+ echo FLAC file support .......: $enable_flac $LIBFLAC_VERSION
+-echo MP4 file support ........: $enable_mp4 $LIBMP4V2_VERSION
++echo MP4 file support ........: $enable_taglib
+ echo WavPack support .........: $enable_wavpack
+ echo NLS/gettext .............: $USE_NLS
+ echo Install path ............: $prefix
+Index: easytag/src/mp4_header.c
+===================================================================
+--- easytag.orig/src/mp4_header.c	2011-06-08 23:28:43.000000000 +0700
++++ easytag/src/mp4_header.c	2011-06-08 23:36:48.433768764 +0700
+@@ -44,13 +44,13 @@
+ #undef PACKAGE_STRING
+ #undef PACKAGE_TARNAME
+ #undef PACKAGE_VERSION
+-#include <mp4v2/mp4v2.h>
++#include <tag_c.h>
+ 
+ 
+ /****************
+  * Declarations *
+  ****************/
+-
++/*
+ static const struct
+ {
+     uint8_t profile;
+@@ -106,7 +106,7 @@
+ };
+ 
+ #define NUMBER_OF(A) (sizeof(A) / sizeof(A[0]))
+-
++*/
+ 
+ /**************
+  * Prototypes *
+@@ -122,6 +122,7 @@
+  *
+  * Returns a format/sub-format information. Taken from mp4.h/mp4info.
+  */
++/*
+ static void getType(MP4FileHandle file, MP4TrackId trackId, const char **format, const char **subformat )
+ {
+     unsigned i;
+@@ -184,7 +185,7 @@
+         *subformat = media_data_name;
+     }
+ }
+-
++*/
+ 
+ /*
+  * Mp4_Header_Read_File_Info:
+@@ -193,10 +194,8 @@
+  */
+ gboolean Mp4_Header_Read_File_Info (gchar *filename, ET_File_Info *ETFileInfo)
+ {
+-    MP4FileHandle file;
+-    MP4TrackId trackId = 1;
+-    //const char* trackType;
+-    const char *format, *subformat;
++    TagLib_File *file;
++    const TagLib_AudioProperties *properties;
+ 
+     if (!filename || !ETFileInfo)
+         return FALSE;
+@@ -204,7 +203,7 @@
+     /* Get size of file */
+     ETFileInfo->size = Get_File_Size(filename);
+ 
+-    if ((file = MP4Read(filename, 0)) == MP4_INVALID_FILE_HANDLE )
++    if ((file = taglib_file_new_type(filename, TagLib_File_MP4)) == NULL )
+     {
+         gchar *filename_utf8 = filename_to_display(filename);
+         //g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+@@ -214,23 +213,20 @@
+     }
+ 
+     /* Check for audio track */
+-    if( MP4GetNumberOfTracks(file,MP4_AUDIO_TRACK_TYPE,0) < 1 )
++    if( !taglib_file_is_valid(file))
+     {
+         gchar *filename_utf8 = filename_to_display(filename);
+         Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,("Contains no audio track"));
+-        MP4Close(file);
+         g_free(filename_utf8);
+         return FALSE;
+     }
+-
+-    /* Get the first track id (index 0) */
+-    trackId = MP4FindTrackId(file, 0, MP4_AUDIO_TRACK_TYPE, 0);
++    
++    properties = taglib_file_audioproperties(file);
+ 
+     /* Get format/subformat */
+     {
+-        getType( file, trackId, &format, &subformat );
+-        ETFileInfo->mpc_version = g_strdup( format );
+-        ETFileInfo->mpc_profile = g_strdup( subformat );
++        ETFileInfo->mpc_version = g_strdup( "MPEG" );
++        ETFileInfo->mpc_profile = g_strdup( "4, Unknown" );
+     }
+ 
+     ETFileInfo->version = 4;
+@@ -238,12 +234,12 @@
+     ETFileInfo->layer = 14;
+ 
+     ETFileInfo->variable_bitrate = TRUE;
+-    ETFileInfo->bitrate = MP4GetTrackBitRate(file, trackId) / 1000;
+-    ETFileInfo->samplerate = MP4GetTrackTimeScale(file, trackId);
+-    ETFileInfo->mode = MP4GetTrackAudioChannels(file, trackId);
+-    ETFileInfo->duration = MP4ConvertFromTrackDuration(file, trackId, MP4GetTrackDuration(file, trackId), MP4_SECS_TIME_SCALE);
++    ETFileInfo->bitrate = taglib_audioproperties_bitrate(properties);
++    ETFileInfo->samplerate = taglib_audioproperties_samplerate(properties);
++    ETFileInfo->mode = taglib_audioproperties_channels(properties);
++    ETFileInfo->duration = taglib_audioproperties_length(properties);
+ 
+-    MP4Close(file);
++    taglib_file_free(file);
+     return TRUE;
+ }
+ 
+Index: easytag/src/mp4_tag.c
+===================================================================
+--- easytag.orig/src/mp4_tag.c	2011-06-08 23:28:43.000000000 +0700
++++ easytag/src/mp4_tag.c	2011-06-08 23:41:36.263768968 +0700
+@@ -21,7 +21,7 @@
+  */
+ 
+ /* Portions of this code was borrowed from the MPEG4IP tools project */
+-#include <config.h> // For definition of ENABLE_MP4
++#include <config.h> // For definition of ENABLE_TAGLIB
+ 
+ #ifdef ENABLE_MP4
+ 
+@@ -50,7 +50,7 @@
+ #undef PACKAGE_STRING
+ #undef PACKAGE_TARNAME
+ #undef PACKAGE_VERSION
+-#include <mp4v2/mp4v2.h>
++#include <tag_c.h>
+ 
+ 
+ /****************
+@@ -79,15 +79,9 @@
+ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
+ {
+     FILE   *file;
+-    MP4FileHandle mp4file = NULL;
+-    uint16_t track, track_total;
+-    uint16_t disk, disktotal;
+-    u_int8_t *coverArt;
+-    u_int32_t coverSize;
+-    Picture *prev_pic = NULL;
+-#ifdef NEWMP4
+-    gint pic_num;
+-#endif
++    TagLib_File *mp4file;
++    TagLib_Tag *tag;
++    unsigned track;
+     
+     if (!filename || !FileTag)
+         return FALSE;
+@@ -102,8 +96,8 @@
+     fclose(file); // We close it cause mp4 opens/closes file itself
+ 
+     /* Get data from tag */
+-    mp4file = MP4Read(filename, 0);
+-    if (mp4file == MP4_INVALID_FILE_HANDLE)
++    mp4file = taglib_file_new_type(filename, TagLib_File_MP4);
++    if (mp4file == NULL)
+     {
+         gchar *filename_utf8 = filename_to_display(filename);
+         Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+@@ -112,25 +106,27 @@
+     }
+ 
+     /* TODO Add error detection */
++    tag = taglib_file_tag(mp4file);
+ 
+     /*********
+      * Title *
+      *********/
+-    MP4GetMetadataName(mp4file, &FileTag->title);
++    FileTag->title = g_strdup(taglib_tag_title(tag));
+ 
+     /**********
+      * Artist *
+      **********/
+-    MP4GetMetadataArtist(mp4file, &FileTag->artist);
++    FileTag->artist = g_strdup(taglib_tag_artist(tag));
+ 
+     /*********
+      * Album *
+      *********/
+-    MP4GetMetadataAlbum(mp4file, &FileTag->album);
++    FileTag->album = g_strdup(taglib_tag_album(tag));
+ 
+     /**********************
+      * Disk / Total Disks *
+      **********************/
++    /*
+     if (MP4GetMetadataDisk(mp4file, &disk, &disktotal))
+     {
+         if (disk != 0 && disktotal != 0)
+@@ -142,42 +138,44 @@
+         //if (disktotal != 0)
+         //    FileTag->disk_number_total = g_strdup_printf("%d",(gint)disktotal);
+     }
++    */
+ 
+     /********
+      * Year *
+      ********/
+-    MP4GetMetadataYear(mp4file, &FileTag->year);
++    FileTag->year = g_strdup_printf("%u", taglib_tag_year(tag));
+ 
+     /*************************
+      * Track and Total Track *
+      *************************/
+-    if (MP4GetMetadataTrack(mp4file, &track, &track_total))
++    track = taglib_tag_track(tag);
++    
+     {
+         if (track != 0)
+             FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track); // Just to have numbers like this : '01', '05', '12', ...
+-        if (track_total != 0)
+-            FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
++        //if (track_total != 0)
++        //    FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
+     }
+ 
+     /*********
+      * Genre *
+      *********/
+-    MP4GetMetadataGenre(mp4file, &FileTag->genre);
++    FileTag->genre = g_strdup(taglib_tag_genre(tag));
+ 
+     /***********
+      * Comment *
+      ***********/
+-    MP4GetMetadataComment(mp4file, &FileTag->comment);
++    FileTag->comment = g_strdup(taglib_tag_comment(tag));
+ 
+     /**********************
+      * Composer or Writer *
+      **********************/
+-    MP4GetMetadataWriter(mp4file, &FileTag->composer);
++    // MP4GetMetadataWriter(mp4file, &FileTag->composer);
+ 
+     /*****************
+      * Encoding Tool *
+      *****************/
+-    MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
++    // MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
+ 
+     /* Unimplemented
+     Tempo / BPM
+@@ -187,6 +185,7 @@
+     /***********
+      * Picture *
+      ***********/
++     /*
+ #ifdef NEWMP4
+     // There version can handle multiple pictures!
+     // Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart
+@@ -210,10 +209,11 @@
+         pic->type = PICTURE_TYPE_FRONT_COVER;
+         pic->description = NULL;
+     }
+-
++    */
+ 
+     /* Free allocated data */
+-    MP4Close(mp4file);
++    taglib_tag_free_strings();
++    taglib_file_free(mp4file);
+ 
+     return TRUE;
+ }
+@@ -233,7 +233,8 @@
+     gchar    *filename;
+     gchar    *filename_utf8;
+     FILE     *file;
+-    MP4FileHandle mp4file = NULL;
++    TagLib_File *mp4file = NULL;
++    TagLib_Tag *tag;
+     gint error = 0;
+ 
+     if (!ETFile || !ETFile->FileTag)
+@@ -252,23 +253,25 @@
+     fclose(file);
+ 
+     /* Open file for writing */
+-    mp4file = MP4Modify(filename,0,0);
+-    if (mp4file == MP4_INVALID_FILE_HANDLE)
++    mp4file = taglib_file_new_type(filename, TagLib_File_MP4);
++    if (mp4file == NULL)
+     {
+         Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+         return FALSE;
+     }
++    
++    tag = taglib_file_tag(mp4file);
+ 
+     /*********
+      * Title *
+      *********/
+     if (FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
+     {
+-        MP4SetMetadataName(mp4file, FileTag->title);
++        taglib_tag_set_title(tag, FileTag->title);
+     }else
+     {
+         //MP4DeleteMetadataName(mp4file); // Not available on mpeg4ip-1.2 (only in 1.3)
+-        MP4SetMetadataName(mp4file, "");
++        taglib_tag_set_title(tag, "");
+     }
+ 
+     /**********
+@@ -276,11 +279,11 @@
+      **********/
+     if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
+     {
+-        MP4SetMetadataArtist(mp4file, FileTag->artist);
++        taglib_tag_set_artist(tag, FileTag->artist);
+     }else
+     {
+         //MP4DeleteMetadataArtist(mp4file);
+-        MP4SetMetadataArtist(mp4file, "");
++        taglib_tag_set_artist(tag, "");
+     }
+ 
+     /*********
+@@ -288,11 +291,11 @@
+      *********/
+     if (FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
+     {
+-        MP4SetMetadataAlbum(mp4file, FileTag->album);
++        taglib_tag_set_album(tag, FileTag->album);
+     }else
+     {
+         //MP4DeleteMetadataAlbum(mp4file);
+-        MP4SetMetadataAlbum(mp4file, "");
++        taglib_tag_set_album(tag, "");
+     }
+ 
+     /**********************
+@@ -301,12 +304,9 @@
+     if (FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
+     //|| FileTag->disc_number_total && g_utf8_strlen(FileTag->disc_number_total, -1) > 0)
+     {
+-        uint16_t disk      = 0;
+-        uint16_t disktotal = 0;
+-
+         /* At the present time, we manage only disk number like '1' or '1/2', we
+          * don't use disk number total... so here we try to decompose */
+-        if (FileTag->disc_number)
++        /*if (FileTag->disc_number)
+         {
+             gchar *dn_tmp = g_strdup(FileTag->disc_number);
+             gchar *tmp    = strchr(dn_tmp,'/');
+@@ -325,16 +325,16 @@
+             }
+             g_free(dn_tmp);
+         }
+-        /*if (FileTag->disc_number)
++        if (FileTag->disc_number)
+             disk = atoi(FileTag->disc_number);
+         if (FileTag->disc_number_total)
+             disktotal = atoi(FileTag->disc_number_total);
+         */
+-        MP4SetMetadataDisk(mp4file, disk, disktotal);
++        // MP4SetMetadataDisk(mp4file, disk, disktotal);
+     }else
+     {
+         //MP4DeleteMetadataDisk(mp4file);
+-        MP4SetMetadataDisk(mp4file, 0, 0);
++        //MP4SetMetadataDisk(mp4file, 0, 0);
+     }
+ 
+     /********
+@@ -342,30 +342,29 @@
+      ********/
+     if (FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
+     {
+-        MP4SetMetadataYear(mp4file, FileTag->year);
++        taglib_tag_set_year(tag, atoi(FileTag->year));
+     }else
+     {
+         //MP4DeleteMetadataYear(mp4file);
+-        MP4SetMetadataYear(mp4file, "");
++        taglib_tag_set_year(tag, 0);
+     }
+ 
+     /*************************
+      * Track and Total Track *
+      *************************/
+     if ( (FileTag->track       && g_utf8_strlen(FileTag->track, -1) > 0)
+-    ||   (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) )
++    /*||   (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) */)
+     {
+-        uint16_t track       = 0;
+-        uint16_t track_total = 0;
++        unsigned track       = 0;
+         if (FileTag->track)
+             track = atoi(FileTag->track);
+-        if (FileTag->track_total)
+-            track_total = atoi(FileTag->track_total);
+-        MP4SetMetadataTrack(mp4file, track, track_total);
++        //if (FileTag->track_total)
++        //    track_total = atoi(FileTag->track_total);
++        taglib_tag_set_track(tag, track);
+     }else
+     {
+         //MP4DeleteMetadataTrack(mp4file);
+-        MP4SetMetadataTrack(mp4file, 0, 0);
++        taglib_tag_set_track(tag, 0);
+     }
+ 
+     /*********
+@@ -373,11 +372,11 @@
+      *********/
+     if (FileTag->genre && g_utf8_strlen(FileTag->genre, -1) > 0 )
+     {
+-        MP4SetMetadataGenre(mp4file, FileTag->genre);
++        taglib_tag_set_genre(tag, FileTag->genre);
+     }else
+     {
+         //MP4DeleteMetadataGenre(mp4file);
+-        MP4SetMetadataGenre(mp4file, "");
++        taglib_tag_set_genre(tag, "");
+     }
+ 
+     /***********
+@@ -385,16 +384,17 @@
+      ***********/
+     if (FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
+     {
+-        MP4SetMetadataComment(mp4file, FileTag->comment);
++        taglib_tag_set_comment(tag, FileTag->comment);
+     }else
+     {
+         //MP4DeleteMetadataComment(mp4file);
+-        MP4SetMetadataComment(mp4file, "");
++        taglib_tag_set_comment(tag, "");
+     }
+ 
+     /**********************
+      * Composer or Writer *
+      **********************/
++    /*
+     if (FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
+     {
+         MP4SetMetadataWriter(mp4file, FileTag->composer);
+@@ -403,10 +403,12 @@
+         //MP4DeleteMetadataWriter(mp4file);
+         MP4SetMetadataWriter(mp4file, "");
+     }
++    */
+ 
+     /*****************
+      * Encoding Tool *
+      *****************/
++    /*
+     if (FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
+     {
+         MP4SetMetadataTool(mp4file, FileTag->encoded_by);
+@@ -415,10 +417,12 @@
+         //MP4DeleteMetadataTool(mp4file);
+         MP4SetMetadataTool(mp4file, "");
+     }
++    */
+ 
+     /***********
+      * Picture *
+      ***********/
++    /*
+     {
+         // Can handle only one picture...
+         Picture *pic;
+@@ -433,9 +437,10 @@
+             }
+         }
+     }
++    */
+ 
+-
+-    MP4Close(mp4file);
++    taglib_file_save(mp4file);
++    taglib_file_free(mp4file);
+ 
+     if (error) return FALSE;
+     else       return TRUE;
+Index: easytag/src/easytag.c
+===================================================================
+--- easytag.orig/src/easytag.c	2011-06-08 23:28:43.000000000 +0700
++++ easytag/src/easytag.c	2011-06-08 23:28:50.000000000 +0700
+@@ -4318,12 +4318,12 @@
+ 
+ #ifdef ENABLE_MP4
+         case MP4_TAG:
+-            gtk_widget_show(GTK_WIDGET(DiscNumberLabel));
+-            gtk_widget_show(GTK_WIDGET(DiscNumberEntry));
+-            gtk_widget_show(GTK_WIDGET(DiscNumberMButton));
+-            gtk_widget_show(GTK_WIDGET(ComposerLabel));
+-            gtk_widget_show(GTK_WIDGET(ComposerEntry));
+-            gtk_widget_show(GTK_WIDGET(ComposerMButton));
++            gtk_widget_hide(GTK_WIDGET(DiscNumberLabel));
++            gtk_widget_hide(GTK_WIDGET(DiscNumberEntry));
++            gtk_widget_hide(GTK_WIDGET(DiscNumberMButton));
++            gtk_widget_hide(GTK_WIDGET(ComposerLabel));
++            gtk_widget_hide(GTK_WIDGET(ComposerEntry));
++            gtk_widget_hide(GTK_WIDGET(ComposerMButton));
+             gtk_widget_hide(GTK_WIDGET(OrigArtistLabel));
+             gtk_widget_hide(GTK_WIDGET(OrigArtistEntry));
+             gtk_widget_hide(GTK_WIDGET(OrigArtistMButton));
+@@ -4333,16 +4333,16 @@
+             gtk_widget_hide(GTK_WIDGET(URLLabel));
+             gtk_widget_hide(GTK_WIDGET(URLEntry));
+             gtk_widget_hide(GTK_WIDGET(URLMButton));
+-            gtk_widget_show(GTK_WIDGET(EncodedByLabel));
+-            gtk_widget_show(GTK_WIDGET(EncodedByEntry));
+-            gtk_widget_show(GTK_WIDGET(EncodedByMButton));
+-            gtk_widget_show(GTK_WIDGET(PictureLabel));
+-            gtk_widget_show(GTK_WIDGET(PictureScrollWindow));
+-            gtk_widget_show(GTK_WIDGET(PictureMButton));
+-            gtk_widget_show(GTK_WIDGET(PictureClearButton));
+-            gtk_widget_show(GTK_WIDGET(PictureAddButton));
+-            gtk_widget_show(GTK_WIDGET(PictureSaveButton));
+-            gtk_widget_show(GTK_WIDGET(PicturePropertiesButton));
++            gtk_widget_hide(GTK_WIDGET(EncodedByLabel));
++            gtk_widget_hide(GTK_WIDGET(EncodedByEntry));
++            gtk_widget_hide(GTK_WIDGET(EncodedByMButton));
++            gtk_widget_hide(GTK_WIDGET(PictureLabel));
++            gtk_widget_hide(GTK_WIDGET(PictureScrollWindow));
++            gtk_widget_hide(GTK_WIDGET(PictureMButton));
++            gtk_widget_hide(GTK_WIDGET(PictureClearButton));
++            gtk_widget_hide(GTK_WIDGET(PictureAddButton));
++            gtk_widget_hide(GTK_WIDGET(PictureSaveButton));
++            gtk_widget_hide(GTK_WIDGET(PicturePropertiesButton));
+             break;
+ #endif
+ 

-- 
easytag packaging



More information about the pkg-multimedia-commits mailing list