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

📄 dvd_define.h

📁 AMLOGIC DPF source code
💻 H
📖 第 1 页 / 共 4 页
字号:
/*************************************************************************
**                                                                      **
**  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 + -