aboutsummaryrefslogtreecommitdiffstats
path: root/src/Makefile.am (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-10-22renamed storedPlaylist.c to stored_playlist.cMax Kellermann1-2/+2
No CamelCase in file names.
2008-10-17ffmpeg: new decoder pluginViliam Mateicka1-0/+6
[mk: fixed indent, changed copyright statement, added autoconf test, fixed includes paths, fixed 2 gcc warnings, don't close input stream twice]
2008-10-17Makefile.am: don't compile disabled decoder pluginsMax Kellermann1-16/+48
Don't compile the sources of disabled decoder plugins at all, and don't attempt to register these.
2008-10-17Makefile.am: don't compile disabled sourcesMax Kellermann1-2/+8
If a feature is disabled, don't compile the source file at all, disable it completely in Makefile.am instead.
2008-10-16configure.ac: find more libraries with pkg-configMax Kellermann1-0/+6
Detect the following libraries with pkg-config: libshout, libid3tag, libmad.
2008-10-15shout: check for vorbisenc libraryMax Kellermann1-2/+2
The switch from ogg.m4 to pkg-config intentionally disabled libvorbisenc. Enable it when shout_ogg is used.
2008-10-15fixing several imports to work via pkg-configEnrico Weigelt1-3/+10
This patch fixes several imports to use pkg-config instead of certain esoteric tests.
2008-10-15path, tag_id3: use g_convert() instead of charConv.cMax Kellermann1-2/+0
GLib provides an easier API for character set conversion than iconv(). Use g_convert() / g_convert_with_fallback() for all character conversions. We should optimize the path.h API later to return a newly allocated buffer, so we can just pass GLib's return value.
2008-10-15use GLibMax Kellermann1-1/+4
GLib is a nice and portable utility library. We are going to use it from now on, and eliminate a lot of duplicated code from MPD. Why invent the wheel again and again?
2008-10-14command: added command "idle"Max Kellermann1-0/+2
"idle" waits until something noteworthy happens on the server, e.g. song change, playlist modified, database updated. This allows clients to keep up to date without polling.
2008-10-14mapper: new song-to-filesystem mapper libraryMax Kellermann1-0/+2
The mapper library maps directory and song objects to file system paths. With this central library, the code mixture in path.c should be cleaned up, and we will be able to add neat features like aliasing.
2008-10-14playlist: moved code to playlist_save.cMax Kellermann1-0/+2
playlist_print_song() and playlist_print_uri() handle charset conversion and (optional) music directory prefixing.
2008-10-09diretory: moved code to directory_save.c, directory_print.cMax Kellermann1-0/+4
Remove clutter from directory.c. Everything which saves or loads to/from the hard disk goes to directory_save.c, and code which sends directory information to the client is moved into directory_print.c.
2008-10-08directory: moved code to database.cMax Kellermann1-0/+2
Taming the directory.c monster, part II: move the database management stuff to database. directory.c should only contain code which works on directory objects.
2008-10-08directory: moved code to update.cMax Kellermann1-0/+2
The source directory.c mixes several libraries: directory object management, database management and database update, resulting in a 1000+ line monster. Move the whole database update code to update.c.
2008-10-08dirvec: moved code to dirvec.cMax Kellermann1-0/+1
Having all functions as static (non-inline) functions generates GCC warnings, and duplicates binary code across several object files. Most of dirvec's methods are too complex for becoming inline functions. Move them all to dirvec.c and publish the prototypes in dirvec.h.
2008-10-06autotools: tidy up make distEric Wong1-0/+1
* Add missing headers in Makefile.am * remove mp4ff.dsp (Win32 crap) * Add scripts, m4, bs, autogen.sh to allow for hotfixes by the SCM-challenged. (downloading the source via git is NOT a lightweight operation for everybody).
2008-09-29assume stdint.h and stddef.h are availableMax Kellermann1-1/+0
Since we use a C99 compiler now, we can assert that the C99 standard headers are available, no need for complicated compile time checks. Kill mpd_types.h.
2008-09-29directory: replace DirectoryList with dirvecEric Wong1-0/+1
Small memory reduction compared to songvec since most users have much fewer dirs than songs, but still nice to have.
2008-09-24output: make "struct audio_output" opaque for output pluginsMax Kellermann1-0/+1
We have eliminated direct accesses to the audio_output struct from the all output plugins. Make it opaque for them, and move its real declaration to output_internal.h, similar to decoder_internal.h. Pass the opaque structure to plugin.init() only, which will return the plugin's data pointer on success, and NULL on failure. This data pointer will be passed to all other methods instead of the audio_output struct.
2008-09-24output: added audio_output_get_name()Max Kellermann1-0/+1
Reduce direct accesses to the audio_output struct from the plugins: this time, eliminate all accesses to audio_output.name. The name is required by some plugins for log messages.
2008-09-24output: one thread per audio outputMax Kellermann1-0/+2
To keep I/O nastiness and latencies away from the core, move the audio output code to a separate thread, one per output. The thread is created on demand, and currently runs until mpd exits.
2008-09-23Replace SongList with struct songvecEric Wong1-0/+2
Our linked-list implementation is wasteful and the SongList isn't modified enough to benefit from being a linked list. So use a more compact array of song pointers which saves ~200K on a library with ~9K songs (on x86-32).
2008-09-12shout: added mp3 encoderEric Wollesen1-0/+1
[mk: moved this patch after "Refactor and cleanup of shout Ogg and MP3 audio outputs". The original commit message follows, although it is outdated:] Creation of shout_mp3 audio output plugin. Basically I just copied the existing shout plugin and replaced ogg with lame. Uses lame for mp3 encoding. Next step is to pull common functionality out of each shout plugin and share it between them. Configuration options for "shout_mp3" are the same as for "shout".
2008-09-12shout: moved code to audioOutput_shout_ogg.cMax Kellermann1-0/+1
Begin dividing audioOutput_shout.c: move everything OGG Vorbis related to audioOutput_shout_ogg.c. The header audioOutput_shout.h has to keep its dependency on vorbis/vorbisenc.h, because it needs the vorbis encoder types. For this patch, we have to export several internal functions with generic names to the ABI; these will be removed later when the encoder plugin patches are merged.
2008-09-12shout: moved declarations to audioOutput_shout.hMax Kellermann1-0/+1
Prepare the split of the shout plugin into multiple sources: move all important declarations to audioOutput_shout.h.
2008-09-09output: moved code from audioOutput.c to output_control.cMax Kellermann1-0/+3
Similar to decoder_control.c, output_control.c will provide functions for controlling the output thread (which will be implemented later).
2008-09-08use strset.h instead of tagTracker.hMax Kellermann1-2/+0
With a large music database, the linear string collection in tagTracker.c becomes very slow. We implemented that in a quick'n'dirty fashion when we removed tree.c, and now we rewrite it using the fast hashed string set.
2008-09-08added string set libraryMax Kellermann1-0/+2
"struct strset" is a hashed string set: you can add strings to this library, and it stores them as a set of unique strings. You can get the size of the set, and you can enumerate through all values. This will be used to replace the linear tagTracker library.
2008-09-08output: static audio_output_plugin list as arrayMax Kellermann1-0/+2
Instead of having to register each output plugin, store them statically in an array. This eliminates the need for the List library here, and saves some small allocations during startup.
2008-09-07output: added output_api.hMax Kellermann1-0/+1
Just like decoder_api.h, output_api.h provides the audio output API which is used by the plugins.
2008-09-07removed fdprintf() and client_print()Max Kellermann1-2/+0
All callers of fdprintf() have been converted to client_printf() or fprintf(); it is time to remove this clumsy hack now. We can also remove client_print() which took a file descriptor as parameter.
2008-09-07tag: added buffered versions of the tag_print.c codeMax Kellermann1-0/+2
Currently, when the tag cache is being serialized to hard disk, the stdio buffer is flushed before every song, because tag_print.c performs unbuffered writes on the raw file descriptor. Unfortunately, the fdprintf() API allows buffered I/O only for a client connection by looking up the client pointer owning the file descriptor - for stdio, this is not possible. To re-enable proper stdio buffering, we have to duplicate the tag_print.c code without fprintf() instead of our custom fdprintf() hack. Add this duplicated code to tag_save.c.
2008-09-07song: moved code to song_print.c, song_save.cMax Kellermann1-0/+4
Move everything which dumps song information (via tag_print.c) to a separate source file. song_print.c gets code which writes song data to the client; song_save.c is responsible for serializing songs from the tag cache.
2008-09-07tag: moved code to tag_print.cMax Kellermann1-0/+3
Move everything which dumps a tag to a file descriptor to tag_print.c. This relaxes dependencies and splits the code into smaller parts.
2008-08-29tag: added a pool for tag itemsMax Kellermann1-0/+2
The new source tag_pool.c manages a pool of reference counted tag_item objects. This is used to merge tag items of the same type and value, saving lots of memory. Formerly, only the value itself was pooled, wasting memory for all the pointers and tag_item structs. The following results were measured with massif. Started MPD on amd64, typed "mpc", no song being played. My music database contains 35k tagged songs. The results are what massif reports as "peak". 0.13.2: total 14,131,392; useful 11,408,972; extra 2,722,420 eric: total 18,370,696; useful 15,648,182; extra 2,722,514 mk f34f694: total 15,833,952; useful 13,111,470; extra 2,722,482 mk now: total 12,837,632; useful 10,626,383; extra 2,211,249 This patch set saves 20% memory, and does a good job in reducing heap fragmentation.
2008-08-29removed tree.cMax Kellermann1-2/+0
This patch makes MPD consume much more memory because string pooling is disabled, but it prepares the next bunch of patches. Replace the code in tagTracker.c with naive algorithms without the tree code. For now, this should do; later we should find better algorithms, especially for getNumberOfTagItems(), which has become wasteful with temporary memory.
2008-08-29tag: moved code to tag_id3.cMax Kellermann1-0/+2
The ID3 code uses only the public tag API, but is otherwise unrelated. Move it to a separate source file.
2008-08-28renamed interface.c to client.cMax Kellermann1-2/+2
I don't believe "interface" is a good name for something like "connection by a client to MPD", let's call it "client". This is the first patch in the series which changes the name, beginning with the file name.
2008-08-28imported list.h from the Linux kernel sourcesMax Kellermann1-0/+1
linux/list.h is a nice doubly linked list library - it is lightweight and powerful at the same time. It will be useful later, when we begin to allocate client structures dynamically. Import it, and strip out all the stuff which we are not going to use.
2008-08-26renamed player.c to player_control.cMax Kellermann1-3/+2
Give player.c a better name, meaning that the code is used to control the player thread.
2008-08-26renamed decode.h to decoder_control.hMax Kellermann1-1/+1
2008-08-26renamed decode.c to decoder_thread.cMax Kellermann1-1/+2
It should be obvious in which thread or context a function is being executed at runtime. The code which was left in decode.c is for the decoder thread itself; give the file a better name.
2008-08-26moved global variable "pc" to player.hMax Kellermann1-0/+1
This is the last of the three variables. Now we don't need playerData.h anymore in most sources.
2008-08-26added decoder_control.cMax Kellermann1-0/+1
The source "decoder_control.c" provides an API for controlling the decoder. This replaces various direct accesses to the DecoderControl struct.
2008-08-26moved code to player_thread.cMax Kellermann1-0/+2
Move code which runs in the player thread to player_thread.c. Having a lot of player thread code in decode.c isn't easy to understand.
2008-08-26moved code to crossfade.cMax Kellermann1-0/+2
decode.c should be a lot smaller; start by moving all code which handles cross-fading to crossfade.c. Also includes camelCase conversion.
2008-08-26renamed inputPlugin.* to decoder_list.*Max Kellermann1-2/+2
Since inputPlugin.c manages the list of registered decoders, we should rename the source file.
2008-08-26added decoder_initialized()Max Kellermann1-0/+1
decoder_initialized() sets the state to DECODE_STATE_DECODE and wakes up the player thread. It is called by the decoder plugin after its internal initialization is finished. More arguments will be added later to prevent direct accesses to the DecoderControl struct.
2008-08-26added struct decoderMax Kellermann1-0/+2
The decoder struct should later be made opaque to the decoder plugin, because maintaining a stable struct ABI is quite difficult. The ABI should only consist of a small number of stable functions.