⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 surface.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    HX_ASSERT(pOptimizedFormat);    if (!pOptimizedFormat)    {	return HXR_UNEXPECTED;    }    m_pSite->SetOptimizedFormat(NULL);    return HXR_OK;}STDMETHODIMPCHXSurface::GetOptimizedFormat(REF(HX_COMPRESSION_TYPE) ulType){    HXBitmapInfoHeader* pOptimizedFormat = m_pSite->GetOptimizedFormat();    if (!pOptimizedFormat)    {	return HXR_FAIL;    }    ulType = pOptimizedFormat->biCompression;    return HXR_OK;}STDMETHODIMPCHXSurface::GetPreferredFormat(REF(HX_COMPRESSION_TYPE) ulType){    ulType = m_PreferredFormat;    return HXR_OK;}/* * IHXVideoControls methods */STDMETHODIMP_(float)CHXSurface::GetBrightness(void){    return m_Brightness;}STDMETHODIMPCHXSurface::SetBrightness(float Brightness){    if (Brightness > MAX_BRIGHTNESS)    {	m_Brightness = (float) MAX_BRIGHTNESS;    }    else if (Brightness < MIN_BRIGHTNESS)    {	m_Brightness = (float) MIN_BRIGHTNESS;    }    else    {	m_Brightness = Brightness;    }    return HXR_OK;}STDMETHODIMP_(float)CHXSurface::GetContrast(void){    return m_Contrast;}STDMETHODIMPCHXSurface::SetContrast(float Contrast){    if (Contrast > MAX_CONTRAST)    {	m_Contrast = (float) MAX_CONTRAST;    }    else if (Contrast < MIN_CONTRAST)    {	m_Contrast = (float) MIN_CONTRAST;    }    else    {	m_Contrast = Contrast;    }    return HXR_OK;}STDMETHODIMP_(float)CHXSurface::GetSaturation(void){    return m_Saturation;}STDMETHODIMPCHXSurface::SetSaturation(float Saturation){    if (Saturation > MAX_SATURATION)    {	m_Saturation = (float) MAX_SATURATION;    }    else if (Saturation < MIN_SATURATION)    {	m_Saturation = (float) MIN_SATURATION;    }    else    {	m_Saturation = Saturation;    }    return HXR_OK;}STDMETHODIMP_(float)CHXSurface::GetHue(void){    return m_Hue;}STDMETHODIMPCHXSurface::SetHue(float Hue){    if (Hue > MAX_HUE)    {	m_Hue = (float) MAX_HUE;    }    else if (Hue < MIN_HUE)    {	m_Hue = (float) MIN_HUE;    }    else    {	m_Hue = Hue;    }    return HXR_OK;}STDMETHODIMP_(float)CHXSurface::GetSharpness(void){    return m_Sharpness;}STDMETHODIMPCHXSurface::SetSharpness(float Sharpness){    if (Sharpness > MAX_SHARPNESS)    {	m_Sharpness = (float) MAX_SHARPNESS;    }    else if (Sharpness < MIN_SHARPNESS)    {	m_Sharpness = (float) MIN_SHARPNESS;    }    else    {	m_Sharpness = Sharpness;    }    return HXR_OK;}STDMETHODIMPCHXSurface::SetModeSharpness(UINT16 dFlag){    //set m_ModeSharpness =1 when deblocking filter is on    //set m_ModeSharpness =0 when deblocking filter is off    //find the deblocking filter on/off by getstreampreoperty    m_ModeSharpness=dFlag;    return HXR_OK;}voidCHXSurface::PerformYUVConversion(UCHAR* ySrc,				  UCHAR* uSrc,				  UCHAR* vSrc,				  INT32  nPitchSrc,				  UCHAR* Dst,				  INT32  nWidth,				  INT32  nHeight,				  INT32  nPitchDst,				  HX_MOFTAG Format,				  INT16  nExpand){    INT16 nNewFormat = 0;    if (Format == HXCOLOR_RGB3_ID)    {	nNewFormat = T_RGB888;    }    else if (Format == HXCOLOR_RGB565_ID)    {	nNewFormat = T_RGB565;    }    else if (Format == HXCOLOR_RGB555_ID)    {	nNewFormat = T_RGB555;    }    else    {	HX_ASSERT(0); // Invalid format    }    // We only need to Set the Color Adjustments if they've changed    if (CheckColorSettings())    {	// Adjust colors according to video control settings	m_pConverter->SetColorAdjustments(m_Brightness, m_Contrast, m_Saturation, m_Hue);	// Reset Previous values so next time we'll know if they've changed	m_PrevBrightness = m_Brightness;	m_PrevContrast	 = m_Contrast;	m_PrevSaturation = m_Saturation;	m_PrevHue	 = m_Hue;    }    // We only need to Set the Color Adjustments if they've changed    if (CheckSharpness())    {	// Adjust colors according to video control settings	m_pConverter->SetSharpnessAdjustments(m_Sharpness,nExpand);	// Reset Previous values so next time we'll know if they've changed	m_PrevSharpness = m_Sharpness;   }    if (ySrc[0] != 1)    {	//if Sharpness is -1.0 (or close) do not do any edge enhancement	//check necessary because intel mmx edge enhacement does not check this	if( (m_Sharpness+1.0)>0.1 )	{		if(m_ModeSharpness)		{			    //Deblocking filter is ON			    m_pConverter->EnhanceUniform(ySrc,nHeight,nWidth,nPitchSrc,m_Sharpness);		}		else		{			    //Deblocking filter is OFF			    m_pConverter->Enhance(ySrc,nHeight,nWidth,nPitchSrc,m_Sharpness);		}	}    }    else    {	ySrc[0] = ySrc[1];    }    // Execute the conversion    m_pConverter->ConvertYUVtoRGB(ySrc, uSrc, vSrc, nPitchSrc, Dst, nWidth,	nHeight, nPitchDst, nNewFormat, nExpand);    //change one corner pixel to put a digital watermark    ySrc[0] = 1;}UINT16CHXSurface::CheckColorSettings(){// NOTE 40 steps of granularity for color control parameters (based on// below float to int precision; proper rounding is not essential)    if( (int)(m_PrevBrightness * 20.f) != (int)(m_Brightness * 20.f) ||	(int)(m_PrevContrast * 20.f) != (int)(m_Contrast * 20.f) ||	(int)(m_PrevSaturation * 20.f) != (int)(m_Saturation * 20.f) ||	(int)(m_PrevHue * 20.f) != (int)(m_Hue * 20.f) )    {	return 1;	// reinitializationing of color table required    }    else    {	return 0;	// no change in color controls    }}UINT16CHXSurface::CheckSharpness(){// NOTE 40 steps of granularity for sharpness control parameters (based on// below float to int precision; proper rounding is not essential)    if( (int)(m_PrevSharpness * 20.f) != (int)(m_Sharpness * 20.f)  )    {	return 1;	// reinitializationing of sharpness table required    }    else    {	return 0;	// no change in sharpness table    }}UINT16CHXSurface::CalculateNewBitDepth(HX_COMPRESSION_TYPE nNewFormat){    UINT16 nNewBitDepth = 0;    switch (nNewFormat)    {	case HXCOLOR_RGB3_ID:	{#ifdef _MACINTOSH	    nNewBitDepth = 32;#else	    nNewBitDepth = 24;#endif	}	break;	case HXCOLOR_RGB24_ID:	{	    nNewBitDepth = 24;	}	break;#ifdef _WINDOWS	case HXCOLOR_RGB555_ID:	{	    nNewBitDepth = 16;	}	break;	case HXCOLOR_RGB565_ID:	{	    nNewBitDepth = 16;	}	break;#endif	default:	    HX_ASSERT(0);   // Invalid format	    break;    }    return nNewBitDepth;}voidCHXSurface::AdjustBitmapHeader(HXBitmapInfoHeader* pBitmapInfo,				HX_MOFTAG NewFormat){    switch (NewFormat)    {	case HXCOLOR_RGB3_ID:	{#ifdef _MACINTOSH	    pBitmapInfo->biCompression = HX_RGB;	    pBitmapInfo->biBitCount  = 32;#else	    pBitmapInfo->biCompression = HX_RGB;	    pBitmapInfo->biBitCount  = 24;#endif	}	break;	case HXCOLOR_RGB24_ID:	{	    pBitmapInfo->biCompression = HX_RGB;	    pBitmapInfo->biBitCount  = 24;	}	break;#ifdef _WINDOWS	case HXCOLOR_RGB555_ID:	{	    pBitmapInfo->biCompression = HX_BITFIELDS;	    pBitmapInfo->biBitCount    = 16;	    pBitmapInfo->rcolor =   0x00007C00; // red	    pBitmapInfo->gcolor =   0x000003E0; // green	    pBitmapInfo->bcolor =   0x0000001F; // blue	}	break;	case HXCOLOR_RGB565_ID:	{	    pBitmapInfo->biCompression = HX_BITFIELDS;	    pBitmapInfo->biBitCount    = 16;	    pBitmapInfo->rcolor =    0x0000F800; // red	    pBitmapInfo->gcolor =    0x000007E0; // green	    pBitmapInfo->bcolor =    0x0000001F; // blue	}	break;#endif	default:	    HX_ASSERT(0);   // Invalid format	    break;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -