Commit e07073ff authored by Max Kellermann's avatar Max Kellermann

decoder_api: move code to _prepare_initial_seek()

.. and add a few code comments.
parent 64b0ba6d
...@@ -79,30 +79,54 @@ decoder_initialized(struct decoder *decoder, ...@@ -79,30 +79,54 @@ decoder_initialized(struct decoder *decoder,
} }
/** /**
* Returns the current decoder command. May return a "virtual" * Checks if we need an "initial seek". If so, then the initial seek
* synthesized command, e.g. to seek to the beginning of the CUE * is prepared, and the function returns true.
* track.
*/ */
G_GNUC_PURE G_GNUC_PURE
static enum decoder_command static bool
decoder_get_virtual_command(struct decoder *decoder) decoder_prepare_initial_seek(struct decoder *decoder)
{ {
const struct decoder_control *dc = decoder->dc; const struct decoder_control *dc = decoder->dc;
assert(dc->pipe != NULL); assert(dc->pipe != NULL);
if (decoder->initial_seek_running) if (decoder->initial_seek_running)
return DECODE_COMMAND_SEEK; /* initial seek has already begun - override any other
command */
return true;
if (decoder->initial_seek_pending) { if (decoder->initial_seek_pending) {
if (dc->command == DECODE_COMMAND_NONE) { if (dc->command == DECODE_COMMAND_NONE) {
/* begin initial seek */
decoder->initial_seek_pending = false; decoder->initial_seek_pending = false;
decoder->initial_seek_running = true; decoder->initial_seek_running = true;
return DECODE_COMMAND_SEEK; return true;
} }
/* skip initial seek when there's another command
(e.g. STOP) */
decoder->initial_seek_pending = false; decoder->initial_seek_pending = false;
} }
return false;
}
/**
* Returns the current decoder command. May return a "virtual"
* synthesized command, e.g. to seek to the beginning of the CUE
* track.
*/
G_GNUC_PURE
static enum decoder_command
decoder_get_virtual_command(struct decoder *decoder)
{
const struct decoder_control *dc = decoder->dc;
assert(dc->pipe != NULL);
if (decoder_prepare_initial_seek(decoder))
return DECODE_COMMAND_SEEK;
return dc->command; return dc->command;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment