免费注册 登录
液晶之家 返回首页

wbjben的个人空间 http://lcdhome.fpdclub.net/?124735 [收藏] [复制] [分享] [RSS]

日志

Mstar方案DMP源码

已有 1596 次阅读2013-7-3 16:18 |系统分类:工作日志

一、              InputSource界面的显示:

1switch(MApp_TV())

MApp_TV_ProcessUserInput();

switch(u8KeyCode)

case KEY_INPUT_SOURCE:

enTVState = STATE_TV_INIT;

enTVRetVal = EXIT_GOTO_INPUTSOURCE;

u8KeyCode = KEY_NULL;

                                 break;

 

case EXIT_GOTO_INPUTSOURCE:

    enTopState = STATE_TOP_INPUTSOURCE;

        break;

2switch ( enTopState )

case STATE_TOP_INPUTSOURCE:

    switch(MApp_InputSource_Main())

 

    EN_RET MApp_InputSource_Main(void)

     switch(enInputSourceState)

        case STATE_INPUTSOURCE_INIT:

            MApp_ZUI_ACT_StartupOSD(E_OSD_INPUT_SOURCE);

            enInputSourceState = STATE_INPUTSOURCE_WAIT;

            break;

 

当我们按“上”、“下”键时,执行:

MApp_ZUI_ACT_ExecuteWndProc(GETWNDPROCID(focus), pMsg);

再执行:

MApp_ZUI_API_DefaultWindowProc

再执行:

MApp_ZUI_ACT_ExecuteWndAction

以按下键为例:

执行:

case EN_EXE_NOTIFY_PARENT_KEY_DOWN:

   MApp_ZUI_API_PostMessage(

          MApp_ZUI_API_GetParent(MApp_ZUI_API_GetFocus()),

          MSG_NOTIFY_KEYDOWN,

VK_DOWN);

       return TRUE;

再执行:

case EN_ZUI_DYNAMICLIST_WINPROC:

     return DYNAMICLIST_WINPROC(msg->hwnd, msg);

再执行:

 

 

if((windata->pVarData->hwndFirstShown<=next

&&next<= windata->pVarData->hwndLastShown)

&&MApp_ZUI_API_IsWindowVisible(next)

&&MApp_ZUI_API_IsWindowEnabled(next))

{

   //shown region: trivial case: focus it

    MApp_ZUI_API_SetFocus(next);

    printf("[]focus=%u\n", next);

    break;

 }

return DEFAULTWINPROC(hWnd, pMsg);

选中Input SourceUSB项,再按OK键,执行:

case EN_EXE_EXECUTE_APP_USB:

{

MApp_ZUI_ACT_InputSourceSwitch( _MApp_ZUI_ACT_GetSourceType() );

MApp_ZUI_ACT_TransitionEffectBegin(EN_EFFMODE_CLOSE, _ZUI_STATE_TERMINATE);

enInputSourceState= STATE_INPUTSOURCE_GOTO_DMP;

}

return TRUE;

 

再执行到:

MApp_InputSource_Main

switch(enInputSourceState)

case STATE_INPUTSOURCE_GOTO_DMP:

            MApp_ZUI_ACT_ShutdownOSD();

            enInputSourceState = STATE_INPUTSOURCE_INIT;

            enRetVal = EXIT_GOTO_DMP;

            break;

再:

switch(MApp_InputSource_Main())

case EXIT_GOTO_DMP:

       enTopState = STATE_TOP_DMP;

       break;

 

执行:

MApp_DMP_Main

switch(m_enDmpVar.enDmpState)

    case DMP_STATE_INIT:

            srand(msAPI_Timer_GetTime0());

            MApp_ZUI_ACT_StartupOSD(E_OSD_DMP);

            _MApp_DMP_Switch2Dmp();

            u32time = msAPI_Timer_GetTime0();

            m_enDmpVar.enDmpState = DMP_STATE_CONNECTING;

            u8GWinId = MApp_ZUI_API_QueryGWinID();

            break;

case DMP_STATE_CONNECTING:

          if(msAPI_Timer_DiffTimeFromNow(u32time) > DMP_WAITCONNECT_MS

                || m_enDmpVar.enDmpFlag & DMP_FLAG_DRIVE_CONNECT_OK)

            {

                m_enDmpVar.enDmpState = DMP_STATE_UI;

            }

            break;

 

        case DMP_STATE_UI:

            MApp_DMP_NotifyUiState(m_enDmpVar.enDmpUiState);

            m_enDmpVar.enDmpState = DMP_STATE_WAIT;

            break;

 

我们再一直按右,执行:

switch(pMsg->wParam)

{

   case VK_RIGHT:

         MApp_ZUI_API_SetFocusByNav(focus, NAV_RIGHT);

    break;

}

在影视选项上按OK,执行:

case EN_EXE_DMP_MEDIA_PAGE_SEL:

if(HWND_DMP_MEDIA_TYPE_MOVIE == MApp_ZUI_API_GetFocus())

 {

// stop bgm

if(MApp_DMP_GetDmpFlag()  & DMP_FLAG_BGM_MODE)

      {

          MApp_MPlayer_StopMusic();

           MApp_DMP_ClearDmpFlag(DMP_FLAG_BGM_MODE);

      }

     MApp_MPlayer_SetCurrentMediaType(E_MPLAYER_TYPE_MOVIE, TRUE);

     MApp_DMP_UiStateTransition(DMP_UI_STATE_DRIVE_SELECT);

  }

再执行:

case DMP_UI_STATE_DRIVE_SELECT:

 {

 #if (DMP_PHOTO_THUMBNAIL || DMP_MOVIE_THUMBNAIL)

   _MApp_DMP_ThumbCopyRegion_Destroy();

   MApp_MPlayer_LeaveThumbnailMode();

   MApp_DMP_ClearDmpFlag(DMP_FLAG_THUMBNAIL_MODE);

#endif

 

 

U8 i;

for(i=0; i<NUM_OF_MAX_DRIVE; i++)

{

if(MApp_MPlayer_QueryCurrentDriveIndex()== MApp_DMP_GetDriveFromMappingTable(i))

{

       MApp_DMP_SetCurDrvIdxAndCalPageIdx(i);

}

}

_MApp_ACTdmp_ShowDrivePage();

U8 u8Idx = (MApp_DMP_GetCurDrvIdx()+1) % DMP_DRIVE_NUM_PER_PAGE;

MApp_ZUI_API_SetFocus(_hwndListDriveItem[u8Idx]);

}

break;

 

好,现在进入了Drive选择界面。在该界面按右键,通过,Skin Tool里面定义的Navigation,跳转到了,第一个可供选择的Drive

再在该界面按OK键,执行:

MApp_DMP_UiStateTransition(DMP_UI_STATE_FILE_SELECT);

再调用:MApp_DMP_NotifyUiState

就可以显示出文件列表页面了。

 

 

视频的播放流程,待续。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 免费注册

积分充值|广告联系|Archiver|小黑屋|液晶之家 ( 粤ICP备05077429号  

GMT+8, 2024-5-17 10:31

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部