Commit Graph

15575 Commits

Author SHA1 Message Date
Arsen Arsenović 35dbc1a90c mixer,output: prevent setting volume before outputs are really enabled
Previous versions of MPD would call SetVolume on enabled outputs before
they are ready, causing all of MPD to crash. Checking the really_enabled
flag prevents this, though it also prevents setting volume before the
player starts.

Before (with the PipeWire output):
  [i] ~$ mpc clear
  volume: 81%   repeat: off   random: off   single: off   consume: off
  [i] ~$ systemctl --user restart mpd.service
  [i] ~$ mpc volume 100
  MPD error: Connection closed by the server
  [i] ~ 1 $

After:
  [i] ~$ # mpd is freshly started w/o anything in the queue
  [i] ~$ mpc
  volume:100%   repeat: off   random: off   single: off   consume: off
  [i] ~$ mpc volume 80
  MPD error: problems setting volume
  [i] ~ 1 $ mpc
  volume:100%   repeat: off   random: off   single: off   consume: off
  [i] ~$
2022-04-26 17:45:29 +02:00
Arsen Arsenović c7a4355153 outputs/pipewire: fix ParamChanged incorrectly setting volume
Previous versions of MPD would, on parameter change, set the PipeWire
volume before clearing the restore_volume flag, causing the call to
short circuit and do nothing. Instead, clear the flag before the call.
2022-04-26 17:44:19 +02:00
Max Kellermann 33a84a8ca2 output/shout: use shout_set_metadata_utf8() 2022-04-26 17:41:21 +02:00
Max Kellermann 1d04490ed3 output/shout: use shout_set_content_format() 2022-04-26 17:38:43 +02:00
Max Kellermann 4a30c2d79c output/shout: use shout_set_meta() 2022-04-26 17:24:49 +02:00
Max Kellermann 83072d6b9c output/shout: pass reference to Setup() 2022-04-26 16:49:18 +02:00
Max Kellermann c779fc37eb output/shout: declare minimum version 2.4.0
This version was released 7 years ago, and it's reasonable to require
at least this version.
2022-04-26 16:46:36 +02:00
Max Kellermann e08c13ad7e output/shout: add "noexcept" 2022-04-26 15:57:03 +02:00
Max Kellermann 2c82a6b2e0 output/shout: handle shout_metadata_add() errors
Fixes -Wunused-result
2022-04-26 15:56:55 +02:00
Andreas Ziegler ee39af3419 fix typo in comment 2022-04-24 04:14:17 +00:00
aeolio 3882a5a263 src/lib/icu: fix iconv() detection when libiconv is installed 2022-04-20 16:10:39 +02:00
Max Kellermann a360475c7b Merge branch 'v0.23.x' 2022-03-26 06:49:51 +01:00
Vitaly Ostrosablin ac06088948 Make volume changes to apply to disabled software mixers.
Move audio output state check ahead of mixer check and force volume
applying even for disabled software mixed outputs.

This fixes incorrect software mixer volume that used to occur when
volume was changed while output being disabled.

This is easily reproduced with following sequence of commands on
multi-output software mixed MPD setup.

 mpc volume 38; mpc disable 3; mpc volume 88; mpc enable 3

On current MPD, following commands would result in output 3 playing at
volume 38, while all other enabled outputs would play at volume
88. Moreover, global volume would display average of outputs real
volumes. In my case, it's 75.

After applying this patch, following commands would produce expected
behavior. All outputs play at expected (88) volume. And volume is
correctly displayed as 88.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1423

Signed-off-by: Vitaly Ostrosablin tmp6154@yandex.ru


Signed-off-by: Vitaly Ostrosablin <tmp6154@yandex.ru>
2022-03-26 06:29:18 +01:00
Max Kellermann a757eebfbb decoder/OggSyncState: allow skipping up to 64 kB after seek
This is more of what we did in commit 70bd35abe2 because it turns
out there are Ogg-Opus files with pages larger than 40 kB.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1487
2022-03-16 16:54:50 +01:00
Tim Sweet 3a3f605a56 decoder/opus: Implement bitrate calculation 2022-03-15 10:34:23 +01:00
Max Kellermann 407fa2720a Merge tag 'v0.23.6'
release v0.23.6
2022-03-14 18:58:47 +01:00
Max Kellermann 2aed7378cc TagAny: support CUE tracks
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1482
2022-03-14 18:42:31 +01:00
Max Kellermann 71cd6e6248 lib/xiph/meson.build: define FLAC__NO_DLL for static libFLAC build (Windows)
In libFLAC 0.3.4 (commit c9530118a4), the "dllimport" check has been
changed from "_MSC_VER" to "_WIN32", and now the MPD build is affected
by it.

Defining FLAC__NO_DLL disables the use of "dllimport", which allows
linking properly to the static libFLAC build.
2022-03-14 15:08:59 +01:00
Max Kellermann 603bbe0afd python/build/libs.py: update libnfs to 5.0.1 2022-03-14 14:52:24 +01:00
Richard Schorrig aeaef85507 WasapiOutputPlugin pause bug fix
Wasapi output plugin won't start playing after being paused

