hxdtcvt.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:17k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _HXDTCVT_H
  36. #define _HXDTCVT_H
  37. typedef _INTERFACE IHXDataConvertSystemObject
  38. IHXDataConvertSystemObject;
  39. typedef _INTERFACE IHXDataConvert               IHXDataConvert;
  40. typedef _INTERFACE IHXDataConvertResponse       IHXDataConvertResponse;
  41. typedef _INTERFACE IHXDataRevert                IHXDataRevert;
  42. typedef _INTERFACE IHXDataRevertResponse        IHXDataRevertResponse;
  43. /****************************************************************************
  44.  * 
  45.  *  Interface:
  46.  * 
  47.  * IHXDataConvertSystemObject
  48.  *
  49.  *  Purpose:
  50.  *
  51.  * Object that allows Controller to communicate with a specific
  52.  * Data Convert plugin session (similar to IHXFileSystemObject)
  53.  *
  54.  *  Implemented by:
  55.  *
  56.  * Server side plugin.
  57.  * 
  58.  *  IID_IMADataConvertSystemObject:
  59.  * 
  60.  * {00003900-0901-11d1-8B06-00A024406D59}
  61.  * 
  62.  */
  63. DEFINE_GUID(IID_IHXDataConvertSystemObject,
  64.     0x00003900, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  65. #undef  INTERFACE
  66. #define INTERFACE   IHXDataConvertSystemObject
  67. DECLARE_INTERFACE_(IHXDataConvertSystemObject, IUnknown)
  68. {
  69.     /*
  70.      * IUnknown methods
  71.      */
  72.     STDMETHOD(QueryInterface) (THIS_
  73. REFIID riid,
  74. void** ppvObj) PURE;
  75.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  76.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  77.     
  78.     /*
  79.      * IHXDataConvertSystemObject
  80.      */
  81.      
  82.     /***********************************************************************
  83.      * Method: GetDataConvertInfo
  84.      *
  85.      * Purpose:
  86.      * Returns information needed for proper instantiation of data
  87.      *  convert plugin.  pShortName should be a short, human readable
  88.      *  name in the form of "company-dcname".  For example:
  89.      *  pShortName = "rn-dataconvert"
  90.      */
  91.     STDMETHOD(GetDataConvertInfo) (THIS_ REF(const char*) pShortName) PURE;
  92.     
  93.     /***********************************************************************
  94.      * Method: InitDataConvertSystem
  95.      *
  96.      * Purpose:
  97.      * Pass in options from config file from under DataConvertMount
  98.      *  for this specific plugin.
  99.      */
  100.     STDMETHOD(InitDataConvertSystem) (THIS_ IHXValues* pOptions) PURE;
  101.     
  102.     /***********************************************************************
  103.      * Method: CreateDataConvert
  104.      *
  105.      * Purpose:
  106.      * Purpose:
  107.      *  System is requesting an IHXDataConvert object for this mount
  108.      *   point.
  109.      */
  110.     STDMETHOD(CreateDataConvert) (THIS_ IUnknown** /*OUT*/ ppConvObj) PURE;
  111. };
  112. /****************************************************************************
  113.  * 
  114.  *  Interface:
  115.  * 
  116.  * IHXDataConvert
  117.  *
  118.  *  Purpose:
  119.  *
  120.  * Per connection object to handle the actual data and header
  121.  * conversions.
  122.  *
  123.  *  Implemented by:
  124.  *
  125.  * Server side plugin.
  126.  * 
  127.  *  IID_IMADataConvert:
  128.  * 
  129.  * {00003901-0901-11d1-8B06-00A024406D59}
  130.  * 
  131.  */
  132. DEFINE_GUID(IID_IHXDataConvert,
  133.     0x00003901, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  134. #undef  INTERFACE
  135. #define INTERFACE   IHXDataConvert
  136. DECLARE_INTERFACE_(IHXDataConvert, IUnknown)
  137. {
  138.     /*
  139.      * IUnknown methods
  140.      */
  141.     STDMETHOD(QueryInterface) (THIS_
  142. REFIID riid,
  143. void** ppvObj) PURE;
  144.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  145.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  146.     /*
  147.      *  IHXDataConvert
  148.      */
  149.     
  150.     /*
  151.      * NOTE: for each of ConvertFileHeader, ConvertStreamHeader,
  152.      *    ConvertData, you can call the appropriate done method on
  153.      *    the response object with a result of HXR_OK and a NULL buffer
  154.      *    and the system will use the original header/packet.  Do this
  155.      *    if you aren't going to change things in the header/packet.
  156.      */
  157.     /************************************************************************
  158.      * Method: DataConvertInit
  159.      *
  160.      *Purpose:
  161.      * Basic initialization, mainly just to pass in response object.
  162.      */
  163.     STDMETHOD(DataConvertInit) (THIS_ IHXDataConvertResponse* pResponse) PURE;
  164.     /************************************************************************
  165.      * Method: ConvertFileHeader
  166.      *
  167.      * Purpose:
  168.      * Pass in file headers for data conversion.
  169.      */
  170.     STDMETHOD(ConvertFileHeader) (THIS_ IHXValues* pFileHeader) PURE;
  171.     
  172.     /************************************************************************
  173.      * Method: ConvertStreamHeader
  174.      *
  175.      * Purpose:
  176.      * Pass in stream headers for data conversion.
  177.      */
  178.     STDMETHOD(ConvertStreamHeader) (THIS_ IHXValues* pStreamHeader) PURE;
  179.     
  180.     /************************************************************************
  181.      * Method: GetConversionMimeType
  182.      *
  183.      * Purpose:
  184.      * Tell the server what converstion type you are using for the
  185.      * session.
  186.      */
  187.     STDMETHOD(GetConversionMimeType)
  188. (THIS_ REF(const char*) pConversionType) PURE;
  189.     /************************************************************************
  190.      * Method: ConvertData
  191.      *
  192.      * Purpose:
  193.      * Pass in data to be converted.
  194.      */
  195.     STDMETHOD(ConvertData) (THIS_ IHXPacket* pPacket) PURE;
  196.     
  197.     /************************************************************************
  198.      * Method: ControlBufferReady
  199.      *
  200.      * Purpose:
  201.      *  Pass in a control channel buffer sent from the IHXDataRevert
  202.      *  on the other side (player).
  203.      */
  204.     STDMETHOD(ControlBufferReady) (THIS_ IHXBuffer* pBuffer) PURE;
  205.     
  206.     /************************************************************************
  207.      * Method: SetMulticastTransportConverter
  208.      *
  209.      * Purpose:
  210.      *  In this case the IHXDataConvert is only handling the header
  211.      *  conversions per player and this call is handing you the data
  212.      *  converter which is doing the data.  This will a different
  213.      *  instance of the same object.
  214.      */
  215.     STDMETHOD(SetMulticastTransportConverter) (THIS_
  216.     IHXDataConvert* pConverter) PURE;
  217.     
  218.     
  219.     /************************************************************************
  220.      * Method: AddMulticastControlConverter
  221.      *
  222.      * Purpose:
  223.      *  In this case the IHXDataConvert is only handling the data 
  224.      *  conversions for all of the players (but only once because it's
  225.      *  multicast).  This call is handing you one of a possible many
  226.      *  IHXDataConvert objects which will be handling the header
  227.      *  conversions.
  228.      */
  229.     STDMETHOD(AddMulticastControlConverter) (THIS_
  230.     IHXDataConvert* pConverter) PURE;
  231.     
  232.     /************************************************************************
  233.      * Method: Done
  234.      *
  235.      * Purpose:
  236.      *  Let IHXDataConvert know that it is done. This is mainly to clear
  237.      *  circular refs between multicast transport and controllers.
  238.      */
  239.     STDMETHOD(Done) (THIS) PURE;
  240. };
  241. /****************************************************************************
  242.  * 
  243.  *  Interface:
  244.  * 
  245.  * IHXDataConvertResponse
  246.  *
  247.  *  Purpose:
  248.  *
  249.  * Response object for IHXDataConvert.
  250.  *
  251.  *  Implemented by:
  252.  *
  253.  * Server Core.
  254.  * 
  255.  *  IID_IMADataConvertResponse:
  256.  * 
  257.  * {00003902-0901-11d1-8B06-00A024406D59}
  258.  * 
  259.  */
  260. DEFINE_GUID(IID_IHXDataConvertResponse,
  261.     0x00003902, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  262. #undef  INTERFACE
  263. #define INTERFACE   IHXDataConvertResponse
  264. DECLARE_INTERFACE_(IHXDataConvertResponse, IUnknown)
  265. {
  266.     /*
  267.      * IUnknown methods
  268.      */
  269.     STDMETHOD(QueryInterface) (THIS_
  270. REFIID riid,
  271. void** ppvObj) PURE;
  272.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  273.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  274.     /*
  275.      *  IHXDataConvertResponse
  276.      */
  277.     /*
  278.      * NOTE: for each of ConvertFileHeader, ConvertStreamHeader,
  279.      *    ConvertData, you can call the appropriate done method on
  280.      *    the response object with a result of HXR_OK and a NULL buffer
  281.      *    and the system will use the original header/packet.  Do this
  282.      *    if you aren't going to change things in the header/packet.
  283.      */
  284.     /************************************************************************
  285.      * Method: DataConvertInitDone
  286.      *
  287.      * Purpose:
  288.      *  Async notification that the IHXDataConvert is done with
  289.      *  intialization.
  290.      */
  291.     STDMETHOD(DataConvertInitDone) (THIS_ HX_RESULT status) PURE;
  292.     
  293.     /************************************************************************
  294.      * Method: ConvertedFileHeaderReady
  295.      *
  296.      * Purpose:
  297.      * Async notification that the IHXDataCovert is done converting the
  298.      *  file header.
  299.      */
  300.     STDMETHOD(ConvertedFileHeaderReady) (THIS_
  301.     HX_RESULT status, IHXValues* pFileHeader) PURE;
  302.     
  303.     /************************************************************************
  304.      * Method: ConvertedStreamHeaderReady
  305.      *
  306.      * Purpose:
  307.      * Async notification that the IHXDataConvert is done converting the
  308.      * stream header.
  309.      */
  310.     STDMETHOD(ConvertedStreamHeaderReady) (THIS_
  311.     HX_RESULT status, IHXValues* pStreamHeader) PURE;
  312.     /************************************************************************
  313.      * Method: ConvertedDataReady
  314.      *
  315.      * Purpose:
  316.      * Async notification that the IHXDataConvert is done converting
  317.      *  the stream data packet.
  318.      */
  319.     STDMETHOD(ConvertedDataReady) (THIS_ HX_RESULT status,
  320.      IHXPacket* pPacket) PURE;
  321.     /************************************************************************
  322.      * Method: SendControlBuffer
  323.      *
  324.      * Purpose:
  325.      * Provided to allow IHXDataConvert to send an arbitrary buffer
  326.      *  to the IHXDataRevert on the other side (player).
  327.      */
  328.     STDMETHOD(SendControlBuffer) (THIS_ IHXBuffer* pBuffer) PURE;
  329. };
  330. /****************************************************************************
  331.  * 
  332.  *  Interface:
  333.  * 
  334.  * IHXDataRevert
  335.  * 
  336.  *  Purpose:
  337.  *
  338.  * Revert data coming from coresponding IHXDataConvert on server.
  339.  *
  340.  *  Implemented by:
  341.  *
  342.  * Player side plugin.
  343.  *
  344.  *  IID_IMADataRevert:
  345.  * 
  346.  * {00003903-0901-11d1-8B06-00A024406D59}
  347.  * 
  348.  */
  349. DEFINE_GUID(IID_IHXDataRevert,
  350.     0x00003903, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  351. #undef  INTERFACE
  352. #define INTERFACE   IHXDataRevert
  353. DECLARE_INTERFACE_(IHXDataRevert, IUnknown)
  354. {
  355.     /*
  356.      * IUnknown methods
  357.      */
  358.     STDMETHOD(QueryInterface) (THIS_
  359. REFIID riid,
  360. void** ppvObj) PURE;
  361.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  362.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  363.     /*
  364.      *  IHXDataRevert
  365.      */
  366.     /************************************************************************
  367.      * Method: DataRevertInit
  368.      *
  369.      * Purpose:
  370.      *  Basic inialization of IHXDataRevert.  Mainly just to pass in
  371.      *  response object.
  372.      */
  373.     STDMETHOD(DataRevertInit) (THIS_ IHXDataRevertResponse* pResponse) PURE;
  374.     /************************************************************************
  375.      * Method: GetDataRevertInfo
  376.      *
  377.      * Purpose:
  378.      * Allow IHXDataRevert to notify player core about which data
  379.      *  conversion mime types it is willing to handle.
  380.      */
  381.     STDMETHOD(GetDataRevertInfo) (THIS_ REF(const char**)
  382. ppConversionMimeTypes) PURE;
  383.     
  384.     /************************************************************************
  385.      * Method: RevertFileHeader
  386.      *
  387.      * Purpose:
  388.      * Pass in converted FileHeader to allow IHXDataRevert to revert
  389.      *  the header.
  390.      */
  391.     STDMETHOD(RevertFileHeader) (THIS_ IHXValues* pFileHeader) PURE;
  392.     
  393.     /************************************************************************
  394.      * Method: RevertStreamHeader
  395.      *
  396.      * Purpose:
  397.      *  Pass in converted StreamHeader to allow IHXDataRevert to revert
  398.      *  the header.
  399.      */
  400.     STDMETHOD(RevertStreamHeader)(THIS_ IHXValues* pStreamHeader) PURE;
  401.     
  402.     /************************************************************************
  403.      * Method: RevertData
  404.      *
  405.      * Purpose:
  406.      * Pass in converted stream data to allow IHXDataRevert to 
  407.      *  revert the data.
  408.      */
  409.     STDMETHOD(RevertData) (THIS_ IHXPacket* pPacket) PURE;
  410.     
  411.     /************************************************************************
  412.      * Method: ControlBufferReady
  413.      *
  414.      * Purpose:
  415.      * Pass in control channel buffer received from corresponding
  416.      *  IHXDataConvert on server side.
  417.      */
  418.     STDMETHOD(ControlBufferReady) (THIS_ IHXBuffer* pBuffer) PURE;
  419. };
  420. /****************************************************************************
  421.  * 
  422.  *  Interface:
  423.  * 
  424.  * IHXDataRevertResponse
  425.  * 
  426.  *  Purpose:
  427.  *
  428.  * Response ojbect for IHXDataRevert.
  429.  *
  430.  *  Implemented by:
  431.  *
  432.  * Player core.
  433.  *
  434.  *  IID_IMADataRevertResponse:
  435.  * 
  436.  * {00003904-0901-11d1-8B06-00A024406D59}
  437.  * 
  438.  */
  439. DEFINE_GUID(IID_IHXDataRevertResponse,
  440.     0x00003904, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  441. #undef  INTERFACE
  442. #define INTERFACE   IHXDataRevertResponse
  443. DECLARE_INTERFACE_(IHXDataRevertResponse, IUnknown)
  444. {
  445.     /*
  446.      * IUnknown methods
  447.      */
  448.     STDMETHOD(QueryInterface) (THIS_
  449. REFIID riid,
  450. void** ppvObj) PURE;
  451.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  452.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  453.     /*
  454.      *  IHXDataRevertResponse
  455.      */
  456.     /************************************************************************
  457.      * Method: DataRevertInitDone
  458.      *
  459.      * Purpose:
  460.      * Async notification that the IHXDataRevert is done intializing
  461.      *  and can begin processing headers.
  462.      */
  463.     STDMETHOD(DataRevertInitDone) (THIS_ HX_RESULT status) PURE;
  464.     
  465.     /************************************************************************
  466.      * Method: RevertedFileHeaderReady
  467.      *
  468.      * Purpose:
  469.      * Async notification that the IHXDataRevert is done reverting the
  470.      *  file headers.
  471.      */
  472.     STDMETHOD(RevertedFileHeaderReady) (THIS_ 
  473.      HX_RESULT status, IHXValues* pHeader) PURE;
  474.     
  475.     /************************************************************************
  476.      * Method: RevertedStreamHeaderReady
  477.      *
  478.      * Purpose:
  479.      *  Async notification that the IHXDataRevert is done reverting the
  480.      *  stream headers.
  481.      */
  482.     STDMETHOD(RevertedStreamHeaderReady) (THIS_
  483. HX_RESULT status, IHXValues* pHeader) PURE;
  484.     /************************************************************************
  485.      * Method: RevertedDataReady
  486.      *
  487.      * Purpose:
  488.      * Async notification that the IHXDataRevert is done reverting the
  489.      *  stream data.
  490.      */
  491.     STDMETHOD(RevertedDataReady) (THIS_ HX_RESULT status,
  492.      IHXPacket* pPacket) PURE;
  493.     /************************************************************************
  494.      * Method: SendControlBuffer
  495.      *
  496.      * Purpose:
  497.      * Provided to allow IHXDataRevert to send an arbitrary control
  498.      *  buffer to the IHXDataConvert on the other side (server).
  499.      */
  500.     STDMETHOD(SendControlBuffer) (THIS_ IHXBuffer* pBuffer) PURE;
  501. };
  502. #endif