Commit Graph

329 Commits

Author SHA1 Message Date
Max Kellermann
b3611524f4 fs/Path: move definitions to struct PathTraits 2013-10-17 23:23:25 +02:00
Max Kellermann
084fd8df63 playlist/soundcloud: use std::string 2013-10-15 23:17:53 +02:00
Max Kellermann
9508ea982b fs/Path: add method IsAbsolute() 2013-10-14 22:38:29 +02:00
Max Kellermann
6fd481df97 Mapper, ...: use memcmp() instead of strncmp() where appropriate
Micro-optimization.
2013-10-14 22:00:21 +02:00
Max Kellermann
060814daa8 Log: new logging library API
Prepare to migrate away from GLib.  Currently, we're still using GLib
as a backend.
2013-10-02 08:57:55 +02:00
Max Kellermann
a446775d80 playlist/lastfm: remove defunct Last.fm support
This plugin has been defunct ever since Last.fm changed their
protocol.  Since there is no volunteer willing to fix the plugin, I'm
removing it now.
2013-09-28 14:01:51 +02:00
Max Kellermann
3f267b1795 Tag, ...: move to libtag.a 2013-09-05 18:26:56 +02:00
Max Kellermann
8929f88e6d PlaylistPlugin: add interface SongEnumerator
Replaces struct playlist_provider.
2013-09-05 09:40:55 +02:00
Max Kellermann
fccba1af2a use standard snprintf() instead of GLib g_snprintf() 2013-09-05 09:21:53 +02:00
Max Kellermann
26d92c80ed conf.h: remove obsolete header
Use only ConfigData.hxx in plugin sources to reduce header
dependencies.
2013-09-05 08:47:10 +02:00
Max Kellermann
7d0269d2ce InputLegacy: move functions to the input_stream class 2013-09-05 00:23:14 +02:00
Max Kellermann
5101ef4b02 Tag*: move libtag.a sources to src/tag/ 2013-09-04 23:46:20 +02:00
Max Kellermann
29030b54c9 util/Error: new error passing library
Replaces GLib's GError.
2013-09-04 18:14:22 +02:00
Max Kellermann
8d36367fe2 input_stream.h: rename to InputLegacy.hxx 2013-09-03 09:18:30 +02:00
Max Kellermann
132971f8eb playlist/pls: use std::string instead of GString 2013-08-06 09:32:08 +02:00
Max Kellermann
7c2b553364 playlist/EmbbeddedCue: convert to class 2013-08-05 22:23:33 +02:00
Max Kellermann
409fc837ab playlist/lastfm: convert to class 2013-08-05 21:44:34 +02:00
Max Kellermann
6d0ada7f45 playlist/lastfm: allocate the lastfm_playlist object at the end
Simplify the error path, because the other allocations may fail.
2013-08-05 21:31:54 +02:00
Max Kellermann
af63372d2b playlist/m3u: allocate ExtM3uPlaylist with new/delete 2013-08-05 21:28:19 +02:00
Max Kellermann
3e91f757a9 playlist/extm3u: allocate ExtM3uPlaylist with new/delete 2013-08-05 21:25:25 +02:00
Max Kellermann
85b77b81ca *: use gcc.h macros instead of GLib 2013-08-04 23:48:01 +02:00
Max Kellermann
fe53a376a3 PlaylistPlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann
06f898cc12 tag: convert to C++ 2013-07-30 20:19:53 +02:00
Max Kellermann
cde6a3a00c tag_handler: convert to C++ 2013-07-29 07:39:58 +02:00
Max Kellermann
96b763067e ape: convert to C++ 2013-07-29 07:39:36 +02:00
Max Kellermann
dd5ba062cc tag_id3: convert to C++ 2013-07-28 20:25:45 +02:00
Max Kellermann
ba161ec572 song: convert header to C++ 2013-07-28 13:25:12 +02:00
Denis Krjuchkov
e9e55b0812 text_input_stream: convert to class 2013-05-12 20:02:27 +06:00
Max Kellermann
0921180b90 string_util: convert to C++ 2013-04-09 01:08:20 +02:00
Max Kellermann
2090911363 cue_parser: convert to C++ 2013-04-09 00:38:03 +02:00
Max Kellermann
3cc7be0fa6 playlist/cue: add constructor/destructor 2013-04-09 00:34:48 +02:00
Max Kellermann
7ec1121cc8 uri: convert to C++ 2013-04-08 23:45:31 +02:00
Max Kellermann
e66005563e playlist/despotify: various code simplifications 2013-01-29 20:36:28 +01:00
Max Kellermann
8cad20585d playlist/memory: use std::forward_list instead of GSList 2013-01-29 20:32:54 +01:00
Max Kellermann
a8b75dc4df playlist/{asx,rss,soundcloud,xspf}: merge code to MemoryPlaylistProvider 2013-01-29 18:56:35 +01:00
Max Kellermann
6f3d70b5e2 DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCond 2013-01-27 18:39:32 +01:00
Max Kellermann
257a0dee75 playlist/*: convert to C++ 2013-01-27 17:38:09 +01:00
Max Kellermann
0273cd44b0 input_stream: forward-declare the struct
Hide the definition from C code, to prepare the transition to C++.
2013-01-26 01:24:01 +01:00
Max Kellermann
3203a7dd8c tag_file: convert to C++ 2013-01-26 01:23:02 +01:00
Max Kellermann
86b0adc82c playlist/*: convert to C++ 2013-01-26 01:17:43 +01:00
Max Kellermann
9ec069104f input,playlist/despotify: convert to C++ 2013-01-21 19:01:10 +01:00
Max Kellermann
a582deee2c input_stream, main: remove obsolete GLib version checks
MPD requires GLib 2.16.
2012-08-14 01:57:53 +02:00
Max Kellermann
5dfc0918c3 require GLib 2.16
GLib 2.16 was released more than 4 years ago.  Let's remove some cruft
from the glib_compat.h header, and avoid new cruft to it.
2012-07-10 01:28:52 +02:00
Max Kellermann
da8b01771f playlist/soundcloud: libyajl2 uses size_t for string lengths
Fixes build failure on 64 bit.
2012-03-22 01:07:49 +01:00
Robert Vollmert
281b8714ef playlist/soundcloud: support libyajl2
[mk: backwars compatibility and autoconf check]
2012-03-19 21:16:48 +01:00
Max Kellermann
553d4e9283 playlist/soundcloud: use config_dup_block_string() 2012-03-01 20:11:09 +01:00
Robert Vollmert
7cef52478d A soundcloud playlist plugin.
Requires YAJL to build, and this doesn't include the necessary
automake changes. Can be built using
./configure CFLAGS="-I/usr/include/yajl" LIBS="-lyajl" --enable-soundcloud

Add the following to your config:

playlist_plugin {
        name "soundcloud"
        enabled "true"
        apikey "c4c979fd6f241b5b30431d722af212e8"
}

Then you can stream from soundcloud using calls like:

mpc load soundcloud://track/<track-id>
mpc load soundcloud://playlist/<playlist-id>
mpc load soundcloud://url/http://soundcloud.com/some/track/or/playlist

For the last case, you can leave off the http:// or
http://soundcloud.com/ .
2012-03-01 20:11:09 +01:00
Max Kellermann
d7d9dbd2c2 playlist/flac: delete this obsolete plugin
The FLAC playlist plugin has been superseded by the "embcue" playlist
plugin, which can read the embedded CUE sheets of all formats.
2012-02-12 19:57:27 +01:00
Max Kellermann
f8eece22c8 playlist/embcue: ignore "FILE", always point to container song file
An embedded CUE sheet must always point to the song file it is
contained in.
2012-02-12 19:48:02 +01:00
Max Kellermann
1735284a2a playlist/embcue: new plugin for reading embedded cue sheets
Parses CUE data from the "CUESHEET" tag.  Needs further integration in
the update thread.
2012-02-12 16:10:20 +01:00
Max Kellermann
abcc225763 cue_parser: new line based CUE sheet parser
To replace libcue, the unmaintained and crashy library.
2012-02-10 00:12:29 +01:00
Max Kellermann
754f26a97c input_stream: non-blocking I/O
Add GMutex, GCond attributes which will be used by callers to
conditionally wait on the stream.

Remove the (now-useless) plugin method buffer(), wait on GCond
instead.  Lock the input_stream before each method call.  Do the same
with the playlist plugins.
2011-09-16 21:22:13 +02:00
Simon Kagstrom
77b6e27500 playlist: Despotify plugin: Correct init in daemon mode
There is a global despotify session, so it should not be initialized
until needed.
2011-04-12 07:28:00 +02:00
Jonathan Neuschäfer
6d3ed3f16f fix common misspellings
These fixes were mostly generated with `codespell' [0] and manually
reviewed.

[0] http://git.profusion.mobi/cgit.cgi/lucas/codespell/
2011-03-31 21:46:01 +02:00
Simon Kagstrom
a25743875f playlist: Add despotify playlist plugin
For spotify playlists or tracks. Uses a spt uri, so with mpc you can
add playlists with

  mpc load spt://spotify:user:simon.kagstrom:playlist:3SUwkOe5VbVHysZcidEZtH
2011-03-29 17:01:16 +02:00
Max Kellermann
c6cbcc2c25 copyright year 2011 2011-01-29 10:13:54 +01:00
Max Kellermann
5462f34ed0 string_util: add function strchug_fast()
Replace g_strchug() calls with a cheaper implementation.
2010-12-23 16:23:20 +01:00
Max Kellermann
188e1b440e playlist/rss: new playlist plugin for RSS feeds 2010-10-11 20:33:41 +02:00
Max Kellermann
1ea10db953 playlist/cue: last track ends at end of file
libcue's track_get_length() returns 0 for the last track, because that
information is not available in the CUE sheet.  This makes MPD quit
playing the last track immediately.  If we set "song.end_ms=0", MPD
will play the track until the end of the song file, which is what we
want.
2010-06-25 20:02:55 +02:00
Orivej Desh
50c0c4b701 cue: fix code style 2010-04-01 08:12:25 +02:00
Orivej Desh
635791d1cd cue: prepend pregap to the beginning of the track
.. rather then append to the end of the previous one

Cuebreakpoints from the cuetools package has three modes of operation,
and the default is to append pregap (INDEX 00) to the end of the
previous track. This is the behavior most compliant to the existing
cue files.

Here is the patch which fixes the issue. I borrowed bits of
implementation from cuebreakpoints. I assumed that the whole audio
file must be covered by head-to-head going tracks, which is how
hardware CD players probably work. In cue_tag I changed rounding from
rounding up to rounding down because the thing in mpd which calculates
actual track duration (and current position) rounds it down, and I
didn't want to see in my playlist values different from whose in a
now-playing progress bar.

I've compared the resultant mpd behaviour with "mplayer -ss MM:SS.MS"
where the time was supplied by cuebreakpoints and noticed that mplayer
started each track a bit earlier then mpd, though this was the same
before the patch.
2010-03-28 19:34:16 +02:00
Max Kellermann
030e61115c playlist: added a FLAC playlist plugin
This playlist plugin handles FLAC files with embedded CUE sheets.
2010-01-06 08:50:52 +01:00
Max Kellermann
d3b763a48c input_stream: return allocated input_stream objects
Major API redesign: don't let the caller allocate the input_stream
object.  Let each input plugin allocate its own (derived/extended)
input_stream pointer.  The "data" attribute can now be removed, and
all input plugins simply cast the input_stream pointer to their own
structure (with an "struct input_stream base" as the first attribute).
2010-01-01 17:25:07 +01:00
Avuton Olrich
9d3865cb95 Update copyright notices. 2009-12-31 20:58:43 -08:00
Max Kellermann
bb4cef6a93 playlist/cue: fill song.start_ms, .end_ms
This patch adds practical usefulness to the CUE playlist plugin.
2009-12-27 16:08:53 +01:00
Max Kellermann
554b2b0ed9 playlist/cue: return the original song URI
The caller should be responsible for building the absolute URI.
2009-12-27 14:17:21 +01:00
Max Kellermann
3679d5bd7a playlist: added CUE playlist plugin
This plugin is the groundwork for MPD's future generic CUE sheet
support.  That's not complete yet, e.g. there is no way for a playlist
plugin to address an arbitrary position within a music file.
2009-12-16 22:19:01 +01:00
Max Kellermann
228b03edf8 input_stream: return errors with GError 2009-12-15 23:12:11 +01:00
Max Kellermann
5b82ffc291 include config.h in all sources
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
2009-11-12 09:17:03 +01:00
Max Kellermann
84917721c7 moved GLib compatibility code to glib_compat.h 2009-11-10 21:07:54 +01:00
Max Kellermann
f3203b5de5 playlist: added extm3u plugin
This new plugin parses extm3u files.  Files without the "#EXTM3U"
header are still parsed by the plain old "m3u" plugin.
2009-11-06 00:41:42 +01:00
Max Kellermann
65e56ff829 playlist/{m3u,pls}: removed URI checks
The caller is responsible for verifying the song URI.
2009-11-06 00:36:32 +01:00
Max Kellermann
294aaf7a90 playlist: new ASX playlist plugin
Based on the XSPF playlist plugin.
2009-10-21 23:39:47 +02:00
Max Kellermann
2024763d2a playlist/xspf: ignore text in root, playlist, tracklist
Added a missing "break".
2009-10-21 23:27:05 +02:00
Qball Cow
f4ea9b7393 Add PLS Parser 2009-10-15 00:08:06 +02:00
Max Kellermann
f122e6d456 playlist: added plugin for last.fm radio
This plugin will replace the last.fm input plugin, once the playlist
API is integrated into MPD.
2009-10-13 16:32:10 +02:00
Max Kellermann
8391ac4cc8 playlist: added XSPF plugin 2009-10-13 16:31:07 +02:00
Max Kellermann
767e27c8f0 playlist/m3u: added plugin name 2009-10-13 16:13:36 +02:00
Max Kellermann
2bf740fc71 playlist_plugin: new plugin API for playlist parsers
Based on this API, we will add parsers for EXTM3U, PLS, ASX, last.fm
radio and others.

There is no integration into the MPD core yet.  Right now, we have a
command line test program.  This is work in progress.
2009-10-12 22:34:04 +02:00