The cause is that the scope guard in the WASAPI work thread
(WasapiOutputPlugin.cxx, function WasapiOutputThread::Work(), in the
while (true) loop) is set up too 'late' in the execution. There is one
condition ("if (data_in_frames >= buffer_size_in_frames)") when it is
hit, the loop will continue without executing the scope guard. This
scope guard is responsible for emptying the buffer again, and if the
buffer is not emptied, the above mentioned condition will stay true.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1451
2022-03-14 14:26:00 +01:00
nick black ebae25d175 plugins/FfmpegIO: include libavutil/mem.h
ffmpeg from current git master no longer exposes
av_malloc() nor av_free() through other included
headers. directly include libavutil/mem.h to fix
compilation with (as-yet-unreleased) ffmpeg.
2022-03-14 14:11:31 +01:00
jcorporation 5ad1a01d7a Remove bmp, tiff and add webp for coverimage filenames
- supporting bmp and tiff seems outdated
- webp is more widely used for coverimages
2022-03-14 14:09:23 +01:00
Max Kellermann 8f84e1befd decoder/plugins/FfmpegIo: return AVERROR_EOF at end of file
This part of the AVIOContext API is not documented :-(

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1448
2022-03-14 14:00:28 +01:00
Max Kellermann 7293b32025 util/HexFormat: faster implementation without snprintf() 2022-03-14 12:18:52 +01:00
Max Kellermann fed8f12863 input/plugins/QobuzClient: pass std::string_view to QueryStringBuilder() 2022-03-14 12:11:46 +01:00
Max Kellermann 9975905faf output/PipeWire: initialize field "stream" in Open()
Must be initialized for the check in SetVolume().
2022-03-09 14:29:46 +01:00
Max Kellermann 8e99448819 lib/curl/Headers: make the comparison type "transparent" 2022-02-14 18:19:28 +01:00
Max Kellermann 1e548fb6e3 lib/curl/Headers: central type definition for the header map 2022-02-14 18:19:05 +01:00
Max Kellermann fdc0329e64 archive/List: add option to disable archive plugins in mpd.conf
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1384
2022-02-14 17:54:21 +01:00
Max Kellermann d3db0400b0 archive/List: convert pointer to reference 2022-02-14 16:43:44 +01:00
Max Kellermann ab5b6f83fd queue/Print: support sorting by priority 2022-02-14 14:10:33 +01:00
Max Kellermann 2172aaf1ce song/PrioritySongFilter: new filter
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1412
2022-02-14 14:06:37 +01:00
Max Kellermann c68dbc4e5c queue/Queue: add method GetLight() 2022-02-14 13:33:34 +01:00
Max Kellermann ec961f26e9 song/DetachedSong: add API docs 2022-02-14 13:27:52 +01:00
Max Kellermann c3be961ccf queue/Print: implement sorting 2022-02-14 13:07:13 +01:00
Max Kellermann 166ce0da5a db/VHelper: move CompareTags() to tag/Sort.cxx 2022-02-14 12:37:05 +01:00
Max Kellermann edbaea8df2 db/Selection: refactor IsEmpty() to IsFiltered() 2022-02-14 09:21:32 +01:00
Max Kellermann af3a625f64 time/Convert: move GetTimeZoneOffset() to Zone.cxx 2022-02-14 09:21:10 +01:00
Max Kellermann 11d24a583d command/queue: "playlistfind"/"playlistsearch" have a "window" parameter 2022-02-14 09:12:19 +01:00
Max Kellermann e9e3d8c57c queue/Selection: add "window" field 2022-02-14 09:12:18 +01:00
Max Kellermann 5588291a35 queue/Selection: wrap SongFilter in a new struct 2022-02-14 09:12:18 +01:00
Max Kellermann 4b41e766c6 queue/Queue{Save,Print}: remove redundant "Queue" prefix from file name 2022-02-14 09:12:06 +01:00
Max Kellermann ad4cf79cc9 tag: new tag "Mood"
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1435
2022-02-12 07:50:18 +01:00
dgcampea 4f3828237a Fix DSCP LE value
Correct value is 0x04 since we need to account for the 2 ECN bits.
2022-02-02 16:29:01 +00:00
Max Kellermann 946cf25732 Merge branch 'v0.23.x' 2022-01-26 14:44:37 +01:00
Max Kellermann 86e9ed5f3a decoder/opus: fix "readpicture" on Opus files
Don't return early from ScanOpusTags() if only
TagHandler::WantPicture() is set.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1413
2022-01-26 14:43:45 +01:00
Max Kellermann be72d45356 output/httpd: add config option "dscp"
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1401
2022-01-11 20:31:52 +01:00
Max Kellermann 219c416a1e event/ServerSocket: rename ip_tos to dscp_class and support IPv6 2022-01-11 20:31:52 +01:00
Max Kellermann 16f7ec9950 net/DscpParser: new library 2022-01-11 20:31:52 +01:00
Max Kellermann d79bf853b1 output/httpd: make configuration fields const 2022-01-10 22:59:50 +01:00