home *** CD-ROM | disk | FTP | other *** search
/ ftp.muug.mb.ca / 2014.06.ftp.muug.mb.ca.tar / ftp.muug.mb.ca / pub / openh323.tar.gz / openh323.tar / openh323 / include / opalvxml.h < prev    next >
C/C++ Source or Header  |  2002-09-15  |  5KB  |  165 lines

  1. /*
  2.  * opalvxml.h
  3.  *
  4.  * Header file for IVR code
  5.  *
  6.  * A H.323 IVR application.
  7.  *
  8.  * Copyright (C) 2002 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Contributor(s): ______________________________________.
  25.  *
  26.  * $Log: opalvxml.h,v $
  27.  * Revision 1.15  2002/09/16 01:14:15  robertj
  28.  * Added #define so can select if #pragma interface/implementation is used on
  29.  *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
  30.  *
  31.  * Revision 1.14  2002/08/27 02:21:07  craigs
  32.  * Added silence detection capability to fake G.723.1codec
  33.  *
  34.  * Revision 1.13  2002/08/15 08:22:25  craigs
  35.  * Added P_EXPAT test back in
  36.  *
  37.  * Revision 1.12  2002/08/15 04:55:26  robertj
  38.  * Fixed shutdown problems with closing vxml session, leaks a thread.
  39.  * Fixed potential problems with indirect channel Close() function.
  40.  *
  41.  * Revision 1.11  2002/08/06 06:00:38  craigs
  42.  * Removed ifdef test for EXPLATFLAG
  43.  *
  44.  * Revision 1.10  2002/08/06 05:11:24  craigs
  45.  * Moved most of stuff to ptclib
  46.  *
  47.  * Revision 1.9  2002/08/05 09:43:30  robertj
  48.  * Added pragma interface/implementation
  49.  * Moved virtual into .cxx file
  50.  *
  51.  * Revision 1.8  2002/07/29 15:13:51  craigs
  52.  * Added autodelete option to PlayFile
  53.  *
  54.  * Revision 1.7  2002/07/18 04:17:12  robertj
  55.  * Moved virtuals to source and changed name of G.723.1 file capability
  56.  *
  57.  * Revision 1.6  2002/07/10 13:16:19  craigs
  58.  * Moved some VXML classes from Opal back into PTCLib
  59.  * Added ability to repeat outputted data
  60.  *
  61.  * Revision 1.5  2002/07/09 08:27:23  craigs
  62.  * Added GetMediaFormat to channels
  63.  *
  64.  * Revision 1.4  2002/07/03 01:53:58  craigs
  65.  * Added newline to the end of the file for Linux
  66.  *
  67.  * Revision 1.3  2002/07/02 06:32:04  craigs
  68.  * Added recording functions
  69.  *
  70.  * Revision 1.2  2002/06/28 02:42:54  craigs
  71.  * Fixed problem with G.723.1 file codec not identified as native format
  72.  *
  73.  * Revision 1.1  2002/06/27 05:44:39  craigs
  74.  * Initial version
  75.  *
  76.  * Revision 1.2  2002/06/26 09:05:28  csoutheren
  77.  * Added ability to utter various "sayas" types within prompts
  78.  *
  79.  * Revision 1.1  2002/06/26 01:13:53  csoutheren
  80.  * Disassociated VXML and Opal/OpenH323 specific elements
  81.  *
  82.  *
  83.  */
  84.  
  85. #ifndef _OpenIVR_OPALVXML_H
  86. #define _OpenIVR_OPALVXML_H
  87.  
  88. #ifdef P_USE_PRAGMA
  89. #pragma interface
  90. #endif
  91.  
  92. #include <ptclib/vxml.h>
  93. #include <opalwavfile.h>
  94. #include <ptclib/delaychan.h>
  95. #include <h323caps.h>
  96. #include <h245.h>
  97. #include <h323con.h>
  98.  
  99. //////////////////////////////////////////////////////////////////
  100.  
  101. class G7231_File_Codec : public H323AudioCodec
  102. {
  103.   PCLASSINFO(G7231_File_Codec, H323AudioCodec);
  104.  
  105.   public:
  106.     G7231_File_Codec(Direction dir);
  107.  
  108.     unsigned GetBandwidth() const;
  109.     static int GetFrameLen(int val);
  110.       
  111.     BOOL Read(BYTE * buffer, unsigned & length, RTP_DataFrame &);
  112.     BOOL Write(const BYTE * buffer, unsigned length, const RTP_DataFrame & rtp, unsigned & frames);
  113.  
  114.     BOOL IsRawDataChannelNative() const;
  115.  
  116.     unsigned GetAverageSignalLevel();
  117.  
  118.   protected:
  119.     PAdaptiveDelay incomingDelay;
  120.     int lastFrameLen;
  121. };  
  122.  
  123.  
  124. class G7231_File_Capability : public H323AudioCapability
  125. {
  126.   PCLASSINFO(G7231_File_Capability, H323AudioCapability)
  127.  
  128.   public:
  129.     G7231_File_Capability();
  130.  
  131.     unsigned GetSubType() const;
  132.     PString GetFormatName() const;
  133.  
  134.     H323Codec * CreateCodec(H323Codec::Direction direction) const;
  135.  
  136.     BOOL OnSendingPDU(H245_AudioCapability & cap, unsigned packetSize) const;
  137.     BOOL OnReceivedPDU(const H245_AudioCapability & pdu, unsigned & packetSize);
  138.     PObject * Clone() const;
  139. };
  140.  
  141.  
  142. //////////////////////////////////////////////////////////////////
  143.  
  144.  
  145. #if P_EXPAT
  146.  
  147. class PTextToSpeech;
  148.  
  149. class OpalVXMLSession : public PVXMLSession 
  150. {
  151.   PCLASSINFO(OpalVXMLSession, PVXMLSession);
  152.   public:
  153.     OpalVXMLSession(H323Connection * _conn, PTextToSpeech * tts = NULL, BOOL autoDelete = FALSE);
  154.     PWAVFile * CreateWAVFile(const PFilePath & fn, PFile::OpenMode mode, int opts, unsigned fmt);
  155.     BOOL Close();
  156.  
  157.   protected:
  158.     H323Connection * conn;
  159. };
  160.  
  161. #endif
  162.  
  163. #endif
  164.  
  165.