packaging: bumped version, updated changelog.
[profile/ivi/speech-recognition.git] / src / daemon / voice.h
1 /*
2  * Copyright (c) 2012 - 2013, Intel Corporation
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *   * Redistributions of source code must retain the above copyright notice,
9  *     this list of conditions and the following disclaimer.
10  *   * Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  *   * Neither the name of Intel Corporation nor the names of its contributors
14  *     may be used to endorse or promote products derived from this software
15  *     without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #ifndef __SRS_DAEMON_VOICE_H__
31 #define __SRS_DAEMON_VOICE_H__
32
33 #include "srs/daemon/context.h"
34 #include "srs/daemon/voice-api-types.h"
35
36 /*
37  * speech synthesizer backend interface
38  */
39
40 /** Voice rendering notification callback type. */
41 typedef void (*srs_voice_notify_t)(srs_voice_event_t *event, void *notify_data);
42
43 /*
44  * API to voice backend
45  */
46 typedef struct {
47     /** Render the given message. */
48     uint32_t (*render)(const char *msg, char **tags, int actor, double rate,
49                        double pitch, int notify_events, void *api_data);
50     /** Cancel the given rendering, notify cancellation if asked for. */
51     void (*cancel)(uint32_t id, void *api_data);
52 } srs_voice_api_t;
53
54 /** Register a voice synthesizer backend. */
55 int srs_register_voice(srs_context_t *srs, const char *name,
56                        srs_voice_api_t *api, void *api_data,
57                        srs_voice_actor_t *actors, int nactor,
58                        srs_voice_notify_t *notify, void **notify_data);
59
60 /** Unregister the given voice synthesizer backend. */
61 void srs_unregister_voice(srs_context_t *srs, const char *name);
62
63
64 /** Render the given message using the given parameters. */
65 uint32_t srs_render_voice(srs_context_t *srs, const char *msg,
66                           char **tags, const char *voice, double rate,
67                           double pitch, int timeout, int notify_events,
68                           srs_voice_notify_t notify, void *user_data);
69
70 /** Cancel the given voice rendering. */
71 void srs_cancel_voice(srs_context_t *srs, uint32_t id, int notify);
72
73 /** Query languages. */
74 int srs_query_voices(srs_context_t *srs, const char *language,
75                      srs_voice_actor_t **actors);
76
77 /** Free voice query results. */
78 void srs_free_queried_voices(srs_voice_actor_t *actors);
79
80 #endif /* __SRS_DAEMON_VOICE_H__ */