| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
In !NDEBUG, remember which audio_format is stored in every chunk and
every pipe. Check the audio_format of every new data block appended
to the music_chunk, and the format of every new chunk appended to the
music_pipe.
|
|
|
|
| |
Added two assertions.
|
|
|
|
|
|
| |
The value of music_chunk.next is undefined for a chunk returned by
music_pipe_shift(). For more pedantic debugging, poison the reference
before returning the chunk.
|
|
|
|
|
| |
music_pipe_peek() is similar to music_pipe_shift(), but doesn't remove
the chunk. This allows it to be used with a "const" music_pipe.
|
|
|
|
|
|
|
|
| |
Turn the music_pipe into a simple music_chunk queue. The music_chunk
allocation code is moved to music_buffer, and is now managed with a
linked list instead of a ring buffer. Two separate music_pipe objects
are used by the decoder for the "current" and the "next" song, which
greatly simplifies the cross-fading code.
|
|
|
|
|
|
|
| |
Added music_pipe_allocate(), music_pipe_push() and
music_pipe_cancel(). Those functions allow the caller (decoder thread
in this case) to do its own chunk management. The functions
music_pipe_flush() and music_pipe_tag() can now be removed.
|
|
|
|
|
| |
Moved some code from music_pipe_write() and music_pipe_expand(). Only
music_chunk.c should access the music_chunk internals.
|
| |
|
|
|
|
|
| |
The function is unused, since decoder_api() uses music_pipe_write() /
music_pipe_expand() now.
|
|
|
|
|
|
|
| |
This new API gives the caller a writable buffer to the music pipe
chunk. This may allow the caller to eliminate several buffer copies,
because it may manipulate the returned buffer, until it calls
music_pipe_expand().
|
|
|
|
|
| |
The chunk index passed to successor() must be valid, i.e. it must be
smaller than num_chunks.
|
|
|
|
|
|
| |
When a CANCEL command is received, the player should drop all chunks
of the next song. Added new funciton music_pipe_chop() which is used
for that.
|
|
|
|
|
| |
Provide a debug function which asserts on the sample format of all
chunks. Call this function in each iteration of the player main loop.
|
|
|
|
|
| |
Added an additional assertion which checks partial frames in the
existing tail chunk.
|
|
|
|
|
|
| |
Each music chunk can now carry a tag object. Decoder plugins which
support it (e.g. oggvorbis) may use this to inject decoded tags into
their output.
|
|
|
|
|
| |
These two functions will care about memory allocation and deallocation
in the future.
|
|
|
|
| |
The name "num_chunks" expresses the meaning of the variable better.
|
|
|
|
| |
Rename all variables and struct members.
|
|
|
|
| |
Don't bother to pass these values as parameters to tail_chunk().
|
| |
|
|
|
|
| |
Last music_pipe rename patch: renamed the global variable (singleton).
|
|
|
|
| |
Eliminate the deprecated utils.h memory allocation functions.
|
|
|
|
|
|
|
| |
.. and rename dc.audioFormat to dc.in_audio_format. The music pipe
does not need to know the audio format, and its former "audioFormat"
property indicated the format of the most recently added chunk, which
might be confusing when you are reading the oldest chunks.
|
|
|
|
| |
Don't make tail_chunk() calculate the frame size again.
|
|
|
|
| |
Rename all functions to the new prefix.
|
|
|
|
| |
.. and rename ob_chunk to struct music_chunk.
|
|
No CamelCase in the file name. The output_buffer struct is going to
be renamed to music_pipe. There are so many buffer levels in MPD, and
calling this one "output buffer" is wrong, because it's not the last
buffer before the music reaches the output devices.
|