1b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*
2b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
3b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
4b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Licensed under the Apache License, Version 2.0 (the "License");
5b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * you may not use this file except in compliance with the License.
6b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * You may obtain a copy of the License at
7b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
8b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *     http://www.apache.org/licenses/LICENSE-2.0
9b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
10b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Unless required by applicable law or agreed to in writing, software
11b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * distributed under the License is distributed on an "AS IS" BASIS,
12b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * See the License for the specific language governing permissions and
14b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * limitations under the License.
15b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */
16b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
17b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @file picokpdf.h
18b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
19b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * knowledge handling for pdf
20b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
21b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
22b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * All rights reserved.
23b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
24b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * History:
25b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * - 2009-04-20 -- initial version
26b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
27b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */
28b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
29b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifndef PICOKPDF_H_
30b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKPDF_H_
31b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
32b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picoos.h"
33b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picoknow.h"
34b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
35b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus
36b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern "C" {
37b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
38b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if 0
39b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen}
40b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
41b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
42b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
43b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
44b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
45b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @addtogroup picokpdf
46b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
47b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Two specialized pdf kb types are provided by this knowledge
48b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   handling module:
49b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
50b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pdf dur:     ...kpdf_DUR         (for dur)
51b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pdf mul:     ...kpdf_MUL         (for lfz and mgc)
52b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pdf phs:     ...kpdf_PHS         (for phase)
53b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
54b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
55b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
56b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
57b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
58b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
59b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* defines and functions to create specialized kb, */
60b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* to be used by picorsrc only */
61b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
62b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
63b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKPDF_MAX_NUM_STATES 10
64b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
65b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKPDF_MAX_MUL_LFZ_CEPORDER 1
66b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKPDF_MAX_MUL_MGC_CEPORDER 25
67b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
68b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* trade accuracy against computation: more long multiplications.
69b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Maximum is 15 when invdiag0=(1<<(2*bigpow))/diag0 used
70b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * currently observing instability in mlpg when bigpow >= 14, this needs to be investigated */
71b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
72b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKPDF_BIG_POW 12
73b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
74b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef enum {
75b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    PICOKPDF_KPDFTYPE_DUR,
76b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    PICOKPDF_KPDFTYPE_MUL,
77b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    PICOKPDF_KPDFTYPE_PHS
78b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picokpdf_kpdftype_t;
79b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
80b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picokpdf_specializePdfKnowledgeBase(picoknow_KnowledgeBase this,
81b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen                                              picoos_Common common,
82b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen                                              const picokpdf_kpdftype_t type);
83b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
84b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
85b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
86b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* pdf types and get Pdf functions */
87b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
88b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
89b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** object       : PdfDur, PdfMUL
90b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *  shortcut     : kpdf*
91b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *  derived from : picoknow_KnowledgeBase
92b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */
93b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
94b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picokpdf_pdfdur *picokpdf_PdfDUR;
95b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picokpdf_pdfmul *picokpdf_PdfMUL;
96b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picokpdf_pdfphs *picokpdf_PdfPHS;
97b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
98b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* subobj specific for pdf dur type */
99b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picokpdf_pdfdur {
100b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint16 numframes;
101b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 vecsize;
102b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 sampperframe;
103b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 phonquantlen;
104b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *phonquant;
105b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 statequantlen;
106b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *statequant;
107b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *content;
108b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picokpdf_pdfdur_t;
109b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
110b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* subobj specific for pdf mul type */
111b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picokpdf_pdfmul {
112b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint16 numframes;
113b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 vecsize;
114b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 numstates;
115b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint16 stateoffset[PICOKPDF_MAX_NUM_STATES]; /* offset within a phone to find the state ? */
116b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 ceporder;
117b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 numvuv;
118b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 numdeltas;
119b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 meanpow;
120b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 bigpow;
121b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 amplif;
122b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *meanpowUm;  /* KPDF_NUMSTREAMS x ceporder values */
123b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *ivarpow;    /* KPDF_NUMSTREAMS x ceporder values */
124b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *content;
125b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picokpdf_pdfmul_t;
126b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
127b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* subobj specific for pdf phs type */
128b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picokpdf_pdfphs {
129b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint16 numvectors;
130b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *indexBase;
131b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen    picoos_uint8 *contentBase;
132b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picokpdf_pdfphs_t;
133b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
134b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* return kb pdf for usage in PU */
135b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpicokpdf_PdfDUR picokpdf_getPdfDUR(picoknow_KnowledgeBase this);
136b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpicokpdf_PdfMUL picokpdf_getPdfMUL(picoknow_KnowledgeBase this);
137b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpicokpdf_PdfPHS picokpdf_getPdfPHS(picoknow_KnowledgeBase this);
138b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
139b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
140b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
141b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* PDF DUR functions */
142b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
143b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
144b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* e.g. */
145b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*picoos_uint8 picokpdf_pdfDURgetEle(const picokpdf_PdfDUR this,
146b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen                                   const picoos_uint16 row,
147b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen                                   const picoos_uint16 col,
148b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen                                   picoos_uint16 *val);
149b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
150b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
151b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
152b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* PDF MUL functions */
153b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************/
154b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
155b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus
156b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen}
157b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
158b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
159b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
160b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif /*PICOKPDF_H_*/
161