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

📄 clips_runtime.c

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 C
📖 第 1 页 / 共 3 页
字号:
					MS_SendOp(MS_OP_MSG_SYS_ZOOM, (UINT32)wZoomLevel);
				else
					PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			}
#ifdef D_PRESSED_AGAIN
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_ZOOM, (UINT32)wZoomLevel);
			}
#endif // D_PRESSED_AGAIN
		}
		return MS_OP_NONE;
	
	case MS_OP_SUBTITLE:
		{   
			UINT16 wCurrSubtitleNum;
			if(ActionEngine_IsMPEG4Loading(FgActionEnginePtr))
			{	
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
				return MS_OP_NONE;
			}
			if(!_IsPlayingFileType(CLIPTYPE_FILTER_DIVX))
			{
				PROHIBIT(MSG_PROHIBIT_INVALID_OPERATION);
				return MS_OP_NONE;
			}

			wCurrSubtitleNum = ActionEngine_CurrItemGetCurrSubtitleNum(FgActionEnginePtr);
			if(wCurrSubtitleNum == ERROR_SUBTITLE_NUM)
			{
				PROHIBIT(MSG_PROHIBIT_NO_SUBTS_AVAIL); // Prohibited
				return MS_OP_NONE;
			}

#ifdef D_PRESSED_AGAIN
			if(SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_SUBTITLE))
#endif
			{
				UINT16 wAvailableSubNum = ActionEngine_CurrItemGetAvailableSubtitleNum(FgActionEnginePtr);
				
				wCurrSubtitleNum = (wCurrSubtitleNum+1)%(wAvailableSubNum+1);
					
				if (ActionEngine_CurrItemSetSubtitle(FgActionEnginePtr, wCurrSubtitleNum))
				{
					MS_SEND_OP(MS_OP_MSG_SYS_SUBTITLE, (wCurrSubtitleNum+1)%(wAvailableSubNum+1));
				}
				else PROHIBIT(MSG_PROHIBIT_NO_SUBTS_AVAIL);

			}
#ifdef D_PRESSED_AGAIN
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_SUBTITLE, (UINT32)wCurrSubtitleNum);
			}
#endif // D_PRESSED_AGAIN
		}
		return MS_OP_NONE;	
		
	case MS_OP_AUDIO:
		{
			UINT16 wCurrAudioNum ;
			// James 2005/06/19: added.
			// If ActionEngine_CurrItemGetAvailableAudioNum() returns zero,
			// the test wCurrAudioNum >= (wAvailAudioNum - 1) will fail.
			UINT16 wAvailAudioNum ;
			
			if(ActionEngine_IsMPEG4Loading(FgActionEnginePtr))
			{	
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
				return MS_OP_NONE;
			}
			
			if(!_IsPlayingFileType(CLIPTYPE_FILTER_DIVX))
			{
				PROHIBIT(MSG_PROHIBIT_INVALID_OPERATION);
				return MS_OP_NONE;
			}

			wCurrAudioNum = ActionEngine_CurrItemGetCurrAudioNum(FgActionEnginePtr);
			wAvailAudioNum = ActionEngine_CurrItemGetAvailableAudioNum(FgActionEnginePtr);
#ifdef D_PRESSED_AGAIN
			if(SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_AUDIO))
#endif // D_PRESSED_AGAIN
			{
				if(1 >= wAvailAudioNum)
				{
#ifdef D_GUI_CLIPS_DISPLAY_AUDIO_NUM_EVEN_ONLY_1_AVAILABLE
					MS_SendOp(MS_OP_MSG_SYS_AUDIO, _AudioNumSystemToUser(wCurrAudioNum));
#else
					PROHIBIT(MSG_PROHIBIT_NO_MORE_AUDIO);
#endif
				}
				else
				{
					// Switching to the next audio stream.
					wCurrAudioNum ++;
					if (wCurrAudioNum == wAvailAudioNum)
						wCurrAudioNum = 0;
					if(ActionEngine_CurrItemSetAudio(FgActionEnginePtr, wCurrAudioNum))
						MS_SendOp(MS_OP_MSG_SYS_AUDIO, _AudioNumSystemToUser(wCurrAudioNum));
					else PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
				}
			}
#ifdef D_PRESSED_AGAIN
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_AUDIO, _AudioNumSystemToUser(wCurrAudioNum));
			}
#endif // D_PRESSED_AGAIN
		}
		return MS_OP_NONE;

	// TODO: Need to find a good MS_OP for JPEG Transition
	case MS_OP_ANGLE: // Jpeg transition
		{
			UINT8 cTransition ;
			
			if(!_IsPlayingFileType(CLIPTYPE_FILTER_PHOTO)
#ifndef D_GINGER_I86
			 || (CoreAPI_IsSimultaneousMode())
#endif //D_GINGER_I86
			)
			{
				PROHIBIT(MSG_PROHIBIT_INVALID_OPERATION);
				return MS_OP_NONE;
			}

			cTransition = ActionEngine_CurrItemGetJpegTrans(FgActionEnginePtr);

#ifdef D_PRESSED_AGAIN
			if(SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_JPEG_TRANSITION))
#endif // D_PRESSED_AGAIN
			{
				cTransition++;
				if(eCTE_TransitionEffectsCnt <= cTransition)
					cTransition = eCTE_None;

				if(ActionEngine_CurrItemSetJpegTrans(FgActionEnginePtr, cTransition))
					MS_SendOp(MS_OP_MSG_SYS_JPEG_TRANSITION, (UINT32)cTransition);
				else PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			}
#ifdef D_PRESSED_AGAIN
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_JPEG_TRANSITION, (UINT32)cTransition);
			}
#endif // D_PRESSED_AGAIN
		}
		return MS_OP_NONE;
#if 0
	case MS_OP_ANGLE: // Jpeg rotation 
		if(!_IsPlayingFileType(CLIPTYPE_FILTER_PHOTO))
		{
			PROHIBIT(MSG_PROHIBIT_INVALID_OPERATION);
			return MS_OP_NONE;
		}
		{
			UINT8 cAngle = ActionEngine_CurrItemGetJpegAngle(FgActionEnginePtr);
#ifdef D_PRESSED_AGAIN
			if(SCREENPROC_MessageIsDisplayed(MS_OP_MSG_SYS_JPEG_ROTATION))
#endif // D_PRESSED_AGAIN
			{
				if(eCIO_OrientationCnt > cAngle)
					cAngle++;
				else
					cAngle = eCIO_Original;
		
				if(ActionEngine_CurrItemSetJpegAngle(FgActionEnginePtr, cAngle))
					MS_SendOp(MS_OP_MSG_SYS_JPEG_ROTATION, (UINT32) cAngle);
				else PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			}
#ifdef D_PRESSED_AGAIN
			else
			{
				MS_SendOp(MS_OP_MSG_SYS_JPEG_ROTATION, (UINT32) cAngle);
			}
#endif // D_PRESSED_AGAIN
		}
		return MS_OP_NONE;
#endif //if 0

#ifdef AVI_DRM_SUPPORT
	case MS_OP_CORE_DIVX_AUTHORIZATION_ERROR: // Fall Through !!!
	case MS_OP_CORE_DIVX_RENTAL_EXPIRED: // Fall Through !!!
	case MS_OP_CORE_DIVX_RENTAL_CONFIRM: // Fall Through !!!
		{
			MSO_OBJECT __NEAR* pObjectComponent;
			MS_DESCRIPTOR_COMPONENT* pDescriptorComponent;

			MS_ComponentClose((MS_DESCRIPTOR_COMPONENT*)&oDRMRentalConfirmDescriptor, FALSE);
			MS_ComponentClose((MS_DESCRIPTOR_COMPONENT *)&oDRMRentalExpiredDescriptor, FALSE);
			MS_ComponentClose((MS_DESCRIPTOR_COMPONENT*)&oDRMAuthorErrorDescriptor, FALSE);

			if (MS_OP_CORE_DIVX_RENTAL_CONFIRM == MsOp)
				pDescriptorComponent = (MS_DESCRIPTOR_COMPONENT *)&oDRMRentalConfirmDescriptor;
			else if (MS_OP_CORE_DIVX_RENTAL_EXPIRED == MsOp)
				pDescriptorComponent = (MS_DESCRIPTOR_COMPONENT *)&oDRMRentalExpiredDescriptor;
			else
				pDescriptorComponent = (MS_DESCRIPTOR_COMPONENT *)&oDRMAuthorErrorDescriptor;

			// TODO: close the possible component when open these components. temp fixing
			MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
			
			pObjectComponent = (MSO_OBJECT __NEAR*)MS_ComponentOpen(pDescriptorComponent, (MSO_CONTAINER __NEAR*)pThis);
			MS_ObjectMove(pObjectComponent, AREA_DRM_CERTI_X, AREA_DRM_CERTI_Y);

#ifdef D_GUI_SINGLE_LINE_COMPONENT
			//switch to runtime layout
			OSDTurnOff();
			usleep(10000);
			MS_MenuSetOsdLayout((MS_DESCRIPTOR_MENU*)MS_MenuGetActiveMenuId());
			VPU_SetOSDStatus(VPU_OSD_STATUS_START_E);
#endif // D_GUI_SINGLE_LINE_COMPONENT
			MS_DisplayAddObject(pObjectComponent);

			return MS_OP_NONE;
		}
#endif //AVI_DRM_SUPPORT

	case MS_OP_PAUSE: 
		{
			// Avoid step command in jpeg
			if((eClipType_JPEG == ActionEngine_GetFileType(FgActionEnginePtr, ActionEngine_GetActiveItem(FgActionEnginePtr))
				&& (PST_PAUSE == ActionEngine_GetPlayState(FgActionEnginePtr))))	
				return MS_OP_NONE;
		}
		break;	

#ifdef D_GUI_COMPONENT_SEARCH
	case MS_OP_SEARCH:
		{
			if(ActionEngine_IsMPEG4Loading(FgActionEnginePtr))
			{	
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
				return MS_OP_NONE;
			}
			
			if((CLIPTYPE_MP3 | CLIPTYPE_CDDA | CLIPTYPE_FILTER_MOVIE) & (1 << ActionEngine_GetPlayingFileType(FgActionEnginePtr)))
			{
				MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
				OSEARCH_OpenAtPos((MSO_CONTAINER __NEAR*)pThis, AREA_SEARCH_RUNTIME_X, AREA_SEARCH_RUNTIME_Y);
			}
			else 
				PROHIBIT(MSG_PROHIBIT_SEARCH_NOT_ALLOWED);
		}
		return MS_OP_NONE;
#endif //D_GUI_COMPONENT_SEARCH
		
#ifdef D_GUI_COMPONENT_VOLUME_CONTROL
//Leon.He_0106_06: open volume component in clips menu when press volume up and down also
	case MS_OP_VOLUME:
	case MS_OP_VOLUME_UP:
	case MS_OP_VOLUME_DOWN:
	{
		MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
		OVolume_OpenAtPos((MSO_CONTAINER __NEAR*)pThis, AREA_PROLOGICII_RUNTIME_X, AREA_PROLOGICII_RUNTIME_Y);
		return MS_OP_NONE;	
	}
#endif //D_GUI_COMPONENT_VOLUME_CONTROL
		
#ifdef D_GUI_PROLOGICII_COMPONENT
	case MS_OP_PROLOGIC:
	{
		if( CoreAPI_IsMenuAllowedProLogicII())
		{
			MSO_OBJECT __NEAR *pObjectProLogicII;
			// TODO:Close other pop up object first.
			pObjectProLogicII = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oProLogicIIDescriptor);
			if (NULL == pObjectProLogicII)
			{
				MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
				pObjectProLogicII = OProLogicII_OpenAtPos((MSO_CONTAINER __NEAR*)pThis, AREA_PROLOGICII_RUNTIME_X, AREA_PROLOGICII_RUNTIME_Y);
			}
		}
		else
		{
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		}
		return MS_OP_NONE;	
	}
#endif //D_GUI_PROLOGICII_COMPONENT

#ifdef INTERNAL_KARAOKE
	case MS_OP_KARAOKE:
		{			
// TODO: Move this test in CoreAPI_IsMenuAllowedKaraoke		
			UINT16 wActiveItem = ActionEngine_GetActiveItem(FgActionEnginePtr);
			UINT16 wFileType = ActionEngine_GetFileType(FgActionEnginePtr, wActiveItem);

			if(eClipType_MPEG == wFileType)
			{
				MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
				if(NULL == OKARAOKE_OpenAtPos((MSO_CONTAINER __NEAR*)pThis, AREA_KARAOKE_RUNTIME_X, AREA_KARAOKE_RUNTIME_Y))
					PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			}
			else
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		}
		return MS_OP_NONE;
#endif // INTERNAL_KARAOKE


#ifndef D_GUI_ITEM_ACCESS
	//prohibit the following keys at the end of run time
	case MS_OP_0:
	case MS_OP_1:
	case MS_OP_2:
	case MS_OP_3:
	case MS_OP_4:
	case MS_OP_5:
	case MS_OP_6:
	case MS_OP_7:
	case MS_OP_8:
	case MS_OP_9:
#endif //D_GUI_ITEM_ACCESS
	case MS_OP_CLEAR:
		PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		return MS_OP_NONE;
#ifdef D_GUI_COMPONENT_BRIGHTNESS_EDGE_CONTROLLER
	case MS_OP_BRIGHTNESS_EDGE_CONTROL:
	{	
		MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
		OBrightnessEdge_OpenAtPos((MSO_CONTAINER __NEAR * )pThis, DEFAULT_POSITION, DEFAULT_POSITION);		
		return MS_OP_NONE;	
	}
#endif//D_GUI_COMPONENT_BRIGHTNESS_EDGE_CONTROLLER

#ifdef D_GUI_ITEM_ACCESS

#ifdef D_10P_KEY
	case MS_OP_10P:
#endif
	case MS_OP_0: // Fall Through
	case MS_OP_1: // Fall Through
	case MS_OP_2: // Fall Through
	case MS_OP_3: // Fall Through
	case MS_OP_4: // Fall Through
	case MS_OP_5: // Fall Through
	case MS_OP_6: // Fall Through
	case MS_OP_7: // Fall Through
	case MS_OP_8: // Fall Through
	case MS_OP_9:
#ifdef D_GUI_COMPONENT_SEARCH_DISPLAY
	case MS_OP_DISPLAY:
		if(ActionEngine_IsMPEG4Loading(FgActionEnginePtr) 
			||(CoreAPI_IsFileLoading() && eClipType_JPEG == CoreAPI_GetCurrentClipType()))
		{	
			PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
		}
		else
		{
			MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
			if ((MsOp >= MS_OP_1) && (MsOp <= MS_OP_9))
			{
				MSO_OBJECT __NEAR* pTSWnd = OSearch_Display_OpenAtPos((MSO_CONTAINER __NEAR*)pThis, AREA_DISPLAY_X, AREA_DISPLAY_Y, TRUE);
				MS_SendOperation(pTSWnd, MsOp, lParam);
			}
			else
				OSearch_Display_OpenAtPos((MSO_CONTAINER __NEAR*)pThis, AREA_DISPLAY_X, AREA_DISPLAY_Y, FALSE);
		}
		return MS_OP_NONE;
#else
		{
#ifdef D_10P_KEY
			UINT16 cValue = MS_OperationDigitKeyToValue(MsOp);
			if(cValue>CoreAPI_GetUiItemIndexTotal())
			{
				return MS_OP_NONE;
			}
#endif	
			if(ActionEngine_IsMPEG4Loading(FgActionEnginePtr) 
			||(CoreAPI_IsFileLoading() && eClipType_JPEG == CoreAPI_GetCurrentClipType()))
			{	
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
				return MS_OP_NONE;
			}
			MS_SendOperation((MSO_OBJECT __NEAR*)MS_GetParentPtr(pThis), MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
			MS_ComponentOpen((MS_DESCRIPTOR_COMPONENT*)&DescriptorItemAccess, (MSO_CONTAINER __NEAR * )pThis);
			MS_SendOperation(pThis, MsOp, PARAM_ITEM_ACCESS_START_NEW_EDITION);
			return MS_OP_NONE;	
		}
#endif//D_GUI_COMPONENT_SEARCH_DISPLAY
#endif//D_GUI_ITEM_ACCESS
		
	default:
		break;
	}
	return MsOp;
}

STATIC BOOL _IsPlayingFileType (CLIPTYPE  wRequestType)
{
	if ((wRequestType)&(1 << ActionEngine_GetPlayingFileType(FgActionEnginePtr)))
		return TRUE;
	else
		return FALSE;
}



/***************************************************************************************
* 	Operation functions
****************************************************************************************/

#ifdef D_GUI_ITEM_ACCESS
static MS_OP _ItemAccessComponentOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{

	switch(MsOp)
	{
        case MS_OP_INIT:
		MS_ComponentInitFocus((MSO_COMPONENT __NEAR*)pThis);
		break;
				
	default :
		break;
	}
	
	return MS_ComponentBasicOperation(pThis, MsOp, lParam);
}
/***************************************************************************************
* 	Utility functions
****************************************************************************************/
#pragma argsused
static void _RuntimeItemAccessGetDisplayItem(UINT16* pItem, UINT16* pTotalItems, UINT16* pItemType)
{
	if (ActionEngine_IsProgramListObject(FgActionEnginePtr))
	{
		*pTotalItems = ProgramList_GetListSize((PtrToProgramList)FgActionEnginePtr);
	}
	else
	{
		*pTotalItems = DirBrowser_GetTotalNumEntitiesInDir((PtrToDirBrowser)FgActionEnginePtr);
		if (!DirBrowser_AmIRoot((PtrToDirBrowser)FgActionEnginePtr))
			*pTotalItems +=1;
	}
}
#endif //D_GUI_ITEM_ACCESS

⌨️ 快捷键说明

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