Merge branch 'v0.16.x'

Conflicts:
	src/player_thread.c
	src/playlist_control.c
This commit is contained in:
Max Kellermann
2011-07-20 21:46:05 +02:00
13 changed files with 101 additions and 38 deletions

View File

@@ -50,6 +50,8 @@ struct encoder_plugin {
bool (*flush)(struct encoder *encoder, GError **error);
bool (*pre_tag)(struct encoder *encoder, GError **error);
bool (*tag)(struct encoder *encoder, const struct tag *tag,
GError **error);
@@ -147,9 +149,31 @@ encoder_flush(struct encoder *encoder, GError **error)
: true;
}
/**
* Prepare for sending a tag to the encoder. This is used by some
* encoders to flush the previous sub-stream, in preparation to begin
* a new one.
*
* @param encoder the encoder
* @param tag the tag object
* @param error location to store the error occuring, or NULL to ignore errors.
* @return true on success
*/
static inline bool
encoder_pre_tag(struct encoder *encoder, GError **error)
{
/* this method is optional */
return encoder->plugin->pre_tag != NULL
? encoder->plugin->pre_tag(encoder, error)
: true;
}
/**
* Sends a tag to the encoder.
*
* Instructions: call encoder_pre_tag(); then obtain flushed data with
* encoder_read(); finally call encoder_tag().
*
* @param encoder the encoder
* @param tag the tag object
* @param error location to store the error occurring, or NULL to ignore errors.