Code Monkey home page Code Monkey logo

gerbera / gerbera Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 212.0 46.82 MB

UPnP Media Server for 2024: Stream your digital media through your home network and consume it on all kinds of UPnP supporting devices 📱💻📺

Home Page: https://gerbera.io

License: Other

Shell 1.19% C++ 75.15% C 0.75% Python 0.23% JavaScript 16.15% CSS 0.50% HTML 2.53% CMake 3.38% PLSQL 0.01% Dockerfile 0.10%
c-plus-plus cmake dlna dlna-server duktape flac gerbera inotify javascript libupnp m3u8 mediaserver mp3 nfo ogg stream transcoding upnp upnp-av web-ui

gerbera's Introduction

Gerbera - UPnP Media Server

Current Release Build Status Docker Version Documentation Status IRC

Gerbera is a UPnP media server which allows you to stream your digital media through your home network and consume it on a variety of UPnP compatible devices.

Pull requests are very welcome and reporting issues is encouraged.

Documentation

View our documentation online at https://docs.gerbera.io.

Features

  • Browse and playback your media via your network on all kinds of devices.
  • Web UI with a tree view of the database and the file system, allowing to add/remove/edit/browse your media
  • Metadata extraction from MP3, OGG, AAC, M4A, FLAC, wavpack, JPG (and many more!) files.
  • Media thumbnail support
  • Highly flexible media format transcoding via plugins / scripts
  • Automatic directory rescans (timed, inotify)
  • User defined server layout based on extracted metadata
  • Supports last.fm scrobbing
  • On the fly video thumbnail generation
  • Support for external URLs (create links to internet content and serve them via UPnP to your renderer)
  • Runs on Linux, BSD, Mac OS X, and more!
  • Runs on x86, ARM, MIPS, and more!

Installing

Head over to the docs page on Installing Gerbera for instructions on how to install Gerbera.

Building

Visit our docs for instructions to Compile Gerbera or Compile latest Gerbera.

Quick start build instructions:

git clone https://github.com/gerbera/gerbera.git
mkdir build
cd build
cmake ../gerbera -DWITH_DEBUG=YES
make -j4
sudo make install

Dependencies

Library Min Version Recommended Latest tested Required? Note Default
libupnp 1.14.6 1.14.18 1.14.18 XOR libnpupnp pupnp
libnpupnp 4.2.1 5.1.2 6.1.1 XOR libupnp npupnp Disabled
libuuid Depends on OS Not required on *BSD
pugixml 1.10 1.14 Required XML file and data support
libiconv Required Charset conversion
sqlite3 3.7.0 3.35.5 3.36.0 Required Database storage
zlib Required Data compression
fmtlib 7.1.3 9.1.0 10.2.1 Required Fast string formatting
spdlog 1.8.1 1.11.0 1.13.0 Required Runtime logging
duktape 2.1.0 2.6.0 2.7.0 Optional Scripting Support Enabled
mysql Optional Alternate database storage Disabled
curl Optional Enables web services Enabled
taglib 1.12 1.12 1.13.1 Optional Audio tag support Enabled
libmagic Optional File type detection Enabled
wavpack 5.1.0 5.4.0 5.7.0 Optional WavPack metadata support Disabled
libmatroska 1.6.3 1.7.1 Optional MKV metadata Enabled
libebml 1.4.2 1.4.5 Optional requird by libmatroska Enabled
ffmpeg/libav Optional File metadata Disabled
libexif Optional JPEG Exif metadata Enabled
libexiv2 v0.26 v0.27.7 v0.28.2 Optional Exif, IPTC, XMP metadata Disabled
lastfmlib 0.4.0 0.4.0 0.4.0 Optional Enables scrobbling Disabled
ffmpegthumbnailer 2.2.0 2.2.2 Optional Generate video thumbnails Disabled
inotify Optional Efficient file monitoring Enabled

Development Dependencies

Library Min Version Recommended Latest tested Required? Note Default
googletest 1.10.0 1.10.0 1.14.0 Optional Running tests Disabled

License

GPLv2

Copyright (C) 2005
   Gena Batyan <bgeradz at mediatomb dot cc>
   Sergey Bostandzhyan <jin at mediatomb dot cc>

Copyright (C) 2006-2008
   Gena Batyan <bgeradz at mediatomb dot cc>
   Sergey Bostandzhyan <jin at mediatomb dot cc>
   Leonhard Wimmer <leo at mediatomb dot cc>

Copyright (C) 2016-2024
    Gerbera Contributors

gerbera's People

Contributors

astylos avatar cweiske avatar dependabot[bot] avatar dyseg avatar elmodaddyb avatar extrowerk avatar ffontaine avatar flya320 avatar gburca avatar ghlupe2 avatar imolb avatar joerg-krause avatar juergen-w avatar karlstraussberger avatar matthiasstraka avatar mayanez avatar michael-o avatar mill1000 avatar mlaerd avatar mzuther avatar neheb avatar ngosang avatar pamapa avatar r4start avatar runderwo avatar sdrik avatar tcrass avatar whorfin avatar whyman avatar ytimenkov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gerbera's Issues

import.js and/or common.js problem

I finally tried gerbera on a real machine. Is anyone having a problem importing videos & pictures using the default import.js / common.js scripting? My gerbera/config.xml has the virtual-layout type="js". My gerbera log file says:

JS: /usr/share/gerbera/js/import.js:154: ReferenceError: object_root_path is not defined

I tried using some print commands in import.js and it appears that the object_root_path is indeed empty (obj.location is fine). Just wondering if either I did something odd when I compiled or if something isn't working right. I can run some debug cases - just let me know what to do so I can get the data needed to help.

Update JS Engine/Nuke Spidermonkey

Our spidermonkey code is very old, as is the version of spidermonkey it needs.

Its also way over the top for our scripting needs.

Lets switch to something smaller and designed to be embedded such as Duktape or MuJS.

mediatomb master: cannot be built on Ubuntu 16.10??

Hi,

I've got one question regarding the master branch and ubuntu 16.10.
I am not able to build it errorfree!
Although ffmpeg and libav there is the following error with cmake:

