📄 dvd_define.h
字号:
/*************************************************************************
** **
** Copyright (C) 2005 Amlogic,Inc. **
** All rights reserved **
** Filename : Dvd_define.h / Group:DvdNavigation / Project: AVOS **
** Revision : 2.0 **
** **
*************************************************************************/
#ifndef DVD_DEFINE_H
#define DVD_DEFINE_H
#include "includes.h"
#include "aw_windows.h"
#include "datasrc.h"
/***************************** Define ********************************/
/*
_Define()
*/
#ifndef __ROM_
#define _PRINT1(a,b) if(a) printf("%s",b);
#define _PRINT2(a,b,c) if(a) printf(b,c);
#define _PRINT3(a,b,c,d) if(a) printf(b,c,d);
#define _PRINT4(a,b,c,d,e) if(a) printf(b,c,d,e);
#define _PRINT5(a,b,c,d,e,f) if(a) printf(b,c,d,e,f);
#define _PRINT6(a,b,c,d,e,f,g) if(a) printf(b,c,d,e,f,g);
#else
#define _PRINT1(a,b)
#define _PRINT2(a,b,c)
#define _PRINT3(a,b,c,d)
#define _PRINT4(a,b,c,d,e)
#define _PRINT5(a,b,c,d,e,f)
#define _PRINT6(a,b,c,d,e,f,g)
#endif
#define EndianConvert_4(y) (((y & 0xff) << 24)|(((y>>8) & 0xff) << 16)|(((y>>16) & 0xff) << 8) | ((y>>24) & 0xff))
#define EndianConvert_2(y) (((y & 0xff) << 8) | ((y>>8) & 0xff))
#define MAX_POINT 12
#define INTERVAL_TM 20
#define MAX_UT_32K 32768
#define MAX_UT_48K 49152
#define MAX_PGCI_SIZE 8508
#define MAX_TMAP_SIZE 8196
#define SPU_STACK_DEPTH 50
//For Navigation Command
//Compare options
#define BC 0x1
#define EQ 0x2
#define NE 0x3
#define GE 0x4
#define GT 0x5
#define LE 0x6
#define LT 0x7
//GoTo options
#define NOP 0x0
#define GOTO 0x1
#define BREAK 0x2
#define SETTMPPML 0x3
//Link options
#define LINKSINS 0x1
#define LINKPGCN 0x4
#define LINKPTTN 0x5
#define LINKPGN 0x6
#define LINKCN 0x7
//Jump options
#define EXIT 0x1
#define JUMPTT 0x2
#define JUMPVTS_TT 0x3
#define JUMPVTS_PTT 0x5
#define JUMPSS 0x6
#define CALLSS 0x8
//SetSystem options
#define SETSTN 0x1
#define SETNVTMR 0x2
#define SETGPRMMD 0x3
#define SETAMXMD 0x4
#define SETHL_BTNN 0x6
//Set options
#define MOV 0x1
#define SWP 0x2
#define ADD 0x3
#define SUB 0x4
#define MUL 0x5
#define DIV 0x6
#define MOD 0x7
#define RND 0x8
#define AND 0x9
#define OR 0xa
#define XOR 0xb
//Link sub-instructions
#define LINKNOLINK 0x0
#define LINKTOPC 0x1
#define LINKNEXTC 0x2
#define LINKPREVC 0x3
#define LINKTOPPG 0x5
#define LINKNEXTPG 0x6
#define LINKPREVPG 0x7
#define LINKTOPPGC 0x9
#define LINKNEXTPGC 0xa
#define LINKPREVPGC 0xb
#define LINKGOUPPGC 0xc
#define LINKTAILPGC 0xd
#define RSM 0x10
//UOP Control
#define UOP0_ENABLE 0x00000001 //Time_Play(), Time_Search()
#define UOP1_ENABLE 0x00000002 //PTT_Play(), PTT_Search()
#define UOP2_ENABLE 0x00000004 //Title_Play()
#define UOP3_ENABLE 0x00000008 //Stop()
#define UOP4_ENABLE 0x00000010 //GoUp()
#define UOP5_ENABLE 0x00000020 //Time Search(), PTT_Search()
#define UOP6_ENABLE 0x00000040 //PrevPG_Search(), TopPG_Search()
#define UOP7_ENABLE 0x00000080 //NextPG_Search()
#define UOP8_ENABLE 0x00000100 //Forward_Scan()
#define UOP9_ENABLE 0x00000200 //Backward_Scan()
#define UOP10_ENABLE 0x00000400 //Menu_Call(Title)
#define UOP11_ENABLE 0x00000800 //Menu_Call(Root)
#define UOP12_ENABLE 0x00001000 //Menu_Call(Sub-picture)
#define UOP13_ENABLE 0x00002000 //Menu_Call(Audio)
#define UOP14_ENABLE 0x00004000 //Menu_Call(Angle)
#define UOP15_ENABLE 0x00008000 //Menu_Call(PTT)
#define UOP16_ENABLE 0x00010000 //Resume()
#define UOP17_ENABLE 0x00020000 //Uppser_Button_Select(), Lower_Button_Select(), Left_Button_Select(), Right_Button_Select(), Button_Active(), Button_Select_and_Active()
#define UOP18_ENABLE 0x00040000 //Still_Off()
#define UOP19_ENABLE 0x00080000 //Pause_On()
#define UOP20_ENABLE 0x00100000 //Audio_Stream_Change()
#define UOP21_ENABLE 0x00200000 //Sub-picture_Stream_Change()
#define UOP22_ENABLE 0x00400000 //Angle_Change()
#define UOP23_ENABLE 0x00800000 //Karaoke_Audio_Presentation_Mode_Change()
#define UOP24_ENABLE 0x01000000 //
//For NextMission
#define Do_NOP 0x0
#define Do_Process_FPDomain 0x1
#define Do_Process_TTDomain 0x2
#define Do_Process_VTSMDomain 0x3
#define Do_Process_VMGMDomain 0x4
#define Do_STOP 0x5
//For NeedDomain
#define RETURN_TO_DOMAIN 0x1 // All Area
#define GOTO_POST_CMD 0x2 // Only in Cell Command Area and Button Command Area
#define RESUME 0x3 // All Area
#define CELL_CHANGED 0x4 // All Area
#define PGC_CHANGED 0x5 // Only in Cell Command Area and Button Command Area
#define PG_CHANGED 0x6 // Only used in Random/Shuffle mode
//Menu ID
#define TITLE_MENU_ID 0x2
#define ROOT_MENU_ID 0x3
#define SUB_PICTURE_MENU_ID 0x4
#define AUDIO_MENU_ID 0x5
#define ANGLE_MENU_ID 0x6
#define PTT_MENU_ID 0x7
//For VOBU Status
#define VOBU_PB_IDLE 0x0
#define VOBU_PB_START 0x1
#define VOBU_PCIDSI 0x2
#define VOBU_SENDING 0x3
#define VOBU_DUMP_DATA 0x4
#define VOBU_DUMP_DONE 0x5
//For Playback Status
#define PLAY_IDLE 0x0
#define PLAY_SENDING 0x1
#define PLAY_START 0x2
#define PLAY_PCIDSI 0x4
#define PLAY_VOBU_END 0x5
#define PLAY_NEXT_VOBU 0x6
#define PLAY_CELL_END 0x7
#define REACH_A_POINT 0x8
#define REACH_B_POINT 0x9
#define PLAY_VOBU_ONLY 0xa
#define PLAY_VOBU_STILL 0xb
//For still_status
#define NO_STILL 0x0
#define IN_VOBU_STILL 0x1
#define IN_CELL_STILL 0x2
#define IN_PGC_STILL 0x3
/***************************** Typedef *******************************/
/*
_Typedef()
*/
#define __packed
//DVD Core Data Structure
//For PGC
#pragma Pack(1)
typedef __packed struct
{
unsigned reserved: 16;
unsigned display_mode: 2;
unsigned aspect_ratio: 2;
unsigned tv_system: 2;
unsigned video_compression_mode: 2;
unsigned film_camera_mode: 1;
unsigned reserved1: 1;
unsigned source_picture_letterboxed: 1;
unsigned source_picture_resolution: 3;
unsigned line21_switch_2: 1;
unsigned line21_switch_1: 1;
}v_atr;
typedef __packed struct
{
unsigned audio_application_mode: 2;
unsigned audio_type: 2;
unsigned multichannel_extension: 1;
unsigned audio_coding_mode: 3;
unsigned audio_channel_ns: 3;
unsigned reserved1: 1;
unsigned fs: 2;
unsigned quantization_drc: 2;
unsigned specific_code: 16; /* big endian */
unsigned char reserved;
unsigned char specific_code_extension;
unsigned char reserved2;
unsigned char application_information;
}ast_atr;
typedef __packed struct
{
unsigned sub_picture_type: 2;
unsigned reserved: 3;
unsigned sub_picture_coding_mode: 3;
unsigned reserved1: 8;
unsigned specific_code: 16; /* big endian */
unsigned char reserved2;
unsigned char specific_code_extension;
}spst_atr;
typedef __packed struct
{
unsigned hour_unit: 4;
unsigned hour_ten: 4;
unsigned minute_unit: 4;
unsigned minute_ten: 4;
unsigned second_unit: 4;
unsigned second_ten: 4;
unsigned frame_unit: 4;
unsigned frame_ten: 2;
unsigned tc_flag: 2;
} pb_tm; /* 4 bytes */
typedef __packed struct
{
unsigned reserved: 8;
unsigned Y: 8;
unsigned Cr: 8;
unsigned Cb: 8;
} pgc_sp_pl; /* 4 bytes */
typedef __packed struct
{
__packed struct /* modify */
{
unsigned short reserved;
unsigned char number_of_programs; /* val:max 99 */
unsigned char number_of_cells; /* val:max 255 */
} pgc_cnt; /* 4 bytes */
pb_tm pgc_pb_tm; /* 4 bytes */
unsigned pgc_uop_ctl; /* 4 bytes */
unsigned short pgc_ast_ctl[8]; /* 16 bytes */
unsigned pgc_spst_ctl[32]; /* 128 bytes */
__packed struct
{
unsigned short next_pgcn;
unsigned short previous_pgcn;
unsigned short goup_pgcn;
unsigned char pg_playback_mode;
unsigned char still_time_value;
} pgc_nv_ctl; /* 8 bytes */
pgc_sp_pl pgc_sp_pl[16]; /* 64 bytes */
unsigned short pgc_cmdt_sa;
unsigned short pgc_pgmap_sa;
unsigned short c_pbit_sa;
unsigned short c_posit_sa; /* 8 bytes */
} pgc_gi; /* total 236 bytes */
typedef __packed struct
{
unsigned short pre_cmd_ns;
unsigned short post_cmd_ns;
unsigned short c_cmd_ns;
unsigned short pgc_cmd_ea; /* 8 bytes */
unsigned command[256]; /* 1024 bytes */
} pgc_cmdt; /* total 1032 bytes */
typedef __packed struct
{
__packed struct
{
unsigned seamless_angle_change_flag: 1;
unsigned stc_discontinuity_flag: 1;
unsigned interleaved_allocation_flag: 1;
unsigned seamless_playbackflag: 1;
unsigned cell_block_type: 2;
unsigned cell_block_mode: 2;
unsigned cell_type: 5;
unsigned access_restriction_flag: 1;
unsigned cell_playback_mode: 1;
unsigned reserved: 1;
unsigned cell_still_time: 8;
unsigned cell_command_number: 8;
} c_cat;
pb_tm c_pbtm;
unsigned c_fvobu_sa;
unsigned c_filvu_ea;
unsigned c_lvobu_sa;
unsigned c_lvobu_ea;
} c_pbi; /* total 24 bytes */
typedef __packed struct
{
unsigned short c_vob_idn;
unsigned char rserved;
unsigned char c_idn;
} c_posi;
typedef __packed struct
{
unsigned y01;
unsigned y23;
unsigned cb01;
unsigned cb23;
unsigned cr01;
unsigned cr23;
unsigned start_x;
unsigned start_y;
}pgc_osd2_info;
typedef __packed struct
{
pgc_gi pgc_gi; /* 236 bytes */
pgc_cmdt pgc_cmdt; /* 1032 bytes */
unsigned char en_cn[100]; /* max 99 + 1 pad */ /* 100 bytes */
c_pbi c_pbit[255]; /* max 255 */ /* 6120 bytes */
c_posi c_posit[255]; /* max 255 */ /* 1020 bytes */
unsigned char shuffle[100]; /* 128 */
unsigned short pgc_no;
unsigned char pg_no;
unsigned char menu_id;
unsigned char cell_no;
unsigned char next_cell_no;
unsigned char loopcount;
unsigned char action;
unsigned char play_status;
unsigned short pgc_sp_pl_color[16];
pgc_osd2_info pgc_hl_pl;
pgc_osd2_info pgc_osd2;
unsigned VOBSStart;
v_atr v_atr;
ast_atr ast_atr;
spst_atr spst_atr;
} PGC; /* total : 8508 bytes */
#pragma Pack()
//For VMGI
#pragma Pack(1)
typedef __packed struct
{
unsigned char vmg_identifier[12];
unsigned vmg_ea; /* end address of the VMG,big endian */
unsigned char reserved0[12];
unsigned vmgi_ea; /* end address of the VMGI,big endian */
unsigned char version_reserve;
unsigned char version;
__packed struct
{
unsigned char vmg_cat_reserved1;
unsigned char rma;
unsigned char vmg_cat_reserved2;
unsigned char vmg_cat_reserved3;
} vmg_cat;
__packed struct
{
unsigned short vlms_nos; /* big endian */
unsigned short vlms_no; /* big endian */
unsigned char disc_side;
unsigned char vlms_reserved[3];
} vlms_id;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -