aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-03-07decoder_internal: don't push empty chunk into pipeMax Kellermann1-1/+6
When the decoder chunk is empty in decoder_flush_chunk(), don't push it into the music pipe - return it to the music buffer instead. An empty chunk in the pipe wastes resources for no advantage.
2009-03-07chunk: added music_chunk_is_empty()Max Kellermann1-0/+6
2009-03-07music_pipe: poison music_chunk.nextMax Kellermann1-0/+5
The value of music_chunk.next is undefined for a chunk returned by music_pipe_shift(). For more pedantic debugging, poison the reference before returning the chunk.
2009-03-07music_pipe: added music_pipe_peek()Max Kellermann2-0/+13
music_pipe_peek() is similar to music_pipe_shift(), but doesn't remove the chunk. This allows it to be used with a "const" music_pipe.
2009-03-07output_all: audio_output_all_update() returns boolMax Kellermann3-6/+19
audio_output_all_update() returns true when there is at least open output device which is open.
2009-03-07pulse_mixer: allow mpd to reconnect to the pulse mixerDavid Guibert1-29/+24
This patch follows the commit 21bb10f4b. >From Max Kellermann: > I removed the daemonization changes in main.c. Please explain why you > changed that. If you need it for some reason, make that a separate > patch with a good description of your rationale. > That's the biggest flaw of your code: it opens the mixer device in the > init() method, while the open() method is empty. When the pulse > daemon is not available (either during MPD startup or when it dies > while MPD runs), the plugin will not even attempt to reconnect to > pulse. Please move the code to the open() method, to make that work. I changed the daemonize call as the fork losts the connection to the pulse server. According to your remark, the init() method should be moved to the open() ones. With the modification, mpd is able to reconnect the pulse mixer after restarting the pulseaudio daemon. Signed-off-by: David Guibert <david.guibert@gmail.com> Signed-off-by: Max Kellermann <max@duempel.org>
2009-03-07pulse_mixer: added missing copyright headerMax Kellermann1-0/+18
2009-03-07pulse_mixer: added GLib log domainMax Kellermann1-14/+16
Shorten some log messages, let GLib add the "pulse_mixer" prefix.
2009-03-07pulse: clean up includesMax Kellermann1-2/+4
Don't include output_api.h - this is not an output plugin. Added missing explicit conf.h and string.h includes.
2009-03-07pulse mixerDavid Guibert3-0/+294
This patch introduces the mixer for the pulse output. Technically speaking, the pulse index is needed to get or set the volume. You must define callback fonctions to get this index since the pulse output in mpd is done using the simpe api. The pulse simple api does not provide the index of the newly defined output. So callback fonctions are associated to the pulse context. The list of all the sink input is then retreived. Then we select the name of the mpd pulse output and control its volume by its associated index number. Signed-off-by: Patrice Linel <patnathanael@gmail.com> Signed-off-by: David Guibert <david.guibert@gmail.com> [mk: fixed whitespace errors and broke long lines; removed daemonization changes from main.c]
2009-03-07mixer: check for init() failuresMax Kellermann1-1/+1
When the init() method of a mixer plugin fails, mixer_new() dereferences the NULL pointer.
2009-03-06curl: reverse GLIB_CHECK_VERSION()Max Kellermann1-1/+1
The GLIB_CHECK_VERSION() macro was used improperly, which broke build on GLib < 2.14. Add a "!" for negation.
2009-03-06socket_util: check if IN6_IS_ADDR_V4MAPPED is definedMax Kellermann1-2/+2
On some systems, the macro IN6_IS_ADDR_V4MAPPED() is not available. Don't try to convert IPv6 to their IPV4 equivalents in this case.
2009-03-06pipe: added music_buffer, rewrite music_pipeMax Kellermann14-401/+415
Turn the music_pipe into a simple music_chunk queue. The music_chunk allocation code is moved to music_buffer, and is now managed with a linked list instead of a ring buffer. Two separate music_pipe objects are used by the decoder for the "current" and the "next" song, which greatly simplifies the cross-fading code.
2009-03-06music_pipe: added music_pipe_push()Max Kellermann6-128/+196
Added music_pipe_allocate(), music_pipe_push() and music_pipe_cancel(). Those functions allow the caller (decoder thread in this case) to do its own chunk management. The functions music_pipe_flush() and music_pipe_tag() can now be removed.
2009-03-06playlist_control: fix requeue after seekMax Kellermann1-3/+3
The queue update after a seek was wrong: the queued song is cleared by a successful seek. This caused queue/cross-fading problems after a seek.
2009-03-05flac: explicitly check for STOP commandMax Kellermann1-1/+2
After the decoder command was obtained, don't wait until libflac detects EOF (as a side effect), quit the decoder immediately. This check was missing completely.
2009-03-05flac: check command after flac_process_single() failureMax Kellermann1-3/+6
When the MPD core sends the decoder a command while flac_process_single() is executed, this function fails. Abort the decoder only if not seeking. This fixes a seeking bug.
2009-03-05music_chunk: added music_chunk_write(), music_chunk_expand()Max Kellermann3-16/+83
Moved some code from music_pipe_write() and music_pipe_expand(). Only music_chunk.c should access the music_chunk internals.
2009-03-03music_pipe: moved struct music_chunk to chunk.hMax Kellermann7-44/+101
2009-03-03alsa: log period and buffer sizeMax Kellermann1-0/+3
Log the real period and buffer size. This might be useful when debugging xruns. Note that the same information is available in /proc/asound/card*/pcm*p/sub*/hw_params
2009-03-03ls: Print output of supported uri to fp rather than stdout.Avuton Olrich1-1/+1
Since there are no other callers than stdout, this wouldn't be a problem, but since there maybe in the future go ahead and fix it.
2009-03-03ffmpeg: fix version comparision for av_get_bits_per_sample_format() ↵Viliam Mateicka1-1/+1
implemetation function was implemented in the version we are comparing to so there must be higher or equal
2009-03-03ffmpeg: support for new metadata apiViliam Mateicka1-0/+39
2009-03-03cmdline: Print available protocols when --version is run.Avuton Olrich3-0/+31
2009-03-03alsa: fall back to 32 bit samples if 16 is not supportedMax Kellermann1-1/+2
There are a few high-end devices (e.g. ICE1724) which cannot even play 16 bit audio. Try the 32 bit fallback, which we already implemented for 24 bit.
2009-03-03Add sticker list command.Eric Wollesen5-4/+138
[mk: merged memory leak patch; fixed indentation (tabs); fixed documentation typo]
2009-03-02input_lastfm: new input plugin for last.fm radioMax Kellermann4-0/+260
The lastfm input plugin enables MPD to play lastfm:// URLs. This plugin is not complete yet: it plays only the first song in the last.fm playlist, and the playlist parser isn't even implemented properly.
2009-03-02input: pass config_param to input_plugin.init()Max Kellermann8-7/+50
Allow input plugins to configure with an "input" block in mpd.conf. Also allow the user to disable a plugin completely.
2009-03-02input_plugin: added methods init(), finish()Max Kellermann4-13/+35
Instead of hard-coding the plugin global initialization in input_stream_global_init(), make it walk the plugin list and initialize all plugins.
2009-03-02input: moved plugins to ./src/input/Max Kellermann9-8/+8
Create a sub directory for input plugins.
2009-03-02input_stream: moved struct input_plugin to input_plugin.hMax Kellermann11-20/+49
Start to separate private from public input_stream API.
2009-03-02ffmpeg: use ffmpeg's sampleformat for output formatViliam Mateicka1-1/+6
2009-03-02fixing unused parameter warningViliam Mateicka1-1/+1
2009-03-02fixing unsigned to signed comparisionViliam Mateicka2-2/+2
[mk: cast off_t to uint32_t; same fix for aiff.c]
2009-03-02mixer: adding code to optionally disable all hw mixersViliam Mateicka3-3/+33
2009-03-02tag_id3: parse ID3 tags in AIFF filesMax Kellermann4-5/+149
Added a small AIFF parser library, code copied from the RIFF parser (big-endian integers). Look for an "ID3" chunk, and let libid3tag parse it.
2009-03-02tag_id3: parse ID3 tags in RIFF/WAV filesMax Kellermann3-0/+176
Added a small RIFF parser library. Look for an "id3" chunk, and let libid3tag parse it.
2009-03-02alsa: fall back to 32 bit samples if 24 is not supportedMax Kellermann1-0/+8
Some sound chips/drivers (e.g. Intel HDA) don't support 24 bit samples, they want to get 32 bit instead. Now that MPD's PCM library supports 32 bit, add a 32 bit fallback when 24 bit is not supported.
2009-03-02pcm_convert: added 32 bit supportMax Kellermann1-0/+42
All PCM sub libraries have 32 bit support now. Add support to the glue function pcm_convert().
2009-03-02pcm_format: added conversion from 32 bitMax Kellermann1-0/+37
Support converting 32 bit samples to any other supported sample format.
2009-03-02pcm_format: added pcm_convert_to_32()Max Kellermann2-0/+90
Added code to convert all other sample formats to 32 bit.
2009-03-02pcm_dither: added pcm_dither_32_to_16()Max Kellermann2-0/+20
For 32 bit dithering, reuse the 24 bit dithering code, but apply a 8 bit right shift first.
2009-03-02pcm_dither: renamed struct pcm_dither_24 to struct pcm_ditherMax Kellermann5-12/+11
There is nothing 24 bit specific in the pcm_dither_24 struct. Since we want to reuse the struct for 32 bit dithering, let's drop the "_24" suffix from the struct name.
2009-03-02pcm_resample: use 24 bit resampling code for 32 bit samplesMax Kellermann3-4/+31
Resampling 32 bit samples is the same as resampling 24 bit samples - both are stored in the int32_t type.
2009-03-02pcm_channels: added implementation for 32 bit samplesMax Kellermann2-0/+86
Some 24 bit code can be reused. The 32 bit variant has to use 64 bit integers, because 32 bit integers could overflow. This may be a performance hit on 32 bit CPUs.
2009-03-02audio_format: allow 32 bit samplesMax Kellermann1-1/+1
This is the first patch in a series to enable 32 bit audio samples in MPD. 32 bit samples are more tricky than 24 bit samples, because the integer may overflow when you operate on a sample.
2009-03-02audio_format: allow up to 8 channelsMax Kellermann1-1/+1
audio_valid_sample_format() verifies the number of channels. Let's just say up to 8 channels is allowed (which is possible with some consumer sound chips). I don't know if there are bigger cards, and since I cannot test it, I'll limit it to 8 for now.
2009-03-02directory: directory_load() returns GErrorMax Kellermann3-19/+53
Do error reporting with GLib's GError library in this library, too.
2009-03-02database: db_load() returns GErrorMax Kellermann3-17/+48
Do error reporting with GLib's GError library.