Avuton Olrich
76e3dec723
mpd version 0.17.2
2012-09-30 03:27:38 -07:00
Max Kellermann
ba6ef53ef9
decoder_control: remove MixRamp debug messages
...
These are confusing, and since MixRamp development has ceased, not
useful to anybody.
2012-09-25 11:08:16 +02:00
Max Kellermann
c93a28c641
configure.ac: don't auto-detect the Vorbis encoder when Tremor is enabled
...
libvorbisidec and libvorbis export the same symbols, which is a
dangerous thing. Since libvorbisenc depends on libvorbis, this can
get nasty, so let's disable the Vorbis encoder unless the user
explicitly wants it.
2012-09-25 10:41:39 +02:00
Max Kellermann
7088a679a2
decoder/wavpack: support all APEv2 tags
...
WavPack tags are always APEv2, by definition. Reuse the tag_table
from tag_ape.c, instead of rolling our own.
2012-09-25 09:37:16 +02:00
Max Kellermann
04c02a1eb8
locate: cast enum tag_type to int before comparing with integer
...
Avoids clang pickiness. This code is not correct, but we'll fix that
another day.
2012-09-22 09:48:27 +02:00
Max Kellermann
41487426f5
decoder/_ogg_common: fix buffer size check
...
Fixes potential access to uninitialised memory.
2012-09-04 11:22:15 +02:00
Max Kellermann
0d24250aa7
decoder/_ogg_common: simplify the large "if" expression
2012-09-04 11:22:05 +02:00
Wieland Hoffmann
2050e2f886
mpd.conf(5): Use the correct default value for max_playlist_length
2012-09-03 22:49:51 +02:00
Max Kellermann
013e8479af
AudioCompress: abort on out-of-memory
...
This library crashes on out-of-memory (NULL pointer dereference).
There's not much useful MPD can do in such a situation, so let's
explicitly abort instead, just like GLib does.
2012-09-03 22:45:33 +02:00
Max Kellermann
27535a7f78
update_walk: fix unsafe readlink() usage
2012-09-03 22:41:04 +02:00
Max Kellermann
acaa725478
playlist/cue: map "PERFORMER" to "artist" or "album artist"
...
Implements Mantis ticket 0003549.
2012-08-25 09:56:14 +02:00
Max Kellermann
f351550534
player_thread: disable cross-fading in "single" mode
...
This commit reimplements the core of the "single" mode. Instead of
doing the detection in the playlist code from the outside, it is moved
to the player thread, which gets a new option called "border_pause".
It will now pause playback exactly at the beginning of the new song,
making the feature more reliable.
Now that the player thread knows what will happen, it can suppress
cross-fading.
Fixes mantis tickets 0003055 and 0003166.
2012-08-25 09:38:41 +02:00
Max Kellermann
66ecf39efe
command: make "single" a bool
2012-08-21 19:38:08 +02:00
Max Kellermann
5ad21d7e98
queue_save: save song priorities
2012-08-21 19:17:14 +02:00
Max Kellermann
ef5125f8f4
playlist_print: fix memory leak
2012-08-16 00:01:01 +02:00
Max Kellermann
bf2e07074b
playlist_song: pass const song to _check_load_song()
2012-08-16 00:00:50 +02:00
Max Kellermann
20695ef369
playlist_song: fix user-after-free bug
2012-08-16 00:00:21 +02:00
Max Kellermann
9374e0f445
player_thread: add local variable "start_ms"
...
Just in case "song" becomes invalid at some point.
2012-08-15 22:51:48 +02:00
Max Kellermann
19ed233118
playlist: fix unprotected player_control access
2012-08-15 22:47:08 +02:00
Max Kellermann
faa4fff4dd
filter/volume: include cleanup
2012-08-15 22:45:03 +02:00
Max Kellermann
2276e7677b
mapper: fix potential crash in file permission check
2012-08-15 22:44:13 +02:00
Max Kellermann
93f9c2ab6b
doc/user: add wildmidi documentation
2012-08-15 01:03:16 +02:00
Max Kellermann
4a993cd79e
decoder/fluidsynth: add "sample_rate" setting
2012-08-15 00:57:32 +02:00
Max Kellermann
02325d2ede
decoder/fluidsynth: add "soundfont" setting
...
Replaces the old global "soundfont" which never worked.
2012-08-15 00:51:45 +02:00
Max Kellermann
9c83464b95
configure.ac: auto-detect libfluidsynth
...
Now that the libfluidsynth API was sanitized, we can enable the plugin
automatically if libfluidsynth is installed.
2012-08-15 00:48:52 +02:00
Max Kellermann
b1bbd70f0f
decoder/fluidsynth: stop playback at end of file
...
Use libfluidsynth's new function fluid_player_get_status().
2012-08-15 00:47:10 +02:00
Max Kellermann
c31d11bfe0
decoder/fluidsynth: don't duplicate path
...
The libfluidsynth now accepts const strings.
2012-08-15 00:39:22 +02:00
Max Kellermann
c8ec85d649
decoder/fluidsynth: check if file is really a MIDI
...
Use fluid_is_midifile() to verify the file format.
2012-08-15 00:36:04 +02:00
Max Kellermann
e291f3d257
decoder/fluidsynth: remove throttle (requires libfluidsynth 1.1)
...
The libfluidsynth API is now sane, and does not require real-time
decoding.
2012-08-15 00:29:38 +02:00
Max Kellermann
dc22846d58
log: store duplicated path string
...
Don't free the string right after calling log_init_file(). Add a new
function log_deinit() that frees the string on shutdown.
This fixes cycling the log file after SIGHUP (Mantis ticket 0003524).
2012-08-14 23:16:46 +02:00
Max Kellermann
c9aaabb5d4
output/jack: implement method delay()
...
Eliminate the g_usleep() call.
2012-08-14 22:47:25 +02:00
Max Kellermann
335d5d5d72
output/pulse: implement method delay()
...
Reduce command latency while paused.
2012-08-14 22:30:46 +02:00
Max Kellermann
51d793bec1
output/pulse: simplify _wait_stream()
...
One large loop and only one pa_stream_get_state() call.
2012-08-14 22:22:55 +02:00
Max Kellermann
249dcd967e
output/httpd: move delay from _pause() to _delay()
2012-08-14 21:54:47 +02:00
Max Kellermann
302972e9fc
output/httpd: fix throttling bug after resuming playback
...
Reset the timer when paused and no client is connected.
This fixes Mantis ticket 0003527.
2012-08-14 21:39:33 +02:00
Max Kellermann
31b380b266
output/httpd: move code to _has_clients()
2012-08-14 20:22:32 +02:00
Max Kellermann
a869dfea85
timer: use monotonic clock if available
2012-08-14 19:07:31 +02:00
Max Kellermann
12838c6294
input/ffmpeg: remove fallback AV_VERSION_INT definition
...
This is part of libavutil.
2012-08-14 19:07:27 +02:00
Wieland Hoffmann
49c7102547
mpd.conf(5): Document the existence of musicbrainz_ tags
...
Additionally, update mpdconf.example to refer to mpd.conf(5) for the
complete list of tags instead of trying to repeat it.
2012-08-14 09:43:18 +02:00
Max Kellermann
1ae8972859
mapper: fix non-UTF8 music directory name
...
Duplicate the music_dir variable: one encoded in UTF-8, and another
one using the configured filesystem character set. This fixes an
ancient MPD bug.
2012-08-14 02:28:04 +02:00
Max Kellermann
adcd2c8eac
playlist_song: use map_to_relative_path()
2012-08-14 02:25:19 +02:00
Max Kellermann
45ff355835
playlist_song: improve const-correctness
2012-08-14 02:24:16 +02:00
Max Kellermann
f8bf3afeae
playlist_song: move code to playlist_check_load_song()
2012-08-14 02:17:25 +02:00
Max Kellermann
f703da1516
valgrind.suppressions: suppressions for GStaticMutex and more
2012-08-14 01:58:17 +02: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
Anton Khirnov
12be9e818f
client_file: remove pure attribute from client_allow_file().
...
That function is not pure, it writes to error.
When marked as pure, the compiler is allowed to assume it does not do
anything to error, so it can remain NULL, which would result in an
invalid read in print_error().
2012-08-13 07:55:40 +02:00
Avuton Olrich
281cd7c057
Modify version string to post-release version 0.17.2~git
2012-07-31 19:05:52 -07:00
Avuton Olrich
63e8766091
mpd version 0.17.1
2012-07-31 19:05:52 -07:00
Max Kellermann
18da582c87
configure.ac: replace MPD_CHECK_FLAG with autoconf-archive scripts
...
Use standard scripts instead of MPD's custom implementation.
2012-07-30 11:10:04 +02:00
Max Kellermann
0562cf99ba
configure.ac: add -I to CPPFLAGS, not CFLAGS
2012-07-30 11:05:12 +02:00
Max Kellermann
60ac702038
tcp_socket, ...: remove obsolet RAOP sources
2012-07-30 06:57:49 +02:00
Max Kellermann
1dedb96478
tag_ape: return false if no usable tag was found
...
Ignore APE tags that have no usable tags, and use the ID3 tag instead.
This is useful when the APE tag only contains replay gain, and the
real tags are stored as ID3. This implements feature request Mantis
#0003521 .
2012-07-29 18:44:03 +02:00
Max Kellermann
7537722a44
cue_parser: support file types "MP3", "AIFF"
...
These two strings are common "FILE" types.
2012-07-26 23:01:40 +02:00
Max Kellermann
4ebd69193e
Makefile.am: updated web server for "upload" target
2012-07-13 10:19:38 +02:00
Jurgen Kramer
d4d92ac1a7
Add song duration to DSF and DSDIFF DSD decoders.
2012-07-13 10:14:17 +02:00
Max Kellermann
5385d1fa80
aiff: support the AIFC format
2012-07-10 01:53:46 +02:00
Max Kellermann
dbee2f1996
output_init: put the "convert" filter at the end of the list
...
No, really! This fixes a regression of commit 74617389 , which
changed the order of filter plugins.
2012-07-10 01:30:22 +02:00
Max Kellermann
6dd70926fa
test/test_pcm: add pcm_volume tests
2012-07-10 01:30:02 +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
2eb14658d3
Merge branch 'fix-typo' of https://github.com/sol/mpd
2012-07-10 00:32:09 +02:00
Jonathan Neuschäfer
c1f196dbec
command: require appropriate permissions for searchadd{,pl}
2012-07-10 00:23:19 +02:00
Max Kellermann
ce108acebb
configure.ac: increment version number to 0.17.1
2012-07-09 22:50:32 +02:00
Simon Hengel
0555e2c781
Fix typo
2012-07-08 09:19:12 +02:00
Max Kellermann
6bfd1f1727
mpd version 0.17
2012-06-27 11:38:13 +02:00
Max Kellermann
baa77c8ae3
Makefile.am: distribute src/output/*.h
2012-06-27 10:11:21 +02:00
Jurgen Kramer
7235dbadfd
patch to split DSD decoder into separate decoders for DSF en DFF. Move common
...
functions to new dsdlib. Update user doc.
2012-06-27 09:54:24 +02:00
geneticdrift
ecec41025f
Documentation for commands searchadd, searchaddpl, and for tcp keepalive config options
2012-06-27 09:50:35 +02:00
geneticdrift
799843cc97
New command searchaddpl
...
Search and add search result to a stored playlist.
2012-06-27 09:49:17 +02:00
geneticdrift
16e91baa79
New command searchadd similar to command findadd.
2012-06-27 09:41:15 +02:00
Max Kellermann
f2536445f7
locate: make variables more local
2012-06-27 09:36:02 +02:00
Max Kellermann
ede70ee3a4
update_walk: move code to update_song.c
2012-06-13 22:14:16 +02:00
Max Kellermann
66ed427a57
update_walk: move code to update_container.c
2012-06-13 22:11:43 +02:00
Max Kellermann
c9e63e9fdb
update_walk: move code to update_archive.c
2012-06-13 21:52:46 +02:00
Max Kellermann
ddf7f5c131
update_internal.h: split header
2012-06-13 21:38:28 +02:00
Max Kellermann
660e40d07e
update_walk: split update_regular_file()
2012-06-13 21:33:23 +02:00
Max Kellermann
9f3db5a70b
directory: require db lock for _{add,remove}_song()
2012-06-13 21:26:32 +02:00
Max Kellermann
1a59730782
update_walk: add "pure" attributes
2012-06-13 21:22:41 +02:00
Max Kellermann
20029e7ce8
update_walk: move code to make_directory_if_modified()
2012-06-13 21:22:00 +02:00
Max Kellermann
fcb7950811
update_walk: fix coding style
2012-06-13 20:48:30 +02:00
Max Kellermann
4eb57e1e9a
Merge branch 'v0.16.x'
...
Conflicts:
src/cmdline.c
src/decoder/wildmidi_decoder_plugin.c
src/gcc.h
src/glib_compat.h
src/input_stream.c
src/output_list.c
src/output_thread.c
valgrind.suppressions
2012-06-12 23:22:03 +02:00
Max Kellermann
1d52e2cc77
valgrind.suppressions: GLib 2.32 updates
2012-06-12 22:54:58 +02:00
Max Kellermann
209aceeb14
valgrind.suppressions: merge changes from master
2012-06-12 22:39:54 +02:00
Max Kellermann
ae70875f45
cmdline: consistent plugin listings
2012-06-12 22:29:04 +02:00
Max Kellermann
eda7410f4c
cmdline: dump list of input plugins
2012-06-12 22:24:42 +02:00
Max Kellermann
e60141b4dd
input_registry: add _for_each() macros
2012-06-12 22:21:48 +02:00
Max Kellermann
5b21742095
cmdline: dump list of playlist plugins
2012-06-12 22:16:13 +02:00
Max Kellermann
5665de5ee7
playlist_list: add _for_each() macros
2012-06-12 22:12:06 +02:00
Max Kellermann
d5b9be0393
cmdline: change --version formatting
2012-06-12 21:15:46 +02:00
Max Kellermann
d2d9b45a81
decoder_list: add _for_each() macros
2012-06-12 21:15:46 +02:00
Max Kellermann
9ebbdb9b0b
archive_list: add _for_each() macros
2012-06-12 20:58:43 +02:00
Max Kellermann
48da345e79
cmdline: don't initalise archive plugins for --version
...
Dump all archive plugins, even those that fail to initialise.
2012-06-12 20:52:04 +02:00
Max Kellermann
edbfa46cbc
encoder_list: add macro _for_each()
2012-06-12 20:39:53 +02:00
Max Kellermann
90709a6de4
encoder_list: make the list truly "const"
2012-06-12 20:36:53 +02:00
Max Kellermann
992c2fa2d4
output_list: declare variables inside _plugins_for_each()
...
Don't require the caller to provide them.
2012-06-12 20:31:32 +02:00
Max Kellermann
ed915fed92
output_list: make the list truly "const"
2012-06-12 20:30:55 +02:00
Max Kellermann
8aa29d5a66
output_list: simplify audio_output_plugins_for_each() call
2012-06-12 20:22:40 +02:00
Max Kellermann
9604e0aad2
cmdline: update copyright year
2012-06-12 19:55:30 +02:00
Denis Krjuchkov
25d053cbf2
Work around incorrect g_file_test() behavior on Win32
...
g_file_test is redefined to be g_file_test_utf8 and thus can't handle
non-ASCII characters. This fix adds simple wrapper (taken from glib)
that fixes encoding and calls g_file_test_utf8. All required inclusions
of glib_compat.h are added as well.
2012-06-12 19:31:19 +02:00
Max Kellermann
055257a210
audio-parser, output_thread: work around -Wmaybe-uninitialized
...
False positives in gcc 4.7.
2012-06-12 19:31:19 +02:00
Max Kellermann
50cfb997cc
gcc.h: backport GCC_CHECK_VERSION() from v0.17.x
2012-06-12 19:22:20 +02:00
Max Kellermann
d662c4c0cc
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
2012-05-29 23:46:10 +02:00
Max Kellermann
457d98c860
output/raop: delete the RAOP plugin
...
This plugin is horrible code, I mean it. Last year, I tried hard to
fix it, but I figured would take less time to do a full rewrite.
Given that I don't even have any device that supports RAOP, I can't do
that properly. After 16 months, nobody volunteered for fixing it.
Hereby, I delete it, because having no RAOP plugin is better than
having this mess. Sorry.
2012-05-29 23:15:41 +02:00
Max Kellermann
6bb166aaaa
decoder_api: log the decoder plugin name
2012-05-29 22:52:50 +02:00
Jonathan Neuschäfer
cca9bc5176
decoder/ffmpeg: improve "decoding failed" message
...
"Frame skipped" might cause the impression that the decoding of a whole
song failed.
2012-05-29 22:46:27 +02:00
Jonathan Neuschäfer
8b6b25220d
decoder/ffmpeg: add webm as a supported format
2012-05-29 22:38:40 +02:00
Jurgen Kramer
3c3f1b7ff2
Add support for DSF files to DSDIFF decoder - v4
...
Version 4 of my patch to add DSF support to the DSDIFF
decoder plugin.
This time I have taken a different approach and created a new
read_metadata function specific for reading DSF files. This saves an
indent (and for me a lot of indent nightmares) and also useful for
splitting the DSF and DFF decoders later on.
There are still a few lines which exceed the 80 character width limit by
a few chars. I was not able to stay within the limit and create (for me)
readable code.
Jurgen
2012-05-02 08:47:02 +02:00
Jonathan Dieter
57d89131e9
tag_rva2: parse multiple ID3 "RVA2" tags
2012-04-23 23:29:56 +02:00
Jonathan Dieter
7c6d1896a4
tag_rva2: support separate album/track replay gain
2012-04-23 23:29:53 +02:00
Max Kellermann
ad83c7f704
tag_rva2: move code to rva2_apply_frame()
2012-04-23 23:28:34 +02:00
Max Kellermann
6b52d040b1
test/read_rva2: new debug program for the RVA2 library
2012-04-23 23:00:41 +02:00
Max Kellermann
404fa89937
tag_id3: export tag_id3_load()
2012-04-23 22:51:45 +02:00
Max Kellermann
89377556cd
output/alsa: multiply writei() result with out_frame_size
...
.. and not in_frame_size, because this relates to the frame size being
sent to ALSA. pcm_export_source_size() will then turn it back into
the in_frame_size scale.
2012-04-23 21:54:09 +02:00
Max Kellermann
ec93114347
pcm_export: consider the pack24 flag in _source_size()
2012-04-23 21:54:09 +02:00
Max Kellermann
df1c5ce314
pcm_export: add _frame_size()
...
Move code from the ALSA output plugin.
2012-04-23 21:54:09 +02:00
Max Kellermann
a0e4b6e266
output/alsa: fix out_frame_size formula, multiply with channels
...
The hard-coded "3 bytes" was wrong because it ignored the number of
channels.
2012-04-23 21:54:08 +02:00
Max Kellermann
0de39b64cb
configure.ac: work around syntax error
...
.. when HAVE_WINDOWS was not set.
2012-04-23 21:54:08 +02:00
Max Kellermann
36a7b4e275
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
2012-04-06 15:42:41 +02:00
Avuton Olrich
d3cc8e0ac0
Modify version string to post-release version 0.16.9~git
2012-04-04 18:37:47 -07:00
Avuton Olrich
db1ce4eeeb
mpd version 0.16.8
2012-04-04 18:37:47 -07:00
Max Kellermann
c22cbbf828
Merge branch 'v0.16.x'
...
Conflicts:
src/output/osx_plugin.c
src/text_input_stream.c
2012-04-05 00:45:39 +02:00
Max Kellermann
5acee73fc8
encoder/vorbis: generate end-of-stream packet when playback ends
...
Add the encoder_plugin method end(). This is important for the
recorder plugin.
2012-04-05 00:21:53 +02:00
Max Kellermann
466c337bcb
encoder_plugin: add state assertions
2012-04-05 00:05:21 +02:00
Max Kellermann
98a468a101
encoder/vorbis: generate end-of-stream packet before tag
...
Don't reset the ogg_stream_state object, because this discards the
end-of-stream packet that was just added.
2012-04-04 23:59:06 +02:00
Max Kellermann
47c58c01d1
test/test_vorbis_encoder: program to debug the vorbis encoder
2012-04-04 23:58:00 +02:00
Max Kellermann
a9edf85a69
output/jack: check for connection failure before starting playback
2012-04-04 21:40:56 +02:00
Max Kellermann
e7a1862517
output/jack: workaround for libjack1 crash bug
2012-04-04 21:38:29 +02:00
Jurgen Kramer
f930f37d35
Add support for DSD-over-USB version 1.0, remove pre-v1 support
2012-04-04 20:13:15 +02:00
Max Kellermann
4feb57e895
db_lock, archive/bz2, ...: workaround for G_STATIC_MUTEX_INIT warning
2012-04-04 20:13:15 +02:00
Max Kellermann
712e3eb120
input/curl: use g_source_get_time()
...
g_source_get_current_time() is deprecated since GLib 2.28. This patch
adds a compatibility wrapper for older GLib versions to glib_compat.h.
2012-04-04 20:05:48 +02:00
Max Kellermann
d8e423df1a
directory: use strrchr() instead of g_basename()
...
g_basename() is deprecated in GLib 2.32.
2012-04-04 19:08:05 +02:00
Max Kellermann
09aa0dc676
uri: remove g_basename() call from uri_get_suffix()
...
g_basename() is deprecated in GLib 2.32. Instead, verify that the
suffix does not have a backslash, to catch Windows path names.
2012-04-04 12:22:16 +02:00
Anton Khirnov
83174de420
update: properly skip symlinks in path that is to be updated.
2012-04-04 08:56:45 +02:00
Max Kellermann
8ff0197a43
output/osx: use the fifo_buffer library instead of rolling own
...
The existing buffer implementation has a major flaw: it is unable to
re-fill the buffer until it has been consumed completely, leading to
many occasions where the render callback needs to generate silence,
just because the play() implementation was unable to append more
data. The fifo_buffer library handles that well.
2012-03-28 21:51:17 +02:00
Max Kellermann
a2b5db0003
audio_format: remove SAMPLE_FORMAT_DSD_OVER_USB
...
DSD-over-USB should not be a MPD core format, because it is not a
"natural" format; it is just a temnporary over-the-wire format. This
format has been implemented in pcm_export, and does not need to be
supported by pcm_convert.
2012-03-27 01:22:50 +02:00
Max Kellermann
2803ec2e96
output/alsa: support 32 bit DSD-over-USB
2012-03-27 01:22:50 +02:00
Max Kellermann
ddd4f675a2
pcm_export: implement 24 to 32 bit conversion
...
For 32 bit DSD-over-USB support.
2012-03-27 01:22:50 +02:00
Max Kellermann
d271dd2cce
output/alsa: use pcm_export for the DSD-over-USB conversion
2012-03-27 01:22:50 +02:00
Max Kellermann
ebfdd37451
pcm_export: support DSD to DSD-over-USB conversion
...
Prepare for removing SAMPLE_FORMAT_DSD_OVER_USB.
2012-03-27 01:17:11 +02:00
Max Kellermann
f6d6110aaa
output/alsa: move pcm_export_open() to caller
...
Give the caller more control, prepare for DSD-over-USB improvements.
2012-03-27 01:17:11 +02:00
Max Kellermann
a0730cf264
pcm_export: support packing SAMPLE_FORMAT_DSD_OVER_USB
...
It's a padded 24 bit format.
2012-03-27 00:37:14 +02:00
Max Kellermann
ec61b3a5fc
pcm_export: initialize the "pack" buffer
2012-03-27 00:14:37 +02:00
Max Kellermann
521f2294cb
pcm_export: fix API documentation
2012-03-27 00:14:37 +02:00
Max Kellermann
2f0674807c
output/alsa: more debug output
2012-03-27 00:14:37 +02:00
Dan McGee
de0f46b947
Use g_message and not g_debug when removing song
...
When adding or updating a song, we get a log message even if debug is not
enabled. It seems odd that removing a song shouldn't be done at the same log
level; otherwise looking at the log leads you to believe songs are never
removed from the library on update.
Signed-off-by: Dan McGee <dan@archlinux.org >
2012-03-26 17:32:18 +02:00
Dan McGee
1a57fa095f
Fix processing of sticker database path
...
After a previous refactor, the current code fails on paths that need
expansion (e.g, '~/.mpd/sticker.db'), because we are not passing the correct
path to the sticker database code. Pass the expanded (and previously unused)
string instead of the original string.
Signed-off-by: Dan McGee <dan@archlinux.org >
2012-03-26 17:30:06 +02:00
Max Kellermann
167242fec0
output/alsa: add option to enable DSD over USB
2012-03-22 01:30:16 +01:00
Max Kellermann
81208d78ac
pcm_dsd: implement DSD to 24 bit USB conversion
...
Implements the dCS suggested standard:
http://www.dcsltd.co.uk/page/assets/DSDoverUSB.pdf
2012-03-22 01:14:51 +01: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
Max Kellermann
725fbe946b
output/alsa: split the frame_size attribute
...
Make it in_frame_size and out_frame_size, to account for packing.
2012-03-22 01:01:11 +01:00
Max Kellermann
b99ecb4dc9
audio_format: remove the packed S24 format
...
For simplicity, the MPD core should not have to deal with packing. It
is rarely used, and those plugins that need it should use the
pcm_export library instead.
2012-03-22 00:42:12 +01:00
Max Kellermann
208a96b211
output/alsa: use pcm_export to pack 24 bit samples
2012-03-22 00:33:59 +01:00
Max Kellermann
43774455cc
output/oss: use pcm_export to pack 24 bit samples
2012-03-22 00:33:40 +01:00
Max Kellermann
5b61e077e0
pcm_export: add option "pack"
...
Converts padded 24 bit samples to packed 24 bit samples. Will replace
the packed S24 sample format, which is not used internally.
2012-03-22 00:33:40 +01:00
Max Kellermann
921cc3e5db
output/oss: remember the real OSS format
...
Improving oss_reopen() by using the very same value that was used
initially.
2012-03-22 00:33:40 +01:00
Max Kellermann
51dce3d161
output/alsa: simplify setup_format()
2012-03-22 00:29:56 +01:00
Max Kellermann
c10f013fc2
output/alsa: don't pass audio_format to _try_format()
...
Let the caller configure the audio_format object.
2012-03-22 00:24:56 +01:00
Max Kellermann
2874d68bdb
output/alsa: simplify alsa_output_try_format_both()
...
Merge three functions into one and call get_bitformat() only once.
2012-03-22 00:23:07 +01:00
Max Kellermann
11e83eb7e7
output/oss: move code to oss_probe_sample_format()
2012-03-21 22:28:18 +01:00
Max Kellermann
9ec9a8705e
pcm_export: use the byte_reverse library directly
...
Delete the now-unused pcm_byteswap library, and optimize the
pcm_export_state object.
2012-03-21 21:18:11 +01:00
Max Kellermann
170635e3a6
output/{alsa,oss}: move endian code to new library pcm_export
2012-03-21 21:16:50 +01:00
Max Kellermann
a5d1444ef4
pcm_pack: fix regression in unpack_sample()
...
Should have been "==", not "!=".
2012-03-21 21:16:46 +01:00
Max Kellermann
55708b39c3
audio_format: DSD_OVER_USB is padded to 32 bit
...
For simplicity, pad the dCS samples to 32 bit. Packed 24 bit samples
are rarely used. This patch does not include a real code change,
because there is no user of DSD_OVER_USB yet.
2012-03-21 19:41:41 +01:00
Max Kellermann
8c5ebdff36
audio_format: remove the reverse_endian attribute
...
Eliminate support for reverse endian samples from the MPD core. This
moves a lot of complexity to the plugins that really need it (only
ALSA and CDIO currently).
2012-03-21 19:31:04 +01:00
Max Kellermann
1c84f324a1
output/oss: always receive host byte order samples
...
Don't use audio_format.reverse_endian.
2012-03-21 19:25:59 +01:00
Max Kellermann
3dba09f339
output/alsa: always receive host byte order samples
...
Don't use audio_format.reverse_endian.
2012-03-21 19:14:05 +01:00
Max Kellermann
7ebf8e66c9
decoder/pcm: always supply host byte order samples
...
Don't use audio_format.reverse_endian.
2012-03-21 19:10:57 +01:00
Max Kellermann
62218fe59d
test: add unit test for util/byte_reverse.c
2012-03-21 19:08:32 +01:00
Max Kellermann
95d9bb6dfc
pcm_byteswap: move code to libutil
2012-03-21 18:58:19 +01:00
Max Kellermann
33986075ef
Makefile.am: link src/util/*.c into libutil.a
2012-03-21 18:58:19 +01:00
Max Kellermann
766905ba9f
output/alsa: merge alsa_data_free() into destructor
2012-03-21 18:58:11 +01:00
Max Kellermann
a29c64b6c7
audio_format: hack for DSD to USB conversion
...
Halve the sample rate for *:dsdusb:*.
2012-03-21 10:33:43 +01:00
Max Kellermann
777e1cabc5
test/run_convert: allow the out format to be a mask
2012-03-21 10:33:43 +01:00
Rich Healey
396e97fc94
Fix the build on OSX
2012-03-21 10:32:54 +01:00
Max Kellermann
9c6a4505c8
audio_format: remove the format SAMPLE_FORMAT_DSD_LSBFIRST
...
This format is unused since the DSDIFF decoder plugin now reverses the
bit order.
2012-03-21 09:06:48 +01:00
Max Kellermann
238c3adad1
decoder/dsdiff: reverse bits to most significant bit first
...
Allow to remove this complexity from the MPD core.
2012-03-21 09:01:56 +01:00
Max Kellermann
c1d0a8b5ce
dsd2pcm: move the bit reversing code to a generic library
...
Instead of doing run-time initialisation, use a constant lookup table.
2012-03-21 08:44:43 +01:00
Max Kellermann
08ce24ec3f
audio_format: basic support for DSD-over-USB
2012-03-19 23:49:29 +01:00
Max Kellermann
79eb7623ef
event_pipe, test: explicitly ignore write() return value
...
Some compilers are very picky, but we really aren't interested in the
return value.
2012-03-19 23:26:47 +01:00
Jonathan Neuschäfer
b9e64d0472
decoder/audiofile: fix compiler warnings with libaudiofile 0.3.3
...
This might break older versions, I didn't test.
2012-03-19 23:21:12 +01:00
Max Kellermann
4f500149af
text_input_stream: detect end-of-file
...
Fixes endless loop when the last line of a text file was not
terminated (bug 3470).
2012-03-19 23:17:56 +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
d5be3cce9c
text_input_stream: detect end-of-file
...
Fixes endless loop when the last line of a text file was not
terminated (bug 3470).
2012-03-19 20:37:25 +01:00
Max Kellermann
8dcefaf2e3
test/dump_text_file: debug program for text_input_stream.c
2012-03-19 20:37:25 +01:00
Max Kellermann
48e3432a63
test/run_input: use input_stream_*lock()
2012-03-19 20:37:25 +01:00
Max Kellermann
69d3c611aa
util/list: allow typeof() with clang
2012-03-19 20:37:25 +01:00
Max Kellermann
36827e1134
event_pipe, test: explicitly ignore write() return value
...
Some compilers are very picky, but we really aren't interested in the
return value.
2012-03-19 20:37:25 +01:00
Max Kellermann
351ac4a2c0
command: read arbitrary local files with "lsinfo"
...
Requires UNIX domain socket connection.
2012-03-06 22:23:10 +01:00
Max Kellermann
36fff59a38
client_file: always allow access if client uid equals mpd uid
2012-03-06 22:22:27 +01:00
Max Kellermann
1e60a4386a
playlist_edit: move UID check to client_allow_file()
2012-03-06 22:10:54 +01:00
Max Kellermann
e9f1b53ae6
command, ack: add ack_quark()
...
To pass ack values around.
2012-03-06 22:08:54 +01:00
Max Kellermann
5016839b90
use g_strerror() instead of strerror()
...
Make sure we get a UTF-8 encoded string.
2012-03-06 22:06:08 +01:00
Max Kellermann
faf35e6082
command: fix the "DENIED" ACK code
...
Use ACK_ERROR_PERMISSION instead of ACK_ERROR_NO_EXIST.
2012-03-06 21:37:10 +01:00
Max Kellermann
d07a6edd2f
configure.ac: detect libyajl for playlist/soundcloud
2012-03-01 20:18:16 +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
e7ce362d22
song_update, udp_server: workarounds for gcc 4.1 warnings
...
Annoying false positives.
2012-03-01 20:11:09 +01:00
Kurt Van Dijck
c551c8b31b
raop_output: fix raop_session inbalance
...
raop_session_free must be called from raop_output_finish,
not from raop_output_remove.
In raop_output_remove, do close the ntp_server & control port.
Signed-off-by: Kurt Van Dijck <kurt.van.dijck@skynet.be >
2012-03-01 09:51:37 +01:00
Max Kellermann
9c36e71081
decoder/dsdiff: don't convert to PCM
...
Move the responsibility for the conversion to the PCM library. This
will allow passing the verbatim DSD samples to an output plugin.
2012-03-01 02:05:40 +01:00
Max Kellermann
c9c57af5f7
pcm_convert: support the DSD format
2012-03-01 02:00:12 +01:00
Max Kellermann
2516496993
audio_format: add DSD sample format
...
Basic support for Direct Stream Digital. No conversion yet, and no
decoder/output plugin support.
2012-03-01 01:15:22 +01:00
Max Kellermann
3b565b5f97
pcm_convert: add method _reset()
...
Resets the libsamplerate state. Not being used yet.
2012-03-01 00:59:53 +01:00
Avuton Olrich
0742976138
win32: Add a Windows OS resource file and icon
2012-02-23 06:32:30 -08:00
Max Kellermann
1a63663c85
Merge remote branches 'jn/ffmpeg' and 'jn/wsp'
2012-02-15 21:49:20 +01:00
Jonathan Neuschäfer
00a20fc8a5
decoder/ffmpeg: always use AV_VERSION_INT
2012-02-15 21:42:52 +01:00
Jonathan Neuschäfer
6ab4fb368c
input/cdio_paranoia: whitespace-fix a comment
2012-02-15 21:22:49 +01:00
Jonathan Neuschäfer
fa39bb0a50
doc/protocol: fix some grammar
...
(Maybe it should be "A new message is indicated...", I don't know.)
( ^^ )
2012-02-15 21:17:19 +01:00
Max Kellermann
645663cdfe
Merge branch 'af' of git://git.musicpd.org/jn/mpd
2012-02-15 21:06:53 +01:00
Jonathan Neuschäfer
ee2bcbb41d
decoder/audiofile: fix compiler warnings with libaudiofile 0.3.3
...
This might break older versions, I didn't test.
2012-02-15 20:52:48 +01:00
Jonathan Neuschäfer
12b4ebf8d4
use audio_output_plugins_for_each's plugin iterator
2012-02-15 20:37:29 +01:00
Jonathan Neuschäfer
8da4750ee2
rtsp_client: strncat -> g_strlcat
...
The main difference is that strncat takes the maximum number of
characters to copy as its third argument, while g_strlcat takes
the size of the buffer, which is how the code was using strncat.
Incomplete requests may still be constructed as a result of the
reqest buffer filling up.
2012-02-15 20:37:29 +01:00
Jonathan Neuschäfer
d22df2915c
main: handle negative strtol return value
...
size_t is unsigned most of the time, so we can't really use it to
check for negative values. Also handle strtol overflow.
2012-02-15 20:35:06 +01:00
Jonathan Neuschäfer
e77d96cf89
decoder/sidplay: remove unused variable 'ret'
2012-02-15 20:35:05 +01:00
Max Kellermann
ae28ba84d2
command: move code to protocol/argparser.c
2012-02-14 19:13:04 +01:00
Max Kellermann
b3f3b01958
command: use standard error messages in check_int()
2012-02-14 19:02:11 +01:00
Max Kellermann
52e9cab1c1
command: check for empty string after strtol()
...
An empty string is obviously not a valid integer.
2012-02-14 18:59:41 +01:00
Max Kellermann
1baaaa40cc
command: parse unsigned integers and booleans where applicable
2012-02-14 18:57:43 +01:00
Max Kellermann
b8ed420058
command: move functions to protocol/result.c
2012-02-14 18:57:29 +01:00
Max Kellermann
ed16ee3029
command: eliminate local buffer "unknown"
2012-02-14 18:57:12 +01:00
Max Kellermann
7338b16c18
listen: implement systemd socket activation
2012-02-13 21:32:42 +01:00
Max Kellermann
f529441400
server_socket: add method _add_fd()
2012-02-13 21:32:42 +01:00
Max Kellermann
03664d0426
server_socket: move code to set_fd()
2012-02-13 21:32:42 +01:00
Max Kellermann
652cfb7caf
zeroconf: skip initialisation if there is no port
2012-02-13 21:05:05 +01:00
Max Kellermann
5540fbaec2
command: new command "config"
2012-02-13 20:30:27 +01:00
Max Kellermann
0a0b473765
mapper: add mapper_get_music_directory()
...
Shortcut for map_directory_fs(db_get_root()).
2012-02-13 20:10:19 +01:00
Max Kellermann
df2d041483
database: add "pure" attributes
2012-02-13 20:08:50 +01:00
Max Kellermann
ffc6e19548
database: remove obsolete prototype db_check()
2012-02-13 20:08:47 +01:00
Max Kellermann
d874d7661f
mapper: add "pure" attributes
2012-02-13 20:06:23 +01:00
Max Kellermann
1d66e714e6
client: add function client_is_local()
2012-02-13 20:05:31 +01:00
Max Kellermann
d98a863b82
client: add "pure" attributes
2012-02-13 20:05:15 +01:00
Max Kellermann
3b6790c7dc
command: never print "bad name" in response to "load"
...
Work around a confusing error message.
2012-02-13 19:51:27 +01:00
Max Kellermann
5ee3a9a9ca
playlist_vector: require database lock for all functions
2012-02-13 19:26:04 +01:00
Max Kellermann
dd26fa67f2
playlist_vector: add new playlist to the end of the list
...
Avoid reversing the order after every update.
2012-02-13 19:26:03 +01:00
Max Kellermann
89f5e60422
directory.h: move DIRECTORY_DIR to directory_save.c
2012-02-13 19:24:17 +01:00
Max Kellermann
c616165f81
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
src/decoder/ffmpeg_decoder_plugin.c
test/read_tags.c
2012-02-13 19:15:18 +01:00
Max Kellermann
103832742d
decoder/ffmpeg: read the "year" tag
...
This was disabled when compiled with a new ffmpeg version. Older
ffmpeg versions used it explicitly, while newer ones may pass it
through from the codec.
2012-02-13 19:05:39 +01:00
Max Kellermann
3e7e0bcb18
test/run_decoder: initialize GThread
2012-02-13 19:00:23 +01:00
Max Kellermann
7d3d8f20ab
test/read_tags: call g_thread_init()
2012-02-13 18:37:09 +01:00
Max Kellermann
e1e3ce980a
decoder_api: check state before emitting initial seek command
...
This fixes seeking in the vorbis decoder during MPD startup.
2012-02-13 18:27:43 +01:00
Max Kellermann
7855a32579
pcm_buffer: pcm_buffer_get() never returns NULL
...
This fixes a bug when libsamplerate returns an empty buffer for a very
small input buffer. The caller thinks this is an error, bug there is
no GError object.
2012-02-13 18:17:05 +01:00
Max Kellermann
9c92afa5fe
output/winmm: remove pointless NULL check
...
pcm_buffer_get() cannot ever return NULL.
2012-02-13 18:10:36 +01:00
treblid
edac498d03
directory: fix reverse order of child directories
...
Directories are loaded in reverse order when MPD starts. Only fixed
when doing a rescan.
2012-02-13 14:44:28 +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
df563db294
song: add function song_replace_uri()
2012-02-12 19:48:02 +01:00
Max Kellermann
01b0d9eb97
db_print: print extra "playlist" object for embedded CUE sheets
...
This finally enables the new embedded CUE sheet code: when a song file
contains a playlist, it is printed in the "lsinfo" output, so clients
get to know about this.
2012-02-12 18:41:25 +01:00
Max Kellermann
a7f13d841f
song_update: update the "has_playlist" flag
2012-02-12 18:40:55 +01:00
Max Kellermann
686d8bbe69
tag_handler: add new handler that updates has_playlist
2012-02-12 18:40:55 +01:00
Max Kellermann
4b36af4a34
tag: add attribute "has_playlist"
2012-02-12 18:29:05 +01:00
Max Kellermann
4a23a4bfee
tag_{ape,id3}: remove the _load() functions
...
Use _scan() instead, to have more control.
2012-02-12 18:29:05 +01:00
Max Kellermann
ac3ad452c0
playlist_vector: use the list_head library
2012-02-12 17:50:30 +01:00
Max Kellermann
027c01511c
update_remove: add header update_remove.h
2012-02-12 17:43:23 +01:00
Max Kellermann
4fdcc0496f
update_walk: move code to update_db.c
2012-02-12 17:41:34 +01:00
Max Kellermann
0c4a2bea69
update_walk: move code to update_io.c
2012-02-12 17:00:00 +01:00
Max Kellermann
2ba3401238
update_walk: move code to update_song_file()
2012-02-12 16:50:24 +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
8a3192ffc1
decoder/wavpack: bigger tag value buffer
...
Prepare for big CUESHEET tags.
2012-02-12 16:10:20 +01:00
Max Kellermann
ffea273a28
tag_handler: handle arbitrary name/value pairs
...
The new method pair() receives an arbitrary name/value pair. Support
for this is being added to a few decoder plugins.
2012-02-12 13:41:48 +01:00
Max Kellermann
1783aac438
decoder/wavpack: move code to wavpack_scan_tag_item()
...
Remove clutter from wavpack_scan_file(), and use a (large) fixed
buffer for the tag item.
2012-02-11 19:36:59 +01:00
Max Kellermann
29bf3d2c04
decoder/wavpack: use the tag_table library
2012-02-11 19:34:10 +01:00
Max Kellermann
ee16fc958c
decoder/{mikmod,fluidsynth,mp4ff}: adapt to tag_handler API
...
Fixes build regression.
2012-02-11 19:28:56 +01:00
Max Kellermann
5d73215a8d
decoder_plugin: scan tags with callback table
...
Pass a callback table to scan_file() and scan_stream(), instead of
returning a tag object.
2012-02-11 17:04:29 +01:00
Max Kellermann
b7356bc526
decoder/gme: convert runtime check to assertion
...
When gme_track_info() returns with success, then the gme_info_t
pointer must be set.
2012-02-11 16:59:24 +01:00
Max Kellermann
8ec8282f38
decoder/ffmpeg: use the tag_table library
2012-02-11 16:39:03 +01:00
Max Kellermann
43b7b98949
decoder/ffmpeg: move code to ffmpeg_metadata.c
2012-02-11 16:37:29 +01:00
Max Kellermann
f791065a98
decoder/ffmpeg: remove AV_VERSION_INT definition
...
All supported ffmpeg/libav versions have this.
2012-02-11 16:37:25 +01:00
Max Kellermann
d95db28695
decoder/flac: check for errors only after _process_single()
...
The only other libFLAC call (seek) does not produce fatal errors.
2012-02-11 12:57:18 +01:00
Max Kellermann
851fb16e7c
decoder/flac: symmetric FLAC__stream_decoder_finish() calls
...
Call it in the function that also invokved
FLAC__stream_decoder_init_*().
2012-02-11 12:56:52 +01:00
Max Kellermann
a4cbaafd10
decoder/flac: use error messages from libFLAC
2012-02-11 12:37:24 +01:00
Max Kellermann
c5f2cdb822
decoder/flac: eliminate the remaining "gotos"
...
https://www.xkcd.com/292/
2012-02-11 12:37:24 +01:00
Max Kellermann
1892d29be0
decoder/{vorbis,flac}: use the tag_table library
2012-02-11 12:37:24 +01:00
Max Kellermann
9e5a49b8cb
tag_id3: use the tag_table library for TXXX
2012-02-11 12:37:24 +01:00
Max Kellermann
767ade02f4
tag_table: convert to a struct
...
The struct is smaller because it is sparse. Its traversal is also
more efficient.
2012-02-11 12:37:24 +01:00
Max Kellermann
6e05071a47
decoder_api: correct decoder_seek_error() documentation
2012-02-11 12:37:23 +01:00
Max Kellermann
c8a990b9d3
decoder/vorbis: move code to vorbis_comment.c
2012-02-11 10:04:02 +01:00
Max Kellermann
6868ceae9b
INSTALL: mention libav
2012-02-11 09:58:06 +01:00
Max Kellermann
cace646346
INSTALL: remove mention of libcue
2012-02-10 08:26:10 +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
b9673fc521
command: add optional range parameter to "load"
2012-02-09 23:55:34 +01:00
Max Kellermann
b0ea3f4261
playlist_save: add start/end_index parameters
2012-02-09 23:54:31 +01:00
Max Kellermann
0103219f00
playlist_queue: add start/end_index parameters
2012-02-09 23:44:33 +01:00
Max Kellermann
e15b4f40d6
Merge commit 'release-0.16.7'
...
Conflicts:
NEWS
configure.ac
2012-02-05 18:33:58 +01:00
Avuton Olrich
66235fddff
Modify version string to post-release version 0.16.8~git
2012-02-04 14:41:59 -08:00
Avuton Olrich
f9c5d026f4
mpd version 0.16.7
2012-02-04 14:41:59 -08:00
Max Kellermann
c46239af22
Merge branch 'v0.16.x'
...
Conflicts:
src/decoder/ffmpeg_decoder_plugin.c
test/read_tags.c
test/run_decoder.c
2012-02-04 17:23:53 +01:00
Max Kellermann
48eb3ff8d9
test/run_decoder: initialize the tag_pool library
2012-02-04 17:18:37 +01:00
Max Kellermann
5646dcc791
test/read_tags: initialize the tag_pool library
2012-02-04 14:32:17 +01:00
Max Kellermann
5d9876e338
decoder/ffmpeg: use AV_SAMPLE_FMT_* if available
...
Implements support for libavcodec 0.9, which removes the compatibility
macros SAMPLE_FMT_*
2012-02-03 09:55:25 +01:00
Max Kellermann
083340a937
decoder/ffmpeg: use sentinel for the ffmpeg_tag_maps table
...
Minor optimisation.
2012-02-03 09:18:05 +01:00
Max Kellermann
378fa5ee6a
decoder/ffmpeg: support all MPD tags
...
Use the tag_item_names table to look up the names of all MPD tags, and
remove the duplicate entries from ffmpeg_tag_maps.
2012-02-03 09:10:48 +01:00
Max Kellermann
4764daf3c2
decoder/ffmpeg: pass tag_type and name to _copy_metadata()
...
Allow using this function without the ffmpeg_tag_map struct.
2012-02-03 09:09:18 +01:00
Max Kellermann
6357496d17
decoder/ffmpeg: merge code to _copy_dictionary()
...
Eliminate some duplicate code.
2012-02-03 09:09:18 +01:00
Max Kellermann
001e2a604b
decoder/ffmpeg: add macros emulating AVDictionary
...
Move the #ifdefs out of _copy_metadata().
2012-02-03 09:02:14 +01:00
Max Kellermann
f370911c15
decoder/ffmpeg: _copy_metadata() returns void
...
No interest in this return value.
2012-02-03 08:59:26 +01:00
Max Kellermann
ef5cf40fa6
directory: require the caller to lock the db_mutex
...
Reduce the number of lock/unlock cycles, and make database handling
safer.
2012-02-02 18:06:33 +01:00
Max Kellermann
837bd79b20
db_lock: add assertions
2012-02-02 17:59:51 +01:00
Max Kellermann
3edd4a24af
update_walk: use directory_make_child()
2012-02-02 17:59:51 +01:00
Max Kellermann
535a61b5a9
directory: add new objects to the end of the linked list
...
This was the cause of the reversed ordering when loading a database
file.
2012-02-02 09:59:38 +01:00
Max Kellermann
e87b7daab5
input/soup: use #pragma only with gcc 4.6+
...
It seems gcc 4.5 does not allow #pragma within function:
src/input/soup_input_plugin.c:284:9: error: #pragma GCC diagnostic not allowed inside functions
2012-01-29 14:46:05 +01:00
Max Kellermann
f20689519d
directory: fix deep path lookup
...
This commit fixes a major regression in directory_lookup_directory(),
which broke the deep lookup of directories.
2012-01-29 14:42:28 +01:00
Max Kellermann
ee9c460f74
directory: mark unused parameter
2012-01-24 22:27:42 +01:00
Max Kellermann
84ba14fa29
directory: replace songvec with doubly linked list
2012-01-24 22:26:43 +01:00
Max Kellermann
3c75963352
directory: add function directory_get_song(), ...
...
Wrap songvec_find() and other songvec methods.
2012-01-24 22:26:43 +01:00
Max Kellermann
5f9dd8287c
valgrind.suppressions: misc updates
2012-01-24 22:26:43 +01:00
Max Kellermann
d99f074eb7
directory: replace dirvec with doubly linked list
...
Random access is not needed, and a linked list is easier to manage: we
don't need to (re-)allocate the pointer array.
2012-01-24 20:49:53 +01:00
Max Kellermann
a989140a07
util/list.h: import the Linux kernel's linked list library
2012-01-24 20:49:52 +01:00
Max Kellermann
420a4c163d
directory: simplify constructors and clarify API documentation
...
Pass only the "name" to a directory, instead of the full (relative)
path.
2012-01-24 20:03:18 +01:00
Max Kellermann
1bab735580
dirvec: unlock mutex in dirvec_find() in all branches
2012-01-24 20:02:32 +01:00
Max Kellermann
a0fcd0cf22
dirvec: don't call g_path_get_basename() on parameter
...
This overhead is completely useless, because no caller expects this
behaviour.
2012-01-24 18:27:00 +01:00
Max Kellermann
5d5c753c74
songvec: move code to songvec_find_pointer()
2012-01-24 18:06:52 +01:00
Max Kellermann
7e7e3eb8d5
songvec: _delete() returns void
...
The given song must exist, or MPD will abort. Calling it with an
unknown song is illegal.
2012-01-24 18:06:25 +01:00
Max Kellermann
2e5f8aeba1
refcount: add missing stdbool.h include
2012-01-24 17:16:42 +01:00
Max Kellermann
c2fe961db1
decoder/ffmpeg: remove debug code
2012-01-24 17:15:29 +01:00
Max Kellermann
2a6acc04a1
dirvec: remove unused functions _clear(), _for_each()
2012-01-21 11:32:06 +01:00
Max Kellermann
a467128093
db_lock: new unified lock for songvec and dirvec
2012-01-21 10:51:53 +01:00
Max Kellermann
abf41eb85c
.gitignore: add new output files
2012-01-21 10:51:53 +01:00
Max Kellermann
d83dea4463
db/simple: pass the correct GError pointer
2012-01-12 18:59:26 +01:00
Max Kellermann
ec43721c3c
Merge branch 'v0.16.x'
...
Conflicts:
src/decoder/ffmpeg_decoder_plugin.c
2012-01-12 18:59:21 +01:00
Max Kellermann
39d52762d1
decoder/ffmpeg: check libavutil version for AVDictionaryEntry
...
Require libavutil 51.5.0.
2012-01-12 18:45:18 +01:00
Max Kellermann
8d45d0d104
decoder/ffmpeg: raise version dependency for avformat_find_stream_info()
...
This function was added when the libavformat version was 53.2.0, but
the actual release 53.2.0 did not have it.
2012-01-12 18:28:19 +01:00
Max Kellermann
26ec62714c
mixer/alsa: listen for external volume changes
...
Use libasound's polling functions, implement a bridge to GSource /
GPollFD and send idle events to clients when an external program
changes the ALSA mixer volume.
2012-01-05 01:52:40 +01:00
Max Kellermann
7873b5e78b
mixer/alsa: move code to alsa_mixer_setup()
...
Better error handling.
2012-01-05 01:52:05 +01:00
Max Kellermann
1b889c527f
mixer/alsa: move code to alsa_mixer_lookup_elem()
2012-01-05 00:52:41 +01:00
Max Kellermann
9937ff8ac0
Merge branch 'v0.16.x'
...
Conflicts:
src/decoder/ffmpeg_decoder_plugin.c
src/input/ffmpeg_input_plugin.c
2012-01-05 00:33:23 +01:00
Max Kellermann
abd1949825
decoder/ffmpeg: support libavformat 0.8
2012-01-05 00:17:56 +01:00
Max Kellermann
4e6bc77a70
decoder/ffmpeg: use avcodec_decode_audio4(), support libavcodec 0.8
2012-01-04 22:10:38 +01:00
Max Kellermann
531948358b
decoder/ffmpeg: include libavutil/mathematics.h
...
Needed for av_rescale_q() in ffmpeg 0.8.
2012-01-04 21:54:54 +01:00
Max Kellermann
0d3ec9c324
configure.ac: disable -Wno-deprecated-declarations
2012-01-04 21:48:30 +01:00
Max Kellermann
21caca4aea
decoder/ffmpeg: use avcodec_open2() on newer ffmpeg versions
...
avcodec_open() has been deprecated.
2012-01-04 21:48:30 +01:00
Max Kellermann
fbf3edf07d
decoder/ffpmeg: don't use av_metadata_conv() in ffmpeg 0.7
...
It's a no-op and deprecated.
2012-01-04 21:47:56 +01:00
Max Kellermann
76fcf25898
decoder/ffmpeg: use AVIOContext instead of ByteIOContext
2012-01-04 21:47:47 +01:00
Max Kellermann
56257f072b
input/ffmpeg: use the new AVIOContext API
...
URLContext is deprecated.
2012-01-04 21:47:19 +01:00
Max Kellermann
44401158e8
input/ffmpeg: define AV_VERSION_INT if not present
...
Support ancient ffmpeg versions.
2012-01-04 21:47:01 +01:00
Max Kellermann
95b2df8261
output/osx: fix memory leak after AudioUnitSetProperty() failure
2012-01-04 20:47:41 +01:00
Max Kellermann
1ebadf8620
output/osx: implement 32 bit playback
2011-12-24 18:18:42 +01:00
Max Kellermann
9179d9592d
output/osx: allocate the device in enable()
...
Keep the device open as long as the output is enabled, but initialize
it only when playback starts.
2011-12-24 18:15:24 +01:00
Max Kellermann
f208217412
test/run_output: enable and disable the output
2011-12-24 18:15:20 +01:00
Max Kellermann
43c5058682
Merge branch 'v0.16.x'
2011-12-24 18:15:17 +01:00
Max Kellermann
97b4a6b51f
output/osx: clear render buffer when there's not enough data
...
When we don't have enough data, generate some silence, hoping the
input buffer will fill soon. Reducing the render buffer size is not
legal.
2011-12-24 17:59:36 +01:00
Max Kellermann
f405d27c56
output/osx: remove sleep call from render callback
...
Blocking inside the render callback is forbidden, and this sleep call
didn't make any sense.
2011-12-24 17:56:10 +01:00
Max Kellermann
99949c8f6f
command: new command "seekcur"
...
For simpler seeking within current song.
2011-12-24 11:20:02 +01:00
Maarten Sebregts
3a9697adf2
Playlist: fix bug in moving after current song
...
Moving songs using either 'move' or 'moveid' to position -1 (after the
current song) would fail for a song which is just before the current
song.
This patch corrects the check to see if the current song is in the range
to be moved. Since the range is from `start` up to `end` (exclusive) the
check was incorrect, but is now fixed.
2011-12-21 10:29:07 +01:00
Max Kellermann
78c4351e04
output/openal: improve synchronization
...
This plugin's use of the "Timer" library was wrong; it added the same
amount of virtual data in every iteration in _play(), but did not
actually play something. This created an artificial, but useless,
delay. This patch implements the method _cancel(), and implements
hard-coded sleep values. This is only slightly better, but does not
attempt to look sane.
2011-12-13 22:02:05 +01:00
Max Kellermann
0a427890fe
output/openal: move code to inline functions
2011-12-13 22:00:18 +01:00
Max Kellermann
e735abe334
output/openal: use alGetSourcei(AL_BUFFER) to force-unqueue buffers
...
The implementation of cancel() did not work well: you cannot use
alSourceUnqueueBuffers() to unqueue queued buffers, and our function
openal_unqueue_buffers() left the OpenAL library in a rather undefined
state; nothing was supposed to be queued, but the "filled" variable
was not reset.
2011-12-13 21:59:10 +01:00
Max Kellermann
c0070b2f13
output/openal: make attribute "filled" unsigned
2011-12-13 21:58:13 +01:00
Max Kellermann
cfedc6e9b4
output/openal: remove bogus format check from _open()
...
The expression "!format" does not make sense, and cannot occur.
2011-12-13 21:58:09 +01:00
Max Kellermann
b66d7f7e0b
output/fifo: implement output_plugin method delay()
2011-12-13 21:58:07 +01:00
Max Kellermann
e01df06cd7
output/null: implement output_plugin method delay()
2011-12-13 21:58:02 +01:00
Max Kellermann
6584897b69
output/null: don't initialize the "timer" attribute in _init()
...
Unnecessary overhead.
2011-12-13 21:57:59 +01:00
Max Kellermann
aa4f45b9a5
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
2011-12-13 21:57:44 +01:00
Max Kellermann
96ad5b8444
output/openal: force 16 bit playback, as 8 bit doesn't work
...
The OpenAL specification says that AL_FORMAT_MONO8 and
AL_FORMAT_STEREO8 expect unsigned 8 bit samples, but MPD uses unsigned
samples.
2011-12-13 21:32:19 +01:00
Max Kellermann
097e5dfbdc
timer: fix time unit mixup in timer_delay()
...
The local variable was already divided by 1000, and the return value
was being divided by 1000 again - doh! This caused delays in the
httpd output plugin that were too small by three orders of magnitude,
and the buffer was filled too quickly.
2011-12-13 21:02:48 +01:00
Max Kellermann
2ef7ee6ca7
update_walk: print debug message for song_file_load()
2011-12-13 20:26:24 +01:00
Max Kellermann
2685b53b30
configure.ac: suppress warnings in the GLib headers
...
Replace -I with -isystem in GLIB_CFLAGS.
2011-12-13 20:12:49 +01:00
Max Kellermann
533e4fcdad
decoder/mp4ff: work around assertion failure in read() callback
...
This workaround leads to an infinite loop instead of an assertion
failure, but hey, now it's libmp4ff's fault.
2011-12-13 20:08:31 +01:00
Max Kellermann
006b8fa3f0
pcm_buffer: poison the old buffer before returning it
...
Make valgrind find more buffer misuses. Buffer contents are not
persistent, they get invalidated by pcm_buffer_get(), because this
function may allocate a new buffer, but will not copy old data.
2011-12-13 19:55:41 +01:00
Max Kellermann
6a01153ce4
pcm_buffer, output_plugin, ...: include config.h
2011-12-13 19:48:37 +01:00
Max Kellermann
34aab116ae
pcm_buffer: eliminate merge conflict fallout
2011-12-13 19:48:33 +01:00
Denis Krjuchkov
33232face9
winmm_output_plugin: fail if wrong device specified instead of using fallback.
...
Silently choosing default is misleading and can cause hours of investigation.
It's better to fail immediately telling user what is wrong with config.
2011-12-13 19:12:33 +01:00
Denis Krjuchkov
b88b2b3d79
output_init: initialize replay gain filters to NULL in ao_base_init()
...
If output plugin fails to init it will try to call ao_base_finish() immediately,
which segfaults because replay gain filters are not initialized yet and contain
garbage values.
2011-12-13 19:12:30 +01:00
Max Kellermann
744d729dab
input/soup: disable -Wcast-qual to work around libsoup header problem
2011-12-12 10:15:04 +01:00
Avuton Olrich
71b5e43153
configure.ac: Refactor the musepack section
...
It appears the musepack section has not really been reviewed in some
time, many parts unfunctional, others, just unnecessary.
2011-12-12 10:02:27 +01:00
Avuton Olrich
8459f27312
configure.ac: AC_HAVE_LIBRARY has been depreciated, move to AC_CHECK_LIB
2011-12-12 10:02:15 +01:00
Avuton Olrich
7dfbdef505
configure.ac: Update to methods which autoconf is going to
2011-12-12 10:02:05 +01:00
Avuton Olrich
94386374ff
configure.ac: Realphabetize and 80 column the pretty output
2011-12-12 10:02:02 +01:00
Avuton Olrich
f5d3859238
cmdline: Remove duplicate g_free()s
2011-12-12 09:20:00 +01:00
Avuton Olrich
ef39da5973
configure/utils: Add ipv6 support for mingw build
2011-12-12 09:19:34 +01:00
Avuton Olrich
81e8c4bbff
gitignore: Add mpd.service
2011-12-12 09:16:51 +01:00
Avuton Olrich
8ca3642429
Modify version string to post-release version 0.16.7~git
2011-12-01 05:44:53 -08:00
Avuton Olrich
1dc000c06a
mpd version 0.16.6
2011-12-01 05:44:53 -08:00
Max Kellermann
4f093d5b97
Merge branch 'v0.16.x'
...
Conflicts:
Makefile.am
NEWS
configure.ac
src/encoder/flac_encoder.c
src/log.c
src/pcm_buffer.c
2011-11-28 11:56:01 +01:00
Max Kellermann
e1b032cbad
decoder/ffmpeg: work around bogus channel count
...
Initialize the audio_format before calling avcodec_open(), because
avcodec_open() will fill bogus values.
2011-11-28 11:39:21 +01:00
Max Kellermann
6f365c30eb
mapper: check "r" permission on music directory
...
Yet another common support case.
2011-11-28 09:57:21 +01:00
Max Kellermann
718e180423
mapper: check "x" permission on music directory
...
This is a common support case, and hopefully, the new error message
will allow the user to understand the error without requiring support.
2011-11-28 09:51:21 +01:00
Max Kellermann
cead5e5bd7
mapper: fix the bogus "not a directory" error message
...
Use stat() instead of g_file_test() to detect other types of errors,
such as "permission denied".
2011-11-28 09:50:44 +01:00
Max Kellermann
cf15629aea
mapper: move code to check_directory()
2011-11-28 09:35:50 +01:00
Max Kellermann
a727d0bb0b
log: print reason for failure
2011-11-28 09:31:43 +01:00
Max Kellermann
0a218ee56a
encoder/wave: support packed 24 bit samples
...
Convert to padded 24 bit samples, instead of falling back to 16 bit.
2011-11-28 09:25:42 +01:00
Max Kellermann
74beefcaf6
encoder/null: use fifo_buffer instead of pcm_buffer
...
This fixes a buffer corruption bug; pcm_buffer is not designed to be a
persistent buffers, and will discard anything between two consecutive
calls.
2011-11-28 09:23:36 +01:00
Max Kellermann
399a3abefc
encoder/wave: use fifo_buffer instead of pcm_buffer
...
This fixes a buffer corruption bug; pcm_buffer is not designed to be a
persistent buffers, and will discard anything between two consecutive
calls.
2011-11-28 09:23:12 +01:00
Max Kellermann
cee5036aca
encoder/flac: use fifo_buffer instead of pcm_buffer
...
This fixes a buffer corruption bug; pcm_buffer is not designed to be a
persistent buffers, and will discard anything between two consecutive
calls.
2011-11-28 09:21:32 +01:00
Max Kellermann
790823abb4
growing_fifo: new utility library for growing fifo_buffer
2011-11-28 09:11:11 +01:00
Max Kellermann
f546849352
fifo_buffer: add function fifo_buffer_realloc()
...
For growing FIFO buffers.
2011-11-28 07:45:15 +01:00
Max Kellermann
a85af593f1
fifo_buffer: add functions _capacity() and _available()
2011-11-27 21:11:47 +01:00
Max Kellermann
07067f8b95
pcm_buffer: add assertions
2011-11-27 20:17:52 +01:00
Max Kellermann
a1e824ada0
pcm_buffer: move formula to new function align_8k()
2011-11-27 20:17:14 +01:00
Max Kellermann
f5f1bfbef1
pcm_buffer: un-inline pcm_buffer_get()
...
This method is too complex for inlining.
2011-11-27 20:17:12 +01:00
Max Kellermann
cd108ba3aa
directory: rename attribute "stat" to "have_stat"
...
"stat" is a macro on mingw32, which is a pretty stupid thing, and this
commit works around this build failure.
2011-11-27 20:15:25 +01:00
Max Kellermann
2bb5bfa74e
directory: convert "stat" to a bool
2011-11-27 20:11:45 +01:00
Max Kellermann
624e7a447d
stats: explicitly cast "time_t" to "long"
...
Fixes warning on mingw32.
2011-11-27 20:07:14 +01:00
Max Kellermann
37420c342b
io_thread: fix race condition during startup
...
Ensure that the io.thread variable is set before entering the event
loop.
2011-11-27 19:28:26 +01:00
Max Kellermann
ef40e362c9
decoder_api: cancel initial seek when song is not seekable
...
Fixes assertion failure.
2011-11-27 19:19:43 +01:00
Avuton Olrich
ef369c2e2b
Makefile.am: Add PULSE_LIBS for linking the mixer when compiling with pulse
...
Commit 3a3158 introduced a small bug where the pulseaudio mixer would not link
with the main binary in some situations.
2011-11-14 05:09:18 -08:00
Denis Krjuchkov
6452461c39
path: autodetect filesystem encoding on Win32
...
WinAPI explicitly declares filesystem encoding.
It can be determined by GetACP().
Use that instead of Glib routine that always "detects" UTF-8 on Win32,
which is incorrect for MPD case.
2011-10-23 16:29:58 +02:00
Max Kellermann
1e89ca0994
decoder/dsdiff: provide floating point samples
...
Eliminate the conversion to integer samples, the MPD core can do this
now.
2011-10-20 03:01:31 +02:00
Max Kellermann
92bb10eed8
decoder/wavpack: read float samples as-is, don't convert to integer
...
For MPD's new floating point support: when a decoded wavpack file
needs to be resampled, don't convert float to int and back to float.
2011-10-20 02:55:05 +02:00
Max Kellermann
8465c5fe0e
pcm_format: implement conversion to float
2011-10-20 02:55:05 +02:00
Max Kellermann
42e248a8da
pcm_convert: add function pcm_convert_channels()
...
For future internal use.
2011-10-20 02:55:05 +02:00
Max Kellermann
e71a652985
pcm_mix: implement float samples
2011-10-20 02:36:26 +02:00
Max Kellermann
bfef0fbff3
pcm_volume: implement float samples
2011-10-20 02:33:51 +02:00
Max Kellermann
545685bc32
audio_format: basic support for floating point samples
...
Support for conversion from float to 16, 24 and 32 bit integer
samples.
2011-10-20 02:32:39 +02:00
Max Kellermann
13ad2b4dc2
pcm_mix: return bool, make unimplemented format non-fatal
...
Let the caller deal with a failure.
2011-10-20 02:27:41 +02:00
Max Kellermann
d019343017
pcm_volume: pass an "end" pointer instead of a sample count
2011-10-20 02:27:41 +02:00
Max Kellermann
e977ec924c
pcm_volume: remove "default" statement
...
Don't suppress gcc warnings.
2011-10-20 02:24:25 +02:00
Max Kellermann
b7d5652bf6
pcm_volume: "length" is a "size_t", not "int"
2011-10-20 02:24:25 +02:00
Max Kellermann
725e48fce4
pcm_resample: add function pcm_resample_float()
...
A version of the resampler that doesn't need int->float->int
conversion.
2011-10-20 02:24:25 +02:00
Max Kellermann
43816c268b
pcm_format: move "case" code to separate functions
...
Reduce the mess with local variables inside switch{}.
2011-10-20 02:24:25 +02:00
Max Kellermann
72e80db823
pcm_*: add "restrict" keywords
...
Allow more compiler optimizations.
2011-10-20 02:24:25 +02:00
Max Kellermann
7b33c343f8
crossfade: include cleanup
2011-10-20 02:24:25 +02:00
Jonathan Neuschäfer
6d0601b99f
doc/protocol.xml: the replay gain "auto" mode was added in MPD 0.16
2011-10-19 23:59:44 +02:00
Jonathan Neuschäfer
b6e713711d
doc/protocol.xml: document {en,dis}ableoutput's parameter
2011-10-19 23:32:19 +02:00
Max Kellermann
c53edeeb6c
pcm_format: pass an "end" pointer instead of a sample count
2011-10-19 22:36:47 +02:00
Max Kellermann
dfb98417b3
pcm_channels: pass an "end" pointer instead of a sample count
2011-10-19 22:17:30 +02:00
Max Kellermann
9716c3a30e
pcm_{channels,resample}: pass channel count as integer, not uint8_t
...
Reduces number of implicit integer conversions.
2011-10-19 22:14:43 +02:00
Max Kellermann
c4c44c4445
pcm_{channels,format}: add alignment assertions
2011-10-19 22:14:08 +02:00
Max Kellermann
0debe9bd6f
pcm_utils: add function pcm_end_pointer()
2011-10-19 22:13:23 +02:00
Max Kellermann
f1da118a6c
test: add GLib testing compatibility header
...
Didn't compile on GLib < 2.16.
2011-10-19 21:14:14 +02:00
Max Kellermann
c30c46cd5f
configure.ac: define WINVER
...
Ensure that WINVER is defined early enough, so other system headers
won't fall back to their default value. Specifically, this solves a
build failure (-Werror) with mingw-w64 ("WINVER redefined").
2011-10-13 09:23:32 +02:00
Max Kellermann
d394017926
decoder_thread: add missing stdio.h include
2011-10-13 09:09:58 +02:00
Max Kellermann
04525c0259
event_pipe: fix WIN32 regression
...
The event pipe is not a socket, and the patch that introduced
g_io_channel_new_socket() to the event pipe library was wrong.
2011-10-13 09:08:37 +02:00
Max Kellermann
08a0bb756d
pcm_byteswap: use "end" pointer instead of buffer size
2011-10-10 10:24:06 +02:00
Max Kellermann
20c6159c04
pcm_dither: pass an "end" pointer instead of a sample count
...
This is easier and more efficient to loop on, because only two
variables get modified (src and dest).
2011-10-10 10:24:06 +02:00
Max Kellermann
a47e9d1a4b
pcm_pack: pass an "end" pointer instead of a sample count
2011-10-10 10:24:05 +02:00
Max Kellermann
e93dd374a4
pcm_byteswap: use GLib byte swapping macros
...
GLib's macros are implemented with inline assembly, and probably a lot
faster than our naive bit shifting implementation.
2011-10-10 10:24:05 +02:00
Max Kellermann
0847ca4ec2
pcm_{mix,volume}: pass only sample_format to pcm_mix()
...
The other audio_format attributes are not used.
2011-10-10 10:24:05 +02:00
Max Kellermann
572d8d0cc4
test: add unit test for the PCM library
2011-10-10 10:24:05 +02:00
Max Kellermann
c9a57d354d
pcm_buffer: un-inline pcm_buffer_get()
...
This function is too complex for being inlined everywhere.
2011-10-10 10:13:43 +02:00
Max Kellermann
52b77f6e31
input/cdio_paranoia: pass byte order swapping to the PCM "decoder"
...
Send another "magic" MIME type when the byte order must be reversed.
This also fixes byte order issues when big-endian was involved (input
data or host byte order) - that was completely broken.
2011-10-10 10:13:43 +02:00
Max Kellermann
4c9782ee28
decoder/pcm: support reverse byte order
2011-10-10 10:13:43 +02:00
Max Kellermann
26225307d3
decoder_api: convert data to host byte order
2011-10-10 10:13:43 +02:00
Max Kellermann
0129d1e158
pcm_convert: support reverse endian input
2011-10-10 10:13:43 +02:00
Max Kellermann
ece6037a1e
pcm_byteswap: add function with sample_format overload
2011-10-10 10:13:43 +02:00
Max Kellermann
bea678a7cd
audio_format: convert reverse_endian to a "bool"
2011-10-10 10:13:43 +02:00
Max Kellermann
1fb3fbb4de
audio_format: un-inline audio_format_mask_apply()
...
This function is not critical for performance, and the inline
expansion looks too expensive.
2011-10-10 10:13:43 +02:00
Max Kellermann
2c38d19af2
audio_format: add function attributes
...
For better optimization.
2011-10-10 10:13:43 +02:00
Max Kellermann
311e627463
audio: rename audio.[ch] to audio_config.[ch]
2011-10-10 10:13:43 +02:00
Max Kellermann
8e1e36a0d5
doc/doxygen.conf: enable "quiet" mode
2011-10-10 10:13:43 +02:00
Max Kellermann
db0bb425e7
Makefile.am: cue_tag.c belongs to libplaylist_plugins.a
2011-10-09 18:48:20 +02:00
Max Kellermann
e001dd2d45
Makefile.am: remove redundant GLIB_CFLAGS specifications
2011-10-09 18:45:37 +02:00
Max Kellermann
c38772c97f
Makefile.am: add static library libpcm.a
2011-10-09 18:42:32 +02:00
Max Kellermann
3a31589fdd
Makefile.am: generate static library from plugins
...
Compile the plugins only once with the same C flags.
2011-10-09 18:33:02 +02:00
Max Kellermann
460522bb67
configure.ac: enable automake option "silent-rules"
2011-10-09 18:32:57 +02:00
Max Kellermann
176debaf37
Makefile.am: require automake 1.11
...
Prepare for enabling "silent-rules".
2011-10-09 18:32:55 +02:00
Max Kellermann
072f83b240
configure.ac: use $LIBS instead of $MPD_LIBS
2011-10-09 18:29:25 +02:00
Max Kellermann
cbd6770f2f
configure.ac: substitute FAAD_CFLAGS, FAAD_LIBS
...
Don't use MPC_CFLAGS, MPD_LIBS.
2011-10-09 18:25:09 +02:00
Max Kellermann
0c3a7bcf12
configure.ac: substitute MPCDEC_LIBS, MPCDEC_CFLAGS
...
Don't use MPD_LIBS, MPC_CFLAGS.
2011-10-09 17:58:36 +02:00
Max Kellermann
389fbaaca2
configure.ac: add variable BZ2_LIBS
...
Don't use MPD_LIBS.
2011-10-09 17:56:46 +02:00
Max Kellermann
9652efd107
don't define WINVER in *.c files
...
In a C file, that is too late, because _mingw.h defaults to 0x0502,
and ours would be illegal redefintion.
2011-10-09 17:52:56 +02:00
Max Kellermann
f3ea834322
decoder/{pcm,dsdiff}: add missing stdio.h include
2011-10-09 17:40:37 +02:00
Max Kellermann
02a6a46e86
configure.ac: don't append DESPOTIFY_LIBS to MPD_LIBS
...
Use DESPOTIFY_LIBS in Makefile.am instead. Also, use
DESPOTIFY_CFLAGS.
2011-10-09 17:39:24 +02:00
Max Kellermann
75ad90abc7
configure.ac: remove gprof support
...
gprof is obsolete, it's better to use perfcounters in every aspect.
2011-10-09 17:35:19 +02:00
Max Kellermann
4104593180
configure.ac: use AC_SEARCH_LIBS for socket, gethostbyname, exp
...
AC_SEARCH_LIBS allows the function to be present in libc.
2011-10-09 17:31:57 +02:00
Max Kellermann
78e1704122
configure.ac: detect syslog() with AC_SEARCH_LIBS
...
One call to AC_SEARCH_LIBS replaces AC_CHECK_FUNCS and AC_CHECK_LIB.
2011-10-09 17:03:44 +02:00
Max Kellermann
b9e99575ce
Merge commit 'release-0.16.5'
...
Conflicts:
NEWS
configure.ac
2011-10-09 16:32:36 +02:00
Avuton Olrich
fa5e06f95d
Modify version string to post-release version 0.16.6~git
2011-10-09 04:44:51 -07:00
Avuton Olrich
3041409334
mpd version 0.16.5
2011-10-09 04:44:51 -07:00
Max Kellermann
71536eb412
decoder/wavpack: don't call WavpackGetMode() twice
...
Use local variable "is_float".
2011-10-08 15:37:47 +02:00
Max Kellermann
fe77230d84
pcm_convert: fix typo in error message
2011-10-08 15:36:55 +02:00
Max Kellermann
accd262561
audio_format: move code to sample_format_size()
...
Cast to enum sample_format. Without the cast, it's just a plain
integer, and gcc cannot know that a "case" statement is missing.
2011-10-08 15:04:04 +02:00
Max Kellermann
3057d19cdf
pcm_resample_lsr: move common code to lsr_process()
2011-10-08 14:51:26 +02:00
Max Kellermann
8dd83a2cf3
output/roar: move code to _use_audio_format()
2011-10-08 14:51:19 +02:00
Max Kellermann
49b84f9229
db_print: print absolute URI of playlist entries
...
The protocol mandates that playlist URIs are absolute (i.e. full URI
relative to the music directory, not relative to the parent
directory). This adds the parameter "directory" to the "playlist"
visitor method.
2011-10-08 14:51:18 +02:00
Max Kellermann
b43bf4dd74
Merge branch 'v0.16.x'
2011-10-08 14:50:44 +02:00
Max Kellermann
5ed0eb51d1
output/openal: auto-fallback to mono if channel count is unsupported
...
.. instead of failing playback completely.
2011-10-08 14:41:22 +02:00
Max Kellermann
72a1ca3b99
output/alsa: remove "default" case from switch
...
Allow gcc to warn when a new format isn't supported.
2011-10-08 14:41:11 +02:00
Max Kellermann
14424281a0
pcm_resample: add internal function _lsr_init()
...
Let the libsamplerate code initialize itself.
2011-10-08 13:32:29 +02:00
Max Kellermann
2b3fd0d4d3
pcm_resample: one-time global initialization
...
Load the samplerate_converter on MPD startup. Fail if the converter
name is invalid.
2011-10-08 13:14:29 +02:00
Max Kellermann
894b9cfdb9
decoder/dsdiff: add option "lsbitfirst"
...
Defaults to "no", which fixes the noise problems.
2011-10-07 10:10:43 +02:00
Max Kellermann
72ff9bd3e6
configure.ac: disable systemd service by default
...
Defaulting to "with systemd" causes problems for users who install MPD
as an unprivileged user, and it breaks "make distcheck". It looks
like enabling it by default creates too many practical problems for
unexperienced users.
With --with-systemdsystemunitdir (without a parameter), configure.ac
attempts to auto-detect systemd.
2011-10-07 09:56:38 +02:00
Max Kellermann
7ecbb0454f
decoder/dsdiff: add documentation
2011-10-07 06:38:23 +02:00
Max Kellermann
fa7fa2a55f
playlist_song: allow references to songs outside the musicdir
...
When we have an absolute path that's not inside the music directory,
allow loading it anyway, if we're in "secure" mode (i.e. the client is
connected via UNIX socket).
2011-10-06 22:57:14 +02:00
Max Kellermann
5c0576ca55
Merge branch 'v0.16.x'
...
Conflicts:
configure.ac
src/player_control.c
src/player_thread.c
src/playlist_song.c
2011-10-06 22:45:02 +02:00
Jesús Bravo Álvarez
039b354490
playlist_song: fix absolute path support in playlists
...
Right now, a playlist with absolute pathnames can only add songs that
are in the same the directory of the playlist or under it.
If uri is an absolute pathname and base_uri is set,
playlist_check_translate_song() will check that base_uri is a prefix
of uri, excluding every other song in the music directory outside
base_uri.
I think in this case base_uri should be completely ignored (and made
NULL) and uri should just be checked against music root directory.
2011-10-06 22:21:24 +02:00
Max Kellermann
b2f03e76ff
player_thread: add flag "output_open", fixes assertion failure
...
Previously, the condition "defined(play_audio_format)" was used to see
if an output device has been opened, but if the device had failed on
startup, an assertion failure could occur. This patch adds a separate
flag.
2011-10-06 21:22:48 +02:00
Max Kellermann
63b33b6ec5
player_thread: move code to player_open_output()
...
Common function that manages "player" attributes after
audio_output_all_open() has returned.
2011-10-06 20:55:52 +02:00
Max Kellermann
23670795db
output_control: remove unused prototype _close_locked()
2011-10-06 19:51:37 +02:00
Max Kellermann
8ea6c113b5
player_control: auto-start playback when seeking is requested
...
Now that the player thread can handle SEEK commands while not (yet)
playing, we can remove the "pc.state" check from pc_seek().
2011-10-06 00:35:54 +02:00
Max Kellermann
37f026a0a6
player_thread: handle SEEK while not playing
2011-10-06 00:35:53 +02:00
Max Kellermann
f67136df19
decoder_api: call _prepare_initial_seek() in decoder_tag()
...
This checks both conditions: pending and running. Fixes yet another
assertion failure!
2011-10-06 00:35:53 +02:00
Max Kellermann
e07073ff28
decoder_api: move code to _prepare_initial_seek()
...
.. and add a few code comments.
2011-10-06 00:35:53 +02:00
Max Kellermann
64b0ba6da7
decoder_control: add attributes start_ms, end_ms
...
Don't read song.start_ms and song.end_ms, let the player thread manage
this logic instead.
2011-10-05 23:15:22 +02:00
Max Kellermann
99d4ae0c1a
decoder_api: don't copy tag to pipe during initial seek
...
Fixes one more assertion failure.
2011-10-05 22:54:30 +02:00
Max Kellermann
f185b35088
decoder_api: clear initial_seek_running on error
...
Fixes possible assertion failure.
2011-10-04 22:29:31 +02:00
Max Kellermann
4e909f9411
decoder/dsdiff: new decoder plugin
...
Doesn't seem to work yet, getting just noise from a test file.
Seeking isn't implemented yet.
2011-10-04 21:41:03 +02:00
Max Kellermann
99f49e266c
Makefile.am: build the "dsd2pcm" program
2011-10-04 21:40:59 +02:00
Max Kellermann
0458211ebc
dsd2pcm/noiseshape: fix typo in C++ check
2011-10-04 21:40:56 +02:00
Max Kellermann
8a7b9d9f45
dsd2pcm: fix prototypes
...
Fixes gcc warnings.
2011-10-04 21:40:31 +02:00
Sebastian Gesemann
3fcf463f9e
import dsd2pcm_src.zip
...
[this is the code from dsd2pcm_src.zip, published on a forum by
Sebastian Gesemann. Upon request, he has given permission to
redistribute and modify his code, without referring to a specific
license. - mk]
2011-10-04 21:34:30 +02:00
Max Kellermann
f77cd63286
audio_format: add constant MAX_CHANNELS
...
To be used in fixed-size arrays.
2011-10-04 20:41:32 +02:00
Max Kellermann
2378c2d754
configure.ac: add automake conditional HAVE_CXX
2011-10-03 19:28:54 +02:00
Max Kellermann
bbdb4a67e1
test/run_decoder: initialize GThread
...
Needed for the I/O thread.
2011-10-03 19:28:54 +02:00
Steven Blackburn
21851c0673
Add support for streaming to a DLNA client
...
The Naim Uniti does not appear to support icecast-style streaming of FLAC
music but does support the codec from a DLNA server. This change looks for
"transferMode.dlna.org: Streaming" in the HTTP request header and responds
with something the Uniti (and hopefully other DLNA clients) accepts.
The only difference in the DLNA streaming mode is the reponse header and
that icecast metadata is disabled. If a client request indicates both modes
are supported, the DLNA mode is preferred (as the Uniti says it supports
both but then rejects a FLAC ICY stream).
Note: This change may be specific to Naim equipment (the only device it was
tested on). E.g. the hardcoding of Content-Length which works but is not a
logically correct value. The change should be backwards-compatible, so
only those clients requesting a DLNA stream will see any difference.
2011-09-30 08:53:09 +02:00
Miklos Vajna
83f6498aac
Install systemd service file if systemd is available
2011-09-30 08:37:36 +02:00
Max Kellermann
7e219c362c
Merge branch 'v0.16.x'
...
Conflicts:
src/player_thread.c
2011-09-22 00:27:34 +02:00
Max Kellermann
525a791987
decoder_api: emulate SEEK command for initial seek to CUE track
...
When playing a CUE track, the player thread waited for the decoder to
become ready, and then sent a SEEK command to the beginning of the CUE
track. If that is near the start of the song file, and the track is
short enough, the decoder could have finished decoding already at that
point, and seeking fails.
This commit makes this initial seek more robust: instead of letting
the player thread deal with the difficult timings, let the decoder API
emulate a SEEK command, and return it to the decoder plugin, as soon
as the plugin finishes its initialization.
2011-09-22 00:04:48 +02:00
Max Kellermann
fb19210cfd
decoder_internal.h: more API documentation
2011-09-22 00:04:20 +02:00
Jonathan Neuschäfer
203f48d1fd
protocol: drop G_GNUC_PURE from client_message_dup
2011-09-21 17:56:07 +02:00
Jonathan Neuschäfer
371c82b2bf
utils: mark sockaddr_to_string() as G_GNUC_MALLOC
2011-09-21 17:56:06 +02:00
Dan McGee
8176880173
Simplify setsockopt() casting workaround
...
On Win32, the third setsockopt parameter has type (char *) while on POSIX
systems it is (void *). However, given that it is a no-op cast to go from a
char pointer to a void pointer, we can cast to a char pointer (with a
possible const modifier) on all platforms and satisfy the compiler.
Signed-off-by: Dan McGee <dan@archlinux.org >
2011-09-21 17:54:44 +02:00
Jonathan Neuschäfer
b0b2c5b3e0
utils: uri.h: fix a typo: "schema"
2011-09-21 17:47:28 +02:00
Max Kellermann
29742d23d3
configure.ac: fix --enable-id3 help string
2011-09-20 22:18:42 +02:00
Max Kellermann
533a6b0240
tcp_connect: generic library for establishing TCP connections
2011-09-20 21:27:17 +02:00
Max Kellermann
0c0400b6fc
io_thread: add function _timeout_add()
...
Same as _timeout_add_seconds(), but this one has millisecond
resolution.
2011-09-20 21:27:17 +02:00
Max Kellermann
2e83af7c21
io_thread: _timeout_add_seconds() returns GSource*
...
The numeric ID isn't so useful.
2011-09-20 21:26:30 +02:00
Max Kellermann
a3f7947ad2
server_socket: use resolve_host_port() instead of getaddrinfo()
...
Allow port specification in "bind_to_address" settings.
2011-09-20 21:15:22 +02:00
Max Kellermann
7d9d459ac2
resolver: add function resolve_host_port()
2011-09-20 21:15:05 +02:00
Max Kellermann
3ea1073809
socket_util: move sockaddr_to_string() to resolver.c
2011-09-20 08:49:36 +02:00
Max Kellermann
76a959a578
rtsp_client, output/raop: use close_socket() instead of close()
2011-09-20 08:48:48 +02:00
Max Kellermann
f43873dc5f
tcp_socket, udp_server: use g_io_channel_new_socket()
2011-09-20 08:47:42 +02:00
Max Kellermann
921553d7bb
Merge branch 'v0.16.x'
2011-09-20 08:47:06 +02:00
Max Kellermann
c476819cb1
fd_util: add function close_socket()
...
Wrap close(), use closesocket() on WIN32/WinSock.
2011-09-20 08:38:58 +02:00
Max Kellermann
77a56c7c5a
fd_util: check HAVE_INOTIFY_INIT in header
...
Don't provide the prototype if inotify_init() was not detected.
2011-09-20 08:38:17 +02:00
Max Kellermann
46deb7ca82
fd_util: include check.h, verify config.h was included
2011-09-20 08:38:08 +02:00
Max Kellermann
b03f9ece05
glib_socket.h: wrap g_io_channel_*_new() calls portably
...
The server_socket library (used by the httpd output plugin) didn't
check for WIN32, that's fixed now.
2011-09-20 08:35:25 +02:00
Dan McGee
27946a981f
Set socket TCP keepalive option on incoming connections
...
If a connected host disappears without our knowledge, as can happen over
wireless or a hibernating machine, we continue to hold the port open waiting
for messages. Because we never try to send anything down this now-broken
pipe, the connection will sit idle taking up a slot in our allowed incoming
connections list.
If enough of these happen, an unintended Denial of Service takes place,
where all connection slots are filled with now-broken, never ending
connections. Setting the TCP keepalive option at least allows these to time
out after the default two hours, which is sufficient in the non-malicious
case.
Signed-off-by: Dan McGee <dan@archlinux.org >
2011-09-19 17:11:09 +02:00
Max Kellermann
74617389c8
output_plugin: the plugin allocates the audio_output object
...
Pass audio_output objects around instead of void pointers. This will
give some more control to the plugin, and prepares for non-blocking
audio outputs.
2011-09-19 09:41:21 +02:00
Max Kellermann
1d8840412f
configure.ac: add option --enable-solaris-output
...
Allow enabling the plugin explicitly without running Solaris, to test
the build.
2011-09-19 09:39:35 +02:00
Max Kellermann
df1152ee0f
configure.ac: fix solaris result display
...
Wrong variable name.
2011-09-19 09:39:05 +02:00
Max Kellermann
b4a8b8c0d4
Makefile.am: rename SPARSE_SOURCES to SPARSE_SRC
...
Work around automake warning.
2011-09-19 08:03:31 +02:00
Max Kellermann
ffa9f4b47f
output/roar: check return values
...
Fixes gcc warnings.
2011-09-18 12:07:06 +02:00
Max Kellermann
667e22bbc7
output/roar: unknown volume is -1, not 0
2011-09-18 12:06:46 +02:00
Max Kellermann
d4d838c8bb
output/roar: move code to roar_cancel_locked() and others
...
Wrap the locking code.
2011-09-18 11:51:18 +02:00
Max Kellermann
c61a889c86
output/roar: use GLib memory allocation functions
...
GLib has a built-in OOM handler.
2011-09-17 20:12:45 +02:00
Max Kellermann
567fe89a77
output/roar: use config_get_block_string() for temporary
2011-09-17 20:11:51 +02:00
Max Kellermann
950772ab8a
output/roar: reorder methods
2011-09-17 20:10:26 +02:00
Max Kellermann
0bd0e2a3ec
output: rename plugin variables
...
Consistent naming.
2011-09-17 20:04:18 +02:00
Max Kellermann
47774ce882
Merge branch 'v0.16.x'
2011-09-17 19:59:52 +02:00
Max Kellermann
3c9bcdd347
output: per-plugin header
...
Move the "extern" declarations from output_list.c, for more type
safety.
2011-09-17 19:51:41 +02:00
Max Kellermann
3934d2d30c
output/pulse: don't expose internal struct in public header
...
Provide _lock() and _unlock() to wrap all accesses from the mixer
plugin.
2011-09-17 19:50:36 +02:00
Max Kellermann
423ce9557a
output/raop: don't expose internal structs in public header
2011-09-17 19:44:30 +02:00
Max Kellermann
947848ebf6
output/roar: export volume methods
...
Use these instead of exposing the internal roar_t struct.
2011-09-17 19:33:51 +02:00
Max Kellermann
5e22fe488e
output: rename plugin source files
2011-09-17 08:54:50 +02:00
Max Kellermann
c666cf1c44
output/pulse: move code to _setup_stream()
2011-09-17 08:53:53 +02:00
Tim Harder
79435dbdec
decoder/audiofile: include stdio header for SEEK_* defines
...
The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0.
2011-09-17 07:33:42 +02:00
Max Kellermann
27206368da
output/pulse: improve locking
...
Always lock the main loop when operating on PULSE objects. Document
this.
2011-09-17 07:30:59 +02:00
Max Kellermann
2be245b75e
input/soup: wait some more before resuming the stream
2011-09-16 21:50:05 +02:00
Max Kellermann
17927f5c26
input/soup: improve error messages
...
Copy the reason_phrase from the SoupMessage, and check for transport
errors in the session callback.
2011-09-16 21:50:05 +02: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
Max Kellermann
29241c4f83
input_plugin: add method check()
...
To check for errors without reading. The decoder thread wants to do
that, before it passes the input stream to the plugin.
2011-09-16 21:22:02 +02:00
Max Kellermann
6f655eb9b9
input/{soup,curl}: free unused postponed_error
...
Fix memory leak.
2011-09-16 21:13:25 +02:00
Max Kellermann
65dfd90141
input/soup: move libsoup calls to the I/O thread
...
libsoup's asynchronous API is not thread safe. By moving the calls
into the I/O thread, several crash bugs will be fixed.
2011-09-16 20:34:47 +02:00
Max Kellermann
59abdbd2dd
input/soup: wait for _cancel_message() to complete
...
Add the "complete" attribute, and set it in _session_callback().
_close() waits for it to become true.
2011-09-16 20:34:47 +02:00
Max Kellermann
a6d6873856
input/soup: return real GErrors to the caller
...
Add attribute postponed_error, pass this GError to the caller.
2011-09-16 11:36:09 +02:00
Max Kellermann
e99df3a3be
input/soup: set the "ready" flag on failure
...
Fix deadlock.
2011-09-16 11:35:02 +02:00
Max Kellermann
8b657255cc
input/soup: remove redundant flag "ready"
...
We'll add proper locking now, and there's no need to carry this
duplicate flag.
2011-09-16 11:34:50 +02:00
Max Kellermann
0e1dc79321
input/soup: report failure in _read()
...
To report failures to callers who don't use _buffer().
2011-09-16 11:30:56 +02:00
Max Kellermann
0ef15e5fac
input/soup: unlock before cancelling the soup message
...
Avoid recursive deadlock in _session_callback().
2011-09-16 11:30:30 +02:00
Max Kellermann
9ea8a840a9
decoder_api: remove the loop from decoder_read()
...
This was useless, because input_stream_read() blocks until data is
available. Calling it in a loop doesn't make sense.
2011-09-16 09:15:10 +02:00
Max Kellermann
7b88089593
decoder_api: move code to decoder_check_cancel_read()
2011-09-16 09:15:10 +02:00
Max Kellermann
b513943893
input/curl: wait some more before resuming the stream
...
Pausing and resuming after every little chunk adds lots of overhead.
Add a lower level for resuming the stream.
2011-09-16 09:14:29 +02:00
Max Kellermann
edffc56600
input/curl: clear the "paused" flag before resuming
...
curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into
pause again.
2011-09-16 09:11:15 +02:00
Max Kellermann
856b0e6886
input/curl: remove _schedule_update()
...
Call _update_fds() directly. This is possible because it's only
called from within the I/O thread.
2011-09-16 09:11:09 +02:00
Max Kellermann
bf1eb46b87
input/curl: unlock the mutex for io_thread_call()
...
Fix deadlock.
2011-09-16 09:10:39 +02:00
Max Kellermann
7e27d660e2
test/test_queue_priority: work around "set but not used" warning
2011-09-16 09:10:39 +02:00
Max Kellermann
53174ea45f
input/soup: fix "unused local variable" warnings
2011-09-16 09:10:33 +02:00
Max Kellermann
87b624f5d5
Merge branch 'v0.16.x'
2011-09-16 07:52:39 +02:00
Max Kellermann
443e96381a
configure.ac: disable assertions in the non-debugging build
...
Add -DNDEBUG to AM_CPPFLAGS.
2011-09-16 07:41:41 +02:00
Max Kellermann
1cbba4fc59
input/curl, output/pulse: fix "unused local variable" warnings
2011-09-16 07:41:41 +02:00
Max Kellermann
344b6dd179
configure.ac: enable -Werror for C++
2011-09-16 07:38:00 +02:00
Max Kellermann
d8c829fa0c
configure.ac: pass AM_CXXFLAGS, AM_CPPFLAGS to Makefile.am
2011-09-16 07:35:46 +02:00
Max Kellermann
e1efc71ad3
input_stream: add "nonnull" attributes
2011-09-15 22:40:44 +02:00
Max Kellermann
f804a739b1
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
2011-09-15 21:48:33 +02:00
Max Kellermann
2ed870c854
decoder/ffmpeg: flush the codec after seeking
...
Let the codec start with fresh buffers. This should fix the remaining
seeking issues.
2011-09-15 21:41:25 +02:00
Max Kellermann
ce35ba9ac9
decoder/ffmpeg: explicitly specify the current stream for seeking
...
Use AVStream.time_base to convert the decoder_seek_where() value, and
pass the current stream number to av_seek_frame().
2011-09-15 21:35:29 +02:00
Max Kellermann
724a59aaf7
decoder/ffmpeg: don't require key frame for seeking
...
Use flag AV_TIME_BASE.
2011-09-15 21:32:29 +02:00
Max Kellermann
42d8c2981f
decoder/ffmpeg: higher precision timestamps
2011-09-15 21:30:27 +02:00
Max Kellermann
9aa91e0f17
decoder/ffmpeg: move formula to time_from_ffmpeg()
2011-09-15 21:23:48 +02:00
Max Kellermann
5aabee8996
decoder/ffmpeg: add local variable "av_stream"
...
Code simplification.
2011-09-15 21:14:53 +02:00
Max Kellermann
48a84ca23e
input/rewind: copy the MIME type only once
...
Reduce heap usage by reducing the number of malloc() / free() calls.
2011-09-15 20:24:15 +02:00
Max Kellermann
8751783a1b
input/curl: per-request mutex/cond
...
The global data structures are now lock-free, because they are
accessed only from the I/O thread. By using per-request locks, we
have finer grained locking, preparing for locks shared with the
client.
2011-09-15 10:24:50 +02:00
Max Kellermann
3a2ec50d5f
input/curl: move all libCURL calls to the I/O thread
...
This adds some overheads for indirect calls to the I/O thread, but
reduces the amount of global locks. Next step will be switching to
per-request locks.
2011-09-15 09:48:36 +02:00
Max Kellermann
ce9aeed4cb
input/file: return NULL instead of "false"
2011-09-15 09:48:36 +02:00
Max Kellermann
f2be6432a9
Makefile.am: allow out-of-tree sparse call
2011-09-15 09:48:36 +02:00
Max Kellermann
e96f8c0444
input/curl: don't set "ready" on _easy_free()
...
Move the assignment to _request_done(), right before the GCond is
signalled. This might fix spurious wakeups.
2011-09-15 09:27:16 +02:00
Max Kellermann
2bf3bc3e10
input/curl: add assertions on io_thread_inside()
2011-09-15 09:27:15 +02:00
Max Kellermann
28143f86f9
input/curl: merge _request_abort() into _request_done()
...
This is a trivial function. Merge some duplicate code, e.g. the
g_cond_broadcast() call.
2011-09-15 09:27:13 +02:00
Max Kellermann
76ec3d3248
udp_server: disable -Wmissing-field-initializers
2011-09-15 09:25:53 +02:00
Max Kellermann
d0c85a5a96
gcc.h: add macro GCC_CHECK_VERSION
2011-09-15 09:22:48 +02:00
Max Kellermann
46ed717af4
input/curl: API documentation fix
2011-09-15 06:44:20 +02:00
Max Kellermann
ad37c88f80
input_plugin: add method update()
...
Update the struct attributes, important for facades like the "rewind"
plugin. To replace buffer().
2011-09-14 22:25:29 +02:00
Max Kellermann
8c6e8a6eb8
input_internal: add assertions
2011-09-14 22:06:57 +02:00
Max Kellermann
dd33317f45
input_stream: move input_stream_init(), _deinit() to _internal.c
2011-09-14 22:01:55 +02:00
Max Kellermann
c344d63fb3
decoder_internal: don't call input_stream_buffer()
...
This is not necessary since all relevant input plugins have been moved
to the I/O thread, and there is no remaining useful buffer()
implementation. This also fixes a busy loop when playing radio.
2011-09-14 09:41:27 +02:00
Max Kellermann
62557f4d6b
test/read_tags: initialize the tag_pool library
2011-09-13 22:46:47 +02:00
Max Kellermann
9c46cc4ea0
test/read_tags: call g_thread_init()
...
Needed for the I/O thread.
2011-09-13 22:42:21 +02:00
Max Kellermann
a236a439cc
db_print: move code to function db_selection_print()
...
Use it in handle_lsinfo(), and eliminate some duplicate code.
2011-09-13 22:09:37 +02:00
Max Kellermann
c779e2674a
db_visitor: add method playlist()
2011-09-13 22:02:37 +02:00
Max Kellermann
a94d4be466
db_plugin: add method visit()
2011-09-13 21:47:00 +02:00
Max Kellermann
b7d2d4cfe8
database: don't allow uri==NULL
...
Add nonnull attributes and fix all callers.
2011-09-13 21:39:07 +02:00
Max Kellermann
a6c797ee4b
gcc.h: add macro gcc_nonnull
2011-09-13 21:38:27 +02:00
Max Kellermann
3e40b2249f
gcc.h: change "mpd_" prefix to "gcc_"
...
This is specific to gcc, not to mpd.
2011-09-13 21:37:33 +02:00
Max Kellermann
2fe1b5034d
db_plugin: add method get_song()
...
New db_get_song() implementation.
2011-09-13 21:01:35 +02:00
Max Kellermann
b4430839a3
database: generate GError when database is disabled
2011-09-13 20:54:27 +02:00
Max Kellermann
412cf974a4
directory: don't visit "self" in _walk()
...
Let the caller decide if the current directory should be visited.
2011-09-13 20:44:35 +02:00
Max Kellermann
3fc6beeff0
locate: remove unused function locate_item_new()
2011-09-13 20:44:00 +02:00
Max Kellermann
2ff35c8bfa
directory: don't require a "directory" visitor
...
.. to recurse. A visitor may not have one, but still be interested in
a recursive search.
2011-09-13 20:44:00 +02:00
Max Kellermann
169db88c20
database: add struct db_visitor
...
Use this struct for db_walk().
2011-09-13 19:37:28 +02:00
Max Kellermann
ca419c84b8
stored_playlist: return GError, code is playlist_result
...
Improve error reporting and handling. command.c gets the new function
print_error(), which sends a GError to the client.
2011-09-11 07:57:50 +02:00
Max Kellermann
aede71b1dc
playlist: move enum playlist_result to playlist_error.h
...
Reduce header dependencies.
2011-09-11 07:55:51 +02:00
Max Kellermann
14d573cbf1
playlist: move PLAYLIST_COMMENT to stored_playlist.c
...
Only used there.
2011-09-11 07:55:19 +02:00
Max Kellermann
7819aa6b20
db_plugin: introducing a plugin API for the song database
...
First draft, not really pluggable currently - hard-coded to use the
"simple" plugin, and calls several of its internal functions.
The API is very simple currently, all searches are still performed
over the root "directory" object. Future changes to the API will move
those search implementations into the plugin, to allow more efficient
implementations, or implementations that don't have the whole tree in
memory all the time.
2011-09-10 07:58:43 +02:00
Max Kellermann
7cc6b63aac
database: move code to db_save.c
2011-09-10 07:48:05 +02:00
Max Kellermann
4af6362751
directory_save: pass const pointer to _save()
2011-09-10 07:48:05 +02:00
Max Kellermann
d54075197f
tag_internal: add missing tag.h include
...
For TAG_NUM_OF_ITEM_TYPES.
2011-09-10 07:48:05 +02:00
Max Kellermann
5cce56199b
conf: export config_param_free()
2011-09-09 23:59:46 +02:00
Max Kellermann
3cc12817f6
conf: _get_next_param() returns a const pointer
...
No writers.
2011-09-09 23:59:46 +02:00
Max Kellermann
68875ba600
database: return GError on failure
2011-09-09 23:28:27 +02:00
Max Kellermann
c345c5ebae
.gitignore: add doxygen.conf
2011-09-09 23:21:20 +02:00
Max Kellermann
2119a16e24
.gitignore: add doxygen.conf
2011-09-09 23:04:32 +02:00
Max Kellermann
9f5c938ff3
conf: add config_dup_block_path()
2011-09-09 23:01:22 +02:00
Max Kellermann
b42a8d2364
utils: parsePath() returns GError on failure
...
Better error messages.
2011-09-09 22:55:57 +02:00
Max Kellermann
61fc01e79e
utils: pass a const string to parsePath()
...
Remove the slash hack, allocate memory for the user name.
2011-09-09 22:55:57 +02:00
Max Kellermann
cceaec1d74
utils: eliminate local variable "pos"
...
Just advance the "path" pointer.
2011-09-09 22:55:57 +02:00
Max Kellermann
8e5f9c8160
conf: turn config_get_path() into config_dup_path()
...
config_get_path() was somewhat flawed, because it pretended to be a
function, when it really had a side effect. The second flaw was that
it did not return the parser error, instead it aborted the whole
process, which is bad style. The new function returns a duplicated
(modified) string that must be freed by the caller, and returns a
GError on failure.
2011-09-09 22:55:57 +02:00
Max Kellermann
c620fd42f4
glib_compat.h: emulate g_prefix_error()
2011-09-09 22:55:57 +02:00
Max Kellermann
2a859f870a
log: print detailed errno message on open() failure
2011-09-09 21:53:42 +02:00
Max Kellermann
b680753db8
log: return GError on initialization failure
2011-09-09 21:53:42 +02:00
Max Kellermann
35af940166
conf: get_block_param() returns a const pointer
...
No caller needs to write.
2011-09-09 21:36:41 +02:00
Max Kellermann
bc0fec0afe
conf: move duplicate check to _read_name_value()
...
config_add_block_param() cannot fail, which makes it easier to use.
2011-09-09 21:36:41 +02:00
Max Kellermann
e3eca82cc3
conf: move code to config_read_name_value()
...
Reduce indent.
2011-09-09 21:36:35 +02:00
Max Kellermann
e7651d0d0f
conf: add gcc optimization attributes
2011-09-09 21:01:19 +02:00
Max Kellermann
5cf4ce9318
pcm_format: fix 32-to-24 bit conversion (the "silence" bug)
...
D'oh, we were reading 16 bit integers instead of 32 bit integers!
That caused silence when trying to play a 32 bit input file on a 24
bit sound card (e.g. USB sound chips with 24 bit packed samples).
2011-09-08 23:47:32 +02:00
Max Kellermann
6a6f28668f
dbUtils: move code to db_print.c
2011-09-06 00:03:51 +02:00
Max Kellermann
dadf1339b5
dbUtils: pass player_control to findAddIn()
...
Allow calling findAddIn() without a client object.
2011-09-05 23:14:39 +02:00
Max Kellermann
c2c4228722
Merge commit 'release-0.16.4'
...
Conflicts:
NEWS
configure.ac
2011-09-02 06:38:01 +02:00
Avuton Olrich
5469941f2b
Modify version string to post-release version 0.16.5~git
2011-09-01 17:58:29 -07:00
Avuton Olrich
e888c9e827
mpd version 0.16.4
2011-09-01 17:58:28 -07:00
Max Kellermann
3d3bca5338
decoder/oggflac: delete this obsolete plugin
...
libOggFLAC has been deprecated for 5 years now, and we havn't been
testing it for a long time. Let's delete it.
2011-09-01 19:29:04 +02:00
Max Kellermann
6a3008d7ff
Merge branch 'v0.16.x'
...
Conflicts:
configure.ac
src/output_control.c
2011-09-01 19:19:42 +02:00
Max Kellermann
2556449b36
configure.ac: fail if Vorbis was enabled explicitly, but not found
...
.. and a minor tweak for libFLAC+libogg detection.
2011-09-01 19:02:23 +02:00
Max Kellermann
446f9973cc
configure.ac: fail if FLAC was enabled explicitly, but not found
2011-09-01 19:02:22 +02:00
Max Kellermann
596f36bb78
output/osx: don't drain the buffer when closing
...
Eliminate an unnecessary source of deadlocks.
2011-09-01 18:21:46 +02:00
Max Kellermann
e7abdab58d
output/osx: signal the GCond while mutex is locked
2011-09-01 18:21:46 +02:00
Max Kellermann
13cdc9a9f8
configure.ac: auto-detect libmad without pkg-config
...
The pkg-config file was added by the Debian package maintainers, and
unfortunately, the rest of the world doesn't have it.
2011-09-01 11:06:08 +02:00
Max Kellermann
a1b8806422
configure.ac: fail if libid3tag was enabled explicitly, but not found
...
Add M4 function MPD_AUTO_PKG_LIB for pkg-config with AC_CHECK_LIB
fallback.
2011-09-01 10:58:36 +02:00
Max Kellermann
e635d47912
configure.ac: use MPD_AUTO_PKG to detect avahi
...
Don't abort the configure script when avahi could not be
auto-detected. It previously did, because there was no custom "fail"
action for PKG_CHECK_MODULES.
2011-09-01 10:11:23 +02:00
Max Kellermann
53ac72a878
Makefile.am: use AVAHI_CFLAGS, AVAHI_LIBS
...
Don't add those to MPD_CFLAGS / MPD_LIBS.
2011-09-01 10:09:46 +02:00
Max Kellermann
2be6184c8d
output_all: move _lock_signal() to output_control.c
...
Better name, better documentation.
2011-09-01 07:59:15 +02:00
Max Kellermann
8b0b4ff086
output_thread: reimplement CANCEL synchronization
...
The output thread could hang indefinitely after finishing CANCEL,
because it could have missed the signal while the output was not
unlocked in ao_command_finished().
This patch removes the wait() call after CANCEL, and adds the flag
"allow_play" instead. While this flag is set, playback is skipped.
With this flag, there will not be any excess wait() call after the
pipe has been cleared.
This patch fixes a bug that causes mpd to discontinue playback after
seeking, due to the race condition described above.
2011-09-01 07:13:21 +02:00
Max Kellermann
60f7ff3de5
output/pulse: reset callbacks before closing stream/context
...
Fixes assertion failure when a stream callback is invoked too late
after a format change.
2011-08-31 21:01:34 +02:00
Max Kellermann
e76c752987
output/pulse: add function _delete_stream()
...
Merge common code.
2011-08-31 21:01:22 +02:00
Max Kellermann
042c1abc6e
output/pulse: use _delete_context()
...
Eliminate duplicate code.
2011-08-31 20:58:36 +02:00
Max Kellermann
1401621913
output/raop: remove Audio-Jack-Status check
...
The value of this is not used, the code is commented out - let's get
rid of it.
2011-08-31 20:19:36 +02:00
Max Kellermann
3c034b0a0c
output/raop: remove empty function raopcl_stream_connect()
2011-08-31 20:17:24 +02:00
Max Kellermann
395191bd75
rtsp_client: use the I/O thread
...
Make the code portable.
2011-08-31 08:32:09 +02:00
Max Kellermann
ec7d8fb6bd
udp_server: don't use MSG_DONTWAIT on WIN32
...
Doesn't exist on mingw32.
2011-08-31 08:32:09 +02:00
Max Kellermann
062948b110
mixer/raop: include cleanup
2011-08-31 08:31:26 +02:00
Max Kellermann
7f3dc5f040
output/raop: cast sendto() parameter to void pointer
...
Fix compilation on mingw32.
2011-08-31 08:30:26 +02:00
Max Kellermann
dd0798a317
rtsp_client: use g_usleep()
...
usleep() is not portable.
2011-08-31 08:30:26 +02:00
Max Kellermann
9209ccfa40
rtsp_client: allow parameter "kd" to be NULL
...
When the caller isn't interested in the values.
2011-08-31 08:16:55 +02:00
Max Kellermann
2525d32e17
rtsp_client: don't wait if packet is over due
...
Check if the time difference is negative. That would have caused
sleeping forever.
2011-08-31 07:47:01 +02:00
Max Kellermann
f3ac8a7cd9
io_thread: allow _call() from inside the thread
2011-08-31 07:33:07 +02:00
Max Kellermann
f3d95f70e2
rtsp_client: free attribute "kd" in _close()
...
Fix yet another memory leak.
2011-08-31 07:13:42 +02:00
Max Kellermann
57526067f5
output/raop: move code to raop_session_new()
...
.. and fix a few memory leaks.
2011-08-30 22:36:54 +02:00
Max Kellermann
0545bab35d
valgrind.suppressions: more OpenSSL and other suppressions
2011-08-30 22:33:19 +02:00
Max Kellermann
293836494d
output_control: move code to audio_output_destruct()
...
.. and destruct the output object properly in test/run_output.
2011-08-30 22:28:15 +02:00
Max Kellermann
ae8bda190e
test/run_output: clean up after open failure
2011-08-30 22:20:32 +02:00
Max Kellermann
34d9d8abd4
output/raop: merge raopcl_close() into _finish()
...
.. and fix a double free bug.
2011-08-30 22:20:32 +02:00
Max Kellermann
bd67e986f4
output/raop: free the raop_data object in finish()
2011-08-30 22:02:55 +02:00
Max Kellermann
e587518d85
output/raop: remove from the session when opening fails
2011-08-30 22:00:19 +02:00
Max Kellermann
210b6c38bd
output/raop: move code to raop_output_remove()
2011-08-30 21:56:57 +02:00
Max Kellermann
9592c0b466
rtsp_client: increment "dp" after terminating the string
...
This fixes a bug that caused all values to be an empty string.
2011-08-30 21:33:02 +02:00
Max Kellermann
a33537b2b9
rtsp_client: simplify whitespace elimination
...
Just move a pointer, don't call strlen() in every iteration.
2011-08-30 21:31:46 +02:00
Max Kellermann
81d5c9757c
rtsp_client: check "new_kd" instead of "i"
...
Eliminate the redundant local variable "i".
2011-08-30 21:30:06 +02:00
Max Kellermann
f34124a50b
rtsp_client: move "new_kd" out of the loop
...
This must persist iterations.
2011-08-30 21:29:19 +02:00
Max Kellermann
74a39c715b
ntp_server: move code to udp_server.c
2011-08-30 07:39:05 +02:00
Max Kellermann
195496333b
output/raop: move RTSP client code to rtsp_client.c
...
Restore some of the original file structure from from raop_play.
2011-08-29 11:27:08 +02:00
Max Kellermann
9ccaa90439
ntp_server: use the I/O thread
2011-08-29 11:23:51 +02:00
Max Kellermann
4733c5fef0
io_thread: add function io_thread_quit()
2011-08-29 10:25:04 +02:00
Max Kellermann
a97ddc8cb9
test/run_ntp_server: quit on SIGINT or SIGTERM
...
Clean up the process before exiting.
2011-08-29 10:18:54 +02:00
Max Kellermann
59a5b000e0
ntp_server: check for select() failures
...
Fix freeze after signal was handled.
2011-08-29 10:18:54 +02:00
Max Kellermann
d49a2ccb08
ntp_server: fix socket types
...
Cast recvfrom(), sendto() buffers to "void*" to avoid "char*" /
"unsigned char*" confusion. Use ssize_t for the return value, and
socklen_t for the socket address size.
2011-08-29 09:52:51 +02:00
Max Kellermann
4a75acb46c
io_thread: add function io_thread_run()
2011-08-29 09:52:03 +02:00
Max Kellermann
453368078b
configure.ac: add OpenSSL check for RAOP output plugin
...
Auto-enable the plugin when OpenSSL was found.
2011-08-29 09:39:03 +02:00
Max Kellermann
6e3b643bdf
ntp_server: add debug program "run_ntp_server"
2011-08-29 09:39:03 +02:00
Max Kellermann
a769352a74
output/raop: fallback for g_set_error_literal()
...
This function was added in GLib 2.18. Make the plugin compatible with
older GLib versions.
2011-08-29 09:39:03 +02:00
Max Kellermann
8a63c27925
output/raop: move NTP code to separate library
2011-08-28 16:44:12 +02:00
Jonathan Neuschäfer
310895f060
rename 'Timer' to 'struct timer'
2011-08-27 11:30:34 +02:00
Jonathan Neuschäfer
4428894aba
let doxygen find the source code
...
[Unfortunately,] @top_srcdir@ is replaced by the package's top-level
directory relative to the directory of the .in file being processed,
e.g. if you unpack the MPD source to /usr/src/mpd, and build it in the
same directory, @top_srcdir@/src/ in doc/doxygen.conf.in will be re-
placed by "../src/", and, as doxygen is invoked from the top directory,
is will expect the source code in /usr/src/src/, which is obviously
wrong.
To work around this problem, this patch changes @top_srcdir@ to
@abs_top_srcdir@, which expands to the absolute path of the top source
directory[1].
[1] http://www.gnu.org/s/hello/manual/autoconf/Preset-Output-Variables.html
2011-08-27 11:30:30 +02:00
Jonathan Neuschäfer
3d12d7de62
doc/developer.xml: change the coing style example return type to int
2011-08-27 11:27:32 +02:00
Jonathan Neuschäfer
87593f95d4
scripts/makedist.sh: fix test usage
...
Checkbashisms (part of the Debian devscripts) pionted this out.
2011-08-27 11:27:16 +02:00
Max Kellermann
11626e48bf
input/curl: implement a hard-coded timeout of 10 seconds
...
Be sure to stop the operation at some point when the server isn't
responding.
2011-08-26 19:28:09 +02:00
Max Kellermann
4f021cbced
input/curl: use the I/O thread
...
Background buffering and better timeout handling. This patch sort of
obsoletes the input_plugin method buffer().
2011-08-25 19:20:57 +02:00
Max Kellermann
ba31d176c8
input/curl: eliminate attribute "eof"
...
Assume the flag is true when the "easy" CURL handle is NULL. That
way, we don't need to keep track if CURL has sent us the "DONE"
information yet.
2011-08-25 19:20:28 +02:00
Max Kellermann
68edbc3e4a
input/curl: release "easy" CURL handle as early as possible
...
Release it immediately when end-of-file has been reached. We don't
need that handle anymore, because the rest is delivered from the
buffers.
2011-08-25 19:19:31 +02:00
Max Kellermann
5068227a46
input/curl: move code to input_curl_flush_buffers()
...
Allow closing the handle while preserving the remaining buffers.
2011-08-25 18:48:05 +02:00
Max Kellermann
f8f3bc89e7
input/curl: pass input_curl to fill_buffer()
...
Remove a cast.
2011-08-25 18:43:26 +02:00
Max Kellermann
635f7026b0
io_thread: add helper functions
2011-08-25 18:43:14 +02:00
Max Kellermann
0f1e4f0326
io_thread: move global variables into a struct
2011-08-25 18:43:05 +02:00
Max Kellermann
89355edb8a
glib_compat.h: add g_timeout_source_new_seconds()
2011-08-25 18:42:44 +02:00
Max Kellermann
37c8f5c1da
input/curl: set GError when init() fails
...
Let the caller know what happened, he's responsible for logging.
2011-08-25 08:43:05 +02:00
Max Kellermann
5bba2df526
input/soup: free all resources in method close()
2011-08-24 19:31:59 +02:00
Max Kellermann
1935694440
valgrind.suppressions: suppress g_resolver_get_default()
2011-08-24 19:31:59 +02:00
Max Kellermann
12dd6ea8bb
valgrind.suppressions: suppress g_data_initialize()
...
This function initializes global variables.
2011-08-24 19:31:59 +02:00
Max Kellermann
a1f922b040
valgrind.suppressions: add libsoup suppressions
2011-08-24 19:31:59 +02:00
Max Kellermann
017cf088a1
valgrind.suppressions: add GType suppressions
...
libsoup uses GType.
2011-08-24 19:15:59 +02:00
Max Kellermann
df627cc417
valgrind.suppressions: suppress g_intern_static_string()
2011-08-24 19:15:59 +02:00
Max Kellermann
1b20300b73
valgrind.suppressions: use wildcards
2011-08-24 18:47:48 +02:00
Max Kellermann
3b9ffea36f
input/soup: new input plugin based on libsoup
...
To demonstrate the new I/O thread. libsoup is well-integrated into
the GLib main loop, which made this plugin pretty easy to write.
As a side effect, we have to initialize the I/O thread in all debug
programs that use the input API.
2011-08-24 03:33:49 +02:00
Max Kellermann
e242f3999c
io_thread: new thread for non-blocking background I/O
...
Try to eliminate the remaining blocking I/O.
2011-08-24 02:55:05 +02:00
Max Kellermann
523f89cc8c
input/curl: remove obsolete function input_curl_reinit()
2011-08-24 02:55:05 +02:00
Max Kellermann
0575a6d652
output/raop: use GLib byte order macros
2011-08-24 02:19:40 +02:00
Max Kellermann
08b88714e0
output/raop: use fill_int() in fill_time_...()
...
Eliminate duplicate code.
2011-08-24 02:18:51 +02:00
Max Kellermann
bcaff4b844
output/raop: check if the "host" option is present
...
Better than dereferencing NULL.
2011-08-24 01:47:31 +02:00
Max Kellermann
82f336a78f
output/raop: remove excessive debug messages
2011-08-24 01:47:27 +02:00
Max Kellermann
350aa33022
output/raop: consistently use GError
2011-08-24 01:47:26 +02:00
Max Kellermann
d6290a2f1a
output/raop: use GLib heap functions
2011-08-24 01:47:25 +02:00
Max Kellermann
71e9d08863
output/raop: functions that always succeed return void
...
No point in returning true, and checking that.
2011-08-24 01:47:23 +02:00
Max Kellermann
9729dc7594
output/raop: rtspcl_connect() returns false on error
...
.. and not -1, which is "true".
2011-08-24 01:47:22 +02:00
Max Kellermann
92c1b8f31e
output/raop: error checking in send_control_command()
2011-08-24 01:47:21 +02:00
Max Kellermann
9ffa2604f8
output/raop: make some allocations static
...
Allocate objects on the stack to reduce heap overhead.
2011-08-24 01:47:20 +02:00
Max Kellermann
03b1fad4d4
output/raop: remove unused local variables
2011-08-24 01:47:18 +02:00
Max Kellermann
72eb4c534f
output/raop: make some exec_request parameters const
2011-08-24 01:47:17 +02:00
Max Kellermann
47d936e9cc
output/raop: use "char*" for string buffers
...
Not unsigned char. Eliminate useless casts.
2011-08-24 01:47:15 +02:00
Max Kellermann
8e08407090
output/raop: make send_control_command() static
...
Only used internally.
2011-08-24 01:47:14 +02:00
Max Kellermann
c0a4558c62
output/raop: remove useless test_default_device() implementation
...
This defaults to "false" when the method pointer is NULL.
2011-08-24 01:47:13 +02:00
Max Kellermann
5ecb6fecc4
Merge branch 'v0.16.x'
2011-08-24 01:47:10 +02:00
Max Kellermann
b3df4dc2c9
output/pulse: fix deadlock when the stream was suspended
...
Check if the stream is suspended; wake up the main loop when it
becomes suspended.
2011-08-23 23:02:13 +02:00
Max Kellermann
3db9ab82ea
output/pulse: add assertions
2011-08-23 22:48:22 +02:00
Max Kellermann
2dc3acc5f0
output/pulse: return 0 on error
...
Not a bool.
2011-08-23 22:48:22 +02:00
Max Kellermann
25686e5bce
pulse/output: fix deadlock when resuming the stream
...
Unlock the mainloop in all code paths.
2011-08-23 22:45:47 +02:00
Max Kellermann
8d70f808d9
input/curl: limit the receive buffer size
2011-08-23 20:46:51 +02:00
Max Kellermann
7c887af1ea
output/httpd: add assertions
2011-08-23 18:14:39 +02:00
Max Kellermann
b7f435b50e
output/httpd: don't warn on client disconnect
...
This warning should only be logged when we really received something.
When the client disconnects, G_IO_IN is triggered, and the read
returns G_IO_STATUS_EOF.
2011-08-23 18:02:56 +02:00
Max Kellermann
d3b15f8fda
decoder/mpcdec: fix gcc warning
...
Move the variable "vbr_update_acc" into the #ifdef block.
2011-08-23 17:58:56 +02:00
Jonathan Neuschäfer
eea726740b
output/raop: rewrite remove_char_from_string
2011-07-25 11:23:22 +02:00
Max Kellermann
0ea4c970d7
Merge branch 'v0.16.x'
...
Conflicts:
src/player_thread.c
src/playlist_control.c
2011-07-20 21:46:05 +02:00
Max Kellermann
57936a1374
output/raop: use memset() instead of bzero()
...
There's no bzero() on WIN32.
2011-07-20 21:20:23 +02:00
Max Kellermann
9242fde6b8
output/raop: include winsock.h on WIN32
2011-07-20 21:18:55 +02:00
Max Kellermann
d1f653be65
output/raop: use GMutex instead of pthread_mutex_t
...
Be portable on WIN32.
2011-07-20 21:11:06 +02:00
Max Kellermann
0035dceb0a
output/raop: add missing mutex unlock call in error handler
2011-07-20 21:09:39 +02:00
Max Kellermann
838f7cd210
encoder_plugin: add method pre_tag()
...
In the "vorbis" plugin, this is a copy of the old flush() method,
while flush() gets a lot of code remove, it just sets the "flush" flag
and nothing else. It doesn't start a new stream now, which should fix
a few problems in some players.
2011-07-20 20:54:34 +02:00
Max Kellermann
13539961b2
output/httpd: explicitly convert size_t to bool in pause()
2011-07-20 19:16:47 +02:00
Max Kellermann
a26f2ef17d
pipe: lock the mutex in music_pipe_size()
2011-07-20 19:05:32 +02:00
Max Kellermann
d97c46bcdc
pipe: make read-only functions "pure"
...
Enable gcc optimizations.
2011-07-20 19:05:26 +02:00
Max Kellermann
2b6542467c
output_thread: unlock the mutex while calling cancel()
...
The method may take longer, and we shouldn't be holding the lock.
2011-07-20 19:05:08 +02:00
Max Kellermann
8fa51faa38
player_thread: lock the player while setting the bite_rate
2011-07-20 19:04:54 +02:00
Max Kellermann
b2175629fd
update_walk: apply follow_inside_symlinks to absolute symlinks
2011-07-20 14:15:20 +02:00
Max Kellermann
2e28ed8f81
wavpack: obey all decoder commands, stop at CUE track border
...
It used to ignore the decoder_data() return value.
2011-07-20 12:54:30 +02:00
Max Kellermann
4c4f8bf02a
decoder/wavpack: use the correct integer types
...
libwavpack provides int32_t samples, and wants uin32_t for sample
counts.
2011-07-20 12:54:22 +02:00
Max Kellermann
e464be5f39
decoder/wavpack: simplify the WavpackUnpackSamples()==0 check
...
.. and remove one indent level.
2011-07-20 12:32:48 +02:00
Max Kellermann
d7d717f2ce
playlist_control: don't resume playback when seeking to another song while paused
...
Use a shortcut in playlist_seek_song(), don't call
playlist_play_order() because that would reset the "paused" state.
2011-07-20 11:33:51 +02:00
Max Kellermann
d1eeed6a5b
output/alsa: fix SIGFPE when alsa announces a period size of 0
2011-07-20 06:54:51 +02:00
Max Kellermann
b159bc0c5f
queue: implement song "priorities"
...
Sorts remaining songs by priority. This can be used for the
much-demanded "queue feature".
2011-07-19 00:34:33 +02:00
Jonathan Neuschäfer
a222c4879c
output/shout: fix a memory leak
2011-07-19 00:24:48 +02:00
Max Kellermann
eb2f413cf0
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
2011-07-19 00:24:20 +02:00
Max Kellermann
736fd0e293
decoder/ffmpeg: use avformat_open_input() if available
...
av_open_input_stream() has been deprecated.
2011-07-18 23:31:47 +02:00
Max Kellermann
6592ca9f88
decoder: use AVDictionary instead of AVMetadata
...
AVMetadata has been deprecated.
2011-07-18 23:31:31 +02:00
Max Kellermann
762712c756
database: require X_OK on parent directory, not R_OK
...
For accessing the child of a directory, one needs X_OK on the
directory.
2011-07-18 22:48:07 +02:00
Max Kellermann
73f9e17951
NEWS: fix memory leaks
2011-07-18 22:47:51 +02:00
Jonathan Neuschäfer
7d6a605a85
output/shout: fix a memory leak
2011-07-18 22:04:48 +02:00
Jonathan Neuschäfer
a6a8bdffc3
output/recorder: fix a memory leak
2011-07-18 22:04:10 +02:00
Jonathan Neuschäfer
296085ff23
output/httpd: add missing g_free in error path
2011-07-18 22:04:06 +02:00
Jonathan Neuschäfer
36aa8ce3c9
output/ao: add missing g_free in error path
2011-07-18 22:03:48 +02:00
Jonathan Neuschäfer
c49c69d6ea
conf: add missing fclose in error path
...
This patch seems a bit ugly, maybe it would be a bit cleaner with gotos.
2011-07-18 22:03:40 +02:00
Jonathan Neuschäfer
d5684f7444
sticker: fix a memory leak
2011-07-18 22:03:37 +02:00
Jonathan Neuschäfer
affb4bd923
ape: add missing g_free in error path
2011-07-18 22:03:34 +02:00
Max Kellermann
65772a74e0
configure: correct avahi/bonjour state on result page
...
Was always displayed as "no", even if one was found.
2011-07-03 15:42:22 +02:00
Max Kellermann
cca2c2f4ca
test/run_filter: remove unused variable "frame_size"
2011-07-03 15:21:40 +02:00
Max Kellermann
52e2fa91c4
test/read_conf: make variables more local
2011-07-03 15:20:39 +02:00
Max Kellermann
dca405a746
test/read_conf: fix -Wunused-but-set-variable
2011-07-03 15:20:28 +02:00
Skottish
e54748d355
decoder/ffmpeg: use AVIO_FLAG_READ on newer ffmpeg versions
...
FFmpeg/libav have dropped AVIO_RDONLY in favor of AVIO_FLAG_READ. This
patch fixes that in MPD.
2011-07-03 15:17:44 +02:00
Jonathan Ballet
3680a6bbbb
doc/protocol: add some missing specifications
2011-07-03 15:05:04 +02:00
Max Kellermann
6aa6a9c272
decoder/flac: validate the sample rate when scanning the tag
...
Don't calculate the song duration when the sample rate is 0 (division
by zero crash).
2011-07-03 14:57:56 +02:00
oblique
8d1c7ca206
ffmpeg: workaround for semantic API change in recent ffmpeg versions
2011-07-03 14:54:56 +02:00
Tony Miller
52b8e0f9ec
doc/user: Typo in playlist plugin documentation, 'playlist plugin' not 'filter'.
...
This patch fixes a typo in doc/user about playlist plugins.
Its in the top commit in my repository in a branch called 'doc_fix':
git://github.com/mcfiredrill/mpd.git
2011-07-03 14:53:37 +02:00
Max Kellermann
08e2e2e791
fd_util: add function socketpair_cloexec_nonblock()
2011-07-01 10:50:15 +02:00
Avuton Olrich
3c4f4793b5
Modify version string to post-release version 0.16.4~git
2011-06-04 07:37:34 -07:00
Avuton Olrich
e2950a7e4d
mpd version 0.16.3
2011-06-04 07:37:33 -07:00
Max Kellermann
531c0067ec
Makefile.am: distribute client_idle.h
2011-06-03 17:27:43 +02:00
Max Kellermann
e228caaca6
Merge branch 'v0.16.x'
...
Conflicts:
src/decoder/ffmpeg_decoder_plugin.c
2011-06-03 16:58:09 +02:00
Max Kellermann
4b4aa64261
directory: allow directories with just playlists
...
Keep those when scanning for empty directories. The check in
playlist_vector_is_empty() was missing.
2011-05-09 21:37:43 +02:00
Qball Cow
9ac8f89b1d
cue_tag: show CUE track numbers
2011-05-09 21:26:36 +02:00
Max Kellermann
c6a72a14ac
decoder/ffpmeg: don't use av_metadata_conv() in ffmpeg 0.7
...
It's a no-op and deprecated.
2011-05-09 21:24:18 +02:00
Max Kellermann
c74edd0e33
decoder/ffmpeg: use AVIOContext instead of ByteIOContext
2011-05-09 21:23:58 +02:00
Max Kellermann
98acf3f281
input/ffmpeg: use the new AVIOContext API
...
URLContext is deprecated.
2011-05-09 21:23:24 +02:00
Max Kellermann
26735390ff
playlist_song: fix playlist files in base music directory
...
g_path_get_dirname() returns "." when there is no directory name in
the given path. This patch adds a workaround for that.
2011-05-09 18:05:11 +02:00
Max Kellermann
9402b23dd5
playlist_song: fix NULL pointer dereference
2011-05-09 18:03:54 +02:00
Max Kellermann
246db3d565
decoder/ffmpeg: use avcodec_decode_audio3() if available
...
avcodec_decode_audio3() has been added in libavformat 52.25.0, and the
predecessor avcodec_decode_audio2() has been deprecated.
2011-05-09 09:24:17 +02:00
Max Kellermann
eaf414cbc8
decoder/ffmpeg: make variables more local
2011-05-09 09:24:15 +02:00
Anton Khirnov
327d41c00f
decoder/ffmpeg: don't use deprecated CODEC_TYPE_AUDIO with new lavc
...
fixes build with lavc 53.
2011-05-09 08:00:45 +02:00
Max Kellermann
05d8ce3bcd
decoder/ffmpeg: define fallback macro AV_VERSION_INT()
...
For ffmpeg < 0.5. Copied from libavutil 0.5.
2011-05-09 08:00:45 +02:00
Max Kellermann
fe30db935b
decoder/ffmpeg: use avcodec_decode_audio3() if available
...
avcodec_decode_audio3() has been added in libavformat 52.25.0, and the
predecessor avcodec_decode_audio2() has been deprecated.
2011-04-12 08:20:35 +02:00
Max Kellermann
6303d54cbb
decoder/ffmpeg: make variables more local
2011-04-12 08:17:30 +02:00
Anton Khirnov
9d91aa23e6
decoder/ffmpeg: drop support for pre-0.5 ffmpeg
...
All modern distros ship 0.5, so there's no need to support old and buggy
ffmpeg versions.
2011-04-12 08:14:14 +02:00
Max Kellermann
c2ada39fd3
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
2011-04-12 08:11:33 +02:00
Max Kellermann
def2fe8805
Merge branch 'v0.15.x' into v0.16.x
...
Conflicts:
NEWS
configure.ac
src/listen.c
2011-04-12 07:39:01 +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
Simon Kagstrom
99640171e2
doc: Add despotify user documentation
2011-04-12 07:27:59 +02:00
Simon Kagstrom
38b3ab791f
doc: INSTALL: Add despotify dependencies
2011-04-12 07:27:59 +02:00
Simon Kagstrom
a86fc52eea
configure.ac: Correct error message for missing despotify package
2011-04-12 07:27:59 +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
be798998bf
build: Add despotify to build system
2011-03-29 17:01:16 +02:00
Simon Kagstrom
c3b425d570
doc: Add configuration help for despotify
2011-03-29 17:01:16 +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
Simon Kagstrom
124d1a5942
input: Add despotify input plugin
...
For Spotify tracks. Uses a spt URI, so with mpc you can play tracks
with e.g.,
mpc add spt://spotify:track:5qENVY0YEdZ7fiuOax70x1
mpc play
Uses the pcm_decoder_plugin for the output
2011-03-29 17:01:16 +02:00
Simon Kagstrom
eec77b3ae7
despotify: Add support utilities
...
Used to connect and authenticate to despotify. Provides a singleton
session and a desptoify-track-to-tags function.
2011-03-29 17:01:16 +02:00
Max Kellermann
f680b0a431
decoder/flac: fix enum mismatch in flac_tell_cb()
...
Fix clang warning.
2011-03-23 22:31:40 +01:00
Max Kellermann
d4b00ff11c
listen: suppress "unused variable" warning
2011-03-23 22:27:31 +01:00
Max Kellermann
532f94a187
audio_parser: fix assertion failure in audio format mask parser
...
Use audio_format_mask_valid() to verify a mask.
2011-03-23 22:22:51 +01:00
Max Kellermann
87ad2f8542
command: fix return value of handle_currentsong()
...
Thanks to clang for complaining.
2011-03-23 22:16:46 +01:00
Simon Kagstrom
640bac1aa4
decoder: PCM decoder: Inherit seekable from the input stream
...
E.g., spotify isn't seekable.
2011-03-23 22:13:11 +01:00
Simon Kagstrom
0b12fae84d
decoder: PCM decoder: Break loop if EOF is encountered
...
Otherwise the song playing might go on forever.
2011-03-23 22:13:08 +01:00
Simon Kagstrom
a8f891efcd
configure.ac: Enable HAVE_OGG_COMMON when using libtremor
...
Otherwise OGGs can't be played.
2011-03-23 22:09:58 +01:00
Hans-Kristian Arntzen
d9353c4fd3
Remove unused headers in Roar plugin.
...
Should fix build errors for Win32.
2011-03-23 21:59:22 +01:00
Max Kellermann
0c9fc2f809
Merge commit 'release-0.16.2'
...
Conflicts:
Makefile.am
NEWS
configure.ac
2011-03-19 09:58:07 +01:00
Avuton Olrich
b5fc2419e8
Modify version string to post-release version 0.16.3~git
2011-03-18 17:43:11 -07:00
Avuton Olrich
fe588a255b
mpd version 0.16.2
2011-03-18 17:43:11 -07:00
Max Kellermann
1fc571088b
command: print playlist load error
...
Call print_playlist_result() instead of casting the enum implicitly.
2011-03-18 19:45:59 +01:00
Max Kellermann
8d83914f05
output/httpd: include sys/socket.h only when building with libwrap
...
Fixes build failure on WIN32.
2011-03-18 19:44:12 +01:00
Max Kellermann
0fdcd381bc
update_walk: ignore parameter "mode" on WIN32
...
Fix compiler warning.
2011-03-18 19:43:26 +01:00
Max Kellermann
4f293ecd6f
audio_format, output_thread: add more audio_format_valid() assertions
2011-03-16 23:37:41 +01:00
Max Kellermann
b6303313f0
encoder/vorbis: reset the Ogg stream after flush
...
Without the ogg_stream_reset() call, the "e_o_s" flag never gets
reset, and libogg writes EOS packets over and over.
2011-03-16 19:16:06 +01:00
Max Kellermann
a28449a123
encoder/vorbis: reset the Ogg stream after flush
...
Without the ogg_stream_reset() call, the "e_o_s" flag never gets
reset, and libogg writes EOS packets over and over.
2011-03-16 19:13:46 +01:00
Max Kellermann
6dcec36621
Merge release 0.15.16 into v0.16.x
...
Conflicts:
NEWS
configure.ac
src/output/jack_plugin.c
src/update.c
2011-03-16 18:08:54 +01:00
Hans-Kristian Arntzen
1a954748a0
RoarAudio output plugin
2011-03-16 17:57:47 +01:00
Avuton Olrich
84d0fd39a3
Modify version string to post-release version 0.15.17~git
2011-03-13 20:27:33 -07:00
Avuton Olrich
4d4b7e3de0
mpd version 0.15.16
2011-03-13 20:27:33 -07:00
Ulrich Spörlein
e2aea6bce5
output/httpd: include sys/socket.h for AF_UNIX
2011-03-09 19:53:48 +01:00
Ulrich Spörlein
5779146a7f
configure.ac: fix bashism in tremor test
...
This makes FreeBSD detect libogg correctly. The '==' operator is an
undocumented GNU extension to test(1) and cannot be relied upon to
exist and do the right thing. POSIX mandates string comparisons to be
done using "test foo = bar".
2011-03-09 19:50:54 +01:00
Max Kellermann
a1d1c2beaa
output/oss: disable 24 bit playback on FreeBSD
...
See code comment.
2011-02-28 00:09:45 +01:00
Max Kellermann
ee9c60fad4
output/oss: AFMT_S24_PACKED is little-endian
...
According to the Solaris dsp manpage, AFMT_S24_PACKED is
little-endian:
http://download.oracle.com/docs/cd/E19963-01/821-1475/6nmf5baot/index.html
The Minix soundcard.h header says the same.
2011-02-28 00:00:41 +01:00
Max Kellermann
2abad0f479
command: "update" and "rescan" need only "CONTROL" permission
...
From http://bugs.debian.org/513291
"In mpd.conf, the "admin" permission covers updating the db and
killing mpd.
"Since there are quite some usecases in which the user can upload
music to the mpd's directory by means of anonymous FTP or so, it is
desirable that any user may issue a db update, while killing the mpd
should not be possible.
"I'd suggest to remove the db update from the admin group and either
add it to "control" or an own group."
2011-02-27 23:35:00 +01:00
Max Kellermann
1674a4ec82
output/jack: fix crash with mono playback
...
With mono sound, jack_sample_size is smaller than frame_size (4 vs 2
bytes), and "space/jack_sample_size==0". That means mpd_jack_play()
will return 0, although no error has occurred.
2011-02-27 23:26:50 +01:00
Max Kellermann
ce370bee60
output/jack: rename variable sample_size to jack_sample_size
2011-02-25 10:46:44 +01:00
Max Kellermann
2fb40fe728
playlist_state: add option "restore_paused"
...
When set, MPD will not auto-start playback on startup; it will be in
"paused" state.
2011-02-23 09:10:23 +01:00
Max Kellermann
b57330cf75
playlist_state: declare local variable as enum
2011-02-23 09:10:23 +01:00
Max Kellermann
8cd91fabf9
configure.ac: disable -Wno-deprecated-declarations
2011-02-23 09:01:53 +01:00
Max Kellermann
e0580ee385
configure.ac: protocol version 0.17
...
The client-to-client protocol was added, and that justifies increasing
the protocol version.
2011-02-22 09:16:32 +01:00
Max Kellermann
e257484870
Makefile.am: distribute test/stdbin.h
2011-02-18 08:19:37 +01:00
Christopher Brannon
2a1f4539f6
Insure proper initialization of stack-allocated struct.
...
Version 1.0.0 of the libao library added a new field to the
ao_sample_format struct. It is a char * named matrix. When
an ao_sample_format is allocated on the stack, this field contains
garbage. The proper course is to insure that is initialized to NULL.
NULL indicates that we do not want any mapping.
The struct is now initialized using a static initializer, and this
technique is compatible with all known versions of libao.
2011-02-15 12:16:25 +01:00
Max Kellermann
906efdd320
Makefile.am: compile test/run_encoder with ENCODER_CFLAGS
2011-02-13 23:22:57 +01:00
Thomas Jansen
144d092637
output/shout: add possibility to set url
...
Added a new optional parameter for the shout plugin called "url".
2011-02-09 22:42:51 +01:00
Thomas Jansen
948b8f35e6
general: whitespace cleanup
...
Remove trailing whitespace found by this command:
find -name '*.[ch]' | xargs grep "[[:space:]]$"
2011-02-09 22:42:31 +01:00
Thomas Jansen
e776c605ad
output/httpd: initialize unflushed_input
...
This fixes the following valgrind warning occuring on the first call of
httpd_output_read_page:
==20124== Conditional jump or move depends on uninitialised value(s)
==20124== at 0x425E65: httpd_output_read_page (httpd_output_plugin.c:240)
==20124== by 0x426087: httpd_output_open (httpd_output_plugin.c:279)
==20124== by 0x41D862: ao_open (output_plugin.h:206)
==20124== by 0x41E133: audio_output_task (output_thread.c:590)
2011-02-09 22:41:36 +01:00
Tony Miller
8b2f4fc823
Set fadeout in gme_decoder_plugin. Due to the nature of the gme library,
...
this needs to be done for the end of songs to be detected.
2011-02-03 00:25:35 +01:00
Max Kellermann
03018611f8
update: log all file permission problems
2011-01-31 09:39:24 +01:00
Thomas Jansen
2bde9afdb9
configure.ac: fix copy&paste error
2011-01-29 13:49:32 +01:00
Max Kellermann
f8b09c194f
protocol: support client-to-client communication
2011-01-29 10:43:54 +01:00
Max Kellermann
0e69ad32c1
client_idle: export client_idle_add()
2011-01-29 10:43:54 +01:00
Max Kellermann
9b4e14df71
client_idle: add header client_idle.h
2011-01-29 10:43:54 +01:00
Max Kellermann
03f7803f26
test/read_mixer: add workaround for missing RAOP symbols
2011-01-29 10:43:54 +01:00
Max Kellermann
c6cbcc2c25
copyright year 2011
2011-01-29 10:13:54 +01:00
Ian Zimmerman
27aa34d4ae
input/curl: enable CURLOPT_NETRC
...
I wanted mpd to play a mp3 stream from a music website. The stream is
only available to subscribers, which restriction is enforced through
normal http authentication. However, the URL I get from the website
is not the final URL of the stream, but a generic URL which points to
the real one through a redirect (code 301). Thus, I cannot predict
the final URL, and so I cannot use the username:password hack to force
the authentication, and mpd (libcurl on mpds behalf) fails to grab the
stream.
libcurl allows the option CURLOPT_NETRC to be set and then the
credentials can be stored in the good old .netrc file (in this case it
would be ~mpd/.netrc, of course). But mpd doesn't set this option. I
think it should.
2011-01-29 08:43:30 +01:00
Dustin Puckett
79e0db4ca0
output/raop: new output plugin
...
Remote Audio Output Protocol (RAOP), for Apple devices.
2011-01-28 21:17:09 +01:00
Max Kellermann
8f99c954ad
NEWS: fix 0.16.1 release year
2011-01-28 21:12:17 +01:00
Max Kellermann
5735c9efc1
configure.ac: fix tremor configure test
...
When the configure options were moved around for 0.16, the order was
changed, and the Tremor check broke.
2011-01-28 12:21:03 +01:00
Yuriy Kaminskiy
9ae3acf2e7
mpg123 decoder: implement seeking
2011-01-21 15:37:08 +01:00
Yuriy Kaminskiy
731ea9b489
mpg123 decoder: report bitrate
2011-01-21 15:37:08 +01:00
Max Kellermann
18b30b5019
decoder_thread: fix assertion failure at song end
...
Don't finish the current command twice.
This bug was never noticed, but was revealed by a new assertion check.
2011-01-16 17:52:03 +01:00
Andreas Wiese
e6c3acaa6f
Fix NDEBUG test
...
<stdbool.h> needs to be included unconditionally from definition of
NDEBUG, since »bool« doesn't get defined otherwise.
Signed-off-by: Andreas Wiese <aw-devel@meterriblecrew.net >
2011-01-14 16:22:25 +01:00
Max Kellermann
24d51b9d14
doc: add a list of encoder plugins
2011-01-10 23:13:01 +01:00
Max Kellermann
a1edc199df
output_control: document internal functions
2011-01-10 22:16:44 +01:00
Max Kellermann
db4aa81528
output_control: move code to ao_lock_command()
2011-01-10 21:54:43 +01:00
Max Kellermann
319ba94a52
output_control: ao_command() calls ao_command_async()
...
Merge some code.
2011-01-10 21:52:38 +01:00
Max Kellermann
1025f0be91
update_remove: use plain GCond instead of notify
...
GMutex/GCond guarantee that the access to removed_song is protected.
2011-01-10 21:40:15 +01:00
Max Kellermann
77d3b5e8f1
include cleanup
2011-01-10 21:38:11 +01:00
Max Kellermann
a0ad96a787
decoder_control: store GCond object, not a player_control
...
Remove the decoder dependency on player_control. All player_control
was needed for is to signal the player thread, and we can do that with
a simple GCond as well.
2011-01-10 21:27:43 +01:00
Max Kellermann
39c5af5dbc
decoder_thread: move code to decoder_command_finished_locked()
2011-01-10 21:08:16 +01:00
Max Kellermann
acca6a799b
decoder_control: remove unused function dc_command_wait()
...
Only dc_command_wait_locked() is really being used.
2011-01-10 21:08:16 +01:00
Max Kellermann
b77e62260a
decoder_control: replace dc_init() with dc_new()
...
dc_new() allocates the object and returns it. dc_free() frees it
(replaces dc_deinit()).
2011-01-10 20:46:04 +01:00
Max Kellermann
b6995ca011
player_control: removed the global variable "pc"
...
Allocate a player_control object where needed, and pass it around.
Each "client" object is associated with a "player_control" instance.
This prepares multi-player support.
2011-01-10 19:46:23 +01:00
Max Kellermann
715844fd08
dbUtils: don't use directoryAddSongToPlaylist() twice
...
In findAddInDirectory(), call playlist_append_song() directly, to have
some more type checking.
2011-01-10 19:46:14 +01:00
Max Kellermann
2b29ca796e
Merge commit 'release-0.16.1'
...
Conflicts:
NEWS
2011-01-10 11:47:14 +01:00
Avuton Olrich
44b4b50949
Modify version string to post-release version 0.16.2~git
2011-01-09 18:00:12 -08:00
Avuton Olrich
9ad862d3a6
mpd version 0.16.1
2011-01-09 18:00:12 -08:00
Yuriy Kaminskiy
77d71c4ee6
Makefile.am: resolve modplug vs. libsndfile cflags/headers conflict
...
A bit of automake magic (see info automake "Per-Object Flags").
Compile-tested.
2011-01-09 18:21:27 +01:00
Max Kellermann
5184008812
input_init: add assertions on completeness of plugins
2011-01-08 18:27:57 +01:00
Max Kellermann
cf696ce443
input/cdio_paranoia: add module name
...
Seems like we forgot to give this module a name... this can crash MPD
on startup.
2011-01-08 18:27:57 +01:00
Max Kellermann
1a2ea4c06c
Merge branch 'v0.16.x'
...
Conflicts:
NEWS
configure.ac
2011-01-07 23:52:23 +01:00
Max Kellermann
8c0afd8557
Merge branch 'v0.15.x' into v0.16.x
...
Conflicts:
NEWS
configure.ac
src/directory.h
2011-01-07 23:50:23 +01:00
Max Kellermann
2a56300f7b
player_thread: discard empty chunks while cross-fading
...
When a music_chunk to be crossfaded consists only of a tag,
cross-fading is not possible, and led to an assertion failure. This
patch just discards those, as if cross-fading was not enabled.
2011-01-07 23:45:51 +01:00
Max Kellermann
5f06999686
output_thread: fix double lock
...
During the whole output thread, the audio_output object is locked, and
it is only unlocked while waiting for the GCond and while running a
plugin method. The error handler in ao_play_chunk() attempted to lock
the object again, which was code from MPD 0.15.x which should have
been removed a long time ago.
2011-01-07 23:08:18 +01:00
Max Kellermann
4c09aeb5a1
player_thread: fix assertion failure due to early seek
...
Until the decoder plugin has called decoder_initialized(), the player
may not submit seek commands. This however could occur with a slow
decoder and a CUE file with a virtual song offset. This patch adds
another check.
2011-01-07 22:52:50 +01:00
Max Kellermann
af892e7e80
player_thread: make variables more local
2011-01-07 22:33:10 +01:00
Max Kellermann
0022fb100b
encoder/lame: explicitly configure the output sample rate
...
When you don't explicitly set an output sample rate, liblame tries to
guess an output sample rate from the input sample rate. You would
think that this "guessing" consists of just setting both equal, but
that is not the case. For 44.1kHz at 96kbit/s, liblame chooses
32kHz. This patch explicitly configures the output sample rate, to
stop the bad guessing.
2011-01-07 19:37:39 +01:00
Max Kellermann
4f2d67dfb0
output/httpd: define G_LOG_DOMAIN in httpd_client.c
2011-01-07 18:00:12 +01:00
Max Kellermann
b5645ab29f
output/osx: fix up audio format first, then apply it to device
...
This is a MPD 0.16 regression: when playing a 24 bit file, the switch
to 16 bit was made only partially, after mBytesPerPacket and
mBytesPerFrame had already been applied.
That means mBytesPerFrame referred to 24 bit, and mBitsPerChannel
referred to 16 bits. Of course, that cannot work.
2011-01-07 17:31:36 +01:00
Max Kellermann
3149d1abf9
configure.ac: eliminate bashism "echo -n"
...
Use "printf" instead.
2011-01-07 17:31:30 +01:00
Max Kellermann
59a417fc84
configure.ac: avoid GNU extension in "expr match" call
2011-01-07 17:29:19 +01:00
Max Kellermann
b75d53413d
configure.ac: use AC_LANG_SOURCE
...
Fixes autotools warnings.
2011-01-07 17:25:52 +01:00
Max Kellermann
c44a744c0b
fix version number in NEWS
2011-01-07 17:25:25 +01:00
Anton Khirnov
a800afcbf8
docs: mention 'sticker' idle event
2011-01-05 13:03:17 +01:00
Ben Kibbey
ff4534613a
Build fix for Linux. Define _GNU_SOURCE in src/server_socket.c.
2010-12-27 04:36:23 +01:00
Max Kellermann
b8fe2c74bc
Makefile.am: generate doxygen.conf
...
Don't create a modified copy for out-of-tree builds.
2010-12-24 00:25:31 +01:00
Max Kellermann
be3b5199b0
stored_playlist: remove database lookups from spl_load()
...
Don't look up songs in the database, no caller needs this.
2010-12-23 16:25:37 +01:00
Max Kellermann
d849a40af6
stored_playlist: ignore empty lines
2010-12-23 16:25:22 +01:00
Max Kellermann
4f48c10312
stored_playlist: use the text_file library to read lines
2010-12-23 16:25:05 +01:00
Max Kellermann
5274fee8a7
playlist_song: add flag "secure"
...
Optionally allow all local files.
"Insecure" mode is used for printing playlists.
2010-12-23 16:24:00 +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
0958ed5844
utils: move string_array_contains() to string_util.c
2010-12-23 16:23:04 +01:00
Max Kellermann
e3cba18532
decoder: new "pcm" decoder plugin
...
Just there to support the "cdio_paranoia" input plugin.
2010-12-22 09:48:48 +01:00
Max Kellermann
9bf7fde49f
configure.ac: hook the cdio_paranoia input plugin
2010-12-22 09:44:02 +01:00
Max Kellermann
4783ebc918
input/cdda: rename plugin to "cdio_paranoia"
2010-12-22 09:43:57 +01:00
Max Kellermann
8bda52783b
input/cdda: support reading the whole disc
2010-12-22 09:43:53 +01:00
Max Kellermann
07feec7ea6
input/cdda: remove unused function input_cdda_archive_extract_trackno()
2010-12-22 09:43:49 +01:00
Max Kellermann
e7471f589a
input/cdda: import missing pcm16_to_wave() from the wave encoder
2010-12-22 09:43:47 +01:00
Max Kellermann
24208be5cf
input/cdda: implement parse_cdda_uri()
...
Was missing.
2010-12-22 09:43:41 +01:00
Max Kellermann
8db5f66498
input/cdda: call input_cdda_close() with an input_stream pointer
...
Another build fix.
2010-12-22 09:43:27 +01:00
Max Kellermann
be670bfd1f
input/cdda: move code to cdda_detect_drive()
2010-12-22 09:43:20 +01:00
Max Kellermann
19acf090ed
input/cdda: remove newlines from error messages
2010-12-22 09:43:16 +01:00
Max Kellermann
2de7f6b457
input/cdda: remove debug code
2010-12-22 09:42:10 +01:00
Max Kellermann
a2e265e9a2
input/cdda: some general build failure fixes
2010-12-22 07:44:56 +01:00
Viliam Mateicka
28d7b29d72
input_cdda_plugin: new plugin to handle cdda:// protocol to access CD-DA audio CD's
2010-12-22 07:36:14 +01:00
Max Kellermann
76cddfab90
configure.ac: disable the FFADO plugin by default
...
It is known to crash instantly.
2010-12-22 07:31:17 +01:00
Max Kellermann
60b4f6b3eb
directory: fix warning "comparison between signed and unsigned"
...
Cast the constant to dev_t, not to unsigned.
2010-12-21 20:21:22 +01:00
Max Kellermann
546232b1c0
zeroconf-bonjour: use g_htons() instead of htons()
...
Fixes the gcc warning "implicit declaration of function 'htons'".
2010-12-21 20:21:20 +01:00
Max Kellermann
42c5788de3
Modify version string to post-release version 0.15.16~git
2010-12-21 20:19:49 +01:00
Max Kellermann
fb00e7fddc
add void casts to suppress "result unused" warnings (clang)
2010-12-21 08:06:02 +01:00
Alex Viskovatoff
41fdcf328c
decoder/mad: work around build failure on Solaris
...
Rename the "version" struct, because it seems to be a reserved name on
Solaris:
"src/decoder/mad_decoder_plugin.c", line 550: (enum) tag redeclared: version
cc: acomp failed for src/decoder/mad_decoder_plugin.c
2010-12-21 07:57:07 +01:00
Greg Ward
9cb4aaf3c2
osx_output: always pass OS X result code to g_set_error().
...
Should be safe on OS X 10.4 (32-bit), since Apple's OSStatus boils
down to "signed long", and g_set_error() takes gint, which is really
just "int". Assigning "signed long" to "int" on 32-bit Unix should be
just fine, since both are signed 32-bit ints.
No idea if this is safe on 64-bit OS X.
2010-12-21 07:37:54 +01:00
Greg Ward
80dc602193
osx_output: allow user to specify other audio devices.
...
Add new config parameter 'device' to audio_output type "osx":
- if not supplied or set to "default", open default device
- if set to "system", open system device
- otherwise 'device' should be an audio device name: mpd will find and
open the specified audio device, falling back to the default
device if it's not found
2010-12-21 07:36:28 +01:00
Alex Viskovatoff
144ad7992e
output/solaris: add missing parameter to open_cloexec() call
2010-12-21 07:31:08 +01:00
Alex Viskovatoff
a0dd1a1b8b
audio_check: fix parameter in prototype
2010-12-21 07:29:58 +01:00
Max Kellermann
c360e69162
Modify version string to post-release version 0.16.1~git
2010-12-21 07:29:31 +01:00
Avuton Olrich
c7f5a87258
Modify version string to post-release version 0.17~git
2010-12-11 04:19:49 -08:00
Avuton Olrich
da01c6ef5b
mpd version 0.16
2010-12-11 04:19:49 -08:00
Max Kellermann
fcd2355f4f
Merge branch 'master' of git://git.musicpd.org/avuton/mpd
2010-12-07 18:18:19 +01:00
Max Kellermann
748a8a6f42
tag_id3: support multiple values
...
Loop over all frames with a specific id, and import all of them - not
just the first one (index 0).
2010-12-07 18:05:44 +01:00
Anton Khirnov
cb9965bab5
command: don't error when sticker list is run on song with no stickers
...
this is inconsistent with other commands (e.g. find) and seems wrong --
a song with no stickers attached is a perfectly valid state and an empty
list of stickers is also perfectly valid.
2010-12-07 17:32:52 +01:00
Max Kellermann
429ed24c99
tag_ape: support multiple values
...
One APE tag may contain more than one value, separated by null bytes.
2010-11-24 08:59:04 +01:00
Max Kellermann
1ab46472ab
decoder_thread: load APE replay gain from music files
2010-11-18 23:02:30 +01:00
Max Kellermann
f6bbe1332f
replay_gain_ape: parse replay gain from APE tags
...
Based on the APE reader.
2010-11-18 22:26:06 +01:00
Max Kellermann
11613347be
tag_ape: move code to ape.c
...
Generic library for scanning APE tags. Eliminated one "goto"!
2010-11-18 21:44:24 +01:00
Max Kellermann
8f46f1520c
timer: fix integer overflow in timer_delay()
...
Fixes a regression: for output_plugin.delay(), we added a method to
the timer class which returns the delay in milliseconds. This fails
to detect negative values, because the unsigned integer is divided by
1000, and then casted to signed.
2010-11-18 21:29:03 +01:00
Avuton Olrich
f2893b0d0f
Modify version string to post-release version 0.16~git
2010-11-08 18:57:09 -08:00
Avuton Olrich
c7265f9689
mpd version 0.16~alpha4
2010-11-08 18:57:09 -08:00
Max Kellermann
46ab8d18e2
playlist_song: calculate duration of last CUE track
2010-11-08 20:16:26 +01:00
Max Kellermann
f384f8da93
Merge release 0.15.15 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2010-11-08 18:50:22 +01:00
Max Kellermann
23cd8a74be
mpd version 0.15.15
2010-11-08 18:48:28 +01:00
Max Kellermann
cc1debc948
output/shout: artist comes first in stream title
...
After popular demand, I've switched the order of "artist" and "title"
in the stream title. There is no standard, and there is no reliable
way to parse those from the stream title.
2010-11-08 18:46:14 +01:00
Max Kellermann
5a3aa1262a
update_walk: explicitly check for permission problems
...
Call access() and print an extra error message when EACCES is
returned. Hopefully this will reduce the number of support requests
due to wrong file permissions.
2010-11-08 18:24:19 +01:00
Max Kellermann
ad52eb236d
input/rewind: fix assertion failure
...
The assertion added in MPD 0.15.14 was too much, it failed when the
MIME type of a stream was NULL.
2010-11-08 10:37:09 +01:00
Avuton Olrich
d2c2cbd0ae
Modify version string to post-release version 0.16~git
2010-11-07 06:39:31 -08:00
Avuton Olrich
af4a93dbcf
mpd version 0.16~alpha3
2010-11-07 06:39:31 -08:00
Max Kellermann
4478b3ef74
Merge release 0.15.14 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder_control.c
src/decoder_control.h
src/input/rewind_input_plugin.c
src/output_control.c
src/output_thread.c
src/player_thread.c
2010-11-07 15:30:18 +01:00
Avuton Olrich
462bba8e2f
Modify version string to post-release version 0.15.15~git
2010-11-06 14:42:03 -07:00
Avuton Olrich
dec7090198
mpd version 0.15.14
2010-11-06 14:42:02 -07:00
Max Kellermann
83ec0e5552
player_thread: fix assertion failure due to wrong music pipe on seek
...
When one song is played twice, and the decoder is working on the
second "instance", but the first should be seeked, the check in
player_seek_decoder() may assume that it can reuse the decoder without
exchanging pipes. The last thing was the mistake: the pipe pointer
was different, which led to an assertion failure. This patch adds
another check which exchanges the player pipe.
2010-11-05 19:24:42 +01:00
Max Kellermann
cc261872c2
decoder_control: pass music_pipe to dc_start()
...
More abstraction for decoder_control.pipe.
2010-11-05 19:18:44 +01:00
Max Kellermann
5223261f19
player_thread: add helper function player_dc_at_next_song()
...
Some abstraction for decoder_control.pipe access.
2010-11-05 19:08:59 +01:00
Max Kellermann
c594afeee7
pipe: add helper function music_pipe_empty()
2010-11-05 18:40:23 +01:00
Max Kellermann
32d10eedbd
input/rewind: remove redundant NULL check before g_free() call
2010-11-05 18:40:14 +01:00
Max Kellermann
dfd98eede7
input/rewind: add two assertions
2010-11-05 18:40:07 +01:00
Max Kellermann
a728d7a026
input/rewind: fix double free bug
...
Duplicate the "mime" attribute of the inner input_stream object,
instead of copying the pointer.
2010-11-05 18:39:40 +01:00
Max Kellermann
5a26320680
output/alsa: dump buffer and period limits
2010-11-05 10:35:46 +01:00
Max Kellermann
90dc880e67
output/httpd: implement delay()
2010-11-05 09:49:22 +01:00
Max Kellermann
e11ff967d0
output/shout: implement delay()
...
This makes the plugin more responsive to control commands, because it
will listen to control events while waiting.
2010-11-05 09:49:20 +01:00
Max Kellermann
2dc6ed7b3a
output_plugin: add method delay()
...
This method is used to reduce the delay of commands issued to the
shout plugin.
2010-11-05 09:47:43 +01:00
Max Kellermann
ad430c6617
timer: add function timer_delay()
2010-11-05 09:39:56 +01:00
Max Kellermann
e8d8bd4c0d
decoder/{mp4ff,ffmpeg}: add extension ".m4b" (audio book)
...
Same as ".m4a".
2010-11-05 02:01:35 +01:00
Max Kellermann
8d5fa754e8
output_thread: fix assertion failure due to race condition in OPEN
...
Change the assertion on "fail_timer==NULL" in OPEN to a runtime check.
This assertion crashed when the output thread failed while the player
thread was calling audio_output_open().
2010-11-04 23:44:23 +01:00
Max Kellermann
2ee047a1dd
output_internal: protect attribute "fail_timer" with mutex
2010-11-04 23:40:43 +01:00
Max Kellermann
9562f66741
output_control: lock object in audio_output_open()
...
Protect the attributes "open" and "fail_timer".
2010-11-04 23:28:18 +01:00
Max Kellermann
21223154aa
output_control: lock object in audio_output_close()
...
Protect the attributes "open" and "fail_timer".
2010-11-04 21:51:02 +01:00
Mantas Mikulenas
ec48b5ea3a
server_socket: remove AI_ADDRCONFIG
...
When you pass the flag AI_ADDRCONFIG to getaddrinfo(), it does not
consider address families on the loopback device. When run on a
machine without an external network card, just with "lo", it was
unable to look up any address.
2010-11-04 20:17:45 +01:00
Max Kellermann
754015544f
output/ffado: transfer_playback_buffers() returns a boolean
...
libffado documentation says this function returns -1 on error, but
that is a lie - it returns a boolean value, and "false" means error.
2010-11-04 20:08:04 +01:00
Max Kellermann
3f89f77429
decoder/ffmpeg: check AVCodecContext.sample_fmt value
...
.. instead of av_get_bits_per_sample_format(). The SampleFormat enum
value is authoritative.
2010-11-04 20:04:15 +01:00
Denis Krjuchkov
9dee419b7c
winmm_output: handle empty string case when parsing device id
2010-11-04 11:09:50 +05:00
Denis Krjuchkov
7612bf1bfa
winmm_output: added "device" configuration option
...
Device can be specified either by magic index (starting with 0)
or by device name.
2010-11-04 00:51:18 +05:00
Denis Krjuchkov
ad56e10e5b
winmm_output: improved test_default_device
...
If no device is available test_default_device returns false.
2010-11-03 23:31:49 +05:00
Max Kellermann
75f4772ba2
output: new output plugin "ffado"
...
Using libffado, to play on firewire audio devices.
Warning: this plugin was not tested successfully. I just couldn't
keep libffado2 from crashing. Use at your own risk.
For details, see my Debian bug reports:
http://bugs.debian.org/601657
http://bugs.debian.org/601659
2010-10-27 21:25:41 +02:00
Alder Hornbridge
fe1b626f76
decoder/sidplay: play mus, str, prg, x00 files
2010-10-27 21:18:43 +02:00
Alder Hornbridge
4e94516912
decoder/sidplay: play monaural SID tunes in mono
2010-10-27 21:16:24 +02:00
Tony Miller
dadb6747ad
Container support for gme decoder.
2010-10-14 17:11:59 +02:00
Max Kellermann
188e1b440e
playlist/rss: new playlist plugin for RSS feeds
2010-10-11 20:33:41 +02:00
Max Kellermann
a57f9e712d
Merge release 0.15.13 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/input/rewind_input_plugin.c
src/output/httpd_output_plugin.c
2010-10-11 20:33:17 +02:00
Avuton Olrich
a549d871f3
Modify version string to post-release version 0.15.14~git
2010-10-10 09:57:57 -07:00
Avuton Olrich
b552e9a120
mpd version 0.15.13
2010-10-10 09:57:52 -07:00
Denis Krjuchkov
e6fc88a758
mixer: winmm_mixer implemented
2010-10-09 02:45:08 +06:00
Denis Krjuchkov
20004b7ee0
win32_output: renamed win32 output plugin to winmm
...
Win32 has many audio APIs. New name is slightly more correct.
2010-10-08 23:55:14 +06:00
Max Kellermann
84e037631d
output/httpd: use the new server_socket library
2010-10-05 21:18:54 +02:00
Max Kellermann
18e3d0b504
listen: move generic code to server_socket.c
2010-10-05 21:18:54 +02:00
Max Kellermann
04c4398bfc
output/httpd: don't close socket in open() failure
...
This cleanup call is obsolete, since we moved the binding code to
enable()/disable().
2010-10-05 21:18:54 +02:00
Max Kellermann
39e42394bd
output_all: disable outputs on shutdown
...
Call output_plugin.disable() before output_plugin.finish(). This
ensures that all outputs are properly cleaned up, to make valgrind
happy.
2010-10-05 21:18:54 +02:00
Qball Cow
a39e6b43e8
add mpd_error.h to sources.
2010-10-03 19:46:36 +02:00
Max Kellermann
5923cfcde3
output/httpd: MIME type audio/ogg for Ogg Vorbis
...
RFC 5334 10.3 defines the MIME type "audio/ogg". We could use
"application/ogg" as well, but we know for sure that we only emit
audio data.
2010-10-03 16:22:03 +02:00
Tony Miller
e69df36e4a
configure.ac: Disable unix domain sockets by default if we're on cygwin.
2010-10-02 13:27:02 -07:00
Denis Krjuchkov
e10b872fc3
main_win: replaced g_error usages with MPD_ERROR
2010-09-28 22:38:57 +06:00
Denis Krjuchkov
2b78358af5
mpd_error: more correct MPD_ERROR implementation
...
Original implementation does not handle
if (...)
MPD_ERROR("die");
else
...
case well. This change fixes handling of such cases.
2010-09-28 18:12:14 +02:00
Thomas Jansen
e3f4c7b91c
input/rewind: enable for MMS
2010-09-28 12:56:47 +02:00
Andrew Morgan
a59ab3e2ee
playlist: make single mode 'sticky'
2010-09-28 12:52:52 +02:00
Thomas Jansen
28bcb8bdf5
eliminate g_error() usage
...
Replaced all occurrences of g_error() with MPD_ERROR() located in a new header
file 'mpd_error.h'. This macro uses g_critical() to print the error message
and then exits gracefully in contrast to g_error() which would internally call
abort() to produce a core dump.
The macro name is distinctive and allows to find all places with dubious error
handling. The long-term goal is to get rid of MPD_ERROR() altogether. To
facilitate the eventual removal of this macro it was added in a new header
file rather than to an existing header file.
This fixes #2995 and #3007 .
2010-09-25 15:00:43 +02:00
Thomas Jansen
9af9fd1400
output/httpd: bind_to_address support (including IPv6)
...
Added support for a new optional configuration setting for the httpd output
named "bind_to_address". Setting it to a specific IP address (v4 or v6) will
cause the httpd output to bind to that address exclusively. Supporting
multiple addresses in parallel is future work.
This implements the feature requests #2998 and #2646 .
2010-09-25 15:00:43 +02:00
Thomas Jansen
0c80bd5fc0
conf: Whitespace cosmetics
2010-09-25 15:00:43 +02:00
Denis Krjuchkov
7563ece236
.gitignore: added mpd.exe to ignore list
2010-09-25 15:01:53 +06:00
Max Kellermann
a14cd97f56
playlist: fix "queued" check in playlist_sync()
...
The check was meant to fix an assertion failure, but it was the wrong
way around. This broke cross-fading most of the time.
2010-09-23 23:29:36 +02:00
Max Kellermann
0955f33a86
decoder/mp4ff: support more variations of "album artist"
...
According to the mantis bug report 2847, there are several possible
variations of the "album artist" tag:
- "album artist"
- "album_artist"
- "albumartist"
This patch adds support for the latter two.
2010-09-23 21:19:41 +02:00
Max Kellermann
a016fb4048
listen: fix "unused parameter" warning on WIN32
2010-09-23 20:51:23 +02:00
Denis Krjuchkov
e8ebb1af91
main: Add Windows Service support
...
I've added PIPE_EVENT_SHUTDOWN because calling g_main_loop_quit() do not work when called from another thread.
Main thread was sleeping in g_poll() so I needed some way to wake it up.
By some strange reason call close(event_pipe[0]) in event_pipe_deinit() hangs.
In current implementation that code never reached so that was not a problem :-)
I've added a conditional to leave event_pipe[0] open on Win32.
2010-09-23 20:42:33 +02:00
Thomas Jansen
9fa3d7c4fa
playlist_state: Fix the "state" line in the output
...
An '\n' was erroneously inserted in the line containing the state, e.g.
"state: \nplay" instead of "state: play".
Fix for bug #2992 .
2010-09-23 20:41:23 +02:00
Thomas Jansen
54294366d5
rewind_input_plugin: Update MIME not only once
...
The assumption that MIME type is set only once is not valid with CURL,
as URL redirections may update the MIME type.
This fixes bug #3044 .
2010-09-23 20:39:13 +02:00
Max Kellermann
9423b456a1
zeroconf-bonjour: use g_htons() instead of htons()
...
htons() is not available if netinet/in.h is not included.
2010-09-23 09:01:37 +02:00
Max Kellermann
64209749fb
directory: cast DEVICE_INARCHIVE, DEVICE_CONTAINER to dev_t
...
Fix gcc warning.
2010-09-23 09:01:25 +02:00
Max Kellermann
586b7601c6
playlist_database: initialize pm.mtime
2010-09-23 09:01:23 +02:00
Max Kellermann
4425989898
fd_util: work around aliasing warning in recvmsg_cloexec()
2010-09-23 09:01:20 +02:00
Max Kellermann
5b996ab880
output/httpd: access sockaddr_storage object directly
...
Work around aliasing warning.
2010-09-23 09:01:17 +02:00
Max Kellermann
635cfbae13
decoder_control: use g_free() to manage mixramp allocations
...
Be consistent with the rest of MPD, and don't use the non-portable
header "malloc.h".
2010-09-23 08:49:21 +02:00
Max Kellermann
922e51e8a9
autogen.sh: enable automake 1.11
2010-09-23 08:37:26 +02:00
Avuton Olrich
6d9f1ad61f
configure.ac: Add enable_tremor to post decoder plugin tests.
2010-09-11 20:08:35 -07:00
Avuton Olrich
841b9b3d63
configure.ac: Move use_tremor to enable_tremor.
2010-09-11 20:07:55 -07:00
Avuton Olrich
a3745ae7f3
configure.ac: Correct and clean up tremor check in oggvorbis test.
2010-09-11 20:06:05 -07:00
Avuton Olrich
27d7013ff8
configure.ac: Only enable libogg if OggTremor path/opt has not been specified.
2010-09-11 19:57:44 -07:00
Avuton Olrich
27d3340af2
configure.ac: Fix OggFLAC/tremor test.
2010-09-11 19:28:30 -07:00
Qball Cow
4a7abc9d44
Correctly terminate stream_title.
...
This caused random data to be send via icy-server if the played
song had no tags.
2010-09-08 13:19:59 +02:00
Max Kellermann
589bb54111
input/curl: fix version check for curl_multi_timeout()
...
According to the CURL web site, curl_multi_timeout() was added in
version 7.15.4:
http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
2010-09-07 21:40:56 +02:00
Max Kellermann
d953225531
update_walk: update existing playlist entry
...
Fixes duplicate playlist entries.
2010-09-07 20:22:05 +02:00
Max Kellermann
663815ead8
playlist_vector: update_or_add() returns bool
...
False if the vector was not modified.
2010-09-07 20:21:19 +02:00
Anton Khirnov
bc87ec0059
doc/protocol: update descriptions of the searching commands
2010-08-31 06:56:54 +02:00
Max Kellermann
917434269c
output/httpd: implement "pause"
...
Send silence to all connected clients while paused, to avoid
connection interruption.
2010-08-31 06:50:14 +02:00
Max Kellermann
a77506ae21
output/httpd: forced flush after 32 kB of input data
...
Avoid buffer underruns on the streaming client, if the encoder is "too
efficient" (e.g. when encoding silence while paused).
2010-08-31 06:49:06 +02:00
Johan Kiviniemi
ed5d297301
ReplayGain filter: allow gain > 100 %
...
The ReplayGain filter clamped the gain to max. 100 % even if the
algorithm determined the signal needed a boost. That would result in any
such tracks being played with too low volume, effectively defeating the
purpose of the filter.
2010-08-23 16:34:11 +03:00
Max Kellermann
64dacd175a
output_thread: fix race condition after CANCEL command
...
Clear the notification before finishing the CANCEL command, so the
notify_wait() after that will always wait for the right notification,
sent by audio_output_all_cancel().
2010-08-19 11:05:24 +02:00
Max Kellermann
625e4755d1
notify: add function notify_clear()
2010-08-19 11:03:53 +02:00
Anton Khirnov
92b6ba9eff
doc/protocol: mention that 'status' command also returns 'random'
2010-08-15 11:35:21 +02:00
Max Kellermann
68c02fc95a
fd_util: add function dup_cloexec()
...
Unfortunately, there's no "optimized" implementation here. We can't
use Linux's proprietary system call dup3(), because it would require
us to specify the new descriptor.
2010-08-03 18:03:55 +02:00
Max Kellermann
d18c1b1a0a
fd_util: add function recvmsg_cloexec()
2010-08-03 17:51:35 +02:00
Max Kellermann
c980fc653d
fd_util: add function socketpair_cloexec()
2010-08-03 17:51:35 +02:00
Avuton Olrich
36782a977a
Modify version string to post-release version 0.16~git
2010-07-25 07:44:45 -07:00
Avuton Olrich
653c4792b5
mpd version 0.16~alpha2
2010-07-25 07:44:44 -07:00
Serge Ziryukin
5cb061ebdf
Makefile.am: simplify (de)installation of doxygen-generated documentation
...
This also fixes installation when no *.gif files found in 'doc/api/html' folder.
2010-07-25 14:04:24 +02:00
Max Kellermann
12f4225d6b
Makefile.am: fix out-of-tree doxygen call
...
This hack creates a copy of doc/doxygen.conf with the INPUT setting
replaced.
2010-07-25 14:02:10 +02:00
Max Kellermann
50862a1dd1
valgrind.suppressions: update g_get_language_names()
2010-07-25 13:38:08 +02:00
Max Kellermann
013ebb638a
playlist_song: fix memory leak
...
Free the temporary path string in apply_song_metadata().
2010-07-25 13:35:59 +02:00
Max Kellermann
bedb82bf4d
directory: free playlist vector in directory_free()
2010-07-25 13:31:39 +02:00
Max Kellermann
cbb1ab58cd
queue_save: save tags and range of non-database songs
...
Use the functions song_save() and song_load() to use the same format
as in the database file for those songs which need the tags.
2010-07-25 13:28:54 +02:00
Max Kellermann
b01235e330
song_save: save start_ms and end_ms
...
While this is not useful for the database, it may become useful for
reusing this code for the state file.
2010-07-25 13:28:52 +02:00
Max Kellermann
8341a9f7b2
queue_save: simplify get_song()
...
Don't try db_get_song() if the URI has a scheme.
2010-07-25 13:28:48 +02:00
Max Kellermann
b233c145fa
{queue,song}_print: print relative paths if possible
...
If a song with an absolute path points inside the music directory,
print only the relative part. This happens when partial songs from a
playlist file were loaded.
2010-07-25 13:28:39 +02:00
Max Kellermann
9de5bb9e23
queue_print: hide HTTP password in the "playlist" command
...
I've already changed the "playlistinfo" command to hide HTTP
passwords, but forgot to do the same for the simpler "playlist"
command. This patch changes queue_print_uris() to use the code from
song_print_uri().
2010-07-25 13:24:19 +02:00
Max Kellermann
0c5305c51f
queue_save: move code to queue_save_song()
2010-07-25 12:43:54 +02:00
Max Kellermann
63c9a20f96
queue_save: queue_load_song() returns void
...
The only caller doesn't use its return value, and the value isn't
useful anyway.
2010-07-25 12:43:18 +02:00
Max Kellermann
b40c0811f4
song_save: song_load() returns NULL instead of false
2010-07-25 12:23:52 +02:00
Max Kellermann
838790fc2d
state_file: use the text_file library
...
Don't use a large stack buffer.
2010-07-25 12:01:59 +02:00
Max Kellermann
1ff2d5b689
playlist_state: simplify printf() calls
...
Let the C compiler concatenate string constants.
2010-07-25 12:01:59 +02:00
Max Kellermann
e4b7a113fd
database, ...: remove EINTR checks after stdio calls
...
MPD doesn't have child processes anymore, and thus we're not expecting
to receive SIGCHLD very often. Since hard disk access isn't
interrupted by signals anyway, we don't need those excessive checks.
2010-07-25 12:01:59 +02:00
Max Kellermann
7820ebb82e
directory_save: duplicate the playlist name
...
The function playlist_metadata_load() will overwrite the input buffer
before using the "name" parameter; since "name" points to the same
buffer, we'll get a corrupted string.
2010-07-25 12:01:59 +02:00
Rasi
31ab0b3df1
Added album tag support for libgme decoder
2010-07-23 23:13:03 +02:00
Max Kellermann
e598922133
update: store playlist files in database
...
Don't open the music directory for each "lsinfo" call. Get the list
of playlist files from the memory database.
2010-07-21 09:26:50 +02:00
Max Kellermann
e21ad70f3f
song_save: pass const songvec to songvec_save()
2010-07-21 09:26:50 +02:00
Max Kellermann
a81cb932c2
song_save: include cleanup
2010-07-21 09:26:46 +02:00
Max Kellermann
3d66a4fee8
database: remove outdated comment
2010-07-21 09:20:14 +02:00
Avuton Olrich
676739c426
Modify version string to post-release version 0.15.13~git
2010-07-21 06:40:33 +02:00
Max Kellermann
dea5601e79
tag_rva2: move code to rva2_apply_data()
2010-07-20 23:05:24 +02:00
Max Kellermann
43a840552f
tag_rva2: add struct rva2_data
...
.. and several accessor inline functions, to simplify the calling
code.
2010-07-20 23:05:06 +02:00
Max Kellermann
2f16f8e9f7
tag_rva2: name the CHANNEL_* enum
2010-07-20 23:05:01 +02:00
Max Kellermann
4364b30c42
decoder/mad: move RVA2 code to tag_rva2.c
2010-07-20 23:03:54 +02:00
Max Kellermann
c0da938d4f
Merge release 0.15.12 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2010-07-20 23:03:06 +02:00
Max Kellermann
fb19aa355e
replay_gain_info: fix indentation
2010-07-20 22:59:04 +02:00
Max Kellermann
6135419ac3
test/run_decoder: dump replay gain
2010-07-20 22:58:42 +02:00
Max Kellermann
0fec8e0864
mpd version 0.15.12
2010-07-20 22:57:57 +02:00
Max Kellermann
1f976d6e54
input/curl: remove assertion after curl_multi_fdset()
...
Some users reported that MPD crashes when using a new CURL version
with the threaded DNS resolver enabled. It seems that
curl_multi_fdset() returns no file descriptor when the DNS resolver
runs in another thread, so MPD does not have any event to wait for.
On the CURL mailing list, somebody suggested to sleep for a fixed
amount of time. This is not an elegant solution, because daemons
should never have to sleep without waiting for an event. I hope the
CURL developers will review the API and remove the threaded DNS
resolver.
Meanwhile, I'm removing the assertion in question, to allow those
unfortunate users running the latest CURL version to continue using
MPD.
2010-07-20 22:55:13 +02:00
Max Kellermann
a4908dca42
input/curl: query timeout from CURL
...
Use curl_multi_timeout() to determine the select() timeout, instead of
hard-coding one second.
2010-07-20 22:37:34 +02:00
Max Kellermann
8b055c3127
tag_rva2: set "gain", not "peak"
...
RVA2 tags only store the "gain" value, there is no "peak" attribute.
2010-07-20 22:32:55 +02:00
Max Kellermann
172182b18f
decoder/mad: parse_rva2() returns bool
2010-07-20 18:27:11 +02:00
Max Kellermann
898a13f196
decoder/wildmidi: support version 0.2.3
...
In libwildmidi 0.2.3, the function WildMidi_SampledSeek() was removed,
without changing the SO name. This patch adds an autoconf check for
that function. Fall back to WildMidi_FastSeek() if
WildMidi_SampledSeek() is not available anymore.
2010-07-20 18:23:56 +02:00
Max Kellermann
2bc5161e95
Merge release 0.15.11 from branch 'v0.15.x
...
Conflicts:
NEWS
configure.ac
src/decoder/ffmpeg_decoder_plugin.c
src/decoder/mikmod_decoder_plugin.c
src/decoder/mp4ff_decoder_plugin.c
src/decoder/vorbis_decoder_plugin.c
src/directory_print.c
src/playlist_control.c
src/tag_ape.c
2010-07-19 23:49:15 +02:00
Max Kellermann
e2e8d0d2f3
decoder/ffmpeg: fix libavformat 0.6 by using av_open_input_stream()
...
libavformat 0.6 does not pass the original URI pointer to the "open"
method, which leads to a crash because MPD was using a dirty hack to
pass a pointer to that method.
This patch switches to av_open_input_stream() with a custom
ByteIOContext class, instead of doing the URI string hack with
av_open_input_file().
Loosely based on a patch from Jasper St. Pierre.
2010-07-19 23:03:06 +02:00
Max Kellermann
b2e3c0757b
decoder/ffmpeg: manual format probing
...
Use the libavformat function av_probe_input_format() to probe the
AVInputFormat, instead of letting av_open_input_file() do it
implicitly. We will switch to av_open_input_stream() very soon, which
does not have the probing code.
Loosely based on a patch from Jasper St. Pierre.
2010-07-19 22:59:59 +02:00
Avuton Olrich
b97e92468f
Modify version string to post-release version 0.15.12~git
2010-07-14 17:33:29 -07:00
Avuton Olrich
56bf4ede18
mpd version 0.15.11
2010-07-14 17:33:28 -07:00
Anton Khirnov
0fc0196dba
ffmpeg: read the audio stream metadata in addition to global
...
in some formats, e.g. vorbis, the metadata is stored per-stream.
2010-07-12 11:36:55 +02:00
Anton Khirnov
1492324c76
ffmpeg: factor tag_type <-> ffmpeg tag name maps into a table.
2010-07-12 11:36:55 +02:00
Max Kellermann
49bc317fb8
decoder/ffmpeg: fix libavformat 0.6 by using av_open_input_stream()
...
libavformat 0.6 does not pass the original URI pointer to the "open"
method, which leads to a crash because MPD was using a dirty hack to
pass a pointer to that method.
This patch switches to av_open_input_stream() with a custom
ByteIOContext class, instead of doing the URI string hack with
av_open_input_file().
Loosely based on a patch from Jasper St. Pierre.
2010-06-30 23:41:32 +02:00
Max Kellermann
375a09d6f6
decoder/ffmpeg: manual format probing
...
Use the libavformat function av_probe_input_format() to probe the
AVInputFormat, instead of letting av_open_input_file() do it
implicitly. We will switch to av_open_input_stream() very soon, which
does not have the probing code.
Loosely based on a patch from Jasper St. Pierre.
2010-06-30 23:40:31 +02:00
Max Kellermann
0265c34bed
decoder/ffmpeg: free URI, fix memory leak
...
Free the string allocated by decoder_get_uri().
2010-06-30 23:40:04 +02:00
Max Kellermann
a1882f48be
decoder/vorbis: handle uri==NULL
...
This fixes a theoretical crash, which has never occurred in practice.
2010-06-30 23:38:49 +02:00
Anton Khirnov
c3569814bd
ffmpeg: read more metadata.
2010-06-30 23:18:45 +02:00
Max Kellermann
814daac5ba
decoder/ffmpeg: free AVFormatContext on error
...
Fix a memory leak in some code paths.
2010-06-30 23:14:43 +02:00
Max Kellermann
0d03bdce6d
configure.ac: check ffmpeg version number with pkg-config
...
Replace the check for avcodec_decode_audio2(), assume it's present in
libavcodec version 51.
2010-06-30 21:56:04 +02:00
Max Kellermann
768be22f7c
pcm_buffer: make the buffer pointer "void"
2010-06-30 21:55:46 +02:00
Max Kellermann
ec89ce5a8a
decoder/mp4ff: support tag "album artist"
...
We already supported "albumartist", but it seems some folks also use
"album artist" (with a space).
2010-06-30 21:55:03 +02:00
Andreas Vögele
34415bf0b6
Make get_remote_uid() work on BSD
...
I've attached a patch that will make file URIs work on operating systems
that provide the getpeereid() function call to check the user ID of the
peer connected to a UNIX domain socket.
2010-06-30 21:42:01 +02:00
Max Kellermann
0a0c78674f
playlist: emit IDLE_OPTIONS when resetting single mode
2010-06-30 21:40:33 +02:00
Max Kellermann
1bffdabe41
directory_print: return void
...
There is no useful return value here.
2010-06-30 21:39:34 +02:00
Max Kellermann
77e6810c14
decoder/mikmod: fix memory leak
...
The return value of Player_LoadTitle() is allocated with malloc(), and
must be freed by the caller.
2010-06-30 19:37:36 +00:00
Max Kellermann
5ebe33653c
decoder/mp4ff: remove duplicate entries in the tag name table
...
Reuse the function tag_name_parse_i().
2010-06-30 21:36:15 +02:00
Max Kellermann
8e3eace289
decoder/mp4ff: moved code to mp4ff_tag_name_parse()
2010-06-30 21:36:00 +02:00
Max Kellermann
284659034d
tag_ape: remove duplicate entries in the tag name table
...
Reuse the function tag_name_parse_i().
2010-06-30 21:33:19 +02:00
Max Kellermann
9550c87327
tag: added function tag_name_parse()
...
Convert a string into a tag_type enum.
2010-06-30 21:31:45 +02:00
Max Kellermann
e223e8a5b5
tag_ape: move code to tag_ape_name_parse()
2010-06-30 21:30:21 +02:00
Max Kellermann
4d6d372a5b
decoder/vorbis: use single global ov_callbacks constant
...
Initialize the ov_callbacks struct at compile time.
2010-06-30 19:24:41 +00:00
Max Kellermann
0aeec90590
decoder/mp4ff: support tags "albumartist", "band"
...
I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it
might be better than nothing.
2010-06-30 21:22:13 +02:00
Max Kellermann
cfcd84655c
decoder/mp4ff: use tag_table.h to parse tag names
...
Convert if/else/else/... to a loop.
2010-06-30 21:19:30 +02:00
Max Kellermann
5092eaf1cc
tag_ape: move table lookup to tag_table.h
...
Allow code sharing.
2010-06-30 21:18:27 +02:00
Max Kellermann
9328558fc7
tag_ape: support album artist
...
I took this tag name from a MusePack sample file I got from a user.
It is not documented in the APE specification:
http://wiki.hydrogenaudio.org/index.php?title=APE_key
People seem to be using undocumented extensions to the specification
anyway, and the best we can do is attempt to support them.
2010-06-30 21:16:28 +02:00
Max Kellermann
026bd15872
tag_ape: simplified the apeItems array
...
Make "enum tag_type" the array index, and convert apeItems to a sparse
array.
2010-06-30 21:15:52 +02:00
Max Kellermann
7cca55549b
tag_ape: moved code to tag_ape_import_item()
...
Improve code readability.
2010-06-30 21:15:39 +02:00
Max Kellermann
c7e89ea3a3
tag_ape: converted apeItems and tagItems to global vars
...
Don't initialize those arrays each time tag_ape_load() is called.
2010-06-30 21:15:14 +02:00
Max Kellermann
002b283433
configure.ac: check ffmpeg version number with pkg-config
...
Replace the check for avcodec_decode_audio2(), assume it's present in
libavcodec version 51.
2010-06-30 10:51:07 +02:00
Max Kellermann
5a2820ca3d
pcm_buffer: make the buffer pointer "void"
2010-06-30 08:21:48 +02:00
Max Kellermann
9eb292c1e5
decoder/mp4ff: support tag "album artist"
...
We already supported "albumartist", but it seems some folks also use
"album artist" (with a space).
2010-06-25 22:54:18 +02:00
Max Kellermann
5216cfb3c8
playlist_print: use playlist_open_any()
...
Allow printing remote playlists with the commands "listplaylist" and
"listplaylistinfo".
2010-06-25 22:43:52 +02:00
Max Kellermann
373d1843a8
playlist_queue: use playlist_open_any()
2010-06-25 22:43:52 +02:00
Max Kellermann
82ee278f53
playlist_any: new library to simplify opening playlist files
...
The new function playlist_open_any() combines playlist_mapper_open(),
playlist_list_open_uri() and playlist_list_open_stream(), providing an
easy API for all of them.
2010-06-25 22:43:52 +02:00
Max Kellermann
c27fc26ecd
playlist_list: probe plugin without MIME attributes
...
If the MIME type of a stream contains a semicolon, remove it and the
text after it to probe for a playlist plugin.
2010-06-25 22:43:52 +02:00
Max Kellermann
fba13bd5d2
playlist_queue: simplify error handler
...
Return early on error, save one level of indent.
2010-06-25 22:37:34 +02:00
Max Kellermann
68f75955d8
playlist_list: moved input_stream.ready loop to calling function
...
Merged both loops into playlist_list_open_stream(). This is needed
because playlist_list_open_stream() needs to know the MIME type, which
is only known after the stream has become "ready".
2010-06-25 22:37:34 +02:00
Max Kellermann
cd21cfc115
uri: really count dots in verify_uri_segment()
...
This buggy implementation failed to allow "..." sequences, because the
dot count was always zero. The usefulness of allowing "..." (or more
dots) is debatable, but since it's a valid file name, we allow it.
2010-06-25 21:56:12 +02:00
Max Kellermann
05703cf73b
update .gitignore
2010-06-25 21:46:16 +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
Max Kellermann
eb6188f8c0
test/dump_playlist: print open-ended range
2010-06-25 20:02:55 +02:00
Max Kellermann
6bb7a7439d
song_print: simplified start_ms/end_ms check
2010-06-25 20:02:55 +02:00
Aaron Griffith
ca6110d92f
playlist_list: wait for input stream to become ready
...
Fixes an assertion failure in the input_stream_seek() call.
2010-06-25 19:20:20 +02:00
Avuton Olrich
a219d488d0
Modify version string to post-release version 0.16~git
2010-06-22 04:45:24 -07:00
Avuton Olrich
1746257492
mpd version 0.16~alpha1
2010-06-22 04:45:24 -07:00
Max Kellermann
07423c300e
Makefile.am: append LIBWRAP_LDFLAGS to OUTPUT_LIBS
...
This fixes test/run_output.
2010-06-21 09:45:35 +02:00
Andreas Vögele
69fcdc6a07
autogen.sh: don't use "+" in sed expression
...
Replaces the expression [0-9]\+ by [0-9][0-9]* in autogen.sh. The
special character \+ is not POSIX compatible and thus not supported by
all sed implementations.
2010-06-19 13:49:20 +02:00
Andreas Vögele
dda5415def
Make get_remote_uid() work on BSD
...
I've attached a patch that will make file URIs work on operating systems
that provide the getpeereid() function call to check the user ID of the
peer connected to a UNIX domain socket.
2010-06-19 13:47:10 +02:00
Andrzej Rybczak
4347114455
client: increase send_buf from 4kB to 16kB
...
this greatly improves performance of commands that return a lot
of data, e.g. search results or recursive content of a directory,
while being connected to local mpd via tcp/ip socket.
2010-06-19 13:45:54 +02:00
Max Kellermann
9fb26b5617
playlist: check "queued" before calling playlist_update_queued_song()
...
Workaround for an assertion failure.
2010-06-19 13:45:15 +02:00
Max Kellermann
442b327582
playlist: protect acess to player state in playlist_sync()
2010-06-19 13:33:39 +02:00
Max Kellermann
cff727644d
playlist: move checks out of playlist_sync_with_queue()
...
Rename the function to playlist_song_started(), which gets only called
if the song has actually started.
2010-06-19 13:33:32 +02:00
Max Kellermann
7f80349494
player_control: hold mutex in pc_play(), pc_pause()
...
Race condition fix.
2010-06-19 13:19:30 +02:00
Avuton Olrich
a6ef696132
Makefile.am: distribute refcount.h
2010-06-13 19:49:38 -07:00
Max Kellermann
53f08a95eb
Makefile.am: distribute open.h
2010-06-08 21:40:51 +02:00
Max Kellermann
d0d2d6ed1b
filter/route: fixed unsigned/signed comparison
...
Fixes a clang warning.
2010-06-06 21:56:30 +02:00
Tim Phipps
4e83b79d2b
output/httpd: add libwrap support
...
libwrap support is in MPD but only for the control port. This patch
adds support for the http port. The code is copied from
src/client_new.c
2010-06-06 21:53:24 +02:00
Max Kellermann
37e69a89b9
directory_print: print a list of playlist files in "lsinfo"
...
Print those files which can be handled by a playlist plugin.
2010-06-01 10:00:01 +02:00
Max Kellermann
6f28eb4c0a
playlist_list: export playlist_suffix_supported()
2010-06-01 09:59:56 +02:00
Max Kellermann
caf93d9a2c
playlist_list: playlist_list_open_path() returns input_stream
...
Memory leak fix. The input_stream object passed to
playlist_list_open_stream_suffix() must be closed by the caller - this
however never happens in playlist_list_open_path(), because it does
not return it to the caller.
2010-06-01 09:59:54 +02:00
Max Kellermann
747e945d29
playlist_list: move fallback g_uri_parse_scheme() to glib_compat.h
2010-06-01 09:59:52 +02:00
Max Kellermann
067d7212bf
playlist: emit IDLE_OPTIONS when resetting single mode
2010-06-01 09:59:46 +02:00
Romain Bignon
867b93a5b2
single mode: at the end of the song, pause on the next song instead of stop
2010-05-31 23:36:16 +02:00
Max Kellermann
53647c8ba1
directory_print: return void
...
There is no useful return value here.
2010-05-31 22:16:03 +02:00
Romain Bignon
b571ba27a4
fix crash when decoder is NULL
2010-05-31 22:11:59 +02:00
Max Kellermann
de8f2739c2
decoder/mikmod: fix memory leak
...
The return value of Player_LoadTitle() is allocated with malloc(), and
must be freed by the caller.
2010-05-31 10:24:08 +02:00
Max Kellermann
2c1c588868
decoder/mikmod: duplicate the path only once
2010-05-31 10:22:08 +02:00
Max Kellermann
e271f69a34
decoder/mikdmod: moved local variable declarations in tag_dup()
2010-05-31 10:16:09 +02:00
Max Kellermann
39105f2119
decoder/wildmidi: moved local variable declarations in tag_dup()
2010-05-31 10:14:48 +02:00
Max Kellermann
4e080a9b06
decoder/gme: replace macro GME_BUF_SIZE
...
Added macros with better names: GME_BUFFER_FRAMES, GME_BUFFER_SAMPLES
(the former only used to calculate the latter).
2010-05-31 10:03:43 +02:00
Max Kellermann
d55740808d
decoder/gme: added constants for sample rate and channels
...
Move into enums.
2010-05-31 10:02:43 +02:00
Max Kellermann
6566038df9
decoder/gme: pass the whole buffer to decoder_data()
...
Pass sizeof(buf) to decoder_data(), not the number of samples (which
is half the size). At the same time, pass GME_BUF_SIZE to gme_play()
- libgme really wants to get the number of samples, not the number of
stereo frames. Previously, this plugin had been using only the first
half of the buffer.
2010-05-31 09:57:15 +02:00
Max Kellermann
f0faf00320
decoder/gme: allocate tag later, fixes memory leak
...
Allocate the "tag" object after the file has been opened successfully.
2010-05-31 09:43:25 +02:00
Max Kellermann
51c7577c8f
decoder/mp4ff: rename and move local variable
...
Allocate the "tag" object after the file has been checked. That
removes one tag_free() call in an error handler.
2010-05-31 09:35:49 +02:00
Max Kellermann
be308c6657
decoder/mp4ff: merge code into mp4ff_input_stream_open()
2010-05-31 09:29:45 +02:00
Max Kellermann
1729a0b437
decoder/mp4ff: move mp4ff_callback_t into mp4ff_input_stream
...
Allocate only one item on the stack.
2010-05-31 09:23:27 +02:00
Max Kellermann
1b2fc2ae19
decoder/mp4ff: rename mp4_context to mp4ff_input_stream
2010-05-31 09:22:42 +02:00
Max Kellermann
58a75f0b78
decoder/mp4ff: remove duplicate entries in the tag name table
...
Reuse the function tag_name_parse_i().
2010-05-31 08:48:41 +02:00
Max Kellermann
daf6e2b5da
decoder/mp4ff: moved code to mp4ff_tag_name_parse()
2010-05-31 08:47:59 +02:00
Max Kellermann
71da5b026c
tag_ape: remove duplicate entries in the tag name table
...
Reuse the function tag_name_parse_i().
2010-05-31 08:24:05 +02:00
Max Kellermann
2f68ea635b
tag_ape: move code to tag_ape_name_parse()
2010-05-31 08:22:53 +02:00
Max Kellermann
ca08c4dbf4
decoder/vorbis: rename local variable "ret"
2010-05-31 00:06:37 +02:00
Max Kellermann
8af52fa205
decoder/vorbis: implement method stream_tag()
...
This allows tags in archive files.
2010-05-31 00:02:57 +02:00
Max Kellermann
3b0bf856c4
decoder/vorbis: move code to vorbis_open_stream()
2010-05-31 00:00:04 +02:00
Max Kellermann
28f5803d34
decoder/vorbis: use single global ov_callbacks constant
...
Initialize the ov_callbacks struct at compile time.
2010-05-30 23:59:36 +02:00
Max Kellermann
0b72299857
decoder/vorbis: rename struct vorbis_decoder_data to vorbis_is
2010-05-30 23:57:58 +02:00
Max Kellermann
4a2302c2ed
inotify_update: follow symlinks
...
This is probably unsafe, and doesn't protect against symlink loops,
but we will eventually add this when we bring update*.c and inotify*.c
closer together.
2010-05-30 23:45:47 +02:00
Max Kellermann
980201a665
inotify_update: fix assertion failure when music dir is deleted
...
This shouldn't really happen, but insane users might delete/rename the
music directory while MPD runs. What was even more insane was that
MPD crashed due to this. This is a workaround - there is currently
nothing useful we can do in this case; except maybe poll for the music
directory to reappear, but that's too much trouble for a user error.
2010-05-30 23:45:46 +02:00
Max Kellermann
d60bcd2869
test: added debug program "run_inotify"
2010-05-30 23:30:43 +02:00
Max Kellermann
017d61a1aa
decoder/mp4ff: support tags "albumartist", "band"
...
I'm not sure if mapping "band" to TAG_PERFORMER is correct, but it
might be better than nothing.
2010-05-30 22:55:02 +02:00
Max Kellermann
4028d03a6e
decoder/mp4ff: use tag_table.h to parse tag names
...
Convert if/else/else/... to a loop.
2010-05-30 22:52:45 +02:00
Max Kellermann
44b771aca1
decoder/mp4ff: rename plugin "mp4" to "mp4ff"
...
The underlying library is named "libmp4ff". To reduce confusion,
rename the plugin to a more specific name.
2010-05-30 22:52:44 +02:00
Max Kellermann
8c581eca4d
tag_ape: move table lookup to tag_table.h
...
Allow code sharing.
2010-05-30 22:52:19 +02:00
Max Kellermann
8e815bec9f
tag_ape: support album artist, MusicBrainz tags
...
I took these tag names from a MusePack sample file I got from a user.
These are not documented in the APE specification:
http://wiki.hydrogenaudio.org/index.php?title=APE_key
People seem to be using undocumented extensions to the specification
anyway, and the best we can do is attempt to support them.
2010-05-30 22:29:48 +02:00
Max Kellermann
9dda53e1d2
Merge release 0.15.10 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/input/mms_input_plugin.c
2010-05-30 18:26:33 +02:00
Avuton Olrich
65ad298460
Modify version string to post-release version 0.15.11~git
2010-05-30 08:59:00 -07:00
Avuton Olrich
57e95ea6f4
mpd version 0.15.10
2010-05-30 08:59:00 -07:00
Max Kellermann
442d2e74e3
decoder/mad: fix buffer variable name on !HAVE_ID3TAG
2010-05-30 17:27:03 +02:00
Daniel Seuthe
e8310211e2
filter/replay_gain: added option "replaygain_limit"
2010-05-30 17:06:08 +02:00
Avuton Olrich
3709b9aa11
configure: Surround statements with brackets to prevent being treated as args.
2010-05-26 12:38:03 -07:00
Avuton Olrich
c5a291ad74
configure.ac: Add sqlite results to the pretty print.
2010-05-25 22:01:28 -07:00
Avuton Olrich
894573657d
cmdline: Add default config paths for win32.
2010-05-20 06:56:43 -07:00
Max Kellermann
9cce1d749a
output/win32: new output plugin for Windows Wave
2010-05-20 09:33:05 +02:00
Max Kellermann
ed0b48040c
pcm_buffer: 8 kB alignment instead of 64 kB
...
Reduce the overhead. Most buffers used by MPD are around 2 to 4 kB.
8 kB seems large enough to keep heap fragmentation low.
Additionally, this patch fixes an off-by-one error in the alignment
formula.
2010-05-20 09:31:51 +02:00
Max Kellermann
9aeed06964
test: enable binary mode on stdin/stdout
...
Declaring the global variable _CRT_fmode is a documented hack. What
an ugly platform!
2010-05-20 09:20:30 +02:00
Max Kellermann
eda46bc07f
tag_{id3,ape}: explicitly open files in binary mode
...
Add the flag "b" to fopen(). Windows compatibility.
2010-05-20 09:14:11 +02:00
Max Kellermann
c727e86980
input/file, output/{fifo,recorder}: add O_BINARY to open() flags
...
Windows compatibility.
2010-05-20 09:13:39 +02:00
Max Kellermann
57b4013306
client: use sprintf() on WIN32
...
On mingw32, snprintf() expects a 64 bit integer instead of a "long
int" for "%li" - this is not consistent with our expectation, so we're
using plain sprintf().
2010-05-19 13:12:37 +02:00
Max Kellermann
fc5a7a8774
Makefile.am: disable test/read_mixer unless HAVE_ALSA
2010-05-19 11:47:55 +02:00
Max Kellermann
8248f498b2
event_pipe: use g_io_channel_read_chars() to drain the pipe
...
For some unknown reason, read() blocks on WIN32, even though it was
invoked inside the G_IO_IN callback. By switching to GIOChannel
functions, this problem is solved, and it works on both Linux and
Windows.
2010-05-19 11:37:39 +02:00
Max Kellermann
22f3ffb099
event_pipe: call g_io_channel_win32_new_fd()
...
On WIN32, use g_io_channel_win32_new_fd() instead of
g_io_channel_unix_new(). There doesn't seem to be a practical
difference, but it seems more correct.
2010-05-19 11:37:22 +02:00
Max Kellermann
81bd8ef73c
update_walk: don't check recursive symlinks on WIN32
...
inode numbers don't work on WIN32, and very few WIN32 users actually
use symlinks - seems ok to disable that check.
2010-05-19 11:36:07 +02:00
Max Kellermann
bedc172eab
crossfade: emulate strtok_r() on WIN32 with a function
...
Not a CPP macro. This adds the "unused" attribute to "saveptr", which
eliminates one gcc warning.
2010-05-18 23:56:53 +02:00
Max Kellermann
0a9b0dd070
command: fallback strftime() formats on WIN32
...
On WIN32, "%F" and "%T" are not implemented.
2010-05-18 23:54:12 +02:00
Max Kellermann
6aa0f61e15
socket_util: fix setsockopt() argument type on WIN32
...
In the winsock headers, the setsockopt() argument is declared as
"const char *", not "const void *".
2010-05-18 23:13:05 +02:00
Max Kellermann
4461c3d5d1
daemon: include glib.h on WIN32 for g_error()
2010-05-18 23:13:05 +02:00
Max Kellermann
fef46bcf49
fd_util: fd_set_cloexec() returns a value on WIN32
...
This function is empty on WIN32, but we need to return a value.
2010-05-18 23:09:07 +02:00
Max Kellermann
fa2ff849c5
input/ffmpeg: new input plugin using libavformat's "avio" library
2010-05-18 21:20:31 +02:00
Max Kellermann
6b2b91ff01
input/mms: removed empty method buffer()
...
input_stream_buffer() has a check for "buffer==NULL", so we don't need
an explicit empty implementation.
2010-05-18 21:20:31 +02:00
Max Kellermann
28736414a8
input/mms: initialize the "eof" attribute
2010-05-18 21:11:00 +02:00
Max Kellermann
e98bd55cbf
input/mms: fix memory leak in error handler
2010-05-18 20:57:57 +02:00
Daniel Seuthe
733962db2f
decoder_api: return effective replay gain
...
Pay attention to the ReplayGain mode "auto" and the
replay_gain_missing_preamp parameter inside of decoder_replay_gain().
2010-05-18 20:39:32 +02:00
Daniel Seuthe
f824ecdfa1
replay_gain_config: added function replay_gain_get_real_mode()
2010-05-18 20:30:03 +02:00
Max Kellermann
6c831e04a2
output/oss: 24 bit support via OSS4
...
Added #ifdefs on the macros AFMT_S24_NE and other OSS4 extensions.
2010-05-14 09:48:02 +02:00
Max Kellermann
67c48f66a6
output/oss: rewrite of the audio format detection
...
Removed the "supported" / "unsupported" arrays, and auto-detect on
every open() call, just like the ALSA output plugin.
2010-05-13 14:42:09 +02:00
Max Kellermann
5fa1c703de
output/oss: use the *_NE macros
...
Removed the macro AFMT_S16_MPD.
2010-05-13 14:34:22 +02:00
Avuton Olrich
bead892e21
AudioCompress: include stdint.h for int16_t definition.
...
In mingw32, int16_t is not defined by sys/types.h, but it is by stdint.h,
and it is in the int16_t man page as being defined in stdint.h. Thanks to
mithi for help debugging.
2010-05-11 18:48:22 -07:00
Avuton Olrich
8341daca4a
client_new: Send greeting using send() rather than write().
...
This is portable for win32 and fixes client logins there.
2010-05-08 16:48:01 -07:00
Tim Phipps
136759a298
mixramp: Remove maths from pcm_mix when using MixRamp overlaps.
2010-05-08 09:28:06 +02:00
Tim Phipps
0ac5b6e613
mixramp: Adjust MixRamp threshold to account for ReplayGain.
2010-05-08 00:19:44 -07:00
Avuton Olrich
eb5208c4f9
log: /dev/null doesn't exist on win32.
2010-05-08 00:17:34 -07:00
Max Kellermann
d88c3c8462
output_thread: call replay gain filter manually
...
Don't add it to the filter chain, because we need to apply replay gain
before cross-fading with the next song. Add a second replay_gain
filter which is used for the song being faded in (chunk->other).
2010-05-02 18:21:16 +02:00
Max Kellermann
5399a72ec1
player_thread: move cross-fading to output thread
...
Remove cross_fade_apply(), and call pcm_mix() in the output thread,
mixing the chunk and chunk->other together.
2010-05-02 17:46:07 +02:00
Max Kellermann
d093fb2441
chunk: added attribute "other"
...
Preparation for cross-fading support in the output thread.
2010-05-02 17:46:06 +02:00
Max Kellermann
0140804ef9
output_thread: moved code to ao_filter_open(), ao_filter_close()
2010-05-02 17:38:16 +02:00
Max Kellermann
ecb5f68ba8
output_thread: moved filter invocation to ao_filter_chunk()
2010-05-02 17:34:35 +02:00
Max Kellermann
55bf242635
filter/replay_gain: removed duplicate *dest_size_r assignment
2010-05-02 17:34:27 +02:00
Avuton Olrich
7dba410c26
configure.ac: Move the encoders before the audio outputs.
...
Move encoder before audio outputs. Makes sense to keep them after
decoders and some audio outputs need to know wheather encoders are
present.
2010-04-26 06:49:12 -07:00
Daniel Seuthe
92e66e5ab2
replay_gain: added mode "auto"
2010-04-25 13:51:58 +02:00
Max Kellermann
54dedef9cf
configure.ac: removed stray comma
2010-04-25 13:51:54 +02:00
Avuton Olrich
b8b2ef3de1
configure.ac: Add libogg section
...
Add libogg section rather than checking for it every time it's necessary.
2010-04-23 06:53:26 -07:00
Avuton Olrich
681128def4
configure.ac: Fix an omission during moving oggvorbis to decoder plugins.
2010-04-22 20:00:25 -07:00
Avuton Olrich
f4f4a908bb
configure.ac: When compiling FLAC with ogg API, linking with ogg is mandatory.
2010-04-22 19:56:23 -07:00
Avuton Olrich
7c37f2879b
configure.ac: Move LAME encoder subheader to correct spot.
2010-04-22 19:09:06 -07:00
Avuton Olrich
615ccd1070
configure.ac: Add optional third variable to results.
...
Add optional third value to results() to allow for non "yes" answers which are
considered positive.
2010-04-21 12:23:38 -07:00
Avuton Olrich
6ed69e6395
libOggFLAC.m4: Remove libOggFLAC.m4 as it's buggy.
2010-04-21 12:23:38 -07:00
Avuton Olrich
f946a182a3
configure.ac: Rewrite the liboggflac tests.
...
Rewrite the liboggflac tests, the m4 macro is way too complicated for no
reason and it's buggy.
2010-04-21 12:23:38 -07:00
Avuton Olrich
d3fcb81da0
configure.ac: Fix a couple of syntax errors created by the moves.
2010-04-21 12:23:37 -07:00
Avuton Olrich
7e42637b74
configure.ac: Clean up the wording and lines at the end of the file.
2010-04-21 12:23:37 -07:00
Avuton Olrich
dbe93d4a6d
configure.ac: Merge the streaming and nonstreaming sections.
2010-04-21 12:23:37 -07:00
Avuton Olrich
20bc25cdcc
configure.ac: Move audio output tests to Post Audio Output Plugins section.
2010-04-21 12:23:37 -07:00
Avuton Olrich
13c0788334
configure.ac: Move protocol tests to the Post Protocol Tests section.
2010-04-21 12:23:37 -07:00
Avuton Olrich
672cf84a32
configure.ac: Remove errant header.
2010-04-21 12:23:37 -07:00
Avuton Olrich
2834f7802f
configure.ac: Move decoder minimum test to Post Decoder Plugins tests.
2010-04-21 12:23:37 -07:00
Avuton Olrich
b135483abc
configure.ac: New pretty print results menu.
...
This commit adds a new pretty print menu, we've (far) outgrown the old
menu which because hard to traverse.
2010-04-21 12:23:37 -07:00
Avuton Olrich
ba36cbde06
configure.ac: Add a comment in libsndfile about possible disabling.
2010-04-21 12:23:37 -07:00
Avuton Olrich
f153681522
configure.ac: Move AC_DEFINE for Ogg Tremor under other if conditional.
...
Ogg Tremor doesn't have the ability to be disabled under the first if
conditional, might as well AC_DEFINE there.
2010-04-21 07:35:33 -07:00
Avuton Olrich
d73291959b
configure.ac: Organize all added CFLAGs.
2010-04-21 07:35:32 -07:00
Avuton Olrich
01a675eb5f
configure.ac: Documentation whitespace fixes.
2010-04-21 07:35:32 -07:00
Avuton Olrich
be5143c0f3
configure.ac: Move SHOUTcast output to Streaming Audio Plugins.
2010-04-21 07:35:32 -07:00
Avuton Olrich
b7ee1f5c40
configure.ac: Move Recorder output to Streaming Audio Plugins.
2010-04-21 07:35:32 -07:00
Avuton Olrich
b619f5e73d
configure.ac: Move HTTPD output to Streaming Audio Plugins.
2010-04-21 07:35:32 -07:00
Avuton Olrich
e44f639002
configure.ac: Move final encoder tests to the end of the encoder tests.
2010-04-21 07:35:32 -07:00
Avuton Olrich
1aa470e0bf
configure.ac: Move WAVE Encoder to Encoder Plugins.
2010-04-21 07:35:32 -07:00
Avuton Olrich
b6a33691ff
configure.ac: Move TwoLAME Encoder to Encoder Plugins.
2010-04-21 07:35:32 -07:00
Avuton Olrich
5e616b4ff3
configure.ac: Move LAME Encoder to Encoder Plugins.
2010-04-21 07:35:31 -07:00
Avuton Olrich
d847593a8e
configure.ac: Move OggVorbis Encoder to Encoder Plugins.
2010-04-21 07:35:31 -07:00
Avuton Olrich
1cd5700c37
configure.ac: Move FLAC Encoder to Encoder Plugins.
2010-04-21 07:35:31 -07:00
Avuton Olrich
957cf3c7b0
configure.ac: Add encoder/encoder API header
2010-04-21 07:35:31 -07:00
Avuton Olrich
b6c8de6e01
configure.ac: Move tremor/oggflac test under oggflac.
2010-04-21 07:35:31 -07:00
Avuton Olrich
21f5ed4a25
configure.ac: Check for vorbis once, and AC_DEFINE it there.
2010-04-21 07:35:31 -07:00
Avuton Olrich
52fc168905
configure.ac: Add Post Decoder Plugins Tests header
...
Add Post Decoder Plugins Tests and move things that shouldn't be in individual
tests to it.
2010-04-21 07:35:31 -07:00
Avuton Olrich
3bb03db097
configure.ac: Move ffmpeg to Decoder Plugins, add header.
2010-04-21 07:35:30 -07:00
Avuton Olrich
ee88b8f8c4
configure.ac: Move WildMidi to Decoder Plugins, add header.
2010-04-21 07:35:30 -07:00
Avuton Olrich
7bfcb6151d
configure.ac: Move wavpack to Decoder Plugins, add header.
2010-04-21 07:35:30 -07:00
Avuton Olrich
3c549c5147
configure.ac: Move sidplay to Decoder Plugins, add header.
2010-04-21 07:35:30 -07:00
Avuton Olrich
8b0fb1cc4d
configure.ac: Move OggVorbis to Decoder Plugins, add header.
2010-04-21 07:34:55 -07:00
Avuton Olrich
e3d62305f1
configure.ac: Move OggFLAC to Decoder Plugins, add header.
2010-04-21 07:34:55 -07:00
Avuton Olrich
263a968c2b
configure.ac: Move Ogg Tremor to Decoder Plugins, add header.
2010-04-21 07:34:54 -07:00
Avuton Olrich
39b37d547c
configure.ac: Move musepack to Decoder Plugins, add header.
2010-04-21 07:11:49 -07:00
Avuton Olrich
4cfcdd5e0f
configure.ac: Move libsndfile to Decoder Plugins, add header.
2010-04-21 07:11:49 -07:00
Avuton Olrich
9d72a34109
configure.ac: Move sndfile/modplug conflict test to Decoder Plugins, add header.
2010-04-21 07:10:59 -07:00
Avuton Olrich
18cdbfa70f
configure.ac: Move libmodplug to Decoder Plugins, add header.
2010-04-21 07:10:16 -07:00
Avuton Olrich
7886fd711f
configure.ac: Move libmikmod to Decoder Plugins, add header.
2010-04-21 07:10:16 -07:00
Avuton Olrich
3993ed6b81
configure.ac: Move libmpg123 to Decoder Plugins, add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
abf974c5c5
configure.ac: Move libmad to Decoder Plugins, add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
97f80e04b0
configure.ac: Move FluidSynth to Decoder Plugins, add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
944057c30b
configure.ac: Move FLAC to Decoder Plugins, add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
9c4d4bd6b0
configure.ac: Move FAAD to Decoder Plugins, add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
a77fd83b15
configure.ac: Move audiofile to Decoder Plugins, add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
ed78955f8d
configure.ac: Move Solaris to Audio Output Plugins (nonstreaming), add header.
2010-04-21 07:10:15 -07:00
Avuton Olrich
cab16f8e1e
configure.ac: Move MVP to Audio Output Plugins (nonstreaming), add header.
2010-04-21 07:10:14 -07:00
Avuton Olrich
24db28072f
configure.ac: Add header for Pipe Output and Pulseaudio.
2010-04-21 07:10:14 -07:00
Avuton Olrich
e20d3d49b3
configure.ac: Move OSX to Audio Output Plugins (nonstreaming), add header.
2010-04-21 07:10:14 -07:00
Avuton Olrich
33641df09c
configure.ac: Move OSS to Audio Output Plugins (nonstreaming), add header.
2010-04-21 07:10:14 -07:00
Avuton Olrich
294cce2710
configure.ac: Move OpenAL to Audio Output Plugins (nonstreaming), add header.
2010-04-21 07:10:14 -07:00
Avuton Olrich
9fb31aafb3
configure.ac: Move libao to Audio Output Plugins (nonstreaming), add header.
2010-04-21 07:10:14 -07:00
Avuton Olrich
791ddc566a
configure.ac: Move JACK to Audio Output Plugins (nonstreaming), add subheader.
2010-04-21 07:10:14 -07:00
Avuton Olrich
7d2b2e371c
configure.ac: Move FIFO to Audio Output Plugins (nonstreaming), add subheader.
2010-04-21 07:10:13 -07:00
Avuton Olrich
c3ecb5aa5e
configure.ac: Move ALSA to Audio Output Plugins (nonstreaming), add subheader.
2010-04-21 07:10:13 -07:00
Avuton Olrich
191e520999
configure.ac: Move converter plugins up with other aux plugins.
2010-04-21 07:10:13 -07:00
Avuton Olrich
dd5fdbc540
configure.ac: Move archive plugins around (alphabetize), add subheaders.
2010-04-21 07:10:13 -07:00
Avuton Olrich
b39855731c
configure.ac: Add subheaders to Input/Sticker/Autodiscovery/Metadata and Misc.
2010-04-21 07:10:13 -07:00
Avuton Olrich
e27dd7280f
configure.ac: Move libid3tag to "Metadata Plugins"
2010-04-21 07:10:13 -07:00
Avuton Olrich
a9ff134e9f
configure.ac: Move inotify to "Miscellaneous Libraries".
2010-04-21 07:10:13 -07:00
Avuton Olrich
11fbb1c807
configure.ac: Move all AC_ARG* functions to a single place in the configure.ac.
2010-04-21 07:10:12 -07:00
Avuton Olrich
15998c0db9
configure.ac: Add better headers to improve readability.
...
This changes no code, makes no moves; this merely adds some headers
to improve readability.
2010-04-21 07:08:16 -07:00
Max Kellermann
cf3ada3d04
Merge branch 'master' of git://github.com/mcfiredrill/mpd
2010-04-20 21:16:39 +02:00
Avuton Olrich
7df94b1718
lame.m4: Remove unused macro file
2010-04-15 20:23:53 -07:00
Avuton Olrich
c2d788f6de
configure.ac: Check for LAME libraries the same way others are checked for.
...
Check for LAME libraries the same way other libraries are checked for, in line
with the configure and outside the buggy macro. This will fix problems with
cross compilation.
2010-04-15 20:23:35 -07:00
Avuton Olrich
fa8992fc63
configure.ac: Don't allow UNIX IPC to be configured for a native Windows build.
2010-04-13 19:09:26 -07:00
Max Kellermann
8d631b346a
inotify_update: start update when directory is created
...
This is useful at the maximum depth level, to update newly created
directories. It is however questionable if the hard-coded 5 seconds
delay is enough to create new directory trees with all of their files,
but we might make that delay configurable in the future.
2010-04-13 23:37:44 +02:00
Max Kellermann
393bcd961a
inotify: added setting "auto_update_depth"
...
Limits the depth of the watched directories. This is useful to keep
resource usage down and speed up MPD startup.
2010-04-13 21:31:57 +02:00
Max Kellermann
4d1eedbaa2
conf: added function config_get_unsigned()
2010-04-13 21:19:07 +02:00
Max Kellermann
a1a03deed2
decoder/mad: properly calculate ID3 size without libid3tag
...
Without libid3tag, we were trying to skip the ID3 frame (since
0.15.2). Its length however was not calculated at all, we were just
dropping everything from the current input buffer. This lead to the
first few seconds of the file being skipped. This patch attempts to
calculate the ID3v2 frame size with the formula from:
http://www.id3.org/id3v2.4.0-structure 3.1 and 6.2
2010-04-13 08:51:29 +02:00
Charles Kerr
6a95898038
decoder/ffmpeg: fix crash on startup in mpd_ffmpeg_log_callback()
...
What's happening is the `ptr' argument to that function is NULL for me
every time. `ptr' is unconditionally dereferenced to generate a log
message, and this is where mpd crashes.
Attached is a simple patch that tests for NULL and omits the log. With
this patch the crash disappeared and mpd went back to working well.
2010-04-11 19:18:30 +02:00
Tony Miller
9d55b16998
Decoder for game music emulation library.
...
Supports a number of videogame music formats, more info here:
http://www.fly.net/~ant/libs/audio.html
I wrote this plugin for the latest svn, get it here:
http://code.google.com/p/game-music-emu/source/checkout
2010-04-10 01:05:16 -07:00
James Pike
c52f469c9c
output/httpd: added name/genre/website configuration
2010-04-05 13:11:10 +02:00
Orivej Desh
50c0c4b701
cue: fix code style
2010-04-01 08:12:25 +02:00
Max Kellermann
8446b70ddc
decoder/ffmpeg: print item name in log callback
2010-03-28 19:48:57 +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
e9beea072d
Merge release 0.15.9 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/cue/cue_tag.c
src/decoder/mpcdec_decoder_plugin.c
src/player_thread.c
2010-03-28 19:31:47 +02:00
Max Kellermann
e69bb3b337
Makefile.am: distribute pcm_pack.h
...
Fix distcheck.
2010-03-28 19:31:02 +02:00
Avuton Olrich
06f86b4532
Add support for building httpd_output plugin for win32
2010-03-22 07:15:39 -07:00
Avuton Olrich
68ece2fef3
Define winnt or greater on mingw32 to take advantage of get*info().
2010-03-21 18:45:32 -07:00
Avuton Olrich
4953ea90c2
strtok() is recursive by default on win32.
2010-03-21 18:24:24 -07:00
Avuton Olrich
0dcd865c2e
Modify version string to post-release version 0.15.10~git
2010-03-21 17:25:18 -07:00
Tim Phipps
e7a515c8b1
Add support for MixRamp tags
...
Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and
MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.
2010-03-21 18:21:47 +01:00
Max Kellermann
e9b75d462c
AudioCompress: explicitly include stdint.h
...
For int16_t.
2010-03-17 18:29:56 +01:00
Max Kellermann
68017b1254
decoder_api: use the correct format to calculate elapsed time
...
When decoder->timestamp is calculated, the PCM data is already
converted to out_audio_format; using in_audio_format may cause funny
speedups/slowdowns.
2010-03-17 18:26:36 +01:00
Max Kellermann
469c9b5def
command: allow "update" with slash or empty path
...
When handle_update() was modified to use uri_safe_local(), suddently
"mpc update ''" and "mpc update '/'" stopped working, because both are
not a "safe" local URI. This patch adds a special case for these, to
retain backwards compatibility.
2010-03-12 17:58:16 +01:00
Max Kellermann
e686d19154
output: added option "always_on" for radio stations
...
Did you ever accidently click "stop" while feeding a radio station?
This option sets the output device to "pause" to disable the "close"
method. It falls back to "pause" then, which is specific to the
plugin. Some plugins implement it by feeding silence.
2010-03-10 19:49:31 +01:00
Max Kellermann
762565e9d1
output/jack: drain the ring buffers during pause
...
If we're not doing this, and a new song is played after pause ends,
then you will hear the rest of the previous song.
2010-03-10 19:48:49 +01:00
Max Kellermann
41a4662c8c
output/jack: synchronize all channels
...
Always use the same number of samples from each channel's ring
buffer. This ensures that all channels are kept in sync.
2010-03-10 19:48:34 +01:00
Max Kellermann
5842015b90
decoder/ffmpeg: fix indentation
2010-03-07 19:20:34 +01:00
Max Kellermann
ae56901863
decoder/ffmpeg: implement the libavutil log callback
...
Pass everything to the GLib logging library. No direct stderr access.
2010-02-27 19:32:59 +01:00
Max Kellermann
4e364854ab
decoder/ffmpeg: don't close the AVFormatContext after open failure
...
The pointer is invalid if av_open_input_file() fails.
2010-02-27 19:25:56 +01:00
Max Kellermann
a3645984cd
command: "update" checks if the path is malformed
...
This is a very basic check, which only ensures that the path does not
begin with a slash, doesn't have double slashes and the special names
"." and ".." are forbidden.
2010-02-27 19:01:17 +01:00
Max Kellermann
43cf4e97b9
uri: allow leading dots, but explicitly exclude "." and ".."
...
Dots at the beginning of an URI segment are ok, as long as the special
names "." and ".." are not used.
2010-02-27 18:56:47 +01:00
Max Kellermann
795578ef95
update: log start/finish of the update thread
2010-02-27 16:41:54 +01:00
Max Kellermann
96493e0333
replay_gain: optionally use hardware mixer to apply replay gain
...
Add an option for each audio output which enables the use of the
hardware mixer, instead of the software volume code.
This is hardware specific, and assumes linear volume control. This is
not the case for hardware mixers which were tested, making this patch
somewhat useless, but we will use it to experiment with the settings,
to find a good solution.
2010-02-17 08:14:07 +01:00
Max Kellermann
48b49e2303
replay_gain: fall back to track gain if album gain is unavailable
2010-02-17 08:13:34 +01:00
Max Kellermann
752dfb3d95
replay_gain: reimplement as a filter plugin
...
Apply the replay gain in the output thread. This means a new setting
will be active instantly, without going through the whole music pipe.
And we might have different replay gain settings for each audio output
device.
2010-02-17 07:23:13 +01:00
Max Kellermann
5e0117b444
replay_gain_info: allocate the struct statically
...
Don't allocate each replay_gain_info object on the heap. Those
objects who held a pointer now store a full replay_gain_info object.
This reduces the number of allocations and heap fragmentation.
2010-02-17 07:22:44 +01:00
Max Kellermann
c05e6a1275
replay_gain_info: use INFINITY to mark undefined values
...
The previous patch not only moved code, it also changed the check.
Negative gain values seem to be valid after all, there just was the
"magic" value 0.0 which means "not available". This patch changes the
"magic" value to "INFINITY", and uses the C99 function isinf() to
check. It might have been a better idea to use "NAN", but the "NAN"
macro is a GNU extension.
2010-02-17 07:07:00 +01:00
Max Kellermann
b21e4d9a58
replay_gain_state: moved code to replay_gain_tuple_scale()
...
Moved (and renamed) the function calc_replay_gain_scale() to
replay_gain_info.c.
2010-02-15 21:23:24 +01:00
Max Kellermann
eeef501ed8
replay_gain: added function defined()
...
This function determines whether replay gain data is available.
2010-02-15 19:09:24 +01:00
Max Kellermann
f4e9275f7c
filter/volume: assign dest_size_r early, eliminate one
2010-02-15 19:09:09 +01:00
Max Kellermann
f672657388
Makefile.am: remove sticker.xml
2010-02-08 11:55:03 +01:00
Max Kellermann
32441175f4
doc: deleted sticker specification proposal
...
This document has been unmaintained for more than a year now (since
the day it was submitted).
2010-02-08 11:39:16 +01:00
Max Kellermann
059d1dc7f2
command: "listplaylist" dumps playlist files
...
Same for "listplaylistinfo".
2010-02-08 11:11:43 +01:00
Max Kellermann
7fbb856eee
playlist_queue: moved code to playlist_mapper.c
2010-02-08 10:56:28 +01:00
Max Kellermann
bb2aa70ec6
playlist_queue: moved check_translate_song() to playlist_song.c
2010-02-08 10:28:12 +01:00
Max Kellermann
8e34c59c82
song_print: song_print() returns void
...
The only "return" statement always returns 0.
2010-02-08 10:21:15 +01:00
Anton Khirnov
766b9fd453
ffmpeg: read more metadata.
2010-02-02 17:55:58 +01:00
Tim Phipps
891dab7b91
decoder/flac: fix replay gain (short-circuiting "or")
2010-01-28 20:54:04 +01:00
Max Kellermann
7a24e496d5
configure.ac: new libwrap autoconf test
...
Use MPD_AUTO_RESULT(). Don't force libwrap by default.
2010-01-20 21:42:43 +01:00
Davide Camurri
7a62818ffd
client: optionally use libwrap
2010-01-20 21:04:07 +01:00
Max Kellermann
acb0ff1ea8
decoder/wavpack: fixed WVC URI
...
Pass the current URI to wavpack_open_wvc().
2010-01-20 12:08:44 +01:00
Max Kellermann
2acad9fe1e
decoder/ffmpeg: call decoder_timestamp() once per packet
2010-01-18 13:11:04 +01:00
Max Kellermann
8914ebc964
decoder/ffmpeg: merged ffmpeg_helper() into ffmpeg_decode()
2010-01-18 11:06:09 +01:00
Max Kellermann
5477c31160
decoder/ffmpeg: optimized the stream_tag() method
...
Don't use the function ffmpeg_helper(), don't initialize the codec.
2010-01-18 11:06:04 +01:00
Max Kellermann
acd3f8cd91
decoder/ffmpeg: free AVFormatContext on error
...
Fix a memory leak in some code paths.
2010-01-18 11:05:15 +01:00
Max Kellermann
ca1fc13116
decoder_api: removed function decoder_get_uri()
...
Use input_stream.uri.
2010-01-18 10:21:57 +01:00
Max Kellermann
9cb7760c5e
input_stream: added attribute "uri"
2010-01-18 10:18:41 +01:00
Max Kellermann
fb9bd53328
input_stream: added function input_stream_deinit()
...
All close() implementations must call this method.
2010-01-18 09:57:53 +01:00
Max Kellermann
a0a26d3341
Merge release 0.15.8 from branch 'v0.15.x
...
Conflicts:
Makefile.am
NEWS
configure.ac
src/decoder/ffmpeg_decoder_plugin.c
src/decoder_thread.c
2010-01-18 07:52:58 +01:00
Max Kellermann
9d4b7ab113
decoder_thread: don't fall back to "mad" unless no plugin matches
...
When all plugins have failed, MPD used to fall back to the "mad"
decoder plugin, to handle those radio streams without a Content-Type
response header. This however leads to unexpected results (garbage
being played) when the stream isn't really mp3. Since we care little
about "bad" streams, we shouldn't have hacks which have bad side
effects.
Let's get rid of this hack now! Only try to "mad" plugin if there was
no match at all (Content-Type, path suffix) and no other plugin has
been tried.
2010-01-17 17:09:10 +01:00
Max Kellermann
8ac776c58b
decoder_thread: don't try a plugin twice (MIME type & suffix)
...
Manage a linked list of plugins which were already tried.
2010-01-17 16:47:04 +01:00
Max Kellermann
006f4be71c
fd_util: include ws2tcpip.h for socklen_t
2010-01-17 14:48:52 +01:00
Max Kellermann
163e05f5a0
fd_util: fixed WIN32 versions of pipe()
...
Use the correct parameter name.
2010-01-17 14:43:15 +01:00
Max Kellermann
02526eda86
text_file: don't strip trailing whitespace
...
Only delete the newline characters (\n and optionally \r). This
allows the database file to store file names with trailing whitespace.
2010-01-17 12:52:11 +01:00
Max Kellermann
828a5f552f
output/pulse: clear the "mainloop" attribute on error
...
When enabling the pulse device fails, clear po->mainloop after
pa_threaded_mainloop_free() has finished. This is important for the
assertions.
Two wrong g_free() calls were also removed.
2010-01-17 12:03:22 +01:00
Max Kellermann
26841b6058
output/alsa: support packed 24 bit samples
2010-01-17 00:43:24 +01:00
Max Kellermann
1abfcc56af
audio_format: support packed 24 bit samples
2010-01-16 23:44:54 +01:00
Max Kellermann
da47afe7d1
output/alsa: probe all sample formats in a loop
...
More code simplification. Probe all formats, no matter which input
format.
2010-01-16 23:44:52 +01:00
Max Kellermann
96546c1a8a
output/alsa: merged code into alsa_output_try_format()
...
Remove the debug log messages, because they are duplicate (see
ao_open() in output_thread.c).
2010-01-16 23:44:50 +01:00
Max Kellermann
579a8a96ea
output/alsa: pass sample_format to get_bitformat()
2010-01-16 23:44:48 +01:00
Max Kellermann
79848e3414
output/alsa: moved code to alsa_output_setup_format()
2010-01-16 23:44:42 +01:00
Max Kellermann
87c861cae3
test/run_convert: implement a GLib log callback
...
Log to stderr instead of the default stdout. We need a pristine
stdout for the conversion result.
2010-01-16 23:44:40 +01:00
Max Kellermann
8f326a33ee
test/run_convert: use fifo_buffer to adapt to odd sample sizes
...
Ensure that the pcm_convert() length argument is aligned to the sample
size.
2010-01-16 23:25:58 +01:00
Max Kellermann
a942384fbf
decoder/flac: support streams without STREAMINFO block
2010-01-06 10:17:16 +01:00
Max Kellermann
de0cdee4aa
decoder/flac: pass bits_per_sample to flac_sample_format()
...
Easier to reuse the function.
2010-01-06 09:55:20 +01:00
Max Kellermann
550c9319e9
decoder/flac: moved decoder initialization to _flac_common.c
...
Invoke decoder_initialized() in the libFLAC metadata callback. This
merges code from the FLAC and the OggFLAC decoder plugin into the
common library.
2010-01-06 09:50:34 +01:00
Max Kellermann
ae9c02b3a8
decoder/flac: remember audio_format, not stream_info
2010-01-06 09:00:32 +01:00
Max Kellermann
6f6d47dd20
decoder/flac: removed CUE sheet support
...
This feature has been moved to the "flac" playlist plugin.
2010-01-06 08:52:35 +01: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
d6d5caae23
decoder/flac: moved flac_tag_load() to flac_metadata.c
...
Make this code is reusable.
2010-01-06 08:50:35 +01:00
Max Kellermann
382691179f
tag: fixed memmove() size argument in tag_delete_item()
...
This function has always been broken, but fortunately nobody used it.
2010-01-06 08:48:23 +01:00
Max Kellermann
01c5cb985c
playlist_queue: convert absolute paths
...
Accept absolute paths if they point into the music directory.
2010-01-06 08:00:35 +01:00
Max Kellermann
8a5d2c3c83
playlist_queue: use the "uri" variable earlier
...
Preparation for the next patch.
2010-01-06 08:00:02 +01:00
Max Kellermann
2f8135ef8b
input/rewind: enable the "rewind" wrapper for all non-seekable streams
...
Don't limit the "rewind" input plugin to CURL streams.
2010-01-04 21:45:32 +01:00
Max Kellermann
9b9abff972
renamed decoder plugin sources
...
Make it X_decoder_plugin.c.
2010-01-04 21:45:32 +01:00
Max Kellermann
c69cc31de0
decoder/mad: fix build error without libid3tag
2010-01-04 21:45:32 +01:00
Max Kellermann
241e94936f
replay_gain: moved code to replay_gain_config.c
2010-01-04 21:02:47 +01:00
Max Kellermann
1330274ffc
replay_gain: moved code to replay_gain_info.c
2010-01-04 21:02:36 +01:00
Max Kellermann
0e183d3fa1
replay_gain: refactor API, move code to replay_gain_state.c
...
The replay_gain_state struct holds the precalculated scale factor,
which is removed from struct replay_gain_info.
2010-01-04 20:54:01 +01:00
Max Kellermann
cd8f92c928
decoder_api: added function decoder_replay_gain()
...
This function replaces the replay_gain_info parameter for
decoder_data(). This allows the decoder to announce replay gain
changes, instead of having to pass the same object over and over.
2010-01-04 20:42:49 +01:00
Max Kellermann
e58b4f773f
replay_gain: added function replay_gain_info_dup()
2010-01-04 20:42:49 +01:00
Max Kellermann
604ca50b65
valgrind.suppressions: added new suppressions
2010-01-04 20:42:49 +01:00
Max Kellermann
537e353546
replay_gain: removed overly verbose debug message
...
Don't log "ReplayGain is missing".
2010-01-02 23:46:44 +01:00
Max Kellermann
f95d7b13da
configure.ac: disable -Wdeclaration-after-statement
...
Allow declaration after statement.
2010-01-02 23:46:42 +01:00
Max Kellermann
915182bcb8
output_all: reset elapsed_time at song border
...
Another quirk fixed: after the last chunk of a song has been played,
the "elapsed_time" variable is set to the chunk's time stamp. When
the client receives the PLAYER idle event and asks MPD for the current
time stamp, MPD will return the last time stamp of the previous song
when it hasn't played the first chunk of the current song yet.
2010-01-02 21:16:51 +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
Max Kellermann
816b6ad4a7
updated valgrind.suppressions
...
Mostly OpenSSL and GLib one-time allocations.
2010-01-01 17:24:47 +01:00
Max Kellermann
3adfbfe36d
configure.ac: expose variables OPENAL_CFLAGS and OPENAL_LIBS
...
Don't add these to the global MPD_CFLAGS and MPD_LIBS. This allows
test programs to link without libopenal.
2010-01-01 17:10:10 +01:00
Avuton Olrich
9d3865cb95
Update copyright notices.
2009-12-31 20:58:43 -08:00
Max Kellermann
05cde5810a
decoder: switch a bunch of plugins to stream_tag()
...
This patch changes the following decoder plugins to implement
stream_tag() instead of tag_dup():
faad, ffmpeg, mad, modplug, mp4ff, mpcdec, oggflac
This simplifies their code, because they do not need to take care of
opening/closing the stream.
2009-12-31 18:32:09 +01:00
Max Kellermann
6b96f5d566
decoder_plugin: added method stream_tag()
...
This is like tag_dup(), but works with an input_stream object instead
of a file path.
2009-12-31 18:27:48 +01:00
Max Kellermann
7a2e07e124
song_update: use decoder_plugin_tag_dup()
...
Minor code simplification.
2009-12-31 18:27:40 +01:00
Max Kellermann
aad05fd138
archive: use reference counting for archive+input
...
Make the input_stream implementation hold a reference on the
archive_file object. Allow the caller to "close" the archive_file
object immediately, no matter if the open_stream() method has
succeeded or not.
2009-12-31 18:27:35 +01:00
Max Kellermann
032c5376ad
refcount: library for reference counting
2009-12-31 16:26:39 +01:00
Max Kellermann
0cc3b98bd9
input/archive: don't initialize input_stream.ready
...
The archive plugin should decide this.
2009-12-31 16:26:34 +01:00
Max Kellermann
c157711eaf
archive/bz2: allocate buffer statically
...
Reduce the number of malloc()/free() calls.
2009-12-31 16:26:14 +01:00
Max Kellermann
2632794578
archive/bz2: added struct bz2_input_stream
...
Don't use the bz2_archive_file object for the input_stream.
2009-12-31 16:25:21 +01:00
Max Kellermann
3ddf7b620c
archive/iso9660: added struct iso9660_input_stream
...
Don't use the iso9660_archive_file object for the input_stream.
2009-12-31 16:13:09 +01:00
Max Kellermann
131cb0598a
archive/iso9660: set input_stream.{size,offset}
2009-12-31 16:13:09 +01:00
Max Kellermann
9862521aec
archive/zzip: added struct zzip_input_stream
...
Don't use the zzip_archive object for the input_stream.
2009-12-31 16:00:12 +01:00
Max Kellermann
55fbb67cfb
archive/zzip: set input_stream.{size,offset}
2009-12-31 15:59:43 +01:00
Max Kellermann
a0384aaead
Makefile.am: added unit tests for the archive plugins
2009-12-31 15:50:59 +01:00
Max Kellermann
efc885a9dc
Merge vorbis+icy fixes from branch 'v0.15.x'
...
Conflicts:
Makefile.am
NEWS
configure.ac
src/input/curl_input_plugin.c
src/input_stream.c
2009-12-30 23:24:11 +01:00
Max Kellermann
333e11d0eb
Merged release 0.15.7 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder_api.c
2009-12-27 20:10:45 +01:00
Max Kellermann
58da24b1cb
playlist_list: wait for the input stream to become ready
...
Without this, seeking may cause MPD to crash.
2009-12-27 16:53:47 +01: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
5787f73704
decoder, player: support song ranges
...
Seek the decoder to the start of the range before beginning with
playback. Stop the decoder when the end of the range has been
reached. Add the start position to the seek position. Expose the
duration of the range, not the full song file.
2009-12-27 16:08:53 +01:00
Max Kellermann
201316cd67
playlist_queue: resolve relative URIs, database lookup
...
Prepend the playlist's base URI to relative song URIs. Look up songs
in the database (if the URI refers to a local song file). Merge
existing database metadata with metadata from the playlist plugin.
2009-12-27 16:08:53 +01:00
Max Kellermann
a038bca745
song: added support for selecting a time range
...
Added attributes start_ms, end_ms. This allows us to address a
portion of a song file (important for CUE support). There is no
support yet for storing these attributes in the state file.
2009-12-27 14:46:04 +01:00
Max Kellermann
cf38505d8f
playlist_queue: load playlists from music directory
...
Try the playlist directory first, and if that file does not exist, try
the same relative path within the music directory.
2009-12-27 14:17:26 +01:00
Max Kellermann
af964e8929
uri: added function uri_safe_local()
2009-12-27 14:17:25 +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
627975e897
playlist_queue: pass const string to playlist_open_path_into_queue()
2009-12-27 14:17:13 +01:00
Max Kellermann
6622d69fda
song: added function song_get_duration()
2009-12-26 13:56:35 +01:00
Max Kellermann
216dff98d2
playlist_queue: try open by URI first
...
If that fails, try opening the file as a stream.
2009-12-26 03:01:52 +01:00
Max Kellermann
032354e65c
playlist_list: use uri_get_suffix()
2009-12-26 03:01:50 +01:00
Max Kellermann
115d26608b
uri: check presence of slash in suffix
...
If there's a slash in the uri_get_suffix() return value, then it's
malformed. Return NULL in this case.
2009-12-26 03:01:48 +01:00
Max Kellermann
bad350bc18
decoder_api: added function decoder_timestamp()
...
Remove the data_time parameter from decoder_data(). This patch
eliminates the timestamp counting in most decoder plugins, because the
MPD core will do it automatically by default.
2009-12-26 03:01:43 +01:00
Max Kellermann
870436a592
output_init: use the normalize filter plugin
...
Use the plugin instead of the glue code in normalize.c. This is used
wrapped inside a "autoconv" filter, to enable normalization for all
input file formats.
2009-12-25 17:51:08 +01:00
Max Kellermann
6a17233f78
filter: added the "autoconvert" filter plugin
2009-12-25 17:51:05 +01:00
Max Kellermann
b54bde6f2b
filter_plugin: allow open() to force an input format
...
Make the audio_format argument non-const. Allow the open() method to
modify it, to indicate that it wants a different input audio format
than the one specified. Check that condition in chain_filter_open(),
and fail.
2009-12-25 17:29:41 +01:00
Max Kellermann
d2051c7f50
filter/volume: support 32 bit samples
...
The pcm_volume library supports 32 bit samples, there's no reason to
disallow it in the filter plugin.
2009-12-25 17:29:27 +01:00
Max Kellermann
bd29f7e3c8
filter/route: check configured channel count in method init()
...
Detect misconfiguration during MPD startup, not when playback begins.
2009-12-25 16:39:47 +01:00
Max Kellermann
c3bb81abec
filter/route: route_filter_parse() returns bool
...
Indicate success and error.
2009-12-25 16:39:45 +01:00
Max Kellermann
d469c8137f
filter_registry: removed the "chain" plugin from filter_plugins
...
This plugin cannot be configured.
2009-12-25 16:39:41 +01:00
Max Kellermann
c374a7d3f4
filter/chain: return NULL if a filter() method has failed
...
Don't close child filters in the filter() method.
2009-12-25 16:28:17 +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
c128f2dd7e
playlist_list: support URI suffix match
...
When no plugin matches the URI scheme, try the file name suffix.
2009-12-16 22:17:16 +01:00
Max Kellermann
843717d25c
playlist_list: check if open method is present
...
Use open_uri() / open_stream() only after checking that they are
implemented.
2009-12-16 22:16:47 +01:00
Max Kellermann
50ea6a4b5c
cue_tag: added song duration support
...
Get duration from track_get_length().
2009-12-16 22:15:27 +01:00
Max Kellermann
5649f22322
cue_tag: check cd_get_track()!=NULL
2009-12-16 20:55:19 +01:00
Max Kellermann
b89281411f
cue_tag: added function cue_tag()
...
Merge code from cue_tag_file() and cue_tag_string().
2009-12-16 20:49:03 +01:00
Max Kellermann
67c41033c1
cue_tag: merged code into cue_tag_merge()
2009-12-16 17:27:52 +01:00
Max Kellermann
59534b92d2
cue_tag: pass "const" string to cue_tag_string()
2009-12-16 17:26:20 +01:00
Max Kellermann
41a48b14e3
cue_tag: changed runtime checks to assertions
...
It's illegal to pass NULL here. This should not be ignored silently.
2009-12-16 17:26:20 +01:00
Max Kellermann
5821bd1a21
cue_tag: fixed indent and code style
2009-12-16 17:18:56 +01:00
Max Kellermann
c5cdac9609
cue_tag: tag_new() cannot fail
...
Removed the NULL check.
2009-12-16 17:18:23 +01:00
Max Kellermann
b7f55ad392
cue_tag: include cleanup
2009-12-16 17:13:26 +01:00
Max Kellermann
71fee09744
archive_plugin: use GError in the open() method
2009-12-16 17:10:19 +01:00
Max Kellermann
f9af1a445e
input/archive: check for archive_file_open() errors
...
This fixes a NULL pointer dereference in case of archive plugin
failure.
2009-12-16 17:10:15 +01:00
Max Kellermann
0bc8c0c1da
archive_plugin: wrap method calls
...
Make archive_file a "real" struct, extended by all plugins. Add the
plugin pointer to it. Wrap all method calls in functions.
2009-12-16 17:09:58 +01:00
Max Kellermann
74156d5bed
archive_plugin: pass const string to method open()
2009-12-16 17:09:29 +01:00
Max Kellermann
b04adde7ab
archive: added a C header for each plugin
...
Moved the archive plugin "extern" declarations into each plugin
header.
2009-12-16 15:57:16 +01:00
Max Kellermann
3f64ac04b8
archive/bz2: removed the bz2_context typedef
...
Use the raw struct name instead.
2009-12-16 15:56:42 +01:00
Max Kellermann
b009970af7
archive/bz2: renamed archive sources and plugin variables
2009-12-16 15:55:48 +01:00
Max Kellermann
bd97586cc4
archive/iso: renamed plugin to "iso9660"
...
Based on libiso9660.
2009-12-16 15:55:37 +01:00
Max Kellermann
c3e0fbd9e4
archive/bz2: use g_path_get_basename()
...
Use g_path_get_basename() instead of manually filtering the path
name. Big advantage: g_path_get_basename() cannot fail.
2009-12-16 15:53:57 +01:00
Alam Arias
b05ba0286e
updated mp4ff decoder about input_stream_seek
2009-12-16 06:47:15 +01:00
Max Kellermann
228b03edf8
input_stream: return errors with GError
2009-12-15 23:12:11 +01:00
Max Kellermann
d000d31355
encoder/flac: fix write callback prototype for libFLAC 1.1.2
2009-12-15 23:12:06 +01:00
Max Kellermann
971c9671f6
Makefile.am: link test/run_decoder with timer.c
...
For the fluidsynth plugin.
2009-12-15 23:11:57 +01:00
Max Kellermann
3d95226f2b
decoder_internal: decoder_input_buffer() returns bool
...
This fixes a regression: a boolean value was returned from
decoder_input_buffer(), but the caller chose to do a "<= 0"
comparison.
2009-12-15 22:24:00 +01:00
Max Kellermann
b12072e6d9
input/archive: use g_path_is_absolute()
...
.. instead of manually checking pathname[0]=='/'.
g_path_is_absolute() is portable.
2009-12-15 21:26:16 +01:00
Max Kellermann
03427d4eff
archive/bz2: simplified error handling, short read
...
Don't attempt to fill the whole buffer in the read() method, return
whatever libbz2 provides with the first successful BZ2_bzDecompress().
2009-12-15 21:09:13 +01:00
Max Kellermann
a627a703ca
archive/bz2: no CamelCase
2009-12-15 20:53:29 +01:00
Max Kellermann
440cfc8052
archive/zzip: removed the "zip_context" typedef
...
Use the raw struct name.
2009-12-15 20:49:38 +01:00
Max Kellermann
c959148ed1
archive/zip: renamed plugin to "zzip"
...
This plugin is based on libzzip.
2009-12-15 20:29:44 +01:00
Max Kellermann
530e480748
Merge branch 'v0.15.x'
...
Conflicts:
src/archive/bz2_plugin.c
src/archive_api.h
src/input/file_input_plugin.c
test/run_input.c
2009-12-15 20:26:38 +01:00
Max Kellermann
95c3f283ea
input/file: don't fall back to parent directory
...
This code has never made any sense, and has broken some of the archive
plugin.
2009-12-15 19:03:11 +01:00
Max Kellermann
aef6609f4f
archive_api.h: moved struct archive_plugin to archive_plugin.h
2009-12-15 19:02:24 +01:00
Max Kellermann
6b728e4756
archive_list: don't include archive_api.h
...
Use struct forward declarations.
2009-12-15 19:02:17 +01:00
Max Kellermann
f1ecd9eac8
archive_list: iterate with NULL check
...
Don't use num_archive_plugins.
2009-12-15 15:31:00 +01:00
Max Kellermann
243c96304b
archive/bz2: bz2_fillbuffer() returns bool
2009-12-15 09:08:30 +01:00
Max Kellermann
e3597e648c
archive/bz2: fixed indentation
2009-12-15 09:00:34 +01:00
Max Kellermann
357037f7ab
archive/bz2: g_malloc() cannot fail
2009-12-15 09:00:18 +01:00
Max Kellermann
9715218d40
Makefile.am: distribute AudioCompress/config.h
...
This fixes "make distcheck".
2009-12-15 07:38:30 +01:00
Max Kellermann
c0b8c2c73b
Makefile.am: install glib_compat.h
2009-12-14 23:26:23 +01:00
Max Kellermann
51d0687377
fixed several gcc warnings on unused debug variables
2009-12-14 23:22:51 +01:00
Max Kellermann
849d7895dc
decoder/mikmod: fixed gcc uninitialized warning
...
Removed local variable "sample_rate".
2009-12-14 23:20:14 +01:00
Max Kellermann
850e213261
scripts/test.sh: added sndfile/modplug decoder test
2009-12-14 23:19:13 +01:00
Max Kellermann
786c1f035f
input_plugin: method init() returns errors with GError
...
Not used by any plugin currently, but this eliminates the g_error()
call in input_plugin_config(), so it's worth it.
2009-12-14 23:16:18 +01:00
Max Kellermann
f70d2f58a1
input_stream: moved input_stream_global_init() to input_init.c
2009-12-14 22:53:13 +01:00
Max Kellermann
67b0ab717e
input_stream: moved plugin list to input_registry.c
2009-12-14 22:49:46 +01:00
Max Kellermann
f7420dbfe1
input_stream: make input_plugins NULL terminated
...
This is easier to traverse.
2009-12-14 22:43:00 +01:00
Max Kellermann
400600ffff
filter: added normalize filter plugin
...
Wrap the AudioCompress library in a filter plugin.
2009-12-14 22:24:00 +01:00
Albin Eldstål-Damlin
940e66bb89
Fix and use filter_configured_new()
2009-12-14 22:23:05 +01:00
Albin Eldstål-Damlin
69391dadda
Proper error reporting from filter_config
2009-12-14 22:18:28 +01:00
Albin Eldstål-Damlin
ff3393ebf1
Fixed memory leak on incorrect route configuration
2009-12-14 22:18:28 +01:00
Albin Eldstål-Damlin
0ac0bd26e7
Split filter_config into its own module
2009-12-14 22:12:58 +01:00
Max Kellermann
bf6258f582
test/run_{decoder,filter}: implemented GLib log callback
...
Log to stderr, not to stdout (which broke PCM output).
2009-12-14 21:26:57 +01:00
Albin Eldstål-Damlin
8587fcbb93
Error reporting, pcm_buffer, performance tweaks
2009-12-14 20:41:09 +01:00
Albin Eldstål-Damlin
a4fbf772c1
Initial filter chain and filter configuration for outputs.
2009-12-14 17:56:31 +01:00
Albin Eldstål-Damlin
e28c5a0beb
Initial (statically configured) route filter plugin
2009-12-14 17:41:28 +01:00
Albin Eldstål-Damlin
c38b9490a8
Minor documentation fix
2009-12-14 17:41:10 +01:00
Max Kellermann
c3085d7b61
Merge branch 'v0.15.x'
...
Conflicts:
src/decoder/ffmpeg_plugin.c
2009-12-14 17:40:50 +01:00
Thomas Jansen
179502fe93
decoder_api: prefer stream_tag over decoder_tag
...
If both tags (stream and decoder) are present, we prefer the stream tag.
Fixes #2698 , where ICY tag contained useful information, but was
overwritten with bogus decoder tag data.
2009-12-07 14:52:48 +01:00
Viliam Mateicka
b6b377edd1
pcm_volume: change old code to use format instead of bits
2009-12-03 20:56:57 +01:00
Viliam Mateicka
a76097210f
encoders: remove unnessesary pointers to const strings
2009-12-03 20:43:13 +01:00
Viliam Mateicka
ac0bf1a445
httpd: use get_mime_type to determine encoder content
2009-12-03 20:27:08 +01:00
Viliam Mateicka
7b80e73810
encoders: implement new get_mime_types method
2009-12-03 20:11:32 +01:00
Viliam Mateicka
6d11711a01
encoder: add get_mime_type() method to determine content type by httpd output plugin
2009-12-03 19:39:34 +01:00
Viliam Mateicka
bae03e173e
pcm_mix: change old code to use format instead of bits
2009-12-03 17:03:21 +01:00
Viliam Mateicka
07b388f8d4
null_encoder: use pcm_buffer
2009-12-03 17:03:20 +01:00
Viliam Mateicka
4809213676
flac_encoder: add support for libFLAC < 1.1.3
2009-12-03 14:53:30 +01:00
Jeffrey Middleton
c77fa296bc
compress: add config.h
...
This includes some default values of #defined constants used in the
code; it won't compile without it.
2009-12-02 21:14:35 -06:00
Max Kellermann
c412d6251e
audio_format: changed "bits" to "enum sample_format"
...
This patch prepares support for floating point samples (and probably
other formats). It changes the meaning of the "bits" attribute from a
bit count to a symbolic value.
2009-12-02 22:29:50 +01:00
Max Kellermann
68c2cfbb40
test: added normalize test program
2009-12-02 21:56:02 +01:00
J. Shagam
4076523198
compress: upgraded to AudioCompress 2.0
...
Copied sources from
http://beesbuzz.biz/code/audiocompress/AudioCompress-2.0.tar.gz
[mk: created this patch under fluffy's name and fixed some gcc
signed/unsigned comparison warnings]
2009-12-02 18:11:53 +01:00
Max Kellermann
3857bb9990
decoder/mpcdec: set 24 bit sample format
...
This fixes a regression due to a typo caused by "decoder: use
audio_format_init_checked()".
2009-11-25 08:59:13 +01:00
Max Kellermann
300f936228
pcm_mix: implemented 32 bit support
2009-11-19 21:00:54 +01:00
Max Kellermann
1358428031
pcm_volume: implemented 32 bit support
...
Support 32 bit samples with software mixer.
2009-11-19 21:00:50 +01:00
Max Kellermann
5a480137d2
test: added program to test pcm_convert.c
2009-11-19 21:00:46 +01:00
Max Kellermann
943bafbbc8
test/software_volume: check for errors
2009-11-19 21:00:39 +01:00
Max Kellermann
b772f26213
test/software_volume: fixed audio_format parser
...
Assign default value only if none was given on the command line.
2009-11-19 20:36:04 +01:00
Max Kellermann
c33bbd947b
Merged release 0.15.6 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-11-19 19:59:34 +01:00
Viliam Mateicka
d37b4bb199
cmdline: print out list of encoders in --version info
2009-11-17 20:39:26 +01:00
Viliam Mateicka
ea92dee1ae
encoder: let wave encoder to use pcm_buffer, pcm conversion code cleanup
2009-11-17 20:39:21 +01:00
Viliam Mateicka
5420f9ae76
encoder: introducing flac encoder plugin
2009-11-17 19:41:35 +01:00
Max Kellermann
39404725f0
output/openal: use audio_format_to_string()
2009-11-15 16:20:20 +01:00
Max Kellermann
5d1e5f4ea0
crossfade: use audio_format_valid() in assertion
2009-11-15 15:39:29 +01:00
Max Kellermann
5184476682
valgrind.suppressions: added entry for g_main_context_default()
2009-11-14 23:51:49 +01:00
Max Kellermann
141cbc60b9
decoder/audio: eliminate the "bits" variable
...
Pass the audiofile_setup_sample_format() result to
audio_format_init_checked().
2009-11-14 23:35:37 +01:00
Max Kellermann
2c1fb48318
decoder/audiofile: moved code to audiofile_setup_sample_format()
2009-11-14 23:22:14 +01:00
Max Kellermann
1dfadf4815
decoder/modplug: count frame position
...
Don't maintain the current time stamp in a floating point variable,
because this is subject to rounding errors.
2009-11-14 22:30:57 +01:00
Max Kellermann
f5b9e3c064
decoder/modplug: floating point division for song duration
...
More exact total time.
2009-11-14 22:27:27 +01:00
Max Kellermann
ff70dbd316
decoder/modplug: check ModPlug_Read() < 0
...
Negative return values are not documented here, but since the function
prototype is signed, let's be sure.
2009-11-14 22:27:04 +01:00
Max Kellermann
dd4625ce13
decoder/mikmod: count frame position
...
Don't maintain the current time stamp in a floating point variable,
because this is subject to rounding errors.
2009-11-14 02:24:42 +01:00
Max Kellermann
1648c7aa5b
decoder/mikmod: sample rate is configurable
...
The new option "sample_rate" sets the sample rate for libmikmod.
2009-11-14 02:24:42 +01:00
Max Kellermann
edaf017908
decoder/mikmod: set drv_name and drv_version from PACKAGE/VERSION
2009-11-14 02:24:42 +01:00
Max Kellermann
2c7bf61e68
decoder/mikmod: no CamelCase
2009-11-14 02:07:41 +01:00
Max Kellermann
7efb548921
decoder/mikmod: removed the struct mod_Data
2009-11-14 02:07:41 +01:00
Max Kellermann
0c5329aedc
decoder/mikmod: merged open()/close() into decode()
...
These functions are trivial, we don't need them separate.
2009-11-14 02:07:41 +01:00
Max Kellermann
2d236e281f
decoder/mikmod: static mod_Data object
...
Don't allocate this object, put it on the stack.
2009-11-14 02:07:41 +01:00
Max Kellermann
a6fd5819f9
doc: added decoder plugin reference
2009-11-14 02:06:23 +01:00
Max Kellermann
cef5dcc0a1
audio_format: added function audio_format_to_string()
...
Unified function for converting an audio_format object to a string,
for log messages and for the "status" command.
2009-11-14 01:15:26 +01:00
Max Kellermann
e5b119a324
autogen.sh: allow two minor digits in automake version
2009-11-14 01:15:26 +01:00
Max Kellermann
719990b1c5
decoder: use audio_format_init_checked()
...
Let the audio_check library verify the audio format in all (relevant,
i.e. non-hardcoded) plugins.
2009-11-14 00:47:22 +01:00
Max Kellermann
f47bb8c1db
audio_check: checker functions for audio_format attributes
...
These functions are a wrapper for audio_valid_X(). On error, they
return a GError object.
2009-11-14 00:47:19 +01:00
Max Kellermann
873025a495
decoder/sidplay: correctly calculate floating point time
...
Internally, use only the integer time. When needed, convert it to a
floating point seconds value.
2009-11-14 00:46:30 +01:00
Max Kellermann
409a3ed808
player_thread: corrected two assertions on "queued"
...
At this point, the function may be called from the SEEK handler.
2009-11-14 00:45:52 +01:00
Max Kellermann
76283c25a5
player_thread: initialize chunk->times in silence generator
...
When waiting for the decoder to provide more data, the player thread
generates silence chunks if needed. However, it forgot to initialize
the chunk.times attribute, which had now an undefined value. This
patch sets it to -1.0, meaning "value is undefined". Add a ">= 0.0"
check to audio_output_all_check(). This fixes spurious relative
seeking errors, because sometimes, the "elapsed" value falls back to
0.0.
2009-11-12 18:41:25 +01:00
Max Kellermann
b9866e43d3
player_control: hold lock while reading status
2009-11-12 18:40:36 +01:00
Max Kellermann
9947b82cad
added .#* to .gitignore
...
Temporary editor files.
2009-11-12 18:39:40 +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
8068fd5228
decoder/vorbis: fixed gcc "signed" warning
2009-11-12 09:16:34 +01:00
Max Kellermann
b9c610ac87
directory: include config.h
...
*sigh* another Large File breakage. ino_t/dev_t this time. We need
to include config.h in directory.h to get this straight.
2009-11-11 23:36:36 +01:00
Max Kellermann
59189160e3
decoder/wavpack: allow more than 2 channels
...
Remove the OPEN_2CH_MAX option. MPD's support for surround sound is
still clunky, but we're working on it.
2009-11-11 23:03:20 +01:00
Max Kellermann
ee5d3337a7
decoder/wavpack: activate 32 bit support
...
MPD has been supporting 32 bit samples since version 0.15. This patch
changes one check, and removes the 32->24 conversion code.
Note that WavPack floating point samples have 32 bits, and MPD doesn't
have a special check for floating point - therefore, this WavPack
plugin still returns 24 bit integer samples as before (until we have
float support in the MPD core).
2009-11-11 21:49:00 +01:00
Max Kellermann
4c6a8e3ca5
decoder/vorbis: initialize before entering the loop
...
Call decoder_initialize() before entering the loop. We don't need to
call ov_read() before ov_info(). When the stream number changes,
check if the audio format is still the same.
2009-11-11 21:34:55 +01:00
Max Kellermann
4f38cc9cae
decoder/vorbis: moved error strings to vorbis_strerror()
2009-11-11 21:12:10 +01:00
Max Kellermann
dfc09a37c9
decoder/vorbis: removed the OggCallbackData typedef
...
Use the struct name instead.
2009-11-11 21:09:08 +01:00
Max Kellermann
8588c21689
decoder/vorbis: fix typo in comment
2009-11-11 21:09:08 +01:00
Max Kellermann
2decc65b45
decoder/vorbis: removed redundant "bits" initialization
...
This is done by audio_format_init().
2009-11-11 21:03:04 +01:00
Max Kellermann
0fb877740b
decoder/flac: check "seekable" in libFLAC callbacks
...
Return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED if this input
stream does not support seeking.
2009-11-11 21:02:52 +01:00
Max Kellermann
37181c9181
decoder/flac: moved code to flac_data_get_audio_format()
...
Remove the audio_format attribute, add "frame_size" instead. The
audio_format initialization and check is moved both to
flac_data_get_audio_format().
2009-11-11 20:44:21 +01:00
Max Kellermann
08b139f37c
decoder/flac: use stream_info instead of audio_format
...
Use the sample rate stored in the stream_info struct instead of the
audio_format struct.
2009-11-11 20:36:53 +01:00
Max Kellermann
3973aeecd2
decoder/flac: use frame header instead of audio_format
...
When calculating the properties of the frame, use sample_rate and
other information from the frame header instead of the stored
audio_format object.
2009-11-11 20:36:46 +01:00
Max Kellermann
5b2d32b499
decoder/oggflac: moved stream_info check to oggflac_decode()
2009-11-11 20:36:21 +01:00
Max Kellermann
e0d5ee0045
decoder/flac: calculate time stamp from current frame
...
Don't update a float timestamp, this will make imprecisions add up
after a while. We already have the number of the current frame, let's
just calculate the float timestamp from that for every decoder_data()
command. For this, we need to add the attribute "first_frame", for
CUE sheet songs.
2009-11-11 20:18:39 +01:00
Max Kellermann
d35efddd65
decoder/flac: calculate bit rate in flac_common_write()
...
Removed the "bit_rate" attribute from the flac_data struct. Pass the
number of bytes since the last call to flac_common_write(), and let
it calculate the bit rate.
2009-11-11 19:52:14 +01:00
Max Kellermann
7b13776f2d
decoder/flac: store the whole stream info object, not duration
...
We don't want to work with floating point values if possible. Get the
integer number of frames from the FLAC__StreamMetadata_StreamInfo
object, and convert it into a float duration on demand. This patch
adds a check if the STREAMINFO packet has been received yet.
2009-11-11 19:25:15 +01:00
Max Kellermann
f937ec9a7c
decoder/flac: merge code into flac_decoder_initialize()
...
Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(),
decoder_initialized().
2009-11-11 19:08:10 +01:00
Max Kellermann
a3f5284dc6
decoder/flac: merged code into flac_decoder_new()
...
Convenience wrapper for FLAC__stream_decoder_new() and
FLAC__stream_decoder_set_metadata_respond().
2009-11-11 19:07:30 +01:00
Max Kellermann
4a8cc87b4d
decoder/flac: free the "pathname" variable earlier
...
Free the pointer right after its last use, i.e. after the
FLAC__stream_decoder_init_file() call.
2009-11-11 19:05:24 +01:00
Max Kellermann
183725733a
decoder/flac: emulate FLAC__stream_decoder_init_stream()
...
Remove the wrapper flac_init().
2009-11-11 18:08:22 +01:00
Max Kellermann
3c1bacbdbc
decoder/flac: use the new API functions
...
Use the type and function names of the libFLAC 1.1.3 API. Map the new
API to the old one with macros.
2009-11-11 17:59:46 +01:00
Max Kellermann
d5ed23438a
decoder/flac: removed the fake flac_ogg_init() fallback
...
Don't even try to call it with an old libFLAC API.
2009-11-11 17:01:14 +01:00
Max Kellermann
5bbaf0c9f1
decoder/flac: moved code to flac_compat.h
2009-11-11 16:43:34 +01:00
Max Kellermann
f2f8290242
decoder/{flac,vorbis}: include config.h for LFS
...
Allow those plugins to open large files on 32 bit platforms.
2009-11-11 16:37:42 +01:00
Max Kellermann
c1186693b5
decoder/flac: merged code into flac_decoder_loop()
...
The decoder loop of flac_decode_internal(), flac_container_decode()
and flac_filedecode_internal() is merged into this one function. This
unifies the code, and uses the frame number to identify the end of a
CUE sub song.
2009-11-11 16:28:44 +01:00
Max Kellermann
80b220a3a6
decoder/flac: keep track of current frame number
...
We need this for more exact end-of-subsong detection for CUE files.
2009-11-11 15:31:17 +01:00
Max Kellermann
5cc3c4f503
Merge remote branch 'origin/v0.15.x'
2009-11-11 15:14:20 +01:00
Max Kellermann
96204ea3dc
fd_util: don't call fd_set_nonblock() if open() has failed
...
This fixes an assertion failure.
2009-11-11 14:30:38 +01:00
Max Kellermann
9d1a34e30b
added missing config.h includes for extended LFS support
...
All sources which might work with large files must include config.h,
to get Large File Support on 32 bit platforms.
2009-11-11 14:15:34 +01:00
Max Kellermann
69d9716f8b
update: added missing config.h includes
...
This broke sticker and archive support.
2009-11-11 14:13:24 +01:00
Max Kellermann
707b9fea17
decoder/flac: removed redundant NULL checks
...
After the decoder loop, "flac_dec" is always set.
2009-11-11 08:37:21 +01:00
Max Kellermann
d605329f83
decoder/flac: moved code to flac_pcm.c
2009-11-11 07:59:22 +01:00
Max Kellermann
f6e7dffada
decoder/flac: moved code to flac_metadata.c
2009-11-11 07:50:40 +01:00
Max Kellermann
43549db718
decoder/flac: return replay_gain_info object from helper function
...
Make the function more generic by not passing "struct flac_data" to
it.
2009-11-11 07:35:16 +01:00
Max Kellermann
7c0c8ca8d7
Merge branch 'master' of git://git.musicpd.org/metyl/mpd
2009-11-11 06:45:23 +01:00
Max Kellermann
884be8e2b3
decoder/flac: merged some code into flac_tag_apply_metadata()
2009-11-11 00:05:14 +01:00
Max Kellermann
305de100a7
decoder/oggflac: initialize the "tag" variable
2009-11-10 23:56:59 +01:00
Viliam Mateicka
79035d7ed9
wave_encoder: new encoder for streaming PCM wave files.
...
When using wave encoder with httpd audio output mpd can input this stream via http and audiofile decoder.
This for example opens simple way to configure lossless audio streaming port(like jack or pulseaudio does but without overhead).
Another possibility can be using it for gathering raw data for visualization plugins (If sync issue will be resolved)
2009-11-10 22:29:54 +00:00
Max Kellermann
c1a999c492
decoder/flac: don't use float to calculate song duration
...
Simple (up-rounding) integer division is good enough. We're casting
the result back to an integer anyway.
2009-11-10 22:03:58 +01:00
Max Kellermann
e51d9fc6a9
decoder/flac: pass VorbisComment to comments_to_tag()
2009-11-10 21:58:19 +01:00
Max Kellermann
2f69831fb8
decoder/flac: use pcm_buffer instead of fixed buffer
...
This is a great simplification for flac_common_write(), because we can
convert and submit all of the buffer in one turn. No more partial
buffers with complicated formulas.
2009-11-10 21:46:10 +01:00
Max Kellermann
b6a2ffd3d7
decoder/flac: added function flac_data_deinit()
...
Clean up tag and replay_gain_info there.
2009-11-10 21:42:15 +01:00
Max Kellermann
6a5f4651a1
test: fixed the read_mixer program on !HAVE_PULSE
2009-11-10 21:38:20 +01:00
Max Kellermann
70106464d3
configure.ac: enable_audiofile defaults to "auto"
...
Since we're using MPD_AUTO_PKG, we can auto-detect this option. Also
fix the --enable-audiofile help string.
2009-11-10 21:27:55 +01:00
Max Kellermann
b722d3d7f3
configure.ac: require GLib 2.12
...
Drop the required GLib version from 2.16 to 2.12, because many current
systems still don't have GLib 2.16. This requires several new
compatibility functions in glib_compat.h.
2009-11-10 21:14:22 +01:00
Max Kellermann
de57c21a3b
Merge branch 'v0.15.x'
...
Conflicts:
src/input/lastfm_input_plugin.c
src/song_save.c
2009-11-10 21:13:03 +01:00
Max Kellermann
84917721c7
moved GLib compatibility code to glib_compat.h
2009-11-10 21:07:54 +01:00
Max Kellermann
118495d372
decoder/flac: pass void pointer to flac_convert()
...
That function diverts into various bit formats; it doesn't need a
typed pointer.
2009-11-10 19:57:58 +01:00
Max Kellermann
a6bee71f1a
decoder/flac: pass audio_format.bits to flac_convert()
...
Don't use audio_format_sample_size() for identifying the sample
format.
2009-11-10 19:57:28 +01:00
Max Kellermann
e0e6813a1d
fd_util: removed creat_cloexec()
...
Add a "mode" argument to open_cloexec() instead.
2009-11-10 16:53:24 +01:00
Max Kellermann
3d2a9d3545
fd_util: added function pipe_cloexec()
...
Same as pipe_cloexec_nonblock(), but doesn't set non-blocking mode.
2009-11-10 16:53:20 +01:00
Max Kellermann
6975c087e0
decoder_list: fix decoder_plugin_from_mime_type()
...
Copy'n'paste error: call decoder_plugin_supports_mime_type() instead
of decoder_plugin_supports_suffix().
2009-11-09 22:49:05 +01:00
Max Kellermann
54033c74e4
output/alsa: fill period buffer with silence before draining
...
ALSA passes full period buffers to the hardware. If an application
doesn't finish writing a period, libasound will nonetheless send the
partial buffer (with undefined trailing data). This causes noise at
the end of playback. This patch attempts to track the current
position within the period buffer, and generates silence at the end,
before calling snd_pcm_drain().
2009-11-09 22:22:31 +01:00
Max Kellermann
8420f1420f
player_thread: drain audio outputs at the end of the playlist
...
When there's no queued song, and the current one has finished playing,
first make sure that the hardware outputs have really finished playing
the last chunk: call the drain() method in all audio outputs. Without
this patch, MPD stopped playback shortly before the ALSA sound card
had finished playing.
2009-11-09 22:22:27 +01:00
Max Kellermann
3359f8785e
output_thread: added command DRAIN
...
This command manually drains the hardware buffer. This is useful when
the player thread want to make sure that everything has been played.
2009-11-09 22:16:26 +01:00
Max Kellermann
96b974bc45
player_control: removed the "volatile" attribute
...
Our use of the "volatile" keyword was wrong from the start, and now
that we have proper locking, we can safely remove all of them.
2009-11-09 20:33:45 +01:00
Max Kellermann
1a4025420c
fd_util: added missing NONBLOCK fallback for socket()
2009-11-08 22:24:02 +01:00
Max Kellermann
223b0db5bd
fd_util: relicense under BSD 2-clause
...
We'll copy this code to libmpdclient, and that's easier if its license
is BSD.
2009-11-08 22:15:22 +01:00
Max Kellermann
2f4144e1cd
utils: removed function set_nonblocking()
...
It's not used anymore, its features have been moved to fd_util.c.
2009-11-08 22:11:37 +01:00
Max Kellermann
f66edccffd
fd_util: added O_NONBLOCK functions
...
Changed the wrappers for pipe(), socket(), accept(). On WIN32, this
does not work for pipe().
2009-11-08 22:11:35 +01:00
Max Kellermann
b043ade456
fd_util: fixed typo in API documentation
2009-11-08 22:07:14 +01:00
Max Kellermann
217b494cc5
encoder/null: removed empty close() method
...
That's an optional method.
2009-11-08 21:44:01 +01:00
Max Kellermann
5ef62312af
encoder/null: removed unused audio_format attribute
2009-11-08 21:43:19 +01:00
Max Kellermann
5479ed7cfb
fd_util: added API documentation
2009-11-08 21:38:52 +01:00
Max Kellermann
cac63bfd21
fd_util: unexport fd_set_cloexec()
...
This function is used only internally.
2009-11-08 21:38:38 +01:00
Max Kellermann
1573ea1485
inotify: set close-on-exec flag
...
Added wrapper for inotify_init1() to fd_util.c.
2009-11-07 19:02:53 +01:00
Max Kellermann
e3af0032b2
set the close-on-exec flag on all file descriptors
...
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
2009-11-07 18:55:16 +01:00
Max Kellermann
9b21152600
decoder_thread: close input file
...
An input_stream_close() call was missing after today's code
reorganization.
2009-11-07 17:58:52 +01:00
Max Kellermann
c440faa94d
log: redirect stdout/stderr to /dev/null if syslog is used
...
Don't hold a file descriptor on root's tty when syslog is used for
logging.
2009-11-07 17:48:57 +01:00
Max Kellermann
375fd5ed4c
output/jack: added option "server_name"
2009-11-07 17:26:21 +01:00
Max Kellermann
ec25cda68b
output_all: automatically attempt to re-enable failed outputs
...
When an output's enable() method has failed, and playback starts,
retry to enable it. Without this, the user may be confused, because
he sees the device is "enabled" but cannot use it, and currently there
is no error message in the log.
2009-11-07 17:22:34 +01:00
Max Kellermann
c9f726048c
output/httpd: moved code to httpd_output_bind()
2009-11-07 16:52:44 +01:00
Max Kellermann
c2251dc5a2
exclude: use GPatternSpec instead of fnmatch()
...
GLib's version of fnmatch() is more portable.
2009-11-07 16:29:29 +01:00
Max Kellermann
a505cbc6c9
added missing source file decoder_print.c
2009-11-07 16:28:21 +01:00
Max Kellermann
c422344190
database: I/O error handling in db_save()
...
Check ferror() instead of the fprintf() return value.
2009-11-07 16:20:07 +01:00
Max Kellermann
1a4cfc3d90
update_walk: log new container files
2009-11-07 16:03:25 +01:00
Max Kellermann
2f1bd39be8
command: added command "decoders"
...
This command prints a list of decoder plugins and their suffixes /
MIME types.
2009-11-07 15:57:22 +01:00
Max Kellermann
4624dfcb30
decoder_list: moved print_all_decoders() to cmdline.c
...
Export the decoder_plugins array. The function
decoder_plugin_print_all_decoders() it is UI specific and should not
live in this backend library.
2009-11-07 15:46:45 +01:00
Max Kellermann
3546d931a1
decoder_thread: check for STOP before calling the plugin
...
Before calling the plugin's decode method, we should ensure that we
didn't receive a STOP command during initialization.
2009-11-07 15:37:18 +01:00
Max Kellermann
4dadb965a7
decoder_thread: moved code to decoder_input_stream_open()
...
This function opens the stream and waits for it to become ready;
meanwhile it checks for STOP commands. It is code moved from
decoder_run_stream().
2009-11-07 15:35:50 +01:00
Max Kellermann
f2184db1cd
decoder_thread: added local variable "dc" in decoder_run_file()
...
Simplify the expressions.
2009-11-07 15:24:38 +01:00
Max Kellermann
41f3f12709
output/jack: free source port names on exit
...
Make valgrind happy.
2009-11-07 15:17:48 +01:00
Max Kellermann
5d55b45654
decoder_list: pass previous plugin pointer to lookup functions
...
Remove the static integer hack, that's not thread safe and sucks.
2009-11-07 15:14:16 +01:00
Max Kellermann
e3da174fca
decoder_list: moved suffix/mime_type checks to decoder_plugin.c
2009-11-07 15:14:11 +01:00
Max Kellermann
bb862a8ceb
decoder_list: back to NULL terminated list
...
A NULL terminated list is easier to iterate.
2009-11-07 15:14:09 +01:00
Max Kellermann
9ba900486e
decoder_thread: open input stream on demand
...
Moved the global input stream opener to decoder_run_stream().
decoder_run_file() now opens the input stream each time a plugin
provides a stream decoder method.
2009-11-07 15:10:12 +01:00
Max Kellermann
587284bae6
decoder_thread: moved plugin loops to separate functions
...
Tame the large decoder_run_song() function.
2009-11-07 14:57:46 +01:00
Max Kellermann
4c7bfa514f
uri: added function attributes
...
Let gcc optimize a little bit more.
2009-11-07 14:17:28 +01:00
Max Kellermann
f9218423b9
utils: renamed stringFoundInStringArray()
...
No CamelCase. Use bool instead of int. Make both arguments
mandatory.
2009-11-06 19:50:47 +01:00
Max Kellermann
ba34d48cf0
output/jack: dynamic source port list
...
Same as the previous patch: create up to 16 configured source ports.
The plugin tries to do its best at guessing the right combination for
the given input file, the number of source and destination ports.
2009-11-06 18:58:35 +01:00
Max Kellermann
2598dd5109
output/jack: dynamic destination port list
...
Support up to 16 configured destination ports, that should really be
enough for everybody.
2009-11-06 18:55:26 +01:00
Max Kellermann
fac6e9ecdb
output/jack: renamed option "ports" to "destination_ports"
...
Be more clear which kind of port should be configured here.
2009-11-06 01:54:58 +01:00
Max Kellermann
dbbead6e72
output/jack: renamed "output ports" to "destination ports"
...
Use the same name as in the libjack API documentation.
2009-11-06 01:35:19 +01:00
Max Kellermann
8cb9f9b070
playlist_queue: use playlist plugins to load from playlist_directory
...
This patch allows the client to load a playlist file from the playlist
directory with a plugin. This can be used with the "load" command,
but the client has to pass the file name including the suffix. We
will probably use the music directory in the future, to support
playlist files inside the music directory.
2009-11-06 01:09:21 +01:00
Max Kellermann
61cb5df842
playlist_queue: moved code to playlist_open_remote_into_queue()
2009-11-06 01:07:42 +01:00
Max Kellermann
7e66f34154
playlist_list: added function playlist_list_open_path()
...
Added an interface for loading playlists from a local file.
2009-11-06 01:07:39 +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
a4970c66ef
playlist_list: rewind the stream before opening the playlist
...
If one plugin has failed to open the playlist, it may have consumed a
part of the stream already. This may lead to a failure in all
following plugins. Fix: rewind the stream before each open() call.
2009-11-06 00:11:36 +01:00
Max Kellermann
945287358b
output/httpd: bind port when output is enabled
...
Implement the methods enable() and disable(). Bind the HTTP port in
the enable() method, but reject all incoming connections until the
output is opened.
2009-11-05 23:47:29 +01:00
Max Kellermann
979cd5a768
output/jack: support mono input
...
When MPD plays a mono song (audio_format.channel==1), connect only one
source port to both destination ports.
2009-11-05 20:02:04 +01:00
Max Kellermann
a68da8a475
output/jack: clear ring buffers before activating
...
After playback has stopped, the ring buffers may still contain
samples. These will be played when playback is started the next
time. We should clear the buffers each time.
2009-11-05 20:01:50 +01:00
Max Kellermann
2a9685cb3a
output/jack: use jack_client_open() instead of jack_client_new()
...
jack_client_new() is deprecated. This requires libjack 0.100
(released nearly 5 years ago). We havn't been testing older libjack
versions anyway.
As a side effect, there is the new option "autostart".
2009-11-05 20:01:18 +01:00
Max Kellermann
9449006ac3
doc/user: document JACK plugin options
2009-11-05 19:55:16 +01:00
Max Kellermann
88abfc0d0f
output/jack: added option "client_name"
...
Instead of using MPD's audio output name (setting "name"), use a
separate configuration option. Change the default to "Music Player
Daemon".
2009-11-05 19:55:00 +01:00
Max Kellermann
4ec25b5d64
update_walk: log unrecognized files
...
When a song's tags could not be loaded during database update, log
this as a debug message. Same for a song being removed because its
updated tag could not be read.
2009-11-05 08:01:29 +01:00
Max Kellermann
e96dc9a14c
database: rescan after metadata_to_use change
...
Store a list of supported tag items in the database. When loading a
database which does not have a matching list, we must rescan in order
to get the missing information.
2009-11-04 18:48:22 +01:00
Max Kellermann
a434c35eb4
tag: added function tag_name_parse()
...
Convert a string into a tag_type enum.
2009-11-04 18:47:42 +01:00
Max Kellermann
7af8c88e37
song_save: explicitly parse the colon
...
Clear the colon. This simplifies all attribute parsers, because they
can now use strcmp() instead of strncmp().
2009-11-04 18:43:16 +01:00
Max Kellermann
a027bdf118
decoder_thread: initialize decoder_control.quit
...
If left uninitialized, then the decoder thread quits spuriously.
2009-11-04 09:44:50 +01:00
Max Kellermann
c043bf0f63
Merge branch 'master' of git://git.musicpd.org/romain/mpd
2009-11-04 09:20:13 +01:00
Romain Bignon
5744634094
sticker comments in code and example configuration file
...
Signed-off-by: Romain Bignon <romain@peerfuse.org >
2009-11-04 00:21:58 +01:00
Max Kellermann
a22c93b659
player_thread: on return, reset next_song only if queued
...
If no song was queued, then player_control.next_song might contain the
value for the next QUEUE command. We must not reset that.
2009-11-03 23:32:37 +01:00
Max Kellermann
507606bb78
player_thread: detect finished queued song
...
When the decoder finishes the "queued" song very quickly (before the
"current" song finishes playing), an assertion in do_play() fails
because it thinks that it should start decoding the queued song,
although that has in fact just finished.
2009-11-03 23:29:50 +01:00
Max Kellermann
f421c8a191
player_control: moved pc.next_song assertion into lock
...
The assertion shouldn't access player_control.next_song without
locking it.
2009-11-03 23:17:44 +01:00
Max Kellermann
d06f8baf69
player_thread: moved code to decoding_next_song()
...
Simplify several expressions.
2009-11-03 22:27:40 +01:00
Max Kellermann
56b8081af6
player_thread: lock player in player_check_decoder_startup()
...
Don't access attributes without the lock.
2009-11-03 21:23:48 +01:00
Max Kellermann
98d30ac9cf
decoder_control: pass pipe and buffer to dc_start()
...
Don't access decoder_control attributes directly.
2009-11-03 21:18:22 +01:00
Max Kellermann
98150f503a
player_thread: lock inside player_wait_for_decoder()
...
Lock the player_control object when modifying its attributes.
2009-11-03 21:02:54 +01:00
Max Kellermann
6c78c21fb8
player_thread: moved code to player_dc_start()
2009-11-03 21:01:56 +01:00
Max Kellermann
7fd2097a44
decoder_control: don't check command in decoder_is_starting()
...
Asynchronous decoder startup is gone, and we don't need to check
command==DECODE_COMMAND_START anymore.
2009-11-03 21:01:49 +01:00
Max Kellermann
89893faa19
decoder_control: merge next_song and current_song
...
These two variables are redundant, we need only one of them.
2009-11-03 20:02:19 +01:00
Max Kellermann
bfa7da943c
player_thread: don't set errored_song on audio error
...
It's not used if pc.error==PLAYER_ERROR_AUDIO.
2009-11-03 20:01:19 +01:00
Max Kellermann
734676fcfb
decoder_thread: unlock the decoder while checking the stream
...
This is only a slight change to the previous locking behaviour: keep
the decoder unlocked during the loop, and lock it only while checking
decoder_control.command.
2009-11-03 19:21:55 +01:00
Max Kellermann
acb265d082
player_thread: don't start the decoder asynchronously
...
The START command returns without blocking; we don't need the
asynchronous decoder start anymore.
2009-11-03 19:18:17 +01:00
Max Kellermann
77a647fc26
decoder_thread: open input stream after command finished
...
Return the result to the caller more quickly. This unifies error
handling: no error can be reported before the command is finished.
2009-11-03 19:17:52 +01:00
Max Kellermann
59ffb5b7c1
decoder_control: make the song objects const
...
They are just informational.
2009-11-03 19:16:25 +01:00
Jeffrey Middleton
4dc25d3908
alsa_plugin.c: workaround snd_pcm_drain bug
...
Reintroduce a fix from commit 52a0653 (Warren Dukes): "don't call
snd_pcm_drain unless we're already in the RUNNING state". This prevents
ALSA with dmix from sometimes hanging when snd_pcm_drain is called, e.g.
when moving from one song to the next (as in mantis issue 2634).
2009-11-02 23:58:15 -06:00
Max Kellermann
0f9f82f227
output_thread: moved code to ao_next_chunk()
2009-11-02 20:20:14 +01:00
Max Kellermann
55e3aa8179
output_thread: return from ao_play() if chunk->next is NULL
...
When the "next" chunk to be played is NULL, return from ao_play()
immediately, without going over the "while" loop (no-op).
2009-11-02 20:20:14 +01:00
Max Kellermann
408d52fe39
player_thread: check command before waiting during pause
...
While paused, the player thread re-locks its mutex and waits for a
signal. This is racy: when the command is set while the thread is
waiting for the lock, it may wait forever. This patch adds another
command check before player_wait().
2009-11-02 20:20:13 +01:00
Max Kellermann
b9013944dc
output: signal the output thread when CANCEL is finished
...
After CANCEL, the output thread waits for another signal before it
continues playback, to synchronize with the caller. There were some
situations where this signal wasn't sent properly. This patch adds an
explicit g_cond_signal() at two code positions.
2009-11-02 19:09:25 +01:00
Max Kellermann
e814f8d5bd
update: removed unused variable "update_notify"
...
That variable has been superseded by "remove_notify" (defined in
update_remove.c).
2009-11-02 17:22:41 +01:00
Max Kellermann
64a481d873
{decoder,player}_control: removed duplicate wakeups
...
Don't wake up the target thread in every iteration of the wait() loop.
Waking it up once, right after the command has been set, must be
enough.
2009-11-02 17:12:00 +01:00
Max Kellermann
93d8f9f00e
player_control: lock player before setting seek parameters
...
These parameters must be protected with a mutex, too. Wrap everything
inside player_lock()/player_unlock(), and use player_command_locked()
instead of player_command().
2009-11-02 17:02:05 +01:00
Max Kellermann
d1742a2330
output_thread: check command before g_cond_wait()
...
After CANCEL, call g_cond_wait() only if the new command is still
NONE. Problem is that ao_command_finished() has to unlock the
audio_output object, and in the meantime, the player thread might have
submitted a new command.
2009-11-02 17:01:17 +01:00
Max Kellermann
5555d30bbd
song_save: free song object on error
...
Fix a minor memory leak.
2009-11-01 17:51:32 +01:00
Max Kellermann
4b17aca747
song_save: load one song at a time
...
Changed songvec_load() to song_load(). Added start and end markers
for each song. Removed the "key" line, it's redundant.
2009-11-01 17:51:29 +01:00
Max Kellermann
63dda94a02
database: save database format version
2009-11-01 17:50:01 +01:00
Max Kellermann
7f9ee00980
directory_save: partially revert the g_str_has_prefix() patch
2009-11-01 17:49:49 +01:00
Max Kellermann
53a749780a
database: use strcmp() instead of g_str_has_prefix()
2009-11-01 15:54:06 +01:00
Max Kellermann
c504004702
database: removed redundant music_root allocation
...
The "music_root" global variable is allocated by db_init().
2009-11-01 15:51:19 +01:00
Max Kellermann
8bfe3497b0
replay_gain: trigger OPTIONS idle event on mode change
2009-11-01 15:44:56 +01:00
Max Kellermann
9bcfd3a47d
text_file: allocate line buffers dynamically
...
Use a single GString buffer object in all functions loading the
database. Enlarge it automatically for long lines. This eliminates
the maximum line length for tag values. There is still an upper limit
of 512 kB to prevent denial of service, but that's reasonable I guess.
2009-11-01 15:37:16 +01:00
Max Kellermann
451f932d80
directory_save: allocate directory object earlier, assign mtime
...
Allocate the directory object after the "directory:" line. Assign the
mtime from the input file to this new object, instead of to the parent
directory.
2009-11-01 15:34:14 +01:00
Max Kellermann
10b7608926
directory_save: free directory on error
...
Fix a minor memory leak in the error handler.
2009-11-01 15:34:13 +01:00
Max Kellermann
2cd8a9fecf
directory_save: abort on duplicate subdirectory
...
The old code tried to recover, but what's the point of that? If a
directory is duplicate, something is wrong with the database file.
2009-11-01 15:34:13 +01:00
Max Kellermann
22279127f9
directory_save: moved code to directory_load_subdir()
2009-11-01 15:34:12 +01:00
Max Kellermann
ad01e1249b
decoder_api: check decoder==NULL in decoder_read()
...
It's legal to pass decoder=NULL to decoder_read(). Add a check.
2009-11-01 15:34:12 +01:00
Max Kellermann
6ef428af2e
decoder_control: removed the global variable "dc"
...
Allocate a decoder_control object where needed, and pass it around.
This will allow more than one decoder thread one day.
2009-10-31 19:22:56 +01:00
Max Kellermann
806496dfc9
Merge branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder/ffmpeg_plugin.c
src/update.c
2009-10-31 18:23:56 +01:00
Max Kellermann
9eadb517da
player_thread: simplified thread destruction
...
Simply use "return" instead of g_thread_exit().
2009-10-31 18:01:05 +01:00
Max Kellermann
1ae4e4dcd3
songvec: sort songs by album name first, then disc/track number
...
When the songs of two albums are in the same directory, all songs of
an album should be right next to each others.
2009-10-31 17:36:56 +01:00
Max Kellermann
d099a7e464
songvec: simplified compare_tag_item()
...
Moved some code to tag_get_value_checked(), to eliminate several NULL
checks.
2009-10-31 17:32:00 +01:00
Max Kellermann
25a806a347
player_control: protect command, state, error with a mutex
...
Use GMutex/GCond instead of the notify library. Manually lock the
player_control object before accessing the protected attributes. Use
the GCond object to notify the player thread and the main thread.
2009-10-31 17:02:12 +01:00
Max Kellermann
73cff374fd
{player,output}_thread: fixed elapsed_time quirks
...
Right after seeking and song change, the elapsed_time shows old
information, because the output thread didn't finish a full chunk
yet. This patch re-adds a second elapsed_time variable, and keeps
track of a fallback value, in case the output thread can't provide a
reliable value.
2009-10-30 16:28:15 +01:00
Max Kellermann
cec019efff
output_thread: return bool from ao_play()
...
Return false when there was no chunk in the pipe. If the function
returns true, then audio_output_task() will not wait for a notify from
the player thread. This fixes a race condition.
2009-10-29 23:35:27 +01:00
Max Kellermann
4748decd8d
player_thread: set error status in play_next_chunk()
...
Don't set the error in play_chunk(); do all the error handling in the
caller. The errored_song attribute isn't set anymore; it doesn't make
sense for PLAYER_ERROR_AUDIO.
2009-10-29 22:39:48 +01:00
Max Kellermann
975143ab47
output_control: fixed deadlock in audio_output_update()
...
Call a version of audio_output_close() which doesn't lock recursively.
2009-10-29 22:39:42 +01:00
Viliam Mateicka
bb5acc939f
httpd: add config option to limit number of clients
2009-10-29 22:38:18 +01:00
Max Kellermann
bde3d14339
output: consistently lock audio output objects
...
Always keep the audio_output object locked within the output thread,
unless a plugin method is called. This fixes several race conditions.
2009-10-29 17:06:40 +01:00
Max Kellermann
1403172ef3
output_plugin: added method "drain"
...
drain() is the opposite of cancel(): it waits until all data in the
buffer has finished playing. Instead of implicitly draining in the
close() method like the ALSA plugin has been doing it forever, let the
output thread decide whether to drain or to cancel.
2009-10-29 15:59:40 +01:00
Max Kellermann
f74ee1a352
output/alsa: don't recover on CANCEL
...
The recovery is for nothing if we get CLOSE afterwards. Let's not
recover in the cancel() method, and let the next play() call sort it
out.
2009-10-29 15:59:35 +01:00
Max Kellermann
cf8d278b78
output_thread: removed redundant filter_close() call
...
Don't call filter_close() right after ao_close().
2009-10-29 15:58:21 +01:00
Max Kellermann
82af161210
output/pulse: initialize pulse_output.mixer
...
This variable was uninitialized and led to crashes.
2009-10-29 15:58:18 +01:00
Max Kellermann
9fed97b1f1
decoder/ffmpeg: removed the "author" vs "artist" workaround
...
libavformat gives us the song artist in the "author" field. Since we
use av_metadata_conv(), we don't need to check for "artist".
2009-10-28 22:17:10 +01:00
Alam Arias
83a9cf74fb
include pulse/version.h for PA_CHECK_VERSION
2009-10-27 07:46:53 +01:00
Viliam Mateicka
a13e9832e7
encoder: renaming none_encoder to null_encoder
2009-10-26 20:02:34 +01:00
Viliam Mateicka
f67426871b
mpd.conf: new bool config value for enabling/disabling inotify update
2009-10-26 19:14:40 +01:00
Viliam Mateicka
2bfddd4310
encoder: new encoder plugin which just pass data through
2009-10-24 19:01:15 +02:00
Viliam Mateicka
7b343eaf50
add --disable-inotify for configure to disable inotify when autodetected
2009-10-24 18:24:29 +02:00
Max Kellermann
ac830468bf
output/jack: implement methods enable()/disable()
...
Don't connect to JACK before MPD has daemonized.
2009-10-23 10:56:25 +02:00
Max Kellermann
7547b1170b
output/pulse: implement methods enable()/disable()
...
Don't connect to PulseAudio before MPD has daemonized.
2009-10-23 10:56:16 +02:00
Max Kellermann
e53ca368a5
output_plugin: added methods enable() and disable()
...
With these methods, an output plugin can allocate some global
resources only if it is actually enabled. The method enable() is
called after daemonization, which allows for more sophisticated
resource allocation during that method.
2009-10-23 10:55:52 +02:00
Max Kellermann
c426a0bc5c
output/pulse: call mixer on state changes
...
Don't let the mixer plugin "override" the libpulse callbacks.
Instead, add a "mixer" attribute to the pulse_output struct, and call
the mixer on all interesting events.
2009-10-23 10:33:26 +02:00
Max Kellermann
acc99da73d
mixer_control: don't close the mixer if set_volume() fails
...
A mixer is useful enough if it can be read. Setting it may be
found unavailable at runtime.
2009-10-23 10:33:23 +02:00
Max Kellermann
c4f895daf4
mixer_plugin: get_volume() may return -1 if unavailable
...
If the method get_volume() returns -1 and no error object is set, then
the volume is currently unavailable, but the mixer should not be
closed immediately.
2009-10-23 10:32:25 +02:00
Max Kellermann
ede828c910
mixer_control: allow methods "open" and "close" to be NULL
...
It's possible to have a mixer implementation which does not explicitly
need the methods open() and close().
2009-10-23 09:15:51 +02:00
Max Kellermann
7dd172efec
mixer/pulse: don't get volume if stream is not yet ready
...
Moved the check from pulse_mixer_open() to pulse_mixer_update().
2009-10-22 20:28:12 +02:00
Max Kellermann
80ac82c8fb
output/fifo: renamed source to fifo_output_plugin.c
2009-10-22 19:23:30 +02:00
Max Kellermann
fd182f6d1e
Makefile.am: enable the "subdir-objects" option
...
Don't clutter the top directory with *.o files.
2009-10-22 18:23:22 +02:00
Max Kellermann
a05d0d5d94
audio: removed function finishAudioConfig()
...
There's no point in clearing the audio format before exiting.
2009-10-22 17:12:32 +02:00
Max Kellermann
0107ef2aad
main: put #ifdef inside winsock_init()
...
This way, the function call in the main() function does not need
another pair of #ifdef/#endif.
2009-10-22 17:12:28 +02:00
SF Markus Elfring
a153f21315
permission: improve const-correctness
2009-10-22 17:11:39 +02: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
Max Kellermann
9526fdbe73
audio_format: wildcards allowed in audio_format configuration
...
An asterisk means that this attribute should not be enforced, and
stays whatever it used to be. This way, some configuration values
work like masks.
2009-10-21 23:01:04 +02:00
Max Kellermann
a5c4566fa1
audio_parser: moved code to separate functions
2009-10-21 23:01:03 +02:00
Max Kellermann
2c05430002
output: convert config_audio_format to an audio_format struct
...
This allows more sophisticated audio format selection.
2009-10-21 22:37:28 +02:00
Max Kellermann
643650dba7
audio_parser: renamed parameter "error" to "error_r"
...
It's a double pointer.
2009-10-21 22:22:23 +02:00
Max Kellermann
8cb6854da4
audio: removed config_param.value NULL check
...
The value is always non-NULL.
2009-10-21 22:22:20 +02:00
Max Kellermann
83844ec239
output/jack: make ringbuffer_size a size_t
2009-10-21 21:39:26 +02:00
Max Kellermann
1bfd25be35
output/jack: connect to server on MPD startup
...
.. and keep up the JACK connection while MPD runs. Allocate the ring
buffers on the first open, and free them at MPD exit.
2009-10-21 21:37:11 +02:00
Max Kellermann
cee216f2dc
output/jack: removed the empty "cancel" method
...
JACK doesn't need cancel() because it won't do much anyway. Buffers
are small.
2009-10-21 21:01:00 +02:00
Max Kellermann
27c246e8d9
output/jack: renamed parameter "error" to "error_r"
...
It's a double pointer.
2009-10-21 20:13:39 +02:00
Max Kellermann
1ff39476eb
output/jack: implement the "pause" method
...
Don't disconnect from JACK during pause.
2009-10-21 18:33:05 +02:00
Max Kellermann
acfd9a73bc
output/jack: renamed source to jack_output_plugin.c
2009-10-21 18:33:01 +02:00
Max Kellermann
b479a264b6
pulse: code rewrite using the asynchronous libpulse API
...
This is a complete rewrite of the PulseAudio output plugin. It uses
the asynchronous API, which gives us more control over everything.
Additionally, it connects to the PulseAudio server on startup, and
keeps this connection up while MPD runs. During pause, instead of
closing the stream, it enables "cork".
2009-10-21 10:30:42 +02:00
Max Kellermann
ac32f36e4e
mixer_plugin: pass audio_output pointer to mixer_plugin.init()
...
This allows the mixer object to access its associated audio output
object.
2009-10-21 09:48:41 +02:00
Max Kellermann
b8ccc885c8
volume: added PIPE_EVENT_MIXER
...
Flush the hardware volume cache, and send the MIXER idle event. This
allows mixer plugins to detect volume changes.
2009-10-21 09:48:37 +02:00
Max Kellermann
4e2fb3fb89
mixer_plugin: use GError for error handling
2009-10-20 22:10:56 +02:00
Max Kellermann
9cd2129eeb
output_init: renamed parameter "error" to "error_r"
...
It's a double pointer.
2009-10-20 21:26:28 +02:00
Max Kellermann
097e200a97
mixer/{oss,alsa}: renamed the mixer source files
2009-10-20 21:23:05 +02:00
Max Kellermann
bd28caed3c
output/pulse: renamed context to "Music Player Daemon"
...
This looks nicer in the PulseAudio manager than just "mpd".
2009-10-20 21:07:38 +02:00
Max Kellermann
bc4266bef8
pulse: renamed source files
2009-10-20 21:05:11 +02:00
Max Kellermann
bc629c8a3e
pulse: announce "media.role=music"
...
This allows PulseAudio to do some advanced tweaks.
2009-10-20 21:02:10 +02:00
Max Kellermann
2e9e34aa40
main: call g_set_application_name()
...
I'm not sure about the advantages of calling g_set_application_name(),
because I don't use a task manager (except for ps and kill), but it
sure doesn't hurt.
2009-10-20 21:02:00 +02:00
Max Kellermann
c953d6409d
mapper, update, ...: use g_build_filename(), G_DIR_SEPARATOR, ...
...
Try to be as portable as possible, use GLib path name functions and
macros.
2009-10-20 21:01:55 +02:00
Max Kellermann
447e4d3583
Merged release 0.15.5 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder/flac_plugin.c
src/update.c
2009-10-18 19:02:43 +02:00
Serge Ziryukin
33bf6c0978
decoder/vorbis: avoid unused symbol warnings from vorbisfile.h
...
svn r13289 of libvorbis introduced static callbacks (like OV_CALLBACKS_DEFAULT)
defined in "vorbisfile.h" header. First released version with this change is libvorbis-1.2.2.
In libversion-1.2.3 OV_EXCLUDE_STATIC_CALLBACKS define was added to avoid
warnings about unused static callbacks. Information on the OV_EXCLUDE_STATIC_CALLBACKS
can be found in http://svn.xiph.org/trunk/vorbis/CHANGES .
2009-10-18 18:35:02 +02:00
Max Kellermann
d69e0ab53a
command: omitting the range end is possible
...
When the range end is missing, then the maximum possible value is
assumed.
2009-10-18 01:24:49 +02:00
Max Kellermann
e7c267db4f
command: use GLib limit macros in check_range()
...
These are portable and don't require limits.h.
2009-10-18 01:24:45 +02:00
Max Kellermann
6a5e7c118b
doc/protocol.xml: documented range parameter in "delete"
2009-10-18 01:24:22 +02:00
Max Kellermann
bddb6b4273
command: allow changing replay gain mode on-the-fly
...
The new command "replay_gain_mode" allows the user to switch the
replay gain mode on-the-fly. No more mpd.conf editing.
2009-10-17 22:58:19 +02:00
Max Kellermann
7ec32704f9
replay_gain: moved mode parser to replay_gain_set_mode_string()
2009-10-17 22:40:50 +02:00
Max Kellermann
8d217567c6
replay_gain: added setting "replaygain off"
...
There was no setting for disabling replay gain. It was off when the
"replaygain" setting was not there.
2009-10-17 21:38:45 +02:00
Max Kellermann
a17d814381
replay_gain: read configuration even when replay gain is disabled
...
It will be possible to enable replay gain at runtime even when it is
disabled in the configuration file. This patch enables the preamp
settings in this case.
2009-10-17 21:38:32 +02:00
Max Kellermann
5554633ab8
update: obey .mpdignore files
2009-10-16 18:11:43 +02:00
Max Kellermann
8cd845b79e
doc/user.xml: added chapter "Using MPD"
2009-10-16 18:10:36 +02:00
Max Kellermann
06da91a73b
doc/user.xml: added playlist plugin reference
2009-10-16 17:51:33 +02:00
A. Klitzing
792010ba32
notify_queue: use g_timeout_add_seconds()
2009-10-15 21:22:39 +02:00
Max Kellermann
b69246c646
player_thread: don't call audio_output_all_check() if paused
...
When the audio output fails to open, MPD pauses playback, but doesn't
reset player.play_audio_format. This leads to an assertion failure in
audio_output_all_check() on the next REFRESH command, because no audio
output is open.
2009-10-15 20:47:00 +02:00
Qball Cow
f4ea9b7393
Add PLS Parser
2009-10-15 00:08:06 +02:00
Max Kellermann
1ff101c568
input/lastfm: removed obsolete last.fm input plugin
...
This has been replaced by the last.fm playlist plugin. The input
plugin has never worked well, and was just a playground to experiment
with the last.fm radio protocol.
2009-10-13 19:43:56 +02:00
Max Kellermann
a93ffdd1be
command: "load" supports remote playlists (m3u, xspf, lastfm://)
...
This patch integrates the playlist plugin API to the MPD core. We'll
be able to do much more in the future with that API, that's just the
beginning.
2009-10-13 18:53:33 +02:00
Max Kellermann
319149254d
main: initialize playlist plugins
2009-10-13 18:01:11 +02:00
Max Kellermann
f7ce4f6239
song: renamed attribute "url" to "uri"
2009-10-13 18:01:06 +02:00
Max Kellermann
28442cce9f
queue: no CamelCase
...
Renamed idToPosition.
2009-10-13 16:43: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
898d885ae2
test/dump_playlist: try playlist_list_open_uri() first
2009-10-13 16:25:37 +02:00
Max Kellermann
a61d0c9567
Merge branch 'v0.15.x'
2009-10-13 16:25:17 +02:00
Max Kellermann
eea4edd92c
test/dump_playlist: parse a configuration file
2009-10-13 16:20:21 +02:00
Max Kellermann
cb331ae436
playlist_list: pass configuration to playlist plugins
...
This patch completes the configuration support.
2009-10-13 16:19:21 +02:00
Max Kellermann
767e27c8f0
playlist/m3u: added plugin name
2009-10-13 16:13:36 +02:00
Max Kellermann
e78370e050
playlist_list: initialize the "playlist" variable
...
Prevent access on uninitialized variable if the plugin list is empty.
2009-10-13 16:13:33 +02:00
Max Kellermann
ea616b3ed4
tag: removed the "_ITEM_" suffix from the enum names
2009-10-13 16:12:45 +02:00
Max Kellermann
a9dc0e816c
state_file: use g_timeout_add_seconds()
2009-10-13 16:12:44 +02:00
Max Kellermann
4390d72b14
configure.ac: require GLib 2.16
...
Accidently, MPD has been using several GLib 2.16 functions for a
while, and nobody noticed yet. To simplify the code base, let's bump
the minimum GLib version for MPD to 2.16. That version is old enough,
and it's reasonable to expect users to have it.
2009-10-13 16:12:43 +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
Max Kellermann
dbb1e732b8
text_input_stream: input_stream wrapper for reading text files
2009-10-12 22:30:59 +02:00
Max Kellermann
7ec503c4ec
song: moved code to song_update.c
...
Moved all the code which depends on the decoder plugins to a separate
source. That allows leaner test programs.
2009-10-12 22:30:50 +02:00
Max Kellermann
a07ab27dae
decoder_thread: removed redundant NULL assignments
...
The while() clause resets the "plugin" variable. We don't need to
reset it at the end of the loop body.
2009-10-11 23:44:21 +02:00
Max Kellermann
727c301fbc
input_stream: use "goffset" instead of "off_t"
...
The "off_t" type may change when you enable or disable large file
support on 32 bit platforms. This caused severe ABI problems within
MPD when we enabled LFS for the first time: two sources included
config.h and sys/types.h in different order, and had different off_t
sizes - leading to memory corruption because of ABI incompatibility.
This patch attempts to get rid of all public "off_t" uses: it removes
"off_t" from the input_stream ABI/API, and switches to GLib's 64 bit
"goffset" type. This may hurt 32 bit embedded platforms a tiny bit,
but that's not even measurable.
2009-10-11 23:32:22 +02:00
Max Kellermann
71f881d5cb
Merge branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-10-11 23:25:27 +02:00
Avuton Olrich
d4e3fb4330
configure: Fix up the recorder plugin configure.
2009-10-10 11:36:22 -07:00
Max Kellermann
57f69a2915
doc/protocol.xml: "addid" with negative position is deprecated
2009-10-09 10:18:02 +02:00
Max Kellermann
448aefaace
player_thread: get "elapsed" from audio outputs
...
Tracking the "elapsed" time from the chunks which we have sent to the
output pipe is very imprecise: since we have implemented the music
pipe, we're sending large number of chunks at once, giving the
"elapsed" time stamp a resolution of usually more than a second.
This patch changes the source of this information to the outputs. If
a chunk has been played by all outputs, the "elapsed" time stamp is
updated.
The new command PLAYER_COMMAND_REFRESH makes the player thread update
its status information: it tells the outputs to update the chunk time
stamp. After that, player_control.elapsed_time is current.
2009-10-08 22:09:25 +02:00
Max Kellermann
47b5e73a15
player_thread: always clear player_control.next_song on return
...
pc.next_song might be non-NULL even if player.queued==true: when the
decoder has started decoding the next song, but the result hasn't been
read yet.
2009-10-08 22:09:25 +02:00
Max Kellermann
d6a6f428b3
player_control: eliminate PLAYER_COMMAND_PLAY
...
Sending PLAYER_COMMAND_STOP followed by PLAYER_COMMAND_QUEUE does the
same. PLAYER_COMMAND_PLAY is redundant.
2009-10-08 21:22:31 +02:00
Max Kellermann
fd3934b849
player_control: added several assertions on pc.next_song==NULL
...
After some of the commands, the player thread must have reset the
pc.next_song attribute.
2009-10-08 21:17:00 +02:00
Max Kellermann
e5857cb722
player_control: no CamelCase
2009-10-08 21:12:57 +02:00
Max Kellermann
2ec89c6304
player_control: clear errored_song in clearPlayerError()
...
Without the player error code, it errored_song variable is not used,
and should be cleared, to avoid invalid access in pc_song_deleted().
2009-10-08 21:00:16 +02:00
Max Kellermann
76953a9748
player_control: bundle "get" functions in pc_get_status()
...
The new player_status struct replaces a bunch of playerGetX()
functions. When we add proper locking to the player_control struct,
we will only need to lock once for the "status" command.
2009-10-08 20:48:07 +02:00
Max Kellermann
128a5fa4a5
player_control: allocate getPlayerErrorStr() result
...
This lets us eliminate the static fixed-size buffer.
2009-10-08 20:45:38 +02:00
Max Kellermann
a5960c20cc
playlist_control: "previous" really plays the previous song
...
No more CD player emulation. The current behaviour of "previous" is
difficult for a client to predict, because it does not definitely know
the current position within the song. If a client wants to restart
the current song, it can always send "playid".
2009-10-08 20:33:50 +02:00
Max Kellermann
aa71ce4cd5
input_stream: include config.h for AC_SYS_LARGEFILE macros
...
AC_SYS_LARGEFILE defines macros for config.h. If we don't include
config.h, we don't get large file support.
2009-10-08 16:57:55 +02:00
Max Kellermann
16c981d425
decoder_api: document all function parameters
2009-10-08 15:39:45 +02:00
Alam Arias
81e56705ad
configure.ac: build with large file support by default
...
This fixes mpg123 support.
2009-10-08 15:24:59 +02:00
Max Kellermann
ecb118f1ed
state_file: save only if something has changed
...
If nothing has changed since the last save, don't save the state
file. Saving will spin up the hard drive, which is undesirable on
hosts where MPD is idling in background.
2009-10-08 15:22:39 +02:00
Max Kellermann
1e663b1869
output_state: no CamelCase
2009-10-06 10:30:10 +02:00
Max Kellermann
7013f9fc31
Merged release 0.15.4 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-10-03 16:17:02 +02:00
Max Kellermann
31cabc751d
command: range support for "delete"
2009-09-30 23:13:13 +02:00
Max Kellermann
0478a8e288
playlist_edit: moved code to playlist_delete_internal()
2009-09-30 23:10:15 +02:00
Tony
1039d57251
Add the sidplay filter param to doc/mpdconf.example.
2009-09-28 11:59:55 +02:00
Tony
934a38f976
Make the sidplay decoder filter configurable.
2009-09-28 11:59:55 +02:00
Max Kellermann
8f261af5c1
automatically update the database with Linux inotify
...
This patch implements a light-weight inotify library, and watches all
directories below the music directory. It updates all directories
where files changed after a delay of 5 seconds.
2009-09-25 18:32:00 +02:00
Max Kellermann
3e8bdb9384
update: added missing stdbool.h include
2009-09-25 16:43:33 +02:00
Max Kellermann
7542ec4f20
command: relax requirements for unquoted words
...
Allow most printable characters in unquoted words. The tokenizer
patch introduced very strict requirements for command parameters -
those were undocumented, and we're reverting the strictness now.
2009-09-25 00:53:15 +02:00
Max Kellermann
89ba540e6d
command: added command "rescan"
...
"rescan" is the same as "update", but it discards existing songs in
the database.
2009-09-24 21:55:40 +02:00
Max Kellermann
47ab2ad6f3
configure.ac: rename HAVE_CURL to ENABLE_CURL
2009-09-24 21:40:07 +02:00
Max Kellermann
06d5d4b03e
conf: handle fatal errors with GError
...
Don't call g_error(), which will abort the process and dump core.
This patch does not affect all the config_get_X() functions. These
need some more refactoring.
2009-09-24 21:40:07 +02:00
Max Kellermann
f3739a73af
conf: splitted function config_param_free()
2009-09-24 21:40:05 +02:00
Max Kellermann
1b227e0145
cmdline: handle fatal errors with GError
...
Don't call g_error(), which will abort the process and dump core.
2009-09-24 21:40:05 +02:00
Max Kellermann
308b3f2337
listen: handle fatal errors with GError
...
Don't call g_error(), which will abort the process and dump core.
2009-09-24 21:40:04 +02:00
Max Kellermann
1e56107967
update: splitted update.c into several sources
2009-09-24 21:39:46 +02:00
Max Kellermann
b0e1a3d34c
update: pass const string to update_enqueue()
...
Duplicate the path string within update.c, do not expect an allocated
string as parameter.
2009-09-24 21:39:43 +02:00
Max Kellermann
1cc4914b24
update: renamed directory_update_init() to update_enqueue()
2009-09-24 17:57:39 +02:00
Max Kellermann
aec18c74ec
decoder/sidplay: free songlength data blob in error handler
...
When parsing the songlength database fails, the code forgot to free
the memory allocated by the raw file data.
2009-09-24 10:17:58 +02:00
Max Kellermann
4729d10bb2
decoder/sidplay: moved code to sidplay_load_songlength_db()
2009-09-24 10:14:05 +02:00
Max Kellermann
a8af3ce0dd
decoder/sidplay: free GError objects
...
The caller is responsible fro freeing GError objects. That
g_error_free() call was missing in two places.
2009-09-24 10:05:21 +02:00
Max Kellermann
d657be33ba
decoder/sidplay: pass GError** to g_file_get_contents()
...
The error handler dereferences GError*, but did not retrieve that
object from g_file_get_contents().
2009-09-24 10:04:24 +02:00
Max Kellermann
a86f9b8035
cmdline: removed options --create-db and --no-create-db
...
Both options are deprecated, and should not be used anymore. Many
users get confused by their presence.
2009-09-20 23:31:35 +02:00
Patrik Weiskircher
32f212cb86
output/osx: fix the OS X 10.6 build
...
Include CoreServices/CoreServices.h.
2009-09-20 23:30:37 +02:00
Max Kellermann
fdc479676f
Merge branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
doc/mpdconf.example
2009-09-10 23:18:43 +02:00
Max Kellermann
4cdf62000c
INSTALL: mention libwavpack and OpenAL
2009-09-09 10:44:12 +02:00
Serge Ziryukin
761771ad24
output/openal: support OpenAL plugin on Mac OS X
2009-09-07 15:52:32 +02:00
Serge Ziryukin
f5f4a9da6b
doc: documented the "openal" output plugin settings
2009-09-06 22:22:17 +02:00
Serge Ziryukin
eefef369ea
output/openal: fix default device name
2009-09-06 22:22:17 +02:00
Patrik Weiskircher
4ebf53ffdf
configure.ac: use /Developer/SDKs/MacOSX10.5.sdk
...
First, this is not a nice fix. I am also not sure why the error
happens in the first place. I assume Apple deprecated some stuff in
10.6 + x86_64.
My patch simply uses the 10.5 SDK if compiling on 10.6 Snow Leopard -
which is installed by default if you install XCode 3.2 that comes with
Snow Leopard. The reason this is not a nice fix is, of course, that
this doesn't fix the problem. It just "postpones" it to the next
release of MacOS X. But, some people may need it, and its better than
nothing.
2009-09-06 17:42:50 +02:00
Serge Ziryukin
8b6a5d19d0
openal output plugin
2009-09-06 17:34:56 +02:00
Max Kellermann
129920e8f4
Merge branch 'master' of git://git.musicpd.org/avuton/mpd
2009-09-02 12:51:44 +02:00
Avuton Olrich
dc3b96a003
doc: Unify position of footnotes and cleanup wording.
2009-08-30 18:57:12 -07:00
Avuton Olrich
5a0d77bea3
doc: Remove superfluous comment already described in footnotes.
2009-08-30 18:53:14 -07:00
Mike Dawson
430b5b0490
decoder/sidplay: support seeking
2009-08-30 19:49:16 +02:00
Mike Dawson
cde9408bd8
decoder/sidplay: implemented songlength database
...
[mk: added autoconf test; fixed songlen_data_size type]
2009-08-30 19:49:04 +02:00
Mike Dawson
85ce9aa7de
decoder/sidplay: subtunes
2009-08-30 19:48:56 +02:00
Max Kellermann
f2ff2409ad
Merged release 0.15.3 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-08-30 09:42:12 +02:00
Max Kellermann
bff4c54ece
decoder/mpg123: new decoder plugin based on libmpg123
...
Still missing:
- seeking
- tags
- streaming
- encodings other than MPG123_ENC_SIGNED_16
2009-08-26 20:08:13 +02:00
Anton Khirnov
df0c26a394
command: add "findadd" command.
2009-08-25 13:43:22 +02:00
Gunnar Roth
1e56c7b862
decoder/vorbis: open file in "binary" mode
...
fopen change for win32 in tag dup of vorbis
win32 adaption for head changes
2009-08-25 00:49:48 +02:00
Max Kellermann
4a0d4a02a6
output/recorder: new output plugin for recording radio streams
...
The recorder plugin writes audio played by MPD to a file. This may be
useful for recording radio streams.
This implementation is incomplete, because support for tags is
missing, and MPD should be able to record each track to a different
file.
2009-08-24 18:57:06 +02:00
Max Kellermann
4231ec51c3
conf: removed the deprecated "error_file" option
...
This option was deprecated by the 0.15 release. This patch makes this
option invalid.
2009-08-24 17:12:15 +02:00
Max Kellermann
f401c1059c
Merged release 0.15.2 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-08-15 21:18:38 +02:00
Max Kellermann
e28a0e97b5
decoder_control: protect command, state with a mutex
...
Replace decoder_control.notify with decoder_control.mutex and
decoder_control.cond. Lock the mutex on all accesses to
decoder_control.command and decoder_control.state.
2009-08-13 23:33:46 +02:00
Mike Frysinger
499ed62dd7
use daemon() when the C library provides it
...
For systems that cannot support fork() (like no-mmu Linux), use daemon() if
it is available for the daemonizing code.
Signed-off-by: Mike Frysinger <vapier@gentoo.org >
2009-08-13 17:25:30 +02:00
Max Kellermann
c3e02bec3b
test: initialize locale in read_tags.c
2009-08-04 00:41:06 +02:00
Max Kellermann
4363c49443
tag_id3: moved id3_genre_name() call to tag_id3_import_text()
...
The ID3_FRAME_GENRE field is queried only in tag_id3_import_text().
Don't pass the tag type to import_id3_string().
2009-08-04 00:15:46 +02:00
Max Kellermann
09571fcc55
tag_id3: splitted function tag_id3_import_frame()
...
Splitted tag_id3_import_frame() into two specialized functions:
tag_id3_import_text() and tag_id3_import_comment(). Use
id3_frame_field() instead of directly accessing id3_frame.fields.
2009-08-04 00:15:43 +02:00
Max Kellermann
c7563a5783
tag_id3: corrected parameter types
...
Changed "int type" to "enum tag_type". Converted "int is_id3v1" to
"bool".
2009-08-04 00:14:24 +02:00
Max Kellermann
b06b4f937d
tag_id3: converted tag_is_id3v1() to an inline function
...
Prefer C over CPP.
2009-08-04 00:13:22 +02:00
Max Kellermann
86c6bb618b
tag_id3: no CamelCase
...
Renamed functions.
2009-08-04 00:13:22 +02:00
Anton Khirnov
bff72634ca
ffmpeg_plugin: convert metadata to generic format
2009-08-03 17:40:22 +02:00
Max Kellermann
6f060081be
command: moved command_process_list() to client.c
2009-07-29 08:00:01 +02:00
Courtney Cavin
7f865f722c
playlist: CamelCaseIsBad
...
Renamed all playlist functions to non-CamelCase.
2009-07-28 18:07:01 -04:00
Courtney Cavin
614a011845
input/lastfm: Ensure multiple identical xml entities are decoded.
...
Previously, if two identical entities appeared in one string, only the
first would get decoded. This fixes that bug.
2009-07-28 16:40:52 -04:00
Max Kellermann
0c66832b3b
doc: removed deprecated mixer options from manpage
...
Removed documentation about the global options mixer_type,
mixer_device and mixer_control.
2009-07-28 17:22:55 +02:00
Max Kellermann
f78366910e
client: splitted client.c into several pieces
...
The soure file client.c has nearly 1000 lines, time for splitting it
into smaller pieces to improve readability.
2009-07-28 17:17:23 +02:00
Max Kellermann
c426bbcf95
client: moved struct client to client_internal.h
...
Prepare splitting client.c into several sources.
2009-07-28 16:42:40 +02:00
Courtney Cavin
6d71094ce5
input/lastfm: use metadata
...
Added a patch to flush out the last.fm input plugin slightly. It
basically turns it into a wrapper for the appropriate plugin. Most
notably metadata is now extracted.
2009-07-28 16:41:50 +02:00
Max Kellermann
9322f04529
cmdline: obey $(sysconfdir) for default mpd.conf location
...
Instead of hard-coding the path "/etc/mpd.conf", use the configured
$(sysconfdir) path. This can be set with:
./configure --sysconfdir=/etc
Note that this changes the default path to "/usr/local/etc/mpd.conf",
given the default prefix "/usr/local". This is actually more correct
than the old default.
2009-07-28 16:17:18 +02:00
Max Kellermann
884201b919
client: moved some code to client_list_X()
...
Make the client list management a separate sub-library.
2009-07-23 19:20:30 +02:00
Max Kellermann
a0afd0369f
client: don't include socket headers
...
The client code uses portable GLib I/O functions and doesn't need the
OS specific socket headers.
2009-07-23 17:32:12 +02:00
Max Kellermann
caf48ee973
player_thread: don't use precalculated size_to_time
...
Calculate the total play time with the audio_format object each time,
using audio_format_time_to_size(). The function
audioFormatSizeToTime() is not needed anymore, and will be removed
with this patch.
2009-07-23 12:27:05 +02:00
Max Kellermann
0749dbfadf
player_thread: moved code to update_song_tag()
2009-07-23 12:26:26 +02:00
Max Kellermann
54889c72e3
pcm_convert: use GError for error handling
...
Don't abort the whole MPD process when the conversion fails. This has
been a denial-of-service attack vector for years.
2009-07-23 12:01:03 +02:00
Max Kellermann
cba126ceb8
pcm_resample_fallback: don't include glib.h
...
This library does not use GLib directly.
2009-07-22 19:54:57 +02:00
Max Kellermann
c95663312a
pcm_resample_fallback: removed G_GNUC_UNUSED attribute
2009-07-22 19:52:25 +02:00
Max Kellermann
00ee3de7b2
pcm_channels: num_channels is unsigned
...
You cannot have a negative number of channels, let's pass it as
uint8_t instead of int8_t.
2009-07-22 19:12:04 +02:00
Max Kellermann
172a1dbdb9
pcm_byteswap: converted NULL checks to assertions
...
It is illegal to pass a NULL buffer to pcm_byteswap_X(). The result
of this is that pcm_byteswap_X() never returns NULL.
2009-07-22 19:04:38 +02:00
Max Kellermann
c5a662f405
pcm_convert: added pcm_convert_state.byteswap_buffer
...
Currently, byteswapping is performed on the format_buffer. This can
go wrong when this buffer is used twice during one run. Add a
separate buffer for swapping the byte order.
2009-07-22 15:56:56 +02:00
Max Kellermann
9277950441
filter/volume: check the flag audio_format.reverse_endian
...
The volume plugin does not work for reverse_endian samples.
2009-07-22 15:56:50 +02:00
Max Kellermann
44c97a8f6d
audio_format: added API documentation
2009-07-22 15:56:48 +02:00
Max Kellermann
6a071efa27
audio_format: initialize reverse_endian in audio_format_init()
...
This line was missing in the reverse_endian patch, and led to
undefined values and crashes in that attribute.
2009-07-22 15:56:36 +02:00
Michal Nazarewicz
bfed1c04cc
daemon: daemonize_close_stdin() optimised.
...
Changed function to first close standard input (this may
fail but we don't care) and then try to open /dev/null (this
may fail but it shouldn't on Unix platforms plus we don't
know what to do in such case anyways). Since standard input
has the "zeroth" descriptor number next "open" will use it.
Since there is no "/dev/null" on Windows (It's not even
a valid path!) the second step is skipped if WIN32 is
defined.
As a final touch, since the function consists of merely two
function calls it has been moved to header file and declared
static inline.
[mk: un-inline daemonize_close_stdin()]
2009-07-22 13:43:21 +02:00
Eugeny N Dzhurinsky
bdb1965b50
cmdline: renamed options.stderr to options.log_stderr
...
On FreeBSD, "stderr" is a macro, and using this name for a struct
member breaks the build.
[mk: renamed _stderr to log_stderr]
2009-07-22 13:40:19 +02:00
Max Kellermann
c9d43b4d71
Merge branch 'master' of git://git.infradead.org/users/dwmw2/mpd
...
Conflicts:
Makefile.am
2009-07-19 18:18:32 +02:00
David Woodhouse
49ede85827
Support wrong-endian ALSA output
2009-07-19 17:15:35 +01:00
David Woodhouse
05693e2d5d
Add reverse_endian field to struct audio_format and handle conversion
2009-07-19 17:15:21 +01:00
Max Kellermann
c5ec035fb4
tag_ape: simplified the apeItems array
...
Make "enum tag_type" the array index, and convert apeItems to a sparse
array.
2009-07-19 18:04:42 +02:00
Max Kellermann
5e2f98fdad
tag_ape: moved code to tag_ape_import_item()
...
Improve code readability.
2009-07-19 17:59:36 +02:00
Max Kellermann
7b92750622
tag_ape: converted apeItems and tagItems to global vars
...
Don't initialize those arrays each time tag_ape_load() is called.
2009-07-19 17:59:35 +02:00
David Woodhouse
37754559b8
Add audio_format_init() function
...
It makes no difference right now, but we're about to add an endianness
flag and will want to make sure it's correctly initialised every time.
2009-07-19 16:54:11 +01:00
Max Kellermann
09008cb0ec
client: return "enum command_return" instead of "int"
...
Several functions work with the wrong return type, this patch fixes
them.
2009-07-19 15:53:48 +02:00
Max Kellermann
b58aa1f5ee
removed buffer2array.c
2009-07-19 15:15:41 +02:00
Max Kellermann
38e9205d4e
command: use the tokenizer library
2009-07-19 15:15:36 +02:00
Max Kellermann
16ff44ad30
conf: use the tokenizer library
2009-07-19 15:11:37 +02:00
Max Kellermann
1745e68795
tokenizer: new library replacing buffer2array()
...
The new code is more robust and more flexible. It provides detailed
error information in GError objects.
2009-07-19 15:11:36 +02:00
Michal Nazarewicz
809c96b53f
daemon: Moved empty Windows version functions to header file
...
On Windows only daemonize_close_stdin() function does
something. Other functions are either empty or generate an
error. Those have been moved to header file and declared
static inline so compiler can remove the call all together.
2009-07-19 08:18:23 +02:00
Michal Nazarewicz
03e43356ce
conf: replaced gcc "const" attribute with "pure"
...
The functions were not "const" (they examined values pointed
by arguments passed to them, quoting gcc's doc: "Note that
a function that has pointer arguments and examines the data
pointed to must _not_ be declared 'const'.") but rather
"pure" and still not all of them.
Note also, that even some of the functions declared "pure"
are not pure, however, due to reasons stated in source code
the attribute has been kept.
2009-07-19 08:18:08 +02:00
Michal Nazarewicz
d718a8b59d
daemon: added "group" configuration option
...
The "group" configuration option is similar to "user" as it
sets user set what group MPD shall run as. With "user"
option, MPD changed GID to the GID of the user, however,
more control could be desired.
Moreover, the patch changes the way of checking whether no
setuid(2)/setgid(2) is required -- previously user names
were compered, now UID and GIDs are compered (ie. the one we
already have (getuid(2)/getgid(2)) with the one we want to
change to).
2009-07-19 08:17:55 +02:00
Max Kellermann
4100035b19
Merged release 0.15.1 from branch 'v0.15.x'
2009-07-16 07:37:13 +02:00
Max Kellermann
9bef46c0da
mapper: use g_file_test() instead of stat()
...
The GLib functions are more portable.
2009-07-15 18:58:24 +02:00
Max Kellermann
c134adbcbf
mapper: pass music and playlist directory to mapper_init()
...
Added another glue function in main().
2009-07-15 18:58:19 +02:00
Max Kellermann
7bc8c7518b
main: moved complex initialization code to glue functions
...
The glue_*() functions act as a glue between MPD's main() function and
its libraries. They handle disabled features, and pass validated
configuration options.
2009-07-15 18:58:12 +02:00
Max Kellermann
739984f920
main: renamed openDB() to glue_db_init_and_load()
...
No CamelCase.
2009-07-15 18:58:10 +02:00
Max Kellermann
7261739526
cmdline: renamed option "--stdout" to "--stderr"
...
Since version 0.14, MPD has been logging to standard error instead of
standard output. The option name should reflect that. The old option
continues to work, we will remove it in a future MPD release.
2009-07-15 18:27:32 +02:00
Max Kellermann
62f9df98b4
cmdline: no CamelCase
...
Renamed type, variables and functions.
2009-07-15 18:22:49 +02:00
Max Kellermann
c76f71e8d6
conf: added the gcc "const" attribute to some functions
...
Add the "const" attribute to functions when their return value only
depends on parameters. This allows gcc to eliminate some function
calls.
2009-07-15 17:12:48 +02:00
Max Kellermann
f7cc5b2efd
state_file: don't rewind the stream while reading the state file
...
Parse the state file line by line, let each subsystem probe a line.
Only the playlist_state code gets the FILE pointer to read the
following lines.
2009-07-15 16:57:37 +02:00
Max Kellermann
df7d7732c6
state_file: simplified state_file_finish()
...
Return early from the destructor function when there is no configured
state file. Don't check the timer, don't call g_free(NULL).
2009-07-15 14:32:29 +02:00
Max Kellermann
889b1c1eae
state_file: fixed debug messages
...
Print "Loading" instead of "Saving" in state_file_read(). Added debug
message to state_file_write().
2009-07-15 14:29:30 +02:00
Serge Ziryukin
297d749fc8
modplug: get track length
2009-07-15 11:22:45 +02:00
Max Kellermann
6233de0546
encoder/twolame: new encoder plugin based on libtwolame
...
This encoder plugin is a replacement for the LAME encoder plugin for
those who prefer a "free" (non-patent encumbered) encoder library.
Most of the plugin source code is copied from the LAME encoder plugin,
since the LAME and TwoLAME APIs are nearly the same.
2009-07-14 23:07:41 +02:00
Max Kellermann
b1afa40fc1
configure.ac: use more MPD_AUTO_PKG()
...
Fail when a feature is enabled, but the library is not found.
2009-07-14 21:38:49 +02:00
Max Kellermann
a620e936cc
Makefile.am: use WAVPACK_CFLAGS and WAVPACK_LIBS
...
Don't append these to MPD_CFLAGS and MPD_LIBS.
2009-07-14 21:29:01 +02:00
Max Kellermann
d897170455
playlist: no CamelCase
2009-07-14 21:28:36 +02:00
Max Kellermann
5a886da93b
playlist: removed {save,read}PlaylistState()
...
Those were only wrappers for playlist_state_{save,restore}(). Since
sf_callbacks has been removed, we can call the latter functions
directly.
2009-07-14 21:28:26 +02:00
Max Kellermann
9206f54979
state_file: eliminated the sf_callbacks array
...
There are very few callbacks, and they are not meant to be pluggable.
Let's eliminate the array and call the load/save functions manually.
2009-07-14 21:15:12 +02:00
Serge Ziryukin
75c0a33ec5
flac: load external cue sheet when no internal one
...
External cue sheet file for "file.flac" should be named as "file.flac.cue".
2009-07-09 19:01:24 +02:00
Bart Nagel
8ae9b45da0
Implement ArtistSort tag
2009-07-09 19:00:41 +02:00
Max Kellermann
1eebbc746f
decoder/sndfile: new decoder plugin based on libsndfile
2009-07-07 08:58:51 +02:00
Max Kellermann
adb2f66ced
tag_id3: revised "performer" tag support
...
According to the ID3 2.4 documentation, "TOPE" is "Original
artist/performer", not "performer". Removed "TOPE" support. Instead,
map TPE3 ("Conductor/performer refinement") and TPE4 ("Interpreted,
remixed, or otherwise modified by") to "performer".
2009-07-07 08:00:21 +02:00
Max Kellermann
7246d67263
tag: added tag "AlbumArtistSort"
...
The tag_id3.c library supports both the documented "TSO2" tag, and the
inofficial TXXX/ALBUMARTISTSORT.
The Vorbis/FLAC decoder automatically supports the new tag, without
further change.
2009-07-07 07:36:25 +02:00
Max Kellermann
971fbe5d8e
Makefile.am: disable test/run_encoder without plugins
...
If the encoder plugin API is disabled at compile time, don't compile
test/run_encoder.c.
2009-07-06 22:50:07 +02:00
Max Kellermann
45df3e5e54
main: fix "unused local variable" warning
...
The variables "success" and "error" are only used if SQLite support is
enabled.
2009-07-06 22:48:34 +02:00
Sébastien Houzé
468b7d3aea
player_thread: log played song in "default" log mode
...
Very few lines to log a song URI when it has been entirely played.
Then mpd logs can be parsed to do statistics.
2009-07-06 22:29:58 +02:00
Max Kellermann
0275690b5c
output: use the software mixer plugin
...
Do all the software volume stuff inside each output thread, not in the
player thread. This allows one software mixer per output device, and
also allows the user to configure the mixer type (hardware or
software) for each audio output.
This moves the global "mixer_type" setting into the "audio_output"
section, deprecating the "mixer_enabled" flag.
2009-07-06 22:00:50 +02:00
Max Kellermann
da8095db54
mixer_all: added mixer_all_set_software_volume()
...
The special-purpose function is used for saving/restore the software
volume control to the state file.
2009-07-06 21:52:29 +02:00
Max Kellermann
5d74b1efef
mixer/software: new mixer which controls filter/volume
...
This mixer plugin may be used instead of the traditional global
software mixer. It integrates with the "volume" filter plugin, and
can control the software volume of an audio output which has no
hardware mixer.
2009-07-06 21:52:15 +02:00
Max Kellermann
d3b5574d7a
volume: moved range check to handle_setvol()
...
Converted the range checks in volume_level_change() to assertions.
Changed all volume types to "unsigned", expect for those which must be
able to indicate error (-1).
2009-07-06 21:52:10 +02:00
Max Kellermann
90472526e0
volume, mixer: removed the "relative" parameter
...
Since the "volume" command has been removed, nobody uses relative
volumes anymore.
2009-07-06 21:51:24 +02:00
Max Kellermann
206392ad1a
command: removed the "volume" command
...
This command has been deprecated more than 5 years ago (0.10.0). Its
implementation is a kludge, let's remove it now.
2009-07-06 21:51:00 +02:00
Max Kellermann
171a9ee291
output_init: moved the "convert" filter at the end
...
The "convert" filter must be the last filter in the chain. Ensure
that by doing its initialization at the very end of
audio_output_init().
2009-07-06 21:50:25 +02:00
Max Kellermann
13e725ab09
output_init: merge two local string variables
2009-07-06 21:50:13 +02:00
Max Kellermann
f5c2acf1d4
output_init: parse audio format earlier
2009-07-06 21:40:43 +02:00
Max Kellermann
17e3054399
song_print: check gmtime_r()'s return value
...
When song->mtime was not initialized properly, it was revealed that
strftime() might crash when gmtime_r() returns NULL due to an invalid
time_t input value.
2009-07-06 11:48:21 +02:00
Max Kellermann
09aadffe9b
song: initialize mtime in song_alloc()
2009-07-06 11:32:31 +02:00
Max Kellermann
e47bdfe8e6
output: attach a filter chain to each audio_output
...
This patch adds initial filter support for audio outputs. Each audio
output gets a "filter" attribute, which is used by ao_play_chunk().
The PCM conversion is now performed by convert_filter_plugin.
audio_output.convert_state has been removed.
2009-07-06 10:01:47 +02:00
Max Kellermann
cd9c0a6b3e
filter/convert: new filter which calls pcm_convert() on demand
2009-07-06 10:01:02 +02:00
Max Kellermann
c372c3756b
filter/chain: new library for creating a chain of filters
2009-07-06 10:01:02 +02:00
Max Kellermann
78fa3f06f9
output: added command REOPEN
...
REOPEN is called when the input audio format changes. The output
thread may be reconfigure the PCM converter.
2009-07-06 10:01:02 +02:00
Max Kellermann
1350cd0e42
output_thread: moved OPEN handler to ao_open()
2009-07-06 08:04:18 +02:00
Max Kellermann
89d4f438c0
mixer_type: moved volume_mixer_type from volume.c
2009-07-06 07:37:37 +02:00
Max Kellermann
8bd7b5b607
conf: use bp->value, not param->value
...
A recent change to the boolean parser introduced a bug: instead of
using the block_param's value with get_bool(), we passed param->value
(which is always NULL in this case).
2009-07-06 07:37:32 +02:00
Max Kellermann
d78be1ab49
output_init: moved mixer instantiation to separate function
2009-07-05 18:44:37 +02:00
Max Kellermann
86e279f886
filter/volume: don't use volume_level_get()
...
Added public methods to get and set the current volume.
2009-07-05 16:31:47 +02:00
Max Kellermann
d4914fc9ef
idle: added "update" event
...
Some clients have visual feedback for "database update is running".
Using the "database" idle event is unreliable, because it is only
emitted when the database was actually modified. This patch adds the
"update" event, which is emitted when the update is started, and again
when the update is finished, disregarding whether it has been
modified.
2009-07-05 08:46:53 +02:00
Max Kellermann
46c19b8249
song_print: send song modification time to client
...
Added the response line "Last-Modified", which sends the modification
time in ISO 8601. The same was already implemented for playlists.
2009-07-05 08:40:29 +02:00
Max Kellermann
077b24d62d
configure.ac: increased protocol version to 0.16.0
...
We're going to extend the protocol now. Update the protocol version.
2009-07-05 08:40:26 +02:00
Max Kellermann
111c4dac63
song_save: use GError for error handling
2009-07-05 08:29:52 +02:00
Max Kellermann
69ff9d757f
song_save: no CamelCase
...
Renamed functions.
2009-07-05 08:29:50 +02:00
Max Kellermann
0c2ab17e91
sticker: use GError for error handling
2009-07-05 08:29:47 +02:00
Max Kellermann
12e82b9e33
test: added program "run_filter"
...
This program runs filter plugins in an isolated environment.
2009-07-05 06:54:48 +02:00
Max Kellermann
644fc48776
conf: registered option "filter"
...
Add this option to the user's manual.
2009-07-05 06:54:45 +02:00
Max Kellermann
666b1fae79
volume: removed unused macros
...
Removed VOLUME_MIXER_OSS and VOLUME_MIXER_ALSA.
2009-07-03 18:51:01 +02:00
Max Kellermann
e3c436f411
filter: added "volume" plugin
...
The "volume" filter plugin will replace the current software volume
code. One "volume" filter may be attached to each output device.
This will allow the user to use hardware mixers for some devices, and
software mixers for other devices at the same time.
Currently, neither the filter API nor the "volume" plugin is
integrated into MPD.
2009-07-03 01:06:17 +02:00
Max Kellermann
48f3e13bec
filter: added new plugin API for filters
...
The filter API allows us to implement software volume as a pluggable
filter, and we will be able to integrate libraries like SoX.
2009-07-03 01:02:53 +02:00
Max Kellermann
a923080d9b
conf: added config_quark()
...
This GQuark will be used for GErrors related to malformed
configuration.
2009-07-03 01:01:50 +02:00
Max Kellermann
706614b0d7
playlist_state: don't save "current" song when none is set
...
This patch fixes an assertion failure:
Assertion `order < queue->length' failed.
This happens when the state file is saved, when there is no "current"
song: current==-1, and queue_order_to_position(-1) is called.
2009-06-29 22:27:57 +02:00
Christopher Zimmerman
a641f562f3
playlist_state: save state when stopped
...
At the moment mpd doesn't store or restore the current track to/from
its state file when the daemon is stopped/started while in 'stopped'
state. I believe the preferred behaviour would be to store and
restore the current track even when the daemon is in stopped state
when shutting down.
I made a small patch to adapt this behaviour. If you believe this is
not the preferred behaviour, maybe this should be realized as a
configuration option. I'm not sure how to do this, but made a small
comment, where one would have to put the option.
2009-06-26 09:26:12 +02:00
Max Kellermann
fe96bdf7e6
autogen.sh: don't check for autoconf <2.60
...
configure.ac refuses to run with autoconf older than 2.60, don't
bother to test for those versions in autogen.sh.
2009-06-25 11:53:34 +02:00
Max Kellermann
5b78b46a30
Makefile.am: require automake 1.10
...
Refuse to build with automake 1.9. 1.9 is quite old already, and I'm
too lazy to test with ancient versions.
2009-06-25 11:52:55 +02:00
Max Kellermann
eacd604518
ffmpeg: support multiple tags
...
Call av_metadata_get() in a loop.
2009-06-25 08:43:59 +02:00
Max Kellermann
637c6a1850
conf: log unused/unknown block parameters
2009-06-25 08:42:25 +02:00
Max Kellermann
0cbc4012e8
conf: added "used" flag to struct block_param
2009-06-25 08:41:23 +02:00
Max Kellermann
8074b82653
conf: detect duplicate parameters in config_add_block_param()
...
Moved the check from config_get_block_param(). Detect the duplicate
parameter when it's added, not when it's queried.
2009-06-25 08:41:09 +02:00
Max Kellermann
5d583c9b2d
conf: make get_bool() return a bool
...
Instead of returning an artificial three-state integer, return a
"success" value and put the boolean value into a "bool" pointer.
That's a little bit more overhead, but an API which looks more
natural.
2009-06-25 08:40:02 +02:00
Max Kellermann
093e900d44
conf: moved code from get_bool() to string_array_contains()
2009-06-25 08:39:53 +02:00
Max Kellermann
8965b66ce4
conf: register configuration options statically
...
Initialize the config_entries array at compile time. This is not only
faster, but also smaller.
2009-06-25 08:39:44 +02:00
Max Kellermann
146add67c2
conf: removed config_add_param()
...
This function is unused.
2009-06-25 08:39:01 +02:00
Max Kellermann
34e9a0a960
conf: replace "mask" bit field with two "bool" variables
...
Due to padding, this takes the same amount of memory.
2009-06-25 08:38:51 +02:00
Max Kellermann
b1e95b1fa8
volume: removed support for legacy mixer configuration
...
The top-level "mixer_device" and "mixer_control" options have been
deprecated by MPD 0.15, and it's safe to remove them in MPD 0.16.
2009-06-25 08:37:51 +02:00
Max Kellermann
ce072b89d2
command: added new "status" line with more precise "elapsed time"
2009-06-25 08:37:34 +02:00
Daniel Seuthe
4ffd9bce5a
Preamp for missing replay-gain
2009-06-25 08:36:35 +02:00
Avuton Olrich
f16d05c633
Modify version string to post-release version 0.16~git
2009-06-24 17:34:27 -07:00