MPD 0.17~git
|
The MPD Decoder API. More...
#include "check.h"
#include "decoder_command.h"
#include "decoder_plugin.h"
#include "input_stream.h"
#include "replay_gain_info.h"
#include "tag.h"
#include "audio_format.h"
#include "conf.h"
#include <stdbool.h>
Go to the source code of this file.
Functions | |
void | decoder_initialized (struct decoder *decoder, const struct audio_format *audio_format, bool seekable, float total_time) |
Notify the player thread that it has finished initialization and that it has read the song's meta data. | |
enum decoder_command | decoder_get_command (struct decoder *decoder) |
Determines the pending decoder command. | |
void | decoder_command_finished (struct decoder *decoder) |
Called by the decoder when it has performed the requested command (dc->command). | |
double | decoder_seek_where (struct decoder *decoder) |
Call this when you have received the DECODE_COMMAND_SEEK command. | |
void | decoder_seek_error (struct decoder *decoder) |
Call this right before decoder_command_finished() when seeking has failed. | |
size_t | decoder_read (struct decoder *decoder, struct input_stream *is, void *buffer, size_t length) |
Blocking read from the input stream. | |
void | decoder_timestamp (struct decoder *decoder, double t) |
Sets the time stamp for the next data chunk [seconds]. | |
enum decoder_command | decoder_data (struct decoder *decoder, struct input_stream *is, const void *data, size_t length, uint16_t kbit_rate) |
This function is called by the decoder plugin when it has successfully decoded block of input data. | |
enum decoder_command | decoder_tag (struct decoder *decoder, struct input_stream *is, const struct tag *tag) |
This function is called by the decoder plugin when it has successfully decoded a tag. | |
float | decoder_replay_gain (struct decoder *decoder, const struct replay_gain_info *replay_gain_info) |
Set replay gain values for the following chunks. | |
void | decoder_mixramp (struct decoder *decoder, float replay_gain_db, char *mixramp_start, char *mixramp_end) |
Store MixRamp tags. |
The MPD Decoder API.
This is the public API which is used by decoder plugins to communicate with the mpd core.
Definition in file decoder_api.h.
void decoder_command_finished | ( | struct decoder * | decoder | ) |
Called by the decoder when it has performed the requested command (dc->command).
This function resets dc->command and wakes up the player thread.
decoder | the decoder object |
enum decoder_command decoder_data | ( | struct decoder * | decoder, |
struct input_stream * | is, | ||
const void * | data, | ||
size_t | length, | ||
uint16_t | kbit_rate | ||
) |
This function is called by the decoder plugin when it has successfully decoded block of input data.
decoder | the decoder object |
is | an input stream which is buffering while we are waiting for the player |
data | the source buffer |
length | the number of bytes in the buffer |
enum decoder_command decoder_get_command | ( | struct decoder * | decoder | ) |
Determines the pending decoder command.
decoder | the decoder object |
void decoder_initialized | ( | struct decoder * | decoder, |
const struct audio_format * | audio_format, | ||
bool | seekable, | ||
float | total_time | ||
) |
Notify the player thread that it has finished initialization and that it has read the song's meta data.
decoder | the decoder object |
audio_format | the audio format which is going to be sent to decoder_data() |
seekable | true if the song is seekable |
total_time | the total number of seconds in this song; -1 if unknown |
void decoder_mixramp | ( | struct decoder * | decoder, |
float | replay_gain_db, | ||
char * | mixramp_start, | ||
char * | mixramp_end | ||
) |
Store MixRamp tags.
decoder | the decoder object |
replay_gain_db | the ReplayGain adjustment used for this song |
mixramp_start | the mixramp_start tag; may be NULL to invalidate |
mixramp_end | the mixramp_end tag; may be NULL to invalidate |
size_t decoder_read | ( | struct decoder * | decoder, |
struct input_stream * | is, | ||
void * | buffer, | ||
size_t | length | ||
) |
Blocking read from the input stream.
decoder | the decoder object |
is | the input stream to read from |
buffer | the destination buffer |
length | the maximum number of bytes to read |
float decoder_replay_gain | ( | struct decoder * | decoder, |
const struct replay_gain_info * | replay_gain_info | ||
) |
Set replay gain values for the following chunks.
decoder | the decoder object |
rgi | the replay_gain_info object; may be NULL to invalidate the previous replay gain values |
void decoder_seek_error | ( | struct decoder * | decoder | ) |
Call this right before decoder_command_finished() when seeking has failed.
decoder | the decoder object |
double decoder_seek_where | ( | struct decoder * | decoder | ) |
Call this when you have received the DECODE_COMMAND_SEEK command.
decoder | the decoder object |
enum decoder_command decoder_tag | ( | struct decoder * | decoder, |
struct input_stream * | is, | ||
const struct tag * | tag | ||
) |
This function is called by the decoder plugin when it has successfully decoded a tag.
decoder | the decoder object |
is | an input stream which is buffering while we are waiting for the player |
tag | the tag to send |
void decoder_timestamp | ( | struct decoder * | decoder, |
double | t | ||
) |
Sets the time stamp for the next data chunk [seconds].
The MPD core automatically counts it up, and a decoder plugin only needs to use this function if it thinks that adding to the time stamp based on the buffer size won't work.