📄 dvd_pgci.h
字号:
/*****************************************************************************
******************************************************************************
** **
** Copyright (c) 2003 Videon Central, Inc. **
** All rights reserved. **
** **
** The computer program contained herein contains proprietary information **
** which is the property of Videon Central, Inc. The program may be used **
** and/or copied only with the written permission of Videon Central, Inc. **
** or in accordance with the terms and conditions stipulated in the **
** agreement/contract under which the programs have been supplied. **
** **
******************************************************************************
*****************************************************************************/
/**
* @file dvd_pgci.h
*
* Structure definitions to parse the PGCI DVD data. All structures and
* algorithms based on the DVD Part 3 Video Specification Version 1 PGCI
* information is in Section 4.3.
*
* $Id: dvd_pgci.h,v 1.5 2006/10/17 14:13:08 rbehe Exp $
*/
#ifndef _DVD_PGCI_H
#define _DVD_PGCI_H
#ifdef __cplusplus
extern "C" {
#endif
#include "dvd_cmd.h"
#include "dvd_vmgi.h"
enum pgc_domains
{
FP_PGC, /* first-play PGC */
VMGM_PGC, /* video manager menu PGC */
VTSM_PGC, /* video title set menu PGC */
TT_PGC /* title PGC */
};
/* Program Chain Navigation control */
typedef struct _pgc_nv_ctl
{
USHORT next_pgcn; /* Next PGCN in the same TT_DOM */
USHORT previous_pgcn; /* Previous PGCN in the same TT_DOM */
USHORT goup_pgcn; /* GoUp PGCN which is in the same domain as */
/* this PGC */
UBYTE pg_playback_mode; /* Describes playback mode */
UBYTE still_time_value; /* 0 - No Still 255 - infinite still */
} pgc_nv_ctl_struct;
/* color palette */
typedef struct _palette
{
UBYTE y; /* Lumaninace Signal */
UBYTE cr; /* Color Difference Signal Cr = R - Y */
UBYTE cb; /* Color Difference Signal Cb = B - Y */
} palette;
/* Program Chain General Information (PGC_GI) Structure */
typedef struct _pgc_gi
{
UBYTE pgc_cnt[4]; /* Describes content of PGC */
UBYTE pgc_pb_tm[4]; /* Describes Total Time Presentation */
UBYTE pgc_uop_ctl[4]; /* Prohibited User Operations */
UBYTE pgc_ast_ctlt[MAX_AUDIO_CH][2]; /* Audio Stream */
/* Availability flags */
UBYTE pgc_spst_ctlt[MAX_SP_CH][4]; /* Sub-picture availability */
pgc_nv_ctl_struct pgc_nv_ctl; /* Navigation control information */
palette pgc_sp_plt[MAX_COLORS]; /* Sub picture palette */
USHORT pgc_cmdt_sa; /* Command Table start address */
USHORT pgc_pgmap_sa; /* Program map start address */
USHORT c_pbit_sa; /* Cell playback info table SA */
USHORT c_posit_sa; /* Cell position info table SA */
} pgc_gi_struct;
/* C_PBI Cell playback information */
typedef struct _c_pbi
{
UBYTE c_cat[4]; /* Cell Category */
UBYTE c_pbtm[4]; /* Cell Playback Time */
ULONG c_fvobu_sa; /* Start Address of the first VOBU in the cell */
ULONG c_filvu_ea; /* End address of the first VOBU in the cell */
ULONG c_lvobu_sa; /* Start address of the last VOBU in the cell */
ULONG c_lvobu_ea; /* End address of the last VOBU in the cell */
} c_pbi_struct;
/* C_POSI Cell position information */
typedef struct _c_posi
{
USHORT c_vob_idn; /* VOB ID number of the cell */
UBYTE c_idn; /* Cell ID number of the Cell */
} c_posi_struct;
/* Program Chain Command Table Information (PGC_CMDTI) Structure */
typedef struct _pgc_cmdti
{
USHORT pre_cmd_n; /* Number of Pre Commands */
USHORT post_cmd_n; /* Number of Post Commands */
USHORT c_cmd_n; /* Number of Cell Commands */
USHORT pgc_cmdt_ea; /* End address */
} pgc_cmdti_struct;
/* PGC program map */
extern UBYTE pgc_pgmap[MAX_NUM_PG];
/* Cell Playback Information Table (C_PBI) */
extern c_pbi_struct c_pbi[MAX_NUM_CELLS];
/* Cell Position Information Table (C_POSI) */
extern c_posi_struct c_posi[MAX_NUM_CELLS];
/* Struct containing the Program Chain Gerneral Information */
extern pgc_gi_struct pgc_gi;
/* Struct containing the Program Chain Command Table Info */
extern pgc_cmdti_struct pgc_cmdti;
/* Buffers to store Pre, Post, and Cell Commands from Program Chain */
extern UBYTE pre_cmd_buff[MAX_PRE_CMD_NS][SIZEOF_CMD];
extern UBYTE post_cmd_buff[MAX_PST_CMD_NS][SIZEOF_CMD];
extern UBYTE c_cmd_buff[MAX_CEL_CMD_NS][SIZEOF_CMD];
/* Program Chain Function Prototypes */
extern void parse_pgc_pgmap(USHORT pgc_pgmap_sa, ULONG pgci_sa);
extern void parse_c_pbi(USHORT c_pbi_sa, ULONG pgci_sa);
extern void parse_c_posit(USHORT c_posit_sa, ULONG pgci_sa);
extern void is_last_cell(UBYTE ubCellNumber, BOOLEAN *fLastPGCCell, BOOLEAN *fLastVobCell);
/* dump the commands from the command buffers */
extern void dump_cmd(UBYTE * buf);
/* Parse the first play program chain */
extern void parse_fp_pgci(void);
/* Parse a specific program chain information */
extern UBYTE parse_pgci(USHORT * pgci_num);
/* File Access Prototypes */
extern BOOLEAN get_next_block(ULONG Start_Address, ULONG Block_Offset);
/* Prevents unnecessary disc_fread in parse_pgci */
extern ULONG last_sector_address;
/* Prevents unnecessary parse in parse_pgci */
extern ULONG last_start_address;
extern UBYTE check_parental(USHORT *);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -