45 #ifndef __BIN_MDEF_H__
46 #define __BIN_MDEF_H__
56 #include <sphinxbase/mmio.h>
57 #include <sphinxbase/cmd_ln.h>
58 #include <pocketsphinx_export.h>
62 #define BIN_MDEF_FORMAT_VERSION 1
64 #define BIN_MDEF_NATIVE_ENDIAN 0x46444d42
65 #define BIN_MDEF_OTHER_ENDIAN 0x424d4446
67 #define ATTRIBUTE_PACKED __attribute__((packed))
69 #define ATTRIBUTE_PACKED
97 #define BAD_SSID 0xffff
101 #define BAD_SENID 0xffff
145 enum { BIN_MDEF_FROM_TEXT, BIN_MDEF_IN_MEMORY, BIN_MDEF_ON_DISK } alloc_mode;
148 #define bin_mdef_is_fillerphone(m,p) (((p) < (m)->n_ciphone) \
149 ? (m)->phone[p].info.ci.filler \
150 : (m)->phone[(m)->phone[p].info.cd.ctx[0]].info.ci.filler)
151 #define bin_mdef_is_ciphone(m,p) ((p) < (m)->n_ciphone)
152 #define bin_mdef_n_ciphone(m) ((m)->n_ciphone)
153 #define bin_mdef_n_phone(m) ((m)->n_phone)
154 #define bin_mdef_n_sseq(m) ((m)->n_sseq)
155 #define bin_mdef_n_emit_state(m) ((m)->n_emit_state)
156 #define bin_mdef_n_emit_state_phone(m,p) ((m)->n_emit_state ? (m)->n_emit_state \
157 : (m)->sseq_len[(m)->phone[p].ssid])
158 #define bin_mdef_n_sen(m) ((m)->n_sen)
159 #define bin_mdef_n_tmat(m) ((m)->n_tmat)
160 #define bin_mdef_pid2ssid(m,p) ((m)->phone[p].ssid)
161 #define bin_mdef_pid2tmatid(m,p) ((m)->phone[p].tmat)
162 #define bin_mdef_silphone(m) ((m)->sil)
163 #define bin_mdef_sen2cimap(m,s) ((m)->sen2cimap[s])
164 #define bin_mdef_sseq2sen(m,ss,pos) ((m)->sseq[ss][pos])
165 #define bin_mdef_pid2ci(m,p) (((p) < (m)->n_ciphone) ? (p) \
166 : (m)->phone[p].info.cd.ctx[0])
172 bin_mdef_t *bin_mdef_read(cmd_ln_t *config,
const char *filename);
177 bin_mdef_t *bin_mdef_read_text(cmd_ln_t *config,
const char *filename);
182 int bin_mdef_write(
bin_mdef_t *m,
const char *filename);
187 int bin_mdef_write_text(
bin_mdef_t *m,
const char *filename);
202 const char *ciphone);
209 const char *ciphone);
212 const char *bin_mdef_ciphone_str(
bin_mdef_t *m,
223 int bin_mdef_phone_id_nearest(
bin_mdef_t * m, int32 b,
224 int32 l, int32 r, int32 pos);