[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