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

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK *****  
  2.  * Source last modified: $Id: hxlvtxt.h,v 1.1 2003/07/09 03:53:21 jgordon Exp $ 
  3.  *   
  4.  * Portions Copyright (c) 1995-2003 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.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  21.  * developer of the Original Code and owns the copyrights in the 
  22.  * portions it created. 
  23.  *   
  24.  * This file, and the files included with this file, is distributed 
  25.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY 
  26.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS 
  27.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES 
  28.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET 
  29.  * ENJOYMENT OR NON-INFRINGEMENT. 
  30.  *  
  31.  * Technology Compatibility Kit Test Suite(s) Location:  
  32.  *    http://www.helixcommunity.org/content/tck  
  33.  *  
  34.  * Contributor(s):  
  35.  *   
  36.  * ***** END LICENSE BLOCK ***** */  
  37. #ifndef _HXLVTXT_H_
  38. #define _HXLVTXT_H_
  39. /* These need to be visible to rtlive and to exlvtext: */
  40. /* For live, duration is max allowed val, or max ulong:
  41.  */
  42. #if !defined(MAX_ULONG32)
  43. # define MAX_ULONG32     0xFFFFFFFF
  44. #endif
  45. #if !defined(MIN_LONG32)
  46. # define MIN_LONG32                 0xFFFFFFFF
  47. #endif
  48. /* These, too, need to be visible to rtlive and to exlvtext: */
  49. #define MAX_PACKET_SIZE     500
  50. #define USE_DEFAULT_TYPE     NULL
  51. #define USE_DEFAULT_HEIGHT          MAX_ULONG32
  52. #define USE_DEFAULT_WIDTH     MAX_ULONG32
  53. #define USE_DEFAULT_SCROLLRATE     MIN_LONG32
  54. #define USE_DEFAULT_CRAWLRATE     MIN_LONG32
  55. #define USE_DEFAULT_BGCOLOR     NULL
  56. #define USE_DEFAULT_LINKCOLOR     NULL
  57. #define USE_DEFAULT_LINKUNDERLINING 0x2
  58. #define USE_DEFAULT_WORDWRAP     0x2
  59. #define USE_DEFAULT_DOLOOPING     0L     
  60. #define USE_DEFAULT_IGNOREEXTRASPACES FALSE
  61. typedef _INTERFACE IUnknown IUnknown;
  62. typedef _INTERFACE IHXValues IHXValues;
  63. typedef _INTERFACE IHXPacket IHXPacket;
  64. typedef _INTERFACE IHXLiveText IHXLiveText;
  65. typedef _INTERFACE IHXLiveText2 IHXLiveText2;
  66. STDAPI
  67. CreateLiveText(IHXLiveText**);
  68. typedef HX_RESULT (HXEXPORT_PTR FPRMCREATELIVETEXT)(IHXLiveText** ppLiveText);
  69. DEFINE_GUID(IID_IHXLiveText,  0x00001b00, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  70. #undef INTERFACE
  71. #define INTERFACE IHXLiveText
  72. DECLARE_INTERFACE_(IHXLiveText, IUnknown)
  73. {
  74.     /***********************************************************************/
  75.     /*
  76.      * IUnknown methods
  77.      */
  78.     STDMETHOD(QueryInterface) (THIS_
  79.  REFIID riid,
  80.  void** ppvObj) PURE;
  81.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  82.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  83.     /***********************************************************************/
  84.     /*
  85.      * IHXLiveText methods
  86.      */
  87.     /*
  88.      * InitLiveText() must be called before any of the other IHXLiveText
  89.      * methods:
  90.      */
  91.     STDMETHOD(InitLiveText) (THIS_
  92. /*
  93.  * This is the computer where the
  94.  * RMServer is running:
  95.  */
  96. char* pAddress,
  97. /*
  98.  * This is the port number defined in
  99.  * the config file where the FSMount
  100.  * option has the following entry:
  101.  * { /encoder/, pn-encoder, Port=#### }
  102.  * where #### is the port number that
  103.  * encoders will use:
  104.  */
  105. UINT16 port,
  106. char* pUsername,
  107. char* pPassword,
  108. /*
  109.  * This is the "file" name that
  110.  * RMPlayers can use to view the
  111.  * stream.  For example, if your
  112.  * server was called "srv1" and the
  113.  * rtsp port in the config file was
  114.  * 8080, and the filename from the
  115.  * encoder was "foo.rtx", then a
  116.  * player could view the stream by
  117.  * opening the following location:
  118.  * "rtsp://srv1:8080/encoder/foo.rtx"
  119.  */
  120. char* pFilename) PURE;
  121.     /* ******************************************************************* */
  122.     /* The following methods are to be called prior to sending any data
  123.      * and exist as overrides to the default attributes of a RealText
  124.      * presentation.  Please see the section on the <WINDOW> header tag
  125.      * in the realtext.htm in the SDK's doc directory for more information.
  126.      * Note: with live text, you do not need a <WINDOW> tag; you must use
  127.      * the following methods to set the stream type (e.g., "tickertape"),
  128.      * window width, height, background color, ...etc.
  129.      */
  130.     
  131.     STDMETHOD(SetType) (THIS_
  132. char* szType) PURE;
  133.     STDMETHOD(SetWindowDimensions) (THIS_
  134. ULONG32 width,
  135. ULONG32 height) PURE;
  136.     STDMETHOD(SetTextMotion) (THIS_
  137. LONG32 scrollrate,
  138. LONG32 crawlrate) PURE;
  139.     STDMETHOD(SetBackgroundColor) (THIS_
  140. char* szBackgroundColor) PURE;
  141.     STDMETHOD(SetHyperlinkInfo) (THIS_
  142. BOOL underlineHyperlinks,
  143. char* szLinkColor) PURE;
  144.     STDMETHOD(UseWordwrap) (THIS_
  145. BOOL useWordwrap) PURE;
  146.     /*
  147.      * This is for "TickerTape"-type windows only; it is ignored by all
  148.      * other types:
  149.      */
  150.     STDMETHOD(SetDoLooping) (THIS_
  151. BOOL bDoLooping) PURE;
  152.     /* ******************************************************************* */
  153.     /*
  154.      * AddData() lets you add text to the stream.  The second
  155.      * parameter, bSendImmediately, can be used to force the encoder to
  156.      * send all text that's been added (and not yet sent) immediately.
  157.      * Note: if bSendImmediately is FALSE, the encoder will decide when
  158.      * to send the text it has buffered based on the length of the text in
  159.      * the buffer and the time since the last packet was sent:
  160.      */
  161.     STDMETHOD(AddData) (THIS_
  162. char* szMoreData,
  163. BOOL bSendImmediately) PURE;
  164.     /*
  165.      * AddTickerItem() lets you add "tickertape" text to the stream.
  166.      * This method prepends "<TU>" to szTickerUpperData, and
  167.      * "<TL>" to szTickerLowerData.  Calling:
  168.      * AddTickerItem("ABCD", "5 1/2", TRUE)
  169.      * is the same as calling
  170.      * AddData("<TU>ABCD", FALSE);
  171.      * AddData("<TL>5 1/2", TRUE);
  172.      * except that the former guarantees that the "upper" and "lower"
  173.      * items will be sent in the same packet. 
  174.      * (Please see the comments above for AddData() for details on use of
  175.      * the second parameter, bSendImmediately.
  176.      */
  177.     STDMETHOD(AddTickerItem) (THIS_
  178. char* szTickerUpperData,
  179. char* szTickerLowerData,
  180. BOOL bSendImmediately) PURE;
  181.     /* ******************************************************************* */
  182.     /*
  183.      * flush() tells the encoder to send everything that's in the buffer and
  184.      * clear it:
  185.      */
  186.     STDMETHOD(flush) (THIS) PURE;
  187.     /* ******************************************************************* */
  188.     /*
  189.      * GetTime returns the current system time in milliseconds.  The return
  190.      * value is a UINT32 (32-bit unsigned int):
  191.      */
  192.     STDMETHOD_(UINT32,GetTime)     (THIS) PURE;
  193.     /* ******************************************************************* */
  194.     /*
  195.      * This must be called on a regular basis: 
  196.      */
  197.     STDMETHOD(Process)     (THIS) PURE;
  198.     /* ******************************************************************* */
  199.     /*
  200.      * These methods keep track of the encoder's state and must be called
  201.      * as they are in main.cpp in the exlvtext directory:
  202.      */
  203.     STDMETHOD_(BOOL,EncoderIsInitialized)   (THIS) PURE;
  204.     STDMETHOD_(BOOL,PacketsHaveStarted)     (THIS) PURE;
  205.     STDMETHOD_(BOOL,EncoderIsDone)     (THIS) PURE;
  206.     STDMETHOD(SetEncoderDone)     (THIS) PURE;
  207. };
  208. DEFINE_GUID(IID_IHXLiveText2,  0x00001b01, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  209. #undef INTERFACE
  210. #define INTERFACE IHXLiveText2
  211. DECLARE_INTERFACE_(IHXLiveText2, IUnknown)
  212. {
  213.     /***********************************************************************/
  214.     /*
  215.      * IUnknown methods
  216.      */
  217.     STDMETHOD(QueryInterface) (THIS_
  218.  REFIID riid,
  219.  void** ppvObj) PURE;
  220.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  221.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  222.     /***********************************************************************/
  223.     /*
  224.      * IHXLiveText2 methods
  225.      */
  226.     /* ******************************************************************* */
  227.     /* The following methods are to be called prior to sending any data
  228.      * and exist as overrides to the default attributes of a RealText
  229.      * presentation.  Please see the section on the <window> header tag
  230.      * in the realtext.htm in the SDK's doc directory for more information.
  231.      * Note: these are additional to the IHXLiveText methods, listed
  232.      * above.
  233.      */
  234.     
  235.     /* This allows you to give an estimate of the bit rate needed by a live
  236.      * text stream so that the server can determine whether or not a player
  237.      * can view the stream based on its available bandwidth  This method
  238.      * should be called before sending any data::
  239.      */
  240.     STDMETHOD(DeclareAverageBitrate) (THIS_
  241. ULONG32 ulAvgBitsPerSecond) PURE;
  242.     /* As above, for DeclareAverageBitrate, this method should be called
  243.      * before sending any data::
  244.      */
  245.     STDMETHOD(DeclareMaximumBitrate) (THIS_
  246. ULONG32 ulMaxBitsPerSecond) PURE;
  247.     /*This determines how multiple contiguous space characters are presented;
  248.      * Defaults to FALSE which means that multiple spaces in non-tag text
  249.      * would all be renderered.  If this value is TRUE, multiple contiguous
  250.      * spaces will be treated as a single space.  This method should be
  251.      * called before sending any data.
  252.      */
  253.     STDMETHOD(IgnoreExtraSpaces) (THIS_
  254. BOOL bIgnoreExtraSpaces) PURE;
  255.     /* This is for internal testing use only and does not affect the
  256.      * presentation of a live text stream:
  257.      */
  258.     STDMETHOD(SetFlags) (THIS_
  259. ULONG32 ulFlags) PURE;
  260.     /* ******************************************************************* */
  261.     /* The following methods can be called at any time while the encoder is
  262.      * running.
  263.      */
  264.     /* This method tells you when the last-sent text will end.  This
  265.      * allows you to determine when it's ok to send more text.  For example,
  266.      * if you're streaming a presentation that's scrolling at a rate of 20
  267.      * pixels per second in a window that's 200 pixels high and you call
  268.      * IHXLiveText's AddData() with 100 lines of 20-point text, it will take
  269.      * 100 seconds for all that text to scroll up and out of the window.  The
  270.      * following method would return the current time plus 100 if you called
  271.      * it right after calling AddData():
  272.      */
  273.     STDMETHOD(GetLastSentTextEndTime) (THIS_
  274. ULONG32& ulLastEndTime) PURE;
  275.     /* This method allows you to adjust the time, since the last data was
  276.      * sent, that the encoder waits before resending "heartbeat" packets that
  277.      * let the server know the encoder still alive and to let newly-connected
  278.      * players know what's currently visible in the window (in case they
  279.      * connected during a "dry" period in the stream, after the last new
  280.      * text was sent).  Time is in milliseconds.  NOTE: this defaults to 
  281.      * 3000 milliseconds; any number higher than this will result in longer
  282.      * connect times for players coming in during a "dry" spell in the
  283.      * stream, and a sufficiently high value may cause the server to
  284.      * disconnect since it assumes the encoder has stopped if it does not
  285.      * periodically send data.  This value's minimum is 500 milliseconds.
  286.      */
  287.     STDMETHOD(SetTimeBetweenDryStreamResends) (THIS_
  288. ULONG32 ulMillisecBetweenResends) PURE;
  289. };
  290. #endif /* _HXLVTXT_H_ */