Initial import to Tizen
[profile/ivi/pocketsphinx.git] / src / gst-plugin / gstpocketsphinx.h
1 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* ====================================================================
3  * Copyright (c) 2007 Carnegie Mellon University.  All rights
4  * reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer. 
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *
18  * This work was supported in part by funding from the Defense Advanced 
19  * Research Projects Agency and the National Science Foundation of the 
20  * United States of America, and the CMU Sphinx Speech Consortium.
21  *
22  * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 
23  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
24  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
26  * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  *
34  * ====================================================================
35  *
36  * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
37  */
38
39 #ifndef __GST_POCKETSPHINX_H__
40 #define __GST_POCKETSPHINX_H__
41
42 #include <gst/gst.h>
43 #include <pocketsphinx.h>
44
45 G_BEGIN_DECLS
46
47 #define GST_TYPE_POCKETSPHINX                   \
48     (gst_pocketsphinx_get_type())
49 #define GST_POCKETSPHINX(obj)                                           \
50     (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_POCKETSPHINX,GstPocketSphinx))
51 #define GST_POCKETSPHINX_CLASS(klass)                                   \
52     (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_POCKETSPHINX,GstPocketSphinxClass))
53 #define GST_IS_POCKETSPHINX(obj)                                \
54     (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_POCKETSPHINX))
55 #define GST_IS_POCKETSPHINX_CLASS(klass)                        \
56     (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_POCKETSPHINX))
57
58 typedef struct _GstPocketSphinx      GstPocketSphinx;
59 typedef struct _GstPocketSphinxClass GstPocketSphinxClass;
60
61 struct _GstPocketSphinx
62 {
63     GstElement element;
64
65     GstPad *sinkpad, *srcpad;
66
67     ps_decoder_t *ps;
68     cmd_ln_t *config;
69     gchar *latdir;                 /**< Output directory for word lattices. */
70
71     GHashTable *arghash;
72     gboolean listening;
73
74     GstClockTime last_result_time; /**< Timestamp of last partial result. */
75     char *last_result;             /**< String of last partial result. */
76 };
77
78 struct _GstPocketSphinxClass 
79 {
80     GstElementClass parent_class;
81
82     void (*partial_result)  (GstElement *element, const gchar *hyp_str);
83     void (*result)          (GstElement *element, const gchar *hyp_str);
84 };
85
86 GType gst_pocketsphinx_get_type(void);
87
88 /*
89  * Boxing of lattices.
90  */
91 #define PS_LATTICE_TYPE (ps_lattice_get_type())
92 GType ps_lattice_get_type(void);
93
94 /*
95  * Boxing of decoder.
96  */
97 #define PS_DECODER_TYPE (ps_decoder_get_type())
98 GType ps_decoder_get_type(void);
99
100 G_END_DECLS
101
102 #endif /* __GST_POCKETSPHINX_H__ */