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

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. /*
  36.  *
  37.  * CINTERL.h
  38.  *
  39.  * A class to handle interleaving and error correcting basic RealAudio file types
  40.  *
  41.  * We currently use two different algorithms to interleave files for transfer over the Net. 
  42.  *
  43.  * INT3 is used with RA_FORMAT_3 files. RA_FORMAT_3 files are stored in non-interleaved
  44.  *  format and are sent over the NET interleaved using the INT3 algorithm.
  45.  *
  46.  *  INT4 is used with RA_FORMAT_4 files. RA_FORMAT_4 files are stored in interleaved
  47.  *  format and are sent over the NET interleaved using the INT4 algorithm. RA_FORMAT_4
  48.  *  have have the first several blocks of data sent non-interleaved.
  49.  *
  50.  *
  51.  */
  52. #ifdef __MWERKS__
  53. #pragma once
  54. #endif
  55. #ifndef _CINTERL
  56. #define _CINTERL
  57. #include "hxtypes.h"
  58. #include "hxresult.h"
  59. #define RA_NO_INTERLEAVER         "Int0"         // no interleaver for this file
  60. #define RA_INTERLEAVER_3_ID       "Int3"         // interleaver used for version 3 format
  61. #define RA_INTERLEAVER_4_ID       "Int4"         // interleaver used for version 4 format
  62. #define RA_INTERLEAVER_5_ID       "Int5"         // interleaver used for 05_6 codec
  63. #define RA_INTERLEAVER_6_ID       "sipr"         // interleaver used for SIPRO codec
  64. #define RA_INTERLEAVER_GENERIC_ID "genr"  // generic interleaver
  65. #define RA_INTERLEAVER_VBRS_ID    "vbrs"  // Simple VBR interleaver
  66. #define RA_INTERLEAVER_VBRF_ID    "vbrf"  // Simple VBR interleaver (with possibly fragmenting)
  67. #define MAX_INTER_LENGTH          5              // max length of interleave name
  68. #define INTERPROP_INPLACE 0x01
  69. class CInterleave 
  70. {
  71. public:
  72. // Construct creates the correct instance of a CInterleave object depending
  73. // on the requested interleaverName. If an error occurs it will be returned
  74. // in the error and Construct will return a NULL pointer. If successful,
  75. // Construct will return a pointer to a CInterleave object and set 
  76. // theErr == HX_NO_ERROR
  77.    static   CInterleave* Construct          (char *interleaverName, HX_RESULT *theErr, void *pParam);
  78.    
  79.    virtual               ~CInterleave       (void);
  80. virtual HX_RESULT Init (UINT16 *frameSize,
  81.      UINT16 *blockSize, 
  82.      UINT16 *interleaveFactor,
  83.  UINT16 *pattern) = 0;
  84. virtual HX_RESULT Interleave (unsigned char *inBuf,unsigned char *outBuf) = 0;
  85.    virtual   HX_RESULT   Deinterleave       (unsigned char    *InBuffer,
  86.                                   UINT16       InLength,
  87.                                   unsigned char    *OutBuffer,
  88.                                   UINT16       *pOutLength,
  89.                                   ULONG32      *present = 0) = 0;
  90.    virtual   HX_RESULT    ErrorCorrection       (ULONG32      granularity,
  91.                                    ULONG32      *present,
  92.                                    ULONG32      interleaveStartPos,
  93.                                     char        *inData,
  94.                                    char         *outData,
  95.                                    INT32         *outLength,
  96.                                    ULONG32      *received,
  97.                                    UINT16       *lengths,
  98.                                    UINT16       interleaveFactor,
  99.                                    UINT16       period,
  100.                                    UINT16       blockSize) = 0;
  101.     virtual   HX_RESULT  ErrorCorrection2 (Byte* inData,
  102.     UINT16 InLength,
  103.     Byte* outData,
  104.     UINT16* pOutLength,
  105.     ULONG32* received,
  106.     ULONG32 ulGranularity) = 0;
  107.     virtual   ULONG32 GetProperties( void );
  108.     virtual   void    SetVBRDataSize(UINT32 ulSize) {};
  109. protected:
  110.    // constructor is protected. Use Construct to create the correct instance of CInterleave
  111.                   CInterleave         (void);
  112.          UINT16      mBlockSize;
  113.          UINT16      mInterleaveFactor;
  114.          ULONG32   mOutSuperBlockSize;
  115.          ULONG32   mInSuperBlockSize;
  116. };
  117. #endif // _CHXDATAFILE_H_