diff --git a/aur/mediatomb/PKGBUILD b/aur/mediatomb/PKGBUILD index 748478018..955004706 100644 --- a/aur/mediatomb/PKGBUILD +++ b/aur/mediatomb/PKGBUILD @@ -4,16 +4,14 @@ # Contributor: Mika Hynnä <igheax@gmail.com> # Contributor: Jonathan Conder <jonno.conder@gmail.com> -plugrel=1 - pkgname=mediatomb pkgver=0.12.1 -pkgrel=7 +pkgrel=8 pkgdesc="Free UPnP/DLNA media server" arch=('i686' 'x86_64') url="http://mediatomb.cc/" license=('GPL') -depends=('curl' 'ffmpegthumbnailer' 'js' 'libexif' 'libmp4v2' 'sqlite3' 'taglib') +depends=('file' 'curl' 'ffmpegthumbnailer' 'js' 'libexif' 'libmp4v2' 'sqlite3' 'taglib') backup=('etc/conf.d/mediatomb') install=mediatomb.install source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" @@ -22,14 +20,16 @@ source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" 'gcc46.patch' 'tonewjs.patch' 'jsparse.patch' - 'libav_0.7_support.patch') + 'libav_0.7_support.patch' + 'libmp4v2_191_p497.patch') sha256sums=('31163c34a7b9d1c9735181737cb31306f29f1f2a0335fb4f53ecccf8f62f11cd' '1a67a1deb8a41467fe9bbf66358a255f0df97b0170a5fc3d48c1f768c8d328b9' 'ba9753a4a380d4c717c987efec03a3c6d401d3ff93a6fced28098adbd3a44cc9' '0c02a20032f0c296800b1bb9644638970c2dedbc5ab7141d66a637235e9da6ce' '2cd8f5628c3a38b290526f008bae351b90211825f86e5959bf95f140748de574' 'd9a3062858900d32b977f0d50d168fd7d36785b6ecc038c019e661e27f7b1c17' - 'c6523e8bf5e2da89b7475d6777ef9bffe7d089752ef2f7b27b5e39a4130fb0ff') + 'c6523e8bf5e2da89b7475d6777ef9bffe7d089752ef2f7b27b5e39a4130fb0ff' + 'd39c2f9aab051c5447461718fd0ec72cf5982f6c920a4a985a50831f34babe84') build() { cd "$srcdir/$pkgname-$pkgver" @@ -37,6 +37,7 @@ build() { patch -Np1 -i "$srcdir/tonewjs.patch" patch -Np1 -i "$srcdir/jsparse.patch" patch -Np1 -i "$srcdir/libav_0.7_support.patch" + patch -Np1 -i "$srcdir/libmp4v2_191_p497.patch" ./configure --prefix=/usr \ --disable-mysql \ diff --git a/aur/mediatomb/libmp4v2_191_p497.patch b/aur/mediatomb/libmp4v2_191_p497.patch new file mode 100644 index 000000000..6a6b51e1e --- /dev/null +++ b/aur/mediatomb/libmp4v2_191_p497.patch @@ -0,0 +1,187 @@ +diff -urN old/src/metadata/libmp4v2_handler.cc new/src/metadata/libmp4v2_handler.cc +--- old/src/metadata/libmp4v2_handler.cc 2012-04-05 01:46:26.000000000 +0200 ++++ new/src/metadata/libmp4v2_handler.cc 2012-04-05 02:01:24.000000000 +0200 +@@ -65,29 +65,28 @@ + static void addMetaField(metadata_fields_t field, MP4FileHandle mp4, Ref<CdsItem> item) + { + String value; +- char* mp4_retval = NULL; +- u_int16_t track; +- u_int16_t total_tracks; +- + Ref<StringConverter> sc = StringConverter::i2i(); + ++ const MP4Tags* new_tags = MP4TagsAlloc(); ++ ++ if (!MP4TagsFetch(new_tags, mp4)) ++ return; ++ + switch (field) + { + case M_TITLE: +- MP4GetMetadataName(mp4, &mp4_retval); ++ value = new_tags->name; + break; + case M_ARTIST: +- MP4GetMetadataArtist(mp4, &mp4_retval); ++ value = new_tags->artist; + break; + case M_ALBUM: +- MP4GetMetadataAlbum(mp4, &mp4_retval); ++ value = new_tags->album; + break; + case M_DATE: +- MP4GetMetadataYear(mp4, &mp4_retval); +- if (mp4_retval) ++ value = new_tags->releaseDate; ++ if (value.length() > 0) + { +- value = mp4_retval; +- free(mp4_retval); + if (string_ok(value)) + value = value + "-01-01"; + else +@@ -95,34 +94,31 @@ + } + break; + case M_GENRE: +- MP4GetMetadataGenre(mp4, &mp4_retval); ++ value = new_tags->genre; + break; + case M_DESCRIPTION: +- MP4GetMetadataComment(mp4, &mp4_retval); ++ value = new_tags->comments; + break; + case M_TRACKNUMBER: +- MP4GetMetadataTrack(mp4, &track, &total_tracks); +- if (track > 0) ++ if (new_tags->track) + { +- value = String::from(track); +- item->setTrackNumber((int)track); ++ value = String::from(new_tags->track->index); ++ item->setTrackNumber((int)new_tags->track->index); + } + else ++ { ++ MP4TagsFree( new_tags ); + return; ++ } + break; + default: ++ MP4TagsFree( new_tags ); + return; + } + +- if ((field != M_DATE) && (field != M_TRACKNUMBER) && +- (mp4_retval)) +- { +- value = mp4_retval; +- free(mp4_retval); +- } +- ++ MP4TagsFree( new_tags ); + value = trim_string(value); +- ++ + if (string_ok(value)) + { + item->setMetadata(MT_KEYS[field].upnp, sc->convert(value)); +@@ -190,14 +186,19 @@ + } + + #if defined(HAVE_MAGIC) +- u_int8_t *art_data; +- u_int32_t art_data_len; ++ void *art_data = 0; ++ u_int32_t art_data_len = 0; + String art_mimetype; ++ ++ const MP4Tags* new_tags = MP4TagsAlloc(); ++ MP4TagsFetch(new_tags, mp4); ++ if (new_tags->artworkCount) ++ { ++ art_data = new_tags->artwork->data; ++ art_data_len = new_tags->artwork->size; ++ } + #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 (new_tags->artworkCount && art_data_len > 0) + #endif + { + if (art_data) +@@ -211,11 +212,10 @@ + } + catch (Exception ex) + { +- free(art_data); ++ MP4TagsFree(new_tags); + throw ex; + } + +- free(art_data); + if (art_mimetype != _(MIMETYPE_DEFAULT)) + { + Ref<CdsResource> resource(new CdsResource(CH_MP4)); +@@ -225,6 +225,7 @@ + } + } + } ++ MP4TagsFree(new_tags); + #endif + MP4Close(mp4); + } +@@ -249,26 +250,35 @@ + + if (ctype != ID3_ALBUM_ART) + throw _Exception(_("LibMP4V2Handler: got unknown content type: ") + ctype); ++ ++ const MP4Tags* new_tags = MP4TagsAlloc(); ++ if (MP4TagsFetch(new_tags, mp4)) ++ { + #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT +- if (!MP4GetMetadataCoverArtCount(mp4)) +- throw _Exception(_("LibMP4V2Handler: resource has no album art information")); ++ if (!new_tags->artworkCount) ++ 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)) +- { +- if (art_data) ++ void *art_data = 0; ++ u_int32_t art_data_len; ++ ++ const MP4TagArtwork* art = new_tags->artwork; ++ art_data = art->data; ++ art_data_len = art->size; ++ if (art) + { +- *data_size = (off_t)art_data_len; +- Ref<IOHandler> h(new MemIOHandler((void *)art_data, art_data_len)); +- free(art_data); +- return h; ++ if (art_data) ++ { ++ *data_size = (off_t)art_data_len; ++ Ref<IOHandler> h(new MemIOHandler(art_data, art_data_len)); ++ MP4TagsFree(new_tags); ++ return h; ++ } + } ++ MP4TagsFree(new_tags); + } +- + throw _Exception(_("LibMP4V2Handler: could not serve album art " +- "for file") + item->getLocation() + +- " - embedded image not found"); ++ "for file") + item->getLocation() + ++ " - embedded image not found"); + } + + #endif // HAVE_LIBMP4V2 +De binära filerna old/src/metadata/.libmp4v2_handler.cc.swp och new/src/metadata/.libmp4v2_handler.cc.swp skiljer