239 lines
7.1 KiB
Rust
239 lines
7.1 KiB
Rust
// Licensed under the Apache License, Version 2.0
|
|
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
|
|
// All files in the project carrying such notice may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
use ctypes::{c_float, c_int, c_void};
|
|
use shared::guiddef::CLSID;
|
|
use shared::minwindef::{BOOL, DWORD, ULONG};
|
|
use um::sapi::*;
|
|
use um::unknwnbase::{IUnknown, IUnknownVtbl};
|
|
use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR};
|
|
pub use um::sapiddk51::{
|
|
SPRECOEXTENSION,
|
|
SPALTERNATESCLSID,
|
|
};
|
|
pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description";
|
|
pub use um::sapiddk51::{
|
|
ISpTokenUI, ISpTokenUIVtbl,
|
|
ISpObjectTokenEnumBuilder, ISpObjectTokenEnumBuilderVtbl,
|
|
SPWORDHANDLE,
|
|
SPRULEHANDLE,
|
|
SPGRAMMARHANDLE,
|
|
SPRECOCONTEXTHANDLE,
|
|
SPPHRASERULEHANDLE,
|
|
SPPHRASEPROPERTYHANDLE,
|
|
SPTRANSITIONID,
|
|
ISpErrorLog, ISpErrorLogVtbl,
|
|
ISpGrammarCompiler, ISpGrammarCompilerVtbl,
|
|
ISpGramCompBackend, ISpGramCompBackendVtbl,
|
|
ISpITNProcessor, ISpITNProcessorVtbl,
|
|
ISpPhraseBuilder, ISpPhraseBuilderVtbl,
|
|
ISpTask,
|
|
ISpThreadTask,
|
|
ISpThreadControl, ISpThreadControlVtbl,
|
|
SPTMTHREADINFO,
|
|
ISpTaskManager, ISpTaskManagerVtbl,
|
|
SPVSKIPTYPE,
|
|
SPVST_SENTENCE,
|
|
SPVESACTIONS,
|
|
SPVES_CONTINUE,
|
|
SPVES_ABORT,
|
|
SPVES_SKIP,
|
|
SPVES_RATE,
|
|
SPVES_VOLUME,
|
|
ISpTTSEngineSite, ISpTTSEngineSiteVtbl,
|
|
SPVTEXTFRAG,
|
|
ISpTTSEngine, ISpTTSEngineVtbl,
|
|
SPWORDENTRY,
|
|
SPRULEENTRY,
|
|
SPTRANSITIONTYPE,
|
|
SPTRANSEPSILON,
|
|
SPTRANSWORD,
|
|
SPTRANSRULE,
|
|
SPTRANSTEXTBUF,
|
|
SPTRANSWILDCARD,
|
|
SPTRANSDICTATION,
|
|
SPTRANSITIONENTRY,
|
|
SPTRANSITIONPROPERTY,
|
|
SPSTATEINFO,
|
|
SPPATHENTRY,
|
|
ISpCFGInterpreterSite, ISpCFGInterpreterSiteVtbl,
|
|
ISpCFGInterpreter, ISpCFGInterpreterVtbl,
|
|
SPCFGNOTIFY,
|
|
SPCFGN_ADD,
|
|
SPCFGN_REMOVE,
|
|
SPCFGN_INVALIDATE,
|
|
SPCFGN_ACTIVATE,
|
|
SPCFGN_DEACTIVATE,
|
|
SPRESULTTYPE,
|
|
SPRT_CFG,
|
|
SPRT_SLM,
|
|
SPRT_PROPRIETARY,
|
|
SPRT_FALSE_RECOGNITION,
|
|
};
|
|
pub const SPRT_TYPE_MASK: SPRESULTTYPE = 3;
|
|
pub const SPRT_EMULATED: SPRESULTTYPE = 1 << 3;
|
|
pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE = 1 << 4;
|
|
pub use um::sapiddk51::{
|
|
SPPHRASEALT,
|
|
SPRECORESULTINFO,
|
|
};
|
|
STRUCT!{struct SPRECORESULTINFOEX {
|
|
cbSize: ULONG,
|
|
eResultType: SPRESULTTYPE,
|
|
fHypothesis: BOOL,
|
|
fProprietaryAutoPause: BOOL,
|
|
ullStreamPosStart: ULONGLONG,
|
|
ullStreamPosEnd: ULONGLONG,
|
|
hGrammar: SPGRAMMARHANDLE,
|
|
ulSizeEngineData: ULONG,
|
|
pvEngineData: *mut c_void,
|
|
pPhrase: *mut ISpPhraseBuilder,
|
|
aPhraseAlts: *mut SPPHRASEALT,
|
|
ulNumAlts: ULONG,
|
|
ullStreamTimeStart: ULONGLONG,
|
|
ullStreamTimeEnd: ULONGLONG,
|
|
}}
|
|
pub use um::sapiddk51::{
|
|
SPWORDINFOOPT,
|
|
SPWIO_NONE,
|
|
SPWIO_WANT_TEXT,
|
|
SPRULEINFOOPT,
|
|
SPRIO_NONE,
|
|
SPPARSEINFO,
|
|
ISpSREngineSite, ISpSREngineSiteVtbl,
|
|
};
|
|
RIDL!{#[uuid(0x7bc6e012, 0x684a, 0x493e, 0xbd, 0xd4, 0x2b, 0xf5, 0xfb, 0xf4, 0x8c, 0xfe)]
|
|
interface ISpSREngineSite2(ISpSREngineSite2Vtbl): ISpSREngineSite(ISpSREngineSiteVtbl) {
|
|
fn AddEventEx(
|
|
pEvent: *const SPEVENTEX,
|
|
hSAPIRecoContext: SPRECOCONTEXTHANDLE,
|
|
) -> HRESULT,
|
|
fn UpdateRecoPosEx(
|
|
ullCurrentRecoPos: ULONGLONG,
|
|
ullCurrentRecoTime: ULONGLONG,
|
|
) -> HRESULT,
|
|
fn GetRuleTransition(
|
|
ulGrammarID: ULONG,
|
|
RuleIndex: ULONG,
|
|
pTrans: *mut SPTRANSITIONENTRY,
|
|
) -> HRESULT,
|
|
fn RecognitionEx(
|
|
pResultInfo: *const SPRECORESULTINFOEX,
|
|
) -> HRESULT,
|
|
}}
|
|
pub use um::sapiddk51::{
|
|
SPPROPSRC,
|
|
SPPROPSRC_RECO_INST,
|
|
SPPROPSRC_RECO_CTX,
|
|
SPPROPSRC_RECO_GRAMMAR,
|
|
ISpSREngine, ISpSREngineVtbl,
|
|
};
|
|
RIDL!{#[uuid(0x7ba627d8, 0x33f9, 0x4375, 0x90, 0xc5, 0x99, 0x85, 0xae, 0xe5, 0xed, 0xe5)]
|
|
interface ISpSREngine2(ISpSREngine2Vtbl): ISpSREngine(ISpSREngineVtbl) {
|
|
fn PrivateCallImmediate(
|
|
pvEngineContext: *mut c_void,
|
|
pInCallFrame: *const c_void,
|
|
ulInCallFrameSize: ULONG,
|
|
ppvCoMemResponse: *mut *mut c_void,
|
|
pulResponseSize: *mut ULONG,
|
|
) -> HRESULT,
|
|
fn SetAdaptationData2(
|
|
pvEngineContext: *mut c_void,
|
|
pAdaptationData: *const WCHAR,
|
|
cch: ULONG,
|
|
pTopicName: LPCWSTR,
|
|
eSettings: SPADAPTATIONSETTINGS,
|
|
eRelevance: SPADAPTATIONRELEVANCE,
|
|
) -> HRESULT,
|
|
fn SetGrammarPrefix(
|
|
pvEngineGrammar: *mut c_void,
|
|
pszPrefix: LPCWSTR,
|
|
fIsPrefixRequired: BOOL,
|
|
) -> HRESULT,
|
|
fn SetRulePriority(
|
|
hRule: SPRULEHANDLE,
|
|
pvClientRuleContext: *mut c_void,
|
|
nRulePriority: c_int,
|
|
) -> HRESULT,
|
|
fn EmulateRecognition(
|
|
pPhrase: *mut ISpPhrase,
|
|
dwCompareFlags: DWORD,
|
|
) -> HRESULT,
|
|
fn SetSLMWeight(
|
|
pvEngineGrammar: *mut c_void,
|
|
flWeight: c_float,
|
|
) -> HRESULT,
|
|
fn SetRuleWeight(
|
|
hRule: SPRULEHANDLE,
|
|
pvClientRuleContext: *mut c_void,
|
|
flWeight: c_float,
|
|
) -> HRESULT,
|
|
fn SetTrainingState(
|
|
fDoingTraining: BOOL,
|
|
fAdaptFromTrainingData: BOOL,
|
|
) -> HRESULT,
|
|
fn ResetAcousticModelAdaptation() -> HRESULT,
|
|
fn OnLoadCFG(
|
|
pvEngineGrammar: *mut c_void,
|
|
pvGrammarData: *const SPBINARYGRAMMAR,
|
|
ulGrammarID: ULONG,
|
|
) -> HRESULT,
|
|
fn OnUnloadCFG(
|
|
pvEngineGrammar: *mut c_void,
|
|
ulGrammarID: ULONG,
|
|
) -> HRESULT,
|
|
}}
|
|
pub use um::sapiddk51::SPPHRASEALTREQUEST;
|
|
RIDL!{#[uuid(0xfece8294, 0x2be1, 0x408f, 0x8e, 0x68, 0x2d, 0xe3, 0x77, 0x09, 0x2f, 0x0e)]
|
|
interface ISpSRAlternates(ISpSRAlternatesVtbl): IUnknown(IUnknownVtbl) {
|
|
fn GetAlternates(
|
|
pAltRequest: *mut SPPHRASEALTREQUEST,
|
|
ppAlts: *mut *mut SPPHRASEALT,
|
|
pcAlts: *mut ULONG,
|
|
) -> HRESULT,
|
|
fn Commit(
|
|
pAltRequest: *mut SPPHRASEALTREQUEST,
|
|
pAlt: *mut SPPHRASEALT,
|
|
ppvResultExtra: *mut c_void,
|
|
pcbResultExtra: *mut ULONG,
|
|
) -> HRESULT,
|
|
}}
|
|
RIDL!{#[uuid(0xf338f437, 0xcb33, 0x4020, 0x9c, 0xab, 0xc7, 0x1f, 0xf9, 0xce, 0x12, 0xd3)]
|
|
interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) {
|
|
fn CommitText(
|
|
pAltRequest: *mut SPPHRASEALTREQUEST,
|
|
pcszNewText: LPCWSTR,
|
|
commitFlags: SPCOMMITFLAGS,
|
|
) -> HRESULT,
|
|
}}
|
|
pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl};
|
|
RIDL!{#[uuid(0xdefd682a, 0xfe0a, 0x42b9, 0xbf, 0xa1, 0x56, 0xd3, 0xd6, 0xce, 0xcf, 0xaf)]
|
|
interface ISpPrivateEngineCallEx(ISpPrivateEngineCallExVtbl): IUnknown(IUnknownVtbl) {
|
|
fn CallEngineSynchronize(
|
|
pInFrame: *const c_void,
|
|
ulInFrameSize: ULONG,
|
|
ppCoMemOutFrame: *mut *mut c_void,
|
|
pulOutFrameSize: *mut ULONG,
|
|
) -> HRESULT,
|
|
fn CallEngineImmediate(
|
|
pInFrame: *const c_void,
|
|
ulInFrameSize: ULONG,
|
|
ppCoMemOutFrame: *mut *mut c_void,
|
|
pulOutFrameSize: *mut ULONG,
|
|
) -> HRESULT,
|
|
}}
|
|
pub use um::sapiddk51::{
|
|
LIBID_SpeechDDKLib,
|
|
CLSID_SpDataKey,
|
|
CLSID_SpObjectTokenEnum,
|
|
CLSID_SpPhraseBuilder,
|
|
CLSID_SpITNProcessor,
|
|
CLSID_SpGrammarCompiler,
|
|
};
|
|
extern {
|
|
pub static CLSID_SpW3CGrammarCompiler: CLSID;
|
|
}
|
|
pub use um::sapiddk51::CLSID_SpGramCompBackend;
|