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

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 _COLORACC_H_
  36. #define _COLORACC_H_
  37. #include "hxcolor.h"
  38. #ifdef _WINDOWS
  39. #include "hxcore.h"
  40. #endif
  41. // Forward declarations
  42. class DLLAccess;
  43. const UINT32 MAX_DLL_NAME_LEN = 256;
  44. typedef HX_RESULT (HXEXPORT_PTR FPGETHXCOLORGUID)   (UCHAR* pGUID);
  45. typedef void (HXEXPORT_PTR FPINITCOLORCONVERTER)    (void);
  46. typedef void (HXEXPORT_PTR FPSETCOLORADJUSTMENTS)   (float Brightness,
  47.     float Contrast,
  48.     float Saturation,
  49.     float Hue);
  50. #ifdef _WINDOWS
  51. typedef void (HXEXPORT_PTR FPINITCOLORCONVERTER2)   (IUnknown* pContext);
  52. typedef void (HXEXPORT_PTR FPSETCOLORADJUSTMENTS2)  (IUnknown* pContext,
  53.                                                     float Brightness,
  54.     float Contrast,
  55.     float Saturation,
  56.     float Hue);
  57. typedef void (HXEXPORT_PTR FPUPGRADECOLORCONVERTER) (IUnknown* pContext, IUnknown* pPlayer, INT32 cidIn, INT32 cidOut);
  58. #endif
  59. typedef void (HXEXPORT_PTR FPGETCOLORADJUSTMENTS)   (float *Brightness,
  60.     float *Contrast,
  61.     float *Saturation,
  62.     float *Hue);
  63. typedef int (HXEXPORT_PTR FPSUGGESTRGB8PALETTE) (int nColors, UINT32 *lpRGBVals);
  64. typedef int (HXEXPORT_PTR FPSETRGB8PALETTE) (int nColors, UINT32 *lpRGBVals, int *lpIndices);
  65. typedef void (HXEXPORT_PTR FPSETSHARPNESSADJUSTMENTS)   (float Sharpness, INT16 nExpand);
  66. typedef void (HXEXPORT_PTR FPGETSHARPNESSADJUSTMENTS)   (float* Sharpness, INT16* nExpand);
  67. typedef void (HXEXPORT_PTR FPCONVERTRGBTOYUV)     (UCHAR* pInput,
  68.     UCHAR* pOutput,
  69.     INT32  nWidth,
  70.     INT32  nHeight,
  71.     BOOL   bBGR);
  72. typedef void (HXEXPORT_PTR FPCONVERTYUVTORGB)     (UCHAR* ySrc,
  73.     UCHAR* uSrc,
  74.     UCHAR* vSrc,
  75.     INT32  nPitchSrc,
  76.     UCHAR* Dst,
  77.     INT32  nWidth,
  78.     INT32  nHeight,
  79.     INT32  nPitchDst,
  80.     INT16  nFormat,
  81.     INT16  nExpand);
  82. typedef int (HXEXPORT_PTR FPI420ANDYUVA)
  83.       (unsigned char *src1_ptr, int src1_pels,   int src1_lines,  int src1_pitch,
  84.        int src1_startx, int src1_starty,
  85.        unsigned char *src2_ptr, int src2_pels,   int src2_lines,  int src2_pitch,
  86.        int src2_startx, int src2_starty,
  87.        unsigned char *dest_ptr, int dest_pels,   int dest_lines,  int dest_pitch,
  88.        int dest_startx, int dest_starty,
  89.        int width,  int height,  int color_format);
  90. typedef int (HXEXPORT_PTR FPI420ANDI420TOI420)
  91.       (unsigned char *src1_ptr, int src1_pels,   int src1_lines,  int src1_pitch,
  92.        int src1_startx, int src1_starty,
  93.        unsigned char *src2_ptr, int src2_pels,   int src2_lines,  int src2_pitch,
  94.        int src2_startx, int src2_starty,
  95.        unsigned char *dest_ptr, int dest_pels,   int dest_lines,  int dest_pitch,
  96.        int dest_startx, int dest_starty,
  97.        int width,  int height,  int output_format);
  98. typedef void (HXEXPORT_PTR FPENHANCE) (UCHAR* ysrc, INT32 nHeight, INT32 nWidth, INT32 nPitchSrc, float Sharpness);
  99. typedef void (HXEXPORT_PTR FPENHANCEUNIFORM) (UCHAR* ysrc, INT32 nHeight, INT32 nWidth, INT32 nPitchSrc, float Sharpness);
  100. typedef void (HXEXPORT_PTR FPCONVERTRGB24TOXRGB)    (UCHAR* pSrc,
  101.     UCHAR* pDest,
  102.     ULONG32 srcSize,
  103.     ULONG32 destSize,
  104.     INT32 nWidth,
  105.     INT32 nHeight);
  106. typedef LPHXCOLORCONVERTER (HXEXPORT_PTR FPGETCOLORCONVERTER)
  107.     (INT32 cidIn, INT32 cidOut);
  108. typedef LPHXCOLORCONVERTER2 (HXEXPORT_PTR FPGETCOLORCONVERTERx)
  109.     (INT32 cidIn, INT32 cidOut);
  110. #ifdef _WINDOWS
  111. typedef LPHXCOLORCONVERTER (HXEXPORT_PTR FPGETCOLORCONVERTER2)
  112.     (IUnknown* pContext, INT32 cidIn, INT32 cidOut);
  113. typedef LPHXCOLORCONVERTER2 (HXEXPORT_PTR FPGETCOLORCONVERTER2x)
  114.     (IUnknown* pContext, INT32 cidIn, INT32 cidOut);
  115. #endif
  116. typedef BOOL (HXEXPORT_PTR FPSCANCOMPATIBLECOLORFORMATS)
  117. (INT32 cidIn, INT32 cidOutMask, void *pParam,
  118.     BOOL (*pfnTryIt) (void *pParam,
  119.     INT32 cidOut, LPHXCOLORCONVERTER pfnCC));
  120. typedef BOOL (HXEXPORT_PTR FPSCANALLCOMPATIBLECOLORFORMATS)
  121. (INT32 cidIn, void *pParam,
  122.     BOOL (*pfnTryIt) (void *pParam,
  123.     INT32 cidOut, LPHXCOLORCONVERTER pfnCC));
  124. class ColorFuncAccess
  125. {
  126. public:
  127.     ColorFuncAccess(IUnknown* pContext);
  128.     ~ColorFuncAccess();
  129.     HX_RESULT hStatus;
  130.     HX_RESULT GetHXColorGUID (UCHAR* pGUID);
  131.     void InitColorConverter ();
  132.     void SetColorAdjustments    (float Brightness, float Contrast,
  133. float Saturation, float Hue);
  134.     void GetColorAdjustments    (float *Brightness, float *Contrast,
  135. float *Saturation, float *Hue);
  136.     int SuggestRGB8Palette (int nColors, UINT32 *lpRGBVals);
  137.     int SetRGB8Palette (int nColors, UINT32 *lpRGBVals, int *lpIndices);
  138.     void SetSharpnessAdjustments    (float Sharpness, INT16 nExpand);
  139.     void GetSharpnessAdjustments    (float* Sharpness, INT16* nExpand);
  140.     void ConvertRGBtoYUV (UCHAR* pInput, UCHAR* pOutput,
  141. INT32 nWidth, INT32 nHeight, BOOL bBGR);
  142.     void ConvertYUVtoRGB (UCHAR* ySrc, UCHAR* uSrc, UCHAR* vSrc,
  143. INT32 nPitchSrc, UCHAR* Dst, INT32 nWidth,
  144. INT32 nHeight, INT32 nPitchDst, INT16 nFormat,
  145. INT16 nExpand);
  146.     void Enhance(UCHAR* ysrc, INT32 nHeight, INT32 nWidth, INT32 nPitchSrc, float Sharpness);
  147.     void EnhanceUniform(UCHAR* ysrc, INT32 nHeight, INT32 nWidth, INT32 nPitchSrc, float Sharpness);
  148.     void ConvertRGB24toXRGB( UCHAR* pSrc, UCHAR* pDest,
  149.             ULONG32 srcSize, ULONG32 destSize, INT32 nWidth, INT32 nHeight);
  150.     BOOL CheckColorConverter (INT32 cidIn, INT32 cidOut);
  151.     BOOL CheckColorConverter2 (INT32 cidIn, INT32 cidOut);
  152.     virtual
  153.     int  ColorConvert(INT32 cidOut,
  154.                       unsigned char *dest_ptr, int dest_width, int dest_height,
  155.                       int dest_pitch, int dest_x, int dest_y, int dest_dx, int dest_dy,
  156.                       INT32 cidIn,
  157.                       unsigned char *src_ptr, int src_width, int src_height, int src_pitch,
  158.                       int src_x, int src_y, int src_dx, int src_dy);
  159.     virtual
  160.     int  ColorConvert2(INT32 cidOut,
  161.                        unsigned char *dest_ptr, int dest_width, int dest_height,
  162.                        int dest_pitch, int dest_x, int dest_y, int dest_dx, int dest_dy,
  163.                        INT32 cidIn,
  164.                        unsigned char *pY, unsigned char *pU, unsigned char *pV,
  165.                        int src_width, int src_height, int yPitch, int uPitch, int vPitch,
  166.                        int src_x, int src_y, int src_dx, int src_dy);
  167.     int I420andYUVA(
  168. unsigned char *src1_ptr, int src1_pels,   int src1_lines,  int src1_pitch,
  169.         int src1_startx, int src1_starty,
  170. unsigned char *src2_ptr, int src2_pels,   int src2_lines,  int src2_pitch,
  171.         int src2_startx, int src2_starty,
  172. unsigned char *dest_ptr, int dest_pels,   int dest_lines,  int dest_pitch,
  173.         int dest_startx, int dest_starty,
  174. int width,  int height,  int color_format);
  175.     
  176.     int I420andI420toI420(
  177.         unsigned char *src1_ptr, int src1_pels,   int src1_lines,  int src1_pitch,
  178.         int src1_startx, int src1_starty,
  179. unsigned char *src2_ptr, int src2_pels,   int src2_lines,  int src2_pitch,
  180.         int src2_startx, int src2_starty,
  181. unsigned char *dest_ptr, int dest_pels,   int dest_lines,  int dest_pitch,
  182.         int dest_startx, int dest_starty,
  183. int width,  int height,  int alpha);
  184.     
  185.     
  186.     BOOL ScanCompatibleColorFormats (INT32 cidIn, INT32 cidOutMask, void *pParam,
  187.     BOOL (*pfnTryIt) (void *pParam, INT32 cidOut, LPHXCOLORCONVERTER pfnCC));
  188.     BOOL ScanAllCompatibleColorFormats (INT32 cidIn, void *pParam,
  189.     BOOL (*pfnTryIt) (void *pParam, INT32 cidOut, LPHXCOLORCONVERTER pfnCC));
  190.     virtual void Terminate() {};
  191. #ifdef _WINDOWS
  192.     void SetPlayer(IHXPlayer* pPlayer);
  193. #endif
  194. protected:
  195.     DLLAccess* m_pDllAccess;
  196.     char       m_pDllName[MAX_DLL_NAME_LEN]; /* Flawfinder: ignore */
  197.     IUnknown*  m_pContext;
  198.     FPGETHXCOLORGUID     m_fpGetHXColorGUID;
  199.     FPINITCOLORCONVERTER    m_fpInitColorConverter;
  200.     FPSETCOLORADJUSTMENTS   m_fpSetColorAdjustments;
  201.     FPGETCOLORADJUSTMENTS   m_fpGetColorAdjustments;
  202.     FPSUGGESTRGB8PALETTE    m_SuggestRGB8Palette;
  203.     FPSETRGB8PALETTE        m_SetRGB8Palette;
  204.     FPSETSHARPNESSADJUSTMENTS m_fpSetSharpnessAdjustments;
  205.     FPGETSHARPNESSADJUSTMENTS m_fpGetSharpnessAdjustments;
  206.     FPCONVERTRGBTOYUV     m_fpConvertRGBtoYUV;
  207.     FPI420ANDYUVA           m_fpI420andYUVA;
  208.     FPI420ANDI420TOI420     m_fpI420andI420toI420;
  209.     FPCONVERTYUVTORGB     m_fpConvertYUVtoRGB;
  210.     FPENHANCE               m_fpEnhance;
  211.     FPENHANCEUNIFORM     m_fpEnhanceUniform;
  212.     FPCONVERTRGB24TOXRGB    m_fpConvertRGB24ToXRGB;
  213.     FPSCANCOMPATIBLECOLORFORMATS m_fpScanCompatibleColorFormats;
  214.     FPSCANALLCOMPATIBLECOLORFORMATS m_fpScanAllCompatibleColorFormats;
  215.     FPGETCOLORCONVERTER     m_fpGetColorConverter;
  216.     FPGETCOLORCONVERTERx    m_fpGetColorConverterx;
  217.     BOOL                    m_bLightColorConverter;
  218. #ifdef _WINDOWS
  219.     IHXPlayer*             m_pPlayer;
  220.     FPINITCOLORCONVERTER2   m_fpInitColorConverter2;
  221.     FPGETCOLORCONVERTER2    m_fpGetColorConverter2;
  222.     FPGETCOLORCONVERTER2x   m_fpGetColorConverter2x;
  223.     FPSETCOLORADJUSTMENTS2  m_fpSetColorAdjustments2;
  224.     FPUPGRADECOLORCONVERTER m_fpUpgradeColorConverter;
  225. #endif
  226.     void LoadConversionFunctions();
  227.     void WrongHXColorVersion();
  228.     HX_RESULT SetCodecDir();
  229.     LPHXCOLORCONVERTER GetColorConverter (INT32 cidIn, INT32 cidOut);
  230.     LPHXCOLORCONVERTER2 GetColorConverter2 (INT32 cidIn, INT32 cidOut);
  231. };
  232. #endif // _COLORACC_H_