[SCM] mediatomb/master: Fix build against libmp4v2. Bug: #677958

zumbi at users.alioth.debian.org zumbi at users.alioth.debian.org
Fri Dec 28 10:57:23 UTC 2012


The following commit has been merged in the master branch:
commit 3f767c8740944d15d9cdd4798f2c481c8119671f
Author: Hector Oron <hector.oron at collabora.co.uk>
Date:   Fri Dec 28 11:45:13 2012 +0100

    Fix build against libmp4v2. Bug: #677958
    
      * d/p/fix-libmp4v2-build.patch
        - Fix build against libmp4v2. (Closes: #677958)
        - Thanks Jona Schuman for patch.
        - We do not build it by default due to licensing issues:
          Clash between libmp4v2 (MPL) and the rest of mediatomb (GPL).
    
    Signed-off-by: Hector Oron <hector.oron at collabora.co.uk>

diff --git a/debian/patches/0010_fix_libmp4v2_build.patch b/debian/patches/0010_fix_libmp4v2_build.patch
new file mode 100644
index 0000000..31e5687
--- /dev/null
+++ b/debian/patches/0010_fix_libmp4v2_build.patch
@@ -0,0 +1,112 @@
+--- mediatomb-0.12.1.orig/src/metadata/libmp4v2_handler.cc	2010-03-25 10:58:10.000000000 -0400
++++ mediatomb-0.12.1/src/metadata/libmp4v2_handler.cc	2012-06-18 03:05:40.000000000 -0400
+@@ -66,24 +66,25 @@
+ {
+     String value;
+     char*  mp4_retval = NULL;
+-    u_int16_t track;
+-    u_int16_t total_tracks;
+  
+     Ref<StringConverter> sc = StringConverter::i2i();
+     
++    const MP4Tags* tags = MP4TagsAlloc();
++    MP4TagsFetch( tags, mp4 );
++
+     switch (field)
+     {
+         case M_TITLE:
+-            MP4GetMetadataName(mp4, &mp4_retval);
++            mp4_retval = const_cast<char*>( tags->name );
+             break;
+         case M_ARTIST:
+-            MP4GetMetadataArtist(mp4, &mp4_retval);
++            mp4_retval = const_cast<char*> ( tags->artist );
+             break;
+         case M_ALBUM:
+-            MP4GetMetadataAlbum(mp4, &mp4_retval);
++            mp4_retval = const_cast<char*> ( tags->album );
+             break;
+         case M_DATE:
+-            MP4GetMetadataYear(mp4, &mp4_retval);
++            mp4_retval = const_cast<char*> ( tags->releaseDate );
+             if (mp4_retval)
+             {
+                 value = mp4_retval;
+@@ -95,17 +96,16 @@
+             }
+             break;
+         case M_GENRE:
+-            MP4GetMetadataGenre(mp4, &mp4_retval);
++            mp4_retval = const_cast<char*> ( tags->genre );
+             break;
+         case M_DESCRIPTION:
+-            MP4GetMetadataComment(mp4, &mp4_retval);
++            mp4_retval = const_cast<char*> ( tags->description );
+             break;
+         case M_TRACKNUMBER:
+-            MP4GetMetadataTrack(mp4, &track, &total_tracks);
+-            if (track > 0)
++            if (tags->track->index > 0)
+             {
+-                value = String::from(track);
+-                item->setTrackNumber((int)track);
++                value = String::from(tags->track->index);
++                item->setTrackNumber((int)tags->track->index);
+             }
+             else
+                 return;
+@@ -190,21 +190,20 @@
+         }
+ 
+ #if defined(HAVE_MAGIC)
+-        u_int8_t *art_data;
+-        u_int32_t art_data_len;
++        const MP4Tags* tags = MP4TagsAlloc();
++        MP4TagsFetch( tags, mp4 );
++        void *art_data = tags->artwork->data;
++        u_int32_t art_data_len = tags->artwork->size;
+         String art_mimetype;
+ #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT
+-        if (MP4GetMetadataCoverArtCount(mp4) && 
+-            MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len))
+-#else
+-            MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len);
++        if (tags->artworkCount && art_data_len > 0)
+ #endif
+         {
+             if (art_data)
+             {
+                 try
+                 {
+-                    art_mimetype = ContentManager::getInstance()->getMimeTypeFromBuffer((void *)art_data, art_data_len);
++                    art_mimetype = ContentManager::getInstance()->getMimeTypeFromBuffer(art_data, art_data_len);
+                     if (!string_ok(art_mimetype))
+                         art_mimetype = _(MIMETYPE_DEFAULT);
+ 
+@@ -249,18 +248,21 @@
+ 
+     if (ctype != ID3_ALBUM_ART)
+         throw _Exception(_("LibMP4V2Handler: got unknown content type: ") + ctype);
++
++    const MP4Tags* tags = MP4TagsAlloc();
++    MP4TagsFetch( tags, mp4 );
+ #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT
+-    if (!MP4GetMetadataCoverArtCount(mp4))
++    if (tags->artworkCount<1)
+         throw _Exception(_("LibMP4V2Handler: resource has no album art information"));
+ #endif
+-    u_int8_t *art_data;
+-    u_int32_t art_data_len;
+-    if (MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len))
++    void *art_data = tags->artwork->data;
++    u_int32_t art_data_len = tags->artwork->size;
++    if (art_data_len > 0)
+     {
+         if (art_data)
+         {
+             *data_size = (off_t)art_data_len;
+-            Ref<IOHandler> h(new MemIOHandler((void *)art_data, art_data_len));
++            Ref<IOHandler> h(new MemIOHandler(art_data, art_data_len));
+             free(art_data);
+             return h;
+         }
diff --git a/debian/patches/series b/debian/patches/series
index 44dd93d..de03cde 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,3 +11,4 @@
 0008b_gcc_4.7_support.patch
 0009a_libav_0.7_support.patch
 0009b_fix_ffmpeg_metadata.patch
+0010_fix_libmp4v2_build.patch

-- 
MediaTomb packaging



More information about the pkg-multimedia-commits mailing list