Package: mediatomb
Version: 0.12.1-4
Severity: serious
Tags: upstream patch
Justification: fails to build from source (but built successfully in the past)

Dear Maintainer,

The current version of mediatomb (in wheezy) fails to build from source 
with libmp4v2 support enabled.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

        apt-get source mediatomb
        cd mediatomb-0.12.1
        ./configure && make

   * What was the outcome of this action?

   ...
   ../src/metadata/libmp4v2_handler.cc: In function ‘void 
   addMetaField(metadata_fields_t, MP4FileHandle, zmm::Ref<CdsItem>)’:
   ../src/metadata/libmp4v2_handler.cc:77:48: error: 
   ‘MP4GetMetadataName’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc:80:50: error: 
   ‘MP4GetMetadataArtist’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc:83:49: error: 
   ‘MP4GetMetadataAlbum’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc:86:48: error: 
   ‘MP4GetMetadataYear’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc:98:49: error: 
   ‘MP4GetMetadataGenre’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc:101:51: error: 
   ‘MP4GetMetadataComment’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc:104:59: error: 
   ‘MP4GetMetadataTrack’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc: In member function ‘virtual void 
   LibMP4V2Handler::fillMetadata(zmm::Ref<CdsItem>)’:
   ../src/metadata/libmp4v2_handler.cc:200:65: error: 
   ‘MP4GetMetadataCoverArt’ was not declared in this scope
   ../src/metadata/libmp4v2_handler.cc: In member function ‘virtual 
   zmm::Ref<IOHandler> LibMP4V2Handler::serveContent(zmm::Ref<CdsItem>, 
   int, off_t*)’:
   ../src/metadata/libmp4v2_handler.cc:258:61: error: 
   ‘MP4GetMetadataCoverArt’ was not declared in this scope
   make[2]: *** [libmediatomb_a-libmp4v2_handler.o] Error 1
   make[2]: Leaving directory 
   `/home/jona/sandbox/mediatomb-0.12.1/build'
   make[1]: *** [all-recursive] Error 1
   make[1]: Leaving directory `/home/jona/sandbox/mediatomb-0.12.1'
   make: *** [all] Error 2

I've attached a patch that replaces the relevant deprecated / deleted 
function calls.



-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-2-686-pae (SMP w/1 CPU core)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages mediatomb depends on:
ii  chromium [www-browser]          18.0.1025.151~r130497-1
ii  epiphany-browser [www-browser]  3.4.2-1
ii  iceweasel [www-browser]         10.0.5esr-1
ii  lynx-cur [www-browser]          2.8.8dev.12-2
ii  mediatomb-daemon                0.12.1-4

ii  libmp4v2-dev:i386               2:2.0.0-dmo1

mediatomb recommends no packages.

mediatomb suggests no packages.

-- debconf-show failed
--- 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;
         }

Reply via email to