| /* |
| * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| /** |
| * @file picokpdf.h |
| * |
| * knowledge handling for pdf |
| * |
| * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland |
| * All rights reserved. |
| * |
| * History: |
| * - 2009-04-20 -- initial version |
| * |
| */ |
| |
| #ifndef PICOKPDF_H_ |
| #define PICOKPDF_H_ |
| |
| #include "picoos.h" |
| #include "picoknow.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| #if 0 |
| } |
| #endif |
| |
| |
| /* ************************************************************/ |
| /** |
| * @addtogroup picokpdf |
| * |
| Two specialized pdf kb types are provided by this knowledge |
| handling module: |
| |
| - pdf dur: ...kpdf_DUR (for dur) |
| - pdf mul: ...kpdf_MUL (for lfz and mgc) |
| - pdf phs: ...kpdf_PHS (for phase) |
| |
| */ |
| /* ************************************************************/ |
| |
| |
| /* ************************************************************/ |
| /* defines and functions to create specialized kb, */ |
| /* to be used by picorsrc only */ |
| /* ************************************************************/ |
| |
| #define PICOKPDF_MAX_NUM_STATES 10 |
| |
| #define PICOKPDF_MAX_MUL_LFZ_CEPORDER 1 |
| #define PICOKPDF_MAX_MUL_MGC_CEPORDER 25 |
| |
| /* trade accuracy against computation: more long multiplications. |
| * Maximum is 15 when invdiag0=(1<<(2*bigpow))/diag0 used |
| * currently observing instability in mlpg when bigpow >= 14, this needs to be investigated */ |
| |
| #define PICOKPDF_BIG_POW 12 |
| |
| typedef enum { |
| PICOKPDF_KPDFTYPE_DUR, |
| PICOKPDF_KPDFTYPE_MUL, |
| PICOKPDF_KPDFTYPE_PHS |
| } picokpdf_kpdftype_t; |
| |
| pico_status_t picokpdf_specializePdfKnowledgeBase(picoknow_KnowledgeBase this, |
| picoos_Common common, |
| const picokpdf_kpdftype_t type); |
| |
| |
| /* ************************************************************/ |
| /* pdf types and get Pdf functions */ |
| /* ************************************************************/ |
| |
| /** object : PdfDur, PdfMUL |
| * shortcut : kpdf* |
| * derived from : picoknow_KnowledgeBase |
| */ |
| |
| typedef struct picokpdf_pdfdur *picokpdf_PdfDUR; |
| typedef struct picokpdf_pdfmul *picokpdf_PdfMUL; |
| typedef struct picokpdf_pdfphs *picokpdf_PdfPHS; |
| |
| /* subobj specific for pdf dur type */ |
| typedef struct picokpdf_pdfdur { |
| picoos_uint16 numframes; |
| picoos_uint8 vecsize; |
| picoos_uint8 sampperframe; |
| picoos_uint8 phonquantlen; |
| picoos_uint8 *phonquant; |
| picoos_uint8 statequantlen; |
| picoos_uint8 *statequant; |
| picoos_uint8 *content; |
| } picokpdf_pdfdur_t; |
| |
| /* subobj specific for pdf mul type */ |
| typedef struct picokpdf_pdfmul { |
| picoos_uint16 numframes; |
| picoos_uint8 vecsize; |
| picoos_uint8 numstates; |
| picoos_uint16 stateoffset[PICOKPDF_MAX_NUM_STATES]; /* offset within a phone to find the state ? */ |
| picoos_uint8 ceporder; |
| picoos_uint8 numvuv; |
| picoos_uint8 numdeltas; |
| picoos_uint8 meanpow; |
| picoos_uint8 bigpow; |
| picoos_uint8 amplif; |
| picoos_uint8 *meanpowUm; /* KPDF_NUMSTREAMS x ceporder values */ |
| picoos_uint8 *ivarpow; /* KPDF_NUMSTREAMS x ceporder values */ |
| picoos_uint8 *content; |
| } picokpdf_pdfmul_t; |
| |
| /* subobj specific for pdf phs type */ |
| typedef struct picokpdf_pdfphs { |
| picoos_uint16 numvectors; |
| picoos_uint8 *indexBase; |
| picoos_uint8 *contentBase; |
| } picokpdf_pdfphs_t; |
| |
| /* return kb pdf for usage in PU */ |
| picokpdf_PdfDUR picokpdf_getPdfDUR(picoknow_KnowledgeBase this); |
| picokpdf_PdfMUL picokpdf_getPdfMUL(picoknow_KnowledgeBase this); |
| picokpdf_PdfPHS picokpdf_getPdfPHS(picoknow_KnowledgeBase this); |
| |
| |
| /* ************************************************************/ |
| /* PDF DUR functions */ |
| /* ************************************************************/ |
| |
| /* e.g. */ |
| /*picoos_uint8 picokpdf_pdfDURgetEle(const picokpdf_PdfDUR this, |
| const picoos_uint16 row, |
| const picoos_uint16 col, |
| picoos_uint16 *val); |
| */ |
| |
| /* ************************************************************/ |
| /* PDF MUL functions */ |
| /* ************************************************************/ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| #endif /*PICOKPDF_H_*/ |