📄 media.c
字号:
// Micky0.65-909, enable MSG_WAITING. during parsing.// The file "winav.h" must be included in first line#include "winav.h"#include "ctkav.h" // ** TCH0.60; #include <string.h>#include "initial.h"#include "utl.h"#include "hal.h"#include "SrcFilter.h"#include "input.h"#include "chips.h"#include "thumb.h"#include "comutl.h"#include "gdi.h" //CoCo.CT909#include "osdmm.h" //CoCo.CT909#include "setup.h"#include "navigate.h"#include "cell.h"#include "dvdinfo.h" // ** TCH0.27;#include "infofilter.h"#include "vcd20.h"#include "digest.h"#include "cc.h"#include "osd.h"#include "linear.h"#include "monitor.h"#include "media.h" // ** TCH0.60; #include "disp.h"#include "parser.h"//#include "mpeg2dec.h"#include "subpict.h"#include "osddsply.h"// wyc0.50-909, need to include this file.#include "infofilter.h"#include "srcfilter.h"#include "osddlg.h"#include "osdss.h"// wyc2.75-909P, include usbwrap.h if USB2.0 mode#if (USB_SYSTEM == USB2_0_JUNGO)#include "usbwrap.h"#elif (USB_SYSTEM == USB1_1_CT909R)#include "usb.h"#endif //#include "mmanager.h"// elmer2.38a#include "usbsrc.h"#ifdef SUPPORT_POWERON_MENU //CoCo2.38#include "poweronmenu.h"#endif#ifdef SUPPORT_STB#include "sysmenu_op.h"#endif#ifdef CTK_CARDREADER#include "card.h"#endif// wyc2.78-909P,#ifdef SUPPORT_USB_HOST_DEVICE#include "notedlg.h"#include "osdss.h"#endif //// ============================= Definition =============================// wyc1.01-909, re-allocate the layout.#define NULL_0 0 // ** TCH0.60; // The first 2 is source servo/ source atapi#define MAX_REMOVABLE_MEDIAS (PER_USB_NO*SUPPORT_USB_PORT_NUM)// 0 is for 0x10, 1 is for 0x20// 3~10 is for 0x30,31,32,33,34,35,36,37// 11~18 is for 0x40,41,42,43,44,45,46,47// LLY2.17, remove top open/close pin to pio.h//#define PIN_TOP_OPENCLOSE 16///////////////////////////////////////////////////////////////#define SUPPORT_REMOVABLE_MEDIA // for real media//#define DEBUG_MEDIA_STATUS// ============================= Variables =============================// Check tray force closed??// Check tray open fail??// Micky1.00_909_mediaBYTE __bMediaServoAction;BYTE __bMediaServoState;BYTE __bMediaUSBAction;BYTE __bMediaUSBState;// Micky_909_play_item// [Navigator Mode]// assigned by infofilterBYTE __bNavigateMode = NAVIGATE_NONE;BYTE __bChooseMedia;BYTE _bPrevMedia,_bNextMedia;BYTE _bShowNoMedia;// wyc2.75-909P, make default init USB one time.// wyc2.75-909P, include usbwrap.h if USB2.0 mode#ifdef SUPPORT_USB_SOURCEBYTE _bMediaInitUSB = FALSE;#endif //// wyc2.17a-909S#define SERVO_SECTOR_SZIE 0xa00// Micky2.17c#ifdef SUPPORT_SERVO_SOURCE#define SERVO_EDC_BUFFER_SIZE ((DS_INPUT_BITBUF_END-DS_INPUT_BITBUF_ST)/SERVO_SECTOR_SZIE)WORD _wSrvEDCBuff[SERVO_EDC_BUFFER_SIZE];#endif //#ifdef SUPPORT_SERVO_SOURCE#ifdef SUPPORT_STBBYTE __bPreMediaMode = MEDIA_SELECT_UNKNOW;BYTE __bMediaSelected = FALSE;// wyc2.21-909s, add members' code.extern BYTE __bSubtitlingMode;extern VOID DVB_SbtlStop(VOID);extern VOID DVB_TTX_Stop(VOID);#ifndef NO_DISC_MODEextern VOID SERVO_Enable(VOID);extern VOID SERVO_Disable(VOID);#endif //NO_DISC_MODEextern VOID AP_ConfigGDIRegion(BYTE bClearRegion);#endif// [Media]// Micky0.85, reference srcfilter.h define.// wyc1.01-909, need remember to remove this variable and use __SF_SourceGBL[__dwSFStreamID].bSourceIndex to replace it.//BYTE __bSourceID = SOURCE_DISC;// Micky0.85, index to MediaInfoBYTE __bActionMediaID = 0;MEDIAINFO MediaInfo[TOTAL_MEDIA];// Micky0.85, index to MediaInfoBYTE _bNextServiceID = 2;// [Media Selction dialog]BYTE __bMediaSelectUI = FALSE;DWORD _dwMediaTemp1;DWORD _dwMediaChkTime;// wyc2.78-909P,DWORD _dwMediaUSBOTGChkTime = 0;BYTE _bMediaUSBConnPC = FALSE;BYTE _bMediaExitingUSBStack = FALSE;// wyc1.21-909, variable to represent the active port to let F/W can init the correct H/W port.DWORD _dwUSBSRCActivePort;#ifdef SUPPORT_SLOT_IN // KCHong 2.17, for slot-in loaderDWORD __dwCloseTrayTimer=0;#endif //#ifdef SUPPORT_POWERON_MENU#ifdef SUPPORT_USB_SWITCH// check three times, including card-reader, USB, CF-card in order default, except specified in SETUPBYTE __bMediaRegCnt = 2;#else// check two times, including USB, card-reader default, except specified in SETUPBYTE __bMediaRegCnt = 1;#endif#endifBYTE _bTriggerCmd1, _bTriggerCmd2;// wyc2.78-909P,BYTE _bTriggerCmdHD = FALSE;BYTE _bTriggerCmdChkCARD = FALSE;BYTE _bTriggerCmdExitUSBStack = FALSE;BYTE _bIssueCmdExitUSBStack = FALSE;BYTE __bMediaFirstLUN = 0xFF;#ifdef SUPPORT_USB_SWITCHBYTE _bMediaSource = 1; // CTK card-reader first#elseBYTE _bMediaSource = 0; // USB first#endif#ifdef SUPPORT_CHOOSE_MEDIA//BYTE __bMediaFirstLUN = 0xFF;BYTE _bDisableCheckPort;BYTE _bFirstCheckPort = 1;DWORD _dwPortStatus = 0, _dwPrePortStatus;DWORD _dwDefaultDevice = 0x00010000; // set to 0x00010000 to detect USB first#endif /* SUPPORT_CHOOSE_MEDIA */// ============================= Extern Variables =============================extern BYTE __bCloseCommand ; // ** TCH0.60; // ============================= Internal function =============================void _MEDIA_MonitorMediaStatus(void);void _MEDIA_MonitorServoStatus(void);void _ResetSuspendMedia(void);BYTE _QuerySuspendMedia(void);BYTE _MapIndex2SourceID(BYTE bIndex);BYTE _MEDIA_Initial(void);BOOL _MEDIA_SwitchPreAct ( BYTE bPreMedia);BOOL _MEDIA_SwitchPostAct ( BYTE bPostMedia);#ifdef SUPPORT_CHOOSE_MEDIA#ifdef CTK_CARDREADERDWORD _MEDIA_GetCardReaderStatus(DWORD dwInsert);#endif#endifBYTE MEDIA_ShowSelDlg(VOID){ if ( __bMediaSelectUI == FALSE ) { // wyc2.22-909s,#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM if (!CC_ForceStop(CC_FORCE_STOP_FROM_MEDIA_SELECT_UI)) return FALSE;#endif // // wyc1.05-909, update Brian's code. _bPrevMedia = __bChooseMedia; // Brian _bNextMedia = __bChooseMedia; //OSD_ChangeUI(OSD_UI_MEDIA_SELECT_DLG, OSD_ENTER_UI); // enter the UI // wyc2.00-909S,because some OSD will be clear in non-MM mode when call this message OSDDLG_MSG_SHOW_DLG, so we need to // separate two mode to avoid clear still active message in non-MM mode. // wyc2.32-909S, clear all region when thumbnail mode. if (((__wDiscType & CDROM_M1) && (__bMMMenuID != MM_MENU_NONE)) || (__bThumbnailMode)) OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_SHOW_DLG, OSDDLG_MEDIA_SELECT_BACKGROUND_MM_MODE); else OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_SHOW_DLG, OSDDLG_MEDIA_SELECT_BACKGROUND_GENERAL_MODE); OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_DRAW_HIGHLIGHT, __bChooseMedia); __bMediaSelectUI = TRUE; //__bChooseMedia = FALSE; //__bMediaServoState = MEDIA_SERVO_PROMPT; if (__wDiscType & CDROM_M1) { // wyc1.10-909, keep all video/motion when JPG & all motion mode. Because if disable the video in JPG mode, when next // in effect transfer mode, the video won't disable. if (__btPlaying || __btPause) { if ((__bAttrPlay & TYPE_CDROM_AUDIO) || (__bThumbnailMode)) { DISP_DisplayCtrl(DISP_MAINVIDEO, FALSE); HAL_Display ( HAL_DISPLAY_SPST1, FALSE ); } } else { DISP_DisplayCtrl(DISP_MAINVIDEO, FALSE); HAL_Display ( HAL_DISPLAY_SPST1, FALSE ); } } // wyc2.16-909S#ifdef SUPPORT_STB if(__bPreMediaMode != MEDIA_SELECT_STB)#endif { // wyc1.06-909, make system pause after enter select media UI. Because if not pause system, MP3 in CDROM mode won't go // next file automatically because KEY_NEXT / KEY_PREV is reject in MEDIA_MediaSelection_ProcessKey. // wyc2.22-909s, only no pre-stop mode do the pause command. Otherwise __btPause will error update and make resume error action.#ifndef PRESTOP_BEFORE_SETUP_AND_PROGRAM __btPause= TRUE; __btPlaying=FALSE; CHIPS_OpenAudio(FALSE); UTL_TransferCommandID(KEY_PAUSE);#endif // } } return TRUE;}// *********************************************************************// Function : MEDIA_MediaSelection_ProcessKey// Description : This function will process the key when media selection UI is prompt.// Arguments : bKey, the input key// Return : KEY_NO_KEY or the key to be processed.// Side Effect :// *********************************************************************// Micky0.80, remove bKey Parameter an dreturn valueBYTE MEDIA_MediaSelection_ProcessKey(void){ if (( __bMediaSelectUI == FALSE ) && (__bKey != KEY_SELECTMEDIA)) return KEY_BYPASS;#ifdef SUPPORT_AV_IN if(__btPowerDown==TRUE&&(_btTFT_PowerDown == _btAVIN)) return KEY_BYPASS;#endif // wyc1.10-909, need to add define to reduce code when remove USB function. //Aron2.21-909R, don't need to do the checking when DVB mode if( __SF_SourceGBL[__dwSFStreamID].bSourceIndex != SOURCE_DVB ) { __bTemp = MediaInfo[_MapSourceID2Index(__SF_SourceGBL[__dwSFStreamID].bSourceIndex)].bState; // wyc1.50-909, when doing pre-scan action, don't allow entering media select UI, otherwise system will auto play after exit // media select UI but system should pause when entering media select UI. if ((__bTemp == MEDIA_INSERT) || (__bTemp == MEDIA_PARSING) || ((__wDiscType & CDROM_M1) && (__bMotionState == MOTION_STATE_PRESCAN))) return INVALID_KEY; } // wyc2.38a-909s, can't process KEY_FUNCTIOM when power down mode, otherwise LOGO will be abnormal when enter power down -> KEY_FUNCTION -> power on. if ((__btPowerDown) || (__bModeCmd == KEY_SCF) || (__bModeCmd == KEY_SCB) || (__bModeCmd == KEY_FF)) { return INVALID_KEY; } switch(__bKey) { case KEY_UP: OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_CLEAR_HIGHLIGHT, _bNextMedia); if (_bNextMedia == (MEDIA_SELECT_BEGIN)) _bNextMedia = (MEDIA_SELECT_END-1); else _bNextMedia--; OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_DRAW_HIGHLIGHT, _bNextMedia); break; case KEY_DOWN: OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_CLEAR_HIGHLIGHT, _bNextMedia); if (_bNextMedia == (MEDIA_SELECT_END-1)) _bNextMedia = (MEDIA_SELECT_BEGIN); else _bNextMedia++; OSDDLG_MEDIA_SELECT_Update(OSDDLG_MSG_DRAW_HIGHLIGHT, _bNextMedia); break; case KEY_SELECTMEDIA: // Brian if ( __bMediaSelectUI == FALSE ) {#ifdef SUPPORT_STB if(__bSubtitlingMode==TRUE) { DVB_SbtlStop(); DVB_TTX_Stop(); }#endif #ifdef USE_ONE_KEY_SELECT _bPrevMedia = __bChooseMedia;#ifdef SUPPORT_AV_IN if(_btAVIN == TRUE) { _bPrevMedia = MEDIA_SELECT_AV_IN; }#endif _bNextMedia = _bPrevMedia + 1; if(_bNextMedia == MEDIA_SELECT_END) { _bNextMedia = MEDIA_SELECT_BEGIN; } __bKey = KEY_PLAY;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -