Commit Graph

6636 Commits

Author SHA1 Message Date
Max Kellermann 2bbff77e48 OutputControl: convert anonymous enum to constexpr 2013-10-20 13:53:01 +02:00
Max Kellermann 3315c67f0f Inotify: convert anonymous enum to constexpr 2013-10-20 13:51:55 +02:00
Max Kellermann b879bcb1eb UpdateWalk: convert anonymous enum to constexpr 2013-10-20 13:50:34 +02:00
Max Kellermann ae99135c8d Main: convert anonymous enum to constexpr 2013-10-20 13:47:32 +02:00
Max Kellermann 1defb38a6f DatabaseSave: convert anonymous enum to constexpr 2013-10-20 13:46:13 +02:00
Max Kellermann 56bc9e12ee ClientInternal: convert anonymous enum to constexpr 2013-10-20 13:45:47 +02:00
Max Kellermann 116ebe0494 Idle: convert anonymous enum to constexpr 2013-10-20 13:45:21 +02:00
Max Kellermann 5ec843dcc8 *Commands: move to src/command/ 2013-10-20 13:41:04 +02:00
Max Kellermann a78b2d84ed TagType: rename enum tag_type to TagType 2013-10-20 13:32:59 +02:00
Max Kellermann cf4d80fc65 command: convert command_return to to a strictly-typed enum 2013-10-20 13:10:54 +02:00
Max Kellermann 8118bc93a8 FatalError: remove unused GError overload 2013-10-20 13:10:09 +02:00
Max Kellermann c772bc45c6 PlaylistError: convert playlist_result to a strictly-typed enum 2013-10-20 13:06:40 +02:00
Max Kellermann c1e7be3b8e decoder/sidplay: add header file 2013-10-20 13:05:50 +02:00
Max Kellermann 17ecc56e83 decoder/sidplay: update file name 2013-10-20 13:03:58 +02:00
Max Kellermann 75ba961e97 Client: move message functions into the class 2013-10-19 19:44:45 +02:00
Max Kellermann c2d5ce0ca2 Client: move trivial functions into the Client class 2013-10-19 19:39:40 +02:00
Max Kellermann 32645b80c4 ClientInternal: move class Client to Client.hxx
Publish the Client API, preparing to move more code into the Client
class.
2013-10-19 19:35:37 +02:00
Max Kellermann ff626ac763 *: use references instead of pointers 2013-10-19 18:48:38 +02:00
Max Kellermann 59f8144c50 *: use nullptr instead of NULL 2013-10-19 18:19:03 +02:00
Max Kellermann 5a7c931293 input/cdio: use class AllocatedPath 2013-10-19 17:48:46 +02:00
Max Kellermann 1373d40fea decoder/mpg123: use const_cast instead of g_strdup() 2013-10-19 17:46:00 +02:00
Max Kellermann 3274bb54ad event/ServerSocket: pass AllocatedPath to AddPath() 2013-10-19 17:40:56 +02:00
Max Kellermann 7db124068f ConfigPath: use std::string 2013-10-19 17:32:49 +02:00
Max Kellermann 39e2ffe212 decoder/mikmod: use const_cast instead of g_strdup() 2013-10-19 17:30:56 +02:00
Max Kellermann 0a213ddf03 input/curl: use std::string for meta_name
Automatic memory management.
2013-10-19 17:24:21 +02:00
Max Kellermann 5dc4cbdf82 util/FormatString: new library to replace g_strdup_printf() 2013-10-19 17:24:21 +02:00
Max Kellermann 1434e5a22e decoder/gme,input/curl,...: use static buffers instead of g_strdup_printf() 2013-10-19 17:15:17 +02:00
Max Kellermann 9acc1e1e97 Permission: use std::find instead of g_strsplit() 2013-10-19 16:47:56 +02:00
Max Kellermann daa47546c7 Permission: move code to ParsePermission() and a table 2013-10-19 16:47:41 +02:00
Max Kellermann c5194d0a8f Permission: convert PERMISSION_* from macro to constexpr 2013-10-19 16:47:23 +02:00
Max Kellermann 7ece8ff85c Permission: remove nullptr check
Both callers pass non-nullptr.
2013-10-19 16:40:40 +02:00
Max Kellermann a4effeb3f9 Permission: convert PERMISSION_PASSWORD_CHAR from macro to constexpr 2013-10-19 16:39:45 +02:00
Max Kellermann d3f28a1d7f FilterConfig: use std::find instead of g_strsplit_set() 2013-10-19 16:34:11 +02:00
Max Kellermann 03cddd0acf FilterConfig: return bool 2013-10-19 16:29:56 +02:00
Max Kellermann 04a737e04c FilterConfig: move code to filter_chain_append_new() 2013-10-19 16:26:51 +02:00
Max Kellermann 966c54bef5 FilterConfig: eliminate duplicate API documentation 2013-10-19 16:23:40 +02:00
Max Kellermann efcd9dfc35 ConfigData: use strtoul() in GetUnsignedValue()
Lifts the artificial 31 bit limit in i386 where
sizeof(long)==sizeof(int).
2013-10-19 16:12:52 +02:00
Sebastian Thorarensen db44a6e948 decoder/modplug: Add "loop_count" parameter
The "loop_count" configuration parameter allows the user to set how
many times a module with backward loops shall loop. "0" (the default)
means a module is not allowed to use backward loops at all. "-1"
enables inifinite looping.
2013-10-19 16:12:17 +02:00
Sebastian Thorarensen d6553fc6a7 ConfigData: Add support for signed integers
Now config_param::GetBlockValue() can be used to get signed integers
from the configuration.
2013-10-19 16:11:33 +02:00
Ben Boeckel fc9014f7ec PlayerThread: Only drop 0 length packets without tags
Fixes a regression from 752dfb3d95 which
caused the current chunk to be flushed as soon as new replaygain
information was found. If this occurs on a tag chunk, it has no data
(length 0) and is then skipped before pushing it to all of the outputs.

This change allows 0-length chunks through if they contain a tag and
they are now appearing in mplayer and mpv properly.
2013-10-19 15:45:11 +02:00
Max Kellermann b39ab76118 Util/CharUtil: new library replacing g_ascii_isX() 2013-10-19 15:36:47 +02:00
Max Kellermann 90777f78c9 playlist/(Ext)M3u: use strchug_fast() 2013-10-19 15:36:47 +02:00
Max Kellermann 8e063829c4 encoder/{opus,vorbis}: new serial generator replacing g_random_int() 2013-10-19 14:43:24 +02:00
Max Kellermann 139c6be370 encoder/wave: include cleanup 2013-10-19 02:05:44 +02:00
Sebastian Thorarensen b6ac249c3c decoder/mikmod: Add loop configuration parameter
This patch allows the user to configure the mikmod decoder plugin to loop
modules. It adds a configuration parameter to the mikmod decoder called
"loop" which can be "no" (the old behaviour, default) or "yes" to allow
modules to use backward loops.
2013-10-18 14:23:24 +02:00
Max Kellermann 5e103b5fb7 filter/route: merge the two loops, one-pass parsing 2013-10-18 12:24:49 +02:00
Max Kellermann de5be62da5 filter/route: allocate "sources" statically
Worst-case allocation using MAX_CHANNELS.
2013-10-18 12:24:47 +02:00
Max Kellermann b5f608d026 filter/route: use int8_t instead of signed char 2013-10-18 12:24:47 +02:00
Max Kellermann 58fe352fda util/StringUtil: rename strchug_fast_c() to strchug_fast()
Overload the name.
2013-10-18 12:24:47 +02:00
Max Kellermann b105093dcd ZeroconfAvahi: convert avahiRunning to a "bool" 2013-10-18 10:50:14 +02:00
Max Kellermann d1c401fe7a ZeroconfAvahi: integrate into the EventLoop
Finally fixes the regression by commit c1f4f1fd.
2013-10-18 09:16:55 +02:00
Max Kellermann 43863a70c8 SignalMonitor: add SignalMonitorGetEventLoop()
Eliminate the global variable "shutdown_loop".
2013-10-18 08:44:40 +02:00
Max Kellermann bd5a70c712 input/curl: use MultiSocketMonitor constants instead of GLib 2013-10-18 08:30:44 +02:00
Max Kellermann bcfc62a3f2 PlaylistEdit, QueueSave: free the Song object after Append()
Fix for a major memory leak.
2013-10-18 01:12:47 +02:00
Max Kellermann abfbd55305 fs/Path: rename to AllocatedPath
The new class Path only holds a string pointer without being
responsible for allocation/deallocation.  The FileSystem.hxx library
accepts Path arguments instead of AllocatedPath, to avoid forcing
callers to allocate another string object.
2013-10-17 23:43:46 +02:00
Max Kellermann b3611524f4 fs/Path: move definitions to struct PathTraits 2013-10-17 23:23:25 +02:00
Max Kellermann a63613dba0 fs/Path: include clenaup 2013-10-17 23:20:26 +02:00
Max Kellermann 7fec2b02d4 fs/Charset: GetFSCharset() returns "utf-8" by default
If fs_charset is empty, i.e. we're using the default "utf-8",
GetFSCharset() should return exactly that instead of an empty
std::string.
2013-10-17 22:47:09 +02:00
Max Kellermann 608a98c873 fs/Charset: default filesystem charset is UTF-8
Implement a fast path for UTF-8 which leaves fs_charset empty, and
don't assign a value to fs_charset if there's no configuration.
2013-10-17 22:42:22 +02:00
Max Kellermann f951e5356b fs/Charset: don't allow nullptr arguments 2013-10-17 22:39:06 +02:00
Max Kellermann 080ee87e07 fs/Path: move configuration code to Config.cxx 2013-10-17 22:29:03 +02:00
Max Kellermann fa60b9ae94 fs/Path: move path_domain to Domain.hxx 2013-10-17 22:20:53 +02:00
Max Kellermann 0d33ae52c6 fs/Path: make fs_charset static 2013-10-17 22:10:27 +02:00
Max Kellermann 77e4b28092 fs/Path: include cleanup 2013-10-17 22:08:57 +02:00
Max Kellermann 4817437d31 fs/Limits: convert macro to "constexpr" 2013-10-17 22:08:56 +02:00
Max Kellermann 354b5a9365 fs/Path: move MPD_PATH_MAX to Limits.hxx 2013-10-17 22:00:01 +02:00
Max Kellermann 58502b38d3 *: use std::numeric_limits 2013-10-17 21:53:19 +02:00
Max Kellermann d44880dfa9 UpdateGlue: handle update id management
Add UpdateQueueItem::id to keep track of the id in every item.
Replaces thhe hack in update_queue_push().
2013-10-17 21:45:53 +02:00
Max Kellermann 0c63632cc2 UpdateGlue: pass UpdateQueueItem around
Fixes a few kludges and avoids GLib allocation.
2013-10-17 21:45:42 +02:00
Max Kellermann b93523c0b1 UpdateGlue: never pass null to update_enqueue() 2013-10-17 21:45:41 +02:00
Max Kellermann 7ef40de98b UpdateQueue: use std::string and std::queue 2013-10-17 21:13:40 +02:00
Max Kellermann 196ec25682 Mapper: use std::string 2013-10-17 19:54:58 +02:00
Max Kellermann c85af12d45 StickerDatabase: return std::string 2013-10-17 19:39:23 +02:00
Max Kellermann e452d1f5b4 StickerDatabase: add pure/const attributes 2013-10-17 19:39:22 +02:00
Max Kellermann ffea268d2e PlayerControl: GetError() returns an Error, not a char* 2013-10-17 19:34:59 +02:00
Max Kellermann 8e676db633 Thread/Thread: replacement library for GThread 2013-10-17 19:29:47 +02:00
Max Kellermann f6d74012b7 util/Error: add method SetLastError() 2013-10-17 19:29:38 +02:00
Max Kellermann 32dfc11c23 Main: use ThreadId instead of GThread* 2013-10-17 19:28:34 +02:00
Max Kellermann 05de2e998c InputStream: use int64_t instead of goffset
Decouple some more from GLib.
2013-10-17 10:45:10 +02:00
Max Kellermann 24780d99e6 input_plugin: rename struct to "InputPlugin" 2013-10-17 10:20:57 +02:00
Max Kellermann 7c1cf61728 thread/{Cond,Mutex}: use "class" instead of "typedef"
Allows forward-declaration.
2013-10-17 10:06:31 +02:00
Max Kellermann eb10d08671 CueParser: use std::string 2013-10-17 01:34:10 +02:00
Max Kellermann abb0549e4b InotifyUpdate: use class Path 2013-10-17 01:16:46 +02:00
Max Kellermann 5327ea13ac PlaylistSave: eliminate the last g_warning() call 2013-10-17 01:15:54 +02:00
Max Kellermann be8ceae6e6 Song: GetURI() returns std::string 2013-10-17 01:01:15 +02:00
Max Kellermann 67ae033de7 ArchiveLookup: in-place editing, avoid string copy 2013-10-17 00:54:20 +02:00
Max Kellermann 161f7ced96 ArchiveLookup: declare local variables later 2013-10-17 00:48:58 +02:00
Max Kellermann 72bc11b180 ArchiveLookup: don't reset out arguments
If we return false, their values are undefined.
2013-10-17 00:46:26 +02:00
Max Kellermann 15c2538532 ArchiveLookup: move code to FindSlash() 2013-10-17 00:44:57 +02:00
Max Kellermann fd9dd9343b ArchiveLookup: move code to FindSuffix() 2013-10-17 00:38:26 +02:00
Max Kellermann 1b8a1d4140 ArchiveLookup: return const strings 2013-10-17 00:36:52 +02:00
Max Kellermann e132d10aec ArchiveLookup: move API documentation to header 2013-10-17 00:36:35 +02:00
Max Kellermann d6967db761 decoder/wildmidi: remove suport for libwildmidi 0.2.2 or older 2013-10-16 23:57:26 +02:00
Max Kellermann 5e26e2ab1d system/ByteOrder: new library for byte ordering / endianess
Replacing GLib macros.
2013-10-16 22:09:44 +02:00
Max Kellermann 08eca827b6 util/ByteReverse: use C99 "restrict"
Micro-optimization.
2013-10-16 22:07:59 +02:00
Max Kellermann 6b2b5af344 util/byte_reverse: convert to C++ 2013-10-16 22:07:52 +02:00
Max Kellermann f32fbd9ed1 pcm_pack: convert to C++ 2013-10-16 22:07:43 +02:00
Max Kellermann e3511d0ee0 encoder/wave: use delete to dispose the WaveEncoder object 2013-10-16 22:07:32 +02:00
Max Kellermann fa13a6616f Archive*: move archive_domain to ArchiveDomain.cxx
Merge duplicate symbol.
2013-10-15 23:24:54 +02:00
Max Kellermann d4c2f91182 ConfigData: remove unused method DupBlockString() 2013-10-15 23:19:44 +02:00
Max Kellermann 084fd8df63 playlist/soundcloud: use std::string 2013-10-15 23:17:53 +02:00
Max Kellermann 328131b7aa output/roar: use const_cast instead of g_strdup() 2013-10-15 23:14:34 +02:00
Max Kellermann 85003429af output/roar: use std::string 2013-10-15 23:11:32 +02:00
Max Kellermann 6db77dcf75 output/roar: move code into the RoarOutput class 2013-10-15 22:58:38 +02:00
Max Kellermann 1cde86823d output/pipe: use std::string 2013-10-15 22:52:04 +02:00
Max Kellermann dbd88e6aef Client, ...: remove unnecessary glib.h include 2013-10-15 22:51:09 +02:00
Max Kellermann 45418583e9 ApeTag: use std::string for temporary allocation 2013-10-15 22:50:02 +02:00
Max Kellermann 77a1133723 PlaylistRegistry: use std::string for temporary allocation 2013-10-15 22:49:51 +02:00
Max Kellermann 25c208d81d input/*: don't allocate attribute "mime"
This was a memory leak, because "mime" was a std::string which created
another copy and discarded the allocated buffer.
2013-10-15 22:49:23 +02:00
Max Kellermann 67f87db511 UpdateArchive: use std::string for temporary string 2013-10-15 22:49:12 +02:00
Max Kellermann 7de96275dd ConfigData: use std::string for config_param::value 2013-10-15 22:49:01 +02:00
Max Kellermann e13d0bf656 Permission: use std::string for temporary password allocation
As a side effect, this fixes a memory leak.
2013-10-15 22:48:09 +02:00
Max Kellermann 8ed9f7effa Mapper: remove obsolete variable music_dir_fs_length 2013-10-15 22:48:01 +02:00
Max Kellermann 12ab556477 event/BufferedSocket: pass writable pointer to OnSocketInput()
Remove the const_cast from HttpdClient.cxx, and avoid one allocation
in ClientRead.cxx.
2013-10-15 22:47:46 +02:00
Max Kellermann 509f8dab89 Util/Macros: replacement for GLib's G_N_ELEMENTS() 2013-10-15 22:47:39 +02:00
Max Kellermann 77429b6dd3 output/winmm: use delete instead of g_free() 2013-10-15 22:47:25 +02:00
Max Kellermann 84d20d9e43 util/FifoBuffer: C++ version of the fifo_buffer library 2013-10-15 10:28:52 +02:00
Max Kellermann 0c13703da3 system/clock: convert to C++ 2013-10-15 09:38:12 +02:00
Max Kellermann b97b7a7493 require GLib 2.28
The header glib_compat.h is now obsolete and can be removed.
2013-10-15 09:35:25 +02:00
Max Kellermann be2951b45f gcc.h: rename to Compiler.h 2013-10-15 09:21:59 +02:00
Max Kellermann 1dd1a705b5 gcc.h: major update
Copy the according file from another project (i.e. XCSoar).  This will
allow copying more code more easily.
2013-10-15 09:13:22 +02:00
Max Kellermann e4e80ff0cb *: use WIN32 instead of G_OS_WIN32 2013-10-15 08:33:44 +02:00
Max Kellermann 9508ea982b fs/Path: add method IsAbsolute() 2013-10-14 22:38:29 +02:00
Max Kellermann 47d655ea7f fs/Path: add separator constants/functions 2013-10-14 22:26:23 +02:00
Max Kellermann 62271bf6ce PlaylistFile: always check for absolute paths within music_directory
Try map_fs_to_utf8() first, and fall back to Path::ToUTF8() for
absolute paths.
2013-10-14 22:21:22 +02:00
Max Kellermann 0b27ac2f5c fs/Path: add method RelativeFS()
Move code from map_fs_to_utf8().
2013-10-14 22:09:02 +02:00
Max Kellermann 6fd481df97 Mapper, ...: use memcmp() instead of strncmp() where appropriate
Micro-optimization.
2013-10-14 22:00:21 +02:00
Max Kellermann b915e43391 fs/Path: add method data() 2013-10-14 21:57:43 +02:00
Max Kellermann c96b295700 PlaylistFile: fix memory leak
Consistently use std::string in LoadPlaylistFile().
2013-10-14 21:53:08 +02:00
Max Kellermann 9067da2df8 Mapper: map_fs_to_utf8() returns std::string
Avoid the conversion to an allocated char*, let the caller decide.
2013-10-14 21:43:41 +02:00
Max Kellermann 8cf2f52f7a Merge tag 'release-0.17.6' 2013-10-14 21:40:56 +02:00
Florian Schlichting d9c662d51f decoder/modplug: fix include directory 2013-10-14 21:12:47 +02:00
Max Kellermann ad631d563b stored_playlist: use fs_charset_to_utf8() for URLs 2013-10-14 21:11:20 +02:00
Max Kellermann 7cbaf11dda load_file 2013-10-14 21:00:46 +02:00
Max Kellermann 3be63549c0 stored_playlist: add "file://" prefix to absolute paths
Prepare to fix loading arbitrary song files from stored playlists.
2013-10-14 20:52:49 +02:00
Max Kellermann 17c6db6c33 replay_gain_*.h: rename to *.hxx 2013-10-02 12:22:12 +02:00
Max Kellermann 86316b1828 output/httpd: don't include glib.h in header 2013-10-02 12:20:36 +02:00
Max Kellermann efc3a69dbf Stats: don't include glib.h in header
Use forward declaration instead.
2013-10-02 12:16:52 +02:00
Max Kellermann ec883e1901 Stats: rename stats.h to Stats.hxx 2013-10-02 12:14:07 +02:00
Max Kellermann 060814daa8 Log: new logging library API
Prepare to migrate away from GLib.  Currently, we're still using GLib
as a backend.
2013-10-02 08:57:55 +02:00
Max Kellermann c53492a76a TextFile: don't include glib.h in header
Un-inline the methods that use GLib.
2013-10-02 08:56:27 +02:00
Max Kellermann 43675717b8 filesystem/Path: use std::string 2013-10-02 08:56:27 +02:00
Max Kellermann b21ed2fa36 PlaylistMapper: convert playlist name to filesystem charset 2013-10-02 08:56:27 +02:00
Max Kellermann 0214baad5a Playlist*: use nullptr instead of NULL 2013-10-02 08:56:27 +02:00
Max Kellermann c2d3ed2acc Listen, ...: add missing includes 2013-10-02 08:56:27 +02:00
Max Kellermann 0339c8d025 ConfigData: handle default_value==nullptr
Return Path::Null() instead of dying from assertion failure.
2013-10-02 08:56:02 +02:00
Max Kellermann 0e0be0243b Daemon, Mapper: move-assign the Path objects 2013-10-01 18:50:18 +02:00
Max Kellermann a2ce2447a6 Merge branch 'v0.17.x' 2013-10-01 17:20:38 +02:00
Max Kellermann 9a1076256d mixer/alsa: handle ENODEV
Fixes busy loop when USB sound device gets unplugged (Mantis bug
#3824).
2013-10-01 16:35:27 +02:00
Max Kellermann 72ef38d4a7 mixer/alsa: log snd_mixer_handle_events() errors 2013-10-01 16:30:20 +02:00
Max Kellermann 5e20b7976f DecoderControl: lock the mutex in Seek()
Use LockSynchronousCommand() instead of SynchronousCommandLocked().
Fixes regression from commit ef663810 (dead lock due to cond_wait with
unlocked mutex).
2013-09-30 16:20:35 +02:00
Max Kellermann 36f712b949 tag/{riff,aiff}: convert to C++ 2013-09-28 14:14:13 +02:00
Max Kellermann a446775d80 playlist/lastfm: remove defunct Last.fm support
This plugin has been defunct ever since Last.fm changed their
protocol.  Since there is no volunteer willing to fix the plugin, I'm
removing it now.
2013-09-28 14:01:51 +02:00
Max Kellermann ccd7f0825a DecoderControl: use GLib forward declarations 2013-09-27 23:00:23 +02:00
Max Kellermann d0896ea7c4 PlayerThread: convert struct player to a class 2013-09-27 22:22:11 +02:00
Max Kellermann a73d1e4b1c PlayerThread: use strictly typed enum 2013-09-27 22:19:26 +02:00
Max Kellermann d05bb2a0af PlayerControl: use strictly typed enums 2013-09-27 22:07:20 +02:00
Max Kellermann 6765901687 DecoderControl: convert "enum decoder_state" to strictly-typed enum 2013-09-27 12:27:33 +02:00
Max Kellermann c5d05ac0cf DecoderCommand: convert to strictly-typed enum 2013-09-27 12:11:37 +02:00
Max Kellermann 939003c1f1 OutputAll: add pure/const attributes 2013-09-27 09:38:47 +02:00
Max Kellermann a10f3a8aec PlayerControl: convert functions to methods 2013-09-27 09:30:19 +02:00
Max Kellermann ef663810a2 DecoderControl: convert functions to methods 2013-09-27 09:18:03 +02:00
Max Kellermann ada67a6a4f PlayerThread: move code to player_control::CommandFinished() 2013-09-27 07:58:48 +02:00
Max Kellermann b6a5d1ad5a PlayerThread: use nullptr instead of NULL 2013-09-27 00:03:22 +02:00
Max Kellermann d8c5a63bc2 PlayerThread: unlock/lock in player_task() 2013-09-26 23:58:41 +02:00
Max Kellermann bcb2db62c9 PlayerThread: move code into the player class 2013-09-26 23:57:31 +02:00
Max Kellermann 079ef93121 PlayerThread: use player references 2013-09-26 23:27:47 +02:00
Max Kellermann b2789c598e PlayerThread: use {decoder,player}_control references 2013-09-26 22:53:40 +02:00
Max Kellermann 92a93c1217 PlayerThread: allocate decoder_control on the stack 2013-09-26 22:48:55 +02:00
Max Kellermann 96b70835f9 PlayerThread: move global MusicBuffer variable into the player object 2013-09-26 22:45:49 +02:00
Max Kellermann 7fa3b7a267 PlayerThread: simplify "buffer empty" assertion 2013-09-26 22:41:07 +02:00
Max Kellermann f3fc76e3c8 MusicChunk: remove obsolete prototypes 2013-09-26 22:34:43 +02:00
Max Kellermann 3216f4b257 MusicBuffer: expose the C++ API 2013-09-26 22:21:56 +02:00
Max Kellermann ce1d897575 MusicPipe: expose the C++ API 2013-09-26 21:51:45 +02:00
Max Kellermann 17e108a10a MusicChunk: use constexpr for CHUNK_SIZE 2013-09-26 21:49:26 +02:00
Max Kellermann 5bc4ab899f *Plugin: remove redundant "line %i" from error messages
The MPD core will add this as a prefeix.
2013-09-26 20:59:40 +02:00
Max Kellermann 44faf1080c SongFilter: search for album artist falls back to the artist tag
Implement Mantis ticket 0003646.
2013-09-26 19:25:13 +02:00
Max Kellermann e354c5c2a8 IdTable, SongFilter: use std::fill_n() instead of std::fill() 2013-09-26 18:25:28 +02:00
Max Kellermann 04bc9005ae TagType: reduce the enum size to 1 byte
Reduce the TagItem overhead.
2013-09-26 18:14:58 +02:00
Max Kellermann 3c92c69bc7 Tag: add "pure" attributes 2013-09-26 18:11:00 +02:00
Max Kellermann 52ee132d92 TagHandler: use a TagBuilder internally
Reduce heap allocator overhead.
2013-09-26 17:35:08 +02:00
Max Kellermann 7ca0aedcfc Main: fix crash if no database was configured
Add nullptr check, and return early from glue_db_init_and_load().
2013-09-26 17:33:46 +02:00
Max Kellermann a2c4037a24 Main: use nullptr instead of NULL 2013-09-26 17:31:50 +02:00
Max Kellermann d7b0073ce1 decoder/modplug: fix include directory
Since Debian package 1:0.8.8.4-4, the pkg-config file does not contain
-I/usr/include/libmodplug anymore, and we need to add the
"libmodplug/" prefix to the #include line.
2013-09-26 17:27:35 +02:00
Artem Savkov 585b68d2ae input/curl: fix EventLoop stall after curl_easy_pause
When playing finite http streams, e.g. something from soundcloud,
eventloop stalls after pausing writefunc. TimeoutMonitor is cancelled
by the time resume happens, so when enough data is consumed writefunc
is called only once. Calling InvalidateSockets() from
input_curl_resume() seems to fix the issue.
2013-09-26 17:27:35 +02:00
Max Kellermann 89d2d648cc ConfigPath: return early on "~"
Previously, the pointer was moved to undefined memory.
2013-09-12 11:05:59 +02:00
Max Kellermann 7532f24d58 ConfigPath: skip the slash of "~/"
Increment the "path" earlier.
2013-09-12 11:05:41 +02:00
Max Kellermann 69a5df2f98 ConfigPath: remove the "~/" from the constructed path
This was building broken paths like "/home/foo/~/bar".  Bug found by
Maarten de Vries.
2013-09-12 10:54:45 +02:00
Max Kellermann 1c65908cdb ConfigPath: simplify the duplicate tilde check 2013-09-12 10:49:57 +02:00
Max Kellermann 3aaf013dd1 ConfigPath: convert "home" variable to Path object
Use Path::FromUTF8() for the g_get_home_dir() return value instead of
assuming it's already FS charset.
2013-09-12 10:35:40 +02:00
Max Kellermann 5f2705ab07 ConfigPath: move code to GetHome() 2013-09-12 10:30:00 +02:00
Max Kellermann 9af620982c ConfigPath: include cleanup 2013-09-12 10:17:41 +02:00
Max Kellermann 1ee6a78cb7 Path: add FromUTF8() overload that returns an Error 2013-09-12 10:17:41 +02:00
Max Kellermann bf4ee48efa ConfigPath: move path_domain to system/Path.cxx 2013-09-12 10:03:37 +02:00
Maarten de Vries 08e6d222a2 Listen: Allow tilde paths for socket. 2013-09-12 08:55:45 +02:00
Max Kellermann a24589d46e TagBuilder: add method Commit(Tag&)
For callers that already have a Tag instance.
2013-09-05 19:23:06 +02:00
Max Kellermann 84533b6cad TagBuilder: add method IsEmpty() 2013-09-05 19:14:47 +02:00
Max Kellermann 8dca38e979 Tag: remove the obsolete "bulk" mode
Methods BeginAdd() and EndAdd() have been replaced by class
TagBuilder.
2013-09-05 19:08:22 +02:00
Max Kellermann 662bed6a00 db/proxy: use class TagBuilder 2013-09-05 19:07:27 +02:00
Max Kellermann ae5e0cb02b SongSave: use class TagBuilder 2013-09-05 18:59:19 +02:00
Max Kellermann 0b3e1c4706 TagBuilder: new class for constructing Tag objects
Obsoletes Tag::BeginAdd() and the complicated "bulk add" code.
2013-09-05 18:41:49 +02:00
Max Kellermann ce08a7a932 TagItem: disable the copy constructor/operator
This is not a C++ class and must not be copied.
2013-09-05 18:41:01 +02:00
Max Kellermann 5d5f21bfc5 Tag: compile-time initialisation of ignore_tag_items
Move to TagSettings.c and use C99 initializers.
2013-09-05 18:34:12 +02:00
Max Kellermann fcccedc588 Tag: move struct TagItem to TagItem.hxx 2013-09-05 18:28:07 +02:00
Max Kellermann 0d73a49327 Tag: move fix_tag_value() to TagString.cxx 2013-09-05 18:27:40 +02:00
Max Kellermann 6239dd96f2 Tag: remove unused methods 2013-09-05 18:27:31 +02:00
Max Kellermann 57a4700fb9 TagNames: make tag_item_names const 2013-09-05 18:27:23 +02:00
Max Kellermann 2b676dc5fc Tag: move configuration code to TagConfig.cxx
Allow using the Tag.cxx library without the Config library.
2013-09-05 18:27:08 +02:00
Max Kellermann 3f267b1795 Tag, ...: move to libtag.a 2013-09-05 18:26:56 +02:00
Max Kellermann 7a4c9f5f4c mpd_error.h: remove obsolete header
Migrate the remaining callers to FatalError().
2013-09-05 18:26:46 +02:00
Ales Guzik 3330aa6f6a input/curl: enable https 2013-09-05 11:56:49 +02:00
Max Kellermann 8929f88e6d PlaylistPlugin: add interface SongEnumerator
Replaces struct playlist_provider.
2013-09-05 09:40:55 +02:00
Max Kellermann 5348808bf5 PlaylistPlugin, ConfigGlobal: use nullptr instead of NULL 2013-09-05 09:40:32 +02:00
Max Kellermann fccba1af2a use standard snprintf() instead of GLib g_snprintf() 2013-09-05 09:21:53 +02:00
Max Kellermann 26d92c80ed conf.h: remove obsolete header
Use only ConfigData.hxx in plugin sources to reduce header
dependencies.
2013-09-05 08:47:10 +02:00
Max Kellermann 9605e24655 conf.h: move constants to ConfigDefaults.hxx 2013-09-05 08:42:08 +02:00
Max Kellermann 7d0269d2ce InputLegacy: move functions to the input_stream class 2013-09-05 00:23:14 +02:00
Max Kellermann 681d6bbdc5 TagTable: un-inline the two functions
Reduce header dependencies.
2013-09-04 23:57:30 +02:00
Max Kellermann 867b82b6de Tag*: move TagTable.hxx to libtag.a 2013-09-04 23:54:37 +02:00
Max Kellermann 5101ef4b02 Tag*: move libtag.a sources to src/tag/ 2013-09-04 23:46:20 +02:00
Max Kellermann ee9e238179 system/SocketError: un-inline constructor
Reduces header dependencies.
2013-09-04 23:36:30 +02:00
Max Kellermann 29030b54c9 util/Error: new error passing library
Replaces GLib's GError.
2013-09-04 18:14:22 +02:00
Max Kellermann c9fcc7f148 system/resolver: convert to C++ 2013-09-04 18:02:09 +02:00
Max Kellermann d1f4a31b5e output/pulse: require libpulse 0.9.16
Remove all #ifdefs.  Old versions of libpulse are not being tested,
and thus I'm removing support.
2013-09-04 16:55:03 +02:00
Max Kellermann b691d3123b IOThread: pass GError to FatalError()
Fixes build failure on GLib < 2.32.
2013-09-04 16:54:52 +02:00
Max Kellermann f68e36f8c2 DatabaseSave: eliminate redundant db_quark() implementation 2013-09-03 11:52:57 +02:00
Max Kellermann 4db119c01b IOThread: use FatalError() on g_thread_create() error
New GLib versions don't fail.
2013-09-03 11:28:47 +02:00
Max Kellermann bbd7115564 input/{mms,despotify}: remove "seek" implementation
Omitting it has the same effect as returning false unconditionally.
2013-09-03 10:54:29 +02:00
Max Kellermann 8d36367fe2 input_stream.h: rename to InputLegacy.hxx 2013-09-03 09:18:30 +02:00
Max Kellermann 3deca8fccd db_error: convert to C++ 2013-08-10 19:43:27 +02:00
Max Kellermann 7af24c4d3a playlist_error: convert to C++ 2013-08-10 19:40:45 +02:00
Max Kellermann 7f0ce4e94e ack.h: move to protocol/ 2013-08-10 19:32:41 +02:00
Max Kellermann 5c48d3fbba alsa/mixer: defer InvalidateSockets() call to I/O thread 2013-08-10 14:05:06 +02:00
Max Kellermann 00420ef9ca EventLoop: initialise the thread id explicitly 2013-08-10 14:01:55 +02:00
Max Kellermann b9d30595d6 ZeroconfAvahi: disable Avahi with epoll
Temporary hotfix until we have integrated avahi into our new event
loop.
2013-08-10 13:59:01 +02:00
Max Kellermann c1f4f1fdb6 EventLoop: new implementation using epoll
Implement an event loop without GLib.
2013-08-10 13:54:23 +02:00
Max Kellermann 342333f72a mixer/alsa: invoke InvalidateSockets() in constructor 2013-08-10 13:54:23 +02:00
Max Kellermann 94cdc47786 event/Call: signal the calling thread
Fixes regression from commit 018f4155.
2013-08-10 12:40:44 +02:00
Max Kellermann cc511e7b60 event/IdleMonitor: new monitor class 2013-08-10 11:52:31 +02:00
Max Kellermann bb2af791e9 event/MultiSocketMonitor: add struct SingleFD
Prepare for migrating away from GLib.
2013-08-10 11:52:31 +02:00
Max Kellermann f3f4b332ae event/MultiSocketMonitor: use uint64_t instead of gint64
Unsigned and portable.
2013-08-10 11:52:31 +02:00
Max Kellermann 84ac79bb08 event/MultiSocketMonitor: eliminate virtual method CheckSockets()
Handle timeout internally.
2013-08-10 11:52:31 +02:00
Max Kellermann be0c8495cd event/MultiSocketMonitor: PrepareSockets() returns timeout
Simplify the API, don't use GLib specific integer type.
2013-08-10 11:52:31 +02:00
Max Kellermann cbd0709d1c glib_compat.h: use monotonic_clock_us() in g_source_get_time() 2013-08-10 11:52:31 +02:00
Max Kellermann 371d635da8 glib_compat.h: remove unused wrapper g_file_test() 2013-08-10 11:52:31 +02:00
Max Kellermann 85216966fa decoder/wildmidi: use class Path for the "timidity.cfg" location 2013-08-10 11:52:31 +02:00
Max Kellermann 1c823e9d1f ConfigData: overload GetBlockPath() with default value 2013-08-10 11:52:31 +02:00
Max Kellermann 25e338a098 ConfigData: use FatalError() instead of MPD_ERROR() 2013-08-10 11:52:31 +02:00
Max Kellermann 81175b0717 system/EPollFD: fix typo in Add() 2013-08-10 11:52:31 +02:00
Max Kellermann d23c907a94 thread/Id: new class replacing GThread pointers
Remove a GLib dependencies from class EventLoop and DatabaseLock.
2013-08-10 09:00:04 +02:00
Max Kellermann 018f4155eb event: add function BlockingCall()
Replaces io_thread_call().  This approach is more generic and easier
to use due to std::function.
2013-08-08 23:04:07 +02:00
Max Kellermann 9ab0a1f5f1 EventLoop: add methodd IsInside()
Track which thread runs the EventLoop and provide a check whether
we're currently inside.
2013-08-08 23:04:01 +02:00
Max Kellermann c043b337b1 EventLoop: un-inline Run() and others
Prepare for adding more code.
2013-08-08 23:03:49 +02:00
Max Kellermann 090bc6fa79 event/*Monitor: add method GetEventLoop() 2013-08-08 23:03:38 +02:00
Max Kellermann b63db1c1aa event/SocketMonitor: un-inline Schedule()
Merge with CommitEventFlags().
2013-08-08 00:18:59 +02:00
Max Kellermann 0287ac794e event/SocketMonitor: add assertions 2013-08-08 00:18:59 +02:00
Max Kellermann 0005221533 output/httpd: use "unsigned" instead of "guint" 2013-08-08 00:18:59 +02:00
Max Kellermann 23d2c0f1c6 Client{Event,Write}: add missing include 2013-08-08 00:14:19 +02:00
Max Kellermann 377b6f05ea event/BufferedSocket: add missing include 2013-08-08 00:11:40 +02:00
Max Kellermann 3ac2e9d31f os/FileSystem: disable mkfifo() wrapper on WIN32 2013-08-07 20:31:27 +02:00
Max Kellermann b76a29a69a ConfigPath: return a Path object
Migrate all callers to use Path directly, instead of doing the
conversion in each caller.
2013-08-07 19:59:09 +02:00
Max Kellermann abe090ec1f *: remove remaining __cplusplus checks 2013-08-07 19:58:52 +02:00
Max Kellermann dff05c71e6 event/EPollFD: basic support for Linux epoll 2013-08-07 19:44:43 +02:00
Max Kellermann f6f4742410 event/DeferredMonitor: rename Run() to RunDeferred() 2013-08-07 19:39:26 +02:00
Max Kellermann 977004c350 event/DeferredMonitor: use EventLoop::AddIdle() 2013-08-07 19:38:10 +02:00
Max Kellermann 355dd5cb24 event/DeferredMonitor: new class wrapping g_idle_add() 2013-08-07 18:59:42 +02:00
Max Kellermann 123dd5fe2d mixer/alsa: use AllocatedArray for the pollfd buffer 2013-08-07 18:56:57 +02:00
Max Kellermann 953e3190ca encoder/lame: use ReusableBuffer instead of AllocatedArray 2013-08-07 18:53:24 +02:00
Max Kellermann 44a0e21795 PcmBuffer: move code to new class ReusableBuffer
ReusableBuffer is more generic.
2013-08-07 18:51:21 +02:00
Max Kellermann 870cc1d928 add missing includes 2013-08-07 18:23:55 +02:00
Max Kellermann d86ee93801 filter/Route: don't access PcmBuffer attributes directly
Return the pointer given by PcmBuffer::Get() instead of reaching into
the PcmBuffer object.
2013-08-07 18:23:34 +02:00
Alexander Gehrke 87b7328463 CommandLine.cxx: look for config file in XDG_CONFIG_HOME too
Look for "$XDG_CONFIG_HOME/mpd/mpd.conf", similar to where mpd looks
for the file under Windows.
2013-08-07 18:22:27 +02:00
Alexis Ballier 3f846cf6b8 FfmpegDecoderPlugin: Allocate the interleaved buffer as needed instead of using an arbitrary big constant.
Also, save a memcpy when FFmpeg outputs interleaved audio.

Fixes build with FFmpeg 2.0.
2013-08-07 15:07:41 +02:00
Max Kellermann f2ce8c3b62 event/EventFD: move to libsystem 2013-08-07 11:52:26 +02:00
Max Kellermann 4223657ab8 event/SignalMonitor: use signalfd() if available 2013-08-07 11:03:47 +02:00
Max Kellermann 930128a7ea SignalHandlers: move code to new class SignalMonitor 2013-08-07 10:56:33 +02:00
Max Kellermann db447440ff event/Event{Pipe,FD}: auto-create in constructor
Errors are fatal now.  This makes the class a lot easier to use.
2013-08-07 10:53:22 +02:00
Max Kellermann b70d38dc10 Makefile.am: move sources to libsystem.a 2013-08-07 10:31:31 +02:00
Max Kellermann a27d105dcd FatalError: new library to replace mpd_error.h 2013-08-07 10:08:36 +02:00
Max Kellermann 67e44b0f2c daemon: convert to C++ 2013-08-07 09:53:33 +02:00
Max Kellermann 47e16dbee3 configure.ac: add option --enable-eventfd
Remove the runtime check for eventfd(), hard-code the feature once
it's been selected at compile time.  The class WakeFD is splitted into
EventFD and EventPipe, using WakeFD as a macro diversion.
2013-08-06 23:32:21 +02:00
Max Kellermann 66f678023f util/Manual: add missing include <utility> 2013-08-06 22:34:20 +02:00
Max Kellermann 132971f8eb playlist/pls: use std::string instead of GString 2013-08-06 09:32:08 +02:00
Max Kellermann 3f04a4d635 encoder/lame: dynamic output buffer 2013-08-06 09:13:28 +02:00
Max Kellermann 17c8e839b6 encoder/lame: use delete instead of g_free() 2013-08-06 09:13:07 +02:00
Max Kellermann 348bdcd7b7 encoder/lame: use lame_encode_buffer_interleaved()
Don't deinterleave manually, don't allocate memory.
2013-08-06 09:10:30 +02:00
Max Kellermann a32443c63b encoder/lame: use offset variable instead of memmove() 2013-08-06 09:02:48 +02:00
Max Kellermann 7e53934ce3 encoder/lame: rename "buffer" to "output_buffer" 2013-08-06 09:02:48 +02:00
Max Kellermann 7c2b553364 playlist/EmbbeddedCue: convert to class 2013-08-05 22:23:33 +02:00
Max Kellermann 409fc837ab playlist/lastfm: convert to class 2013-08-05 21:44:34 +02:00
Max Kellermann 6d0ada7f45 playlist/lastfm: allocate the lastfm_playlist object at the end
Simplify the error path, because the other allocations may fail.
2013-08-05 21:31:54 +02:00
Max Kellermann af63372d2b playlist/m3u: allocate ExtM3uPlaylist with new/delete 2013-08-05 21:28:19 +02:00
Max Kellermann 3e91f757a9 playlist/extm3u: allocate ExtM3uPlaylist with new/delete 2013-08-05 21:25:25 +02:00
Max Kellermann 498491ec05 decoder/ffmpeg: convert struct mpd_ffmpeg_stream to a class 2013-08-05 00:15:25 +02:00
Max Kellermann 85b77b81ca *: use gcc.h macros instead of GLib 2013-08-04 23:48:01 +02:00
Andrzej Rybczak 5bf2ec5a74 DatabasePrint: print Last-Modified attribute for directories 2013-08-04 23:29:24 +02:00
Max Kellermann 9e715089a4 Commands: new command "toggleoutput" 2013-08-04 23:21:23 +02:00
Max Kellermann 9326ce53ec Merge tag 'release-0.17.5' 2013-08-04 14:36:22 +02:00
Justin Riley 3a34fd181d FfmpegDecoderPlugin: add application/flv to mime types list 2013-08-04 14:20:16 +02:00
Max Kellermann fcb7233b25 ConfigData: remove obsolete functions 2013-08-04 14:07:50 +02:00
Max Kellermann fe53a376a3 PlaylistPlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann 65842cd99e DatabasePlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann bf6ed643e0 InputPlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann a0beb5fa26 MixerPlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann f54bcc1f16 FilterPlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann ca0d09c50f EncoderPlugin: pass config_param reference 2013-08-04 14:07:50 +02:00
Max Kellermann 81c3224076 OutputPlugin: pass config_param reference 2013-08-04 14:07:49 +02:00
Max Kellermann 7a1d466fb2 DecoderPlugin: pass config_param reference 2013-08-04 13:30:47 +02:00
Max Kellermann 83f4c48c8a ConfigData: move code to block_param, config_param methods 2013-08-04 12:03:56 +02:00
Max Kellermann acd742d225 ConfigData: remove C++ checks 2013-08-03 23:47:31 +02:00
Max Kellermann d1e7b4e381 audio_format: convert to C++ 2013-08-03 21:37:56 +02:00
Max Kellermann 67f591a9ce gcc.h: add macro gcc_unreachable() 2013-08-03 21:34:17 +02:00
Christoph Mende 7ff988275f decoder/mikmod: use MikMod_free() to free the title on libmikmod-3.2
Player_LoadTitle() returns an aligned pointer in libmikmod-3.2 that
cannot be freed with free(). The correct way to do this now is
MikMod_free() which extracts the original pointer from the buffer and
frees that.

Signed-off-by: Christoph Mende <mende.christoph@gmail.com>
2013-08-01 09:30:20 +02:00
Max Kellermann 363050f44c playlist_edit: fix "move" relative to current when there is no current song
Fixes Mantis #3770.
2013-08-01 09:28:03 +02:00
tsufeki d59a332ef9 commmand: fix URI argument in playlistadd 2013-08-01 08:42:22 +02:00
Max Kellermann 105b431e4c PcmBuffer: reset size in Clear()
Fix for Mantis #3806.

"PcmBuffer::Clear clears the buffer but does not reset the size. If
Get is called on the same PcmBuffer later on with a size that is the
same as (or less than) it was before the call to Clear, the "else"
branch is taken and the memory of buffer (at the address of nullptr)
is poisoned instead of the necessary allocation being performed. A
memset or memcpy on the returned pointer (nullptr) causes a
segmentation fault."
2013-08-01 08:33:53 +02:00
Max Kellermann ba79f4c1f9 Tag: check bulk mode in Clear() 2013-07-31 09:02:07 +02:00
Max Kellermann 8b2dcf7018 decoder/ffmpeg: require ffmpeg/libav 0.8
Now that even Debian stable has picked up version 0.8, we can safely
make this a requirement, and remove a lot of old cruft.
2013-07-31 01:01:21 +02:00
Max Kellermann 44621f7326 output/winmm: adapt to PcmBuffer API changes 2013-07-31 00:57:52 +02:00
Max Kellermann 8ead8f7ea6 decoder/mpcdec: remove support for the "old" API
This old version has been obsolete for many years - time to remove it.
2013-07-31 00:43:21 +02:00
Max Kellermann 7f9402bd22 Tag: add method Clear()
Allow reusing Tag instances.
2013-07-31 00:35:05 +02:00
Max Kellermann cbd38327e7 DecoderAPI: pass rvalue reference to decoder_tag()
Avoid duplicating the tag.
2013-07-31 00:34:22 +02:00
Max Kellermann 06f898cc12 tag: convert to C++ 2013-07-30 20:19:53 +02:00
Max Kellermann 6a9ab8bc0e tag: move enum tag_type to TagType.h 2013-07-30 20:10:24 +02:00
Max Kellermann 9a0061c511 encoder_api: convert to C++ 2013-07-30 09:04:05 +02:00
Max Kellermann 7a3aac1843 encoder/lame,twolame: convert to C++ 2013-07-30 08:52:47 +02:00
Max Kellermann da1f4b3ede encoder/wave: convert to C++ 2013-07-30 08:48:53 +02:00
Max Kellermann dac740ee17 encoder/null: convert to C++ 2013-07-30 08:43:19 +02:00
Max Kellermann 28030d7edb include cleanup 2013-07-30 08:39:21 +02:00
Max Kellermann 648196319f output_api: convert to C++ 2013-07-30 08:34:10 +02:00
Max Kellermann c75cb67c44 pcm_buffer: convert to C++ 2013-07-30 08:31:02 +02:00
Max Kellermann cd1bb2bafa Main: fix crash without state file
If no state file is configured, don't chek for state changes.
2013-07-30 08:31:02 +02:00
Max Kellermann a9d2dc6144 pcm_resample: convert to C++ 2013-07-30 00:04:16 +02:00
Max Kellermann 46b9388bb0 PcmConvert: don't memset() in the constructor
This destroys data inside PcmDsd and other attributes.  It was once
necessary, but is not anymore.
2013-07-30 00:03:36 +02:00
Max Kellermann a1a97d663e encoder/flac: convert to C++ 2013-07-29 08:04:34 +02:00
Max Kellermann cac3c159bc pcm_dsd: convert to C++ 2013-07-29 07:56:40 +02:00
Max Kellermann 43166130b5 audio_check: convert to C++ 2013-07-29 07:50:08 +02:00
Max Kellermann 14f21378e3 tag_table: convert to C++ 2013-07-29 07:45:58 +02:00
Max Kellermann bd42aeab46 XiphTags: convert to C++ 2013-07-29 07:42:50 +02:00
Max Kellermann cde6a3a00c tag_handler: convert to C++ 2013-07-29 07:39:58 +02:00
Max Kellermann 96b763067e ape: convert to C++ 2013-07-29 07:39:36 +02:00
Max Kellermann dd5ba062cc tag_id3: convert to C++ 2013-07-28 20:25:45 +02:00
Max Kellermann ba161ec572 song: convert header to C++ 2013-07-28 13:25:12 +02:00
Max Kellermann 43f613d9be decoder_api: convert to C++ 2013-07-28 13:18:48 +02:00
Max Kellermann 2277d143fa decoder/fluidsynth: convert to C++ 2013-07-28 13:16:27 +02:00
Max Kellermann 6b6d9e64bd decoder/pcm: convert to C++ 2013-07-28 13:10:05 +02:00
Max Kellermann f016a99f24 decoder/mpcdec: convert to C++ 2013-07-28 13:04:12 +02:00
Max Kellermann 2eed9d64ce decoder/modplug: convert to C++ 2013-07-28 13:03:04 +02:00
Max Kellermann 1688b6dda9 decoder/mikmod: convert to C++ 2013-07-28 13:03:04 +02:00
Max Kellermann 33aedc887a decoder/wildmidi: convert to C++ 2013-07-28 13:03:04 +02:00