⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvb_pvr.c

📁 DVB软件,基于CT216软件的开发源程序.
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -