OSDN Git Service

読み取り機能実装途中
[nlite/nlite.git] / open_jtalk_lib / open_jtalk_manager / Open_JTalk_Manager.h
1 /* ----------------------------------------------------------------- */
2 /*           The Toolkit for Building Voice Interaction Systems      */
3 /*           "MMDAgent" developed by MMDAgent Project Team           */
4 /*           http://www.mmdagent.jp/                                 */
5 /* ----------------------------------------------------------------- */
6 /*                                                                   */
7 /*  Copyright (c) 2009-2011  Nagoya Institute of Technology          */
8 /*                           Department of Computer Science          */
9 /*                                                                   */
10 /* All rights reserved.                                              */
11 /*                                                                   */
12 /* Redistribution and use in source and binary forms, with or        */
13 /* without modification, are permitted provided that the following   */
14 /* conditions are met:                                               */
15 /*                                                                   */
16 /* - Redistributions of source code must retain the above copyright  */
17 /*   notice, this list of conditions and the following disclaimer.   */
18 /* - Redistributions in binary form must reproduce the above         */
19 /*   copyright notice, this list of conditions and the following     */
20 /*   disclaimer in the documentation and/or other materials provided */
21 /*   with the distribution.                                          */
22 /* - Neither the name of the MMDAgent project team nor the names of  */
23 /*   its contributors may be used to endorse or promote products     */
24 /*   derived from this software without specific prior written       */
25 /*   permission.                                                     */
26 /*                                                                   */
27 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND            */
28 /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,       */
29 /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF          */
30 /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE          */
31 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
32 /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,          */
33 /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED   */
34 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     */
35 /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
36 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,   */
37 /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY    */
38 /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE           */
39 /* POSSIBILITY OF SUCH DAMAGE.                                       */
40 /* ----------------------------------------------------------------- */
41
42 /* definitions */
43
44 #define OPENJTALKMANAGER_INITIALNTHREAD 1 /* initial number of thread */
45
46 /* Open_JTalk_Link: thread list for Open JTalk */
47 typedef struct _Open_JTalk_Link {
48    Open_JTalk_Thread open_jtalk_thread;
49    struct _Open_JTalk_Link *next;
50 } Open_JTalk_Link;
51
52 /* Open_JTalk_Event: input message buffer */
53 typedef struct _Open_JTalk_Event {
54    char *event;
55    struct _Open_JTalk_Event *next;
56 } Open_JTalk_Event;
57
58 /* Open_JTalk_EventQueue: queue of Open_JTalk_Event */
59 typedef struct _Open_JTalk_EventQueue {
60    Open_JTalk_Event *head;
61    Open_JTalk_Event *tail;
62 } Open_JTalk_EventQueue;
63
64 /* Open_JTalk_Manager: multi thread manager for Open JTalk */
65 class Open_JTalk_Manager
66 {
67 private:
68
69    MMDAgent *m_mmdagent;
70
71    GLFWmutex m_mutex;
72    GLFWcond m_cond;
73    GLFWthread m_thread;
74
75    int m_count;
76
77    bool m_kill;
78
79    Open_JTalk_EventQueue m_bufferQueue;
80    Open_JTalk_Link *m_list;
81
82    char *m_dicDir;
83    char *m_config;
84
85    /* initialize: initialize */
86    void initialize();
87
88    /* clear: clear */
89    void clear();
90
91 public:
92
93    /* Open_JTalk_Manager: constructor */
94    Open_JTalk_Manager();
95
96    /* ~Open_JTalk_Manager: destructor */
97    ~Open_JTalk_Manager();
98
99    /* loadAndStart: load and start thread */
100    void loadAndStart(MMDAgent *mmdagent, const char *dicDir, const char *config);
101
102    /* stopAndRelease: stop and release thread */
103    void stopAndRelease();
104
105    /* run: main loop */
106    void run();
107
108    /* isRunning: check running */
109    bool isRunning();
110
111    /* synthesis: start synthesis */
112    void synthesis(const char *str);
113
114    /* stop: stop synthesis */
115    void stop(const char *str);
116 };