Max Kellermann
94592c1406
build with Meson instead of autotools
...
So long, autotools! This is my last MPD related project to migrate
away from it. It has its strengths, but also very obvious weaknesses
and weirdnesses. Today, many of its quirks are not needed anymore,
and are cumbersome and slow. Now welcome our new Meson overlords!
2018-10-14 23:41:38 +02:00
Max Kellermann
13ce142df1
python/build/meson.py: generate `windres` line
2018-10-14 23:41:38 +02:00
Max Kellermann
89bf4c5fad
python/build/meson.py: move two functions to the top level
2018-10-14 21:44:15 +02:00
skidoo23
f80ebf68b0
decoder/wavpack: fix warning 'unused variable is_dsd' when compiled with --enable-dsd=no
2018-10-12 01:02:34 +02:00
Max Kellermann
1155a29096
Merge branch 'cdda_set_cdspeed' of git://github.com/andrewbasterfield/MPD
2018-10-08 21:16:52 +02:00
Max Kellermann
030e603940
decoder/gme: fix include
...
Broken since commit 08f77c2b60
2018-10-07 22:33:52 +02:00
Andrew Basterfield
9c1bf9ac5f
Remove some extraneous leftover debugging
2018-10-07 19:21:38 +01:00
Andrew Basterfield
5f8dac6822
Add some docs for CDParanoia extraction speed
2018-10-07 19:17:51 +01:00
Andrew Basterfield
2f07b8f482
Set cdrive speed hint for cdparanoia
2018-10-06 20:18:19 +01:00
Max Kellermann
6c40a27809
db/update/ExcludeList: fix variable name in #else block
2018-10-01 08:40:53 +02:00
Max Kellermann
8736a3533b
db/update/ExcludeList: add missing #ifdef
2018-10-01 08:40:15 +02:00
Max Kellermann
608d232373
util/SliceBuffer: re-add line which got lost in the last commit
2018-09-23 19:33:34 +02:00
Max Kellermann
1702e98fdf
util/SliceBuffer: move code to DiscardMemory()
2018-09-23 19:15:28 +02:00
Max Kellermann
2ec94c0497
player/Control: start thread on demand
...
Keep MPD's footprint small until playback is requested.
2018-09-23 17:32:34 +02:00
Max Kellermann
bf372e3e1f
player/Control: move public methods up
2018-09-23 17:28:41 +02:00
Max Kellermann
0d971963fd
player/Control: make several methods `private`
2018-09-23 17:27:42 +02:00
Max Kellermann
287cff40b9
player/Control: remove Lock(), Unlock()
2018-09-23 17:27:42 +02:00
Max Kellermann
0e0bc7976f
player/Control: add LockGetSyncInfo()
2018-09-23 17:17:57 +02:00
Max Kellermann
8c638c50a3
player/Thread: remove obsolete `buffered_before_play` attribute
2018-09-23 16:50:04 +02:00
Max Kellermann
5b2374b949
player/Thread: calculate `buffered_before_play` based on a fixed duration
...
Previously, there was the setting `buffered_before_play` which
specified a percentage of the audio buffer, defaulting to `10%`. That
was working well enough for quite some time, until high-quality audio
formats became common.
At 44.1 kHz, 16 bit stereo, MPD collected 2.3 seconds worth of data in
the buffer before starting playback. With the same default settings
and 192 kHz, 24 bit stereo, that was only 0.27 seconds.
Making this depend on the byte size only leads to high latency at low
quality, and too little data at high quality. The natural choice
would be to use a duration instead of a byte size, which should give
the same good experience with all audio formats.
Since the `buffered_before_play` configuration setting was not
understood well by users and caused more harm than good, this commit
deprecates it. It has now no effect.
2018-09-23 15:46:29 +02:00
Max Kellermann
c1600bcf3d
player/Thread: copy `buffered_before_play`
2018-09-23 15:46:27 +02:00
Max Kellermann
a82d864c91
config/File: print warning about deprecated options
2018-09-23 15:43:38 +02:00
Max Kellermann
dcac32a6c4
AudioFormat: add implicit cast to `duration::rep`
...
Fixes integer truncation bugs (closes #359 ).
2018-09-23 15:15:53 +02:00
Max Kellermann
5286477f73
Chrono: remove unnecessary `typedef rep`
...
It is already inherited by the base class, and we don't need to import
it explicitly.
2018-09-23 15:15:18 +02:00
Max Kellermann
2f3845ef51
player/Thread: remove `buffered_before_play` from `decoder_wakeup_threshold` formula
...
Simplify the formula, and I guess this makes the formula more
reliable. Imagine somebody configured `buffered_before_play` larger
than 25%; then the decoder would be woken up all the time. This
doesn't seem logical. On the other hand, it's easy to understand that
the decoder should be woken up below 75% buffer fill.
2018-09-23 15:00:47 +02:00
Max Kellermann
1191025bbf
player/Thread: add attribute `decoder_wakeup_threshold`
...
Calculate the value only once.
2018-09-22 19:56:00 +02:00
Max Kellermann
bfd261929e
AudioFormat: remove obsolete method GetTimeToSize()
2018-09-22 19:39:20 +02:00
Max Kellermann
84de88841b
player/CrossFade: use AudioFormat::SizeToTime() instead of GetTimeToSize()
2018-09-22 19:37:45 +02:00
Max Kellermann
224400074c
player/CrossFade: use std::chrono::duration
2018-09-22 19:37:02 +02:00
Max Kellermann
863722545f
player/CrossFade, ...: use lround()
2018-09-22 19:08:03 +02:00
Max Kellermann
d3d1d37782
AudioFormat: add TimeToSize(), SizeToTime()
2018-09-21 20:51:08 +02:00
Max Kellermann
1a2012a97e
player/Control: convert `total_play_time` to `FloatDuration`
2018-09-21 20:50:15 +02:00
Max Kellermann
90f4e97751
decoder/Client: use std::chrono::duration<double> instead of raw `double`
2018-09-21 20:42:34 +02:00
Max Kellermann
d1bcd98f79
Chrono: add FloatDuration
2018-09-21 20:42:30 +02:00
Max Kellermann
39542de69d
Chrono: add static method Cast()
2018-09-21 20:41:23 +02:00
Max Kellermann
1d00d55d53
player/Thread: stop buffering if buffer is full
...
Shouldn't ever happen, but who knows...
2018-09-21 19:05:25 +02:00
Max Kellermann
a190db0873
player/Thread: simplify loop condition
2018-09-21 18:58:38 +02:00
Max Kellermann
e3142312bb
player/Control: convert to class
2018-09-21 18:12:28 +02:00
Max Kellermann
e5d1ac0bd0
player/Thread: move functions into PlayerControl
2018-09-21 18:09:14 +02:00
Max Kellermann
c0411fa412
decoder/Thread: add `noexcept`
2018-09-21 17:58:34 +02:00
Max Kellermann
781e690012
player/Thread: catch and log initialization errors
2018-09-21 17:35:32 +02:00
Max Kellermann
9a2d71341e
player/Control: apply CamelCase to struct player_status
2018-09-21 17:22:35 +02:00
Max Kellermann
6db6d3c50c
player/Thread: move StartPlayerThread() into PlayerControl
2018-09-21 17:14:19 +02:00
Max Kellermann
0e2c597884
MusicBuffer: remove `noexcept` from constructor
...
The `SliceBuffer` constructor can throw.
2018-09-21 17:11:52 +02:00
Max Kellermann
debdf9bb96
decoder/{Thread,Control,...}: rename source files, drop prefix
2018-09-21 17:01:24 +02:00
Max Kellermann
218d9383d7
decoder/Thread: move decoder_thread_start() into DecoderControl
2018-09-21 16:57:54 +02:00
Max Kellermann
af64bd5088
Thread/Thread: disallow copying
2018-09-21 16:55:09 +02:00
Max Kellermann
050f81c4fe
Thread/Thread: document Start() exception
2018-09-21 16:53:52 +02:00
Max Kellermann
c9ee6dd4ca
doc/user.rst: document the `sles` output plugin
2018-09-11 20:44:54 +02:00
skidoo23
38b183fac2
user.rst: fixed typo state_file_interval
2018-09-11 16:35:57 +02:00