rmadtcvt.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:15k
源码类别:

多媒体编程

开发平台:

Visual C++

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