📄 dvb_pvr.c
字号:
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_PlaybackPause FAIL"));
}
return TRUE;
}
bool8 DVB_PVR_UnPause(void)
{
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAY_UNPAUSE;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_PlaybackUnPause FAIL"));
}
return TRUE;
}
bool8 DVB_PVR_Register(DVB_PVR_NOTIFY_FN fpNotify)
{
if (fpNotify != NULL)
{
_fpNotify = fpNotify;
return TRUE;
}
else
{
return FALSE;
}
}
bool8 DVB_PVR_PlaybackSkip(s32 s32Second)
{
if((PVR_Play_GetStatus()==EN_PVR_PLAY_NONE)||
(PVR_Play_GetStatus()==EN_PVR_ERROR_PLAY))
{
DVBPVR_MSG(("\n\r DVB_PVR_PlaybackSkip FAIL"));
return FALSE;
}
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAY_SKIP;
stPvrSendMsg.unData.u32MsgData = s32Second;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_PlaybackSkip FAIL"));
}
return TRUE;
}
bool8 DVB_PVR_SetSectorSize(u32 u32Size)
{
if((u32Size % 512)!=0)
{
return FALSE;
}
else
{
_u32SectorSize = u32Size;
PVR_SetSectorSize(u32Size);
}
return TRUE;
}
u32 DVB_PVR_GetSectorSize(void)
{
return _u32SectorSize;
}
bool8 DVB_PVR_SetNextRecordFileHandle(u32 u32FileHandle, u32 u32NextFileHandle)
{
bool8 b8Result;
b8Result = PVR_SetNextRecordFileHandle(u32FileHandle,u32NextFileHandle);
return b8Result;
}
bool8 DVB_PVR_SetAvPid(ST_PVR_AV_PID *pstAvPid)
{
PVR_SetAvPid(pstAvPid);
return TRUE;
}
bool8 DVB_PVR_SetNotAvPid(ST_PVR_NOT_AV_PID *pstNotAvPid)
{
PVR_SetNotAvPid(pstNotAvPid);
return TRUE;
}
u32 DVB_PVR_GetCurPlayHandle(void)
{
if(PVR_Play_GetStatus()!=EN_PVR_PLAY_FILE)
{
return PVR_INVALID_FILE_HANDLE;
}
else
{
return PVR_GetCurPlayHandle();
}
}
u32 DVB_PVR_GetCurRecHandle(void)
{
if(PVR_Record_GetStatus() != EN_PVR_RECORD_FILE)
{
return PVR_INVALID_FILE_HANDLE;
}
else
{
return PVR_GetCurRecHandle();
}
}
void DVB_PVR_SetTimeShitMode(bool8 b8Mode)
{
PVR_SetTimeShitMode(b8Mode);
}
bool8 DVB_PVR_TimeShiftLiveBackward(EN_PVR_PLAYBACK_SPEED enSpeed,u16 u16LiveVid, u16 u16LiveAid)
{
//ST_PVR_AV_PID stAvPid;
if(PVR_Record_GetStatus()==EN_PVR_RECORD_NONE)
{
DVBPVR_MSG(("\n\r DVB_PVR_TimeShiftLiveBackward Error"));
return FALSE;
}
/*
_u16LiveVid = u16LiveVid;
_u16LiveAid = u16LiveAid;
DVB_PVR_SetParserAVPid(u16LiveVid,u16LiveAid);
DVBPVR_MSG(("\n\r Set Pid %x %x",u16LiveVid,u16LiveAid));
stAvPid.au16Pid[0] = 0x1FFF;
stAvPid.au16Pid[1] = u16LiveVid;
stAvPid.au16Pid[2] = u16LiveAid;
stAvPid.u16PidNumber = 3;
DVB_PVR_SetAvPid(&stAvPid);
*/
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAY_LIVEBACK;
stPvrSendMsg.u8Reserve = enSpeed;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_FastBackwardPlay FAIL"));
}
/*
DVB_AVDemuxDisable();
DVB_AudioVideoStop();
DVB_VideoScreenEnable(FALSE);
DVB_VideoScreenShow(FALSE);
*/
DVB_PVR_PlaybackRecordingStart(u16LiveVid,u16LiveAid);
/*
DVB_VideoScreenEnable(TRUE);
DVB_VideoScreenShow(TRUE);
DVB_AudioVideoPlay();
bool8 b8Mute = DVB_AudioGetMute();
DVB_AudioSetMute(b8Mute);
*/
DVB_PVR_FastBackwardPlay(enSpeed);
return TRUE;
}
bool8 DVB_PVR_SetDevice(EN_DEVICE_TYPE enDevice)
{
if(PVR_Record_GetStatus()!= EN_PVR_RECORD_NONE)
{
return FALSE;
}
if(PVR_Play_GetStatus()!= EN_PVR_PLAY_NONE)
{
return FALSE;
}
_enPVRDeviceType = enDevice;
return PVR_PORTING_SetDevice(enDevice);
}
EN_DEVICE_TYPE DVB_PVR_GetDevice(void)
{
return _enPVRDeviceType;
}
#ifdef PVR_FILL_TASK_ENABLE
void DVB_PVR_Fill_Task_Active(bool8 b8Active)
{
// Resume
if(b8Active == TRUE)
{
if(_b8PVRFillTaskResume == FALSE)
{
_b8PVRFillTaskResume = TRUE;
CT_OS_ResumeTask(&_stPVRFillTask);
}
}
// Suspend
else
{
if(_b8PVRFillTaskResume == TRUE)
{
_b8PVRFillTaskResume = FALSE;
CT_OS_SuspendTask(&_stPVRFillTask);
}
}
}
void DVB_PVR_Fill_Task(u32 u32Argc, void* pArgv)
{
while(1)
{
CT_OS_WaitOnSemaphore(&PVR_Fill_Data_Semaphore, CTOS_WAIT);
PVR_Fill_Data_to_Dumpin();
}
}
void _dvb_pvr_fill_data_notify(void)
{
CT_OS_FreeSemaphore(&PVR_Fill_Data_Semaphore);
}
#endif
//====================Internal Use Function===========================
bool8 _dvb_pvr_send_cb_event(EN_PVR_EVENT enEvent)
{
//DVBPVR_MSG(("\n\r _dvb_pvr_send_cb_event %d",enEvent));
stCBSendMsg.u8Cmd = enEvent;
CT_OS_PutMsg(&stCBQueue, &stCBSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CBStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r Callback Status Failed!!\n"));
}
return TRUE;
}
void DVB_PVR_GetTimeShiftParams(u32* pu32ReadHandleIndex, u32* pu32WriteHandleIndex,
u32* pu32ReadPosition, u32* pu32WritePosition)
{
return PVR_GetTimeShiftParams(pu32ReadHandleIndex, pu32WriteHandleIndex, pu32ReadPosition, pu32WritePosition);
}
u32 DVB_PVR_GetMaxFileSize(void)
{
return PVR_GetMaxFileSize();
}
//p047
u32 DVB_PVR_GetPlaybackTime(void)
{
u32 u32Seconds;
if(DVB_PVR_GetPlayStatus()!=EN_PVR_PLAY_FILE)
{
return 0xFFFFFFFF;
}
u32Seconds = PVR_GetPlaybackTime();
// printf("\n\r u32Seconds %ld",u32Seconds);
return u32Seconds;
}
EN_PVR_PLAY_STATUS DVB_PVR_GetPlayStatus(void)
{
return PVR_Play_GetStatus();
}
u32 DVB_PVR_GetRecDuration(void)
{
return PVR_Get_RecDuration();
}
bool8 DVB_PVR_GetPreviewStatus(void)
{
return PVR_GetPreviewStauts();
}
EN_PVR_PLAYBACK_SPEED DVB_PVR_Play_GetSpeed(void)
{
return PVR_Play_GetSpeed();
}
EN_PVR_PLAYMODE DVB_PVR_Play_GetMode(void)
{
return PVR_Play_GetMode();
}
EN_PVR_RECORD_STATUS DVB_PVR_GetRecordStatus(void)
{
return PVR_Record_GetStatus();
}
bool8 DVB_PVR_PlaybackRecordingStop(void)
{
if((PVR_Play_GetStatus()==EN_PVR_PLAY_NONE)||
(PVR_Play_GetStatus()==EN_PVR_ERROR_PLAY))
{
DVBPVR_MSG(("\n\r DVB_PVR_PlaybackRecordingStop FAIL"));
return FALSE;
}
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAY_RECORDING_STOP;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_PlaybackStop FAIL"));
}
#ifdef PVR_FILL_TASK_ENABLE
DVB_PVR_Fill_Task_Active(FALSE);
#endif
return TRUE;
}
#if 0
//p030
bool8 DVB_PVR_PlaybackRecordingStart(void)
{
bool8 b8Mute;
ST_PVR_AV_PID stAvPid;
u16 u16Vid,u16Aid;
if(PVR_Record_GetStatus()!=EN_PVR_RECORD_FILE)
{
DVBPVR_MSG(("\n\r DVB_PVR_PlaybackRecordingStart FAIL"));
return FALSE;
}
_u16LiveVid = DVB_VideoGetPID();
_u16LiveAid = DVB_AudioGetPID();
u16Aid = DVB_AudioGetPID();
u16Vid= DVB_VideoGetPID();
DVB_AVDemuxDisable();
DVB_AudioVideoStop();
DVB_VideoScreenEnable(FALSE);
DVB_VideoScreenShow(FALSE);
DVB_PVR_SetParserAVPid(u16Vid,u16Aid);
CT_MPG_ParserSetVideoPID(_u16ParserVid);
CT_MPG_ParserSetAudioPID(_u16ParserAid);
stAvPid.au16Pid[0] = 0x1FFF;
stAvPid.au16Pid[1] = u16Vid;
stAvPid.au16Pid[2] = u16Aid;
stAvPid.u16PidNumber = 3;
DVB_PVR_SetAvPid(&stAvPid);
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAY_RECORDING_START;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_PlaybackRecordingStart FAIL"));
}
DVB_VideoScreenEnable(TRUE);
DVB_VideoScreenShow(TRUE);
DVB_AudioVideoPlay();
CT_MPG_ParserDemuxEnable();
b8Mute = DVB_AudioGetMute();
DVB_AudioSetMute(b8Mute);
return TRUE;
}
#endif
//p030
bool8 DVB_PVR_PlaybackRecordingStart(u16 u16LiveVid, u16 u16LiveAid)
{
ST_PVR_AV_PID stAvPid;
if(PVR_Record_GetStatus()!=EN_PVR_RECORD_FILE)
{
DVBPVR_MSG(("\n\r DVB_PVR_PlaybackRecordingStart FAIL"));
return FALSE;
}
_u16LiveVid = u16LiveVid;
_u16LiveAid = u16LiveAid;
DVB_PVR_SetParserAVPid(u16LiveVid,u16LiveAid);
CT_MPG_ParserSetVideoPID(_u16ParserVid);
CT_MPG_ParserSetAudioPID(_u16ParserAid);
stAvPid.au16Pid[0] = 0x1FFF;
stAvPid.au16Pid[1] = u16LiveVid;
stAvPid.au16Pid[2] = u16LiveAid;
stAvPid.u16PidNumber = 3;
DVB_PVR_SetAvPid(&stAvPid);
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAY_RECORDING_START;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_PlaybackRecordingStart FAIL"));
}
//CT_MPG_ParserDemuxEnable();
#ifdef PVR_FILL_TASK_ENABLE
DVB_PVR_Fill_Task_Active(TRUE);
#endif
return TRUE;
}
bool8 DVB_PVR_TimeShiftSetReadToWrite(void)
{
if(PVR_Record_GetStatus()!=EN_PVR_RECORD_FILE)
{
DVBPVR_MSG(("\n\r DVB_PVR_SetTimeShiftReadToWrite FAIL"));
return FALSE;
}
stPvrSendMsg.u8Cmd = EN_PVR_TASK_TIME_SHIFT_READ_TO_WRITE;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_SetTimeShiftReadToWrite FAIL"));
}
return TRUE;
}
bool8 DVB_PVR_RecordAddPid(u16 u16Pid)
{
if(PVR_Record_GetStatus()!=EN_PVR_RECORD_FILE)
{
DVBPVR_MSG(("\n\r DVB_PVR_SetTimeShiftReadToWrite FAIL"));
return FALSE;
}
return PVR_RecordAddPid(u16Pid);
}
void DVB_PVR_ShowPlayInfo(void)
{
PVR_ShowPlayInfo();
}
bool8 DVB_PVR_ScanPreview(ST_PVR_PLAY_PARAMETER *pstScanPreviewParam, u16 u16LiveVid, u16 u16LiveAid)
{
stPvrSendMsg.u8Cmd = EN_PVR_TASK_SCAN_PREVIEW;
stPvrSendMsg.unData.u32MsgData = (u32)pstScanPreviewParam;
_u16LiveVid = u16LiveVid;
_u16LiveAid = u16LiveAid;
CT_MPG_ParserSetVideoPID(_u16ParserVid);
CT_MPG_ParserSetAudioPID(_u16ParserAid);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -