dvdnav.h   dvdnav.h 
skipping to change at line 20 skipping to change at line 20
* *
* libdvdnav is distributed in the hope that it will be useful, * libdvdnav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, U SA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, U SA
* *
* $Id: dvdnav.h 955 2007-08-19 21:25:04Z rathann $ * $Id: dvdnav.h 975 2007-11-29 23:24:05Z nicodvb $
* *
*/ */
/* /*
* This is the main header file applications should include if they want * This is the main header file applications should include if they want
* to access dvdnav functionality. * to access dvdnav functionality.
*/ */
#ifndef DVDNAV_H_INCLUDED #ifndef DVDNAV_H_INCLUDED
#define DVDNAV_H_INCLUDED #define DVDNAV_H_INCLUDED
skipping to change at line 282 skipping to change at line 282
* Plays the specified title of the DVD from its beginning (that is: part 1 ). * Plays the specified title of the DVD from its beginning (that is: part 1 ).
*/ */
dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int32_t title); dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int32_t title);
/* /*
* Plays the specified title, starting from the specified part. * Plays the specified title, starting from the specified part.
*/ */
dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t par t); dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t par t);
/* /*
* Stores in *times an array (that the application *must* free) of
* dvdtimes corresponding to the chapter times for the chosen title.
* *duration will have the duration of the title
* The number of entries in *times is the result of the function.
* On error *times is NULL and the output is 0
*/
uint32_t dvdnav_describe_title_chapters(dvdnav_t *this, int32_t title, uint
64_t **times, uint64_t *duration);
/*
* Play the specified amount of parts of the specified title of * Play the specified amount of parts of the specified title of
* the DVD then STOP. * the DVD then STOP.
* *
* Currently unimplemented! * Currently unimplemented!
*/ */
dvdnav_status_t dvdnav_part_play_auto_stop(dvdnav_t *self, int32_t title, dvdnav_status_t dvdnav_part_play_auto_stop(dvdnav_t *self, int32_t title,
int32_t part, int32_t parts_to_pl ay); int32_t part, int32_t parts_to_pl ay);
/* /*
* Play the specified title starting from the specified time. * Play the specified title starting from the specified time.
 End of changes. 2 change blocks. 
1 lines changed or deleted 11 lines changed or added


 ifo_print.h   ifo_print.h 
skipping to change at line 16 skipping to change at line 16
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, U SA * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, U SA
* *
* $Id: ifo_print.h 774 2004-01-11 21:43:13Z mroi $ * $Id: ifo_print.h 959 2007-11-11 11:29:53Z nicodvb $
* *
*/ */
#ifndef IFO_PRINT_H_INCLUDED #ifndef IFO_PRINT_H_INCLUDED
#define IFO_PRINT_H_INCLUDED #define IFO_PRINT_H_INCLUDED
#include <inttypes.h> #include <inttypes.h>
#ifdef DVDNAV_COMPILE #ifdef DVDNAV_COMPILE
# include "ifo_types.h" # include "ifo_types.h"
#else #else
# include <dvdnav/ifo_types.h> /* Only for vm_cmd_t */ # include <dvdread/ifo_types.h> /* Only for vm_cmd_t */
#endif #endif
void ifo_print(dvd_reader_t *dvd, int title); void ifo_print(dvd_reader_t *dvd, int title);
#endif /* IFO_PRINT_H_INCLUDED */ #endif /* IFO_PRINT_H_INCLUDED */
/* /*
* $Log$ * $Log$
* Revision 1.1 2004/01/11 21:43:13 mroi * Revision 1.1 2004/01/11 21:43:13 mroi
* big build system changes * big build system changes
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 ifo_types.h   ifo_types.h 
skipping to change at line 68 skipping to change at line 68
uint8_t second; uint8_t second;
uint8_t frame_u; /* The two high bits are the frame rate. */ uint8_t frame_u; /* The two high bits are the frame rate. */
} ATTRIBUTE_PACKED dvd_time_t; } ATTRIBUTE_PACKED dvd_time_t;
/** /**
* Type to store per-command data. * Type to store per-command data.
*/ */
typedef struct { typedef struct {
uint8_t bytes[8]; uint8_t bytes[8];
} ATTRIBUTE_PACKED vm_cmd_t; } ATTRIBUTE_PACKED vm_cmd_t;
#define COMMAND_DATA_SIZE 8 #define COMMAND_DATA_SIZE 8U
/** /**
* Video Attributes. * Video Attributes.
*/ */
typedef struct { typedef struct {
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
unsigned char mpeg_version : 2; unsigned char mpeg_version : 2;
unsigned char video_format : 2; unsigned char video_format : 2;
unsigned char display_aspect_ratio : 2; unsigned char display_aspect_ratio : 2;
unsigned char permitted_df : 2; unsigned char permitted_df : 2;
skipping to change at line 261 skipping to change at line 261
*/ */
typedef struct { typedef struct {
uint16_t nr_of_pre; uint16_t nr_of_pre;
uint16_t nr_of_post; uint16_t nr_of_post;
uint16_t nr_of_cell; uint16_t nr_of_cell;
uint16_t zero_1; uint16_t zero_1;
vm_cmd_t *pre_cmds; vm_cmd_t *pre_cmds;
vm_cmd_t *post_cmds; vm_cmd_t *post_cmds;
vm_cmd_t *cell_cmds; vm_cmd_t *cell_cmds;
} ATTRIBUTE_PACKED pgc_command_tbl_t; } ATTRIBUTE_PACKED pgc_command_tbl_t;
#define PGC_COMMAND_TBL_SIZE 8 #define PGC_COMMAND_TBL_SIZE 8U
/** /**
* PGC Program Map * PGC Program Map
*/ */
typedef uint8_t pgc_program_map_t; typedef uint8_t pgc_program_map_t;
/** /**
* Cell Playback Information. * Cell Playback Information.
*/ */
typedef struct { typedef struct {
skipping to change at line 414 skipping to change at line 414
uint32_t palette[16]; /* New type struct {zero_1, Y, Cr, Cb} ? */ uint32_t palette[16]; /* New type struct {zero_1, Y, Cr, Cb} ? */
uint16_t command_tbl_offset; uint16_t command_tbl_offset;
uint16_t program_map_offset; uint16_t program_map_offset;
uint16_t cell_playback_offset; uint16_t cell_playback_offset;
uint16_t cell_position_offset; uint16_t cell_position_offset;
pgc_command_tbl_t *command_tbl; pgc_command_tbl_t *command_tbl;
pgc_program_map_t *program_map; pgc_program_map_t *program_map;
cell_playback_t *cell_playback; cell_playback_t *cell_playback;
cell_position_t *cell_position; cell_position_t *cell_position;
} ATTRIBUTE_PACKED pgc_t; } ATTRIBUTE_PACKED pgc_t;
#define PGC_SIZE 236 #define PGC_SIZE 236U
/** /**
* Program Chain Information Search Pointer. * Program Chain Information Search Pointer.
*/ */
typedef struct { typedef struct {
uint8_t entry_id; uint8_t entry_id;
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
unsigned int block_mode : 2; unsigned int block_mode : 2;
unsigned int block_type : 2; unsigned int block_type : 2;
unsigned int unknown1 : 4; unsigned int unknown1 : 4;
#else #else
unsigned char unknown1 : 4; unsigned char unknown1 : 4;
unsigned char block_type : 2; unsigned char block_type : 2;
unsigned char block_mode : 2; unsigned char block_mode : 2;
#endif #endif
uint16_t ptl_id_mask; uint16_t ptl_id_mask;
uint32_t pgc_start_byte; uint32_t pgc_start_byte;
pgc_t *pgc; pgc_t *pgc;
} ATTRIBUTE_PACKED pgci_srp_t; } ATTRIBUTE_PACKED pgci_srp_t;
#define PGCI_SRP_SIZE 8 #define PGCI_SRP_SIZE 8U
/** /**
* Program Chain Information Table. * Program Chain Information Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_pgci_srp; uint16_t nr_of_pgci_srp;
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
pgci_srp_t *pgci_srp; pgci_srp_t *pgci_srp;
} ATTRIBUTE_PACKED pgcit_t; } ATTRIBUTE_PACKED pgcit_t;
#define PGCIT_SIZE 8 #define PGCIT_SIZE 8U
/** /**
* Menu PGCI Language Unit. * Menu PGCI Language Unit.
*/ */
typedef struct { typedef struct {
uint16_t lang_code; uint16_t lang_code;
uint8_t lang_extension; uint8_t lang_extension;
uint8_t exists; uint8_t exists;
uint32_t lang_start_byte; uint32_t lang_start_byte;
pgcit_t *pgcit; pgcit_t *pgcit;
} ATTRIBUTE_PACKED pgci_lu_t; } ATTRIBUTE_PACKED pgci_lu_t;
#define PGCI_LU_SIZE 8 #define PGCI_LU_SIZE 8U
/** /**
* Menu PGCI Unit Table. * Menu PGCI Unit Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_lus; uint16_t nr_of_lus;
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
pgci_lu_t *lu; pgci_lu_t *lu;
} ATTRIBUTE_PACKED pgci_ut_t; } ATTRIBUTE_PACKED pgci_ut_t;
#define PGCI_UT_SIZE 8 #define PGCI_UT_SIZE 8U
/** /**
* Cell Address Information. * Cell Address Information.
*/ */
typedef struct { typedef struct {
uint16_t vob_id; uint16_t vob_id;
uint8_t cell_id; uint8_t cell_id;
uint8_t zero_1; uint8_t zero_1;
uint32_t start_sector; uint32_t start_sector;
uint32_t last_sector; uint32_t last_sector;
skipping to change at line 490 skipping to change at line 490
/** /**
* Cell Address Table. * Cell Address Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_vobs; /* VOBs */ uint16_t nr_of_vobs; /* VOBs */
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
cell_adr_t *cell_adr_table; /* No explicit size given. */ cell_adr_t *cell_adr_table; /* No explicit size given. */
} ATTRIBUTE_PACKED c_adt_t; } ATTRIBUTE_PACKED c_adt_t;
#define C_ADT_SIZE 8 #define C_ADT_SIZE 8U
/** /**
* VOBU Address Map. * VOBU Address Map.
*/ */
typedef struct { typedef struct {
uint32_t last_byte; uint32_t last_byte;
uint32_t *vobu_start_sectors; uint32_t *vobu_start_sectors;
} ATTRIBUTE_PACKED vobu_admap_t; } ATTRIBUTE_PACKED vobu_admap_t;
#define VOBU_ADMAP_SIZE 4 #define VOBU_ADMAP_SIZE 4U
/** /**
* VMGI * VMGI
* *
* The following structures relate to the Video Manager. * The following structures relate to the Video Manager.
*/ */
/** /**
* Video Manager Information Management Table. * Video Manager Information Management Table.
*/ */
skipping to change at line 594 skipping to change at line 594
/** /**
* PartOfTitle Search Pointer Table. * PartOfTitle Search Pointer Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_srpts; uint16_t nr_of_srpts;
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
title_info_t *title; title_info_t *title;
} ATTRIBUTE_PACKED tt_srpt_t; } ATTRIBUTE_PACKED tt_srpt_t;
#define TT_SRPT_SIZE 8 #define TT_SRPT_SIZE 8U
/** /**
* Parental Management Information Unit Table. * Parental Management Information Unit Table.
* Level 1 (US: G), ..., 7 (US: NC-17), 8 * Level 1 (US: G), ..., 7 (US: NC-17), 8
*/ */
typedef uint16_t pf_level_t[8]; typedef uint16_t pf_level_t[8];
/** /**
* Parental Management Information Unit Table. * Parental Management Information Unit Table.
*/ */
typedef struct { typedef struct {
uint16_t country_code; uint16_t country_code;
uint16_t zero_1; uint16_t zero_1;
uint16_t pf_ptl_mai_start_byte; uint16_t pf_ptl_mai_start_byte;
uint16_t zero_2; uint16_t zero_2;
pf_level_t *pf_ptl_mai; /* table of (nr_of_vtss + 1), video_ts is first * / pf_level_t *pf_ptl_mai; /* table of (nr_of_vtss + 1), video_ts is first * /
} ATTRIBUTE_PACKED ptl_mait_country_t; } ATTRIBUTE_PACKED ptl_mait_country_t;
#define PTL_MAIT_COUNTRY_SIZE 8 #define PTL_MAIT_COUNTRY_SIZE 8U
/** /**
* Parental Management Information Table. * Parental Management Information Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_countries; uint16_t nr_of_countries;
uint16_t nr_of_vtss; uint16_t nr_of_vtss;
uint32_t last_byte; uint32_t last_byte;
ptl_mait_country_t *countries; ptl_mait_country_t *countries;
} ATTRIBUTE_PACKED ptl_mait_t; } ATTRIBUTE_PACKED ptl_mait_t;
#define PTL_MAIT_SIZE 8 #define PTL_MAIT_SIZE 8U
/** /**
* Video Title Set Attributes. * Video Title Set Attributes.
*/ */
typedef struct { typedef struct {
uint32_t last_byte; uint32_t last_byte;
uint32_t vts_cat; uint32_t vts_cat;
video_attr_t vtsm_vobs_attr; video_attr_t vtsm_vobs_attr;
uint8_t zero_1; uint8_t zero_1;
skipping to change at line 654 skipping to change at line 654
video_attr_t vtstt_vobs_video_attr; video_attr_t vtstt_vobs_video_attr;
uint8_t zero_7; uint8_t zero_7;
uint8_t nr_of_vtstt_audio_streams; uint8_t nr_of_vtstt_audio_streams;
audio_attr_t vtstt_audio_attr[8]; audio_attr_t vtstt_audio_attr[8];
uint8_t zero_8[16]; uint8_t zero_8[16];
uint8_t zero_9; uint8_t zero_9;
uint8_t nr_of_vtstt_subp_streams; uint8_t nr_of_vtstt_subp_streams;
subp_attr_t vtstt_subp_attr[32]; subp_attr_t vtstt_subp_attr[32];
} ATTRIBUTE_PACKED vts_attributes_t; } ATTRIBUTE_PACKED vts_attributes_t;
#define VTS_ATTRIBUTES_SIZE 542 #define VTS_ATTRIBUTES_SIZE 542U
#define VTS_ATTRIBUTES_MIN_SIZE 356 #define VTS_ATTRIBUTES_MIN_SIZE 356U
/** /**
* Video Title Set Attribute Table. * Video Title Set Attribute Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_vtss; uint16_t nr_of_vtss;
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
vts_attributes_t *vts; vts_attributes_t *vts;
uint32_t *vts_atrt_offsets; /* offsets table for each vts_attributes */ uint32_t *vts_atrt_offsets; /* offsets table for each vts_attributes */
} ATTRIBUTE_PACKED vts_atrt_t; } ATTRIBUTE_PACKED vts_atrt_t;
#define VTS_ATRT_SIZE 8 #define VTS_ATRT_SIZE 8U
/** /**
* Text Data. (Incomplete) * Text Data. (Incomplete)
*/ */
typedef struct { typedef struct {
uint32_t last_byte; /* offsets are relative here */ uint32_t last_byte; /* offsets are relative here */
uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */ uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */
#if 0 #if 0
uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */ uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */
uint16_t zero_1; uint16_t zero_1;
skipping to change at line 700 skipping to change at line 700
/** /**
* Text Data Language Unit. (Incomplete) * Text Data Language Unit. (Incomplete)
*/ */
typedef struct { typedef struct {
uint16_t lang_code; uint16_t lang_code;
uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */ uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */
uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */ uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */
txtdt_t *txtdt; txtdt_t *txtdt;
} ATTRIBUTE_PACKED txtdt_lu_t; } ATTRIBUTE_PACKED txtdt_lu_t;
#define TXTDT_LU_SIZE 8 #define TXTDT_LU_SIZE 8U
/** /**
* Text Data Manager Information. (Incomplete) * Text Data Manager Information. (Incomplete)
*/ */
typedef struct { typedef struct {
char disc_name[14]; /* how many bytes?? */ char disc_name[14]; /* how many bytes?? */
uint16_t nr_of_language_units; /* 32bit?? */ uint16_t nr_of_language_units; /* 32bit?? */
uint32_t last_byte; uint32_t last_byte;
txtdt_lu_t *lu; txtdt_lu_t *lu;
} ATTRIBUTE_PACKED txtdt_mgi_t; } ATTRIBUTE_PACKED txtdt_mgi_t;
#define TXTDT_MGI_SIZE 20 #define TXTDT_MGI_SIZE 20U
/** /**
* VTS * VTS
* *
* Structures relating to the Video Title Set (VTS). * Structures relating to the Video Title Set (VTS).
*/ */
/** /**
* Video Title Set Information Management Table. * Video Title Set Information Management Table.
*/ */
skipping to change at line 802 skipping to change at line 802
/** /**
* PartOfTitle Search Pointer Table. * PartOfTitle Search Pointer Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_srpts; uint16_t nr_of_srpts;
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
ttu_t *title; ttu_t *title;
uint32_t *ttu_offset; /* offset table for each ttu */ uint32_t *ttu_offset; /* offset table for each ttu */
} ATTRIBUTE_PACKED vts_ptt_srpt_t; } ATTRIBUTE_PACKED vts_ptt_srpt_t;
#define VTS_PTT_SRPT_SIZE 8 #define VTS_PTT_SRPT_SIZE 8U
/** /**
* Time Map Entry. * Time Map Entry.
*/ */
/* Should this be bit field at all or just the uint32_t? */ /* Should this be bit field at all or just the uint32_t? */
typedef uint32_t map_ent_t; typedef uint32_t map_ent_t;
/** /**
* Time Map. * Time Map.
*/ */
typedef struct { typedef struct {
uint8_t tmu; /* Time unit, in seconds */ uint8_t tmu; /* Time unit, in seconds */
uint8_t zero_1; uint8_t zero_1;
uint16_t nr_of_entries; uint16_t nr_of_entries;
map_ent_t *map_ent; map_ent_t *map_ent;
} ATTRIBUTE_PACKED vts_tmap_t; } ATTRIBUTE_PACKED vts_tmap_t;
#define VTS_TMAP_SIZE 4 #define VTS_TMAP_SIZE 4U
/** /**
* Time Map Table. * Time Map Table.
*/ */
typedef struct { typedef struct {
uint16_t nr_of_tmaps; uint16_t nr_of_tmaps;
uint16_t zero_1; uint16_t zero_1;
uint32_t last_byte; uint32_t last_byte;
vts_tmap_t *tmap; vts_tmap_t *tmap;
uint32_t *tmap_offset; /* offset table for each tmap */ uint32_t *tmap_offset; /* offset table for each tmap */
} ATTRIBUTE_PACKED vts_tmapt_t; } ATTRIBUTE_PACKED vts_tmapt_t;
#define VTS_TMAPT_SIZE 8 #define VTS_TMAPT_SIZE 8U
#if PRAGMA_PACK #if PRAGMA_PACK
#pragma pack() #pragma pack()
#endif #endif
/** /**
* The following structure defines an IFO file. The structure is divided i nto * The following structure defines an IFO file. The structure is divided i nto
* two parts, the VMGI, or Video Manager Information, which is read from th e * two parts, the VMGI, or Video Manager Information, which is read from th e
* VIDEO_TS.[IFO,BUP] file, and the VTSI, or Video Title Set Information, w hich * VIDEO_TS.[IFO,BUP] file, and the VTSI, or Video Title Set Information, w hich
* is read in from the VTS_XX_0.[IFO,BUP] files. * is read in from the VTS_XX_0.[IFO,BUP] files.
 End of changes. 19 change blocks. 
20 lines changed or deleted 20 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/