| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Some plugins used the APE or ID3 tag loader as a fallback when their
own methods of loading tags did not work. Move this code out of all
decoder plugins, into song_file_update().
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The stream_decode() and file_decode() methods returned a boolean,
indicating whether they were able to decode the song. This is
redundant, since we already know that: if decoder_initialized() has
been called (and dc.state==DECODE), the plugin succeeded. Change both
methods to return void.
|
|
|
|
| |
Renamed functions and variables.
|
|
|
|
| |
No CamelCase file names.
|
|
|
|
|
|
| |
Instead of having a seprate try_decode() method, let the
stream_decode() and file_decode() methods decide whether they are able
to decode the song.
|
|
|
|
|
| |
Updated documentation on the stream_decode() and file_decode() return
values.
|
|
|
|
|
| |
Instead of checking the stream_types bit set, we can simply check
whether the methods stream_decode() and file_decode() are implemented.
|
|
|
|
| |
Provide an API for submitting additional tags from the stream.
|
|
|
|
|
|
| |
Don't pass the "seekable" flag with every decoder_data() invocation.
Since that flag won't change within the file, it is enough to pass it
to decoder_initialized() once per file.
|
|
|
|
|
| |
Currently, there is no way to dynamically load decoder plugins, thus
we don't need a dynamic list to manage them.
|
| |
|
|
|
|
|
|
|
| |
"LOG_H" is a macro which is also used by ffmpeg/log.h. This is
ffmpeg's fault, because short macros should be reserved for
applications, but since it's always a good idea to choose prefixed
macro names, even for applications, we are going to do that in MPD.
|
|
|
|
|
| |
Don't return 0/-1 on success/error, but true/false. Instead of int,
use bool for storing flags.
|
|
|
|
|
|
|
| |
A decoder_flush() invocation was missing in the FLAC plugin, resulting
in casual assertion failures due to a wrong assumption about the last
chunk's audio format. It's much easier to remove that decoder_flush()
function and make the decoder thread call ob_flush().
|
|
|
|
|
| |
Call ob_clear() in decoder_command_finished() instead of implementing
that call in every decoder plugin.
|
|
|
|
| |
Renamed inputStream.c and inputStream_file.c.
|
|
|
|
|
| |
Provide a struct type which can be forward-declared. The typedef
InputStream is deprecated now.
|
|
|
|
| |
"bool" should be used in C99 programs for boolean values.
|
|
|
|
|
| |
Why have a "_func" prefix on all method names? Also don't typedef the
methods, there is no advantage in that.
|
|
|
|
|
| |
Do full C99 integer type conversion in all modules which were not
touched by Eric's merged patch.
|
|
|
|
|
| |
Get rid of CamelCase, and don't use a typedef, so we can
forward-declare it, and unclutter the include dependencies.
|
|
|
|
|
| |
The ID3 code uses only the public tag API, but is otherwise
unrelated. Move it to a separate source file.
|
|
|
|
|
| |
Getting rid of CamelCase; not having typedefs also allows us to
forward-declare the structures.
|
|
|
|
|
|
| |
The decoder plugins need this type, so export it in the public API.
This allows is to remove "decode.h" from "decoder_api.h", uncluttering
the API namespace some more.
|
|
|
|
|
| |
Now that "dc" is available here, we don't have to pass it to
decoder_is_idle() and decoder_is_starting() anymore.
|
|
|
|
|
|
|
|
|
| |
On our way to stabilize the decoder API, we will one day remove the
input stream functions. The most basic function, read() will be
provided by decoder_api.h with this patch. It already contains a loop
(still with manual polling), error/eof handling and decoder command
checks. This kind of code used to be duplicated in all decoder
plugins.
|
|
|
|
|
|
|
| |
With the functions decoder_plugin_register() and
decoder_plugin_unregister(), decoder plugins can register a
"secondary" plugin, like the flac input plugin does this for
"oggflac".
|
| |
|
|
|
|
| |
Continuing the effort to rename InputPlugin to decoder_plugin...
|
|
|
|
|
|
| |
"decoder plugin" is a better name than "input plugin", since the
plugin does not actually do the input - InputStream does. Also don't
use typedef, so we can forward-declare it if required.
|
|
|
|
|
| |
(Ab)use the decoder_command enumeration, which has nearly the same
values and the same meaning.
|
|
|
|
|
|
| |
The wavpack decoder plugin implements a hack, and it needs the song
URL for that. This API (and the hack) should be revised later, but
add that function for now.
|
|
|
|
|
| |
Provide access to seeking for the decoder plugins; they have to know
where to seek, and they need a way to tell us that seeking has failed.
|
|
|
|
|
|
|
| |
Some decoder commands are implemented in the decoder plugins, thus
they need to have an API call to signal that their current command has
been finished. Let them use the new decoder_command_finished()
instead of the internal dc_command_finished().
|
|
|
|
|
|
| |
Another big patch which hides internal mpd APIs from decoder plugins:
decoder plugins regularly poll dc->command; expose it with a
decoder_api.h function.
|
|
|
|
|
|
| |
InputPlugin is the API which is implemented by a decoder plugin. This
belongs to the public API/ABI, so move it to decoder_api.h. It will
later be renamed to something like "decoder_plugin".
|
|
|
|
|
| |
Similar to the previous patch: pass total_time instead of manipulating
dc->totalTime directly.
|
|
|
|
|
|
| |
dc->audioFormat is set once by the decoder plugins before invoking
decoder_initialized(); hide dc->audioFormat and let the decoder pass
an AudioFormat pointer to decoder_initialized().
|
|
|
|
|
|
| |
We are now beginning to remove direct structure accesses from the
decoder plugins. decoder_clear() and decoder_flush() mask two very
common buffer functions.
|
|
|
|
|
| |
Moved all of the player-waiting code to decoder_data(), to make
OutputBuffer more generic.
|
|
|
|
|
|
|
| |
decoder_initialized() sets the state to DECODE_STATE_DECODE and wakes
up the player thread. It is called by the decoder plugin after its
internal initialization is finished. More arguments will be added
later to prevent direct accesses to the DecoderControl struct.
|
|
The decoder struct should later be made opaque to the decoder plugin,
because maintaining a stable struct ABI is quite difficult. The ABI
should only consist of a small number of stable functions.
|