📄 dvb_pvr.c
字号:
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r UI DVB_PVR_ScanPreview FAIL"));
}
else
{
// It should finish before free semaphore in PVR Task
//CT_MPG_ParserSetAudioPID(0);
}
#ifdef PVR_FILL_TASK_ENABLE
DVB_PVR_Fill_Task_Active(TRUE);
#endif
return TRUE;
}
bool8 DVB_PVR_ScanPreviewStop(void)
{
if(PVR_Play_GetStatus()==EN_PVR_PLAY_NONE)
{
return FALSE;
}
stPvrSendMsg.u8Cmd = EN_PVR_TASK_SCAN_PREVIEW_STOP;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_ScanPreviewStop FAIL"));
}
#ifdef PVR_FILL_TASK_ENABLE
DVB_PVR_Fill_Task_Active(FALSE);
#endif
return TRUE;
}
u32 DVB_PVR_GetCurStreamRate(void)
{
return PVR_GetCurStreamRate();
}
u32 DVB_PVR_GetTimeshiftRemovedFileHandle(void)
{
return PVR_GetTimeshiftRemovedFileHandle();
}
u32 DVB_PVR_GetLiveVideoPid(void)
{
return _u16LiveVid;
}
u32 DVB_PVR_GetLiveAudioPid(void)
{
return _u16LiveAid;
}
EN_PVR_JUMP_STATUS DVB_PVR_PlaybackJump(ST_PVR_JUMP_PARAMETER *pstJumpParam)
{
if(PVR_Play_GetStatus() == EN_PVR_PLAY_NONE)
{
DVBPVR_MSG(("\n\r DVB_PVR_Playback_Skip FAIL"));
return EN_JUMP_ERROR;
}
stPvrSendMsg.u8Cmd = EN_PVR_TASK_PLAYBACK_JUMP;
stPvrSendMsg.unData.pMsgData = pstJumpParam;
CT_OS_PutMsg(&stPvrQueue, &stPvrSendMsg, CTOS_NO_WAIT);
if(DVB_PVR_CmdStatus()!= EN_PVR_STATUS_SUCCESS)
{
DVBPVR_DBG(("\n\r DVB_PVR_Playback_Skip FAIL"));
}
return EN_JUMP_OK;
}
void DVB_PVR_GetTimeShift_Position(ST_TIME_SHIFT_POS *pstPosition)
{
PVR_GetTimeShift_Position(pstPosition);
}
#if 0
//================================For Test Variable====================
#define WRITE_DATA_SIZE 512*64
#define REG_PLAT_MPLL_CONTROL (*((vu32 *) (0x80000310)))
#define PVR_PLAT_DSU2_CONTROL (*((vu32 *) (0x98000000))) // 98000000
static u8 au8Data[16*47*1024];
u8 au8HeaderData[376];
ST_PVR_RECORD_PARAMETER stRecParam;
ST_AP_PVR_TS_HEADER stApHeader;
ST_PVR_PLAY_PARAMETER stPlayParam;
u32 u32FileHandle,u32NextHandle;
u32 u32RecHandle,u32RecNextHandle;
u16 u16LiveVid,u16LiveAid;
static u32 u32FileCount = 0;
//================= Test function======================================
void PVR_CB_Notify(EN_PVR_EVENT enPvrEvent)
{
u8 au8FileName[13] = {0};
DVBPVR_MSG(("\n\r PVR CB Notify %d",enPvrEvent));
// printf("Closw Filehandle = %ld",stRecParam.u32FileHandle);
if(enPvrEvent == EN_PVR_EVENT_RECORD_NEW_HANDLE)
{
DVBPVR_MSG(("\n\r Notify EN_PVR_EVENT_RECORD_NEW_HANDLE"));
// DVB_FILECTRL_FileWrite(_enPVRDeviceType,u32RecHandle,sizeof(ST_AP_PVR_TS_HEADER),&stApHeader);
// DVB_FILECTRL_FileClose(_enPVRDeviceType,u32RecHandle);
u32RecHandle = u32RecNextHandle;
// i = DVB_FILECTRL_GetFileCount(_enPVRDeviceType,EN_FILE_TYPE_ALL);
// i+=2;
sprintf(au8FileName,"%08ld.TS",u32FileCount);
u32RecNextHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'w');
DVBPVR_MSG(("\n\r FileName %s Handle %ld",au8FileName,u32RecNextHandle));
PVR_SetNextRecordFileHandle(u32RecHandle,u32RecNextHandle);
u32FileCount++;
}
else if((enPvrEvent == EN_PVR_EVENT_RECORD_FINISH)||(enPvrEvent == EN_PVR_EVENT_RECORD_STOP))
{
DVB_FILECTRL_FileWrite(_enPVRDeviceType,u32RecHandle,sizeof(ST_AP_PVR_TS_HEADER),(u8*)&stApHeader);
DVB_FILECTRL_FileClose(_enPVRDeviceType,u32RecHandle);
DVBPVR_MSG(("\n\r Close File"));
}
else if((enPvrEvent == EN_PVR_EVENT_PLAYBACK_FINISH)||
(enPvrEvent == EN_PVR_EVENT_PLAYBACK_STOP))
{
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[0]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[1]);
#if 0
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[2]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[3]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[4]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[5]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[6]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[7]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[8]);
DVB_FILECTRL_FileClose(_enPVRDeviceType,stPlayParam.au32FileHandle[9]);
#endif
}
else if(enPvrEvent == EN_PVR_EVENT_DISK_FULL)
{
DVBPVR_MSG(("\n\r Disk Full"));
}
else if(enPvrEvent == EN_PVR_EVENT_PLAYBACK_END_OF_RECORDING)
{
DVBPVR_MSG(("\n\r EN_PVR_EVENT_PLAYBACK_END_OF_RECORDING"));
}
}
//p008
void DVB_PVR_TestRecordStart(void)
{
u8 au8FileName[26] = {0};
u8 au8FileName1[13] = {0};
#if 1
stRecParam.au16Pid[0] = DVB_VideoGetPID();
stRecParam.au16Pid[1] = DVB_AudioGetPID();
stRecParam.u8PidNum = 2;
// stRecParam.u8PidNum = 1;
stRecParam.u32RecordMBSize = 0;//sector units , one sector as 512 bytes
stRecParam.u32DurationTime = 0;
stApHeader.u16Aid = DVB_AudioGetPID();
stApHeader.u16Vid= DVB_VideoGetPID();
stApHeader.u8AudioFreq = CT_MPG_AudioGetFreq();
u32FileCount = DVB_FILECTRL_GetFileCount(_enPVRDeviceType,EN_FILE_TYPE_ALL);
DVBPVR_MSG(("\n\r File Count %ld",u32FileCount));
sprintf(au8FileName,"%08ld.TS",u32FileCount);
DVBPVR_MSG(("\n\r FN %s",au8FileName));
u32RecHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'w');
DVBPVR_MSG(("\n\r Open u32FileHandle = %ld",u32RecHandle));
stRecParam.u32FileHandle = u32RecHandle;
DVB_PVR_Register(PVR_CB_Notify);
PVR_ResetRecInfo();
stRecParam.u8CircleNum = 2;
// DVB_AudioSetPID(0);
#if 1
u32FileCount++;
sprintf(au8FileName1,"%08ld.TS",u32FileCount);
DVBPVR_MSG(("\n\r FN1 %s",au8FileName1));
u32RecNextHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName1, 'w');
DVBPVR_MSG(("\n\r Open u32FileHandle = %ld",u32RecNextHandle));
stRecParam.u32NextFileHandle = u32RecNextHandle;
u32FileCount++;
#endif
DVB_PVR_RecordStart(&stRecParam);
#else
#endif
}
//p020
void DVB_PVR_TestPlaybackFileStart(void)
{
// ST_AP_PVR_TS_HEADER stApHeader;
ST_PVR_AV_PID stAvPid;
u8 au8FileName[13] = {0};
u32 u32Size;
u16LiveVid = DVB_VideoGetPID();
u16LiveAid = DVB_AudioGetPID();
// stApHeader.u16Aid = DVB_AudioGetPID();
// stApHeader.u16Vid= DVB_VideoGetPID();
// stApHeader.u8AudioFreq = CT_MPG_AudioGetFreq();
sprintf(au8FileName,"00000068.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 0 u32FileHandle = %ld",u32FileHandle));
u32Size = PVR_FILECTRL_GetFileSize(u32FileHandle);
DVBPVR_MSG(("\n\r Size %lx",u32Size));
PVR_FILECTRL_FileSeek(u32FileHandle,u32Size-sizeof(ST_AP_PVR_TS_HEADER), EN_PVR_FILE_CURRENT_FORWARD);
DVBPVR_MSG(("\n\r File Seek"));
PVR_FILECTRL_Read(u32FileHandle,8,(u8*)&stApHeader);
DVBPVR_MSG(("\n\r File Read"));
PVR_FILECTRL_FileSeek(u32FileHandle,0, EN_PVR_FILE_START);
stPlayParam.au32FileHandle[0] = u32FileHandle;
#if 0
sprintf(au8FileName,"00000002.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 1 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[1] = u32FileHandle;
sprintf(au8FileName,"00000063.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 2 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[2] = u32FileHandle;
sprintf(au8FileName,"00000064.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 3 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[3] = u32FileHandle;
sprintf(au8FileName,"00000065.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 4 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[4] = u32FileHandle;
sprintf(au8FileName,"00000066.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 5 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[5] = u32FileHandle;
sprintf(au8FileName,"00000067.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 6 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[6] = u32FileHandle;
sprintf(au8FileName,"00000068.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 7 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[7] = u32FileHandle;
sprintf(au8FileName,"00000069.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 8 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[8] = u32FileHandle;
sprintf(au8FileName,"00000070.TS");
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType, au8FileName, 'r');
DVBPVR_MSG(("\n\r Open 9 u32FileHandle = %ld",u32FileHandle));
stPlayParam.au32FileHandle[9] = u32FileHandle;
#endif
stPlayParam.u32FileHandleNum = 1;
stPlayParam.u32HeaderSize = sizeof(ST_AP_PVR_TS_HEADER);
stPlayParam.u32TotalFileSeconds = 857;//2962*2;//11311 for cache 4 G;
DVBPVR_MSG(("\n\r Vid %x Aid %x",stApHeader.u16Vid,stApHeader.u16Aid));
DVB_PVR_Register(PVR_CB_Notify);
DVB_PVR_SetParserAVPid(stApHeader.u16Vid,stApHeader.u16Aid);
stAvPid.au16Pid[0] = 0x1FFF;
stAvPid.au16Pid[1] = stApHeader.u16Vid;
stAvPid.au16Pid[2] = stApHeader.u16Aid;
stAvPid.u16PidNumber = 3;
DVB_PVR_SetAvPid(&stAvPid);
DVBPVR_MSG(("\n\r DVB_PVR_PlaybackStart"));
DVB_PVR_PlaybackStart(&stPlayParam,0,0);
DVBPVR_MSG(("\n\r After DVB_PVR_PlaybackStart"));
}
void DVB_PVR_TestNormalPlay(void)
{
DVB_PVR_NormalPlay();
}
//p028
void DVB_PVR_TestRecordStop(void)
{
DVB_PVR_RecordStop();
}
#include "dvb_file.h"
//p035
void DVB_PVR_TestSkip(bool8 b8Dir,u16 u16Second)
{
if(b8Dir)
{
DVB_PVR_PlaybackSkip(u16Second);
}
else
{
DVB_PVR_PlaybackSkip(-u16Second);
}
}
//p036
void Sys_profile_on(int resolution)
{
// extern char _stext[], _etext[];
// profile_on(_stext, _etext, 16, 1000);
}
void PVR_ShowUSB(u32 u32Sector)
{
u32 i;
//PVR_USB_Read(u32Sector,1,au8Data);
DVB_USB_Read(u32Sector,1,au8Data);
DVBPVR_MSG(("\n\r Data: \n\r"));
for(i=0;i<512;i++)
{
DVBPVR_MSG(("%02x",au8Data[i]));
if(((i+1)%16)==0)
DVBPVR_MSG(("\n\r"));
}
}
#if 0
u32 DVB_PVR_TimerDifference(void)
{
u32 u32Timer3Value,u32Timer4Value;
static u32 u32TimerDiff = 0;
u32Timer3Value = (*((vu32 *) (0x8000006c)));
CT_SYS_GetStcBaseCounter(&u32Timer4Value);
u32TimerDiff = u32Timer4Value - u32Timer3Value;
return u32TimerDiff;
}
#endif
void DVB_PVR_TestWrite(void)
{
u8 au8FileName[14]="Test.jpg";
u32 u32SourceFileHandle, u32FileHandle, u32SourceSize, u32TempSize;
//u32 u32Size
u32 i;
// u32 au32FileHandle[100];
// for(i=0;i<512*10;i++)
// au8Data[i]=i%255;
u32SourceFileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType,au8FileName,'r');
u32SourceSize = DVB_FILECTRL_GetFileSize(_enPVRDeviceType,u32SourceFileHandle);
// DVB_FILECTRL_FileRead(_enPVRDeviceType,u32SourceFileHandle,u32SourceSize,au8Data);
// DVB_FILECTRL_FileClose(_enPVRDeviceType,u32SourceFileHandle);
u32TempSize = u32SourceSize;
DVBPVR_DBG(("\n\r Start"));
#if 0
for(i=0;i<5;i++)
{
sprintf(au8FileName,"Test%d.jpg",i);
DVB_FILECTRL_FileDelete(_enPVRDeviceType,au8FileName);
au32FileHandle[i] = DVB_FILECTRL_FileOpen(_enPVRDeviceType,au8FileName,'w');
}
while(u32TempSize>0)
{
// DVBPVR_DBG(("\n\r Size %ld",u32TempSize));
if(u32TempSize>=WRITE_DATA_SIZE)
{
DVB_FILECTRL_FileRead(_enPVRDeviceType,u32SourceFileHandle,WRITE_DATA_SIZE,au8Data);
for(i=0;i<5;i++)
{
DVB_FILECTRL_FileWrite(_enPVRDeviceType,au32FileHandle[i],WRITE_DATA_SIZE,au8Data);
}
u32TempSize-=WRITE_DATA_SIZE;
}
else
{
DVB_FILECTRL_FileRead(_enPVRDeviceType,u32SourceFileHandle,u32TempSize,au8Data);
for(i=0;i<5;i++)
{
DVB_FILECTRL_FileWrite(_enPVRDeviceType,au32FileHandle[i],u32TempSize,au8Data);
}
u32TempSize = 0;
}
}
for(i=0;i<5;i++)
{
DVB_FILECTRL_FileClose(_enPVRDeviceType,au32FileHandle[i]);
}
DVB_FILECTRL_FileClose(_enPVRDeviceType,u32SourceFileHandle);
#else
for(i=0;i<100;i++)
{
sprintf(au8FileName,"Test%ld.jpg",i);
// DVB_FILECTRL_FileDelete(_enPVRDeviceType,au8FileName);
u32FileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType,au8FileName,'w');
#if 0
DVB_FILECTRL_FileWrite(_enPVRDeviceType,u32FileHandle,u32SourceSize,au8Data);
#else
while(u32TempSize>0)
{
// DVBPVR_DBG(("\n\r u32TempSize %ld",u32TempSize));
if(u32TempSize>=WRITE_DATA_SIZE)
{
DVB_FILECTRL_FileRead(_enPVRDeviceType,u32SourceFileHandle,WRITE_DATA_SIZE,au8Data);
DVB_FILECTRL_FileWrite(_enPVRDeviceType,u32FileHandle,WRITE_DATA_SIZE,au8Data);
u32TempSize-=WRITE_DATA_SIZE;
}
else
{
DVB_FILECTRL_FileRead(_enPVRDeviceType,u32SourceFileHandle,u32TempSize,au8Data);
DVB_FILECTRL_FileWrite(_enPVRDeviceType,u32FileHandle,u32TempSize,au8Data);
u32TempSize = 0;
}
}
u32TempSize = u32SourceSize;
#endif
DVB_FILECTRL_FileClose(_enPVRDeviceType,u32FileHandle);
DVB_FILECTRL_FileSeek(_enPVRDeviceType,u32SourceFileHandle,0,EN_FILE_START);
}
DVB_FILECTRL_FileClose(_enPVRDeviceType,u32SourceFileHandle);
#endif
DVBPVR_DBG(("\n\r End"));
}
void DVB_PVR_TestRead(void)
{
u8 au8FileName[14]="CTK0.TS";
u32 u32SourceFileHandle,u32SourceSize,u32TempSize;
u32 u32Time1,u32Time2;
#if 0
u8 u8Data[32*512];
DVB_USB_Change_LUN(1);
DVBPVR_DBG(("\n\r START"));
u32Time1 = DVB_TimerGet();
for(u32i=0;u32i<64000;u32i+=4)
{
DVBPVR_DBG(("."));
CT_USB_ReadData(u32i,4,&u8Data);
}
u32Time2 = DVB_TimerGet();
DVBPVR_DBG(("\n\r End %ld",u32Time2 - u32Time1));
u32Time1 = CT_USB_GetTotalReadTime();
u32Time2 = DVB_USB_GetReadTime();
DVBPVR_DBG(("\n\r CT USB %ld, DVB USB %ld",u32Time1,u32Time2));
#if 0
PVR_PLAT_DSU2_CONTROL = 0xa0;
u32SourceFileHandle = DVB_FILECTRL_FileOpen(_enPVRDeviceType,au8FileName,'r');
u32SourceSize = DVB_FILECTRL_GetFileSize(_enPVRDeviceType,u32SourceFileHandle);
DVBPVR_DBG(("\n\r Size %ld",u32SourceSize));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -