Commit Graph

870 Commits

Author SHA1 Message Date
Max Kellermann 7f8dd0e939 Makefile.am: rename libdecoder_plugins.a to libdecoder.a 2014-02-18 10:02:46 +01:00
Max Kellermann 28701cb9dd Makefile.am: remove unused variable DECODER_SRC 2014-02-18 10:01:37 +01:00
Max Kellermann 13056af8b2 Makefile.am: disable test_icy_parser without CURL 2014-02-18 09:18:42 +01:00
Max Kellermann 1709ab6810 fs/TextFile: use custom allocation instead of GString 2014-02-17 23:04:10 +01:00
Max Kellermann de160bb2d1 Main: move code to db/Configured.cxx 2014-02-17 22:13:53 +01:00
Max Kellermann 9e02b13ab3 systemd: add socket activation files 2014-02-12 21:22:36 +01:00
Max Kellermann 73aec9ce63 StorageCommands: expose the "mount" command 2014-02-09 11:07:08 +01:00
Max Kellermann 59ce67e2e5 CompositeStorage: new Storage implementation
This is the backend for the upcoming "mount" command.
2014-02-09 10:47:29 +01:00
Max Kellermann 37b6899660 Main: move code to storage/Configured.cxx 2014-02-09 08:09:47 +01:00
Max Kellermann b3663b5da2 storage/nfs: new storage plugin 2014-02-08 14:24:47 +01:00
Max Kellermann d761d8b168 input/nfs: move nfs_domain to lib/nfs/Domain.cxx 2014-02-08 14:24:47 +01:00
Max Kellermann a0088ccce1 storage: add struct StoragePlugin and a plugin registry 2014-02-07 23:46:15 +01:00
Max Kellermann ec8873b178 Mapper: move check_directory() to the filesystem library 2014-02-07 23:25:47 +01:00
Max Kellermann 77de233117 Playlist{Any,Registry,Mapper}: move functions to PlaylistStream.cxx 2014-02-07 21:30:49 +01:00
Max Kellermann 8549ccfd8c playlist/CloseSongEnumerator: new wrapper class
Simplifies a lot of code, because we don't need to return both the
SongEnumerator and the InputStream.
2014-02-07 20:27:24 +01:00
Max Kellermann ffd16b55a6 StoragePlugin: add method MapToRelativeUTF8()
Replaces map_to_relative_path() from Mapper.cxx.
2014-02-07 19:09:28 +01:00
Max Kellermann c8f0c7e9ed */smbclient: protect all libsmbclient calls with a mutex
libsmbclient is not thread-safe nor reentrant.  We must protect all
function calls with a global mutex, unfortunately.
2014-02-06 22:19:59 +01:00
Max Kellermann a7989077ab neighbor/smbclient: move smbclient_domain to lib/smbclient/Domain.cxx 2014-02-06 22:12:50 +01:00
Max Kellermann 7e34737b2b Makefile.am: add variable SMBCLIENT_SOURCES 2014-02-06 22:11:59 +01:00
Max Kellermann e4322a716c input/nfs: new plugin using libnfs 2014-02-06 18:37:27 +01:00
Max Kellermann 957beeb0e9 storage/smbclient: Storage implementation using libsmbclient 2014-02-06 07:19:14 +01:00
Max Kellermann c8c3f20840 storage/local: move to src/storage/plugins/ 2014-02-05 19:26:21 +01:00
Max Kellermann 0ba1b73395 storage: add abstract interface
Prepare for the plugin interface.
2014-02-05 18:53:51 +01:00
Max Kellermann 9ae7f186bc LocalStorage: new API abstracting filesystem walk
Prepare to make this a new plugin API, for example to use a SMB share
for the music_directory.
2014-02-05 10:04:03 +01:00
Max Kellermann cf6281a5a7 Instance: add Database attribute
Move from db/DatabaseGlue.cxx, eliminating global variable.
2014-02-04 11:22:33 +01:00
Max Kellermann ca36ac2ba1 SongLoader: new class that merges duplicate code
There was quite a lot of duplicate code for loading DetachedSong
objects, with different semantics for "securely" loading local files.
2014-02-03 23:32:10 +01:00
Max Kellermann a8e52ad89f ClientFile: move client_allow_file() into the Client class 2014-02-02 13:59:07 +01:00
Max Kellermann 4465e2c46b db: add compile-time option to disable database 2014-01-30 20:39:40 +01:00
Max Kellermann c6725884bc db/update: convert to OO API
Move global variables into the new classes.  That may allow multiple
update threads for multiple databases one day.
2014-01-30 18:47:05 +01:00
Max Kellermann d5b017407d ExcludeList: move to db/update/ 2014-01-30 10:11:12 +01:00
Max Kellermann a137f817f5 db/Directory: move isRootDirectory() to Uri.hxx
Decouple command/OtherCommands.cxx from the "simple" database plugin.
2014-01-29 18:05:33 +01:00
Max Kellermann 4657a3bd0f output: move functions into the AudioOutput struct 2014-01-29 08:10:46 +01:00
Max Kellermann 68b79f97f3 output: rename source files 2014-01-28 11:42:54 +01:00
Max Kellermann d5f46a846a Makefile.am: make libneighbor.a conditional
Fixes non-Linux build without neighbor plugins.
2014-01-28 11:27:32 +01:00
Max Kellermann f5a923b9d1 OutputAll: convert to class, move instance to class Partition
Another big chunk of code for multi-player support.
2014-01-28 09:20:53 +01:00
Max Kellermann 8ed9f779cd Makefile.am: build test/run_neighbor_explorer with AM_LDADD 2014-01-27 14:54:40 +01:00
Max Kellermann f548a966f5 Playlist{Info,Vector}: move to db/ 2014-01-27 11:05:21 +01:00
Max Kellermann 30fadaed7f Merge branch 'v0.18.x' 2014-01-27 10:33:42 +01:00
Max Kellermann f7eb2b697e test/test_icy_parser: unit test for IcyMetaDataParser.cxx 2014-01-27 09:51:31 +01:00
Max Kellermann c01282a322 Makefile.am: remove "sparse" rule
We're C++, and sparse understands only plain C.
2014-01-27 09:29:34 +01:00
Max Kellermann 0e3f18ed70 Makefile.am: move test-suite.log back to base directory
Was broken on out-of-tree builds.
2014-01-27 09:28:08 +01:00
Max Kellermann 544c69c61c configure.ac: move autoconf/automake helpers to build/ 2014-01-27 09:01:02 +01:00
Max Kellermann 0ab66db7b9 move systemd unit to directory systemd/ 2014-01-27 08:55:42 +01:00
Max Kellermann f7669c201f Makefile.am: fix "distcheck" 2014-01-27 08:55:42 +01:00
Max Kellermann 0b3fbdba87 neighbor/upnp: UPnP media server discovery 2014-01-26 15:51:33 +01:00
Max Kellermann d7e78059b0 upnp: initialize the client handle only once
Eliminate class LibUPnP and move the code to ClientInit.cxx.  Its
initialization function can be called multiple times, but
UpnpRegisterClient() is called at most once.
2014-01-26 15:43:23 +01:00
Max Kellermann 01f7abfc63 upnp: move library initialization to Init.cxx
Allow calling UpnpGlobalInit() multiple times.
2014-01-26 15:23:26 +01:00
Max Kellermann bcc1f93370 upnp: add class UpnpCallback
Each Upnp*Async() call passes a new cookie pointer, and the cookie
passed to UpnpRegisterClient() appears to be ignored.  Using this
interface is a more elegant approach than having one single "handler"
function.
2014-01-26 15:04:56 +01:00
Max Kellermann f86f5ad224 db/upnp: move generic code to lib/upnp/ 2014-01-26 13:41:40 +01:00
Max Kellermann 8c5ea7ec55 Makefile.am: add DespotifyUtils.cxx to libinput.a and libplaylist_plugins.a
Simplifies test program rules.
2014-01-26 13:04:14 +01:00
Max Kellermann 412d1b0a01 Makefile.am: use $(MKDIR_P) 2014-01-26 12:32:51 +01:00
Max Kellermann 5c4a42caa0 neighbor: new subsystem to detect file servers on the local network
This commit adds the NeighborPlugin API which can be used to detect
nearby file servers that can be used by input plugins.  This list of
servers is exported using the new "listneighbors" command.  The idle
even "neighbor" notifies interested clients when a new neighbor is
found or an existing one is lost.

There's a lot missing currently: protocol&user documentation, and a
way to "mount" remote servers into the music database.  Obviously,
some code from the UPnP database plugin can be moved to a neighbor
plugin.
2014-01-26 00:10:05 +01:00
Max Kellermann 86ca5b3f16 input/smbclient: move code to lib/smbclient/Init.cxx 2014-01-25 23:29:42 +01:00
Max Kellermann 97391fd4b9 DespotifyUtils, Expat: move to lib/ 2014-01-24 16:44:36 +01:00
Max Kellermann 68eda78704 Mixer*: move to mixer/ 2014-01-24 16:44:32 +01:00
Max Kellermann 7c52a1c04b Filter*: move to filter/ 2014-01-24 16:43:57 +01:00
Max Kellermann 9d34fc394c Database*: move to db/ 2014-01-24 16:38:44 +01:00
Max Kellermann 973c9872f9 Sticker*: move to sticker/ 2014-01-24 16:38:15 +01:00
Max Kellermann eef7ba48dd Win32Main: move to win32/ 2014-01-24 16:37:32 +01:00
Max Kellermann 299ff2b23f move daemonization code to unix/ 2014-01-24 16:37:21 +01:00
Max Kellermann f8bfea8bae Input*: move to input/ 2014-01-24 16:33:33 +01:00
Max Kellermann e199c33c6e Client*: move to client/ 2014-01-24 00:26:53 +01:00
Max Kellermann 08296cd66d Update*: move to update/ 2014-01-24 00:24:43 +01:00
Max Kellermann 197b503f3e Config*: move to config/ 2014-01-24 00:20:01 +01:00
Max Kellermann 129eb178eb Queue*: move to queue/ 2014-01-24 00:17:50 +01:00
Max Kellermann 6b70f5e490 Zeroconf*: move to zeroconf/ 2014-01-24 00:14:54 +01:00
Max Kellermann 4aa6d39fd8 archive/*: move to archive/plugins/ 2014-01-24 00:09:37 +01:00
Max Kellermann 51adaf2c47 decoder/*: move to decoder/plugins/ 2014-01-24 00:02:24 +01:00
Max Kellermann ea5b901bcc output/*: move to output/plugins/ 2014-01-23 23:49:50 +01:00
Max Kellermann f1f19841bd playlist/*: move to playlist/plugins/ 2014-01-23 23:30:12 +01:00
Max Kellermann 655ad34414 Encoder*: move to src/encoder
.. and move the plugins to src/encoder/plugins/.
2014-01-23 23:09:14 +01:00
Max Kellermann 017eecb8e8 UPGRADING: remove obsolete file
This file has been unmaintained for 5 years, and nowadays, MPD tries
very hard to stay compatible with older versions.
2014-01-23 23:06:01 +01:00
Max Kellermann b521d8564a Makefile.am: always link test/dump_playlist with DetachedSong.cxx
Fixes linker failure.
2014-01-23 22:25:47 +01:00
Max Kellermann 53a13e8bc6 DetachedSong: un-inline the destructor
Reduce bloat.
2014-01-23 21:22:52 +01:00
Max Kellermann f3f5e2e162 db/upnp: un-inline a few destructors
Reduce bloat.
2014-01-23 21:17:40 +01:00
Max Kellermann ec41d849bb thread/Name: set thread names
For debugging.
2014-01-23 10:07:14 +01:00
Max Kellermann a42f9e4ee3 LightDirectory: new struct replacing Directory in the DB API 2014-01-22 23:01:32 +01:00
Max Kellermann dd20a3ce7e test: add unit test for playlist_check_translate_song() 2014-01-21 00:28:34 +01:00
Max Kellermann f5ae1ce00b LightSong: new class to be used by DatabasePlugin callbacks
Detach the Song class completely from the public API, only to be used
by SimpleDatabase and the update thread.
2014-01-19 17:04:51 +01:00
Max Kellermann f33f891c54 db/upnp: add UpnpMakeAction() helper function 2014-01-18 15:27:54 +01:00
Max Kellermann 5f3b79e21d Daemon: move code to class PidFile 2014-01-18 12:10:20 +01:00
Max Kellermann 32ec672311 DatabaseSong: new library merging duplicate code 2014-01-17 22:58:27 +01:00
Max Kellermann 4bcaf5d306 db/upnp: move upnp_tags to Tags.cxx 2014-01-14 22:33:18 +01:00
Max Kellermann 5d17731b73 UpdateGlue: let the update thread run at "idle" priority
The update thread should not affect the rest of the system, therefore
set "idle" priority, and let it only run when nobody else is using the
resources.
2014-01-14 09:09:52 +01:00
Andrée Ekroth ea771c17c5 Shine encoding plugin
This encoding plugin features a fixed-point mp3 encoder,
with faster encoding on architectures without a FPU.

Right now the encoder is limited to stereo and 16 bit depth.
The bitrate and sample rate can be modified in audio_output.

audio_output {
        type            "httpd"
        name            "My shine stream"
        encoder         "shine"
        port            "8000"
        format          "44100:16:2"
        bitrate         "320"  # default: 128
}
2014-01-13 11:14:19 +01:00
Max Kellermann 8351543c0f db/upnp: move lazy Open() call to new class LazyDatabase
Generic approach for the workaround.
2014-01-11 01:25:22 +01:00
Max Kellermann 114df1f137 DatabasePlugin: add interface DatabaseListener
Allow database plugins to announce that they have been modified.
2014-01-11 01:01:54 +01:00
Jean-Francois Dockes 406452f019 UPnP database plugin
[mk: renamed source files, applied coding style, reduced bloat, using
MPD's threading library, using MPD's error reporting and logging
library and refactoring, fixed lots of bugs]
2014-01-09 20:56:00 +01:00
Max Kellermann dd82370a80 playlist/{asx,rss,xspf}: use Expat instead of GLib to parse XML 2014-01-09 12:19:52 +01:00
Max Kellermann 322b061632 DetachedSong: fork of struct Song
From now on, struct Song will be used by the database only, and
DetachedSong will be used by everybody else.  DetachedSong is easier
to use, but Song has lower overhead.
2014-01-09 09:05:58 +01:00
Max Kellermann 27ca0db7a6 util/Alloc: new library replacing GLib's g_malloc() 2014-01-07 23:35:18 +01:00
Max Kellermann da80f91e1c Directory: make some code generic, move to VarSize.hxx 2014-01-07 23:10:56 +01:00
Max Kellermann 0d20130d07 util/Cast: new utility library 2014-01-06 18:21:45 +01:00
Max Kellermann b5f3bfce92 SongUpdate: read tags from songs in an archive
Add the TagStream.cxx library, similar to TagFile.cxx, and use it to
load tags from song files inside archives.
2013-12-29 18:15:30 +01:00
Max Kellermann 5465647c2e input/smbclient: new input plugin 2013-12-29 01:25:27 +01:00
Max Kellermann 1ad52f131c test/*: use fprintf(stderr,...) and Log() instead of g_printerr()
Avoid GLib.
2013-12-24 14:44:08 +01:00
Max Kellermann 8edde7a4b3 pcm/Volume: convert to class
Prepare for adding state.
2013-12-23 10:58:37 +01:00
Max Kellermann 6d21b9448a pcm/PcmVolume: rename to Volume.cxx 2013-12-23 10:35:21 +01:00
Max Kellermann 2d1a3073f6 pcm/PcmConvert: move the Domain instance to Domain.cxx
Rename pcm_convert_domain to pcm_domain.  Move it out so we can use it
without depending on the whole PcmConvert library.
2013-12-23 10:35:19 +01:00
Max Kellermann 86e72ffefb util/Clamp: generic Clamp() function 2013-12-22 21:08:06 +01:00