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

📄 msapi_demux.h

📁 mstar 776 开发的车载dvd
💻 H
字号:
/**************************************************************************************************


        Author: Timothy Hsu / HDTV
        << MStar demux api >>


**************************************************************************************************/
#ifndef _MSAPI_DMX_H
#define _MSAPI_DMX_H

#include "datatype.h"
#include "debug.h"

/*definition ====================================================================================*/
#define MSAPI_DMX_MAX_FILTER_NUMBER			40/*DRV_SF_MAX_FLT_NUMBER*/
#define MSAPI_DMX_MATCH_PATTERN_LENGTH		16/*HW_SF_MATCH_PATTERN_LENGTH*/

#define MSAPI_DMX_INVALID_FLT_ID			0xff
#define MSAPI_DMX_TIMEOUT_INFINITE			0xffff
#define MSAPI_DMX_INVALID_PID				0x1fff
#define MSAPI_DMX_INVALID_PCR				0xffffffff
#define MSAPI_DMX_INVALID_TS_RATE			0xffffffff

#define MSAPI_DMX_DONT_CARE_TABLE_ID		0xff
#define MSAPI_DMX_DONT_CARE_SUB_TABLE_ID	0xffff
#define MSAPI_DMX_DONT_CARE_SECTION_NUM		0xff
#define MSAPI_DMX_DONT_CARE_EXTEND_ID		0xffffffff

#define MSAPI_DMX_SECTION_1K  				1024/*HW_SF_SECTION_1K*/
#define MSAPI_DMX_SECTION_4K  				4096/*HW_SF_SECTION_4K*/

/*enumeration ===================================================================================*/
//<<filter state>>===============================================================================//
typedef enum
{
	MSAPI_DMX_FILTER_STATE_CLOSED			=  0,
	MSAPI_DMX_FILTER_STATE_INITIAL			=  1,
	MSAPI_DMX_FILTER_STATE_SET				=  2,
	MSAPI_DMX_FILTER_STATE_READY			=  4,
	MSAPI_DMX_FILTER_STATE_RUNNING			=  8,
	MSAPI_DMX_FILTER_STATE_GOTDATA			= 16,
	MSAPI_DMX_FILTER_STATE_GOTPES			= 17,
	MSAPI_DMX_FILTER_STATE_TIMEOUT			= 18,
	MSAPI_DMX_FILTER_STATE_OVERFLOW			= 19,
	MSAPI_DMX_FILTER_STATE_CRCCORRECT		= 32,
	MSAPI_DMX_FILTER_STATE_CRCINCORRECT		= 33,
	MSAPI_DMX_FILTER_STATE_STOP				= 64
}MSAPI_DMX_FILTER_STATE;

//<<filter status>>==============================================================================//
typedef enum
{
	MSAPI_DMX_FILTER_STATUS_OK				=  1,
	MSAPI_DMX_FILTER_STATUS_TIMEOUT			=  2,
	MSAPI_DMX_FILTER_STATUS_SECAVAILABLE	=  3,
	MSAPI_DMX_FILTER_STATUS_CRCINCORRECT	=  4,
	MSAPI_DMX_FILTER_STATUS_REQUESTMEET		=  5,
	MSAPI_DMX_FILTER_STATUS_PESAVAILABLE	=  6,
	MSAPI_DMX_FILTER_STATUS_COPYSECERR		=  7,
	MSAPI_DMX_FILTER_STATUS_OVERFLOW		=  8,
	MSAPI_DMX_FILTER_STATUS_ERROR			=  9
}MSAPI_DMX_FILTER_STATUS;

//<<filter type>>================================================================================//
typedef enum
{
	MSAPI_DMX_FILTER_TYPE_VIDEO				=  1,		//to   video    fifo
	MSAPI_DMX_FILTER_TYPE_AUDIO				=  2,		//to   audio    fifo
	MSAPI_DMX_FILTER_TYPE_SUBTITLE			=  3,		//to   subtitle buffer
	MSAPI_DMX_FILTER_TYPE_TELETEXT			=  4,		//to   teletext buffer
	MSAPI_DMX_FILTER_TYPE_PES				=  5,		//to   section  buffer
	MSAPI_DMX_FILTER_TYPE_SECTION_1K		=  6,		//to   section  buffer
	MSAPI_DMX_FILTER_TYPE_SECTION_4K		=  7,		//to   section  buffer
	MSAPI_DMX_FILTER_TYPE_PCR				=  8,		//no   output
	MSAPI_DMX_FILTER_TYPE_PACKET			=  9,		//to   section  buffer
	MSAPI_DMX_FILTER_TYPE_PACKET_PUSI       = 10,       //to   section  buffer
	MSAPI_DMX_FILTER_TYPE_OAD				= 11,		//to   oad      buffer
	MSAPI_DMX_FILTER_TYPE_RECORD			= 12,		//to   record   buffer
	MSAPI_DMX_FILTER_TYPE_PLAYBACK          = 13        //from playback buffer
}MSAPI_DMX_FILTER_TYPE;

//<<scrambling type>>============================================================================//
typedef enum
{
	MSAPI_DMX_SCRAMBLING_FREE				=  1,		//no scrambling
	MSAPI_DMX_SCRAMBLING_PACKET				=  2,		//packet layer scrambling
	MSAPI_DMX_SCRAMBLING_PES				=  3,		//pes layer scrambling
	MSAPI_DMX_SCRAMBLING_UNKNOWN			=  4		//unknown
}MSAPI_DMX_SCRAMBLING_TYPE;

/*data structure ================================================================================*/
//<<section monitor parameter>>==================================================================//
typedef struct msAPI_Dmx_SectionMonitor_Para
{
	U16 u16PID;
	MSAPI_DMX_FILTER_TYPE enSectionFltType;
	U8 au8MatchByte[MSAPI_DMX_MATCH_PATTERN_LENGTH];
	U8 au8MaskByte[MSAPI_DMX_MATCH_PATTERN_LENGTH];
	U8 au8NotMatchByte[MSAPI_DMX_MATCH_PATTERN_LENGTH];
	void (*pfNotify)(U8 u8FID, MSAPI_DMX_FILTER_STATUS enFilterStatus);
	U16 u16TimeoutMilliSec;
	BOOLEAN bOneShot;
	U8* pu8FID;
}_msAPI_Dmx_SectionMonitor_Para;

//<<section get parameter>>======================================================================//
typedef struct msAPI_Dmx_SectionGet_Para
{
	U16 u16PID;
	MSAPI_DMX_FILTER_TYPE enSectionFltType;
	U8 au8MatchByte[MSAPI_DMX_MATCH_PATTERN_LENGTH];
	U8 au8MaskByte[MSAPI_DMX_MATCH_PATTERN_LENGTH];
	U8 au8NotMatchByte[MSAPI_DMX_MATCH_PATTERN_LENGTH];
	U8* pu8Section;
	U16 u16MaxSecSize;
	U16 u16TimeoutMilliSec;
	BOOLEAN bCheckCrc;
}_msAPI_Dmx_SectionGet_Para;

/*function ======================================================================================*/
#ifdef MSAPI_DMX
#define MSAPI_DMX_INTERFACE
#else
#define	MSAPI_DMX_INTERFACE extern
#endif

MSAPI_DMX_INTERFACE MSAPI_DMX_FILTER_STATUS msAPI_DMX_SectionMonitor(_msAPI_Dmx_SectionMonitor_Para * pstSectionMonitor);
MSAPI_DMX_INTERFACE MSAPI_DMX_FILTER_STATUS msAPI_DMX_SectionGet(_msAPI_Dmx_SectionGet_Para * pstSectionGet);
MSAPI_DMX_INTERFACE MSAPI_DMX_FILTER_STATUS msAPI_DMX_StartFilter(U16 u16Pid, MSAPI_DMX_FILTER_TYPE enFltType, U8 *pu8FID);
MSAPI_DMX_INTERFACE MSAPI_DMX_FILTER_STATUS msAPI_DMX_ScramblingMonitor(U16 u16PID, U16 u16TimeoutMilliSec, void (*pfNotify)(U8 u8FID, MSAPI_DMX_FILTER_STATUS enFilterStatus), U8* pu8FID, BOOLEAN bPesHeaderOnly);
MSAPI_DMX_INTERFACE MSAPI_DMX_SCRAMBLING_TYPE msAPI_DMX_ScramblingGet(U16 u16PID, U16 u16TimeoutMilliSec, U8* pu8Packet, U16 u16MaxPacketSize);
MSAPI_DMX_INTERFACE BOOLEAN msAPI_DMX_Initial(void);

#if (PLATFORM == MCU8051) //================================================<<<
MSAPI_DMX_INTERFACE void msAPI_DMX_Semaphore_Reset(void);
#endif//PLATFORM_MCU8051 //=================================================>>>

MSAPI_DMX_INTERFACE U8 msAPI_DMX_Open(MSAPI_DMX_FILTER_TYPE enFltType);
MSAPI_DMX_INTERFACE void msAPI_DMX_SetPid(U8 u8FID, U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_SetPattern1(U8 u8FID, U8* pu8Match, U8* pu8Mask, U8* pu8NotMatch);
MSAPI_DMX_INTERFACE void msAPI_DMX_SetPattern2(U8 u8FID, U8 u8TableID, U16 u16SubTableID, U8 u8SectionNum, U32 u32ExtendID);
MSAPI_DMX_INTERFACE void msAPI_DMX_SetTimer(U8 u8FID, U16 u16TimeoutMilliSec, BOOLEAN b8OneShot);
MSAPI_DMX_INTERFACE void msAPI_DMX_SetNotify(U8 u8FID, void (*pfNotify)(U8 u8FID, MSAPI_DMX_FILTER_STATUS enFilterStatus));

#if (PLATFORM != MCU8051) //================================================<<<
MSAPI_DMX_INTERFACE void msAPI_DMX_SetDeCsa(U8 u8FID, U8 *control_word, U8 Layer);
#endif//PLATFORM_MCU8051 //=================================================>>>

MSAPI_DMX_INTERFACE void msAPI_DMX_Reset(U8 u8FID);
MSAPI_DMX_INTERFACE void msAPI_DMX_Start(U8 u8FID);
MSAPI_DMX_INTERFACE BOOLEAN msAPI_DMX_MonitorStateChange(U8 u8FID);
MSAPI_DMX_INTERFACE void msAPI_DMX_Polling(void);

#if (PLATFORM == WINDOWS) //================================================<<<
MSAPI_DMX_INTERFACE unsigned __stdcall msAPI_DMX_Thread(void* param);
#endif//PLATFORM_WINDOWS //=================================================>>>

MSAPI_DMX_INTERFACE BOOLEAN msAPI_DMX_CopySection(U8 u8FID, U8* pu8Section, U16 u16MaxLength);
MSAPI_DMX_INTERFACE BOOLEAN msAPI_DMX_CopyPacket(U8 u8FID, U8* pu8Packet, U16 u16MaxLength);

#if (PLATFORM != MCU8051) //================================================<<<
MSAPI_DMX_INTERFACE U16 msAPI_DMX_CopyPes(U8 u8FID, U8* pu8Pes, U16 u16CopyLength, U8 u8PesComplete);
#else //<<<=================================================================>>>
MSAPI_DMX_INTERFACE U16 msAPI_DMX_CopyPes(U8 u8FID, U32 pu8Pes, U16 u16CopyLength, U8 u8PesComplete);
#endif//PLATFORM_MCU8051 //=================================================>>>

MSAPI_DMX_INTERFACE BOOLEAN msAPI_DMX_CheckCRC32(U8* pu8Section);
MSAPI_DMX_INTERFACE void msAPI_DMX_Stop(U8 u8FID);
MSAPI_DMX_INTERFACE void msAPI_DMX_Close(U8 u8FID);
MSAPI_DMX_INTERFACE U8 msAPI_DMX_GetFree1KFilterNo(void);
MSAPI_DMX_INTERFACE U8 msAPI_DMX_GetFree4KFilterNo(void);
MSAPI_DMX_INTERFACE MSAPI_DMX_FILTER_STATE msAPI_DMX_GetFilterState(U8 u8FID);
MSAPI_DMX_INTERFACE U16 msAPI_DMX_GetFilterPID(U8 u8FID);

#if (PLATFORM == MCU8051) //================================================<<<
MSAPI_DMX_INTERFACE BOOLEAN msAPI_DMX_LifeInsurance(void);
#endif//PLATFORM_MCU8051 //=================================================>>>

#if (PLATFORM == MCU8051) //================================================<<<
MSAPI_DMX_INTERFACE void msAPI_DMX_EnableReserveFlt(BOOLEAN enable);
#endif//PLATFORM_MCU8051 //=================================================>>>

#if ((PLATFORM == MCU8051) && BUILD_SYSDEBUG) //============================<<<
MSAPI_DMX_INTERFACE void msAPI_DMX_GetSections(U16 u16PID, U8 u8TableID);
MSAPI_DMX_INTERFACE void msAPI_DMX_TestSection(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetPackets(U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetPes(U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_Recording(U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_Playbacking(U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_ShowStatusAll(void);
#endif // (PLATFORM_MCU8051 && BUILD_SYSDEBUG) //===========================>>>

#if (PLATFORM != MCU8051) //================================================<<<
MSAPI_DMX_INTERFACE void msAPI_DMX_ShowStatusAll(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_TestSection(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_TestPacket(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_TestCsa1(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_TestCsa2(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetSections(U16 u16PID, U8 u8TableID);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetPackets(U16 u16PID);
MSAPI_DMX_INTERFACE U32 msAPI_DMX_ScopePackets(U16 u16PID);
MSAPI_DMX_INTERFACE U32 msAPI_DMX_MeasureTsRate(U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetPes(U16 u16PID);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetEmmEcm(U16 u16PID);
MSAPI_DMX_INTERFACE U32 msAPI_DMX_GetPcr(U16 u16PID);
#endif//PLATFORM_MCU8051 //=================================================>>>

#if ((PLATFORM != MCU8051) || BUILD_SYSDEBUG) //============================<<<
MSAPI_DMX_INTERFACE void msAPI_DMX_PlayAv(U16 u16VPID, U16 u16APID, U16 u16PcrPID);
MSAPI_DMX_INTERFACE void msAPI_DMX_StatusAv(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_StopAv(void);
MSAPI_DMX_INTERFACE void msAPI_DMX_PlayTtx(U16 u16TtxPID);
MSAPI_DMX_INTERFACE void msAPI_DMX_DumpTtx(U16 u16TtxPID);
MSAPI_DMX_INTERFACE void msAPI_DMX_GetOad(U16 u16OadPID);
#endif// (PLATFORM_MCU8051 || BUILD_SYSDEBUG) //============================>>>

/*===============================================================================================*/


#endif	/*_MSAPI_DMX_H END */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -