mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.1 KiB
95 lines
3.1 KiB
//////////////////////////////////////////////////////////////////////
|
|
// PromptEng.h : Declaration of the CPromptEng
|
|
//
|
|
// Created by JOEM 04-2000
|
|
// Copyright (C) 2000 Microsoft Corporation
|
|
// All Rights Reserved
|
|
//
|
|
/////////////////////////////////////////////////////// JOEM 4-2000 //
|
|
|
|
#ifndef __PROMPTENG_H_
|
|
#define __PROMPTENG_H_
|
|
|
|
#include "resource.h" // main symbols
|
|
#include "PromptDb.h"
|
|
#include "Query.h"
|
|
#include "DbQuery.h"
|
|
#include "LocalTTSEngineSite.h"
|
|
#include "PhoneContext.h"
|
|
#include "TextRules.h"
|
|
#include <spddkhlp.h>
|
|
#include <spcollec.h>
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPromptEng
|
|
//
|
|
// Voice with associated prerecorded prompt database will use this engine
|
|
// to search for a set of prompts that match the desired message.
|
|
// This prompt engine class should contain a TTS engine member.
|
|
//
|
|
///////////////////////////////////////////////////////// JOEM 02-15-2000 ///
|
|
class ATL_NO_VTABLE CPromptEng :
|
|
public CComObjectRootEx<CComMultiThreadModel>,
|
|
public CComCoClass<CPromptEng, &CLSID_PromptEng>,
|
|
public ISpObjectWithToken,
|
|
public ISpTTSEngine
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_PROMPTENG)
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
DECLARE_GET_CONTROLLING_UNKNOWN()
|
|
|
|
BEGIN_COM_MAP(CPromptEng)
|
|
COM_INTERFACE_ENTRY(ISpTTSEngine)
|
|
COM_INTERFACE_ENTRY(ISpObjectWithToken)
|
|
END_COM_MAP()
|
|
|
|
|
|
public:
|
|
|
|
// Constructors/Destructors
|
|
HRESULT FinalConstruct();
|
|
void FinalRelease();
|
|
|
|
|
|
// ISpObjectWithToken
|
|
STDMETHOD(SetObjectToken)(ISpObjectToken *pToken);
|
|
STDMETHOD(GetObjectToken)(ISpObjectToken **ppToken)
|
|
{ return SpGenericGetObjectToken( ppToken, m_cpToken ); }
|
|
|
|
|
|
// ISpTTSEngine
|
|
STDMETHOD(Speak)(DWORD dwSpeakFlags, REFGUID rguidFormatId, const WAVEFORMATEX * pWaveFormatEx,
|
|
const SPVTEXTFRAG* pTextFragList, ISpTTSEngineSite* pOutputSite);
|
|
STDMETHOD(GetOutputFormat)( const GUID * pTargetFormatId, const WAVEFORMATEX * pTargetWaveFormatEx,
|
|
GUID * pDesiredFormatId, WAVEFORMATEX ** ppCoMemDesiredWaveFormatEx );
|
|
|
|
|
|
private:
|
|
STDMETHOD(DispatchQueryList)(const DWORD dwSpeakFlags, REFGUID rguidFormatId, const WAVEFORMATEX * pWaveFormatEx);
|
|
STDMETHOD(SendTextOutput)(const DWORD dwSpeakFlags, REFGUID rguidFormatId);
|
|
STDMETHOD(BuildQueryList)(const DWORD dwSpeakFlags, const SPVTEXTFRAG* pCurrentFrag, const FragType fFragType );
|
|
STDMETHOD(ParseSubQuery)(const DWORD dwSpeakFlags, const WCHAR* pszText, USHORT* unSubQueries );
|
|
STDMETHOD(CompressQueryList)();
|
|
STDMETHOD(CompressTTSItems)(REFGUID rguidFormatId);
|
|
STDMETHOD(SendSilence)(const int iMsec, const DWORD iAvgBytesPerSec);
|
|
void DebugQueryList();
|
|
|
|
private:
|
|
CComPtr<ISpObjectToken> m_cpToken;
|
|
CComPtr<ISpObjectToken> m_cpTTSToken;
|
|
CComPtr<IPromptDb> m_cpPromptDb;
|
|
CComPtr<ISpTTSEngine> m_cpTTSEngine;
|
|
CPhoneContext m_phoneContext;
|
|
CTextRules m_textRules;
|
|
CDbQuery m_DbQuery;
|
|
CLocalTTSEngineSite* m_pOutputSite;
|
|
CSPArray<CQuery*,CQuery*> m_apQueries;
|
|
double m_dQueryCost;
|
|
bool m_fAbort;
|
|
};
|
|
|
|
#endif //__PROMPTENG_H_
|