📄 dvb_movie.c
字号:
#ifdef CT216T_ELGIST_MM
AV_MonitorResetVariable();
AV_MonitorCheckAudioType(TRUE);
#else
DVB_AudioMonitorFreq(TRUE);
#endif
}
break;
case EN_CT_MOVIE_WAIT_PLAY:
enMovieStage = CT_Movie_Wait_Play(_enCurMovType);
break;
case EN_CT_MOVIE_PLAYEND:
return EN_MOV_STATUS_SUCCESS;
case EN_CT_MOVIE_ERROR_CONCEAL:
DVB_Movie_AVStop();
CT_FillData_Stop(_pstMovieHandle->u32FillDataHandle);
DVB_FILECTRL_FileClose(_enDeviceType, _pstMovieHandle->u32FileHandle);
return EN_MOV_STATUS_DECODE_FAIL;
case EN_CT_MOVIE_STAGE_FAIL:
case EN_CT_MOVIE_SKIP_ITEM:
DVB_Movie_AVStop();
CT_FillData_Stop(_pstMovieHandle->u32FillDataHandle);
DVB_FILECTRL_FileClose(_enDeviceType, _pstMovieHandle->u32FileHandle);
return EN_MOV_STATUS_NOT_SUPPORT_FILE;
default:
break;
}
CT_FillData_GetStatus(_pstMovieHandle->u32FillDataHandle, &u32Status);
if (u32Status == CT_FILL_DATA_STATUS_ERROR)
{
CT_FillData_Stop(_pstMovieHandle->u32FillDataHandle);
DVB_FILECTRL_FileClose(_enDeviceType, _pstMovieHandle->u32FileHandle);
return EN_MOV_STATUS_OPEN_FILE_FAIL;
}
DVB_DEVCTRL_LookupByMedia(EN_MEDIA_MOVIE, &stMovieDeviceInfo);
if (FALSE == stMovieDeviceInfo.b8Ready)
{
CT_FillData_Stop(_pstMovieHandle->u32FillDataHandle);
DVB_FILECTRL_FileClose(_enDeviceType, _pstMovieHandle->u32FileHandle);
return EN_MOV_STATUS_OPEN_FILE_FAIL;
}
}
return EN_MOV_STATUS_SUCCESS;
}
bool8 DVB_Movie_AVStop(void)
{
MOV_MSG(("Enter DVB_Movie_AVStop\n"));
if (CT_FillData_Stop(_pstMovieHandle->u32FillDataHandle)!=DRV_OK)
{
return FALSE;
}
if(DVB_FILECTRL_FileClose(_enDeviceType, _pstMovieHandle->u32FileHandle)!=TRUE)
{
return FALSE;
}
CT_MPG_ProcessIFrameDetectDisable();
CT_MPG_ProcessIPBFrameReadyDisable();
CT_MPG_ProcessAvSyncReadyDisable();
CT_Movie_AVStop();
_pstMovieHandle->u32TotalTime = 0;
_pstMovieHandle->u32CurrentTime = 0;
_pstMovieHandle->b8PauseStatus = FALSE;
_pstMovieHandle->b8FrameCountDetect = FALSE;
_pstMovieHandle->b8TotatTimeDetect = FALSE;
_pstMovieHandle->b8PlayInfoDetect = FALSE;
_pstMovieHandle->b8PlayStart = FALSE;
_pstMovieHandle->u32PreFrameCount = 0;
return TRUE;
}
bool8 DVB_Movie_AVPause(bool8 b8Pause)
{
if (_pstMovieHandle==NULL)
{
return FALSE;
}
if (b8Pause)
{
CT_MPG_VideoPause(b8Pause);
}
else
{
CT_Movie_PlayBack(EN_CT_MOVIE_PLAY, 0);
}
_pstMovieHandle->b8PauseStatus = b8Pause;
return TRUE;
}
bool8 DVB_Movie_Play(void)
{
CT_Movie_PlayBack(EN_CT_MOVIE_PLAY, 0);
return TRUE;
}
bool8 DVB_Movie_FastForward(EN_MOVIE_PLAYBACK_FAST enFast)
{
if (enFast < EN_MOVIE_PLAYBACK_FAST2X || enFast > EN_MOVIE_PLAYBACK_FAST32X)
{
return FALSE;
}
if (enFast == EN_MOVIE_PLAYBACK_FAST2X)
{
CT_Movie_PlayBack(EN_CT_MOVIE_FF, enFast);
}
else
{
CT_Movie_PlayBack(EN_CT_MOVIE_SCF, enFast);
}
return TRUE;
}
bool8 DVB_Movie_BackForward(EN_MOVIE_PLAYBACK_FAST enFast)
{
if (enFast < EN_MOVIE_PLAYBACK_FAST2X || enFast > EN_MOVIE_PLAYBACK_FAST32X)
{
return FALSE;
}
CT_Movie_PlayBack(EN_CT_MOVIE_SCB, enFast);
return TRUE;
}
bool8 DVB_Movie_SlowForward(EN_MOVIE_PLAYBACK_SLOW enSlow)
{
if (enSlow < EN_MOVIE_PLAYBACK_SLOW2X || enSlow > EN_MOVIE_PLAYBACK_SLOW32X)
{
return FALSE;
}
CT_Movie_PlayBack(EN_CT_MOVIE_SF, enSlow);
return TRUE;
}
bool8 DVB_Movie_Step(void)
{
CT_Movie_PlayBack(EN_CT_MOVIE_STEP, 0);
return TRUE;
}
EN_MOVIE_STATUS DVB_Movie_DecodeGetStatus(void)
{
EN_MOVIE_STATUS enMovieStatus = EN_MOVIE_STATUS_UN_INIT;
if (_pstMovieHandle==NULL)
{
enMovieStatus = EN_MOVIE_STATUS_UN_INIT;
}
else
{
if (_pstMovieHandle->b8PlayStart==TRUE)
{
if (_pstMovieHandle->b8PauseStatus==TRUE)
{
enMovieStatus = EN_MOVIE_STATUS_PAUSE;
}
else
{
switch(CT_Movie_DecodeGetStatus())
{
case EN_CT_MOVIE_STATUS_PLAY:
enMovieStatus = EN_MOVIE_STATUS_PLAY;
break;
case EN_CT_MOVIE_STATUS_STOP:
enMovieStatus = EN_MOVIE_STATUS_STOP;
break;
case EN_CT_MOVIE_STATUS_ERROR:
enMovieStatus = EN_MOVIE_STATUS_ERROR;
break;
default:
enMovieStatus = EN_MOVIE_STATUS_PLAY;
break;
}
}
}
else
{
enMovieStatus = EN_MOVIE_STATUS_STOP;
}
}
return enMovieStatus;
}
// file system about
u32 DVB_Movie_GetFileCount(void)
{
u32 count;
DVB_DEVCTRL_HoldFs(TRUE, EN_MEDIA_MOVIE);
count = DVB_FILECTRL_GetFileCount(_enDeviceType, EN_FILE_TYPE_MOVIE);
DVB_DEVCTRL_HoldFs(FALSE, EN_MEDIA_MOVIE);
return count;
}
u32 DVB_Movie_GetDirCount(void)
{
u32 count;
DVB_DEVCTRL_HoldFs(TRUE, EN_MEDIA_MOVIE);
count = DVB_FILECTRL_GetFileCount(_enDeviceType, EN_FILE_TYPE_DIR);
DVB_DEVCTRL_HoldFs(FALSE, EN_MEDIA_MOVIE);
return count;
}
bool8 DVB_Movie_DelFile(u32 u32FileIndex)
{
u8 au8FileName[13] = {0};
DVB_DEVCTRL_HoldFs(TRUE, EN_MEDIA_MOVIE);
DVB_FILECTRL_GetFilenameWithIndex(_enDeviceType, EN_FILE_TYPE_MOVIE, u32FileIndex, au8FileName);
DVB_DEVCTRL_HoldFs(FALSE, EN_MEDIA_MOVIE);
return DVB_FILECTRL_FileDelete(_enDeviceType, au8FileName);
}
u16* DVB_Movie_GetFileName(u32 u32FileIndex, u8 *pu8FileName)
{
u16* LongName;
DVB_DEVCTRL_HoldFs(TRUE, EN_MEDIA_MOVIE);
LongName = DVB_FILECTRL_GetFilenameWithIndex(_enDeviceType, EN_FILE_TYPE_MOVIE, u32FileIndex, pu8FileName);
DVB_DEVCTRL_HoldFs(FALSE, EN_MEDIA_MOVIE);
return LongName;
}
u16* DVB_Movie_GetDirName(u32 u32FileIndex, u8 *pu8DirName)
{
u16* LongName;
DVB_DEVCTRL_HoldFs(TRUE, EN_MEDIA_MOVIE);
LongName = DVB_FILECTRL_GetFilenameWithIndex(_enDeviceType, EN_FILE_TYPE_DIR, u32FileIndex, pu8DirName);
DVB_DEVCTRL_HoldFs(FALSE, EN_MEDIA_MOVIE);
return LongName;
}
bool8 DVB_Movie_GetCurrentTime(u8 *pu8Hour, u8 *pu8Min, u8 *pu8Sec)
{
u32 u32Time;
if (pu8Hour == NULL || pu8Min == NULL || pu8Sec == NULL)
{
return FALSE;
}
u32Time = CT_Movie_GetCurrentTime();
*pu8Hour = u32Time/3600;
*pu8Min = (u32Time%3600)/60;
*pu8Sec = u32Time%60;
return TRUE;
}
bool8 DVB_Movie_GetMovieInfo(DVB_MOVIE_INFO *pstMovieInfo)
{
if (pstMovieInfo == NULL)
{
return FALSE;
}
if (CT_Movie_GetMovieInfo((CT_MOVIE_INFO *)pstMovieInfo) == FALSE)
{
return FALSE;
}
return TRUE;
}
bool8 DVB_Movie_GetStatus(void)
{
return _b8MovDecodingMode;
}
/*******************************************************************************************/
EN_DRV_RESULT DVB_Movie_ReadFsData(u8* pu8Puffer, u32 u32Offset, u32 u32ReadLen)
{
u32 u32Count = 0;
ST_PENDEV_HANDLEINFO stDeviceInfo;
if ((_pstMovieHandle==NULL)||(_pstMovieHandle->u32MovDataLen==0))
{
return DRVERR_NOTOK;
}
if ((pu8Puffer==NULL)||(u32ReadLen==0))
{
MOV_DBG(("\n>> DVB_Movie_ReadFsData : Fail"));
return DRVERR_NOTOK;
}
if ((u32Offset+u32ReadLen) > _pstMovieHandle->u32MovDataLen)
{
u32ReadLen = _pstMovieHandle->u32MovDataLen - u32Offset;
}
DVB_DEVCTRL_LookupByMedia(EN_MEDIA_MOVIE ,&stDeviceInfo);
if(stDeviceInfo.b8Ready == FALSE)
{
return DRVERR_NOTOK;
}
// MOV_DBG(("\n>>DVB_IMG_ReadFsData : u32ReadLen = %lu, pu8Puffer = %lx, u32JpgDataLen = %lu, u32Offset = %lu\n", u32ReadLen, pu8Puffer, _pstMovieHandle->u32MovDataLen, u32Offset));
DVB_DEVCTRL_HoldFs(TRUE, EN_MEDIA_MOVIE);
DVB_FILECTRL_FileSeek(_enDeviceType, _pstMovieHandle->u32FileHandle, u32Offset, EN_FILE_START);
while(u32Count < 3)
{
u32 u32ReadLength = 0;
// Yan/K200, 2008/01/29
// 璝琌杆竚祇ネぃ铆
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -