📄 coloracc.cpp
字号:
{ m_fpEnhanceUniform(yuv420in, inheight, inwidth, pitchSrc, Sharpness); }}voidColorFuncAccess::ConvertRGB24toXRGB( UCHAR* pSrc, UCHAR* pDest, ULONG32 srcSize, ULONG32 destSize, INT32 nWidth, INT32 nHeight){ if (m_fpConvertRGB24ToXRGB) { m_fpConvertRGB24ToXRGB(pSrc,pDest,srcSize,destSize,nWidth,nHeight); }}int ColorFuncAccess::I420andYUVA( unsigned char *src1_ptr, int src1_pels, int src1_lines, int src1_pitch, int src1_startx, int src1_starty, unsigned char *src2_ptr, int src2_pels, int src2_lines, int src2_pitch, int src2_startx, int src2_starty, unsigned char *dest_ptr, int dest_pels, int dest_lines, int dest_pitch, int dest_startx, int dest_starty, int width, int height, int color_format){ if( m_fpI420andYUVA ) { return m_fpI420andYUVA( src1_ptr, src1_pels, src1_lines, src1_pitch, src1_startx, src1_starty, src2_ptr, src2_pels, src2_lines, src2_pitch, src2_startx, src2_starty, dest_ptr, dest_pels, dest_lines, dest_pitch, dest_startx, dest_starty, width, height, color_format); } return HXR_FAIL;}int ColorFuncAccess::I420andI420toI420( unsigned char *src1_ptr, int src1_pels, int src1_lines, int src1_pitch, int src1_startx, int src1_starty, unsigned char *src2_ptr, int src2_pels, int src2_lines, int src2_pitch, int src2_startx, int src2_starty, unsigned char *dest_ptr, int dest_pels, int dest_lines, int dest_pitch, int dest_startx, int dest_starty, int width, int height, int alpha ){ if( m_fpI420andI420toI420 ) { return m_fpI420andI420toI420( src1_ptr, src1_pels, src1_lines, src1_pitch, src1_startx, src1_starty, src2_ptr, src2_pels, src2_lines, src2_pitch, src2_startx, src2_starty, dest_ptr, dest_pels, dest_lines, dest_pitch, dest_startx, dest_starty, width, height, alpha); } return HXR_FAIL;}LPHXCOLORCONVERTER ColorFuncAccess::GetColorConverter (INT32 cidIn, INT32 cidOut){#ifdef _WINDOWS if (m_fpGetColorConverter2 && m_pContext) { LPHXCOLORCONVERTER colorConverter = m_fpGetColorConverter2(m_pContext, cidIn, cidOut); if (!colorConverter) m_fpUpgradeColorConverter(m_pContext,m_pPlayer, cidIn, cidOut); else return colorConverter; } else#endif if (m_fpGetColorConverter) { return m_fpGetColorConverter(cidIn, cidOut); } return NULL;}LPHXCOLORCONVERTER2 ColorFuncAccess::GetColorConverter2 (INT32 cidIn, INT32 cidOut){#ifdef _WINDOWS if (m_fpGetColorConverter2x && m_pContext) { LPHXCOLORCONVERTER2 colorConverter = m_fpGetColorConverter2x(m_pContext, cidIn, cidOut); if (!colorConverter) m_fpUpgradeColorConverter(m_pContext,m_pPlayer, cidIn, cidOut); else return colorConverter; } else#endif if (m_fpGetColorConverterx) { return m_fpGetColorConverterx(cidIn, cidOut); } return NULL;}BOOL ColorFuncAccess::ScanCompatibleColorFormats(INT32 cidIn, INT32 cidOutMask, void *pParam, BOOL (*pfnTryIt) (void *pParam, INT32 cidOut, LPHXCOLORCONVERTER pfnCC)){ if (m_fpScanCompatibleColorFormats) { return m_fpScanCompatibleColorFormats(cidIn, cidOutMask, pParam, pfnTryIt); } return FALSE;}BOOL ColorFuncAccess::ScanAllCompatibleColorFormats(INT32 cidIn, void *pParam, BOOL (*pfnTryIt) (void *pParam, INT32 cidOut, LPHXCOLORCONVERTER pfnCC)){ if (m_fpScanAllCompatibleColorFormats) { return m_fpScanAllCompatibleColorFormats(cidIn, pParam, pfnTryIt); } return FALSE;}voidColorFuncAccess::LoadConversionFunctions(){ if (m_pDllAccess) { m_fpGetHXColorGUID = (FPGETHXCOLORGUID) m_pDllAccess->getSymbol("GetHXColorGUID"); m_fpInitColorConverter = (FPINITCOLORCONVERTER) m_pDllAccess->getSymbol("InitColorConverter"); m_fpSetColorAdjustments = (FPSETCOLORADJUSTMENTS) m_pDllAccess->getSymbol("SetColorAdjustments"); m_fpGetColorAdjustments = (FPGETCOLORADJUSTMENTS) m_pDllAccess->getSymbol("GetColorAdjustments"); m_SuggestRGB8Palette = (FPSUGGESTRGB8PALETTE) m_pDllAccess->getSymbol("SuggestRGB8Palette"); m_SetRGB8Palette = (FPSETRGB8PALETTE) m_pDllAccess->getSymbol("SetRGB8Palette"); m_fpSetSharpnessAdjustments = (FPSETSHARPNESSADJUSTMENTS) m_pDllAccess->getSymbol("SetSharpnessAdjustments"); m_fpGetSharpnessAdjustments = (FPGETSHARPNESSADJUSTMENTS) m_pDllAccess->getSymbol("GetSharpnessAdjustments"); m_fpConvertRGBtoYUV = (FPCONVERTRGBTOYUV) m_pDllAccess->getSymbol("ConvertRGBtoYUV"); m_fpConvertYUVtoRGB = (FPCONVERTYUVTORGB) m_pDllAccess->getSymbol("ConvertYUVtoRGB"); m_fpEnhance = (FPENHANCE) m_pDllAccess->getSymbol("Enhance"); m_fpEnhanceUniform = (FPENHANCEUNIFORM) m_pDllAccess->getSymbol("EnhanceUniform"); m_fpConvertRGB24ToXRGB = (FPCONVERTRGB24TOXRGB) m_pDllAccess->getSymbol("ConvertRGB24toXRGB"); m_fpScanCompatibleColorFormats = (FPSCANCOMPATIBLECOLORFORMATS) m_pDllAccess->getSymbol("ScanCompatibleColorFormats"); m_fpScanAllCompatibleColorFormats = (FPSCANALLCOMPATIBLECOLORFORMATS) m_pDllAccess->getSymbol("ScanAllCompatibleColorFormats"); m_fpGetColorConverter = (FPGETCOLORCONVERTER) m_pDllAccess->getSymbol("GetColorConverter"); m_fpGetColorConverterx = (FPGETCOLORCONVERTERx) m_pDllAccess->getSymbol("GetColorConverter2"); m_fpI420andYUVA = (FPI420ANDYUVA) m_pDllAccess->getSymbol("I420andYUVA"); m_fpI420andI420toI420 = (FPI420ANDI420TOI420) m_pDllAccess->getSymbol("I420andI420toI420");#if _WINDOWS#if defined(XXXX_NEW_COLOR_CONVERTER) m_fpInitColorConverter2 = (FPINITCOLORCONVERTER2) m_pDllAccess->getSymbol("InitColorConverter"); m_fpGetColorConverter2 = (FPGETCOLORCONVERTER2) m_pDllAccess->getSymbol("GetColorConverter"); m_fpGetColorConverter2x = (FPGETCOLORCONVERTER2x) m_pDllAccess->getSymbol("GetColorConverter2x"); m_fpSetColorAdjustments2 = (FPSETCOLORADJUSTMENTS2) m_pDllAccess->getSymbol("SetColorAdjustments"); m_fpUpgradeColorConverter = (FPUPGRADECOLORCONVERTER) m_pDllAccess->getSymbol("UpgradeColorConverter");#endif#endif } if (!m_fpInitColorConverter || !m_fpSetColorAdjustments || !m_fpSetSharpnessAdjustments || !m_fpEnhance || !m_fpEnhanceUniform ||#ifdef _WINDOWS !m_fpGetColorAdjustments || !m_fpGetSharpnessAdjustments ||#endif //!m_fpConvertRGB24ToXRGB || !m_fpScanAllCompatibleColorFormats || !m_fpGetColorConverter ) { WrongHXColorVersion(); } else { if (!m_bLightColorConverter && ( !m_SuggestRGB8Palette || !m_SetRGB8Palette || !m_fpConvertRGBtoYUV || !m_fpConvertYUVtoRGB) ) { WrongHXColorVersion(); } }}void ColorFuncAccess::WrongHXColorVersion(){ m_fpInitColorConverter = NULL; m_fpSetColorAdjustments = NULL; m_fpGetColorAdjustments = NULL; m_SuggestRGB8Palette = NULL; m_SetRGB8Palette = NULL; m_fpSetSharpnessAdjustments = NULL; m_fpGetSharpnessAdjustments = NULL; m_fpConvertRGBtoYUV = NULL; m_fpConvertYUVtoRGB = NULL; m_fpEnhance=NULL; m_fpEnhanceUniform=NULL; m_fpConvertRGB24ToXRGB = NULL; m_fpScanCompatibleColorFormats = NULL; m_fpScanAllCompatibleColorFormats = NULL; m_fpGetColorConverter = NULL; delete m_pDllAccess; m_pDllAccess = NULL; hStatus = HXR_FAIL; HX_ASSERT(WRONG_HXCOLOR_VERSION);}HX_RESULTColorFuncAccess::SetCodecDir(){#ifndef _VXWORKS const char* pPath = NULL; CHXString codecDir; pPath = GetDLLAccessPath()->GetPath(DLLTYPE_PLUGIN); HX_ASSERT(pPath && *pPath); codecDir = pPath;#ifndef _MACINTOSH if (strcmp((const char*)codecDir.Right(1), OS_SEPARATOR_STRING)) { codecDir += OS_SEPARATOR_STRING; } codecDir += "Codecs";#endif GetDLLAccessPath()->SetPath(DLLTYPE_CODEC, (const char*)codecDir);#endif // _VXWORKS return HXR_OK;}#ifdef _WINDOWSvoidColorFuncAccess::SetPlayer(IHXPlayer* pPlayer){ if (m_pPlayer) { m_pPlayer->Release(); } m_pPlayer = pPlayer; if (m_pPlayer) { m_pPlayer->AddRef(); }}#endifBOOL ColorFuncAccess::CheckColorConverter (INT32 cidIn, INT32 cidOut){ LPHXCOLORCONVERTER fpConvert = GetColorConverter(cidIn, cidOut); return fpConvert != NULL;}BOOL ColorFuncAccess::CheckColorConverter2 (INT32 cidIn, INT32 cidOut){ LPHXCOLORCONVERTER2 fpConvert = GetColorConverter2(cidIn, cidOut); return fpConvert != NULL;}int ColorFuncAccess::ColorConvert(INT32 cidOut, unsigned char *dest_ptr, int dest_width, int dest_height, int dest_pitch, int dest_x, int dest_y, int dest_dx, int dest_dy, INT32 cidIn, unsigned char *src_ptr, int src_width, int src_height, int src_pitch, int src_x, int src_y, int src_dx, int src_dy){ int nRet = -1; LPHXCOLORCONVERTER fpConvert = GetColorConverter (cidIn, cidOut); if (fpConvert) { nRet = fpConvert(dest_ptr, dest_width, dest_height, dest_pitch, dest_x, dest_y, dest_dx, dest_dy, src_ptr, src_width, src_height, src_pitch, src_x, src_y, src_dx, src_dy); } return nRet;}int ColorFuncAccess::ColorConvert2(INT32 cidOut, unsigned char *dest_ptr, int dest_width, int dest_height, int dest_pitch, int dest_x, int dest_y, int dest_dx, int dest_dy, INT32 cidIn, unsigned char *pY, unsigned char *pU, unsigned char *pV, int src_width, int src_height, int yPitch, int uPitch, int vPitch, int src_x, int src_y, int src_dx, int src_dy){ int nRet = -1; LPHXCOLORCONVERTER2 fpConvert = GetColorConverter2 (cidIn, cidOut); if (fpConvert) { nRet = fpConvert(dest_ptr, dest_width, dest_height, dest_pitch, dest_x, dest_y, dest_dx, dest_dy, pY, pU, pV, src_width, src_height, yPitch, uPitch, vPitch, src_x, src_y, src_dx, src_dy); } return nRet;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -