Merge branch 'v0.22.x' into master
This commit is contained in:
commit
eb9f5339b6
4
NEWS
4
NEWS
|
@ -2,6 +2,10 @@ ver 0.23 (not yet released)
|
||||||
* protocol
|
* protocol
|
||||||
- new command "getvol"
|
- new command "getvol"
|
||||||
|
|
||||||
|
ver 0.22.4 (not yet released)
|
||||||
|
* decoder
|
||||||
|
- dsdiff: apply padding to odd-sized chunks
|
||||||
|
|
||||||
ver 0.22.3 (2020/11/06)
|
ver 0.22.3 (2020/11/06)
|
||||||
* playlist
|
* playlist
|
||||||
- add option "as_directory", making CUE file expansion optional
|
- add option "as_directory", making CUE file expansion optional
|
||||||
|
|
|
@ -38,7 +38,7 @@ author = 'Max Kellermann'
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '0.22.3'
|
version = '0.22.4'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = version
|
release = version
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ DESCRIPTION
|
||||||
MPD is a daemon for playing music. Music is played through the configured audio output(s) (which are generally local, but can be remote). The daemon stores info about all available music, and this info can be easily searched and retrieved. Player control, info retrieval, and playlist management can all be managed remotely.
|
MPD is a daemon for playing music. Music is played through the configured audio output(s) (which are generally local, but can be remote). The daemon stores info about all available music, and this info can be easily searched and retrieved. Player control, info retrieval, and playlist management can all be managed remotely.
|
||||||
|
|
||||||
MPD searches for a config file in ``$XDG_CONFIG_HOME/mpd/mpd.conf``
|
MPD searches for a config file in ``$XDG_CONFIG_HOME/mpd/mpd.conf``
|
||||||
then ``~/.mpdconf`` then ``/etc/mpd.conf`` or uses ``CONF_FILE``.
|
then ``~/.mpdconf`` then ``~/.mpd/mpd.conf`` then ``/etc/mpd.conf`` or uses ``CONF_FILE``.
|
||||||
|
|
||||||
Read more about MPD at http://www.musicpd.org/
|
Read more about MPD at http://www.musicpd.org/
|
||||||
|
|
||||||
|
@ -53,8 +53,8 @@ OPTIONS
|
||||||
FILES
|
FILES
|
||||||
-----
|
-----
|
||||||
|
|
||||||
:file:`~/.mpdconf`
|
:file:`$XDG_CONFIG_HOME/mpd/mpd.conf`
|
||||||
User configuration file.
|
User configuration file (usually :file:`~/.config/mpd/mpd.conf`).
|
||||||
|
|
||||||
:file:`/etc/mpd.conf`
|
:file:`/etc/mpd.conf`
|
||||||
Global configuration file.
|
Global configuration file.
|
||||||
|
|
|
@ -11,24 +11,34 @@ not specified on the command line, MPD first searches for it at
|
||||||
:file:`$XDG_CONFIG_HOME/mpd/mpd.conf` then at :file:`~/.mpdconf` then
|
:file:`$XDG_CONFIG_HOME/mpd/mpd.conf` then at :file:`~/.mpdconf` then
|
||||||
at :file:`~/.mpd/mpd.conf` and then in :file:`/etc/mpd.conf`.
|
at :file:`~/.mpd/mpd.conf` and then in :file:`/etc/mpd.conf`.
|
||||||
|
|
||||||
Lines beginning with a :samp:`#` character are comments. All other
|
Each line in the configuration file contains a setting name and its value, e.g.:
|
||||||
non-empty lines specify parameters and their values. These lines
|
|
||||||
contain the parameter name and parameter value (surrounded by double
|
|
||||||
quotes) separated by whitespace (either tabs or spaces). For
|
|
||||||
example::
|
|
||||||
|
|
||||||
parameter "value"
|
:code:`connection_timeout "5"`
|
||||||
|
|
||||||
The exception to this rule is the audio_output parameter, which is of
|
For settings which specify a filesystem path, the tilde is expanded:
|
||||||
the form::
|
|
||||||
|
:code:`music_directory "~/Music"`
|
||||||
|
|
||||||
|
Some of the settings are grouped in blocks with curly braces, e.g. per-plugin settings:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
audio_output {
|
audio_output {
|
||||||
parameter1 "value"
|
type "alsa"
|
||||||
parameter2 "value"
|
name "My ALSA output"
|
||||||
|
device "iec958:CARD=Intel,DEV=0"
|
||||||
|
mixer_control "PCM"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
The :code:`include` directive can be used to include settings from
|
||||||
|
another file; the given file name is relative to the current file:
|
||||||
|
|
||||||
Parameters that take a file or directory as an argument should use absolute paths.
|
:code:`include "other.conf"`
|
||||||
|
|
||||||
|
You can use include_optional instead if you want the included file to be
|
||||||
|
optional; the directive will be ignored if the file does not exist:
|
||||||
|
|
||||||
|
:code:`include_optional "may_not_exist.conf"`
|
||||||
|
|
||||||
See :file:`docs/mpdconf.example` in the source tarball for an example
|
See :file:`docs/mpdconf.example` in the source tarball for an example
|
||||||
configuration file.
|
configuration file.
|
||||||
|
@ -38,7 +48,7 @@ Please read the MPD user manual for a complete configuration guide:
|
||||||
http://www.musicpd.org/doc/user/
|
http://www.musicpd.org/doc/user/
|
||||||
|
|
||||||
|
|
||||||
REQUIRED PARAMETERS
|
OPTIONAL PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
db_file <file>
|
db_file <file>
|
||||||
|
@ -47,9 +57,6 @@ db_file <file>
|
||||||
log_file <file>
|
log_file <file>
|
||||||
This specifies where the log file should be located. The special value "syslog" makes MPD use the local syslog daemon.
|
This specifies where the log file should be located. The special value "syslog" makes MPD use the local syslog daemon.
|
||||||
|
|
||||||
OPTIONAL PARAMETERS
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
sticker_file <file>
|
sticker_file <file>
|
||||||
The location of the sticker database. This is a database which manages
|
The location of the sticker database. This is a database which manages
|
||||||
dynamic information attached to songs.
|
dynamic information attached to songs.
|
||||||
|
@ -83,7 +90,7 @@ user <username>
|
||||||
port <port>
|
port <port>
|
||||||
This specifies the port that mpd listens on. The default is 6600.
|
This specifies the port that mpd listens on. The default is 6600.
|
||||||
|
|
||||||
log_level <default, secure, or verbose>
|
log_level <level>
|
||||||
Suppress all messages below the given threshold. The following
|
Suppress all messages below the given threshold. The following
|
||||||
log levels are available:
|
log levels are available:
|
||||||
|
|
||||||
|
@ -190,8 +197,8 @@ mixer_type <hardware, software or none>
|
||||||
FILES
|
FILES
|
||||||
-----
|
-----
|
||||||
|
|
||||||
:file:`~/.mpdconf`
|
:file:`$XDG_CONFIG_HOME/mpd/mpd.conf`
|
||||||
User configuration file.
|
User configuration file (usually :file:`~/.config/mpd/mpd.conf`).
|
||||||
|
|
||||||
:file:`/etc/mpd.conf`
|
:file:`/etc/mpd.conf`
|
||||||
Global configuration file.
|
Global configuration file.
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
#group "nogroup"
|
#group "nogroup"
|
||||||
#
|
#
|
||||||
# This setting sets the address for the daemon to listen on. Careful attention
|
# This setting sets the address for the daemon to listen on. Careful attention
|
||||||
# should be paid if this is assigned to anything other then the default, any.
|
# should be paid if this is assigned to anything other than the default, any.
|
||||||
# This setting can deny access to control of the daemon. Not effective if
|
# This setting can deny access to control of the daemon. Not effective if
|
||||||
# systemd socket activiation is in use.
|
# systemd socket activiation is in use.
|
||||||
#
|
#
|
||||||
|
@ -90,7 +90,8 @@
|
||||||
#port "6600"
|
#port "6600"
|
||||||
#
|
#
|
||||||
# Suppress all messages below the given threshold. Use "verbose" for
|
# Suppress all messages below the given threshold. Use "verbose" for
|
||||||
# troubleshooting.
|
# troubleshooting. Available setting arguments are "notice", "info", "verbose",
|
||||||
|
# "warning" and "error".
|
||||||
#
|
#
|
||||||
#log_level "notice"
|
#log_level "notice"
|
||||||
#
|
#
|
||||||
|
@ -172,7 +173,18 @@
|
||||||
|
|
||||||
# Database #######################################################################
|
# Database #######################################################################
|
||||||
#
|
#
|
||||||
|
# An example of a database section instead of the old 'db_file' setting.
|
||||||
|
# It enables mounting other storages into the music directory.
|
||||||
|
#
|
||||||
|
#database {
|
||||||
|
# plugin "simple"
|
||||||
|
# path "~/.local/share/mpd/db
|
||||||
|
# cache_directory "~/.local/share/mpd/cache"
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of database config for a sattelite setup
|
||||||
|
#
|
||||||
|
#music_directory "nfs://fileserver.local/srv/mp3"
|
||||||
#database {
|
#database {
|
||||||
# plugin "proxy"
|
# plugin "proxy"
|
||||||
# host "other.mpd.host"
|
# host "other.mpd.host"
|
||||||
|
@ -181,7 +193,6 @@
|
||||||
|
|
||||||
# Input #######################################################################
|
# Input #######################################################################
|
||||||
#
|
#
|
||||||
|
|
||||||
input {
|
input {
|
||||||
plugin "curl"
|
plugin "curl"
|
||||||
# proxy "proxy.isp.com:8080"
|
# proxy "proxy.isp.com:8080"
|
||||||
|
|
|
@ -378,10 +378,14 @@ flac
|
||||||
|
|
||||||
Decodes FLAC files using libFLAC.
|
Decodes FLAC files using libFLAC.
|
||||||
|
|
||||||
|
.. _decoder_dsdiff:
|
||||||
|
|
||||||
dsdiff
|
dsdiff
|
||||||
------
|
------
|
||||||
|
|
||||||
Decodes DFF files containing DSDIFF data (e.g. SACD rips).
|
Decodes DSDIFF (`Direct Stream Digital Interchange File Format
|
||||||
|
<http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf>`_) files
|
||||||
|
(:file:`*.dff`). These contain :ref:`DSD <dsd>` instead of PCM.
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
:widths: 20 80
|
:widths: 20 80
|
||||||
|
@ -392,10 +396,14 @@ Decodes DFF files containing DSDIFF data (e.g. SACD rips).
|
||||||
* - **lsbitfirst yes|no**
|
* - **lsbitfirst yes|no**
|
||||||
- Decode the least significant bit first. Default is no.
|
- Decode the least significant bit first. Default is no.
|
||||||
|
|
||||||
|
.. _decoder_dsf:
|
||||||
|
|
||||||
dsf
|
dsf
|
||||||
---
|
---
|
||||||
|
|
||||||
Decodes DSF files containing DSDIFF data (e.g. SACD rips).
|
Decodes DSF
|
||||||
|
(<https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf>)
|
||||||
|
files (:file:`*.dsf`). These contain :ref:`DSD <dsd>` instead of PCM.
|
||||||
|
|
||||||
fluidsynth
|
fluidsynth
|
||||||
----------
|
----------
|
||||||
|
@ -755,6 +763,10 @@ Valid quality values for libsoxr:
|
||||||
|
|
||||||
If the quality is set to custom also the following settings are available:
|
If the quality is set to custom also the following settings are available:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 20 80
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
* - Name
|
* - Name
|
||||||
- Description
|
- Description
|
||||||
* - **precision**
|
* - **precision**
|
||||||
|
|
12
doc/user.rst
12
doc/user.rst
|
@ -1032,12 +1032,20 @@ Check list for bit-perfect playback:
|
||||||
:code:`format`, :ref:`audio_output_format <audio_output_format>`).
|
:code:`format`, :ref:`audio_output_format <audio_output_format>`).
|
||||||
* Verify that you are really doing bit-perfect playback using :program:`MPD`'s verbose log and :file:`/proc/asound/card*/pcm*p/sub*/hw_params`. Some DACs can also indicate the audio format.
|
* Verify that you are really doing bit-perfect playback using :program:`MPD`'s verbose log and :file:`/proc/asound/card*/pcm*p/sub*/hw_params`. Some DACs can also indicate the audio format.
|
||||||
|
|
||||||
|
.. _dsd:
|
||||||
|
|
||||||
Direct Stream Digital (DSD)
|
Direct Stream Digital (DSD)
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
DSD (`Direct Stream Digital <https://en.wikipedia.org/wiki/Direct_Stream_Digital>`_) is a digital format that stores audio as a sequence of single-bit values at a very high sampling rate.
|
DSD (`Direct Stream Digital
|
||||||
|
<https://en.wikipedia.org/wiki/Direct_Stream_Digital>`_) is a digital
|
||||||
|
format that stores audio as a sequence of single-bit values at a very
|
||||||
|
high sampling rate. It is the sample format used on `Super Audio CDs
|
||||||
|
<https://en.wikipedia.org/wiki/Super_Audio_CD>`_.
|
||||||
|
|
||||||
:program:`MPD` understands the file formats dff and dsf. There are three ways to play back DSD:
|
:program:`MPD` understands the file formats :ref:`DSDIFF
|
||||||
|
<decoder_dsdiff>` and :ref:`DSF <decoder_dsf>`. There are three ways
|
||||||
|
to play back DSD:
|
||||||
|
|
||||||
* Native DSD playback. Requires ALSA 1.0.27.1 or later, a sound driver/chip that supports DSD and of course a DAC that supports DSD.
|
* Native DSD playback. Requires ALSA 1.0.27.1 or later, a sound driver/chip that supports DSD and of course a DAC that supports DSD.
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,17 @@ struct DsdiffChunkHeader {
|
||||||
uint64_t GetSize() const {
|
uint64_t GetSize() const {
|
||||||
return size.Read();
|
return size.Read();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies padding to GetSize(), according to the DSDIFF
|
||||||
|
* specification
|
||||||
|
* (http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf)
|
||||||
|
* section 2.3.
|
||||||
|
*/
|
||||||
|
[[nodiscard]] constexpr
|
||||||
|
uint64_t GetPaddedSize() const noexcept {
|
||||||
|
return (GetSize() + 1) & ~uint64_t(1);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** struct for DSDIFF native Artist and Title tags */
|
/** struct for DSDIFF native Artist and Title tags */
|
||||||
|
@ -117,7 +128,7 @@ dsdiff_read_prop_snd(DecoderClient *client, InputStream &is,
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
offset_type chunk_end_offset = is.GetOffset()
|
offset_type chunk_end_offset = is.GetOffset()
|
||||||
+ header.GetSize();
|
+ header.GetPaddedSize();
|
||||||
if (chunk_end_offset > end_offset)
|
if (chunk_end_offset > end_offset)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue