| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| |
| |
| |
| |
| | |
Moved all the code which depends on the decoder plugins to a separate
source. That allows leaner test programs.
|
| |
| |
| |
| |
| | |
The while() clause resets the "plugin" variable. We don't need to
reset it at the end of the loop body.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The "off_t" type may change when you enable or disable large file
support on 32 bit platforms. This caused severe ABI problems within
MPD when we enabled LFS for the first time: two sources included
config.h and sys/types.h in different order, and had different off_t
sizes - leading to memory corruption because of ABI incompatibility.
This patch attempts to get rid of all public "off_t" uses: it removes
"off_t" from the input_stream ABI/API, and switches to GLib's 64 bit
"goffset" type. This may hurt 32 bit embedded platforms a tiny bit,
but that's not even measurable.
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| |
| | |
On 32 bit systems with large file support enabled (i.e. "sizeof(off_t)
> sizeof(size_t)") gcc emits a warning because a size_t cast to off_t
can never become negative.
|
| |
| |
| |
| |
| |
| | |
When there is no Content-Type response header, try the "mad" decoder
plugin. It uesd to be named "mp3", and we forgot to change the
fallback name in decoder_thread.c.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a received chunk of data has only icy-metadata, there was no
usable data left for input_curl_read() to return, and thus it returned
0 bytes. "0" however is a special value for "end of file" or
"error". This patch makes input_curl_read() read more data from the
socket, until the read request can be fulfilled (or until there's
really EOF).
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Tracking the "elapsed" time from the chunks which we have sent to the
output pipe is very imprecise: since we have implemented the music
pipe, we're sending large number of chunks at once, giving the
"elapsed" time stamp a resolution of usually more than a second.
This patch changes the source of this information to the outputs. If
a chunk has been played by all outputs, the "elapsed" time stamp is
updated.
The new command PLAYER_COMMAND_REFRESH makes the player thread update
its status information: it tells the outputs to update the chunk time
stamp. After that, player_control.elapsed_time is current.
|
| |
| |
| |
| |
| |
| | |
pc.next_song might be non-NULL even if player.queued==true: when the
decoder has started decoding the next song, but the result hasn't been
read yet.
|
| |
| |
| |
| |
| | |
Sending PLAYER_COMMAND_STOP followed by PLAYER_COMMAND_QUEUE does the
same. PLAYER_COMMAND_PLAY is redundant.
|
| |
| |
| |
| |
| | |
After some of the commands, the player thread must have reset the
pc.next_song attribute.
|
| | |
|
| |
| |
| |
| |
| | |
Without the player error code, it errored_song variable is not used,
and should be cleared, to avoid invalid access in pc_song_deleted().
|
| |
| |
| |
| |
| |
| | |
The new player_status struct replaces a bunch of playerGetX()
functions. When we add proper locking to the player_control struct,
we will only need to lock once for the "status" command.
|
| |
| |
| |
| | |
This lets us eliminate the static fixed-size buffer.
|
| |
| |
| |
| |
| |
| |
| | |
No more CD player emulation. The current behaviour of "previous" is
difficult for a client to predict, because it does not definitely know
the current position within the song. If a client wants to restart
the current song, it can always send "playid".
|
| |
| |
| |
| |
| | |
AC_SYS_LARGEFILE defines macros for config.h. If we don't include
config.h, we don't get large file support.
|
| | |
|
| |
| |
| |
| | |
This fixes mpg123 support.
|
| |
| |
| |
| |
| |
| | |
If nothing has changed since the last save, don't save the state
file. Saving will spin up the hard drive, which is undesirable on
hosts where MPD is idling in background.
|
| | |
|
|\|
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Usually, we read our "artist" tag from ffmpeg's "author" tag. In some
cases however (e.g. APE), this tag is named "artist". This patch
implements a fallback: if no "author" is found, MPD tries to use
"artist".
|
| |
| |
| |
| |
| |
| | |
When the ID3 tag in an AAC file is larger than the current buffer, the
function decoder_buffer_consume() aborts. By using the new function
decoder_buffer_skip() instead, we can safely skip the ID3 tag.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Include CoreServices/CoreServices.h.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This patch implements a light-weight inotify library, and watches all
directories below the music directory. It updates all directories
where files changed after a delay of 5 seconds.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Allow most printable characters in unquoted words. The tokenizer
patch introduced very strict requirements for command parameters -
those were undocumented, and we're reverting the strictness now.
|
| |
| |
| |
| |
| | |
"rescan" is the same as "update", but it discards existing songs in
the database.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Don't call g_error(), which will abort the process and dump core.
This patch does not affect all the config_get_X() functions. These
need some more refactoring.
|
| | |
|
| |
| |
| |
| | |
Don't call g_error(), which will abort the process and dump core.
|
| |
| |
| |
| | |
Don't call g_error(), which will abort the process and dump core.
|
| | |
|
| |
| |
| |
| |
| | |
Duplicate the path string within update.c, do not expect an allocated
string as parameter.
|
| | |
|
| |
| |
| |
| |
| | |
When parsing the songlength database fails, the code forgot to free
the memory allocated by the raw file data.
|