| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and
MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.
|
|
|
|
| |
For int16_t.
|
|
|
|
|
|
| |
When decoder->timestamp is calculated, the PCM data is already
converted to out_audio_format; using in_audio_format may cause funny
speedups/slowdowns.
|
|
|
|
|
|
|
| |
When handle_update() was modified to use uri_safe_local(), suddently
"mpc update ''" and "mpc update '/'" stopped working, because both are
not a "safe" local URI. This patch adds a special case for these, to
retain backwards compatibility.
|
|
|
|
|
|
|
| |
Did you ever accidently click "stop" while feeding a radio station?
This option sets the output device to "pause" to disable the "close"
method. It falls back to "pause" then, which is specific to the
plugin. Some plugins implement it by feeding silence.
|
|
|
|
|
| |
If we're not doing this, and a new song is played after pause ends,
then you will hear the rest of the previous song.
|
|
|
|
|
| |
Always use the same number of samples from each channel's ring
buffer. This ensures that all channels are kept in sync.
|
| |
|
|
|
|
| |
Pass everything to the GLib logging library. No direct stderr access.
|
|
|
|
| |
The pointer is invalid if av_open_input_file() fails.
|
|
|
|
|
|
| |
This is a very basic check, which only ensures that the path does not
begin with a slash, doesn't have double slashes and the special names
"." and ".." are forbidden.
|
|
|
|
|
| |
Dots at the beginning of an URI segment are ok, as long as the special
names "." and ".." are not used.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add an option for each audio output which enables the use of the
hardware mixer, instead of the software volume code.
This is hardware specific, and assumes linear volume control. This is
not the case for hardware mixers which were tested, making this patch
somewhat useless, but we will use it to experiment with the settings,
to find a good solution.
|
| |
|
|
|
|
|
|
|
| |
Apply the replay gain in the output thread. This means a new setting
will be active instantly, without going through the whole music pipe.
And we might have different replay gain settings for each audio output
device.
|
|
|
|
|
|
| |
Don't allocate each replay_gain_info object on the heap. Those
objects who held a pointer now store a full replay_gain_info object.
This reduces the number of allocations and heap fragmentation.
|
|
|
|
|
|
|
|
|
| |
The previous patch not only moved code, it also changed the check.
Negative gain values seem to be valid after all, there just was the
"magic" value 0.0 which means "not available". This patch changes the
"magic" value to "INFINITY", and uses the C99 function isinf() to
check. It might have been a better idea to use "NAN", but the "NAN"
macro is a GNU extension.
|
|
|
|
|
| |
Moved (and renamed) the function calc_replay_gain_scale() to
replay_gain_info.c.
|
|
|
|
| |
This function determines whether replay gain data is available.
|
| |
|
|
|
|
| |
Same for "listplaylistinfo".
|
| |
|
| |
|
|
|
|
| |
The only "return" statement always returns 0.
|
| |
|
| |
|
| |
|
|
|
|
| |
Pass the current URI to wavpack_open_wvc().
|
| |
|
| |
|
|
|
|
| |
Don't use the function ffmpeg_helper(), don't initialize the codec.
|
|
|
|
| |
Fix a memory leak in some code paths.
|
|
|
|
| |
Use input_stream.uri.
|
| |
|
|
|
|
| |
All close() implementations must call this method.
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
Makefile.am
NEWS
configure.ac
src/decoder/ffmpeg_decoder_plugin.c
src/decoder_thread.c
|
| |
| |
| |
| | |
Taken from the ffmpeg sources.
|
| |
| |
| |
| |
| |
| |
| | |
To allow libavformat to detect the format of the input file, append
the suffix of the input file to the URL of the virtual stream. This
specifically enables the "shorten" codec, which is supported by
libavformat/raw.c, detected only by the suffix.
|
| |
| |
| |
| |
| | |
Check consume mode in queue_next_order(), because the current song
would be deleted as soon as it's finished; it cannot be played again.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The patch "input/file: don't fall back to parent directory" introduced
a regression: when trying to play a CUE track, decoder_run_song()
tries to open the file as a stream first, but this fails, because the
path is virtual.
This patch fixes decoder_run_song() (instead of reverting the previous
patch) to accept input_stream_open() failures if the song is a local
file. It passes the responsibility to handle non-existing files to
the decoder's file_decode() method.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes a regression in the patch "return multiple tag values per
song": even when the song has values for the specified tag type, the
empty string gets added to the set, because the "return" was removed.
This patch adds a flag which remembers whether at least one value was
found.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When all plugins have failed, MPD used to fall back to the "mad"
decoder plugin, to handle those radio streams without a Content-Type
response header. This however leads to unexpected results (garbage
being played) when the stream isn't really mp3. Since we care little
about "bad" streams, we shouldn't have hacks which have bad side
effects.
Let's get rid of this hack now! Only try to "mad" plugin if there was
no match at all (Content-Type, path suffix) and no other plugin has
been tried.
|
| |
| |
| |
| | |
Manage a linked list of plugins which were already tried.
|
| | |
|
| |
| |
| |
| | |
Use the correct parameter name.
|
| |
| |
| |
| |
| | |
Only delete the newline characters (\n and optionally \r). This
allows the database file to store file names with trailing whitespace.
|
| |
| |
| |
| |
| |
| |
| |
| | |
When enabling the pulse device fails, clear po->mainloop after
pa_threaded_mainloop_free() has finished. This is important for the
assertions.
Two wrong g_free() calls were also removed.
|
| | |
|
| | |
|