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;
}