aboutsummaryrefslogtreecommitdiff
path: root/multimedia/mediatomb
diff options
context:
space:
mode:
authorHeinz Wiesinger <pprkut@slackbuilds.org>2021-04-22 16:21:59 +0200
committerRobby Workman <rworkman@slackbuilds.org>2021-04-22 20:17:41 -0500
commit4dcd81aff6ca80f5cd9f50d9c02d9804e6b895cb (patch)
tree6a8593ce8fc3b8afc2a1d4192f284be896ed7ba6 /multimedia/mediatomb
parent21642447dd489fc4af818269af7d755486a7ebdc (diff)
multimedia/mediatomb: Removed.
If anyone is still interested in this they should look at gerbera: https://github.com/gerbera/gerbera Signed-off-by: Heinz Wiesinger <pprkut@slackbuilds.org>
Diffstat (limited to 'multimedia/mediatomb')
-rw-r--r--multimedia/mediatomb/README6
-rw-r--r--multimedia/mediatomb/config.xml151
-rw-r--r--multimedia/mediatomb/doinst.sh29
-rw-r--r--multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch187
-rw-r--r--multimedia/mediatomb/mediatomb-mp4v2-check.patch86
-rw-r--r--multimedia/mediatomb/mediatomb.SlackBuild131
-rw-r--r--multimedia/mediatomb/mediatomb.info10
-rw-r--r--multimedia/mediatomb/rc.mediatomb84
-rw-r--r--multimedia/mediatomb/rc.mediatomb.conf21
-rw-r--r--multimedia/mediatomb/samsung-mkv.patch445
-rw-r--r--multimedia/mediatomb/slack-desc19
11 files changed, 0 insertions, 1169 deletions
diff --git a/multimedia/mediatomb/README b/multimedia/mediatomb/README
deleted file mode 100644
index 5df3a1abf3574..0000000000000
--- a/multimedia/mediatomb/README
+++ /dev/null
@@ -1,6 +0,0 @@
-MediaTomb is an open source (GPL) UPnP MediaServer with a nice
-web user interface, it allows you to stream your digital media
-through your home network and listen to/watch it on a variety
-of UPnP compatible devices.
-
-mediatomb optionally depends on libmp4v2 and lastfmlib.
diff --git a/multimedia/mediatomb/config.xml b/multimedia/mediatomb/config.xml
deleted file mode 100644
index 71f37bb039eb8..0000000000000
--- a/multimedia/mediatomb/config.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd">
- <server>
- <ui enabled="yes" show-tooltips="yes">
- <accounts enabled="no" session-timeout="30">
- <account user="mediatomb" password="mediatomb"/>
- </accounts>
- </ui>
- <name>MediaTomb</name>
- <udn></udn>
- <home>/var/lib/mediatomb</home>
- <webroot>/usr/share/mediatomb/web</webroot>
- <storage>
- <sqlite3 enabled="yes">
- <database-file>mediatomb.db</database-file>
- </sqlite3>
- <mysql enabled="no">
- <host>localhost</host>
- <username>mediatomb</username>
- <database>mediatomb</database>
- </mysql>
- </storage>
- <protocolInfo extend="no"/><!-- For PS3 support change to "yes" -->
- <!--
- Uncomment the lines below to get rid of jerky avi playback on the
- DSM320 or to enable subtitles support on the DSM units
- -->
- <!--
- <custom-http-headers>
- <add header="X-User-Agent: redsonic"/>
- </custom-http-headers>
-
- <manufacturerURL>redsonic.com</manufacturerURL>
- <modelNumber>105</modelNumber>
- -->
- <!-- Uncomment the line below if you have a Telegent TG100 -->
- <!--
- <upnp-string-limit>101</upnp-string-limit>
- -->
- <extended-runtime-options>
- <ffmpegthumbnailer enabled="no">
- <thumbnail-size>128</thumbnail-size>
- <seek-percentage>5</seek-percentage>
- <filmstrip-overlay>yes</filmstrip-overlay>
- <workaround-bugs>no</workaround-bugs>
- <image-quality>8</image-quality>
- </ffmpegthumbnailer>
- <mark-played-items enabled="no" suppress-cds-updates="yes">
- <string mode="prepend">*</string>
- <mark>
- <content>video</content>
- </mark>
- </mark-played-items>
- <lastfm enabled="no">
- <username>lastfmuser</username>
- <password>lastfmpass</password>
- </lastfm>
- </extended-runtime-options>
- </server>
- <import hidden-files="no">
- <scripting script-charset="UTF-8">
- <common-script>/usr/share/mediatomb/js/common.js</common-script>
- <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
- <virtual-layout type="builtin">
- <import-script>/usr/share/mediatomb/js/import.js</import-script>
- </virtual-layout>
- </scripting>
- <mappings>
- <extension-mimetype ignore-unknown="no">
- <map from="mp3" to="audio/mpeg"/>
- <map from="ogx" to="application/ogg"/>
- <map from="ogv" to="video/ogg"/>
- <map from="oga" to="audio/ogg"/>
- <map from="ogg" to="audio/ogg"/>
- <map from="ogm" to="video/ogg"/>
- <map from="asf" to="video/x-ms-asf"/>
- <map from="asx" to="video/x-ms-asf"/>
- <map from="wma" to="audio/x-ms-wma"/>
- <map from="wax" to="audio/x-ms-wax"/>
- <map from="wmv" to="video/x-ms-wmv"/>
- <map from="wvx" to="video/x-ms-wvx"/>
- <map from="wm" to="video/x-ms-wm"/>
- <map from="wmx" to="video/x-ms-wmx"/>
- <map from="m3u" to="audio/x-mpegurl"/>
- <map from="pls" to="audio/x-scpls"/>
- <map from="flv" to="video/x-flv"/>
- <map from="mkv" to="video/x-matroska"/>
- <map from="mka" to="audio/x-matroska"/>
- <!-- Uncomment the line below for PS3 divx support -->
- <!-- <map from="avi" to="video/divx"/> -->
- <!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
- <!-- <map from="avi" to="video/avi"/> -->
- </extension-mimetype>
- <mimetype-upnpclass>
- <map from="audio/*" to="object.item.audioItem.musicTrack"/>
- <map from="video/*" to="object.item.videoItem"/>
- <map from="image/*" to="object.item.imageItem"/>
- </mimetype-upnpclass>
- <mimetype-contenttype>
- <treat mimetype="audio/mpeg" as="mp3"/>
- <treat mimetype="application/ogg" as="ogg"/>
- <treat mimetype="audio/x-flac" as="flac"/>
- <treat mimetype="image/jpeg" as="jpg"/>
- <treat mimetype="audio/x-mpegurl" as="playlist"/>
- <treat mimetype="audio/x-scpls" as="playlist"/>
- <treat mimetype="audio/x-wav" as="pcm"/>
- <treat mimetype="audio/L16" as="pcm"/>
- <treat mimetype="video/x-msvideo" as="avi"/>
- <treat mimetype="video/mp4" as="mp4"/>
- <treat mimetype="audio/mp4" as="mp4"/>
- <treat mimetype="application/x-iso9660" as="dvd"/>
- <treat mimetype="application/x-iso9660-image" as="dvd"/>
- </mimetype-contenttype>
- </mappings>
- <online-content>
- <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="mp4" hd="no">
- <favorites user="mediatomb"/>
- <standardfeed feed="most_viewed" time-range="today"/>
- <playlists user="mediatomb"/>
- <uploads user="mediatomb"/>
- <standardfeed feed="recently_featured" time-range="today"/>
- </YouTube>
- </online-content>
- </import>
- <transcoding enabled="no">
- <mimetype-profile-mappings>
- <transcode mimetype="video/x-flv" using="vlcmpeg"/>
- <transcode mimetype="application/ogg" using="vlcmpeg"/>
- <transcode mimetype="application/ogg" using="oggflac2raw"/>
- <transcode mimetype="audio/x-flac" using="oggflac2raw"/>
- </mimetype-profile-mappings>
- <profiles>
- <profile name="oggflac2raw" enabled="no" type="external">
- <mimetype>audio/L16</mimetype>
- <accept-url>no</accept-url>
- <first-resource>yes</first-resource>
- <accept-ogg-theora>no</accept-ogg-theora>
- <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/>
- <buffer size="1048576" chunk-size="131072" fill-size="262144"/>
- </profile>
- <profile name="vlcmpeg" enabled="no" type="external">
- <mimetype>video/mpeg</mimetype>
- <accept-url>yes</accept-url>
- <first-resource>yes</first-resource>
- <accept-ogg-theora>yes</accept-ogg-theora>
- <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
- <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
- </profile>
- </profiles>
- </transcoding>
-</config>
diff --git a/multimedia/mediatomb/doinst.sh b/multimedia/mediatomb/doinst.sh
deleted file mode 100644
index adc456f74f254..0000000000000
--- a/multimedia/mediatomb/doinst.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-config() {
- NEW="$1"
- OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
- # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-
-preserve_perms() {
- NEW="$1"
- OLD="$(dirname $NEW)/$(basename $NEW .new)"
- if [ -e $OLD ]; then
- cp -a $OLD ${NEW}.incoming
- cat $NEW > ${NEW}.incoming
- mv ${NEW}.incoming $NEW
- fi
- config $NEW
-}
-
-# Prepare the new configuration files
-config etc/mediatomb/config.xml.new
-config etc/rc.d/rc.mediatomb.conf.new
-preserve_perms etc/rc.d/rc.mediatomb.new
-
diff --git a/multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch b/multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch
deleted file mode 100644
index 6a6b51e1e05ae..0000000000000
--- a/multimedia/mediatomb/mediatomb-0.12.1-libmp4v2_191_p479.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-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
diff --git a/multimedia/mediatomb/mediatomb-mp4v2-check.patch b/multimedia/mediatomb/mediatomb-mp4v2-check.patch
deleted file mode 100644
index 226a22a63154f..0000000000000
--- a/multimedia/mediatomb/mediatomb-mp4v2-check.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-commit bed8f03202336fc7863ec6a39e130473f59061c6
-Author: Sergey 'Jin' Bostandzhyan <jin at mediatomb dot cc>
-Date: Sun Jan 27 23:08:04 2013 +0100
-
- Extra configure check for libmp4v2 compatibility
-
- We do not support the newer libmpv2 version yet, so don't error out when
- compiling, catch it in configure.
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index f4962c6..3cc5ec3 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -533,7 +533,8 @@ AC_DEFUN([MT_CHECK_OPTIONAL_PACKAGE],
- AC_MSG_ERROR([unable to configure $1 support])
- fi
-
-- if test "x$mt_[]translit($1, `/.-', `___')_status" = xyes; then
-+ if ((test "x$mt_[]translit($1, `/.-', `___')_status" = xyes) &&
-+ (test "x$9" != "xundef")); then
- AC_DEFINE(translit(HAVE_$1, `a-z/.-', `A-Z___'), [1], [$1 library presence])
- fi
-
-diff --git a/configure.ac b/configure.ac
-index e72dd78..9241797 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1390,7 +1390,7 @@ LIBMP4V2_STATUS=
-
- MT_CHECK_OPTIONAL_PACKAGE([libmp4v2], [disable],
- [libmp4v2 support for mp4 metadata extraction],
-- [$MP4_HEADER], [mp4v2], [MP4Read])
-+ [$MP4_HEADER], [mp4v2], [MP4Read], [], [], [undef])
-
- if test "x$LIBMP4V2_STATUS" = xyes; then
- CFLAGS="$CFLAGS $LIBMP4V2_CFLAGS"
-@@ -1399,6 +1399,37 @@ if test "x$LIBMP4V2_STATUS" = xyes; then
- AC_DEFINE_UNQUOTED([LIBMP4V2_INCLUDE], [<$MP4_HEADER.h>], [$MP4_HEADER.h])
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
-+ AC_MSG_CHECKING([for libmp4v2 compatibility])
-+ AC_COMPILE_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [
-+ #include <$MP4_HEADER.h>
-+ ],
-+ [
-+ (void)MP4GetMetadataName(0, 0);
-+ ]
-+ )],
-+ [
-+ AC_MSG_RESULT([yes])
-+ AC_DEFINE([HAVE_LIBMP4V2], [1], [libmp4v2 library presence])
-+ ],
-+ [
-+ AC_MSG_RESULT([not compatible])
-+ if test "x$LIBMP4V2_OPTION_REQUESTED" = "xyes"; then
-+ AC_MSG_ERROR([Unable to configure libmp4v2 support])
-+ else
-+ LIBMP4V2_STATUS="not compatible"
-+ fi
-+ ])
-+ LDFLAGS="$LDFLAGS_SAVE"
-+ CFLAGS="$CFLAGS_SAVE"
-+ CXXFLAGS="$CXXFLAGS_SAVE"
-+fi
-+
-+if test "x$LIBMP4V2_STATUS" = "xyes"; then
-+ CFLAGS="$CFLAGS $LIBMP4V2_CFLAGS"
-+ CXXFLAGS="$CXXFLAGS $LIBMP4V2_CFLAGS"
-+ LDFLAGS="$LDFLAGS $LIBMP4V2_LDFLAGS $LIBMP4V2_LIBS"
- AC_MSG_CHECKING([for MP4GetMetadataCoverArtCount() in libmp4v2])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
-@@ -1437,7 +1468,10 @@ if test "x$LIBMP4V2_STATUS" = xyes; then
- AC_MSG_RESULT([no])
- ])
-
-- AC_LANG_RESTORE
-+ AC_LANG_RESTORE
-+ LDFLAGS="$LDFLAGS_SAVE"
-+ CFLAGS="$CFLAGS_SAVE"
-+ CXXFLAGS="$CXXFLAGS_SAVE"
- fi
-
- ########## INOTIFY TOOLS
diff --git a/multimedia/mediatomb/mediatomb.SlackBuild b/multimedia/mediatomb/mediatomb.SlackBuild
deleted file mode 100644
index c72b45de0caed..0000000000000
--- a/multimedia/mediatomb/mediatomb.SlackBuild
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/sh
-
-# Slackware build script for mediatomb
-
-# Copyright 2010-2016 Heinz Wiesinger, Amsterdam, The Netherlands
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-PRGNAM=mediatomb
-VERSION=${VERSION:-b66dc1f}
-BUILD=${BUILD:-2}
-TAG=${TAG:-_SBo}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-if ! grep ^mediatomb: /etc/group 2>&1 > /dev/null; then
- echo " Must have a mediatomb group to run this script."
- echo " # groupadd -g 241 mediatomb"
- echo " Or something similar."
- exit 1
-elif ! grep ^mediatomb: /etc/passwd 2>&1 > /dev/null; then
- echo " Must have a mediatomb user to run this script."
- echo " # useradd -u 241 -g mediatomb -d /var/lib/mediatomb mediatomb"
- echo " Or something similar."
- exit 1
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# Fix building with new libmp4v2
-patch -p1 -R -i $CWD/mediatomb-mp4v2-check.patch
-patch -p1 -i $CWD/mediatomb-0.12.1-libmp4v2_191_p479.patch
-
-# Fix support for Samsung TVs
-patch -p1 -i $CWD/samsung-mkv.patch
-
-autoreconf -vif
-
-# We need LDFLAGS="-ldl" for proper sqlite detection
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-LDFLAGS="-ldl" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --build=$ARCH-slackware-linux
-
-make
-make install-strip DESTDIR=$PKG
-
-mkdir -p $PKG/etc/rc.d
-cp $CWD/rc.mediatomb $PKG/etc/rc.d/rc.mediatomb.new
-cp $CWD/rc.mediatomb.conf $PKG/etc/rc.d/rc.mediatomb.conf.new
-
-mkdir -p $PKG/etc/mediatomb
-install -m 644 $CWD/config.xml $PKG/etc/mediatomb/config.xml.new
-chown -R mediatomb:mediatomb $PKG/etc/mediatomb
-
-mkdir -p $PKG/var/{lib,log}/mediatomb
-chown mediatomb:mediatomb $PKG/var/{lib,log}/mediatomb
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog COPYING INSTALL NEWS README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/mediatomb/mediatomb.info b/multimedia/mediatomb/mediatomb.info
deleted file mode 100644
index e78081786a9a9..0000000000000
--- a/multimedia/mediatomb/mediatomb.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="mediatomb"
-VERSION="b66dc1f"
-HOMEPAGE="http://mediatomb.cc/"
-DOWNLOAD="http://www.liwjatan.at/files/src/mediatomb/mediatomb-b66dc1f.tar.xz"
-MD5SUM="7f4eb80f9e708564e6b8db45ee63f002"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Heinz Wiesinger"
-EMAIL="pprkut@liwjatan.at"
diff --git a/multimedia/mediatomb/rc.mediatomb b/multimedia/mediatomb/rc.mediatomb
deleted file mode 100644
index 206fb7074162b..0000000000000
--- a/multimedia/mediatomb/rc.mediatomb
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-# Start/stop/restart mediatomb.
-# $Id: rc.mediatomb,v 1.0 2010/11/01
-# Authors: Heinz Wiesinger <pprkut@liwjatan.at>
-# ---------------------------------------------------------------------------
-
-MEDIATOMB_PIDDIR="/var/run/mediatomb/"
-MEDIATOMB_PIDFILE="/var/run/mediatomb/mediatomb.pid"
-MEDIATOMB_LOGFILE="/var/log/mediatomb/mediatomb.log"
-
-# Get additional configuration information from /etc/rc.d/rc.mediatomb.conf:
-. /etc/rc.d/rc.mediatomb.conf
-
-mediatomb_start()
-{
- echo -n "Starting mediatomb ... "
- if ! [ -e "${MEDIATOMB_PIDDIR}" ]; then
- mkdir -p "${MEDIATOMB_PIDDIR}"
- fi
- if [ -e "${MEDIATOMB_PIDFILE}" ]; then
- echo "already running!"
- else
- if [ "${MEDIATOMB_INTERFACE}" != "" ]; then
- MEDIATOMB_OPTIONS="$MEDIATOMB_OPTIONS --interface ${MEDIATOMB_INTERFACE}"
- fi
- if [ "${MEDIATOMB_PORT}" != "" ]; then
- MEDIATOMB_OPTIONS="$MEDIATOMB_OPTIONS --port ${MEDIATOMB_PORT}"
- fi
- /usr/bin/mediatomb \
- --daemon \
- --user ${MEDIATOMB_USER} \
- --group ${MEDIATOMB_GROUP} \
- --pidfile ${MEDIATOMB_PIDFILE} \
- --logfile ${MEDIATOMB_LOGFILE} \
- --config ${MEDIATOMB_CONFIG} \
- ${MEDIATOMB_OPTIONS}
- echo "done!"
- fi
-}
-
-mediatomb_stop()
-{
- echo -n "Stopping mediatomb ... "
- if [ -e "${MEDIATOMB_PIDFILE}" ]; then
- kill -TERM $(cat ${MEDIATOMB_PIDFILE}) > /dev/null 2>&1
- echo "done!"
- rm -f "${MEDIATOMB_PIDFILE}"
- else
- echo "not running!"
- fi
-}
-
-mediatomb_restart()
-{
- mediatomb_stop
- sleep 1
- mediatomb_start
-}
-
-mediatomb_status()
-{
- if [ -e "${MEDIATOMB_PIDFILE}" ]; then
- echo "mediatomb is running!"
- else
- echo "mediatomb is not running!"
- fi
-}
-
-case "$1" in
-'start')
- mediatomb_start
- ;;
-'stop')
- mediatomb_stop
- ;;
-'status')
- mediatomb_status
- ;;
-'restart')
- mediatomb_restart
- ;;
-*)
- echo "usage $0 start|stop|restart|status"
-esac
diff --git a/multimedia/mediatomb/rc.mediatomb.conf b/multimedia/mediatomb/rc.mediatomb.conf
deleted file mode 100644
index af5ea4feef9ca..0000000000000
--- a/multimedia/mediatomb/rc.mediatomb.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# /etc/rc.d/rc.mediatomb.conf
-#
-# This file contains the configuration settings for mediatomb.
-
-# Main configuration file that should be used for mediatomb
-MEDIATOMB_CONFIG="/etc/mediatomb/config.xml"
-
-# The user under which mediatomb should run
-MEDIATOMB_USER="mediatomb"
-
-# The group under which mediatomb should run
-MEDIATOMB_GROUP="mediatomb"
-
-# Network Interface to bind to
-MEDIATOMB_INTERFACE=""
-
-# Server port (the SDK only permits values >= 49152)
-MEDIATOMB_PORT=""
-
-# Additional mediatomb options
-MEDIATOMB_OPTIONS=""
diff --git a/multimedia/mediatomb/samsung-mkv.patch b/multimedia/mediatomb/samsung-mkv.patch
deleted file mode 100644
index 6b146d7b0fe5a..0000000000000
--- a/multimedia/mediatomb/samsung-mkv.patch
+++ /dev/null
@@ -1,445 +0,0 @@
-Workaround for Samsung Smart TV 2012 :
- - URI patch made by swiergot http://sourceforge.net/tracker/index.php?func=detail&aid=3532724&group_id=129766&atid=715782
- - per device content-type engine : change video/x-matroska with video/x-mkv for Samsung devices only
-
---- a/tombupnp/upnp/src/genlib/miniserver/miniserver.c
-+++ b/tombupnp/upnp/src/genlib/miniserver/miniserver.c
-@@ -842,6 +842,8 @@
- return UPNP_E_INTERNAL_ERROR; // miniserver running
- }
-
-+ ssdpdevices_init(&GlobalSsdpDevices);
-+
- miniSocket =
- ( MiniServerSockArray * ) malloc( sizeof( MiniServerSockArray ) );
- if( miniSocket == NULL )
-@@ -963,5 +965,8 @@
- }
- shutdown( sock, SD_BOTH );
- UpnpCloseSocket( sock );
-+
-+ ssdpdevices_destroy(&GlobalSsdpDevices);
-+
- return 0;
- }
---- a/tombupnp/upnp/src/genlib/net/http/webserver.c
-+++ b/tombupnp/upnp/src/genlib/net/http/webserver.c
-@@ -1211,6 +1211,7 @@
- *
- * Parameters:
- * IN http_message_t *req ; HTTP Request message
-+* IN SOCKINFO *info ; Socket info (fd with remote ip & port)
- * OUT enum resp_type *rtype ; Tpye of response
- * OUT membuffer *headers ;
- * OUT membuffer *filename ; Get filename from request document
-@@ -1230,6 +1231,7 @@
- ************************************************************************/
- static int
- process_request( IN http_message_t * req,
-+ IN SOCKINFO *info,
- OUT enum resp_type *rtype,
- OUT membuffer * headers,
- OUT membuffer * filename,
-@@ -1473,6 +1475,19 @@
- goto error_handler;
- }
-
-+ // change "x-matroska" by "x-mkv", for samsung devices only
-+ char *newtype;
-+ if((strcmp(finfo.content_type, "video/x-matroska")==0)) {
-+ if(ssdpdevice_servermatch(&GlobalSsdpDevices, info->foreign_ip_addr.s_addr, "samsung")) {
-+// printf("Req from Samsung device : %s\n", finfo.content_type);
-+ // change is made in two steps : free the previous string, malloc a new one
-+ if((newtype= (char *) strdup("video/x-mkv"))) {
-+ free(finfo.content_type);
-+ finfo.content_type = newtype;
-+ }
-+ }
-+ }
-+
- if( RespInstr->IsRangeActive && RespInstr->IsChunkActive ) {
- //Content-Range: bytes 222-3333/4000 HTTP_PARTIAL_CONTENT
- //Transfer-Encoding: chunked
-@@ -1800,7 +1815,7 @@
- //Process request should create the different kind of header depending on the
- //the type of request.
- ret =
-- process_request( req, &rtype, &headers, &filename, &xmldoc,
-+ process_request( req, info, &rtype, &headers, &filename, &xmldoc,
- &RespInstr, &Fp);
- if( ret != UPNP_E_SUCCESS ) {
- // send error code
---- a/tombupnp/upnp/src/genlib/net/uri/uri.c
-+++ b/tombupnp/upnp/src/genlib/net/uri/uri.c
-@@ -1042,7 +1042,8 @@
- out->path_type = REL_PATH;
- }
-
-- if( ( ( begin_hostport + 1 ) < max ) && ( in[begin_hostport] == '/' )
-+ //parse hostport only if scheme was found
-+ if( ( begin_hostport > 0 ) && ( ( begin_hostport + 1 ) < max ) && ( in[begin_hostport] == '/' )
- && ( in[begin_hostport + 1] == '/' ) ) {
- begin_hostport += 2;
-
-@@ -1059,6 +1060,12 @@
- out->hostport.text.size = 0;
- out->hostport.text.buff = 0;
- begin_path = begin_hostport;
-+
-+ //remove excessive leading slashes (fix for Samsung Smart TV 2012)
-+ while( ( ( begin_path + 1 ) < max ) && ( in[begin_path] == '/' ) && ( in[begin_path + 1] == '/') ) {
-+ begin_path++;
-+ }
-+
- }
-
- begin_fragment =
---- a/tombupnp/upnp/src/inc/ssdplib.h
-+++ b/tombupnp/upnp/src/inc/ssdplib.h
-@@ -161,9 +161,22 @@
- struct sockaddr_in dest_addr;
- } ssdp_thread_data;
-
-+typedef struct
-+{
-+ ithread_mutex_t mutex;
-+ LinkedList deviceslist;
-+} ssdpdevices_t;
-+
-+typedef struct
-+{
-+ uint32_t s_addr;
-+ char *serverdesc;
-+} ssdp_device_t;
-
- /* globals */
-
-+extern ssdpdevices_t GlobalSsdpDevices;
-+
- CLIENTONLY(extern SOCKET gSsdpReqSocket;);
-
- typedef int (*ParserFun)(char *, Event *);
-@@ -174,6 +187,64 @@
- //int AnalyzeCommand(char * szCommand, Event * Evt);
-
- /************************************************************************
-+* Function : ssdpdevices_free
-+*
-+* Parameters :
-+* void *d ;
-+*
-+* Description : Free memory allocated for each SSDP Device
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void ssdpdevice_free( void *d );
-+
-+/************************************************************************
-+* Function : ssdpdevice_compare
-+*
-+* Parameters :
-+* void* param1 ;
-+* void* param2 ;
-+*
-+* Description : Compare two SSDP devices by their ip address
-+*
-+* Return : int ;
-+*
-+* Note :
-+************************************************************************/
-+int ssdpdevice_compare( void *param1, void *param2 );
-+
-+/************************************************************************
-+* Function : ssdpdevices_init
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+*
-+* Description : Initialize and allocate memory for the array of SSDP devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+
-+void ssdpdevices_init(ssdpdevices_t* s);
-+
-+/************************************************************************
-+* Function : ssdpdevices_destroy
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* msg ; Array of SSDP Devices
-+*
-+* Description : Free memory allocated for the Array of SSDP Devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void ssdpdevices_destroy( ssdpdevices_t *s );
-+
-+/************************************************************************
- * Function : Make_Socket_NoBlocking
- *
- * Parameters:
---- a/tombupnp/upnp/src/ssdp/ssdp_server.c
-+++ b/tombupnp/upnp/src/ssdp/ssdp_server.c
-@@ -52,8 +52,231 @@
- #include "unixutil.h"
- #endif
-
-+#include <regex.h>
-+
- #define MAX_TIME_TOREAD 45
-
-+// global containing the array of devices
-+ssdpdevices_t GlobalSsdpDevices;
-+
-+/************************************************************************
-+* Function : ssdpdevices_free
-+*
-+* Parameters :
-+* void *msg ;
-+*
-+* Description : Free memory allocated for each SSDP Device
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void
-+ssdpdevice_free( void *d )
-+{
-+ ssdp_device_t *sd = ( ssdp_device_t * ) d;
-+
-+ free(sd->serverdesc);
-+
-+ free( sd );
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevice_compare
-+*
-+* Parameters :
-+* void* param1 ;
-+* void* param2 ;
-+*
-+* Description : Compare two SSDP devices by their ip address
-+*
-+* Return : int ;
-+*
-+* Note :
-+************************************************************************/
-+int
-+ssdpdevice_compare( void *param1,
-+ void *param2 )
-+{
-+ assert( param1 != NULL );
-+ assert( param2 != NULL );
-+
-+ return ( ( ssdp_device_t * ) param1 )->s_addr ==
-+ ( ( ssdp_device_t * ) param2 )->s_addr;
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevices_init
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+*
-+* Description : Initialize and allocate memory for the array of SSDP devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+
-+void ssdpdevices_init(ssdpdevices_t* s) {
-+ ithread_mutex_init( &s->mutex, NULL );
-+ ListInit( &s->deviceslist, ssdpdevice_compare, ssdpdevice_free );
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevices_destroy
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+*
-+* Description : Free memory allocated for the Array of SSDP Devices
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void
-+ssdpdevices_destroy( ssdpdevices_t *s )
-+{
-+ int ret;
-+
-+ assert( s != NULL );
-+
-+ ithread_mutex_lock( &s->mutex );
-+ ListDestroy( &s->deviceslist, 1 );
-+ ithread_mutex_unlock( &s->mutex );
-+
-+ ret = ithread_mutex_destroy( &s->mutex );
-+ assert( ret == 0 );
-+
-+}
-+
-+/************************************************************************
-+* Function : create_device_node
-+*
-+* Parameters :
-+* IN uint32_t *ip4addr; IP Address
-+* IN membuffer *mbuf; Server descripton
-+*
-+* Description : Create a device structure and fill it with ip & description
-+*
-+* Return : ssdp_device_t *
-+*
-+* Note :
-+************************************************************************/
-+
-+ssdp_device_t *create_device(uint32_t ipaddr, membuffer *mbuf) {
-+ ssdp_device_t *newd;
-+ if( (newd = (ssdp_device_t *) malloc(sizeof(ssdp_device_t)))) {
-+ if( ( newd->serverdesc = str_alloc ( mbuf->buf, mbuf->length) ) ) {
-+ newd->s_addr = ipaddr;
-+ return(newd);
-+ }
-+ free(newd);
-+ }
-+ return(NULL);
-+}
-+
-+
-+/************************************************************************
-+* Function : ssdpdevices_updatelist
-+*
-+* Parameters :
-+* INOUT ssdpdevices_t* s ; Array of SSDP Devices
-+* IN uint32_t *ip4addr; IP Address
-+* IN char *serverstr; Server descripton
-+*
-+* Description : Insert or update the list with given device
-+*
-+* Return : void ;
-+*
-+* Note :
-+************************************************************************/
-+void
-+ssdpdevices_updatelist( ssdpdevices_t *s, uint32_t ip4addr, membuffer *serverstr)
-+{
-+ assert( s != NULL );
-+ assert( ip4addr != 0 );
-+ assert( serverstr != NULL );
-+
-+ int found = 0;
-+
-+ // Loop through each existing device
-+ ithread_mutex_lock( &s->mutex );
-+ LinkedList *l = &s->deviceslist;
-+ ListNode *temp = NULL;
-+ ssdp_device_t *d,*newd;
-+ for (temp = ListHead(l);temp!=NULL;temp = ListNext(l,temp))
-+ {
-+ d=(ssdp_device_t *)temp->item;
-+ if(d->s_addr == ip4addr) {
-+ found = 1;
-+ break;
-+ }
-+ }
-+
-+ // Add the entry if necessary
-+ if(!found) {
-+ if( ( newd = create_device(ip4addr, serverstr))) {
-+ ListAddTail( l, newd);
-+ }
-+ }
-+ ithread_mutex_unlock( &s->mutex );
-+
-+}
-+
-+/************************************************************************
-+* Function : ssdpdevice_descmatch
-+*
-+* Parameters :
-+* IN ssdpdevices_t* s ; Array of SSDP Devices
-+* IN uint32_t ipaddr; Ip addres to check
-+* IN char *regexp; Regex to match
-+*
-+* Description : Check whether the device's description matches the given regex
-+*
-+* Return : int (1 = match, else no match)
-+*
-+* Note :
-+************************************************************************/
-+int
-+ssdpdevice_servermatch( ssdpdevices_t *s, uint32_t ip4addr, char *regex)
-+{
-+ assert( s != NULL );
-+ assert( ip4addr != 0 );
-+ assert( regex != NULL );
-+
-+ int ret = 0;
-+ regex_t reg;
-+
-+ if( regcomp(&reg, regex, REG_EXTENDED | REG_NOSUB | REG_ICASE) != 0) {
-+ printf("Invalid regex : %s\n", regex);
-+ return(0);
-+ }
-+
-+ // Loop through each existing device
-+ ithread_mutex_lock( &s->mutex );
-+ LinkedList *l = &s->deviceslist;
-+ ListNode *temp = NULL;
-+ ssdp_device_t *d;
-+ for (temp = ListHead(l);temp!=NULL;temp = ListNext(l,temp))
-+ {
-+ d=(ssdp_device_t *)temp->item;
-+ if(d->s_addr == ip4addr) {
-+ // We found the ip addr, let's check if the desc contains the searched string
-+ if(regexec(&reg, d->serverdesc, 0, NULL, 0) == 0) {
-+ ret=1;
-+ }
-+ break;
-+ }
-+ }
-+
-+ ithread_mutex_unlock( &s->mutex );
-+ return(ret);
-+}
-+
-+
-+
- CLIENTONLY( SOCKET gSsdpReqSocket = 0;
- )
-
-@@ -756,6 +979,24 @@
- if( !valid_ssdp_msg( &parser->msg ) ) {
- goto error_handler;
- }
-+
-+ // update liste of devices for each NOTIFY received
-+
-+ if ( parser->msg.method == HTTPMETHOD_NOTIFY ) {
-+// printf( "SSDP recvd code NOTIFY = %d from %s\n", parser->msg.method, inet_ntoa(data->dest_addr.sin_addr));
-+ LinkedList *g=&parser->msg.headers;
-+ ListNode *temp = NULL;
-+ http_header_t *h;
-+ for (temp = ListHead(g);temp!=NULL;temp = ListNext(g,temp))
-+ {
-+ h=(http_header_t *)temp->item;
-+ if(strncasecmp(h->name.buf, "SERVER", h->name.length) == 0) {
-+ ssdpdevices_updatelist(&GlobalSsdpDevices, data->dest_addr.sin_addr.s_addr, &h->value);
-+ }
-+ }
-+
-+ }
-+
- return 0; //////// done; thread will free 'data'
-
- error_handler:
diff --git a/multimedia/mediatomb/slack-desc b/multimedia/mediatomb/slack-desc
deleted file mode 100644
index f4326c71f67f2..0000000000000
--- a/multimedia/mediatomb/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-mediatomb: mediatomb (UPnP Media Server)
-mediatomb:
-mediatomb: MediaTomb is an open source (GPL) UPnP MediaServer with a nice
-mediatomb: web user interface, it allows you to stream your digital media
-mediatomb: through your home network and listen to/watch it on a variety
-mediatomb: of UPnP compatible devices.
-mediatomb:
-mediatomb: Homepage: http://mediatomb.cc/
-mediatomb:
-mediatomb:
-mediatomb: