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

📄 digest.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 2 页
字号:
        CDINFO_ParseInfo ( VCD_ENTRIES_TRACK, & __dwTemp, NULL_0 );        __wPlayItem = __dwTemp;    }    else    {                        __dwTemp = __wPlayItem;  // play track        if ( __dwTemp > __wTrackEnd )            __dwTemp = __wTrackEnd;    }    __bTemp= UTL_CheckPlayItemMode ( (WORD)__dwTemp );    // the entry point is a CD-DA track    //LJY279, marked to show logo while exit digest to play CDDA track         __bModePlay=MODE_PLAYUNKNOW;    __btDIGEST=FALSE;}//  *********************************************************************//  Function    :   DIGEST_Number//  Description :   Parser the input number and keep the current time in//                  that position. Then enter linear play with specified//                  time//  Arguments   :   None////  Return      :   TRUE, valid key//              :   FASE, invalid key//  Change      ://  Side Effect ://  *********************************************************************BYTE DIGEST_Number(DWORD dwNumber){    extern  DWORD   __dwGoToTime;       // Time that use GOTO position    // show the input number//LJY2.81, set as FASLE or __btPlayFromBegin won't be set to be TRUE in LINEAR_Action() by pressing number key.//        It needs to call UTL_ForceChangeTrack() for DISCVIEW -> NPF or the NPF will be abnormal???    __btPlaying = FALSE; //TRUE; wyc.170a, make follow codes DVD digest only and change the limit from 9 to __bGrid*__bGrid#ifdef NO_PIP#else    DISP_DisplayCtrl(DISP_PIP, FALSE); //LJY0.68, disable PIP.#endif // #ifdef NO_PIP    if (__bKey != KEY_PLAY)    {           if(__DigestUIAttr.bDigestMode == DIGEST_MODE_DISCINTERVAL)        {            if ( dwNumber > DIGEST_FRAME_COUNT )            {                return FALSE;            }            __dwGoToTime = __dwTimeDiscBegin +                     (((DWORD)(dwNumber-1)*(DIGEST_FRAME_COUNT) + __DigestUIAttr.bCurFrameNo)*(DIGEST_FRAME_PLAYTIME));                    DIGEST_Digest2Linear();                        __bFWKey = KEY_GOTOTIME_PLAY;        }        else        {                 // for VCD, the __wPlayItem=TrackNO+1;            if (__wDiscType & BOOK_VCD)            {                DIGEST_Digest2Linear();            }            else            {                DIGEST_Digest2Linear();            }                        LINEAR_ChangeTrack ( KEY_NUMBER, (WORD)dwNumber );        } //if ( __bStyle == DIGEST_STYLE_DISCVIEW )    }     return TRUE;}//  ***************************************************************//  Function    :   DIGEST_CheckHang//  Description :   Called by MONITOR module to check the hang//                  phenomenon and recover to the normal state//  Arguments   :   none//  Return      :   none//  Side Effect ://  ***************************************************************void DIGEST_CheckHang(){}//LJY1.10, reduce extern global reference for INITIAL module.void DIGEST_VarInit(void){    BYTE bTmp;    __btDIGEST = DIGEST_MODE_NULL;    __DigestUIAttr.bButtonIndex = 0;    __DigestUIAttr.bCurPageNo = 0;    __DigestUIAttr.bCurFrameNo = 0;    __DigestUIAttr.bCurTrackNo = 0;    __DigestUIAttr.bDisplayedFrameNo = 0;    //LJY0.80, fix digest last track won't be shown issue.    bTmp = (BYTE)(__wTrackEnd - __wTrackBegin + 1);    __DigestUIAttr.bTotalPageNo = bTmp/(DIGEST_FRAME_COUNT);    if(bTmp % DIGEST_FRAME_COUNT)    {        __DigestUIAttr.bTotalPageNo++;    }} BYTE DIGEST_ProcessKey(void){    static BYTE bKeyNo;    if(__DigestUIAttr.bDigestMode == DIGEST_MODE_NULL)    {//Alan102, #157. Temporarily prevent to enter the digest mode for CDDA.        if ((__bKey != KEY_DIGEST) || (__wDiscType & CDROM_M1) ||            (__wDiscType & BOOK_DVD) || (BOOK_CDDA == __wDiscType))            return KEY_BYPASS;//bKey; //LJY0.80, for Micky's new key prcessing rule.    }    if((__bKey == KEY_POWER) || (__bKey == KEY_OPEN_CLOSE))    {        if(__DigestUIAttr.bDigestMode == DIGEST_MODE_DIALOG)        {            //OSDDG_Update(OSDDG_MSG_DLG_EXIT);                OSDDG_Update(OSDDG_MSG_EXIT); //CoCo0.80a, use this message to exit Digest mode.            __DigestUIAttr.bDigestMode = DIGEST_MODE_NULL;			            __btDIGEST = DIGEST_MODE_NULL;        }        else        {#ifdef NO_PIP#else            DISP_DisplayCtrl(DISP_PIP, FALSE);#endif // #ifdef NO_PIP            DIGEST_DigestExit();                    }                return KEY_BYPASS;//bKey; //LJY0.80, for Micky's new key prcessing rule.    }        if(__bKey == KEY_DIGEST)    {        if(__btPBC)        {            __bKey = KEY_INVALID;        }        else if(__DigestUIAttr.bDigestMode > DIGEST_MODE_DIALOG)        {            __bKey = KEY_PLAY;          }    }    else if(__bKey == KEY_PLAY)    {        if(__DigestUIAttr.bDigestMode == DIGEST_MODE_DIALOG)        {            __bKey = KEY_ENTER;                    }        else if(__DigestUIAttr.bDigestMode > DIGEST_MODE_DIALOG)        {                        __bKey = KEY_PLAY;            /*Alan2.17            if(__DigestUIAttr.bButtonIndex == 0)                __bFWKey = KEY_DIGEST;            */        }    }    else    {        if ( ((__bKey >= NONNPF_PLAYABLEKEY_BEGIN ) && ( __bKey <= NONNPF_PLAYABLEKEY_END)))            __bKey = KEY_PLAY;            }        switch(__bKey)    {        case    KEY_DIGEST:            if(__DigestUIAttr.bDigestMode == DIGEST_MODE_DIALOG)            {                OSDDG_Update(OSDDG_MSG_EXIT); //CoCo0.80a, use this message to exit Digest mode.                __DigestUIAttr.bDigestMode = DIGEST_MODE_NULL;			                __btDIGEST = DIGEST_MODE_NULL;                break;            }            else            {                _DIGEST_EnterDisplayMode(&bKeyNo);            }            break;        case KEY_UP:        case KEY_DOWN:                    case KEY_LEFT:        case KEY_RIGHT:            OSDDG_Update(OSDDG_MSG_CLEAR_HIGHLIGHT);            if((__bKey == KEY_LEFT) || (__bKey == KEY_UP))            {                __DigestUIAttr.bButtonIndex = (__DigestUIAttr.bButtonIndex + bKeyNo - 1) % (bKeyNo);                                    }            else            {                __DigestUIAttr.bButtonIndex = (++__DigestUIAttr.bButtonIndex ) % (bKeyNo);                        }            OSDDG_Update(OSDDG_MSG_UPDATE_HIGHLIGHT);                           break;        case KEY_ENTER:            if (DIGEST_MODE_DIALOG == __DigestUIAttr.bDigestMode)            {                CC_DoKeyAction(KEY_STOP);                bKeyNo = DIGEST_MENU2_BUTTON_NO;                            OSDDG_Update(OSDDG_MSG_DLG_EXIT);                     __DigestUIAttr.bDigestMode =  __DigestUIAttr.bButtonIndex + DIGEST_MODE_TRACK;                __btDIGEST = __DigestUIAttr.bDigestMode;                OSDDG_Update(OSDDG_MSG_INITIAL);                                                   OSDDG_Update(OSDDG_MSG_UPDATE_UI_INFO);                OSDDG_Update(OSDDG_MSG_UPDATE_HIGHLIGHT);                                      _DigestPlayInit ();                }            else if (DIGEST_MODE_TRACK == __DigestUIAttr.bDigestMode ||                      DIGEST_MODE_DISCINTERVAL == __DigestUIAttr.bDigestMode)            {#ifdef SUPPORT_NUMBER_CONFIRM_KEY                if (0 < __dwNumberPrevious)                {                    if (__dwNumberPrevious < __wTrackEnd)                    {                        DIGEST_DigestExit();                        return KEY_BYPASS;                    }                    else                    {                        return KEY_INVALID;                    }                }                else#endif                if ((DIGEST_MENU2_BUTTON_NO - 1 == __DigestUIAttr.bButtonIndex) &&                     (DIGEST_MODE_DIALOG < __DigestUIAttr.bDigestMode ))                {                    DIGEST_DigestExit();                    __bKey = KEY_PLAY; //LJY0.80, for Micky's new key prcessing rule.                }                 else if ((0 == __DigestUIAttr.bButtonIndex) &&                          (DIGEST_MODE_DIALOG < __DigestUIAttr.bDigestMode ))                {                    _DIGEST_EnterDisplayMode(&bKeyNo);                }            }            break;        case    KEY_PLAY:            if(__DigestUIAttr.bDigestMode > DIGEST_MODE_DIALOG)            {#ifdef NO_PIP#else                DISP_DisplayCtrl(DISP_PIP, FALSE);#endif // #ifdef NO_PIP#ifdef SUPPORT_NUMBER_CONFIRM_KEY                if (0 < __dwNumberPrevious)                {                    if (__dwNumberPrevious < __wTrackEnd)                    {                        DIGEST_DigestExit();                        return KEY_BYPASS;                    }                    else                    {                        return KEY_INVALID;                    }                }#endif            }            DIGEST_DigestExit();            __bKey = KEY_PLAY; //LJY0.80, for Micky's new key prcessing rule.            break;        case    KEY_PREV:        case    KEY_NEXT:            if ( __bKey == KEY_NEXT ) // next digest page            {            //LJY277a, to show page mode cyclic                                        __DigestUIAttr.bCurPageNo= (++__DigestUIAttr.bCurPageNo)%(__DigestUIAttr.bTotalPageNo);            }            else    // prev digest page            {                if ( __DigestUIAttr.bCurPageNo )                {                    __DigestUIAttr.bCurPageNo--;                }                else                {                    //LJY277a, to show page mode cyclic                    __DigestUIAttr.bCurPageNo = __DigestUIAttr.bTotalPageNo - 1;                }                                }            __DigestUIAttr.bCurFrameNo = 0;            __DigestUIAttr.bDisplayedFrameNo = 0;                            _bDigestFirstPlay = TRUE;                        HAL_PlayCommand(COMMAND_STOP, 0);            HAL_Reset(HAL_RESET_VIDEO);            SrcFilter_Stop(__dwSFStreamID);            HAL_ControlParser(HAL_PARSER_STOP, 0);            HAL_Reset(HAL_RESET_AUDIO);#ifdef NO_PIP#else            DISP_DisplayCtrl(DISP_PIP, FALSE); //LJY0.68, disable PIP.#endif // #ifdef NO_PIP            HAL_ClearScreen(HAL_COLOR_DIGEST, HAL_CLEAR_SCREEN_MPEG, HAL_DISP_CURRENTFRAME);            OSDDG_Update(OSDDG_MSG_CHANGE_PAGE); //LJY0.80, update page info.            OSDDG_Update(OSDDG_MSG_UPDATE_UI_INFO);            break;        case    KEY_N0:        case    KEY_N1:        case    KEY_N2:        case    KEY_N3:        case    KEY_N4:        case    KEY_N5:        case    KEY_N6:        case    KEY_N7:        case    KEY_N8:        case    KEY_N9:        case    KEY_N10:        case    KEY_N11:        case    KEY_N12:        case    KEY_N13:        case    KEY_N14:        case    KEY_N15:        case    KEY_N16:        case    KEY_N17:        case    KEY_N18:        case    KEY_N19:        case    KEY_N20:        case    KEY_N10PLUS:        case    KEY_N20PLUS:#ifndef SUPPORT_NUMBER_CONFIRM_KEY            DIGEST_DigestExit();#endif            return KEY_BYPASS;            break;        case    KEY_NUMBER:/*Alan1.02a, bug #287            //LJY0.80, add number key range protection.            if(__dwNumberPrevious < __wTrackEnd)            {                DIGEST_DigestExit();                DIGEST_Number(__dwNumberPrevious);            }            else            {                __bKey = INVALID_KEY;                            }*/            DIGEST_DigestExit();            return KEY_BYPASS;            break;                    default:            __bKey = INVALID_KEY;//KEY_INVALID;            break;    }//LJY0.80, for Micky's new key prcessing rule.    if(__bKey == KEY_PLAY)        return KEY_TODO;    else if(__bKey == INVALID_KEY)        return INVALID_KEY;    else        return KEY_NO_KEY;}void _DIGEST_EnterDisplayMode(PBYTE pbKeyNo){                DIGEST_VarInit();                           __DigestUIAttr.bDigestMode = DIGEST_MODE_DIALOG;	                __btDIGEST = DIGEST_MODE_DIALOG;                *pbKeyNo = DIGEST_MENU1_BUTTON_NO;                __DigestUIAttr.bButtonEnable[0]=1; //enable track-digest button                if(__wTrackEnd <= 3)                	__DigestUIAttr.bButtonEnable[1]=1; //enable discinterval button                else                {                    __DigestUIAttr.bButtonEnable[1]=0; //disable discinterval button                    (*pbKeyNo)--;                }                __DigestUIAttr.bButtonIndex = 0; //high-lighten track-digest button                OSDDG_Update(OSDDG_MSG_DLG_INITIAL);                OSDDG_Update(OSDDG_MSG_UPDATE_HIGHLIGHT);}void _DIGEST_ShowFrame(BOOL bShow){    DWORD dwRGBColor;    if (bShow)    {        dwRGBColor = 0xEEEE00;    }    else    {        dwRGBColor = 0x000000;    }    _InitRect(&(_DIGEST_Rect), _Digest_Destination.wPosCoordH - FRAME_THICKNESS,              _Digest_Destination.wPosCoordV - FRAME_THICKNESS - 1,              _Digest_Destination.wPosCoordH + _Digest_Destination.wWidth + FRAME_THICKNESS,               _Digest_Destination.wPosCoordV + _Digest_Destination.wHeight + FRAME_THICKNESS);    GDI_FBDrawRect(0, &_DIGEST_Rect, FRAME_THICKNESS, dwRGBColor);}void _DigestFrmPosInit(void){    BYTE i;           for(i=0;i<3;i++)    {        _aDigestFrmPosX[i] = DIGEST_FIRST_FRAME_POS_H+ i*(DIGEST_FRAME_SIZE_H+DIGEST_FRAME_SPACING_H);    }        for(i=0;i<2;i++)    {        if(MainVideoInfo.wVWidth == 480)        {            _aDigestFrmPosY[i] = DIGEST_FIRST_FRAME_POS_V_480+ i*(DIGEST_FRAME_SIZE_V_480+DIGEST_FRAME_SPACING_V_480);        }        else        {            _aDigestFrmPosY[i] = DIGEST_FIRST_FRAME_POS_V_576+ i*(DIGEST_FRAME_SIZE_V_576+DIGEST_FRAME_SPACING_V_576);        }    }}void DIGEST_DigestExit(void){    HAL_PlayCommand(COMMAND_STOP, 0);    SrcFilter_Stop(__dwSFStreamID);    HAL_Reset(HAL_RESET_VIDEO);    HAL_Reset(HAL_RESET_AUDIO);#ifdef NO_PIP    DISP_ForceDisplay(NULL_FRAME, DISP_MAINVIDEO);#else    DISP_DisplayCtrl(DISP_PIP, FALSE); //LJY0.68, disable PIP.#endif // #ifdef NO_PIP    HAL_ClearScreen(HAL_COLOR_DIGEST, HAL_CLEAR_SCREEN_MPEG, HAL_DISP_CURRENTFRAME);    OSDDG_Update(OSDDG_MSG_EXIT);                           __DigestUIAttr.bDigestMode = DIGEST_MODE_NULL;			    __btDIGEST = DIGEST_MODE_NULL;                    //Alan1.05 for nosound bug    if ((__bSP_Disp_OFF == 0) || (__bSP_Disp_OFF&0x80))    {        DISP_DisplayCtrl(DISP_SP1, TRUE);        PARSER_ActionFilter( 0, PARSER_ENABLE_SP1, TRUE );    }

    //CoCo2.33, Digest module will diable "mute" automatically. Therefore, we need to clear MSG_MUTE to prevent MSG_MUTE still exists in OSD stack.
    OSD_OUTPUT_MACRO ( MSG_MUTE, FALSE, 0);
}#endif //NO_DIGEST

⌨️ 快捷键说明

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