static PRESULT win_mpegYT_player_message_proc(POBJECT_HEAD pObj, UINT32 msg_type, UINT32 msg_code) { PRESULT ret = PROC_LOOP; struct VDec_StatusInfo vdec_status; switch (msg_type) { case CTRL_MSG_SUBTYPE_CMD_STO: if(msg_code == USB_STATUS_OVER) do{}while(0); break; case CTRL_MSG_SUBTYPE_CMD_TIMEDISPLAYUPDATE: //add on 2011-09-28 fixBUG42869 //if(!b_vdec_support && !b_audio_yt_support) //{ // StopProc(); // break; //} MPEGYTInfo.PlayTime = (UINT32)MPGFileDecoderGetPlayTime() + s_ytvideo_seektime; if(MPEGYTInfo.PlayTime >= MPEGYTInfo.TotalTime) { BarState.nPos = MPEGYTInfo.TotalTime - 1; } else BarState.nPos = MPEGYTInfo.PlayTime; if (!m_HideWindow) { win_mpegYT_player_draw(TRUE); } break; case CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER: //video over #if 0 vdec_io_control(dev_get_by_id(HLD_DEV_TYPE_DECV, 0), VDEC_IO_GET_STATUS, (UINT32)(&vdec_status)); if(MPEG_FB != MPEGYTInfo.PlayState && MPEG_SB != MPEGYTInfo.PlayState && vdec_status.api_play_direction == VDEC_FORWARD) { if((filelist_get_current_classifiedfile_count(MP_VIDEO)+1)<mpegYTlist_cnt) { mpegYTlist_idx = filelist_get_next_classifiedfile_index(MP_VIDEO, mpegYTlist_idx); } else { mpegYTlist_idx = (UINT16)(~0); } } if(mpegYTlist_idx != (UINT16)(~0)) { if(vdec_status.api_play_direction == VDEC_FORWARD) { libnet_download_abort(g_strf_cur_dl_rsrc); mpg_cmd_stop_proc(); } MPEGYTInfo.PlayState = MPEG_STOP; api_stop_timer(&mpegYT_refresh_id); m_mpegYT_player_working = FALSE; MPEGYT_player_init(); m_mpegYT_player_working = TRUE; } else ret = PROC_LEAVE; #else if(MPEGYTInfo.PlayState == MPEG_FB) { MPEGYTInfo.PlayState = MPEG_STOP; PlayProc_yt(); } else { ret = PROC_LEAVE; } #endif break; case CTRL_MSG_SUBTYPE_STATUS_TIMEOUT: //mpegYT player display timer out if (!m_HideWindow) { win_mpegYT_player_draw(FALSE); if (BarState.State == CURSOR_MOVING) { SyncBarPosAndCursor(POS_TO_CUR); } } else { if (m_bSetVol_YT)//if the volume bar is showing { //ShowVolumeBar(FALSE);//Close the volume bar } } break; case CTRL_MSG_SUBTYPE_STATUS_VIDEO_DEC_ERR: case CTRL_MSG_SUBTYPE_STATUS_PARSE_END: s_is_in_parsing = 0; // mpegYT_refresh_cnt = 0; MPEGYTInfo.TotalTime = get_video_total_time() + s_ytvideo_seektime; BarState.nRange = MPEGYTInfo.TotalTime; mpegYT_file_prompt(NULL, FALSE); //mpegYT_unsupport_detect(msg_code); #ifdef AV_DELAY_SUPPORT if(b_vdec_support && b_audio_yt_support) { SYSTEM_DATA *psys_data = sys_data_get(); if(psys_data->avset.avdelay_value > 500) MpgSetAVSyncDelay(1, psys_data->avset.avdelay_value-500); //0:video; 1:audio. else if(psys_data->avset.avdelay_value > 0 && psys_data->avset.avdelay_value < 500) MpgSetAVSyncDelay(0, psys_data->avset.avdelay_value); //0:video; 1:audio. } #endif break; } return ret; }
static PRESULT win_mpeg_player_message_proc(POBJECT_HEAD pObj, UINT32 msg_type, UINT32 msg_code) { PRESULT ret = PROC_LOOP; struct VDec_StatusInfo vdec_status; switch (msg_type) { case CTRL_MSG_SUBTYPE_CMD_STO: if(msg_code == USB_STATUS_OVER) { storage_dev_mount_hint(1); file_list_check_storage_device(FALSE, FALSE); } break; case CTRL_MSG_SUBTYPE_CMD_TIMEDISPLAYUPDATE: MPEGInfo.PlayTime = (UINT32)MPGFileDecoderGetPlayTime(); if(MPEGInfo.PlayTime >= MPEGInfo.TotalTime) { BarState.nPos = MPEGInfo.TotalTime - 1; } else BarState.nPos = MPEGInfo.PlayTime; if (!m_HideWindow) { win_mpeg_player_draw(TRUE); } break; case CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER: //video over #if 0 vdec_io_control(dev_get_by_id(HLD_DEV_TYPE_DECV, 0), VDEC_IO_GET_STATUS, (UINT32)(&vdec_status)); if(MPEG_FB != MPEGInfo.PlayState && MPEG_SB != MPEGInfo.PlayState && vdec_status.api_play_direction == VDEC_FORWARD) { if((filelist_get_current_classifiedfile_count(MP_VIDEO)+1)<mpeglist_cnt) { mpeglist_idx = filelist_get_next_classifiedfile_index(MP_VIDEO, mpeglist_idx); } else { mpeglist_idx = (UINT16)(~0); } } if(mpeglist_idx != (UINT16)(~0)) { if(vdec_status.api_play_direction == VDEC_FORWARD) mpg_cmd_stop_proc(); MPEGInfo.PlayState = MPEG_STOP; api_stop_timer(&mpeg_refresh_id); m_mpeg_player_working = FALSE; MPEG_player_init(); m_mpeg_player_working = TRUE; } else ret = PROC_LEAVE; #else if(MPEGInfo.PlayState == MPEG_FB) { MPEGInfo.PlayState = MPEG_STOP; PlayProc(); } else { ret = PROC_LEAVE; } #endif break; case CTRL_MSG_SUBTYPE_STATUS_TIMEOUT: //mpeg player display timer out if (!m_HideWindow) { win_mpeg_player_draw(FALSE); if (BarState.State == CURSOR_MOVING) { SyncBarPosAndCursor(POS_TO_CUR); } } else { if (m_bSetVol)//if the volume bar is showing { //ShowVolumeBar(FALSE);//Close the volume bar } } break; } return ret; }