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

📄 dvd_pgci.h

📁 这是DVD中伺服部分的核心代码
💻 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 + -