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

📄 ifo.h

📁 网络MPEG4IP流媒体开发源代码
💻 H
字号:
#ifndef __IFO_H__#define __IFO_H__#ifndef DVD_VIDEO_LB_LEN#define DVD_VIDEO_LB_LEN 2048#endif#define OFFSET_IFO		0x0000#define OFFSET_VTS		0x0000#define OFFSET_LEN		0x00C0#define IFO_OFFSET_TAT		0x00C0#define OFFSET_VTSI_MAT		0x0080#define IFO_OFFSET_VIDEO	0x0100#define IFO_OFFSET_AUDIO	0x0200#define IFO_OFFSET_SUBPIC	0x0250// for debug and error output/** * Video Info Table  */typedef struct {#if BYTE_ORDER == BIG_ENDIAN	u_char compression      : 2;	u_char system           : 2;	u_char ratio            : 2;	u_char perm_displ       : 2;	u_char line21_1         : 1;	u_char line21_2         : 1;	u_char source_res       : 2;	u_char letterboxed      : 1;	u_char mode             : 1;#else	u_char perm_displ       : 2;	u_char ratio            : 2;	u_char system           : 2;	u_char compression      : 2;	u_char mode             : 1;	u_char letterboxed      : 1;	u_char source_res       : 2;	u_char line21_2         : 1;	u_char line21_1         : 1;#endif} ifo_video_info_t;/** * Audio Table */typedef struct {#if MPEG3_LITTLE_ENDIAN	u_char num_channels	: 3;    // number of channels (n+1)	u_char sample_freq	: 2;    // sampling frequency	u_char quantization	: 2;    // quantization	u_char appl_mode2	: 1;    // audio application mode	u_char appl_mode1	: 1;    // 	u_char type		: 2;    // audio type (language included?)	u_char multichannel_extension: 1;	u_char coding_mode	: 2;#else	u_char appl_mode2	: 1;	u_char quantization	: 2;	u_char sample_freq	: 2;	u_char num_channels	: 3;	u_char coding_mode	: 2;	u_char multichannel_extension: 1;	u_char type		: 2;	u_char appl_mode1	: 1;#endif	u_short lang_code	: 16;   // <char> description	u_int   foo		: 8;    // 0x00000000 ?	u_int   caption		: 8;	u_int   bar		: 8;    // 0x00000000 ?} ifo_audio_t;#define IFO_AUDIO_LEN 7/** * Subpicture Table */typedef struct {	u_short prefix  : 16;           // 0x0100 ?	u_short lang_code : 16;         // <char> description	u_char foo      : 8;            // dont know	u_char caption  : 8;            // 0x00 ?} ifo_spu_t;/** * Time Map Table header entry */#if 0typedef struct {	u_char  tu		: 16;    // time unit (in seconds)	u_int			: 16;   // don't know} ifo_tmt_hdr_t;#endiftypedef struct {	u_int			: 24;   // don't know	u_char  tu		: 8;    // time unit (in seconds)} ifoq_tmt_hdr_t;//#define IFO_TMT_HDR_LEN 4#define IFOQ_TMT_HDR_LEN 1/** * hmm */typedef struct {        u_short vob_id          : 16;   // Video Object Identifier        u_char  cell_id         : 8;    // Cell Identifier        u_char                  : 8;    // don't know        u_int   start           : 32;   // Cell start        u_int   end             : 32;   // Cell end} ifo_cell_addr_t;typedef struct {	u_short vob_id		: 16;	// Video Object Identifier	u_short cell_id		: 16;	// Cell Identifier} ifo_pgc_cell_pos_t;/** * Part of Title AND Title set Cell Address */typedef struct {	u_short pgc;		// Program Chain (PTT)	u_short pg;		// Program (PTT)	u_long	start;		// Start of VOBU (VTS? CADDR)	u_long	end;		// End of VOBU (VTS? CADDR)} ifo_ptt_data_t;typedef struct {	u_int num;		// Number of Chapters	ifo_ptt_data_t *data;	// Data} ifo_ptt_sub_t;typedef struct {	u_int num;		// Number of Titles	ifo_ptt_sub_t *title;	// Titles} ifo_ptt_t;typedef struct {	u_char	chain_info	: 8; // 0x5e 0xde(2 angles, no overlay), 0x5f 0x9f 0x9f 0xdf(4 angles overlay), 0x2 0xa 0x8(1 angle)	u_char	foo		: 8; // parent control ??	u_char	still_time	: 8;	u_char	cell_cmd	: 8;        //u_int   foo             : 32;        u_int   len_time        : 32;        u_int   vobu_start      : 32;   // 1st vobu start        u_int   ilvu_end        : 32;        u_int   vobu_last_start : 32;        u_int   vobu_last_end   : 32;} ifo_pgci_cell_addr_t;#define PGCI_CELL_ADDR_LEN 24#define ID_NUM_MENU_VOBS 0#define ID_NUM_TITLE_VOBS 1#define ID_MAT			0#define ID_PTT			1#define ID_TSP			1#define ID_TITLE_PGCI		2#define ID_MENU_PGCI		3#define ID_TMT			4#define ID_MENU_CELL_ADDR	5#define ID_MENU_VOBU_ADDR_MAP	6#define ID_TITLE_CELL_ADDR	7#define ID_TITLE_VOBU_ADDR_MAP 	8/** * Information Table - for internal use only */ typedef struct {	u_int num_menu_vobs;	u_int vob_start;	u_char *data[10];		int fd;		// file descriptor	int64_t pos;	// offset of ifo file on device } ifo_t;/** * Generic header */#define IFO_HDR_LEN 8#define IFOQ_HDR_LEN 2typedef struct {        u_short num     : 16;   // number of entries        u_short         : 16;   // don't known (reserved?)        u_int   len     : 32;   // length of table} ifo_hdr_t;typedef struct {        u_short         : 16;   // don't known (reserved?)        u_short num     : 16;   // number of entries        u_int   len     : 32;   // length of table} ifoq_hdr_t;/** * Prototypes */ifo_t *ifoOpen (int fd, int64_t pos);int ifoClose (ifo_t *ifo);u_int ifoGetVOBStart	(ifo_t *ifo);int ifoGetNumberOfTitles (ifo_t *ifo);int ifoGetNumberOfParts (ifo_t *ifo);int ifoGetVMGPTT	(ifo_hdr_t *hdr, char **ptr);int ifoGetPGCI		(ifo_hdr_t *hdr, int title, char **ptr);int ifoGetCLUT		(char *pgc, char **ptr);u_int ifoGetCellPlayInfo	(u_char *pgc, u_char **ptr);u_int ifoGetCellPos	(u_char *pgc, u_char **ptr);int ifoGetProgramMap	(char *pgc, char **ptr);int ifoGetCellAddr	(char *cell_addr, char **ptr);int ifoGetCellAddrNum	(char *hdr);int ifoGetAudio		(char *hdr, char **ptr);int ifoGetSPU		(char *hdr, char **ptr);ifo_ptt_t *ifo_get_ptt (ifo_t *ifo);int ifo_get_num_title_pgci (ifo_t *ifo);u_char *ifo_get_ptr_title_pgci (ifo_t *ifo, int index);char *ifoDecodeLang (u_short descr);int ifoIsVTS (ifo_t *ifo);int ifoIsVMG (ifo_t *ifo);void ifoPrintVideo		(u_char *ptr);void ifoPrintCellPlayInfo	(u_char *ptr, u_int num);void ifoPrintCellInfo		(u_char *ptr, u_int num);void ifoPrintCellPos		(u_char *ptr, u_int num);void ifoPrintCLUT		(u_char *ptr); void ifoPrintProgramMap		(u_char *ptr, u_int num);#ifdef PARSERvoid ifoPrintAudio		(ifo_audio_t *ptr, u_int num);void ifoPrintSPU		(ifo_spu_t *ptr, u_int num);void ifoPrintTMT		(ifo_t *ifo);void ifoPrintVMOP		(u_char *opcode);void ifoPrint_ptt (ifo_ptt_t *ptt);void ifoPrint_vts_vobu_addr_map (ifo_t *ifo);void ifoPrint_vtsm_vobu_addr_map (ifo_t *ifo);void ifoPrint_vts_cell_addr (ifo_t *ifo);void ifoPrint_vtsm_cell_addr (ifo_t *ifo);void ifoPrint_title_pgci (ifo_t *ifo);void ifoPrint_pgc_cmd (u_char *pgc_ptr);void ifoPrintTSP (u_char *toast);void ifoPrint_pgc (u_char *ptr);#endif#endif

⌨️ 快捷键说明

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