Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
3fb8f3ec
Commit
3fb8f3ec
authored
Apr 30, 2016
by
Max Kellermann
Browse files
Options
Browse Files
Download
Plain Diff
Merge tag 'v0.19.15'
release v0.19.15
parents
fc3e0dfc
04ed50fb
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
247 additions
and
31 deletions
+247
-31
Makefile.am
Makefile.am
+3
-1
NEWS
NEWS
+4
-1
developer.xml
doc/developer.xml
+3
-2
tags.xml
doc/include/tags.xml
+154
-0
mpd.conf.5
doc/mpd.conf.5
+0
-12
mpdconf.example
doc/mpdconf.example
+1
-1
protocol.xml
doc/protocol.xml
+22
-2
user.xml
doc/user.xml
+43
-2
DecoderBuffer.hxx
src/decoder/DecoderBuffer.hxx
+1
-0
OpusDecoderPlugin.cxx
src/decoder/plugins/OpusDecoderPlugin.cxx
+7
-3
WaveEncoderPlugin.cxx
src/encoder/plugins/WaveEncoderPlugin.cxx
+5
-3
test_byte_reverse.cxx
test/test_byte_reverse.cxx
+4
-4
No files found.
Makefile.am
View file @
3fb8f3ec
...
...
@@ -2261,7 +2261,9 @@ developer_DATA = $(wildcard doc/developer/*.html)
DOCBOOK_HTML
=
$
(
patsubst %.xml,%/index.html,
$(DOCBOOK_FILES)
)
$(DOCBOOK_HTML)
:
%/index.html: %.xml
DOCBOOK_INCLUDES
=
$
(
wildcard
$(srcdir)
/doc/include/
*
.xml
)
$(DOCBOOK_HTML)
:
%/index.html: %.xml $(DOCBOOK_INCLUDES)
$(XMLTO)
-o
$
(
@D
)
--stringparam
chunker.output.encoding
=
utf-8 html
--stringparam
use.id.as.filename
=
1
$<
doc/api/html/index.html
:
doc/doxygen.conf
...
...
NEWS
View file @
3fb8f3ec
...
...
@@ -52,11 +52,14 @@ ver 0.20 (not yet released)
* update
- apply .mpdignore matches to subdirectories
ver 0.19.15 (
not yet released
)
ver 0.19.15 (
2016/04/30
)
* decoder
- ffmpeg: support FFmpeg 3.0
- ffmpeg: use as fallback instead of "mad" if no plugin matches
- opus: support bigger OpusTags packets
* fix more build failures on non-glibc builds due to constexpr Mutex
* fix build failure due to missing include
* fix unit test on Alpha
ver 0.19.14 (2016/03/18)
* decoder
...
...
doc/developer.xml
View file @
3fb8f3ec
<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"docbook/dtd/xml/4.2/docbookx.dtd">
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<book>
<title>
The Music Player Daemon - Developer's Manual
</title>
...
...
doc/include/tags.xml
0 → 100644
View file @
3fb8f3ec
<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE itemizedlist PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<itemizedlist>
<listitem>
<para>
<varname>
artist
</varname>
: the artist name. Its meaning is not
well-defined; see
<varname>
composer
</varname>
and
<varname>
performer
</varname>
for more specific tags.
</para>
</listitem>
<listitem>
<para>
<varname>
artistsort
</varname>
: same as
<varname>
artist
</varname>
, but for sorting. This usually omits
prefixes such as "The".
</para>
</listitem>
<listitem>
<para>
<varname>
album
</varname>
: the album name.
</para>
</listitem>
<listitem>
<para>
<varname>
albumsort
</varname>
: same as
<varname>
album
</varname>
,
but for sorting.
</para>
</listitem>
<listitem>
<para>
<varname>
albumartist
</varname>
: on multi-artist albums, this is
the artist name which shall be used for the whole album. The
exact meaning of this tag is not well-defined.
</para>
</listitem>
<listitem>
<para>
<varname>
albumartistsort
</varname>
: same as
<varname>
albumartist
</varname>
, but for sorting.
</para>
</listitem>
<listitem>
<para>
<varname>
title
</varname>
: the song title.
</para>
</listitem>
<listitem>
<para>
<varname>
track
</varname>
: the track number within the album.
</para>
</listitem>
<listitem>
<para>
<varname>
name
</varname>
: a name for this song. This is not the
song title. The exact meaning of this tag is not well-defined.
It is often used by badly configured internet radio stations
with broken tags to squeeze both the artist name and the song
title in one tag.
</para>
</listitem>
<listitem>
<para>
<varname>
genre
</varname>
: the music genre.
</para>
</listitem>
<listitem>
<para>
<varname>
date
</varname>
: the song's release date. This is
usually a 4-digit year.
</para>
</listitem>
<listitem>
<para>
<varname>
composer
</varname>
: the artist who composed the song.
</para>
</listitem>
<listitem>
<para>
<varname>
performer
</varname>
: the artist who performed the song.
</para>
</listitem>
<listitem>
<para>
<varname>
comment
</varname>
: a human-readable comment about this
song. The exact meaning of this tag is not well-defined.
</para>
</listitem>
<listitem>
<para>
<varname>
disc
</varname>
: the disc number in a multi-disc album.
</para>
</listitem>
<listitem>
<para>
<varname>
musicbrainz_artistid
</varname>
: the artist id in the
<ulink
url=
"http://musicbrainz.org/doc/MusicBrainzTag"
>
MusicBrainz
</ulink>
database.
</para>
</listitem>
<listitem>
<para>
<varname>
musicbrainz_albumid
</varname>
: the album id in the
<ulink
url=
"http://musicbrainz.org/doc/MusicBrainzTag"
>
MusicBrainz
</ulink>
database.
</para>
</listitem>
<listitem>
<para>
<varname>
musicbrainz_albumartistid
</varname>
: the album artist
id in the
<ulink
url=
"http://musicbrainz.org/doc/MusicBrainzTag"
>
MusicBrainz
</ulink>
database.
</para>
</listitem>
<listitem>
<para>
<varname>
musicbrainz_trackid
</varname>
: the track id in the
<ulink
url=
"http://musicbrainz.org/doc/MusicBrainzTag"
>
MusicBrainz
</ulink>
database.
</para>
</listitem>
<listitem>
<para>
<varname>
musicbrainz_releasetrackid
</varname>
: the release track
id in the
<ulink
url=
"http://musicbrainz.org/doc/MusicBrainzTag"
>
MusicBrainz
</ulink>
database.
</para>
</listitem>
</itemizedlist>
doc/mpd.conf.5
View file @
3fb8f3ec
...
...
@@ -168,18 +168,6 @@ MP3 playback.
This specifies whether relative or absolute paths for song filenames are used
when saving playlists. The default is "no".
.TP
.B metadata_to_use <tags>
This specifies the tag types that will be scanned for and made available to
clients. Note that you must recreate (not update) your database for changes to
this parameter to take effect. Possible values are artist, album, title,
track, name, genre, date, composer, performer, comment, disc,
musicbrainz_artistid, musicbrainz_albumid, musicbrainz_albumartistid,
musicbrainz_releasetrackid, musicbrainz_trackid. Multiple tags may be specified
as a comma separated list.
An example value is "artist,album,title,track". The special value "none" may
be used alone to disable all metadata. The default is to use all known tag
types except for comments and those starting with "musicbrainz".
.TP
.B auto_update <yes or no>
This specifies the whether to support automatic update of music database when
files are changed in music_directory. The default is to disable autoupdate
...
...
doc/mpdconf.example
View file @
3fb8f3ec
...
...
@@ -116,7 +116,7 @@
#
# This setting defines a list of tag types that will be extracted during the
# audio file discovery process. The complete list of possible values can be
# found in the
mpd.conf man page
.
# found in the
user manual
.
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This setting enables automatic update of MPD's database when files in
...
...
doc/protocol.xml
View file @
3fb8f3ec
<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"docbook/dtd/xml/4.2/docbookx.dtd">
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<book>
<title>
The Music Player Daemon protocol
</title>
...
...
@@ -201,6 +202,25 @@
omitted, then the maximum possible value is assumed.
</para>
</section>
<section
id=
"tags"
>
<title>
Tags
</title>
<para>
The following tags are supported by
<application>
MPD
</application>
:
</para>
<xi:include
href=
"include/tags.xml"
xmlns:xi=
"http://www.w3.org/2001/XInclude"
/>
<para>
There can be multiple values for some of these tags. For
example,
<application>
MPD
</application>
may return multiple
lines with a
<varname>
performer
</varname>
tag. A tag value is
a UTF-8 string.
</para>
</section>
</chapter>
<chapter
id=
"recipes"
>
...
...
doc/user.xml
View file @
3fb8f3ec
<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"docbook/dtd/xml/4.2/docbookx.dtd">
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<book>
<title>
The Music Player Daemon - User's Manual
</title>
...
...
@@ -779,6 +780,33 @@ systemctl start mpd.socket</programlisting>
<section
id=
"config_other"
>
<title>
Other Settings
</title>
<informaltable>
<tgroup
cols=
"2"
>
<thead>
<row>
<entry>
Setting
</entry>
<entry>
Description
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<varname>
metadata_to_use
</varname>
<parameter>
TAG1,TAG2,...
</parameter>
</entry>
<entry>
Use only the specified tags, and ignore the others.
This setting can reduce the database size and
<application>
MPD
</application>
's memory usage by
omitting unused tags. By default, all tags but
<varname>
comment
</varname>
are enabled. The special
value "none" disables all tags.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section>
<title>
The State File
</title>
...
...
@@ -1134,6 +1162,19 @@ database {
</para>
</section>
<section
id=
"tags"
>
<title>
Metadata
</title>
<para>
When scanning or playing a song,
<application>
MPD
</application>
parses its metadata. The
following tags are supported:
</para>
<xi:include
href=
"include/tags.xml"
xmlns:xi=
"http://www.w3.org/2001/XInclude"
/>
</section>
<section
id=
"queue"
>
<title>
The queue
</title>
...
...
src/decoder/DecoderBuffer.hxx
View file @
3fb8f3ec
...
...
@@ -25,6 +25,7 @@
#include "util/ConstBuffer.hxx"
#include <stddef.h>
#include <stdint.h>
struct
Decoder
;
class
InputStream
;
...
...
src/decoder/plugins/OpusDecoderPlugin.cxx
View file @
3fb8f3ec
...
...
@@ -440,13 +440,15 @@ mpd_opus_scan_stream(InputStream &is,
if
(
!
oy
.
ExpectFirstPage
(
os
))
return
false
;
/* read at most two more pages */
unsigned
remaining_pages
=
2
;
/* read at most 64 more pages */
unsigned
remaining_pages
=
64
;
unsigned
remaining_packets
=
4
;
bool
result
=
false
;
ogg_packet
packet
;
while
(
true
)
{
while
(
remaining_packets
>
0
)
{
int
r
=
ogg_stream_packetout
(
&
os
,
&
packet
);
if
(
r
<
0
)
{
result
=
false
;
...
...
@@ -465,6 +467,8 @@ mpd_opus_scan_stream(InputStream &is,
continue
;
}
--
remaining_packets
;
if
(
packet
.
b_o_s
)
{
if
(
!
IsOpusHead
(
packet
))
break
;
...
...
src/encoder/plugins/WaveEncoderPlugin.cxx
View file @
3fb8f3ec
...
...
@@ -27,6 +27,8 @@
#include <assert.h>
#include <string.h>
static
constexpr
uint16_t
WAVE_FORMAT_PCM
=
1
;
struct
WaveEncoder
{
Encoder
encoder
;
unsigned
bits
;
...
...
@@ -64,15 +66,15 @@ fill_wave_header(struct wave_header *header, int channels, int bits,
header
->
id_fmt
=
ToLE32
(
0x20746d66
);
header
->
id_data
=
ToLE32
(
0x61746164
);
/* wave format */
header
->
format
=
ToLE16
(
1
);
// PCM_FORMAT
/* wave format */
header
->
format
=
ToLE16
(
WAVE_FORMAT_PCM
);
header
->
channels
=
ToLE16
(
channels
);
header
->
bits
=
ToLE16
(
bits
);
header
->
freq
=
ToLE32
(
freq
);
header
->
blocksize
=
ToLE16
(
block_size
);
header
->
byterate
=
ToLE32
(
freq
*
block_size
);
/* chunk sizes (fake data length) */
/* chunk sizes (fake data length) */
header
->
fmt_size
=
ToLE32
(
16
);
header
->
data_size
=
ToLE32
(
data_size
);
header
->
riff_size
=
ToLE32
(
4
+
(
8
+
16
)
+
(
8
+
data_size
));
...
...
test/test_byte_reverse.cxx
View file @
3fb8f3ec
...
...
@@ -49,9 +49,9 @@ CPPUNIT_TEST_SUITE_REGISTRATION(ByteReverseTest);
void
ByteReverseTest
::
TestByteReverse2
()
{
static
const
char
src
[]
=
"123456"
;
static
const
char
src
[]
gcc_alignas
(
uint16_t
,
2
)
=
"123456"
;
static
const
char
result
[]
=
"214365"
;
static
uint8_t
dest
[
ARRAY_SIZE
(
src
)];
static
uint8_t
dest
[
ARRAY_SIZE
(
src
)]
gcc_alignas
(
uint16_t
,
2
)
;
reverse_bytes
(
dest
,
(
const
uint8_t
*
)
src
,
(
const
uint8_t
*
)(
src
+
ARRAY_SIZE
(
src
)
-
1
),
2
);
...
...
@@ -73,9 +73,9 @@ ByteReverseTest::TestByteReverse3()
void
ByteReverseTest
::
TestByteReverse4
()
{
static
const
char
src
[]
=
"12345678"
;
static
const
char
src
[]
gcc_alignas
(
uint32_t
,
4
)
=
"12345678"
;
static
const
char
result
[]
=
"43218765"
;
static
uint8_t
dest
[
ARRAY_SIZE
(
src
)];
static
uint8_t
dest
[
ARRAY_SIZE
(
src
)]
gcc_alignas
(
uint32_t
,
4
)
;
reverse_bytes
(
dest
,
(
const
uint8_t
*
)
src
,
(
const
uint8_t
*
)(
src
+
ARRAY_SIZE
(
src
)
-
1
),
4
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment