Commit Graph

1018 Commits

Author SHA1 Message Date
Max Kellermann c400876df1 Merge branch 'v0.18.x' 2014-07-12 01:27:18 +02:00
Max Kellermann a960e2ef48 decoder/faad: estimate song duration for remote files
Previously, MPD tried to slurp the whole song file, count the number
of frames and calculate the song duration from that.  That however is
extremely expensive for remote files, and will delay playback for a
long time.  Workaround: check only the first 128 frames and try to
extrapolate from here.  Fixes Mantis ticket 0004035.
2014-07-12 00:37:00 +02:00
Max Kellermann c4bea3dfe4 decoder/sndfile: implement scan_stream() instead of scan_file() 2014-07-11 22:09:35 +02:00
Max Kellermann 3e19298c9e decoder/sndfile: support more tag types 2014-07-11 22:03:13 +02:00
Max Kellermann 828cd6fd0b Merge branch 'v0.18.x' 2014-07-11 21:33:50 +02:00
Max Kellermann 0ef843f138 decoder/sndfile: use decoder_read()
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-11 21:18:44 +02:00
Max Kellermann 11a5ee821b PlaylistEdit: postpone UpdateQueuedSong() when adding multiple songs
Implement a "bulk" edit mode that postpones both UpdateQueuedSong()
and OnModified().  This way, the playlist version gets incremented
only once.  More importantly: when adding multiple songs to a queue
that consists of only one song, the first song that got added will
always be played next.  By postponing this choice, all newly added
songs get a chance to become the next song.  Fixes the second (and
last) part of Mantis ticket 0004005.
2014-07-11 20:22:35 +02:00
Max Kellermann e2cc328eef Playlist: randomize next song when enabling "random" mode while not playing
Don't restore the current song after shufflung when MPD is stopped
(but still remembers the current song internally).  Fixes the first
part of Mantis ticket 0004005.
2014-07-11 19:41:39 +02:00
Max Kellermann 681643ea9e input/curl: options "verify_peer" and "verify_host" 2014-07-11 16:39:42 +02:00
Max Kellermann ccbb5c3e01 decoder/audiofile: log libaudiofile errors 2014-07-10 09:37:43 +02:00
Max Kellermann 107321e385 decoder/audiofile: implement scan_stream() instead of scan_file() 2014-07-10 09:23:56 +02:00
Max Kellermann 913064d6cc Merge branch 'v0.18.x' 2014-07-09 20:02:07 +02:00
Joff 09384df32c decoder/dsd: use decoder_read_full() where appropriate
Addresses Mantis ticket 0004015.

[mk: use decoder_read_full() only when needed, and a few formal
changes]
2014-07-09 19:18:36 +02:00
Max Kellermann 20538516b9 decoder/audiofile: use decoder_read_full()
Works around WAV stream playback bug, because libaudiofile does not
like partial reads (Mantis 0004028).
2014-07-09 19:05:20 +02:00
Max Kellermann bc6472bb9e decoder/audiofile: use decoder_read()
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-09 18:57:50 +02:00
Christoph Tieben 34689eb2d2 decoder: vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
(see https://www.xiph.org/vorbis/doc/v-comment.html for Details)
2014-06-27 21:14:17 +02:00
Max Kellermann fa1fb47d75 Merge branch 'v0.18.x' 2014-06-23 10:13:50 +02:00
Max Kellermann 848ed14788 db/proxy: fall back to recursive walk on old libmpdclient/MPD
Error message was 'too few arguments for "find"' because the "base"
constraint was not supported, and no other constraints remained.
2014-06-23 09:18:11 +02:00
Max Kellermann 4c8a5dfb05 db/proxy: use mpd_song_get_{start,end}() only with libmpdclient >= 2.3 2014-06-23 09:17:35 +02:00
Max Kellermann 4f61ba766d configure.ac: prepare for 0.18.12 2014-06-23 09:14:35 +02:00
Max Kellermann 3cd24c0a51 release v0.18.11
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJTcPbuAAoJECNuiljG20US+LsQAI5LcUiQ2AxfDdXfEkIW+ryQ
 U5htp4RAAizVFEAdgzdDOoHBVefkvwij6G9ND9WAbJRsUOZs62XwlnOFaB/uQPhd
 VvoNIQLmuUNxltF1itaCTJ0UJkXi6ObVExpwMScGI242uUmoNnxwsWxDxyy2s4bn
 On/OwT64zTOsPTjkYGdfGncwx4dhQc2KJvGGD6y/lMhxUnn3NoKG/VOgleN4ALcL
 KQ0SFQOFbUHJcvMXYdMzhe426d7GiHzFVIfdU16yJz47/xHDmaM+VVJQCOF68rrw
 kyb2POxR4VXhPMfIleF2RiCopvDGSvQfUE3jhQjKBgZE2NeFeI/5N6JcWbZgFJ/J
 4ez3DcjSD1Oeoz6gzaq1QybCku4EZTvPa6Kbb5/84JNKmVdb/JowGF0L18bwTbGv
 y5D5HN3zTdmBXwsiDnTNDtuwaSejvIDTN1k4AkdQ9mLMIMT+13NHLBs1rDE2JnlG
 3xhXrIvwhUBdE1A4uFj8duzk11EWzNI+ltJBRnG8uEzAJxpv5Khiwmj2GciS6s5r
 wp1YUIUA0BhrEgrtoTdE7x13lXkDrmydcJ5kA0kArJFQALliE7kivyg1gtrcNRj1
 7fDRAb9QOxaJrrsJzM9f9pDaIttHRjRvurFtikD90oaRE1g+6ygeScmYJDPhPjvU
 R6PxzvsMCn8kJFWq2ARg
 =Ubmu
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.11'
2014-05-12 18:38:45 +02:00
Max Kellermann 8bfdb4ed0c release v0.18.11 2014-05-12 18:20:26 +02:00
Max Kellermann 70bd35abe2 decoder/OggUtil: allow skipping up to 32 kB after seek
Fixes missing song length on high-latency Opus files.

According to tests with 320 kbit/s opus files with 60ms packets, we
need to skip up to 29 kB.
2014-04-29 11:56:05 +02:00
Max Kellermann bc2a1160b8 db/Count: implement grouping 2014-04-27 22:27:43 +02:00
Max Kellermann 0efb67b51e DeferredMonitor: fix race condition when using GLib event loop
Turns out the lock-free code using atomics was not thread-safe.  The
given callback could be invoked by GLib before the source_id attribute
was assigned.  This commit changes the DeferredMonitor class to use a
Mutex to block the event loop until source_id is assigned.  This bug
does not exist in the 0.19 branch because it does not use the GLib
main loop anymore.
2014-04-26 22:11:23 +02:00
Max Kellermann 54ebf2a699 configure.ac: prepare for 0.18.11 2014-04-26 22:08:08 +02:00
Max Kellermann ae178c77bd DatabaseCommands: "list" allows grouping 2014-04-24 11:38:49 +02:00
Max Kellermann 27002ad1ea db/Helpers: "list" on album artist falls back to the artist tag 2014-04-24 10:48:52 +02:00
Max Kellermann 1c02b4b9f4 release v0.18.10
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJTRoKFAAoJECNuiljG20UScmgP/3bXQLBVqnGdMEzJio9qfTqz
 inqbuaR8FrOSQFT5ULpYYipcjiqxCpG2ooE2M083F3wXDHF8u+j0S84NEvHQjv0T
 WvA5EOOeEJS0o0gREZb8onO8NVwH+f1r4x34PAc4QbSeROiAiJRPmfTOZBDTaQkZ
 Fy4CGte9UqLvUG10Jxpn1DgcBBeoge9Ruzm+drBLHh53lAfKZH6z9u23htNc4PH0
 WMN3/orL7KZNxMtX37zqQDhkbPv2RjCWc0JJ8yxBzw3r/qG53GkmCBsStub6wKIi
 iPgkoKXii+FAlg1oRmvVNELmOUDjhnBj8+g7q6WgJGpYqdcSCQBRIBnPPRn6Tfw3
 wS7MtGoH7M4yihOfeburIzN0JiD4dtcnA7CrA9ghWt3C0Hci9Q/eni7xHgAuJ7Gp
 fD0aEGeaQiQZC8r1UYkgvPuc+CXpsjPcpoN2TlYwDJ3VPQcikHVqTUkJxf5rEGbL
 h5K0jhW/TzgT0quozd50w52X/n5J76X8oEng08271OPMlF+6gawGA2/AeDsomRTp
 n8OPVutpyaGE3gKGYLGKj3cEnP15tQyt3U0kiU+ccG7osEPXr8JU/A4fipqcrwnN
 lwejiIKzfZBU68kwS+gtQLiBncT3oh5tEiLJNzYYpPCF0wkDYt2u/rhRxnVjRoXO
 5B9PRaOPuJ5N+6O2hGNS
 =qsUE
 -----END PGP SIGNATURE-----

Merge tag 'release-0.18.10'
2014-04-10 13:49:20 +02:00
Max Kellermann d0119548c1 release v0.18.10 2014-04-10 13:36:38 +02:00
Marcello Desantis 95ac6071b9 decoder/sndfile: work around libsndfile bug on partial read 2014-04-09 23:58:56 +02:00
Weng Xuetian 3a4e667078 PlaylistEdit: don't interrupt playback when current song gets deleted 2014-04-09 23:10:14 +02:00
Max Kellermann ce18c36ed9 decoder/ffmpeg: handle unknown stream start time 2014-03-18 09:16:09 +01:00
Max Kellermann 8e39cf62e7 decoder/ffmpeg: pass AVSEEK_FLAG_ANY to av_seek_frame()
This corrects a major mistake from commit 724a59aa - there was one
small thing that commit was supposed to do, and it failed.
AV_TIME_BASE is not a seek flag.
2014-03-18 09:10:36 +01:00
Max Kellermann 707d379b97 input/mms: move blocking I/O to thread 2014-03-16 11:48:46 +01:00
Max Kellermann 5696f91a1e pcm/PcmFormat: ARM NEON optimizations for float->s16
This is nearly 4 times faster than the "portable" algorithm.
2014-03-15 11:41:01 +01:00
Max Kellermann a9e351e00d decoder/gme: fix memory leak in container_scan() 2014-03-06 13:12:39 +01:00
Max Kellermann d65841a2db configure.ac: prepare for 0.18.10 2014-03-06 13:08:30 +01:00
Max Kellermann 503ed9c331 release v0.18.9
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJTEwdzAAoJECNuiljG20USkFYP/i1PaM7O20e2EPE7ELhffk1I
 PEL6WiuCxfEHP+JbH/RPy/CdyKIqx3TTeaktXzOJmCcU+5fAgbpIwfK689ZjpE7Y
 U+7aPfGudfjYTxM/bigEo+1XAIYWJCJ2IlopN0lRIZSquUm8rfxosqsNzJFrhwsK
 40Ps36XdpYUA3z9dugyJjeKQETkjJa5Y55C1yml5RRUz+yPqyiPelm0dSlx3Ggce
 KpmNZfp8g8/stwb08iw+qk+cNKP75eJwPdFmQrsc91QxP1oW7ERWhiICA0ZtqaNe
 T0Ld5+wZ6uTJSztQiUsWrJYS1yKix5q1Za8tyFr3a9NPI+iIjsALXqU9k7zmZ6Id
 GK0Xr9Noo1o80QeGkd60nJyCQXbEU/V0p9D/QiDVei+IvK6mbxF3y2gPA7wobgrC
 KEDgsJZ+0fjmgdx+eb8ydg0uIwHrk04u0YKukUqA3bkNS/PUEICPqblcg8Spf89I
 RMdjq2HFcpkaIwGvryfHIbTNUbonAziMzmiJ0WQA1FCD3x1WELvBf09GzAsUEoFX
 Be0Co15rODOByo5ryZvSJv5BCr2RuCPwzNF+V26nMaKK7EloQWmbO0rpkRLVRk81
 qo1JmElm6SyeE3kHqVW/NyrPxLtd7VngV+z9hXr95szUjCjMv/MK169r4jumLTex
 RLyPDkhkQLDIijamhjfZ
 =nX0n
 -----END PGP SIGNATURE-----

Merge tag 'release-0.18.9'
2014-03-02 11:46:07 +01:00
Max Kellermann 2784d65618 release v0.18.9 2014-03-02 11:25:01 +01:00
Max Kellermann a884e37de1 output/alsa: call snd_pcm_prepare() after snd_pcm_drop()
Don't wait for an optimistic write to fail.  This is an improved
workaround for the infamous Raspberry Pi bug (see commit af991765).
It works much better and comes without the negative side effects.  The
old workaround is now obsolete.
2014-03-02 11:12:25 +01:00
Max Kellermann 0102a8665a event/SignalMonitor: fix build failure due to missing signal.h include 2014-03-02 10:21:31 +01:00
Max Kellermann 36ca57a54e fs/StandardDirectory: add GetUserCacheDir()
Move code from CreateConfiguredDatabase() and add XDG support.  This
implements an automatic Linux fallback for the setting "db_file" if
none was specified.
2014-03-01 22:51:51 +01:00
Max Kellermann efa6678bcc NEWS: add group "configuration" 2014-03-01 22:51:51 +01:00
Max Kellermann 96afa8bd2b command: add command "listfiles"
Lists files and directories.  Supports storage plugins.
2014-03-01 06:25:57 +01:00
Max Kellermann d34ae0850c AllCommands: "findadd" requires the "add" permission 2014-02-27 23:08:22 +01:00
Max Kellermann 681e012fb5 db/update: cancel the update on shutdown 2014-02-27 16:58:35 +01:00
Max Kellermann 4dcf0b8ae0 first Android release
Finally, MPD runs on Android.  For some small value of "runs".  Very
much work left, too much to describe.
2014-02-22 01:39:08 +01:00
Max Kellermann c32477a223 Merge branch 'v0.18.x' 2014-02-18 21:46:41 +01:00
Max Kellermann 5e1e92626c event/SignalMonitor: unblock signals after fork
Fixes hanging child process in the "pipe" output plugin.
2014-02-18 19:13:50 +01:00
Max Kellermann 7fee85c80a configure.ac: fix linker failure when libvorbis/libogg are static
Link libvorbisfile first, followed to libvorbis and finally libogg.
This order is necessary because libvorbisfile depends on libvorbis.
2014-02-18 18:39:19 +01:00
Max Kellermann 5d87a274a5 configure.ac: link the Vorbis encoder with libogg
Fixes another linker failure.  Similar to commit ea406875
2014-02-17 19:42:38 +01:00
Max Kellermann 9e02b13ab3 systemd: add socket activation files 2014-02-12 21:22:36 +01:00
Max Kellermann 57e862712a configure.ac: prepare for 0.18.9 2014-02-09 22:58:14 +01:00
Max Kellermann 570b12ec13 Idle: error out when unrecognized idle event was specified
Implements the error checks missing in commit 0bad8406
2014-02-09 08:07:48 +01:00
Max Kellermann b3663b5da2 storage/nfs: new storage plugin 2014-02-08 14:24:47 +01:00
Max Kellermann 3fdc678aae Main: support arbitrary storage plugins 2014-02-08 00:04:29 +01:00
Max Kellermann 5e4dd4be9c Main: allow playlist directory without music directory 2014-02-07 22:39:17 +01:00
Max Kellermann 04d5896c1c NEWS: mention default soundcloud API key
Missing from commit 48c96bba
2014-02-07 22:38:04 +01:00
Max Kellermann 746a47982b release v0.18.8
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJS9BY7AAoJECNuiljG20USFXcP/1JX3QXdVNxOZdoLvsD7MqmP
 Qg9ra1c+9HdD7e2FjTFzSw02USIOrp+l/e3qPn3V0CsD+ZHoCH3lt/zLGaooYbVy
 +3gsCNPyW0KTfdmaemFrtQk7sk9lAzuCO+t4jESFQxPmGeUKZRDUtjSMJJsiBKTe
 oFiJ6VgkLHmUFb+mAHSmmDQEuZzyW59Qx9ptIAoHIRzBvhIYhAW/X86172XcxZIB
 61jmRlebpIrmxi6ft6GFPHjxwD6Od5au7jhQOgI+SqIgkg4KjKotV2ggIcRcYnSs
 IenloxdACKNd0yGuyHLOvXJLE5HAUl8GxkLF0QMDx2OH8CjQ+dEo9Kcclj2P6mba
 pNVex3LHOtv/Bw5K0OJayxqz4d//rsqs4r2SOBDO4heFGNeNN/nbAiyBrNvkMDKP
 VeeIfJBd/aI8M9NRbEMJ3KbuqO6CATR9F3hVsrzocaAJfvixET0uHoqZeunFrpcp
 TVHEHavx1eIC0e7LaqIL7lWrhElb6ci1fypCYuau+ZNz6irOnPRA5CY9Zk2XWhSN
 pxS+XQRRjHrDYbYjk3YNqCno4lWzFPGSoKkufG4a3Q8jKb/RA3zAKhwlwZXFPfun
 PgLIl5XhK3BWl2Dv7t0jMxzqgLiIOMwL0l71AZNaRRl3OYfiYda3lrBK390ByQOG
 64R+be+RxotfsyPvfwQF
 =Arwc
 -----END PGP SIGNATURE-----

Merge tag 'release-0.18.8'
2014-02-07 00:17:36 +01:00
Max Kellermann ddb5390d88 release v0.18.8 2014-02-07 00:06:31 +01:00
Max Kellermann fce20e514e NEWS: fix 0.18.7 release year 2014-02-07 00:06:31 +01:00
Max Kellermann af66ed2505 doc/user: document the RoarAudio output plugin 2014-02-06 21:46:29 +01:00
Max Kellermann ea4068757d configure.ac: link the Vorbis encoder with libvorbis
Since the encoder plugin uses a libvorbis function (and not only
libvorbisenc functions), we need to link with libvorbis explicitly.
2014-02-06 21:32:50 +01:00
Max Kellermann e4322a716c input/nfs: new plugin using libnfs 2014-02-06 18:37:27 +01:00
Max Kellermann b9c248e7e7 PlaylistFile: use class SongLoader 2014-02-03 23:50:19 +01:00
Max Kellermann a31738f6f1 Main, OutputThread: increase kernel timer slack (Linux)
Allows the kernel to combine timer wakeups with other processes,
reducing power usage.
2014-01-30 18:43:40 +01:00
Max Kellermann 39a2867ea8 NEWS: mention thread names 2014-01-30 18:43:16 +01:00
Max Kellermann 468c3df82d NEWS: add "threads" section 2014-01-30 18:43:03 +01:00
Max Kellermann 30fadaed7f Merge branch 'v0.18.x' 2014-01-27 10:33:42 +01:00
Max Kellermann 2b10ecfa37 IcyMetadataParser: more robust tag parser
Allow semicolons and single quotes in the stream title.  This is not
part of any specification, but found in real life.
2014-01-27 10:08:21 +01:00
Max Kellermann 5c4a42caa0 neighbor: new subsystem to detect file servers on the local network
This commit adds the NeighborPlugin API which can be used to detect
nearby file servers that can be used by input plugins.  This list of
servers is exported using the new "listneighbors" command.  The idle
even "neighbor" notifies interested clients when a new neighbor is
found or an existing one is lost.

There's a lot missing currently: protocol&user documentation, and a
way to "mount" remote servers into the music database.  Obviously,
some code from the UPnP database plugin can be moved to a neighbor
plugin.
2014-01-26 00:10:05 +01:00
Max Kellermann a6d9998e1d db/proxy: copy "Last-Modified" from remote directories 2014-01-22 23:07:21 +01:00
Max Kellermann 2f51285349 Merge branch 'v0.18.x' 2014-01-20 09:05:36 +01:00
Max Kellermann ab9c9068d4 Queue: rename struct queue to Queue
Works around a build failure on Solaris because annoyingly, Solaris
reserves the name "queue".  This rename was pending anyway.
2014-01-20 08:57:46 +01:00
Max Kellermann 5fb72d7c8f Merge branch 'v0.18.x' 2014-01-15 11:47:49 +01:00
Max Kellermann 313d1d5d83 decoder/ffmpeg: support libav v10_alpha1 2014-01-15 11:33:18 +01:00
Max Kellermann f882434547 configure.ac: prepare for 0.18.8 2014-01-15 11:22:06 +01:00
Max Kellermann 4734af747b OutputThread: use real-time priority 2014-01-14 09:59:04 +01:00
Max Kellermann 5d17731b73 UpdateGlue: let the update thread run at "idle" priority
The update thread should not affect the rest of the system, therefore
set "idle" priority, and let it only run when nobody else is using the
resources.
2014-01-14 09:09:52 +01:00
Max Kellermann 8cd15a02cd release v0.18.7
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJS08NxAAoJECNuiljG20USYMYP/06XGbNmMoNy00DMMPVMGgfi
 yvsBAM1kXTgh4/vE5LOZRJoXW8HY/p284TnTbjZWW/56c2RFbJblp4Bya28WtZTU
 kAVpYD/8ClAHjZjVpZyvKq3G/U3IsM/EP3to8UnVRfoPRSr9LrOiT03TXnpWW5eO
 CgrYqRwEf/XuqftmX/KarVEN/IRB1SxhZkcKLfagyW0nuulSwq5aR8tgR0wSu4qf
 Yt+e1NQ2N3hJqINdV0Yb+wb2WAWK7jA6T5zw3ukalIp77/EnwvxD7VhnDKA4E4/8
 6Y6MtkDb1KjweFXqRlMScEEZ7Xtvfa8fDkbXGV09jpcKBtN+M59L4+VP5ZC1d8bZ
 VDoHOqIwpLsszdhP8/LidYgjkPf3tTjY9jCYmF15cu/E6PIHlrhcc1zD1yOps8bm
 DFGFqjcct2hkCqovYFSnZGwHwfcOp/KjSVkoALxcmcw3KZDAuo8zhtH65O14UYdb
 LGwotGQOnjDrWyd+Mt6eNyVY65GWuzNYazuCVsDcJqGM66sXIsfXgGKpOtTByAGU
 0fYCq6apreGKhNXHoYeNwD5OhbffXWobA8nSWJhyeUu0FGMyNDbX/OET/5d2SCr1
 Tm2+DVcBiNxgd4Bc6ddHgzsIem4LzS8VZx07VAwONP5oD4+eCj9wcx5S+0VrKNr9
 kld5H4FLAb5fJfcRvKLm
 =XVhH
 -----END PGP SIGNATURE-----

Merge tag 'release-0.18.7'
2014-01-13 11:52:35 +01:00
Max Kellermann 05ad335ae9 release v0.18.7 2014-01-13 11:39:27 +01:00
Andrée Ekroth ea771c17c5 Shine encoding plugin
This encoding plugin features a fixed-point mp3 encoder,
with faster encoding on architectures without a FPU.

Right now the encoder is limited to stereo and 16 bit depth.
The bitrate and sample rate can be modified in audio_output.

audio_output {
        type            "httpd"
        name            "My shine stream"
        encoder         "shine"
        port            "8000"
        format          "44100:16:2"
        bitrate         "320"  # default: 128
}
2014-01-13 11:14:19 +01:00
Max Kellermann 7faeb2ff2b configure.ac: reject libmpcdec SV7 in configure script
Look for symbol "mpc_demux_init" which does not exist in SV7.  This
avoids build failures when SV7 was found by configure.ac.
2014-01-11 21:02:12 +01:00
Max Kellermann 71d012fa61 db/proxy: forward "idle" events
Send "idle" to the other MPD whenever there's nothing else to do and
forward incoming "idle database" events to all our MPD clients.
2014-01-11 01:11:19 +01:00
Jean-Francois Dockes 406452f019 UPnP database plugin
[mk: renamed source files, applied coding style, reduced bloat, using
MPD's threading library, using MPD's error reporting and logging
library and refactoring, fixed lots of bugs]
2014-01-09 20:56:00 +01:00
Max Kellermann 139122c57f Merge branch 'v0.18.x' 2014-01-08 22:14:12 +01:00
Max Kellermann fdd76b3461 decoder/faad: fix memory leak 2014-01-08 22:11:00 +01:00
Max Kellermann e490e5d0ab playlist/pls: don't free stack buffer 2014-01-08 19:50:44 +01:00
James McGlashan (DarkFox) d4dea53ae9 http -> https for SoundCloud plugin 2014-01-02 12:29:45 +01:00
Max Kellermann 809b0eb1f5 command: "lsinfo" and "readcomments" allowed for remote files 2013-12-29 18:25:32 +01:00
Max Kellermann b5f3bfce92 SongUpdate: read tags from songs in an archive
Add the TagStream.cxx library, similar to TagFile.cxx, and use it to
load tags from song files inside archives.
2013-12-29 18:15:30 +01:00
Max Kellermann 92a4bf4441 Merge branch 'v0.18.x' 2013-12-29 14:18:19 +01:00
Max Kellermann d7f80eab68 configure.ac: improved check for libyajl 1.0
If we have libyajl 2.0.1 (without a pkg-config file), our configure.ac
would assume this is the libyajl 1.0 API, because the function
yajl_alloc() exists in both.  This commit changes the library check to
the function yajl_parse_complete() which was removed in the 2.0 API.
This fixes build failure with libyajl 2.0.1.
2013-12-29 14:12:33 +01:00
Max Kellermann e30b356eb0 daemon: no initgroups() when already running as the configured user
We can assume that initgroups() would be a no-op in that case, however
initgroups() is not allowed for unprivileged users anyway.
2013-12-29 13:59:05 +01:00
Max Kellermann 6a1b2f0387 configure.ac: prepare for 0.18.7 2013-12-29 10:40:59 +01:00
Max Kellermann 5465647c2e input/smbclient: new input plugin 2013-12-29 01:25:27 +01:00
Max Kellermann afcf0795c4 pcm/Volume: improved dithering
Instead of just adding a rectangular random value before shifting back
to the normal scale, use the existing PcmDither library.
2013-12-28 18:30:24 +01:00
Max Kellermann 64e898f6db release v0.18.6
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQIcBAABAgAGBQJSuWnsAAoJECNuiljG20US3qwP/0WGxzRFU2/dLzX6KG5/n+8R
 LqVeX7Ap7vLncA2UQQ2BiddPtF0u9lJOnex64pYCkwwpr4JBmkBa6kTKVGbbXDv5
 /tuHeUJk/aWhBJ8Qz/rxmNFBW6tNGlhf+7FVt8vHQqvHn7tWWKRlsQNk6Pd4gGM/
 UiMyuA8EtfTJZACPRRZK26H7g7EKIjsGt6vwiuWAh3MxGHWL5R2chuP5Mapi1U4U
 Qa1YOUAHlChRxGT+LmNMyKlgq+mqltbKQj+pOLPFuT6Q6BqgZp2Ept5Svod/JamC
 yCFRGWYsmRxZ0ZOhtRZACfm/yNzyIhkkvgW8FqM6tINOPrwL2MwAJVMVH3DZM7Aj
 /8ltz0OH2s9x9sUfOtxQkK/3bJpBwaDnl+dFQtGIFwigvYLR2Jv2Bl1zQO6+zICu
 bdbJS+IcOrElxTnxfir0CVEDysifUQ7/ZSQkwDqpF+RI8E07ZMZZLmXk3S2yX6Fx
 6dCwdfIsBAotF7RYsdn4cmRaSEx6Ze+aQr0l5yLh+5sKPEdDRSMrBEnCgPGU94ub
 VNl3Cp3dtq5kuSfJ90Mk0QzwVd/kCdKZKBMcTX2zv38NLcX0LCSylM4K9yCi+GR2
 gvgAJq9cmbmTEN3+grVdApNx0sqNFrD6pB27KhUKWD0VYypPu7yPPptkOWzSldbz
 8JGa8lryMbRmgiXVyivp
 =Z823
 -----END PGP SIGNATURE-----

Merge tag 'release-0.18.6'
2013-12-24 12:20:24 +01:00
Max Kellermann fb34519b96 release v0.18.6 2013-12-24 12:01:01 +01:00
Max Kellermann c05691b546 OutputControl: update both ReplayGainFilters
The "mode" of the second ReplayGainFilter was never set, and thus
replay gain was never applied to the new song during cross-fade.
2013-12-24 11:53:21 +01:00
Steven O'Brien 6b3b8c6f2e fix FfmpegDecoderPlugin to use relative timestamps 2013-12-20 22:28:33 +01:00
Steven O'Brien 35f85ddd86 add draft ALSA input plugin
I've created an elementary input plugin that plays sound from the
soundcard, so you can use MPD to listen to anything connected to the
line-in jack, or to Video4Linux FM radio cards that send audio through
the soundcard.  There has been a small number of posts here in the
past requesting line-in input, so here is a first, simplistic stab at
it.

The patch adds a new sheme, alsa://, which causes mpd to play data
read directly from a souncdard.  It defaults to hw:0,0, but you can
pass any ALSA device name in the URI.  So, using mpc for example:

 mpc add alsa://
 mpc play

will play from device hw:0,0.

To use a diffferent device:

 mpc add alsa://hw:1,0
2013-12-19 23:25:50 +01:00
Michal Smucr e4d69f38b0 riff: recognize upper-case "ID3" chunk name
Some tagging libraries (eg. TagLib) produce that variant.
2013-12-19 09:35:54 +01:00
Max Kellermann c7b1038a9d Merge branch 'v0.18.x' 2013-12-14 12:37:16 +01:00
Max Kellermann 8e38b4f83c mixer/alsa: use BlockingCall() instead of EventLoop::AddCall()
This is safer, and works without epoll().  Fixes a build failure with
uClibc, which does not support epoll().
2013-12-13 14:35:36 +01:00
mobidyc 96fa69ff6b SongUpdate: accept files without metadata
If the file was recognized by a decoder plugin, accept it - don't
require metadata.
2013-12-10 19:34:35 +01:00
Lukas Stabe 695ca29274 output/osx: fix build failure 2013-12-10 19:19:31 +01:00
Max Kellermann 02e8da6c98 NEWS: add openal line 2013-12-10 19:19:27 +01:00
Max Kellermann 2b717997e2 command: add commands "addtagid", "cleartagid" 2013-12-02 12:50:27 +01:00
Max Kellermann 3e11a28cd9 pcm/SoxrResampler: new resampler option using libsoxr 2013-12-01 19:13:39 +01:00
Max Kellermann aaeb8150b7 NEWS: prepare for 0.19 2013-12-01 19:13:39 +01:00
Gaetan Bisson 3b0fea5fae input/cdio_paranoia: support libcdio-paranoia 0.90 2013-11-27 08:25:17 +01:00
Max Kellermann 443516cdda configure.ac: prepare for 0.18.6 2013-11-27 08:25:17 +01:00
Max Kellermann 57e0cc5442 release v0.18.5 2013-11-23 18:30:12 +01:00
Max Kellermann d6247902ec input/curl: work around stream resume bug (fixed in libcurl 7.32.0) 2013-11-23 12:13:41 +01:00
Max Kellermann fc7d5b055d PcmResampleLibsamplerate: clip 24 bit data
Using pcm_resample_lsr_32() for 24 bit samples works, but may cause 24
bit overflows.  This commit makes 24 bit a special case with explicit
clipping.
2013-11-22 23:27:56 +01:00
Max Kellermann d22acc59c9 db/proxy: implement method GetUpdateStamp() 2013-11-22 00:45:27 +01:00
Max Kellermann 099a2cb586 Stats: print db statistics only if db is available
Fixes crash on "stats" in certain configurations.
2013-11-22 00:27:37 +01:00
Max Kellermann ff1c1107f3 Stats: auto-reload statistics with proxy plugin 2013-11-22 00:19:28 +01:00
Max Kellermann 67b8124a1d Mapper: _get_music_directory_utf8() may return nullptr
If no music_directory is configured, return nullptr instead of an
empty string.  This fixes a crash when db_file is configured without
music_directory.
2013-11-22 00:02:17 +01:00
Florian Schlichting 51ec499c89 system/ByteOrder: testing for endianness in a more general way
Fixes build tests on ia64 and mipsel by testing for endianness in a
more general / portable way.
2013-11-21 23:04:49 +01:00
Max Kellermann 727c622659 configure.ac: auto-detect fluidsynth by default
The option "--enable-fluidsynth" was documented to be "auto" by
default, when it was really "no".
2013-11-21 22:50:58 +01:00
Denis Krjuchkov 1fc0c9fe8a NEWS: add version 0.18.5 change log 2013-11-18 16:40:00 +06:00
Max Kellermann 35297f8d4f release v0.18.4 2013-11-13 18:26:01 +01:00
Max Kellermann 0b6548a282 util/RefCount: no "constexpr" with libc++
Not supported by libc++.
2013-11-11 12:27:16 +01:00
Max Kellermann 287c70e361 filter/route, ...: add missing stdlib.h includes 2013-11-11 08:20:09 +01:00
Jurgen Kramer 47d3758820 decoder/dsdiff: fix byte order bug 2013-11-10 16:49:39 +01:00
Max Kellermann 32fcc22cb3 configure.ac: prepare for 0.18.4 2013-11-09 09:52:51 +01:00
Max Kellermann daba1238b5 release v0.18.3 2013-11-08 12:55:12 +01:00
Max Kellermann 2789493a5f PlayerThread: fix stuck MPD after song change (0.18.2 regression)
Commit 77c63511 caused MPD to become stuck right after a song change.
The problem was that at some point, the MusicBuffer became full, and
the DecoderThread working on the next song waits for the PlayerThread.
However, the PlayerThread was stuck in a loop of g_usleep() calls, and
never bothered to tell the DecoderThread that the MusicBuffer is not
full anymore.  This bug is very old, but its chance to occur went from
nearly 0% to nearly 100%.

The fix is to wake up the DecoderThread before waiting for it.  As a
side effect, I replaced the g_usleep() call with a Cond::Wait() call.
2013-11-08 12:02:21 +01:00
Max Kellermann 834715ea2f configure.ac: prepare for 0.18.3 2013-11-08 11:57:37 +01:00
Max Kellermann 380a3bbff4 release v0.18.2 2013-11-07 18:48:04 +01:00
Max Kellermann f33acf8758 input/cdio_paranoia: add setting "default_byte_order"
Allows big-endian users to configure the fallback byte order to
little-endian.  Without this setting, MPD assumes native byte order if
the CD drive can't decide.
2013-11-07 18:17:54 +01:00
Max Kellermann fd2eafa7c6 ClientRead: "close" flushes the output buffer
Add a new CommandResult code called "FINISH" which, unlike "CLOSE",
will attempt to flush the output buffer.  This is a one-shot attempt;
it will do one write, and not try again.
2013-11-06 22:01:06 +01:00
Max Kellermann ad27d06979 PlayerThread: enable buffering when starting playback
For some reason, this got lost in commit 975deca8.

Re-enabling this fixes stuttering at the beginning of radio streams.
2013-11-06 20:14:38 +01:00
Max Kellermann c4b1251d0a configure.ac: require libaudiofile 0.3 due to API breakage
Prior to version 0.3, the "length" callback returned a "long" instead
of AFfileoffset.  Now that this API bug fix is a few years old, let's
drop 0.2 support for good.
2013-11-06 20:04:21 +01:00
Max Kellermann 01891f8815 input/curl: fix bug with redirected streams
Migrate from the old curl_multi_perform() API to the newer
curl_multi_socket_action() API (since CURL 7.16).

This allows working around a bug with HTTP redirections with epoll:
when CURL closes a socket and the new one happens to have the same
file number, MPD did not have a chance to remove the old one from
epoll and subsequently attempted to use EPOLL_CTL_MOD, which was not
allowed by epoll, because it's a new socket now.
2013-11-06 19:14:22 +01:00
Max Kellermann ed436c6f0c system/ByteOrder: fix big-endian support
D'oh!
2013-11-05 22:08:53 +01:00
Max Kellermann ae5dd2da4f playlist/pls: fix reversed song order
Remove the forward_list::reverse() call.  It was not necessary,
because pls_parser() already reads the playlist in reverse order.
2013-11-05 18:22:34 +01:00
Jurgen Kramer f4b61e8c8d decoder/dsf: enable DSD128 2013-11-05 17:38:48 +01:00
Max Kellermann e49a3d377f NEWS: add missing line 2013-11-05 17:38:41 +01:00
Max Kellermann bb62ecf157 configure.ac: prepare for 0.18.2 2013-11-05 11:08:17 +01:00
Max Kellermann a268ab35ea release v0.18.1 2013-11-04 23:46:14 +01:00
Max Kellermann 62baec1841 output/alsa: avoid endless loop in Raspberry Pi workaround
See code comment.
2013-11-04 23:40:34 +01:00
Max Kellermann 7bca61f5bb event/ServerSocket: don't abort if IPv6 is not available
First check if an IPv6 socket can be created.
2013-11-04 23:36:02 +01:00
Max Kellermann bcae86196c event/ServerSocket: open sockets in the order they were configured
Use a std::list which can be appended at the end.
2013-11-04 20:10:46 +01:00
Max Kellermann 7adfea8ca2 system/resolver: return path of UNIX domain sockets
getnameinfo() doesn't work well - it always returns "localhost".
2013-11-04 19:13:05 +01:00
Max Kellermann eab1a77683 ClientRead: always ignore whitespace at the end of the line 2013-11-04 18:11:15 +01:00
Max Kellermann 84f5e0c0de Makefile.am: distribute missing files 2013-11-04 08:26:10 +01:00
Max Kellermann 2ce3900071 filter/AutoConvert: modify child_audio_format, not in_audio_format
This prevented using the "volume_normalization" feature with some
codecs (e.g. mp3), because the normalization code requires 16 bit
samples.  If the codec happens to deliver formats other than S16, the
AutoConvert filter succeeds to initialize the conversion filter, but
the returned input audio format was wrong.
2013-11-04 08:00:00 +01:00
Max Kellermann bf2c1f3e9e configure.ac: prepare for 0.18.1 2013-11-04 08:00:00 +01:00
Max Kellermann 8ccd8a008d release v0.18 2013-10-31 00:23:41 +01:00
Max Kellermann 54abeab80b increase default buffer size to 4 MB
2 MB was too small for cross-fading a 24 bit file.  Increasing to 4 MB
is still not too large for weak machines, but is enough for
cross-fading.
2013-10-30 21:46:40 +01:00
Max Kellermann 2aee1b86f3 SongFilter: add special keyword "base"
Restores the features from the previous draft commands "findin" /
"searchin".
2013-10-29 21:13:40 +01:00
Max Kellermann b5fc21b9f4 Revert "command: new commands "findin", "searchin" with base URI"
This reverts commit a577944ab5.

Will be replaced by new options for the old commands "search" and
"find".
2013-10-29 21:13:40 +01:00
Max Kellermann 6859c22b69 SongFilter: "any" does not match file name
According to the protocol documentation, matching the file name was
wrong.  This removes some awkward special-case code.
2013-10-29 20:40:55 +01:00
Max Kellermann 4728735acf decoder/dsf: don't play junk at the end of the "data" chunk 2013-10-28 23:47:25 +01:00
Max Kellermann c37edfd3e9 configure.ac: disable the OS X output plugin by default
There hasn't been a maintainer for this plugin for years.  It may even
fail to build.
2013-10-28 22:25:58 +01:00
Max Kellermann 1ad2475f9e DecoderControl: convert mutex and client_cond to a reference
Share the Mutex between the DecoderThread and the PlayerThread.  This
simplifies synchronization between the two threads and fixes a freeze
problem: while the PlayerThread waits for the DeocderThread, it cannot
answer requests from the main thread, and the main thread will block
until the DecoderThread finishes.
2013-10-28 10:22:05 +01:00
Max Kellermann a577944ab5 command: new commands "findin", "searchin" with base URI 2013-10-26 16:13:35 +02:00
Max Kellermann 17dc638c18 command: new command "readcomments" lists arbitrary file tags 2013-10-25 19:35:40 +02:00
Max Kellermann e17da71a70 output/httpd: support HEAD requests 2013-10-25 00:32:48 +02:00
Max Kellermann 961c7d0f78 OtherCommands: re-add the "volume" command
This command was removed by commit 206392ad (MPD 0.16), even though it
was been proven useful for some very simple clients.  On request, I
add it to the protocol again.
2013-10-25 00:20:36 +02:00
Sebastian Thorarensen db44a6e948 decoder/modplug: Add "loop_count" parameter
The "loop_count" configuration parameter allows the user to set how
many times a module with backward loops shall loop. "0" (the default)
means a module is not allowed to use backward loops at all. "-1"
enables inifinite looping.
2013-10-19 16:12:17 +02:00
Sebastian Thorarensen b6ac249c3c decoder/mikmod: Add loop configuration parameter
This patch allows the user to configure the mikmod decoder plugin to loop
modules. It adds a configuration parameter to the mikmod decoder called
"loop" which can be "no" (the old behaviour, default) or "yes" to allow
modules to use backward loops.
2013-10-18 14:23:24 +02:00
Max Kellermann 608a98c873 fs/Charset: default filesystem charset is UTF-8
Implement a fast path for UTF-8 which leaves fs_charset empty, and
don't assign a value to fs_charset if there's no configuration.
2013-10-17 22:42:22 +02:00
Max Kellermann 8cf2f52f7a Merge tag 'release-0.17.6' 2013-10-14 21:40:56 +02:00
Max Kellermann 681352ac3b release 0.17.6 2013-10-14 21:15:55 +02:00
Florian Schlichting d9c662d51f decoder/modplug: fix include directory 2013-10-14 21:12:47 +02:00
Max Kellermann ad631d563b stored_playlist: use fs_charset_to_utf8() for URLs 2013-10-14 21:11:20 +02:00
Max Kellermann 7cbaf11dda load_file 2013-10-14 21:00:46 +02:00
Max Kellermann a2ce2447a6 Merge branch 'v0.17.x' 2013-10-01 17:20:38 +02:00
Max Kellermann 9a1076256d mixer/alsa: handle ENODEV
Fixes busy loop when USB sound device gets unplugged (Mantis bug
#3824).
2013-10-01 16:35:27 +02:00
Max Kellermann d397ce68dc prepare 0.17.6 2013-10-01 16:29:54 +02:00
Max Kellermann a446775d80 playlist/lastfm: remove defunct Last.fm support
This plugin has been defunct ever since Last.fm changed their
protocol.  Since there is no volunteer willing to fix the plugin, I'm
removing it now.
2013-09-28 14:01:51 +02:00
Max Kellermann 44faf1080c SongFilter: search for album artist falls back to the artist tag
Implement Mantis ticket 0003646.
2013-09-26 19:25:13 +02:00
Maarten de Vries 08e6d222a2 Listen: Allow tilde paths for socket. 2013-09-12 08:55:45 +02:00
Ales Guzik 3330aa6f6a input/curl: enable https 2013-09-05 11:56:49 +02:00
Max Kellermann 9e715089a4 Commands: new command "toggleoutput" 2013-08-04 23:21:23 +02:00
Max Kellermann 9326ce53ec Merge tag 'release-0.17.5' 2013-08-04 14:36:22 +02:00
Max Kellermann d8217c364a release 0.17.5 2013-08-04 14:21:45 +02:00
Justin Riley 3a34fd181d FfmpegDecoderPlugin: add application/flv to mime types list 2013-08-04 14:20:16 +02:00
Christoph Mende 7ff988275f decoder/mikmod: use MikMod_free() to free the title on libmikmod-3.2
Player_LoadTitle() returns an aligned pointer in libmikmod-3.2 that
cannot be freed with free(). The correct way to do this now is
MikMod_free() which extracts the original pointer from the buffer and
frees that.

Signed-off-by: Christoph Mende <mende.christoph@gmail.com>
2013-08-01 09:30:20 +02:00
Max Kellermann 363050f44c playlist_edit: fix "move" relative to current when there is no current song
Fixes Mantis #3770.
2013-08-01 09:28:03 +02:00
Michael Mair-Keimberger dbe04c4207 configure.ac: detect system "ar" 2013-08-01 09:13:41 +02:00
tsufeki d59a332ef9 commmand: fix URI argument in playlistadd 2013-08-01 08:42:22 +02:00
Max Kellermann 8b2dcf7018 decoder/ffmpeg: require ffmpeg/libav 0.8
Now that even Debian stable has picked up version 0.8, we can safely
make this a requirement, and remove a lot of old cruft.
2013-07-31 01:01:21 +02:00
Max Kellermann 2df2a989af input/soup: plugin removed
This plugin is cumbersome to support, now that MPD is migrating away
from GLib and the GLib event loop.  It has no practical advantages
over the CURL plugin.  Soup requires the bloated GType library.
2013-04-17 21:46:16 +02:00
Max Kellermann e903d00968 output/ffado: remove broken plugin
This plugin has been in MPD for three years, and it has never worked.
Enough!
2013-04-17 00:44:02 +02:00
Max Kellermann cc6c452854 output/mvp: remove obsolete plugin
The hardware is obsolete, and the product does not exist anymore on
the Hauppauge web site.  Let's see if anybody complains about the
removal.
2013-04-17 00:37:30 +02:00
Max Kellermann 9a4c049675 prepare 0.17.5 2013-04-16 23:17:38 +02:00
Max Kellermann dca1115196 StateFile: schedule timer only after a change
Save the state file 2 minutes after the last change.  This reduces the
disruptions by an idle MPD, and MPD can be paged out permanently until
it is used.
2013-04-08 23:11:36 +02:00
Max Kellermann 2c4b998170 Merge tag 'release-0.17.4' 2013-04-08 22:11:42 +02:00
Max Kellermann 0a9c7ff6cf release 0.17.4 2013-04-08 22:00:43 +02:00
Max Kellermann 436335e9a3 player_control: don't emit IDLE_PLAYER before audio format is known
Eliminates one IDLE_PLAYER call in playlist_control, and add two new
ones to player_thread.  Fixes Mantis bug 3636.
2013-04-08 21:31:03 +02:00
Anton Khirnov e0c2c77c2a ffmpeg decoder plugin: do not allocate an AVFrame on stack.
AVFrame must be allocated with avcodec_alloc_frame().
2013-04-05 23:30:47 +02:00
Max Kellermann 8017301de5 Merge branch 'v0.17.x' 2013-02-27 20:00:14 +01:00
Hagen Fritsch 28a60db5aa clock: add missing include 2013-02-27 19:42:35 +01:00
Max Kellermann 214a526945 Merge branch 'v0.17.x' 2013-02-19 09:24:11 +01:00
Jörg Thalheim d5b756413a command: allow to omit END in ranges (START:END)
If END is omitted, mpd should use the highest possible value instead of raising an error.
This partially reverts 52e9cab1c1
2013-02-19 09:23:18 +01:00
Max Kellermann af99176581 output/alsa: workaround for noise after manual song change
Workaround for driver bug observed on the Raspberry Pi, see code
comment for details.
2013-02-04 15:51:32 +01:00
Max Kellermann 96dc0a318a player_thread: implement missing "idle" events on output errors
When all outputs fail, MPD automatically pauses playback, but did not
emit the IDLE_PLAYER event.  Thus, clients were not woken up.  (Mantis
3665)
2013-02-04 10:15:34 +01:00
Max Kellermann 88c17926e4 decoder/mp4ff: delete obsolete plugin
The underlying library has been obsolete for many years.
2013-01-28 21:32:14 +01:00
Max Kellermann 74500eacca Merge branch 'v0.17.x' 2013-01-16 20:05:26 +01:00
Brice Jaglin 1105e61f29 decoder/ffmpeg: support float planar audio 2013-01-16 19:54:54 +01:00
Max Kellermann 3781f6cf39 Merge tag 'release-0.17.3' 2013-01-07 08:46:55 +01:00
Avuton Olrich 227da2377a Modify version string to post-release version 0.17.4~git 2013-01-06 16:47:09 -08:00
Avuton Olrich ffb3a9f526 mpd version 0.17.3 2013-01-06 16:47:09 -08:00
Max Kellermann 6837e5a6a0 Merge branch 'v0.17.x' 2013-01-03 22:53:53 +01:00
Max Kellermann 9761abf3b5 cue_parser: fix CUE files with only one track
Track whether _finish() has been called, and deliver all partial
results then.  Fixes Mantis ticket 0003621.
2013-01-03 21:58:20 +01:00
Max Kellermann 31da4bc566 cue_parser: fix memory leak 2013-01-03 21:02:59 +01:00
Max Kellermann cbdaa1369f Merge branch 'v0.17.x'
Conflicts:
	src/PlaylistSave.cxx
2012-10-05 17:12:44 +02:00
Max Kellermann d4b5699403 decoder/ffmpeg: support planar audio
Implements Mantis feature request 3582.
2012-10-05 16:40:25 +02:00
Max Kellermann e39382dedd decoder/ffmpeg: ignore negative time stamps
Works around assertion failure in decoder_timestamp().
2012-10-05 16:37:07 +02:00
Max Kellermann b8fdb452be decoder/flac: support FLAC files inside archives
Implement the "scan_stream" method that can read tags from any
input_stream object.  This requires a FLAC__IOCallbacks implementation
based on the input_stream API.
2012-10-04 10:37:09 +02:00
Max Kellermann ade0483641 Merge branch 'v0.17.x' 2012-10-02 17:34:03 +02:00
Gregory Smith 03a401e477 OSX: Set mDataByteSize correctly on AudioBuffers during render. 2012-10-02 17:27:52 +02:00
Max Kellermann ccd7104cdc {decoder,encoder}/flac: drop support for libFLAC 1.1 2012-10-02 10:04:44 +02:00
Max Kellermann 9e3f843291 encoder/vorbis: accept floating point input samples
Improves quality by not squeezing 32 bit samples down to 16 bit, and
then back to 32 bit floating point.  Reduces CPU usage by skipping a
conversion step.
2012-10-02 08:39:39 +02:00
Max Kellermann d793b7c03f encoder/opus: new encoder plugin for the Opus codec 2012-10-02 00:45:24 +02:00
Max Kellermann d95e538020 Merge branch 'v0.17.x' 2012-10-02 00:36:05 +02:00
Max Kellermann adbe8c409a output/{recorder,shout}: call encoder_read() in a loop
This is necessary for Ogg packets that span more than one page.
2012-10-02 00:26:40 +02:00
Max Kellermann d34e55c370 output/recorder: fix write() error check
We can only check for negative values if the variable is signed.
2012-10-02 00:20:42 +02:00
Max Kellermann c7748fedab output/shout: fix memory leak in error handler 2012-10-02 00:17:27 +02:00
Max Kellermann b4d8cb7bc1 Merge tag 'release-0.17.2' 2012-10-01 11:06:54 +02:00
Avuton Olrich f672e4016f Modify version string to post-release version 0.17.3~git 2012-09-30 03:27:38 -07:00
Avuton Olrich 76e3dec723 mpd version 0.17.2 2012-09-30 03:27:38 -07:00
Max Kellermann 9cdbde4f5e output: new option "tags" may be used to disable sending tags
Implements Mantis ticket 0003340.
2012-09-25 23:31:07 +02:00
Max Kellermann f9147a0706 NEWS: mention the AdPlug decoder 2012-09-25 23:31:07 +02:00
Simon Hosie 5e9ccdec63 decoder/vorbis: skip 16 bit quantisation, provide float samples
Internally the vorbis (non-Tremor) decoder is working in floating
point, and it's not really necessary to cut the output back to 16-bit
if the soundcard or OS supports higher resolution.

The decoder can be trivially modified to bypass its internal
quantisation and produce floating-point output, and a separate
quantisation can be used as appropriate to the platform.
2012-09-25 21:27:50 +02:00
Max Kellermann e2a574e2a0 Merge branch 'v0.17.x'
Conflicts:
	src/locate.c
2012-09-25 11:39:01 +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 1536b5a9d6 src/decoder/opus: new decoder plugin for the Opus codec
Using libopus and libogg.
2012-09-05 23:01:17 +02:00
Max Kellermann 2a4c799471 Merge branch 'v0.17.x' 2012-09-04 11:28:13 +02:00
Max Kellermann 27535a7f78 update_walk: fix unsafe readlink() usage 2012-09-03 22:41:04 +02:00
Max Kellermann def21cc87e Merge branch 'v0.17.x'
Conflicts:
	src/queue_save.c
2012-08-25 10:28:33 +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 5ad21d7e98 queue_save: save song priorities 2012-08-21 19:17:14 +02:00
Max Kellermann f45616e5f6 Merge branch 'v0.17.x' 2012-08-16 00:04:03 +02:00
Max Kellermann ef5125f8f4 playlist_print: fix memory leak 2012-08-16 00:01:01 +02:00
Max Kellermann 20695ef369 playlist_song: fix user-after-free bug 2012-08-16 00:00:21 +02:00
Max Kellermann 8422402c39 Merge branch 'v0.17.x'
Conflicts:
	src/player_thread.c
2012-08-15 22:56:11 +02:00
Max Kellermann 2276e7677b mapper: fix potential crash in file permission check 2012-08-15 22:44:13 +02:00
Max Kellermann efccb6ac82 Merge branch 'v0.17.x' 2012-08-15 01:04:34 +02:00
Max Kellermann 4a993cd79e decoder/fluidsynth: add "sample_rate" setting 2012-08-15 00:57:32 +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 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