aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* alsa: fall back to 32 bit samples if 24 is not supportedMax Kellermann2009-03-021-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.
* pcm_convert: added 32 bit supportMax Kellermann2009-03-021-0/+42
| | | | | All PCM sub libraries have 32 bit support now. Add support to the glue function pcm_convert().
* pcm_format: added conversion from 32 bitMax Kellermann2009-03-021-0/+37
| | | | | Support converting 32 bit samples to any other supported sample format.
* pcm_format: added pcm_convert_to_32()Max Kellermann2009-03-022-0/+90
| | | | Added code to convert all other sample formats to 32 bit.
* pcm_dither: added pcm_dither_32_to_16()Max Kellermann2009-03-022-0/+20
| | | | | For 32 bit dithering, reuse the 24 bit dithering code, but apply a 8 bit right shift first.
* pcm_dither: renamed struct pcm_dither_24 to struct pcm_ditherMax Kellermann2009-03-025-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.
* pcm_resample: use 24 bit resampling code for 32 bit samplesMax Kellermann2009-03-023-4/+31
| | | | | Resampling 32 bit samples is the same as resampling 24 bit samples - both are stored in the int32_t type.
* pcm_channels: added implementation for 32 bit samplesMax Kellermann2009-03-022-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.
* audio_format: allow 32 bit samplesMax Kellermann2009-03-021-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.
* audio_format: allow up to 8 channelsMax Kellermann2009-03-021-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.
* directory: directory_load() returns GErrorMax Kellermann2009-03-023-19/+53
| | | | Do error reporting with GLib's GError library in this library, too.
* database: db_load() returns GErrorMax Kellermann2009-03-023-17/+48
| | | | Do error reporting with GLib's GError library.
* database: no CamelCaseMax Kellermann2009-03-021-16/+15
| | | | Renamed a bunch of variables.
* pcm_volume: return boolMax Kellermann2009-03-023-11/+21
| | | | Don't abort MPD when a sample format is not supported by pcm_volume().
* pcm_volume: no CamelCaseMax Kellermann2009-03-011-5/+5
|
* audio_parser: added API documentationMax Kellermann2009-03-011-2/+12
|
* crossfade: fix doxygen tagMax Kellermann2009-03-011-1/+1
|
* flac: parse stream tagsMax Kellermann2009-03-012-2/+19
| | | | | Parse the vorbis comments in libflac's metadata_callback and pass them as tag struct to the decoder API.
* listen: return GError on "unix path too long"Max Kellermann2009-03-011-2/+5
| | | | | When the unix domain socket path is too long, don't abort with g_error().
* listen: removed unused macro BINDERROR()Max Kellermann2009-03-011-6/+0
|
* output_init: removed getBlockParam()Max Kellermann2009-03-011-18/+20
| | | | Use config_get_block_string() and manual GError handling instead.
* output_init: return GError on errorMax Kellermann2009-03-013-32/+28
| | | | Do error handling with GError instead of aborting with g_error().
* output_init: moved code to audio_output_detect()Max Kellermann2009-03-011-16/+26
|
* audiofile: added 24 bit supportMax Kellermann2009-03-011-1/+8
| | | | | Don't hard code the "bits" parameter to 16. Try to use the input's sample format, if possible.
* output: removed duplicate debug messages from pluginsMax Kellermann2009-03-014-16/+0
| | | | | The MPD core logs the audio format of all audio outputs. Remove the duplicate message from the plugins.
* output_thread: log audio format in a debug messageMax Kellermann2009-03-011-0/+16
| | | | | To aid debugging, print the audio format of the output plugin in a debug message, and print information about PCM conversion.
* decoder_api: log audio format in a debug messageMax Kellermann2009-03-011-0/+14
| | | | | To aid debugging, print the audio format of the decoder plugin in a debug message, and print information about PCM conversion.
* listen: fix windows specific codeMax Kellermann2009-03-011-5/+8
| | | | | During the listen_add_host() API transition, the windows code wasn't tested, and several removed arguments are still in use there.
* socket_util: include ws2tcpip.h for getnameinfo()Max Kellermann2009-03-011-0/+4
| | | | Windows doesn't have the standard headers sys/socket.h and netdb.h.
* daemon: disable daemonize_detach() on WIN32Max Kellermann2009-03-011-1/+3
|
* tag: convert ignore_tag_items to a bool arrayMax Kellermann2009-03-013-8/+8
|
* tag: added API documentationMax Kellermann2009-03-011-0/+65
|
* tag: no CamelCaseMax Kellermann2009-03-014-15/+15
| | | | Renamed functions and variables.
* use GLIB_CHECK_VERSION()Max Kellermann2009-03-013-4/+4
| | | | | Use GLIB_CHECK_VERSION() instead of manually checking GLIB_MAJOR_VERSION, ...
* volume: throttle access to hardware mixersMax Kellermann2009-02-281-1/+24
| | | | | | On some hardware, reading the mixer value from hardware is an expensive operation, and MPD has to do it for every client. Throttle access to the hardware, cache the result for one second.
* output: use GTimer instead of time_t for reopen after failureMax Kellermann2009-02-286-16/+35
| | | | | | | time() is not a monotonic timer, and MPD might get confused by clock skews. clock_gettime() provides a monotonic clock, but is not portable to non-POSIX systems (i.e. Windows). This patch uses GLib's GTimer API, which aims to be portable.
* output: added option to disable audio outputs by defaultMax Kellermann2009-02-281-1/+1
| | | | | The option "enabled" is on by default. If you specify "enabled no" in an audio_output section, then this device is disabled by default.
* audiofile: removed duplicate decoder_get_command() callsMax Kellermann2009-02-281-12/+16
| | | | | decoder_data() returns a decoder_command, no need to call decoder_get_command() twice after decoder_command().
* audiofile: refuse to play non-seekable filesMax Kellermann2009-02-281-0/+5
| | | | | | | | | If an input_stream is not seekable, libaudiofile fails to play at all: Audio File Library: unrecognized audio file format [error 0] Since we know in advance whether the input_stream is seekable, just refuse to play on a non-seekable stream.
* audiofile: no CamelCaseMax Kellermann2009-02-281-9/+9
| | | | Renamed several variables and a function.
* tag: moved APE code to tag_ape.cMax Kellermann2009-02-285-122/+177
|
* pipe: new audio output plugin which runs a commandMichal Nazarewicz2009-02-282-0/+114
| | | | [mk: adapted to new output plugin API]
* decoder_list: print decoder list with suffixesMax Kellermann2009-02-283-28/+11
| | | | | Print the list of suffixes supported by each decoder, instead of prining a list of all suffixes of all decoders with duplicates.
* listen: allocate sockaddr_storage struct for accept()Max Kellermann2009-02-281-4/+5
| | | | | | The generic sockaddr struct is too small for some addresses. For accept(), we have to allocate a sockaddr_storage struct on the stack, which is large enough for all addresses.
* client: use sockaddr_to_string()Max Kellermann2009-02-283-47/+9
| | | | | Removed the sockaddr_to_tmp_string() hack, use the new function sockaddr_to_string() instead.
* socket_util: unpack V4MAPPED addressesMax Kellermann2009-02-281-0/+20
| | | | | Unpack IPv4 addresses which are packed inside an IPv6 address, i.e. return "127.0.0.1" rather than "::ffff:127.0.0.1".
* socket_util: added function sockaddr_to_string()Max Kellermann2009-02-282-0/+101
| | | | | | Create the socket_util.c library, the first function is sockaddr_to_string(): it converts a sockaddr struct to a string containing the IP address in a human-readable form.
* update: use G_FILE_TEST_IS_REGULAR for archive filesMax Kellermann2009-02-281-1/+6
| | | | | | | | | When checking whether database entries have been deleted, don't check if an archive file is a directory (G_FILE_TEST_IS_DIR), use G_FILE_TEST_IS_REGULAR for this case instead. To determine if a "struct directory" is an archive, check for device==DEVICE_INARCHIVE. This is always false after loading the database, so this patch is not complete yet.
* update: don't update unchanged archiveMax Kellermann2009-02-281-1/+6
| | | | | When the mtime of an archive time hasn't changed, don't update it again.
* directory: added "mtime" propertyMax Kellermann2009-02-283-3/+17
| | | | | | Remember the modification time of each directory. This is important for archives (which are virtual directories right now), but may also be useful for an automatic update mechanism.