Max Kellermann
5c3c506638
GlobalEvents: lock-less operation using std::atomic
...
Use a bit field instead of a mutex-protected bool array.
2013-01-10 00:57:18 +01:00
Max Kellermann
ecd5eb02c5
event/WakeFD: use eventfd() if available
2013-01-10 00:10:01 +01:00
Max Kellermann
3be57dc4a3
fd_util: support eventfd()
2013-01-10 00:10:01 +01:00
Max Kellermann
a93caf3cfe
GlobalEvents: move code to class WakeFD
2013-01-09 23:47:38 +01:00
Max Kellermann
26ebfc04b0
EventPipe: rename to GlobalEvents
2013-01-09 23:31:43 +01:00
Max Kellermann
8782f6d232
EventPipe: use Mutex instead of GMutex
2013-01-09 23:30:07 +01:00
Max Kellermann
5faf443038
event_pipe.h: convert to C++
2013-01-09 22:37:47 +01:00
Max Kellermann
8eacd13ce7
sig_handlers, log: convert to C++
2013-01-09 22:33:06 +01:00
Max Kellermann
d3e1b72d38
mixer/{alsa,pulse}: convert to C++
2013-01-09 22:25:24 +01:00
Max Kellermann
b5e1bd5705
Playlist.hxx: move prototype to PlaylistGlobal.hxx
2013-01-09 22:23:37 +01:00
Max Kellermann
4bef0a1e62
Playlist: move playlist_increment_version_all() into the class
2013-01-09 22:21:16 +01:00
Max Kellermann
3e5f09be0b
event_pipe: convert to C++
2013-01-09 13:02:13 +01:00
Max Kellermann
e86e77ad67
idle: convert to C++
2013-01-09 13:01:38 +01:00
Max Kellermann
6b4374583a
ReplayGainCoinfig: initialize replay_gain_limit with default value
2013-01-09 12:25:14 +01:00
Max Kellermann
f8a99a391e
ReplayGainCoinfig: make DEFAULT_REPLAYGAIN_LIMIT static
2013-01-09 08:56:16 +01:00
Max Kellermann
2564f763d7
ClientList: don't use GLib
...
Use std::list instead of GList.
2013-01-09 08:12:44 +01:00
Max Kellermann
377a2b9e07
ClientList: add header ClientList.hxx
2013-01-09 08:08:36 +01:00
Max Kellermann
045993001c
zeroconf-bonjour: include Listen.hxx instead of listen.h
...
Should fix the OS X build.
2013-01-09 08:07:26 +01:00
Max Kellermann
affc446690
Queue: use std::stable_sort() instead of g_qsort_with_data()
2013-01-08 16:51:21 +01:00
Max Kellermann
255ee646c2
song: don't use GLib
2013-01-08 16:47:12 +01:00
Max Kellermann
0308ec564e
util/list: don't use GLib
2013-01-08 16:41:36 +01:00
Max Kellermann
6cafec8ae6
Queue: allocate memory with new/delete
2013-01-08 16:35:09 +01:00
Max Kellermann
8ef87be482
Queue: use signed integer instead of G_MAXUINT
...
The check for unsigned underflow is fragile and unreliable.
2013-01-08 16:33:33 +01:00
Max Kellermann
6c57047362
Queue: move code to new class IdTable
2013-01-08 16:11:25 +01:00
Max Kellermann
e29bc6912b
Queue: rename internal types
2013-01-08 16:05:10 +01:00
Max Kellermann
ce57b8b6df
Queue: move HASH_MULT and Item into the Queue class
2013-01-08 16:04:10 +01:00
Max Kellermann
d81a9029db
Queue: move GenerateId() and others into the class
2013-01-08 15:38:10 +01:00
Max Kellermann
bf4311cd9b
decoder/OggUtil,Opus: move code to new class OggSyncState
2013-01-08 11:04:14 +01:00
Max Kellermann
8f7adf79a3
decoder/Opus: read total time
2013-01-08 01:38:02 +01:00
Max Kellermann
97b164d03b
decoder/OggUtil: add OggExpectPageSeek()
2013-01-08 01:30:44 +01:00
Max Kellermann
61e7e531c2
decoder/Opus: move page reader into the decoder class
2013-01-08 01:22:11 +01:00
Max Kellermann
ceb652915f
decoder/Opus: move code to HandlePackets()
2013-01-08 01:20:03 +01:00
Max Kellermann
cdaf504ab8
decoder/Opus: make internal methods inline
2013-01-08 01:19:18 +01:00
Max Kellermann
9fb5aad157
decoder/OggUtil: add OggExpectFirstPage() and OggExpectPageIn()
2013-01-08 01:08:01 +01:00
Max Kellermann
a6301d45f4
decoder/Opus: use OggExpectPage() in main loop
2013-01-08 01:05:59 +01:00
Max Kellermann
b83d069266
decoder/OggUtil: add struct forward declarations
2013-01-08 01:02:06 +01:00
Max Kellermann
960b9a9664
input_stream: add method _cheap_seeking()
...
Move code from the Vorbis decoder plugin.
2013-01-07 23:25:08 +01:00
Max Kellermann
acb45caa42
decoder/ogg_codec: convert to C++
2013-01-07 22:14:52 +01:00
Max Kellermann
39060b528a
decoder/vorbis: convert to C++
2013-01-07 22:04:58 +01:00
Max Kellermann
4a36323f1b
Queue: don't include glib.h
2013-01-07 22:01:56 +01:00
Max Kellermann
c6281b2680
Queue: use C++ random instead of GLib's GRand
2013-01-07 22:00:57 +01:00
Max Kellermann
5b8b7d1412
util/LazyRandomEngine: lazy wrapper for std::mt19937
2013-01-07 21:27:51 +01:00
Max Kellermann
53e5139b99
Queue: move queue_shuffle_order_first() into the class
2013-01-07 21:26:22 +01:00
Max Kellermann
2b8ce83c9b
Queue: move queue_shuffle_order_range() into the class
2013-01-07 21:17:01 +01:00
Max Kellermann
52638c68f5
Playlist: convert functions to methods
2013-01-07 11:35:35 +01:00
Max Kellermann
400ff1c812
DatabaseQueue: pass DatabaseSelection to Add...()
2013-01-07 11:33:00 +01:00
Max Kellermann
d360f17a59
Client: add Partition reference attribute
...
playlist and player_control are deprecated.
2013-01-07 10:59:56 +01:00
Max Kellermann
a6ee6be960
TagPool: use the Mutex class instead of GStaticMutex
2013-01-07 10:49:21 +01:00
Max Kellermann
47911f9544
tag: convert to C++
2013-01-07 10:36:27 +01:00
Max Kellermann
48025c2279
DatabaseLock: use the Mutex class instead of GLib's GMutex
2013-01-07 10:34:55 +01:00
Max Kellermann
a68302e50b
thread/Mutex: don't use std::mutex
...
Use a custom pthread_mutex_t wrapper because std::mutex adds overhead.
2013-01-07 10:33:37 +01:00
Max Kellermann
333a08ebf9
replay_gain_info, ...: use cmath instead of math.h in C++ mode
...
Fixes build problems with mingw32.
2013-01-07 10:19:02 +01:00
Max Kellermann
989c9a7317
filter/replay_gain: convert to C++
2013-01-07 10:17:16 +01:00
Max Kellermann
975370c084
decoder_api.h, ...: add "extern C"
2013-01-07 10:07:40 +01:00
Max Kellermann
c3c776bc6a
mixer_all: convert to C++
2013-01-07 09:05:06 +01:00
Max Kellermann
9f4b906e6c
volume: convert to C++
2013-01-07 09:05:01 +01:00
Max Kellermann
804900df36
audio_config, volume, mixer_all: include cleanup
2013-01-07 08:54:01 +01:00
Max Kellermann
6936c0e2ab
Queue: use std::swap
2013-01-06 23:48:34 +01:00
Max Kellermann
108242042e
queue: convert all functions to methods
2013-01-06 21:33:58 +01:00
Max Kellermann
70652abf97
Queue: add constructor and destructor
2013-01-06 18:59:39 +01:00
Max Kellermann
e202b407ec
Playlist: add constructor and destructor
2013-01-06 18:59:33 +01:00
Max Kellermann
2cc89e60cc
DatabaseQueue: force passing playlist reference to std::bind()
...
Avoid implicit copy.
2013-01-06 18:59:01 +01:00
Max Kellermann
d536944beb
Partition: new class, container for Playlist and PlayerControl
...
This is the beginning of multi-player support. There will be support
for multiple Partition objects in one MPD process.
2013-01-05 02:43:00 +01:00
Max Kellermann
1a8ef3cdab
filter/ReplayGain: add method _set_mode()
...
Push the new mode to the filter instead of accessing global variables
through replay_gain_get_real_mode().
2013-01-05 02:40:33 +01:00
Max Kellermann
7be33eba48
DecoderAPI: don't use replay_gain_get_real_mode()
...
replay_gain_get_real_mode() accesses dangerous globals. Let's just
use the global variable replay_gain_mode, and assume "AUTO" means
"TRACK". At this point, this is the best we can do, because neither
the decoder nor the player should know about the current replay gain
mode. This is applied as a filter in the output thread.
2013-01-05 02:40:32 +01:00
Max Kellermann
46ed91b53d
DecoderAPI: _replay_gain() returns void
...
Let the function decoder_replay_gain() update
decoder_control::replay_gain_db instead of letting each decoder plugin
take care for that.
2013-01-05 02:40:29 +01:00
Max Kellermann
44d260f911
replay_gain_*: convert to C++
2013-01-04 23:50:58 +01:00
Max Kellermann
07249fc395
replay_gain_config: remove unused variable replay_gain_mode_names
2013-01-04 23:49:41 +01:00
Max Kellermann
bc1e8e01f3
DatabaseQueue: pass playlist object
...
Don't use the global variable "g_playlist".
2013-01-04 23:19:46 +01:00
Max Kellermann
fe8e77e556
Client: add "playlist" attribute
...
Reduce access to the global variable "g_playlist".
2013-01-04 23:07:11 +01:00
Max Kellermann
b0833084a6
PlayerControl: initialize all attributes
2013-01-04 23:04:42 +01:00
Max Kellermann
3cacaa5dad
Client: initialize num_subscriptions
2013-01-04 23:02:35 +01:00
Max Kellermann
e89bd30db5
Playlist: pass max_length to playlist_init()
...
Move the configuration lookup to Main.cxx.
2013-01-04 22:55:11 +01:00
Max Kellermann
2a9d933a81
PlayerControl: add constructor and destructor
2013-01-04 22:45:14 +01:00
Max Kellermann
81f3d893d9
player_control.h: convert header to C++
2013-01-04 22:31:53 +01:00
Max Kellermann
05c91082e3
playlist: convert to C++
2013-01-04 22:12:33 +01:00
Max Kellermann
7267558ba1
DecoderThread: move code to destructor
2013-01-04 22:02:52 +01:00
Max Kellermann
ac6803e7b7
DecoderInternal: initialize replay_gain_serial
2013-01-04 22:01:13 +01:00
Max Kellermann
ffabf8b013
DecoderInternal: move initializers to constructor
2013-01-04 21:59:03 +01:00
Max Kellermann
e9b71a0d28
MusicChunk: move functions to methods
2013-01-04 21:38:46 +01:00
Max Kellermann
efbfe66f21
Mutex: new wrapper for std::mutex, replaces GMutex
2013-01-04 21:24:29 +01:00
Max Kellermann
6886063703
MusicPipe: allocate with new/delete
2013-01-04 21:22:07 +01:00
Max Kellermann
c04e1ad401
mpd_error.h: add missing glib.h include
2013-01-04 21:20:10 +01:00
Max Kellermann
223b90d0d4
MusicBuffer: return memory to kernel when stopping playback
...
Use the new HugeAllocator as backend for SliceBuffer and call
HugeDiscard() when the last chunk was returned.
2013-01-04 20:48:28 +01:00
Max Kellermann
692b2cfb79
HugeAllocator: new memory allocator
2013-01-04 20:38:06 +01:00
Max Kellermann
447a86c922
SliceBuffer: lazy initialization
...
Avoid page faults on MPD startup. This saves a lot of memory for an
idle MPD.
2013-01-04 20:29:47 +01:00
Max Kellermann
e3a2bd3a1e
MusicBuffer: move code to template class SliceBuffer
2013-01-04 17:12:21 +01:00
Max Kellermann
f0be6a4b9e
MusicBuffer: allocate with new/delete
2013-01-04 17:03:50 +01:00
Max Kellermann
bdab5d5f6e
MusicBuffer: disable memory poisoning
...
This is harmful for memory usage, because it forces the kernel to
allocate physical memory, even before playback has started. No bug
has been found in a few years with this, so it's safe to assume that
this code is not necessary.
2013-01-04 15:42:15 +01:00
Max Kellermann
15a4246ead
Client, Inotify: use std::list instead of std::deque
...
Random access is not necessary here.
2013-01-04 14:44:06 +01:00
Max Kellermann
9a71845700
crossfade: convert to C++
2013-01-04 10:31:59 +01:00
Max Kellermann
22f0a1547c
buffer, pipe: convert to C++
2013-01-04 10:16:16 +01:00
Max Kellermann
de0ab43bc1
output_*: convert to C++
2013-01-04 09:46:41 +01:00
Max Kellermann
e12cc01aa4
decoder_*: convert to C++
2013-01-04 09:41:45 +01:00
Max Kellermann
71c697288b
pcm_convert: make C++ safe
2013-01-04 08:49:15 +01:00
Max Kellermann
a7d1daee93
CommandListBuilder: use std::list instead of GSList
2013-01-04 01:17:25 +01:00
Max Kellermann
77a99cc61d
CommandListBuilder: rename attributes
2013-01-04 01:16:22 +01:00
Max Kellermann
fb337418a5
Client: move code to class CommandListBuilder
2013-01-04 00:50:13 +01:00
Max Kellermann
9d312ab208
PlaylistFile: reuse classes PlaylistInfo and PlaylistVector
...
.. instead of rolling own classes.
2013-01-04 00:02:09 +01:00
Max Kellermann
06be0a1997
PlaylistInfo: remove the obsolete list_head attribute
2013-01-04 00:01:01 +01:00
Max Kellermann
9e4509b846
ClientNew: initialise the "idle" attributes
...
Make valgrind happy.
2013-01-03 23:59:45 +01:00
Max Kellermann
fc1f0eeda7
Client: add constructor and destructor
...
Move code from client_new() and client_close().
2013-01-03 23:59:45 +01:00
Max Kellermann
3d5c094804
PlaylistFile: fix memory leak
2013-01-03 23:59:45 +01:00
Max Kellermann
6837e5a6a0
Merge branch 'v0.17.x'
2013-01-03 22:53:53 +01:00
Max Kellermann
9761abf3b5
cue_parser: fix CUE files with only one track
...
Track whether _finish() has been called, and deliver all partial
results then. Fixes Mantis ticket 0003621.
2013-01-03 21:58:20 +01:00
Max Kellermann
599a562170
cue_parser: add code comments
2013-01-03 21:38:38 +01:00
Max Kellermann
31da4bc566
cue_parser: fix memory leak
2013-01-03 21:02:59 +01:00
Denis Krjuchkov
01a45a53aa
cmdline: bunch of fixes related to config file selection
...
- fix potential memory leak of system_path
'Potential' because currently g_get_system_config_dirs()
returns single entry on Windows, but that might change.
- remove incorrect g_free() call
It's not required at all because
g_get_system_config_dirs() returns GLib owned memory.
- remove extra semicolon
2013-01-03 19:45:51 +01:00
Max Kellermann
59400d38a9
Client: use std::deque for messages
2013-01-03 18:07:48 +01:00
Max Kellermann
5155b0f608
ClientMessage: turn into a class
2013-01-03 17:58:22 +01:00
Max Kellermann
d919f8d50a
ClientInternal: use std::set for subscriptions
2013-01-03 17:49:47 +01:00
Max Kellermann
d67aa7c19d
ClientNew: allocate/dispose client objects with new/delete
...
Prepare for adding non-trivial attributes.
2013-01-03 17:47:39 +01:00
Max Kellermann
7a982169c9
Client: rename the struct client to class Client
2013-01-03 17:36:28 +01:00
Max Kellermann
f2510d60fa
ls.h: rename to ls.hxx
2013-01-03 17:34:51 +01:00
Max Kellermann
1e0ea57dc4
cmdline: convert to C++
2013-01-03 17:31:38 +01:00
Max Kellermann
70b87f2eb6
client: convert to C++
2013-01-03 11:16:18 +01:00
Max Kellermann
94b2ee627c
decoder_print: convert to C++
2013-01-03 11:14:36 +01:00
Max Kellermann
e30a2dd2d7
listen: convert to C++
2013-01-03 11:05:44 +01:00
Max Kellermann
7e07daf8cb
ls: convert to C++
2013-01-03 11:01:02 +01:00
Max Kellermann
981906ecd1
output_print: convert to C++
2013-01-03 10:58:39 +01:00
Max Kellermann
90fe4c5124
TextFile: convert to a class
2013-01-03 10:16:05 +01:00
Max Kellermann
2452447c81
text_file: convert to C++
2013-01-03 10:12:41 +01:00
Max Kellermann
93f0bb8307
ExcludeList: convert to a class
2013-01-03 10:02:43 +01:00
Max Kellermann
47fc08bffe
exclude: convert to C++
2013-01-03 10:02:33 +01:00
Max Kellermann
c0f2024a2e
exclude: make variables more local
2013-01-03 10:02:26 +01:00
Max Kellermann
28f3e190c8
InotifyQueue: use std::deque instead of GSList
2013-01-03 10:02:26 +01:00
Max Kellermann
c4090b670d
Permission: use std::map instead of GHashTable
2013-01-03 03:11:39 +01:00
Max Kellermann
ddf112378b
permission: convert to C++
2013-01-03 03:09:50 +01:00
Max Kellermann
b25cce464a
client_new: convert to C++
2013-01-03 03:07:16 +01:00
Max Kellermann
a2297558ff
MessageCommands: use std::set instead of GHashTable
2013-01-03 02:40:21 +01:00
Max Kellermann
84cdf0cacc
StickerDatabase: use std::map instead of GHashTable
2013-01-03 02:39:08 +01:00
Max Kellermann
9e99e5bef9
strset: delete obsolete library
2013-01-03 02:31:47 +01:00
Max Kellermann
9023ba4a81
PlaylistVector: use std::list
2013-01-03 02:25:06 +01:00
Max Kellermann
83488848e1
Directory: initialise in default constructor
2013-01-03 02:12:34 +01:00
Max Kellermann
f5a92d6cc3
Directory: add constructor and destructor
2013-01-03 01:36:28 +01:00
Max Kellermann
3e8047e583
Directory: rename struct directory to Directory
2013-01-03 01:10:47 +01:00
Max Kellermann
440ac51cf0
database.h: rename to DatabaseSimple.hxx
2013-01-03 01:06:11 +01:00
Max Kellermann
d3293b889d
database.h: move prototypes to DatabaseGlue.hxx
2013-01-03 01:04:18 +01:00
Max Kellermann
b4b0b34e5a
database.h: eliminate db_*_song()
...
Use the C++ API.
2013-01-03 00:37:18 +01:00
Max Kellermann
fa3d1156a6
playlist_edit: convert to C++
2013-01-03 00:35:05 +01:00
Max Kellermann
0eb05b827f
Directory: turn functions to methods
2013-01-02 23:06:10 +01:00
Max Kellermann
0c245bc271
Directory: make the header C++ only
2013-01-02 22:52:08 +01:00
Max Kellermann
d65ad1bf15
mapper: convert to C++
2013-01-02 22:43:56 +01:00
Max Kellermann
43cbbe111b
song_update: convert to C++
2013-01-02 22:42:12 +01:00
Max Kellermann
9ceb8a717a
sticker: convert to C++
2013-01-02 22:25:17 +01:00
Max Kellermann
8331de424a
PlaylistInfo: rename class, use std::string
2013-01-02 22:16:05 +01:00
Max Kellermann
98dbdf72b3
PlaylistVector: move struct playlist_metadata to PlaylistInfo.hxx
2013-01-02 22:01:04 +01:00
Max Kellermann
51a2d09eb7
db_lock: convert to C++
2013-01-02 20:56:21 +01:00
Max Kellermann
22f0ef6d6b
don't include stdbool.h in C++ sources
...
The "bool" type is built-in.
2013-01-02 20:56:04 +01:00
Max Kellermann
975deca85b
{decoder,player}_thread: convert to C++
2013-01-02 20:36:28 +01:00
Max Kellermann
3bbb502387
*_print: convert to C++
2013-01-02 20:29:24 +01:00
Max Kellermann
0023dffd0b
playlist_vector: convert to C++
2013-01-02 20:25:20 +01:00
Max Kellermann
b715e522cf
db_save, state_file: convert to C++
2013-01-02 20:22:59 +01:00
Max Kellermann
4b0b8315a9
string_util: use const_cast in C++ mode
2013-01-02 20:22:59 +01:00
Max Kellermann
a654f146d1
update: convert to C++
2013-01-02 19:22:15 +01:00
Max Kellermann
67b46a151d
playlist_{any,song,queue}: convert to C++
2013-01-02 19:19:58 +01:00
Max Kellermann
83c7e1e129
configure.ac: disable C++ RTTI
...
RTTI adds overhead to the binary, and we don't need that.
2013-01-02 19:19:58 +01:00
Max Kellermann
a6371e2e66
configure.ac: disable C++ exceptions
...
We don't use exceptions currently. Since allowing exceptions means a
lot of overhead, this commit disables the feature.
2013-01-02 19:12:27 +01:00
Jurgen Kramer
dc32d1f3f3
Add tag support for DSD (DSDIFF & DSF) decoders
2012-10-27 11:42:34 +02:00
Max Kellermann
cbdaa1369f
Merge branch 'v0.17.x'
...
Conflicts:
src/PlaylistSave.cxx
2012-10-05 17:12:44 +02:00
Max Kellermann
8fb20fcdf8
playlist_song: fix potential charset bug in apply_song_metadata()
...
The song's URI must be UTF-8, not filesystem character set.
2012-10-05 17:01:04 +02:00
Max Kellermann
72bf226608
playlist_save: use temp2 instead of temp
...
Fixes minor Windows compatibility problem.
2012-10-05 16:55:30 +02:00
Max Kellermann
d4b5699403
decoder/ffmpeg: support planar audio
...
Implements Mantis feature request 3582.
2012-10-05 16:40:25 +02:00
Max Kellermann
1dc27be015
decoder/ffmpeg: fix playback of planar PCM data
...
Interleaving was completely wrong. This code was never used, so it
didn't have an effect.
2012-10-05 16:38:55 +02:00
Max Kellermann
230a3eb400
decoder/ffmpeg: move code to copy_interleave_frame2()
2012-10-05 16:37:07 +02:00
Max Kellermann
e39382dedd
decoder/ffmpeg: ignore negative time stamps
...
Works around assertion failure in decoder_timestamp().
2012-10-05 16:37:07 +02:00
Max Kellermann
fd016f4507
decoder/ffmpeg: show unsupported sample format name
...
Use av_get_sample_fmt_string() to obtain a human-readable string.
2012-10-05 15:24:53 +02:00
Max Kellermann
9d728b365d
decoder/ffmpeg: pass AVSampleFormat to ffmpeg_sample_format()
...
API simplification.
2012-10-05 15:14:57 +02:00
Max Kellermann
ddc0283339
decoder/ffmpeg: remove duplicate sample format error message
2012-10-05 14:52:30 +02:00
Max Kellermann
b8fdb452be
decoder/flac: support FLAC files inside archives
...
Implement the "scan_stream" method that can read tags from any
input_stream object. This requires a FLAC__IOCallbacks implementation
based on the input_stream API.
2012-10-04 10:37:09 +02:00
Max Kellermann
6b416ce6be
decoder/flac: move flac_scan_file2() to main plugin file
2012-10-04 10:32:52 +02:00
Max Kellermann
ef0392e854
input/file: use errno_quark()
2012-10-04 10:32:04 +02:00
Max Kellermann
efbf184fe8
PlaylistFile, client_file, tag_id3: don't use g_file_error_quark()
...
g_file_error_quark() is meant to be used with the GFileError enum
which does not correspond with errno, but must be converted with
g_file_error_from_errno().
At the same time, this removes g_strerror() use for
g_file_error_quark().
2012-10-04 10:31:53 +02:00
Max Kellermann
ebd90dbb1a
decoder/flac: move callbacks to class FLACInput
2012-10-02 19:59:49 +02:00
Max Kellermann
c9e700f079
decoder/flac: add ctor/dtor to struct flac_data
2012-10-02 19:47:31 +02:00
Max Kellermann
3c2d73d161
decoder/flac: add method FLACMetadataChain::Scan()
...
Merge common code.
2012-10-02 18:24:15 +02:00
Max Kellermann
343de8b8ab
decoder/flac: don't use FLAC__Metadata_SimpleIterator
...
Use the new FLACMetadataIterator C++ class, which is more powerful.
2012-10-02 17:38:21 +02:00
Max Kellermann
c645b906f3
decoder/flac: add C++ libFLAC wrappers
...
Not using libFLAC++ because this library adds a lot of overhead due to
virtual method calls. This new class library is zero-overhead.
2012-10-02 17:37:07 +02:00
Max Kellermann
9c1d1ef268
decoder/flac: eliminate the obsolete "track number" code
...
This has been deprecated by the "embcue" playlist plugin.
2012-10-02 17:36:54 +02:00
Max Kellermann
ade0483641
Merge branch 'v0.17.x'
2012-10-02 17:34:03 +02:00
Gregory Smith
03a401e477
OSX: Set mDataByteSize correctly on AudioBuffers during render.
2012-10-02 17:27:52 +02:00
Max Kellermann
e5fd1924db
decoder/flac: remove unused function flac_tag_load()
2012-10-02 11:39:10 +02:00
Max Kellermann
cbdd042adc
decoder/flac: use C++ compiler
2012-10-02 10:59:56 +02:00
Max Kellermann
ccd7104cdc
{decoder,encoder}/flac: drop support for libFLAC 1.1
2012-10-02 10:04:44 +02:00
Max Kellermann
1cf4b5ce47
encoder/opus: implement lookahead
...
The "opusinfo" program complained about preskip value that was too
small. This commit uses OPUS_GET_LOOKAHEAD to obtain the number of
frames that shall be silence at the beginning.
2012-10-02 09:42:03 +02:00
Max Kellermann
1badb3b5d5
encoder/opus: initialize the "granulepos" packet attribute
2012-10-02 09:16:44 +02:00
Max Kellermann
038d216f18
encoder/{vorbis,opus}: merge code to new class OggStream
2012-10-02 09:06:03 +02:00
Max Kellermann
9e3f843291
encoder/vorbis: accept floating point input samples
...
Improves quality by not squeezing 32 bit samples down to 16 bit, and
then back to 32 bit floating point. Reduces CPU usage by skipping a
conversion step.
2012-10-02 08:39:39 +02:00
Max Kellermann
e166ddf46f
pcm_channels: support floating point samples
2012-10-02 08:39:12 +02:00
Max Kellermann
31e1be7570
encoder/opus: call ogg_stream_flush() only in the last iteration
...
If there are multiple pages, the last partial page must be flushed.
2012-10-02 08:13:48 +02:00
Max Kellermann
d793b7c03f
encoder/opus: new encoder plugin for the Opus codec
2012-10-02 00:45:24 +02:00
Max Kellermann
9a715267ad
output/shout: move code to my_shout_configure()
...
Eliminate the evil goto.
2012-10-02 00:39:21 +02:00
Max Kellermann
eafa432cc6
encoder/vorbis: use C++ compiler
2012-10-02 00:37:19 +02:00
Max Kellermann
d95e538020
Merge branch 'v0.17.x'
2012-10-02 00:36:05 +02:00
Max Kellermann
adbe8c409a
output/{recorder,shout}: call encoder_read() in a loop
...
This is necessary for Ogg packets that span more than one page.
2012-10-02 00:26:40 +02:00
Max Kellermann
58e600f408
output/recorder: move code to _write_to_file()
2012-10-02 00:26:40 +02:00
Max Kellermann
d34e55c370
output/recorder: fix write() error check
...
We can only check for negative values if the variable is signed.
2012-10-02 00:20:42 +02:00
Max Kellermann
fbcbcdc001
output/recorder: make variables more local
2012-10-02 00:20:32 +02:00
Max Kellermann
4227a325a5
output/httpd: make variables more local
2012-10-02 00:20:13 +02:00
Max Kellermann
d115507502
encoder/vorbis: make variables more local
2012-10-02 00:20:01 +02:00
Max Kellermann
43d8252050
output/recorder, test/*: invoke encoder_read() after _open()
...
Make sure the file header gets written at the beginning, before
_write() gets called.
2012-10-02 00:18:18 +02:00
Max Kellermann
674b4ab647
output/shout: eliminate struct shout_buffer
...
Move the raw buffer to struct shout_data.
2012-10-02 00:18:04 +02:00
Max Kellermann
fe8fc1081a
output/shout: remove shout_buffer.len
...
Make it a local variable instead.
2012-10-02 00:17:53 +02:00
Max Kellermann
c7748fedab
output/shout: fix memory leak in error handler
2012-10-02 00:17:27 +02:00
Max Kellermann
c392efb481
output/shout: make variables more local
2012-10-02 00:17:17 +02:00
Max Kellermann
d0c3fa0150
main: use C++ compiler
2012-09-28 00:40:00 +02:00
Max Kellermann
609f6ce66d
PlaylistFile: use std::list instead of GPtrArray
2012-09-28 00:10:02 +02:00
Max Kellermann
7298b6c846
stored_playlist, playlist_save: use C++ compiler
2012-09-28 00:08:15 +02:00
Max Kellermann
acec9c4fd7
stored_playlist: make variables more local
2012-09-28 00:05:21 +02:00
Max Kellermann
9cdbde4f5e
output: new option "tags" may be used to disable sending tags
...
Implements Mantis ticket 0003340.
2012-09-25 23:31:07 +02:00
Max Kellermann
33364edfb3
decoder/adplug: new decoder plugin
2012-09-25 22:03:44 +02:00
Simon Hosie
5e9ccdec63
decoder/vorbis: skip 16 bit quantisation, provide float samples
...
Internally the vorbis (non-Tremor) decoder is working in floating
point, and it's not really necessary to cut the output back to 16-bit
if the soundcard or OS supports higher resolution.
The decoder can be trivially modified to bypass its internal
quantisation and produce floating-point output, and a separate
quantisation can be used as appropriate to the platform.
2012-09-25 21:27:50 +02:00
Max Kellermann
071aca60be
decoder/vorbis: rename local variables
2012-09-25 21:26:27 +02:00
Max Kellermann
133e4d5c51
decoder/vorbis: improved support for initial seek
...
Call decoder_get_command() before doing anything else.
2012-09-25 21:26:27 +02:00
Max Kellermann
fd56461d5f
decoder/vorbis: make variables more local
2012-09-25 21:11:38 +02:00
Max Kellermann
a5d8b27671
command.h: move function prototypes to AllCommands.h
2012-09-25 12:20:36 +02:00
Max Kellermann
f3f25d5d40
command.h: remove obsolete command_success() prototype
...
This lives in protocol/result.h now.
2012-09-25 12:20:33 +02:00
Max Kellermann
f118812c34
playlist: include cleanup
2012-09-25 12:20:30 +02:00
Max Kellermann
98dbc95913
rename CommandError.h to CommandError.hxx
2012-09-25 12:20:15 +02:00
Max Kellermann
145c1d214c
*Commands: remove extern"C" from C++ headers
2012-09-25 12:19:18 +02:00
Max Kellermann
b62a8e3e3e
command: add COMMAND_RETURN_IDLE
...
Eliminate the hack in handle_idle().
2012-09-25 12:04:20 +02:00
Max Kellermann
e47240931a
command: add documentation for "enum command_return"
2012-09-25 12:02:08 +02:00
Max Kellermann
a84874426d
command: remove enum integer values
...
Just use the values assigned by the compiler.
2012-09-25 12:01:53 +02:00
Max Kellermann
f38dfd9231
command: rename to AllCommands.cxx
2012-09-25 11:56:37 +02:00
Max Kellermann
510c4a3ef1
command: move remaining handlers to OtherCommands.cxx
2012-09-25 11:44:49 +02:00
Max Kellermann
e7e52c24f5
gcc.h: require gcc 4.6
...
We use range-based for and nullptr, which was not implemented prior to
gcc 4.6.
2012-09-25 11:39:46 +02:00
Max Kellermann
e2a574e2a0
Merge branch 'v0.17.x'
...
Conflicts:
src/locate.c
2012-09-25 11:39:01 +02:00
Max Kellermann
ba6ef53ef9
decoder_control: remove MixRamp debug messages
...
These are confusing, and since MixRamp development has ceased, not
useful to anybody.
2012-09-25 11:08:16 +02:00
Max Kellermann
7088a679a2
decoder/wavpack: support all APEv2 tags
...
WavPack tags are always APEv2, by definition. Reuse the tag_table
from tag_ape.c, instead of rolling our own.
2012-09-25 09:37:16 +02:00
Max Kellermann
04c02a1eb8
locate: cast enum tag_type to int before comparing with integer
...
Avoids clang pickiness. This code is not correct, but we'll fix that
another day.
2012-09-22 09:48:27 +02:00
Max Kellermann
1536b5a9d6
src/decoder/opus: new decoder plugin for the Opus codec
...
Using libopus and libogg.
2012-09-05 23:01:17 +02:00
Max Kellermann
bab756a5d0
decoder/{flac,vorbis}: move tag table to XiphTags.c
...
Merge duplicate data.
2012-09-05 22:56:57 +02:00
Max Kellermann
886255e38a
db/SimpleDatabasePlugin: fix memory leak in Visit()
...
When visiting a song, GetSong() was called, but this object was never
returned by calling ReturnSong(). This patch locks the database only
once in Visit() and passes the original song object to the visitor,
avoiding the copy.
2012-09-05 20:56:20 +02:00
Max Kellermann
0240e75426
db_lock: add C++ helper class ScopeDatabaseLock
2012-09-05 20:52:02 +02:00
Max Kellermann
7102ed8026
decoder/ogg_codec: return UNKNOWN on error
2012-09-04 13:46:12 +02:00
Max Kellermann
ebf481e1a1
decoder/ogg_common: rename to ogg_codec.c
2012-09-04 13:05:12 +02:00
Max Kellermann
5a52e91350
decoder/ogg_common: pass decoder to _type_detect()
...
Allow the function to be cancelled.
2012-09-04 12:49:02 +02:00
Max Kellermann
18e458154a
decoder/ogg_common: apply coding style
2012-09-04 11:52:18 +02:00
Max Kellermann
015e1ab183
decoder/_ogg_common: rename to ogg_common.c
2012-09-04 11:28:36 +02:00
Max Kellermann
2a4c799471
Merge branch 'v0.17.x'
2012-09-04 11:28:13 +02:00
Max Kellermann
41487426f5
decoder/_ogg_common: fix buffer size check
...
Fixes potential access to uninitialised memory.
2012-09-04 11:22:15 +02:00
Max Kellermann
0d24250aa7
decoder/_ogg_common: simplify the large "if" expression
2012-09-04 11:22:05 +02:00
Max Kellermann
013e8479af
AudioCompress: abort on out-of-memory
...
This library crashes on out-of-memory (NULL pointer dereference).
There's not much useful MPD can do in such a situation, so let's
explicitly abort instead, just like GLib does.
2012-09-03 22:45:33 +02:00
Max Kellermann
27535a7f78
update_walk: fix unsafe readlink() usage
2012-09-03 22:41:04 +02:00
Max Kellermann
333d226ed0
SongFilter: convert to a C++ class
2012-08-29 20:19:02 +02:00
Max Kellermann
04a9dec952
playlist_print: rename to PlaylistPrint.cxx
2012-08-29 20:17:13 +02:00
Max Kellermann
6ee76b7154
DatabaseSelection: add method Match()
2012-08-29 20:03:37 +02:00
Max Kellermann
36b1c08ad7
locate: rename to SongFilter.cxx
2012-08-29 19:12:26 +02:00
Max Kellermann
7b35d5e9d4
queue_print: rename to QueuePrint.cxx
2012-08-29 19:07:30 +02:00
Max Kellermann
6d4ca071a5
dbUtils.h: eliminate this header
2012-08-29 18:55:49 +02:00