diff options
-rw-r--r-- | include/xas/seq.h | 6 | ||||
-rw-r--r-- | src/seq.c | 30 |
2 files changed, 35 insertions, 1 deletions
diff --git a/include/xas/seq.h b/include/xas/seq.h index f7ec322..de8567e 100644 --- a/include/xas/seq.h +++ b/include/xas/seq.h @@ -19,7 +19,8 @@ enum xas_seq_event_type { XAS_SEQ_EVENT_SET_SYNTH_TYPE, XAS_SEQ_EVENT_SET_BANK_INDEX, XAS_SEQ_EVENT_SET_PLAYER_FLAGS, - XAS_SEQ_EVENT_SPEECH + XAS_SEQ_EVENT_SPEECH, + XAS_SEQ_EVENT_STOP }; enum xas_seq_object_type { @@ -120,6 +121,9 @@ int xas_seq_add_phrase(xas_seq *seq, struct timeval timestamp, const char *phrase); +int xas_seq_add_stop(xas_seq *seq, + struct timeval timestamp); + int xas_seq_play(xas_seq *seq, xas_audio_stream *sink); #endif /* _XAS_SEQ_H */ @@ -457,6 +457,33 @@ error_malloc_ev: return -1; } +int xas_seq_add_stop(xas_seq *seq, + struct timeval timestamp) { + xas_seq_event *ev; + + if ((ev = malloc(sizeof(*ev))) == NULL) { + goto error_malloc_ev; + } + + ev->type = XAS_SEQ_EVENT_STOP; + ev->objtype = XAS_SEQ_OBJECT_ANY; + ev->object = NULL; + ev->timestamp = timestamp; + ev->flags = 0; + + if (event_add(seq, ev) < 0) { + goto error_event_add; + } + + return 0; + +error_event_add: + free(ev); + +error_malloc_ev: + return -1; +} + static int event_trigger(xas_spatial_scene *scene, xas_seq_event *ev) { switch (ev->type) { case XAS_SEQ_EVENT_OFF: @@ -532,6 +559,9 @@ static int event_trigger(xas_spatial_scene *scene, xas_seq_event *ev) { xas_vox_generate(ev->object->ctx); break; + + case XAS_SEQ_EVENT_STOP: + break; } return 0; |