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
Max Kellermann
5cc3338267
Merge branch 'v0.17.x'
...
Conflicts:
src/mapper.h
2012-08-14 02:39:03 +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
a582deee2c
input_stream, main: remove obsolete GLib version checks
...
MPD requires GLib 2.16.
2012-08-14 01:57:53 +02:00
Max Kellermann
3047bdf653
Merge branch 'v0.17.x'
...
Conflicts:
NEWS
configure.ac
src/client_file.h
2012-08-13 07:59:19 +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
Max Kellermann
a0478f98af
Directory: move code to directory_allocate()
2012-08-09 21:04:07 +02:00
Max Kellermann
d488d796f4
player_control: add GError attribute
...
Rewrite of the pc_get_error_message() function, now using a GError
object instead of the complicated "errored_song" attribute.
2012-08-08 22:54:49 +02:00
Max Kellermann
f794b1e1aa
output_all: add basic GError support
2012-08-08 22:48:59 +02:00
Max Kellermann
8c425c758c
decoder_control: add GError attribute
2012-08-08 22:38:16 +02:00
Max Kellermann
0b9e912297
player_control: rename attribute "error" to "error_type"
2012-08-08 22:29:09 +02:00
Max Kellermann
d35d2b269f
player_control: rename player_error enum values
2012-08-08 22:28:59 +02:00
Max Kellermann
fa84ed412d
player_control: remove unused enum player_error values
2012-08-08 22:28:49 +02:00
Max Kellermann
16951099d1
player_control: inline trivial functions
2012-08-08 22:27:00 +02:00
Max Kellermann
050ba302cb
song: use C++ compiler
2012-08-08 21:08:37 +02:00
Max Kellermann
c1f90a99f4
tag_pool: use GStaticMutex
...
Eliminates explicit global initialisation.
2012-08-08 21:01:25 +02:00
Max Kellermann
510097cc37
song: include cleanup
2012-08-08 20:14:24 +02:00
Max Kellermann
6a83721c55
directory: use gcc.h macros, not GLib
2012-08-08 20:07:47 +02:00
Max Kellermann
ca9795c30a
conf: add a "database" block
...
The new block overrides the "db_file" setting, and allows configuring
any database plugin.
2012-08-08 09:28:13 +02:00
Max Kellermann
dc2fa246a9
DatabaseGlue: look up the database plugin
...
No more hard-coded "simple" plugin.
2012-08-08 09:28:13 +02:00
Max Kellermann
b46bb611b3
DatabaseGlue: pass block to db_init()
...
Let the caller take care for legacy conversion.
2012-08-08 09:28:13 +02:00
Max Kellermann
aa55d759f5
DatabaseGlue: add function db_is_simple()
...
Preparing for non-"simple" database plugins.
2012-08-08 09:28:13 +02:00
Max Kellermann
2043579f71
main: don't call db_init() without database
...
Useless call.
2012-08-08 09:28:13 +02:00
Max Kellermann
346e31efa0
ProxyDatabasePlugin: obey the "recursive" flag
2012-08-08 09:28:13 +02:00
Max Kellermann
b504d63117
ProxyDatabasePlugin: use an artificial "root" directory
...
Fixes assertion failures in the Directory library.
2012-08-08 09:27:42 +02:00
Max Kellermann
b4b1728b6f
DatabasePrint: don't print Last-Modified if unknown
2012-08-08 09:27:42 +02:00
Max Kellermann
21792386d8
time_print: new library, function time_print()
...
Implements error checking for the gmtime_r() call, which was missing
in two code locations.
2012-08-08 09:27:12 +02:00
Max Kellermann
63a2ac21e1
ProxyDatabasePlugin: new database plugin using libmpdclient
...
Implementation incomplete, but sort-of-works. DumpDatabase works, but
MPD is still hard-coded on the "simple" plugin.
2012-08-08 01:20:45 +02:00
Max Kellermann
c42b206292
DatabaseCommands: allow empty criteria for "list"
...
Fixes regression.
2012-08-08 01:16:47 +02:00
Max Kellermann
733d6a6b16
DatabaseSelection: add "match" attribute
...
Let the database plugin do the match.
2012-08-08 00:55:02 +02:00
Max Kellermann
8d2725234e
DatabaseCommands: merge duplicate search/find code
2012-08-08 00:49:07 +02:00
Max Kellermann
0823711106
locate: add a per-item "fold_case" flag
...
Merge locate_song_search() and locate_song_match().
2012-08-08 00:47:45 +02:00
Max Kellermann
860e9eb8c9
locate: make "tag" unsigned
2012-08-08 00:45:46 +02:00
Max Kellermann
3d2092ee23
locate: make the structs opaque
2012-08-07 23:52:11 +02:00
Max Kellermann
8855efebc0
locate: don't allow empty list
2012-08-07 23:45:00 +02:00
Max Kellermann
7725577a53
locate: pass unsigned integer to _parse()
2012-08-07 23:44:43 +02:00
Max Kellermann
668e3f664f
locate: add "pure" attributes
2012-08-07 23:43:36 +02:00
Max Kellermann
9e51733c71
DatabaseCommands: remove stray locate_item_list_parse() call
2012-08-07 23:41:35 +02:00
Max Kellermann
6b39a5621d
locate: add "casefold" flag to parser
...
Fold the case during construction, without having to create another
copy.
2012-08-07 23:27:23 +02:00
Max Kellermann
0d46e11826
locate: remove unused function locate_item_free()
2012-08-07 23:27:08 +02:00
Max Kellermann
ff58207034
db_selection: rename to DatabaseSelection
2012-08-07 23:12:26 +02:00
Max Kellermann
b3d76b7e5c
db_print.h: rename to DatabasePrint.hxx
2012-08-07 23:10:34 +02:00
Max Kellermann
4d6c816abb
dbUtils.h: move to DatabaseQueue.hxx, DatabasePlaylist.hxx
2012-08-07 22:57:18 +02:00
Max Kellermann
f35ceaee0a
command: move code to DatabaseCommands.cxx
...
Prepare to use the DatabasePlugin C++ API directly.
2012-08-07 22:36:18 +02:00
Max Kellermann
a64a2a65a9
command: move print_error() to CommandError.cxx
...
Prepare for splitting command.c.
2012-08-07 22:26:14 +02:00
Max Kellermann
1a75abffa5
Database{Plugin,Visitor}: pass references
2012-08-07 21:32:08 +02:00
Max Kellermann
bb75e3ea55
DatabaseRegistry: list of plugins
2012-08-07 20:07:17 +02:00
Max Kellermann
6f3c65dc64
DatabaseGlue: remove db_walk(), db_visit()
...
Unused.
2012-08-02 19:15:01 +02:00
Max Kellermann
0a3ada4fea
stats: convert to C++
2012-08-02 19:14:53 +02:00
Max Kellermann
8bdf7917c4
db_print: convert to C++
2012-08-02 19:14:40 +02:00
Max Kellermann
67d16a086e
dbUtils: split to Database{Queue,Playlist}.cxx
2012-08-02 19:14:09 +02:00
Max Kellermann
b8018f12ba
DatabaseGlue: add function GetDatabase()
...
Allow using the object outside of DatabaseGlue.cxx.
2012-08-02 19:13:58 +02:00
Max Kellermann
607780b7f9
DatabasePlugin: add simpler Visit() wrapepr
2012-08-02 19:12:42 +02:00
Max Kellermann
af1c497759
DatabasePlugin: make Visit() const
2012-08-02 19:12:27 +02:00
Max Kellermann
8e331cfc65
gcc.h: re-add gcc_const and gcc_pure
...
Remove GLib dependency from some headers.
2012-08-02 19:12:18 +02:00
Max Kellermann
edf811fa02
DatabaseVisitor, ...: use GError forward declaration
2012-08-02 19:12:06 +02:00
Max Kellermann
9dc9459f3a
db_plugin: convert to C++
2012-08-01 09:59:12 +02:00
Max Kellermann
37b92967c5
gcc.h: require g++ 4.5 or newer
...
Soon we'll use C++11 lambdas which were implemented in gcc 4.5.
2012-08-01 09:59:12 +02:00
Max Kellermann
0d2abdb5d9
gcc.h: add fallback for C++11 "override"
2012-08-01 09:59:12 +02:00
Max Kellermann
79200a8611
decoder/sidplay: fix C++ compiler warnings
2012-08-01 09:59:12 +02:00
Max Kellermann
123ae985d5
util/list: make safe for C++
2012-08-01 09:59: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
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
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
Jonathan Neuschäfer
c1f196dbec
command: require appropriate permissions for searchadd{,pl}
2012-07-10 00:23:19 +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
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
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
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
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
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