www.pudn.com > openh323-v1_15_1-src.zip > opalvxml.h


/* 
 * opalvxml.h 
 * 
 * Header file for IVR code 
 * 
 * A H.323 IVR application. 
 * 
 * Copyright (C) 2002 Equivalence Pty. Ltd. 
 * 
 * The contents of this file are subject to the Mozilla Public License 
 * Version 1.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.mozilla.org/MPL/ 
 * 
 * Software distributed under the License is distributed on an "AS IS" 
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 
 * the License for the specific language governing rights and limitations 
 * under the License. 
 * 
 * The Original Code is Portable Windows Library. 
 * 
 * The Initial Developer of the Original Code is Equivalence Pty. Ltd. 
 * 
 * Contributor(s): ______________________________________. 
 * 
 * $Log: opalvxml.h,v $ 
 * Revision 1.16  2004/07/15 11:20:37  rjongbloed 
 * Migrated changes from crs_vxnml_devel branch into main trunk 
 * 
 * Revision 1.15.6.1  2004/07/07 07:10:11  csoutheren 
 * Changed to use new factory based PWAVFile 
 * Removed redundant blocking/unblocking when using G.723.1 
 * 
 * Revision 1.15  2002/09/16 01:14:15  robertj 
 * Added #define so can select if #pragma interface/implementation is used on 
 *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. 
 * 
 * Revision 1.14  2002/08/27 02:21:07  craigs 
 * Added silence detection capability to fake G.723.1codec 
 * 
 * Revision 1.13  2002/08/15 08:22:25  craigs 
 * Added P_EXPAT test back in 
 * 
 * Revision 1.12  2002/08/15 04:55:26  robertj 
 * Fixed shutdown problems with closing vxml session, leaks a thread. 
 * Fixed potential problems with indirect channel Close() function. 
 * 
 * Revision 1.11  2002/08/06 06:00:38  craigs 
 * Removed ifdef test for EXPLATFLAG 
 * 
 * Revision 1.10  2002/08/06 05:11:24  craigs 
 * Moved most of stuff to ptclib 
 * 
 * Revision 1.9  2002/08/05 09:43:30  robertj 
 * Added pragma interface/implementation 
 * Moved virtual into .cxx file 
 * 
 * Revision 1.8  2002/07/29 15:13:51  craigs 
 * Added autodelete option to PlayFile 
 * 
 * Revision 1.7  2002/07/18 04:17:12  robertj 
 * Moved virtuals to source and changed name of G.723.1 file capability 
 * 
 * Revision 1.6  2002/07/10 13:16:19  craigs 
 * Moved some VXML classes from Opal back into PTCLib 
 * Added ability to repeat outputted data 
 * 
 * Revision 1.5  2002/07/09 08:27:23  craigs 
 * Added GetMediaFormat to channels 
 * 
 * Revision 1.4  2002/07/03 01:53:58  craigs 
 * Added newline to the end of the file for Linux 
 * 
 * Revision 1.3  2002/07/02 06:32:04  craigs 
 * Added recording functions 
 * 
 * Revision 1.2  2002/06/28 02:42:54  craigs 
 * Fixed problem with G.723.1 file codec not identified as native format 
 * 
 * Revision 1.1  2002/06/27 05:44:39  craigs 
 * Initial version 
 * 
 * Revision 1.2  2002/06/26 09:05:28  csoutheren 
 * Added ability to utter various "sayas" types within prompts 
 * 
 * Revision 1.1  2002/06/26 01:13:53  csoutheren 
 * Disassociated VXML and Opal/OpenH323 specific elements 
 * 
 * 
 */ 
 
#ifndef _OpenIVR_OPALVXML_H 
#define _OpenIVR_OPALVXML_H 
 
#ifdef P_USE_PRAGMA 
#pragma interface 
#endif 
 
#include  
#include  
#include  
#include  
#include  
#include  
 
////////////////////////////////////////////////////////////////// 
 
class G7231_File_Codec : public H323AudioCodec 
{ 
  PCLASSINFO(G7231_File_Codec, H323AudioCodec); 
 
  public: 
    G7231_File_Codec(Direction dir); 
 
    unsigned GetBandwidth() const; 
    static int GetFrameLen(int val); 
       
    BOOL Read(BYTE * buffer, unsigned & length, RTP_DataFrame &); 
    BOOL Write(const BYTE * buffer, unsigned length, const RTP_DataFrame & rtp, unsigned & frames); 
 
    BOOL IsRawDataChannelNative() const; 
 
    unsigned GetAverageSignalLevel(); 
 
  protected: 
    int lastFrameLen; 
};   
 
 
class G7231_File_Capability : public H323AudioCapability 
{ 
  PCLASSINFO(G7231_File_Capability, H323AudioCapability) 
 
  public: 
    G7231_File_Capability(); 
 
    unsigned GetSubType() const; 
    PString GetFormatName() const; 
 
    H323Codec * CreateCodec(H323Codec::Direction direction) const; 
 
    BOOL OnSendingPDU(H245_AudioCapability & cap, unsigned packetSize) const; 
    BOOL OnReceivedPDU(const H245_AudioCapability & pdu, unsigned & packetSize); 
    PObject * Clone() const; 
}; 
 
 
////////////////////////////////////////////////////////////////// 
 
 
#if P_EXPAT 
 
class PTextToSpeech; 
 
class OpalVXMLSession : public PVXMLSession  
{ 
  PCLASSINFO(OpalVXMLSession, PVXMLSession); 
  public: 
    OpalVXMLSession(H323Connection * _conn, PTextToSpeech * tts = NULL, BOOL autoDelete = FALSE); 
    BOOL Close(); 
 
  protected: 
    H323Connection * conn; 
}; 
 
#endif 
 
#endif