-- Could NOT find LibAV (missing:  LIBAV_ROOT_DIR LIBAV_AVDEVICE_LIBRARY LIBAV_AVFILTER_LIBRARY) (found version "ffmpeg version 3.0.7-0ubuntu0.16.10.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.2.0 (Ubuntu 6.2.0-5ubuntu12) 20161005

CMake Error at CMakeLists.txt:481 (message):
  FFMpeg/LibAV not found

Is there any kind of solution which already came up?

Thanks a lot in advance and BR,
count

Album Artist

We need it, especially for dc:creator, which is currently set to the first tracks artist. Which can sometimes look odd, especially on compilations.

gerbera tries to create database tables when they are empty

I changed my import script, stopped gerbera, emptied all SQL database tables and started gerbera:

INFO: database doesn't seem to exist. automatically creating database...
ERROR: Mysql: error while creating db: mysql_error (1050): "Table 'mt_cds_object' already exists"
Exception raised in [src/storage/mysql/mysql_storage.cc:226] init(): Mysql: error while creating db: mysql_error (1050): "Table 'mt_cds_object' already exists"

Gerbera should not assume that no tables exist when they are simply empty.

"FFMpeg/LibAV not found" when omitting "-DWITH_AVCODEC=1"

I removed -DWITH_AVCODEC=1 from the cmake command and still got an error:

CMake Error at CMakeLists.txt:494 (message):
FFMpeg/LibAV not found

I had to pass the parameter with value 0 to overcome this. If it's really optional, it should default to 0 in my eyes.

IPv6 Support

tools.cc: swap interfaceToIP to ipToInterface
server.cc: call UpnpInit2 with an interface name

Done?

MySQL server has gone away

The second time in a week I had the following error in my logs:

Mai 05 18:31:34 dojo gerbera[15713]: Exception raised in [src/storage/mysql/mysql_storage.cc:365] exec(): Mysql: mysql_real_query() failed: mysql_error (2006): "MySQL server has gone away"; query: UPDATE mt_autoscan SET last_modified=1486286336 WHERE id=1

Maybe a timeout. Gerbera should reconnect then.

SessionManager checkTimer deadlock?

Hello All,

I am running a recent local build of Gerbera on my local and hitting a deadlock consistently when the SessionManager.checkTimer() clears the stale sessions.

Here is the scenario.

  1. Open Gerbera web UI @ http://localhost:49152
  2. Establish a session (with SID and logged in)
  3. Wait for SessionManager::timerNotify to fire, and cleanup the stale sessions

It looks like the Timer mutex is AutoLock 2 times. First on the Timer::notify, to call the SessionManager cleanup, then again on the Timer::removeTimerSubscriber

void  Timer::notify()
{
    AutoLock lock(mutex);

Sessions are removed via SessionManager::timerNotify and the SessionManager::checkTimer is called to clear the Timer.

void Timer::removeTimerSubscriber(Subscriber* timerSubscriber, zmm::Ref<Parameter> parameter, bool dontFail)
{
    log_debug("Removing subscriber...\n");

    AutoLock lock(mutex);

   ^^^^^ DEADLOCK ^^^^^

The deadlock consistently happens on the second call to the AutoLock lock(mutex) for the Timer instance.

My guess is that I have missed some simple configuration or runtime difference, but cannot figure it out. Likely due to inexperience with C++.

Any helpful direction would be appreciated. If anyone else sees similar issue and has ideas it would be great!.

Thanks,

Eamonn

Album and artist missing

On a new scan of the music files with a 11dea73 build, all the artist names, album titles, and years show up as "Unknown". This happens when import.js is used.

My import.js tries to obtain the artist from obj.meta[M_ARTIST] with fall-back to obj.aux["TPE2"]. The config.xml file contains <add-data tag="TPE2"/> for both id3 and libextractor.

Does playlist ordering work?

If you would prefer that we do not use Issues to ask questions, feel free to delete this.

I have been trying to get mediatomb working and have hit a problem, so I am wondering if this also occurs in gerbera (it isn't mentioned on the list of differences).

I have a large (500 tracks) playlist, which is in a specific order. All the clients I have tried with mediatomb (and the mediatomb web interface itself) show the list in alphabetical order, even though the playlist.js is setting the item.playlistOrder correctly. I can't be certain whether this is mediatomb's problem, or the clients are re-sorting.

Does anyone use playlists with specific ordering in gerbera and do they work? If they do, I will make the effort to build this on debian testing and give it a go.

Restarting gerbera: New port used

My config.xml file specifies that server port 49152 shall be used. When restarting gerbera, it switches to port 49153. When restarting again, it goes to 49152 again. When waiting some time until starting gerbera after stopping it, the port is not switched to 49153.

This was already a problem with mediatomb. Maybe you could fix this for gerbera.

Tidy up solaris linker flag handling.

@whorfin

What is the "correct" way to get the currently hardcoded solaris flags? pkg-config or something else? Do you know any other CMake-using packages that detect these sorts of things?

armhf build?

Hello, I've just came across this project and found out it's quite useful so I'm planning to use it on my Raspberry Pi which is running ARM arch, the compiling process of this require a lot of unnecessary dependency that needs to be installed so I think it's a good idea to add arm* to ppa builds.

Adding image item with web interface: Crash

I tried to use add a cover.jpg image item with the web interface.

Data:

  • Select folder
  • "add Item"
  • type: Item
  • title: cover.jpg
  • location: /var/spool/music/Hörspiele/cover.jpg
  • class: object.item.imageItem
  • description: (none)
  • mime type: image/jpeg

When clicking "add item", gerbera crashes:

2017-05-05 23:17:33   ERROR: Exception caught: Script: failed to execute script
Exception raised in [src/scripting/script.cc:304] _execute(): Script: failed to execute script
2017-05-05 23:17:33   ERROR: Exception caught: Script: failed to execute script
Exception raised in [src/scripting/script.cc:304] _execute(): Script: failed to execute script
gerbera: /usr/local/src/gerbera/src/storage/sql_storage.cc:223: zmm::Ref<CdsObject> SQLStorage::checkRefID(zmm::Ref<CdsObject>): Zusicherung »0« nicht erfüllt.
systemd[1]: gerbera.service: main process exited, code=killed, status=6/ABRT
systemd[1]: Unit gerbera.service entered failed state.

"Zusicherung »0« nicht erfüllt" is german and emeans "assertion 0 not fulfilled".

install vs build - libupnp path broken

I didn't notice this at first as i've been manually installing the binary, but finally traced this down:

in the build dir,
ldd gerbera
[all the lovely paths are correct]

ldd CMakeFiles/CMakeRelink.dir/gerbera
libupnp and libixml show as (file not found)

The CMakeFiles/gerbera.dir/relink.txt file is missing the "-Wl,-R..." paths found in link.txt, and thus the
loader paths are missing

It's not obvious to me how the cmake config is causing this to happen, but it is, and it's a problem.

Rebrand

So having spoken to the original authors of MediaTomb they would rather keep the name mediatomb associated with them, which is fair enough.

So we need a new name for the project going forward....

SIGHUP causes serving port to change, and other badness

Sometimes SIGHUP is completely ignored.
Often, SIGHUP messes with the configured port.

[anecdotal reports over in #32 ]

In quick summary, one can observe in the logfile, and confirm as behavior, that the "Initialized port" is incremented, and not the actual requested port, each time a SIGHUP is sent to mediatomb. Eventually the requested port will be selected, if luck smiles upon one.

Also src/storage/sql_storage.cc:936 sometimes throws an exception

Standardise Code Style

Reformat the source to match WebKit C++ style guidelines and document it.

  • Its sensible.
  • Its is well documented.
  • Its well supported by tooling.
  • It mostly matches what is already being used.

We should also provide a .clang-format file, or set of astyle parameters.

Make it easier to install on Ubuntu

I've added the PPA, but it's unclear what to do next. apt install gerbera didn't work. apt install mediatomb seems to install the old fork. After that, launching MediaTomb from the shortcut that gets installed, navigates me to file:///var/lib/mediatomb/mediatomb.html, which is missing. Launching mediatomb from a terminal seems to launch the old project.

autoscan only runs once

I incorrectly associated this with SIGHUP because of bundled changes.
While I'm not positive, since the reported version in logging doesn't include git revision [maybe it should?] I believe this showed up with 49a9e4d

I know that I started seeing the bad behavior along with the "event is ok" message which was introduced very shortly after that commit. 49a9e4d changed a bunch of
things related to the autoscan timer, hence my suspicion.

I've created a test case where a subdir of an autoscan directory has a permission problem as far as the mediatomb server process is concerned. So I can see a heartbeat of
ERROR: Failed to stat
those heartbeats only happen once at the start of mediatomb now, rather than approximately every autoscan interval

SQL error when browsing with UPnP client

Current git (f82bbf5) gives me an SQL error when I try to browse the UPnP server with either BubbleUPnP or ControlDLNA (both android apps):

Apr 13 23:46:19 dojo gerbera[688]: 2017-04-13 23:46:19    
INFO: Exception: Mysql: mysql_real_query() failed: mysql_error (1054):
"Unknown column 'cover.jp%' in 'where clause'"; query:
SELECT `id`
 FROM `mt_cds_object`
 WHERE ( lower(`dc_title`) LIKE`cover.jp%`
   OR lower(`dc_title`) LIKE`albumart%.jp%`
   OR lower(`dc_title`) LIKE`album.jp%`
   OR lower(`dc_title`) LIKE`front.jp%`
   OR lower(`dc_title`) LIKE`folder.jp%` )
  AND `upnp_class`=`object.item.imageItem`
  AND `parent_id` IN (SELECT `parent_id` FROM `mt_cds_object` WHERE `parent_id`=`564` AND `object_type`=`2`)
 ORDER BY `dc_title` DESC

This is with mysql 5.5.

New UI

There is an appetite for a modern UI, its high on the wish list.

In terms to technologies ideally for simplicity I would like a SPA that has no compilation requirement, BS4 is ideal, and uses jquery so perhaps that would be enough in terms of libraries for this case.

Metadata for playlist entries that are local

When importing content using the import.js script, before being passed to the script, every file is first converted into a JS object called orig which contains all the file metadata.

When importing content using the playlists.js script, all we have to go on is the path to the media file. For paths to local files, it would be useful if there was a way to convert that file path into a JS object with metadata (similar to how the import.js script works). That would make it possible to get to artist and album data without resorting to extracting that info out of the path string.

Ex:

var audio = getCdsObject(path_to_audio_file);
print(audio.meta[M_ARTIST] + " " + audio.meta[M_ALBUM]);

macOS build fails

I tried to build gerbera on macOS (10.12.4). It fails because not all dependencies can be satisfied. Please have a look.

$ brew install libexif libmagic lzlib mp4v2 spidermonkey sqlite taglib ffmpeg ffmpegthumbnailer id3lib expat libupnp ossp-uuid mysql
$ git clone https://github.com/v00d00/gerbera.git
$ mkdir build
$ cd build
$ cmake ../ -DWITH_MAGIC=1 -DWITH_MYSQL=1 -DWITH_CURL=1 -DWITH_JS=1 \
-DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_EXIF=1 -DWITH_LASTFM=0
-- The C compiler identification is AppleClang 8.1.0.8020042
-- The CXX compiler identification is AppleClang 8.1.0.8020042
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Looking for nl_langinfo
-- Looking for nl_langinfo - found
-- Looking for setlocale
-- Looking for setlocale - found
-- Could NOT find INOTIFY (missing:  INOTIFY_INCLUDE_DIR)
-- Performing Test ICONV_SECOND_ARGUMENT_IS_CONST
-- Performing Test ICONV_SECOND_ARGUMENT_IS_CONST - Failed
-- Found Iconv: /usr/lib/libiconv.dylib
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2")
-- Checking for one of the modules 'uuid'
-- Could NOT find UPnP (missing:  UPNP_UPNP_LIBRARY UPNP_INCLUDE_DIR)
CMake Error at CMakeLists.txt:389 (message):
  gerbera requires libupnp 1.8.0 or above.

-- Configuring incomplete, errors occurred!
See also "/Users/tristank/Documents/Code/git/gerbera/build/CMakeFiles/CMakeOutput.log".
See also "/Users/tristank/Documents/Code/git/gerbera/build/CMakeFiles/CMakeError.log".

errors on debian stretch

Hi! First time poster so please be gentle. I'm trying to get mediatomb_v00d00 working on a headless debian-stretch.
Part 1 - I tried cross compiling the ubuntu PPA (dated 3/14) into debian but it had a problem. I tried compiling with the method on the main project page here and the error seems the be the same. See the attached cmakeerror.log file.
CMakeError.log.txt

Part 2 - Late last year, Debian changed their mysqlclient-dev to default-mysqlclient-dev. There were some BTS reported on the debian version of mediatomb saying that the debian/control file should be updated. Can you please confirm which is the proper one I should be using?

Part 3 - Not sure if this is an repacked ubuntu compiling artifact or not. A few weeks back I successfully compiled the ubuntu ppa into debian. I was able to get the mediatomb-daemon to work - but it only worked after I installed exim4. The daemon stil worked after I removed exim4. Any clue on what that is? I compiled the debian MT and it worked without the exim4 installed.

Part 4 - Is it worthwhile to add net-tools as a dependency? The daemon needs it - and a CLI machine doesn't include net-tools by default.

Sorry so many questions.
Tommyp

Correctly support multiple artists

I have several albums with songs sung by multiple artists. The ogg and mp3 files have multiple artist fields.

In the "Artists" tree, entries named "artist1 artist2" are created instead of 2 artist entries that contain both the same songs.

Screenshot:

2017-04-14 gerbera multiple artists

Those with combined names are duets, the other ones have only one artist tag.

assertion failed when adding text file via web interface

I have some scripts that push data into mediatomb/gerbera via the web interface AJAX API, using my PHP library Services_MediaTomb. After switching to Gerbera, they fail and gerbera crashes because an assertion fails.

The following URLs are called:

http://dojo:49152/content/interface?req_type=auth&action=get_sid&sid=null
http://dojo:49152/content/interface?req_type=auth&action=get_token&sid=866cc65df0f5ef9876cdbac783bcb828
http://dojo:49152/content/interface?sid=866cc65df0f5ef9876cdbac783bcb828&req_type=auth&action=login&username=cweiske&password=b37098fdcdedca1257c81248bcdc9d1f
http://dojo:49152/content/interface?sid=866cc65df0f5ef9876cdbac783bcb828&req_type=containers&parent_id=0&select_it=0
http://dojo:49152/content/interface?sid=866cc65df0f5ef9876cdbac783bcb828&req_type=containers&parent_id=39338&select_it=0
http://dojo:49152/content/interface?sid=866cc65df0f5ef9876cdbac783bcb828&req_type=add_object&parent_id=39339&title=item+%230&location=%2Ftmp%2Fmediatombtest%2Ffile.txt&class=object.item&obj_type=item&description=Just+a+test&mime-type=text%2Fplain

After the last URL call, gerbera crashes:

Apr 16 21:30:25 dojo gerbera[29527]: gerbera: /usr/local/src/gerbera/src/storage/sql_storage.cc:225: zmm::Ref SQLStorage::checkRefID(zmm::Ref): Zusicherung »0« nicht erfüllt.

It's german but the message says "Assertion »0« not fulfilled".

The text file that gets added actually exists and has a couple of bytes content.

Question: How to move away from Vanilla

Thanks a lot for resurrecting this amazing project!!!

I've a media server running the old mediatomb and I was planning to use the master branch.

Is the old database compatible or should I just drop the old one and recreate it?

Sorry for asking a question here, but I didn't find a more suitable place.

CMake 3.2 vs. 3.0 (debian 8)

I'm trying to compile gerbera on a Debian 8 system which ships CMake 3.0.2.
gerbera says it requires 3.2. Is that correct? Could that be lowered to 3.0 to make it work on Debian?

Listing artists and albums is slow

Since the introduction of folder images (which I absolutely love!), opening folders with many subfolders is too slow. It takes around 10 seconds to get the list of artists here (about 130). This is too long.

pkill -TERM never seems to succeed, -HUP ignored

first -TERM:
INFO: MediaTomb shutting down. Please wait...

I can wait all day, no exit

second -TERM:
INFO: Mediatomb still shutting down, signal again to kill.

same thing

third -TERM:
ERROR: Clean shutdown failed, killing MediaTomb!

Along those same lines, -HUP now does nothing

Is this related to the timer/nullptr changes?

follow symlink

if i would like to add media through symlinked directory, that directory is not visible through web gui.

Create default config in ~/.config/

The freedesktop folder specification says that configuration files should be put into ~/.config/ (or $XDG_CONFIG_HOME if it is set).

Gerbera creates the config.xml file in ~/.gerbera/config.xml, which clutters the home directory with another folder.

I suggest ~/.config/gerbera.xml as default location.

Album metadata is not set

AlbumArt is only given for the tracks themselves and there is also no artist information for albums.

Is AlbumArtist handled?

description.xml not served when GUI disabled

In order to get DLNA to work where discovery fails [broadcast issues, igmpproxy fail with VLAN, etc], many DLNA clients allow specifying the discovery URL directly. For mediatomb it is:
http://host:port/description.xml
[minidlna uses rootDesc.xml]

This file doesn't get served if "ui enabled=no".

That seems to be a mistake; disabling the web GUI shouldn't disable root device publishing.

The logic here isn't obvious, as it's an implicit interaction with pupnp, or I'd volunteer to fix it straight away.

Cheers

uuid/uuid.h not exist

I try to make openSUSE RPM

   55s]   CXX      libmediatomb_a-cds_resource_manager.o
[   55s]   CXX      libmediatomb_a-config_manager.o
[   55s] ../src/config_manager.cc:37:23: fatal error: uuid/uuid.h: No such file or directory
[   55s] compilation terminated.
[   55s] make[2]: *** [Makefile:1460: libmediatomb_a-config_manager.o] Error 1
[   55s] make[2]: *** Waiting for unfinished jobs....
[   56s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/mediatomb-mediatomb-0.12.2_pre20160522/build'
[   56s] make[1]: *** [Makefile:535: all-recursive] Error 1
[   56s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/mediatomb-mediatomb-0.12.2_pre20160522'
[   56s] make: *** [Makefile:466: all] Error 2
[   56s] error: Bad exit status from /var/tmp/rpm-tmp.DtReCV (%build)

How to fix this?

compiling on debian jessie

  • I had to build and install pupnp with configure --enable-ipv6
  • for some reason target specific cxx version settings in the cmakelists.txt do not work so I had to change the global flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=gnu++14")
  • src/tools.cc raised a problem so changed to log_debug("Looking for '%s'\n", ip.c_str());

C++ assumptions

I wanted to have a bit of an open discussion about what the expectations/directions are for the code base going forward, specifically for this fork. The existing code base contains a number of constructs that are now provided by most modern C++ compilers.

Is it safe to modernize the code base? If so, should it target C++11? C++14?

Many of the utilities in the zmm and hash directories have more robust cousins in C++11 or later. For example: string, regex, atomic, array, stack, queue, hash, shared pointer. Is it worth transitioning to the standard C++ equivalents over time?

One of the reasons I'm bringing this up is that I've noticed various issues. For example, some song titles are garbled when viewed on the web. Is that due to MediaTomb's String class? Or is it somewhere else in the mp3/flac tags, taglib, internal MT code, iconv, JS scripts, html output chain? Who knows. There's lots of custom string handling code around, and I suspect some of it may be responsible. I'd feel better about it if std::u16string or one of its friends was used to handle user strings.

I've also seen error logging from the hash table code about "maximal number of iterations exceeded". I haven't debugged it, but I'd feel better about it if a standard C++ container was used instead.

That by itself is not enough justification to make massive sweeping changes, but perhaps over time new code can start using std::string, std::stack, etc... instead of the zmm::Foo versions.

Autoscan directories are not scanned at start-up

The config.xml file allows the user to specify directories to be auto-scanned (import - scripting - autoscan). When the application starts up with no pre-existing database, a new database is created, but the directories listed in the config file are not scanned to populate the database.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.