Commit Graph

6448 Commits

Author SHA1 Message Date
Max Kellermann
b5e31c89c0 CrossFade: merge "return" statements using "break" 2013-10-26 13:49:15 +02:00
Max Kellermann
e898400fbd CrossFade: use nullptr instead of NULL 2013-10-26 13:49:15 +02:00
Max Kellermann
3ac7de7a22 util/NumberParser: add ParseFloat() 2013-10-26 13:49:15 +02:00
Max Kellermann
ade66e7ece util/NumberParser: indent 2013-10-26 13:49:15 +02:00
Max Kellermann
17dc638c18 command: new command "readcomments" lists arbitrary file tags 2013-10-25 19:35:40 +02:00
Max Kellermann
d6e28c42e5 ReplayGainInfo: refactor to a class 2013-10-25 19:12:46 +02:00
Max Kellermann
6d475c40de ReplayGainInfo: use CamelCase for struct name 2013-10-25 19:12:38 +02:00
Max Kellermann
ed7891bf01 ReplayGainConfig: add "pure" attributes 2013-10-25 19:12:29 +02:00
Max Kellermann
e17da71a70 output/httpd: support HEAD requests 2013-10-25 00:32:48 +02:00
Max Kellermann
610bef9ff5 output/httpd: remove bogus assertion 2013-10-25 00:26:02 +02:00
Max Kellermann
961c7d0f78 OtherCommands: re-add the "volume" command
This command was removed by commit 206392ad (MPD 0.16), even though it
was been proven useful for some very simple clients.  On request, I
add it to the protocol again.
2013-10-25 00:20:36 +02:00
Max Kellermann
c1ba47beee MixerAll, Volume: add "pure" attributes 2013-10-25 00:15:55 +02:00
Max Kellermann
ac8e5be9f4 decoder/opus: support replay gain
Parse the R128_TRACK_GAIN comment string.
2013-10-24 23:56:06 +02:00
Max Kellermann
c76952534e decoder/Opus: implement seeking 2013-10-24 23:26:58 +02:00
Max Kellermann
f0060718de decoder/opus: provide time stamps
Call decoder_timestamp().  This is not necessary currently, but will
be as soon as we implement seeking.
2013-10-24 23:26:54 +02:00
Max Kellermann
982ab9e496 decoder/opus: show song duration during playback
This requires seeking to the end-of-stream, checking its granulepos,
and then seeking back to the previous file position.  We do this only
for local files.
2013-10-24 23:26:46 +02:00
Max Kellermann
b74bcf2274 decoder/opus: call ogg_stream_reset() in OggSeekPageAtOffset() 2013-10-24 23:23:23 +02:00
Max Kellermann
dc328e0c4a decoder/opus: move code to OggSeekPageAtOffset() 2013-10-24 20:40:23 +02:00
Max Kellermann
92c85bd20d decoder/opus: move SeekFindEOS() to OggFind.cxx 2013-10-24 20:33:12 +02:00
Max Kellermann
f629eb8cb2 decoder/opus: make opus_sample_rate constexpr 2013-10-24 20:14:47 +02:00
Max Kellermann
e4f41ff61d decoder/opus: use std::copy_n() instead of memcpy() 2013-10-24 20:06:50 +02:00
Max Kellermann
dae6ecb680 decoder/opus: support all core tag names 2013-10-24 20:01:14 +02:00
Max Kellermann
a57a7b1a76 decoder/opus: move code to ParseOpusTagName() 2013-10-24 20:01:14 +02:00
Max Kellermann
03073b366b decoder/opus: use delete[] for the OpusReader::ReadString() result 2013-10-24 20:01:14 +02:00
Max Kellermann
1bd8a9e744 DecoderAPI: add "pure" attributes 2013-10-24 20:01:05 +02:00
Max Kellermann
0a5c991ab5 decoder/wavpack: move variable declarations 2013-10-23 23:20:55 +02:00
Max Kellermann
93deb84499 input_stream: rename struct to InputStream 2013-10-23 23:12:02 +02:00
Max Kellermann
c4d4011c63 InputInternal: remove obsolete library 2013-10-23 23:10:27 +02:00
Max Kellermann
3d12f8d246 UriUtil: uri_remove_auth() returns std::string 2013-10-23 21:58:44 +02:00
Max Kellermann
f1027ed198 InputStream: add method Rewind() 2013-10-23 21:58:44 +02:00
Max Kellermann
fe3c5e4e8e DecoderThread: remove unused function deconst_plugin() 2013-10-23 21:57:28 +02:00
Max Kellermann
d110131ad6 Playlist: refresh new tags after database update
Fixes regression from commit e96779d.
2013-10-22 01:05:29 +02:00
Max Kellermann
10bc1a9acc decoder/flac: fix tag name comparison 2013-10-22 01:05:09 +02:00
Max Kellermann
3f899f83ff Playlist*, Queue: use GetDatabase() overload without Error
Don't use IgnoreError() when there's an overload that does not try to
give us one.
2013-10-22 00:59:56 +02:00
Max Kellermann
fc05768374 Queue: add method ModifyAtPosition() 2013-10-22 00:59:56 +02:00
Max Kellermann
03b57df630 Queue: ModifyAtOrder() does not increment version
Leave that to the caller, allowing it to modify multiple items at a
time.
2013-10-22 00:59:56 +02:00
Max Kellermann
4de3b6dc80 Partition: add method DatabaseModified() 2013-10-22 00:59:55 +02:00
Max Kellermann
c7bbfef19a UpdateRemove: include cleanup 2013-10-22 00:59:55 +02:00
Max Kellermann
7f1130b52b DecoderList: fix the decoder_plugin_from_mime_type() return value 2013-10-22 00:59:55 +02:00
Max Kellermann
2d696f46c3 PlaylistEdit: compare Song URIs in DeleteSong()
Fixes purging deleted songs from the queue after update.  Fixes
regression from commit e96779d.
2013-10-22 00:13:39 +02:00
Max Kellermann
2f43e4bc66 Playlist: copy stream tags from the PlayerThread
Finally restores an important feature that has been broken for several
months when the PlayerThread started working with Song copies instead
of pointers to the Queue's Song instances (commit e96779d).
2013-10-22 00:02:21 +02:00
Max Kellermann
f8c23488c9 Song: add method ReplaceTag() 2013-10-21 23:53:30 +02:00
Max Kellermann
1e2cda9239 Partition: add methods TagModified(), SyncWithPlayer()
Move code from class Instance.
2013-10-21 23:40:52 +02:00
Max Kellermann
20cba9e89f Song: pass reference to song_equals() 2013-10-21 23:19:15 +02:00
Max Kellermann
f6d67ac260 DecoderThread: simplify the decoder lookup loop
Merge the two loops into one, and eliminate the GSList.
2013-10-21 22:15:57 +02:00
Max Kellermann
74904b9cf2 DecoderList: reimplement _for_each() with function object 2013-10-21 22:02:19 +02:00
Max Kellermann
82059645f1 decoder: rename the struct to "Decoder" 2013-10-21 21:12:37 +02:00
Max Kellermann
13e9f18403 DecoderPlugin: move functions into the struct 2013-10-21 21:08:12 +02:00
Max Kellermann
875821f2ba SongUpdate: use tag_file_scan()
Eliminate duplicate code.
2013-10-21 21:05:59 +02:00
Max Kellermann
cc3be3aeed TagFile: use IgnoreError() 2013-10-21 20:52:59 +02:00
Max Kellermann
72af3c0489 decoder_plugin: rename struct to DecoderPlugin 2013-10-21 20:31:34 +02:00
Max Kellermann
65e54f6ed1 decoder/modplug: use WritableBuffer instead of GByteArray
Eliminate the temporary buffer, do I/O right into the WritableBuffer.
2013-10-21 20:22:53 +02:00
Max Kellermann
10196496f3 decoder/modplug: move code to LoadModPlugFile() 2013-10-21 20:19:27 +02:00
Max Kellermann
86f08862e4 playlist/EmbeddedCue: use std::string for the "cuesheet" attribute 2013-10-21 10:53:31 +02:00
Max Kellermann
83c726a34f GetBaseUTF8 2013-10-21 10:50:22 +02:00
Max Kellermann
a0415f73d4 archive/bz2: remove unused function bz2_quark() 2013-10-21 10:50:22 +02:00
Max Kellermann
93068f10ec fs/AllocatedPath: don't include glib.h 2013-10-21 10:27:14 +02:00
Max Kellermann
7142c81c05 DirectorySave: use Directory::GetName() 2013-10-21 10:04:59 +02:00
Max Kellermann
c0421a57da input/curl: don't use GLib's typedef "gushort" 2013-10-21 09:54:21 +02:00
Max Kellermann
8f1ec1dfdf util/NumberParser: utilities for parsing numbers from ASCII strings 2013-10-21 09:48:31 +02:00
Max Kellermann
222dc8a239 Util/ASCII: add StringEqualsCaseASCII() overload with length
Replaces GLib's g_ascii_strncasecmp().
2013-10-21 08:42:55 +02:00
Max Kellermann
0e4d2e7277 Util/ASCII: add function StringEqualsCaseASCII()
Replaces GLib's g_ascii_strcasecmp().
2013-10-20 23:09:51 +02:00
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