sdpplin.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:9k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: sdpplin.h,v 1.2.36.1 2004/07/09 02:05:16 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef _SDPPLIN_H_
  50. #define _SDPPLIN_H_
  51. #include "mdescparse.h"
  52. #include "mdescgen.h"
  53. class CSDPStreamDescription :        public IHXPlugin, 
  54.                                 public IHXStreamDescription,
  55.                                 public IHXStreamDescriptionSettings,
  56.                                 public IHXRTPPayloadInfo
  57. {
  58. private:
  59.     LONG32                            m_lRefCount;
  60.     MediaDescParser*                  m_pDescParser;
  61.     MediaDescGenerator*               m_pDescGenerator;
  62.     IUnknown*                         m_pContext;
  63.     IHXCommonClassFactory*           m_pCCF;
  64.     static const char* const          zm_pDescription;
  65.     static const char* const          zm_pCopyright;
  66.     static const char* const          zm_pMoreInfoURL;
  67.     static const char* const          zm_pStreamDescriptionMimeType;
  68.    
  69.     ~CSDPStreamDescription();
  70.     PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  71.     HX_RESULT        Update();
  72.     HX_RESULT   SpecComplianceCheck(UINT16 nValues, IHXValues** ppValueArray);
  73.     
  74. public:
  75.     CSDPStreamDescription();
  76.     char* EscapeBuffer(const char*, UINT32);
  77.     char* EscapeBuffer(const char*);
  78.     char* UnescapeBuffer(const char*, UINT32);
  79.     char* UnescapeBuffer(const char*);
  80.     // *** IUnknown methods ***
  81.     STDMETHOD(QueryInterface)        (THIS_
  82.                                 REFIID riid,
  83.                                 void** ppvObj);
  84.     STDMETHOD_(ULONG32,AddRef)        (THIS);
  85.     STDMETHOD_(ULONG32,Release)        (THIS);
  86.     // *** IHXPlugin methods ***
  87.     /************************************************************************
  88.      *        Method:
  89.      *            IHXPlugin::GetPluginInfo
  90.      *        Purpose:
  91.      *            Returns the basic information about this plugin. Including:
  92.      *
  93.      *            bLoadMultiple        whether or not this plugin DLL can be loaded
  94.      *                                multiple times. All File Formats must set
  95.      *                                this value to TRUE.
  96.      *            pDescription        which is used in about UIs (can be NULL)
  97.      *            pCopyright                which is used in about UIs (can be NULL)
  98.      *            pMoreInfoURL        which is used in about UIs (can be NULL)
  99.      */
  100.     STDMETHOD(GetPluginInfo)        (THIS_
  101.                                 REF(BOOL)        /*OUT*/ bLoadMultiple,
  102.                                 REF(const char*) /*OUT*/ pDescription,
  103.                                 REF(const char*) /*OUT*/ pCopyright,
  104.                                 REF(const char*) /*OUT*/ pMoreInfoURL,
  105.                                 REF(ULONG32)         /*OUT*/ ulVersionNumber
  106.                                 );
  107.     /************************************************************************
  108.      *        Method:
  109.      *            IHXPlugin::InitPlugin
  110.      *        Purpose:
  111.      *            Initializes the plugin for use. This interface must always be
  112.      *            called before any other method is called. This is primarily needed 
  113.      *            so that the plugin can have access to the context for creation of
  114.      *            IHXBuffers and IMalloc.
  115.      */
  116.     STDMETHOD(InitPlugin)   (THIS_
  117.                             IUnknown*   /*IN*/  pContext);
  118.     // *** IHXStreamDescription methods ***
  119.     /************************************************************************
  120.      *        Method:
  121.      *            IHXStreamDescription::GetStreamDescriptionInfo
  122.      *        Purpose:
  123.      *            Get info to initialize the stream description plugin
  124.      */
  125.     STDMETHOD(GetStreamDescriptionInfo)
  126.                                 (THIS_
  127.                                 REF(const char*) /*OUT*/ pMimeTypes);
  128.     /************************************************************************
  129.      *        Method:
  130.      *            IHXStreamDescription::GetValues
  131.      *        Purpose:
  132.      *            Transform a media description string into an IHXValues object
  133.      */
  134.     STDMETHOD(GetValues)    
  135.                                 (THIS_
  136.                                 IHXBuffer*          /*IN*/ pDescription,
  137.                                 REF(UINT16)          /*OUT*/ nValues,
  138.                                 REF(IHXValues**) /*OUT*/ pValueArray
  139.                                 );
  140.     /************************************************************************
  141.      *        Method:
  142.      *            IHXStreamDescription::GetDescription
  143.      *        Purpose:
  144.      *            Transform an IHXValues object into a stream description string.
  145.      *            plugins.
  146.      */
  147.     STDMETHOD(GetDescription)        
  148.                         (THIS_
  149.                         UINT16                            /*IN*/  nValues,
  150.                         IHXValues**                    /*IN*/  pValueArray,
  151.                         REF(IHXBuffer*)            /*OUT*/ pDescription
  152.                         );
  153.      // *** IHXStreamDescriptionSettings methods ***
  154.     STDMETHOD(SetOption)(const char* pKey, IHXBuffer* pVal);
  155.     STDMETHOD(GetOption)(const char* pKey, REF(IHXBuffer*) pVal);
  156.      // *** IHXRTPPayloadInfo methods ***
  157.     /************************************************************************
  158.      *        Method:
  159.      *            IHXRTPPayloadInfo::PayloadSupported
  160.      *        Purpose:
  161.      *            Returns TRUE if this payload type is handled by this interface
  162.      */
  163.     STDMETHOD_(BOOL, IsPayloadSupported)            (THIS_
  164.                                 UINT32      /*IN*/  ulRTPPayloadType);
  165.     /************************************************************************
  166.      *        Method:
  167.      *            IHXRTPPayloadInfo::GetTimestampConversionFactors
  168.      *        Purpose:
  169.      *            Retrieves the RTP and RMA factors for RTP to RMA timestamp ratio.
  170.      *      RTP->RMA is RTPTimestamp * RTPFactor / HXFactor
  171.      *      RMA->RTP is HXTimestamp * HXFactor / RTPFactor
  172.      *  Returns:
  173.      *            HXR_OK if payload is supported, HXR_FAIL if not.
  174.      */
  175.     STDMETHOD(GetTimestampConversionFactors)            (THIS_
  176.                                     UINT32      /*IN*/  ulRTPPayloadType,
  177.                                 REF(UINT32) /*OUT*/ ulRTPFactor,
  178.                                 REF(UINT32) /*OUT*/ ulHXFactor);
  179.     /************************************************************************
  180.      *        Method:
  181.      *            IHXRTPPayloadInfo::IsTimestampDeliverable
  182.      *        Purpose:
  183.      *            Returns TRUE if this payload type is timestamp deliverable
  184.      */
  185.     STDMETHOD_(BOOL, IsTimestampDeliverable)            (THIS_
  186.                                 UINT32      /*IN*/  ulRTPPayloadType);
  187. };
  188. #endif /* _MHPLIN_H_ */