diff options
author | Ryan Hill <rhill@gentoo.org> | 2012-04-11 04:54:08 +0000 |
---|---|---|
committer | Ryan Hill <rhill@gentoo.org> | 2012-04-11 04:54:08 +0000 |
commit | 6b30ed78c2fb44d5516f77ce8c508db542442c6f (patch) | |
tree | b6da5816ce579297d5d24b45bf3b22f723e90966 /net-misc/mediatomb/files | |
parent | Version bump. #411233 (diff) | |
download | historical-6b30ed78c2fb44d5516f77ce8c508db542442c6f.tar.gz historical-6b30ed78c2fb44d5516f77ce8c508db542442c6f.tar.bz2 historical-6b30ed78c2fb44d5516f77ce8c508db542442c6f.zip |
Fix bug #407753 (GCC 4.7 build failure) and bug #410235 (libmp4v2 API
breakage, patch by Peter Asplund).
Package-Manager: portage-2.2.0_alpha100/cvs/Linux x86_64
Diffstat (limited to 'net-misc/mediatomb/files')
-rw-r--r-- | net-misc/mediatomb/files/mediatomb-0.12.1-gcc47.patch | 120 | ||||
-rw-r--r-- | net-misc/mediatomb/files/mediatomb-0.12.1-libmp4v2.patch | 187 |
2 files changed, 307 insertions, 0 deletions
diff --git a/net-misc/mediatomb/files/mediatomb-0.12.1-gcc47.patch b/net-misc/mediatomb/files/mediatomb-0.12.1-gcc47.patch new file mode 100644 index 000000000000..5c4687d15a51 --- /dev/null +++ b/net-misc/mediatomb/files/mediatomb-0.12.1-gcc47.patch @@ -0,0 +1,120 @@ +diff --git a/src/hash/dbo_hash.h b/src/hash/dbo_hash.h +index 2e58627..16c15b3 100644 +--- a/src/hash/dbo_hash.h ++++ b/src/hash/dbo_hash.h +@@ -106,7 +106,7 @@ public: + inline bool remove(KT key) + { + struct dbo_hash_slot<KT, VT> *slot; +- if (! search(key, &slot)) ++ if (! this->search(key, &slot)) + return false; + slot->key = deletedKey; + slot->value->release(); +@@ -136,7 +136,7 @@ public: + inline void put(KT key, zmm::Ref<VT> value) + { + struct dbo_hash_slot<KT, VT> *slot; +- search(key, &slot); ++ this->search(key, &slot); + put(key, (hash_slot_t)slot, value); + } + void put(KT key, hash_slot_t destSlot, zmm::Ref<VT> value) +@@ -162,7 +162,7 @@ public: + inline zmm::Ref<VT> get(KT key) + { + struct dbo_hash_slot<KT, VT> *slot; +- bool found = search(key, &slot); ++ bool found = this->search(key, &slot); + if (found) + return zmm::Ref<VT>(slot->value); + else +@@ -174,7 +174,7 @@ public: + inline zmm::Ref<VT> get(KT key, hash_slot_t *destSlot) + { + struct dbo_hash_slot<KT, VT> **slot = (struct dbo_hash_slot<KT, VT> **)destSlot; +- bool found = search(key, slot); ++ bool found = this->search(key, slot); + if (found) + return zmm::Ref<VT>((*slot)->value); + else +diff --git a/src/hash/dbr_hash.h b/src/hash/dbr_hash.h +index 6e65d7f..7028890 100644 +--- a/src/hash/dbr_hash.h ++++ b/src/hash/dbr_hash.h +@@ -124,7 +124,7 @@ public: + inline bool remove(KT key) + { + struct dbr_hash_slot<KT> *slot; +- if (! search(key, &slot)) ++ if (! this->search(key, &slot)) + return false; + slot->key = deletedKey; + int array_slot = slot->array_slot; +@@ -134,7 +134,7 @@ public: + return true; + } + data_array[array_slot] = data_array[--this->count]; +- if (! search(data_array[array_slot], &slot)) ++ if (! this->search(data_array[array_slot], &slot)) + { + log_debug("DBR-Hash-Error: (%d; array_slot=%d; count=%d)\n", data_array[array_slot], array_slot, this->count); + throw zmm::Exception(_("DBR-Hash-Error: key in data_array not found in hashtable")); +@@ -146,7 +146,7 @@ public: + inline void put(KT key) + { + struct dbr_hash_slot<KT> *slot; +- if (! search(key, &slot)) ++ if (! this->search(key, &slot)) + { + #ifdef TOMBDEBUG + if (this->count >= realCapacity) +@@ -194,7 +194,7 @@ public: + inline bool exists(KT key) + { + struct dbr_hash_slot<KT> *slot; +- return search(key, &slot); ++ return this->search(key, &slot); + } + + /* +diff --git a/src/hash/dso_hash.h b/src/hash/dso_hash.h +index adfb97f..03ec852 100644 +--- a/src/hash/dso_hash.h ++++ b/src/hash/dso_hash.h +@@ -100,7 +100,7 @@ public: + inline bool remove(zmm::String key) + { + struct dso_hash_slot<VT> *slot; +- if (! search(key, &slot)) ++ if (! this->search(key, &slot)) + return false; + slot->key->release(); + slot->value->release(); +@@ -112,7 +112,7 @@ public: + inline void put(zmm::String key, zmm::Ref<VT> value) + { + struct dso_hash_slot<VT> *slot; +- search(key, &slot); ++ this->search(key, &slot); + put(key, (hash_slot_t)slot, value); + } + void put(zmm::String key, hash_slot_t destSlot, zmm::Ref<VT> value) +@@ -141,7 +141,7 @@ public: + inline zmm::Ref<VT> get(zmm::String key) + { + struct dso_hash_slot<VT> *slot; +- bool found = search(key, &slot); ++ bool found = this->search(key, &slot); + if (found) + return zmm::Ref<VT>(slot->value); + else +@@ -153,7 +153,7 @@ public: + inline zmm::Ref<VT> get(zmm::String key, hash_slot_t *destSlot) + { + struct dso_hash_slot<VT> **slot = (struct dso_hash_slot<VT> **)destSlot; +- bool found = search(key, slot); ++ bool found = this->search(key, slot); + if (found) + return zmm::Ref<VT>((*slot)->value); + else diff --git a/net-misc/mediatomb/files/mediatomb-0.12.1-libmp4v2.patch b/net-misc/mediatomb/files/mediatomb-0.12.1-libmp4v2.patch new file mode 100644 index 000000000000..6a6b51e1e05a --- /dev/null +++ b/net-misc/mediatomb/files/mediatomb-0.12.1-libmp4v2.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 |