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

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 PXGIFFF_H
  36. #define PXGIFFF_H
  37. // Forward declarations
  38. typedef _INTERFACE IHXRequest            IHXRequest;
  39. typedef _INTERFACE IHXFormatResponse     IHXFormatResponse;
  40. typedef _INTERFACE IHXFileObject         IHXFileObject;
  41. typedef _INTERFACE IHXBuffer             IHXBuffer;
  42. typedef _INTERFACE IHXFragmentedBuffer   IHXFragmentedBuffer;
  43. typedef _INTERFACE IHXPacket             IHXPacket;
  44. typedef _INTERFACE IHXCommonClassFactory IHXCommonClassFactory;
  45. typedef _INTERFACE IHXErrorMessages      IHXErrorMessages;
  46. typedef _INTERFACE IHXFileStat           IHXFileStat;
  47. class CHXSimpleList;
  48. class CHXString;
  49. class CGIFCodec;
  50. class CGIFFileFormat : public CHXBaseCountingObject,
  51.                        public IHXPlugin,
  52.                        public IHXFileFormatObject,
  53.                        public IHXFileResponse,
  54.                        public IHXFileStatResponse,
  55.        public IHXThreadSafeMethods
  56. {
  57. public:
  58.     CGIFFileFormat();
  59.     virtual ~CGIFFileFormat();
  60.     // IUnknown Methods
  61.     STDMETHOD (QueryInterface)  (THIS_ REFIID ID, void** ppObj);
  62.     STDMETHOD_(UINT32, AddRef)  (THIS);
  63.     STDMETHOD_(UINT32, Release) (THIS);
  64.     // IHXPlugin Methods
  65.     STDMETHOD(GetPluginInfo) (THIS_ REF(BOOL)        bMultipleLoad,
  66.                                     REF(const char*) pDescription,
  67.                                     REF(const char*) pCopyright,
  68.                                     REF(const char*) pMoreInfoURL,
  69.                                     REF(ULONG32)     ulVersionNumber);
  70.     STDMETHOD(InitPlugin)    (THIS_ IUnknown *pContext);
  71.     // IHXFileFormatObject methods
  72.     STDMETHOD(GetFileFormatInfo) (THIS_ REF(const char**) pFileMimeTypes,
  73.                                         REF(const char**) pFileExtensions,
  74.                                         REF(const char**) pFileOpenNames);
  75.     STDMETHOD(InitFileFormat)    (THIS_ IHXRequest*        pRequest,
  76.                                         IHXFormatResponse* pFormatResponse,
  77.                                         IHXFileObject*     pFileObject);
  78.     STDMETHOD(GetFileHeader)     (THIS);
  79.     STDMETHOD(GetStreamHeader)   (THIS_ UINT16 usStreamNum);
  80.     STDMETHOD(GetPacket)         (THIS_ UINT16 usStreamNum);
  81.     STDMETHOD(Seek)              (THIS_ UINT32 ulRequestedTime);
  82.     STDMETHOD(Close)             (THIS);
  83.     // IHXFileResponse Methods
  84.     STDMETHOD(InitDone)  (THIS_ HX_RESULT status);
  85.     STDMETHOD(SeekDone)  (THIS_ HX_RESULT status);
  86.     STDMETHOD(ReadDone)  (THIS_ HX_RESULT status, IHXBuffer* pBuffer);
  87.     STDMETHOD(WriteDone) (THIS_ HX_RESULT status);
  88.     STDMETHOD(CloseDone) (THIS_ HX_RESULT status);
  89.     // IHXFileStatResponse methods
  90.     STDMETHOD(StatDone) (THIS_ HX_RESULT status, UINT32 ulSize, UINT32 ulCreationTime,
  91.                                UINT32 ulAccessTime, UINT32 ulModificationTime, UINT32 ulMode);
  92.     // IHXThreadSafeMethods methods
  93.     STDMETHOD_(UINT32,IsThreadSafe)(THIS);
  94.     // CGIFFileFormat methods
  95.     static HX_RESULT STDAPICALLTYPE HXCreateInstance(IUnknown** ppIUnknown);
  96. protected:
  97.     enum
  98.     {
  99.         kDefaultBitRate        = 12000,
  100.         kDefaultDuration       = 5000,
  101.         kStateConstructed      = 0,
  102.         kStateFileInit         = 1,
  103.         kStateFileStat         = 2,
  104.         kStateFileRead         = 3,
  105.         kStateInitialized      = 4,
  106.         kStateFileHeaderSent   = 5,
  107.         kStateStreamHeaderSent = 6,
  108.         kStateFinished         = 7,
  109.         kTargetBrowser         = 0,
  110.         kTargetPlayer          = 1,
  111.         kURLTypeNormal         = 0,
  112.         kURLTypeCommandPause   = 1,
  113.         kURLTypeCommandPlay    = 2,
  114.         kURLTypeCommandSeek    = 3,
  115.         kURLTypeCommandStop    = 4
  116.     };
  117.     INT32                   m_lRefCount;
  118.     IUnknown*               m_pContext;
  119.     IHXFileObject*         m_pFileObject;
  120.     IHXFileStat*           m_pFileStat;
  121.     IHXFormatResponse*     m_pFormatResponse;
  122.     IHXCommonClassFactory* m_pCommonClassFactory;
  123.     IHXErrorMessages*      m_pError;
  124.     UINT32                  m_ulBitRate;
  125.     UINT32                  m_ulPreroll;
  126.     UINT32                  m_ulDuration;
  127.     CHXString*              m_pURL;
  128.     CHXString*              m_pRequestURL;
  129.     BYTE                    m_ucTarget;
  130.     BYTE                    m_ucURLType;
  131.     UINT32                  m_ulSeekTime;
  132.     UINT32                  m_ulBackgroundColor;
  133.     INT32                   m_lCurrentTime;
  134.     INT32*                  m_plImageStartTime;
  135.     INT32                   m_lCurImgIndex;
  136.     UINT32                  m_ulState;
  137.     UINT32                  m_ulFileSize;
  138.     IHXBuffer*             m_pFileBuffer;
  139.     IHXFragmentedBuffer*   m_pFragFileBuffer;
  140.     CGIFCodec*              m_pGIFCodec;
  141.     BOOL                    m_bReliable;
  142.     UINT32                  m_ulNumBytesRead;
  143.     IHXPacket**            m_ppPacket;
  144.     UINT32                  m_ulNumPackets;
  145.     UINT32                  m_ulCurrentPacketIndex;
  146.     BOOL                    m_bParseFailed;
  147.     IHXBuffer*             m_pMediaRepeatStr;
  148.     static const char* const     m_pszDescription;
  149.     static const char* const     m_pszCopyright;
  150.     static const char* const     m_pszMoreInfoURL;
  151.     static const char* const     m_ppszFileMimeTypes[];
  152.     static const char* const     m_ppszFileExtensions[];
  153.     static const char* const     m_ppszFileOpenNames[];
  154.     static const char* const     m_pszStreamMimeType;
  155.     static const char* const     m_pszBadStreamMimeType;
  156.     static const UINT32     m_ulContentVersion;
  157.     static const UINT32     m_ulStreamVersion;
  158.     void      ReportError(UINT32 ulErrorID, const char* pszArg = NULL);
  159.     HX_RESULT GetResourceErrorString(UINT32 ulErrorID, CHXString& rErrorStr);
  160.     HX_RESULT ParseFile();
  161.     HX_RESULT MakeAllPackets();
  162. };
  163. #endif