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

📄 vou.c

📁 华为 HI3510 BOOTLOADER HIBOOT 源码包
💻 C
📖 第 1 页 / 共 2 页
字号:
		switch(WhichLayer)	{		case VOU_LAYER_OVER1:			if(keyEnable == 1)				control.bits.ulOvl1MaskEn= VOU_CONTROL_OVLKEY_ENABLE;			else				control.bits.ulOvl1MaskEn = VOU_CONTROL_OVLKEY_DISABLE;						pVouReg->ovl1Key.ul32 = YUVColor;		break;				case VOU_LAYER_OVER2:			if(keyEnable == 1)				control.bits.ulOvl2MaskEn= VOU_CONTROL_OVLKEY_ENABLE;			else				control.bits.ulOvl2MaskEn = VOU_CONTROL_OVLKEY_DISABLE;						pVouReg->ovl2Key.ul32 = YUVColor;		break;				default:			return 1;		break;	}	pVouReg ->control.ul32 = control.ul32;	return 0;}unsigned long VOU_SetTvClip(	unsigned char clipEnable,	unsigned int ChromaThreshold_L,	unsigned int ChromaThreshold_H,	unsigned int LumaThreshold_L,	unsigned int LumaThreshold_H){	VOU_sVoClipReg clip;	VOU_sCtrlReg control;	control.ul32 = pVouReg->control.ul32;		if(clipEnable == 1)	{		clip.bits.ulLowChroma = ChromaThreshold_L;		clip.bits.ulHighChroma = ChromaThreshold_H;		clip.bits.ulLowLuma = LumaThreshold_L;		clip.bits.ulHighLuma = LumaThreshold_H;		pVouReg->clip = clip;		control.bits.ulClipEn = VOU_CONTROL_CLIP_ENABLE;	}	else	{		control.bits.ulClipEn = VOU_CONTROL_CLIP_DISABLE;	}	pVouReg->control.ul32 = control.ul32;	return 0;	}unsigned long VOU_LayerSetAlpha( VOU_LAYER_t WhichLayer, unsigned int AlphaValue0,  unsigned int AlphaValue1){	VOU_sVoOvlAlphaReg ovlAlpha;			switch(WhichLayer)	{		case VOU_LAYER_OVER1:			ovlAlpha.bits.ulOvlAlpha1 = AlphaValue1;			ovlAlpha.bits.ulOvlAlpha0 = AlphaValue0;						pVouReg->ovl1Alpha.ul32 = ovlAlpha.ul32;		break;				case VOU_LAYER_OVER2:			ovlAlpha.bits.ulOvlAlpha1 = AlphaValue1;			ovlAlpha.bits.ulOvlAlpha0 = AlphaValue0;						pVouReg->ovl2Alpha.ul32 = ovlAlpha.ul32;		break;				default:			return 1;		break;	}		return 0;}unsigned long VOU_LayerSetRect(VOU_LAYER_t WhichLayer, RECT_t  LayerRect){	VOU_sVoOvlReg overLayer;	VOU_sVoOvlStartReg ovlStart;	VOU_sVoImageReg image;	VOU_sVoImageOffsetReg offset;	VOU_sCtrlReg control;	control.ul32 = pVouReg->control.ul32;	switch(WhichLayer)	{		case VOU_LAYER_OVER1:			overLayer.bits.ulOvlWidth = LayerRect.w - 1;			overLayer.bits.ulOvlHeight = LayerRect.h - 1;						ovlStart.bits.ulOvlStartPixel = LayerRect.x;			ovlStart.bits.ulOvlStartLine = LayerRect.y;						pVouReg->ovl1Start.ul32 = ovlStart.ul32;			pVouReg->ovl1.ul32 = overLayer.ul32;					break;				case VOU_LAYER_OVER2:			overLayer.bits.ulOvlWidth = LayerRect.w - 1;			overLayer.bits.ulOvlHeight = LayerRect.h - 1;						ovlStart.bits.ulOvlStartPixel = LayerRect.x;			ovlStart.bits.ulOvlStartLine = LayerRect.y;						pVouReg->ovl2Start.ul32 = ovlStart.ul32;			pVouReg->ovl2.ul32 = overLayer.ul32;					break;		case VOU_LAYER_MAIN:			if(control.bits.ulOutFormat == VOU_CONTROL_OUTFORMAT_LCD)				image.bits.ulImageWidth = LayerRect.w - 1;			else				image.bits.ulImageWidth = LayerRect.w*2 - 1;					image.bits.ulImageHeight = LayerRect.h - 1;			offset.bits.ulImageHOffset = LayerRect.x;			offset.bits.ulImageVOffset = LayerRect.y;			pVouReg->image.ul32 = image.ul32;			pVouReg->imageOff.ul32 = offset.ul32;				default:			return 1;		break;	}		return 0;	}unsigned long VOU_HCDefaultSetting(void){	VOU_sCtrlReg control;	VOU_sVoHcStartReg hcStart;		control.ul32 = pVouReg->control.ul32;		control.bits.ulHcMode = VOU_CONTROL_HCMODE_2COLOR;	pVouReg->control.ul32 = control.ul32;		hcStart.bits.ulHcStartPixel = 0;	hcStart.bits.ulHcStartLine = 0;	pVouReg->hcStart.ul32 = hcStart.ul32;		return 0;}unsigned long VOU_LayerSetAddrAndStride(	 VOU_LAYER_t WhichLayer,	 unsigned int		LayerLumaAddr,	 unsigned int		LayerChromaAddr,	 unsigned int		LayerLumaStride,	 unsigned int		LayerChromaStride){	VOU_sVoOvlOffsetReg ovlOffset;	VOU_sVoMOffsetReg mOffset;			switch(WhichLayer)	{		case VOU_LAYER_MAIN:		pVouReg->mlAddr = LayerLumaAddr;		pVouReg->mcAddr = LayerChromaAddr;				mOffset.bits.ulMLumaOffset = LayerLumaStride;		mOffset.bits.ulMChromaOffset = LayerChromaStride;		pVouReg->mOffset.ul32 = mOffset.ul32;				break;				case VOU_LAYER_OVER1:						ovlOffset.ul32 = pVouReg->ovlOffset.ul32;		ovlOffset.bits.ulOvl1Offset = LayerLumaStride;		pVouReg->ovlOffset.ul32 = ovlOffset.ul32;				pVouReg->ovl1Addr = LayerLumaAddr;						break;				case VOU_LAYER_OVER2:		ovlOffset.ul32 = pVouReg->ovlOffset.ul32;		ovlOffset.bits.ulOvl2Offset = LayerLumaStride;		pVouReg->ovlOffset.ul32 = ovlOffset.ul32;				pVouReg->ovl2Addr = LayerLumaAddr;						break;				default:			return 1;		break;			}		return 0;	}unsigned long VOU_HCSetColor(	 unsigned int HCColor0,	 unsigned int HCColor1,	 unsigned int HCColor2,	 unsigned int HCColor3){	pVouReg->hcColor0 = HCColor0;	pVouReg->hcColor1 = HCColor1;	pVouReg->hcColor2 = HCColor2;	pVouReg->hcColor3 = HCColor3;		return 0;}/*** Load a 32*32 Cursor Image to HC ** pCursorData: 32*32 ARGB(32bit) Pixels*/unsigned long VOU_HCLoadCursor( unsigned int *pCursorData){	VOU_sVoHcStartReg hcStart;		pVouReg->hcAddr = (unsigned int)pCursorData;		hcStart.ul32 = pVouReg->hcStart.ul32;	hcStart.bits.ulHcReload = 1;	pVouReg->hcStart.ul32 = hcStart.ul32;		return 0;	}/* VOU HC position configure routine. */unsigned long VOU_HCSetPosition( unsigned int CursorPosX,  unsigned int CursorPosY){	VOU_sVoHcStartReg hcStart;		hcStart.ul32 = pVouReg->hcStart.ul32;	hcStart.bits.ulHcStartLine = CursorPosX;	hcStart.bits.ulHcStartPixel = CursorPosY;	pVouReg->hcStart.ul32 = hcStart.ul32;		return 0;}/* Background Image Layer setting --------------------------*/unsigned long VOU_BGSetColor( unsigned int ulBgColor){	pVouReg->bgColor.ul32 = ulBgColor;	return 0;}/* VOU layer Enable routine. */unsigned long VOU_LayerEnable( VOU_LAYER_t WhichLayer){	VOU_sCtrlReg control;  	control.ul32 = pVouReg->control.ul32;  	switch(WhichLayer)  	{  		case VOU_LAYER_MAIN:  		control.bits.ulMainEn = VOU_CONTROL_LAYER_ENABLE;  		break;  		  		case VOU_LAYER_OVER1:  		control.bits.ulOvl1En = VOU_CONTROL_LAYER_ENABLE;  		break;  		  		case VOU_LAYER_OVER2:  		control.bits.ulOvl2En = VOU_CONTROL_LAYER_ENABLE;  		break;  		  		case VOU_LAYER_HC:  		control.bits.ulHcEn = VOU_CONTROL_LAYER_ENABLE;  		break;  		  		default:break;  	}  	    	pVouReg->control.ul32 = control.ul32;  	  	return 0;}/* VOU layer disable routine. */unsigned long VOU_LayerDisable( VOU_LAYER_t WhichLayer){	VOU_sCtrlReg control;    	control.ul32 = pVouReg->control.ul32;  	switch(WhichLayer)  	{  		case VOU_LAYER_MAIN:  		control.bits.ulMainEn = VOU_CONTROL_LAYER_DISABLE;  		break;  		  		case VOU_LAYER_OVER1:  		control.bits.ulOvl1En = VOU_CONTROL_LAYER_DISABLE;  		break;  		  		case VOU_LAYER_OVER2:  		control.bits.ulOvl2En = VOU_CONTROL_LAYER_DISABLE;  		break;  		  		case VOU_LAYER_HC:  		control.bits.ulHcEn = VOU_CONTROL_LAYER_DISABLE;  		break;  		  		default:break;  	}  	  	pVouReg->control.ul32 = control.ul32;  	  	return 0;}/* VOU interrupt mask setting routine. */unsigned long VOU_IntSet( unsigned int u32Int){	pVouReg->intMask.ul32 = u32Int;	return 0;}unsigned long VOU_IntEnable( VOU_INT_t WhichInt){	 VOU_sIntMaskReg intMask;	 	 intMask.ul32 = pVouReg->intMask.ul32;	 	 switch(WhichInt)	 {	 	case  VOU_RELOAD_INT:	 		intMask.bits.ulReloadIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	case  VOU_MAINR_INT:	 		intMask.bits.ulMainRIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	case  VOU_HCR_INT:	 		intMask.bits.ulHcRIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	case  VOU_OVL2R_INT:	 		intMask.bits.ulOvl2RIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	case  VOU_OVL1R_INT:	 		intMask.bits.ulOvl1RIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	case  VOU_LBW_INT:	 		intMask.bits.ulLbwIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	case  VOU_BUSERR_INT:	 		intMask.bits.ulBusErrIntEn = VOU_INTMASK_INT_ENABLE;	 	break;	 		 	default:break;	 }	 	 pVouReg->intMask.ul32 = intMask.ul32;	 	 return 0;}unsigned long VOU_IntDisable( VOU_INT_t WhichInt){	VOU_sIntMaskReg intMask;	 	 intMask.ul32 = pVouReg->intMask.ul32;	 	 switch(WhichInt)	 {	 	case  VOU_RELOAD_INT:	 		intMask.bits.ulReloadIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	case  VOU_MAINR_INT:	 		intMask.bits.ulMainRIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	case  VOU_HCR_INT:	 		intMask.bits.ulHcRIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	case  VOU_OVL2R_INT:	 		intMask.bits.ulOvl2RIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	case  VOU_OVL1R_INT:	 		intMask.bits.ulOvl1RIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	case  VOU_LBW_INT:	 		intMask.bits.ulLbwIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	case  VOU_BUSERR_INT:	 		intMask.bits.ulBusErrIntEn = VOU_INTMASK_INT_DISABLE;	 	break;	 		 	default:break;	 }	 	 pVouReg->intMask.ul32 = intMask.ul32;	 	 return 0;}#endif

⌨️ 快捷键说明

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