dvd_types.h   dvd_types.h 
skipping to change at line 29 skipping to change at line 29
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
/* /*
* Various useful structs and enums for DVDs. * Various useful structs and enums for DVDs.
*/ */
#ifndef LIBDVDNAV_DVD_TYPES_H #ifndef LIBDVDNAV_DVD_TYPES_H
#define LIBDVDNAV_DVD_TYPES_H #define LIBDVDNAV_DVD_TYPES_H
#include <stdint.h>
/* /*
* DVD Menu ID * DVD Menu ID
* (see dvdnav_menu_call()) * (see dvdnav_menu_call())
*/ */
typedef enum { typedef enum {
/* When used in VTS domain, DVD_MENU_Escape behaves like DVD_MENU_Root, /* When used in VTS domain, DVD_MENU_Escape behaves like DVD_MENU_Root,
* but from within a menu domain, DVD_MENU_Escape resumes playback. */ * but from within a menu domain, DVD_MENU_Escape resumes playback. */
DVD_MENU_Escape = 0, DVD_MENU_Escape = 0,
DVD_MENU_Title = 2, DVD_MENU_Title = 2,
DVD_MENU_Root = 3, DVD_MENU_Root = 3,
DVD_MENU_Subpicture = 4, DVD_MENU_Subpicture = 4,
DVD_MENU_Audio = 5, DVD_MENU_Audio = 5,
DVD_MENU_Angle = 6, DVD_MENU_Angle = 6,
DVD_MENU_Part = 7 DVD_MENU_Part = 7
} DVDMenuID_t; } DVDMenuID_t;
/* Domain */
typedef enum {
DVD_DOMAIN_FirstPlay = 1, /* First Play Domain */
DVD_DOMAIN_VTSTitle = 2, /* Video Title Set Domain */
DVD_DOMAIN_VMGM = 4, /* Video Manager Domain */
DVD_DOMAIN_VTSMenu = 8 /* Video Title Set Menu Domain */
} DVDDomain_t;
/* /*
* Structure containing info on highlight areas * Structure containing info on highlight areas
* (see dvdnav_get_highlight_area()) * (see dvdnav_get_highlight_area())
*/ */
typedef struct { typedef struct {
uint32_t palette; /* The CLUT entries for the highlight palette uint32_t palette; /* The CLUT entries for the highlight palette
(4-bits per entry -> 4 entries) */ (4-bits per entry -> 4 entries) */
uint16_t sx,sy,ex,ey; /* The start/end x,y positions */ uint16_t sx,sy,ex,ey; /* The start/end x,y positions */
uint32_t pts; /* Highlight PTS to match with SPU */ uint32_t pts; /* Highlight PTS to match with SPU */
/* button number for the SPU decoder/overlaying engine */ /* button number for the SPU decoder/overlaying engine */
uint32_t buttonN; uint32_t buttonN;
} dvdnav_highlight_area_t; } dvdnav_highlight_area_t;
/* The audio format */
typedef enum {
DVD_AUDIO_FORMAT_AC3 = 0,
DVD_AUDIO_FORMAT_UNKNOWN_1 = 1,
DVD_AUDIO_FORMAT_MPEG = 2,
DVD_AUDIO_FORMAT_MPEG2_EXT = 3,
DVD_AUDIO_FORMAT_LPCM = 4,
DVD_AUDIO_FORMAT_UNKNOWN_5 = 5,
DVD_AUDIO_FORMAT_DTS = 6,
DVD_AUDIO_FORMAT_SDDS = 7
} DVDAudioFormat_t;
/* the following types are currently unused */ /* the following types are currently unused */
#if 0 #if 0
/* Domain */
typedef enum {
DVD_DOMAIN_FirstPlay, /* First Play Domain */
DVD_DOMAIN_VMG, /* Video Manager Domain */
DVD_DOMAIN_VTSMenu, /* Video Title Set Menu Domain */
DVD_DOMAIN_VTSTitle, /* Video Title Set Domain */
DVD_DOMAIN_Stop /* Stop Domain */
} DVDDomain_t;
/* User operation permissions */ /* User operation permissions */
typedef enum { typedef enum {
UOP_FLAG_TitleOrTimePlay = 0x00000001, UOP_FLAG_TitleOrTimePlay = 0x00000001,
UOP_FLAG_ChapterSearchOrPlay = 0x00000002, UOP_FLAG_ChapterSearchOrPlay = 0x00000002,
UOP_FLAG_TitlePlay = 0x00000004, UOP_FLAG_TitlePlay = 0x00000004,
UOP_FLAG_Stop = 0x00000008, UOP_FLAG_Stop = 0x00000008,
UOP_FLAG_GoUp = 0x00000010, UOP_FLAG_GoUp = 0x00000010,
UOP_FLAG_TimeOrChapterSearch = 0x00000020, UOP_FLAG_TimeOrChapterSearch = 0x00000020,
UOP_FLAG_PrevOrTopPGSearch = 0x00000040, UOP_FLAG_PrevOrTopPGSearch = 0x00000040,
UOP_FLAG_NextPGSearch = 0x00000080, UOP_FLAG_NextPGSearch = 0x00000080,
skipping to change at line 159 skipping to change at line 172
typedef int DVDAudioStream_t; typedef int DVDAudioStream_t;
/* The audio application mode */ /* The audio application mode */
typedef enum { typedef enum {
DVD_AUDIO_APP_MODE_None = 0, DVD_AUDIO_APP_MODE_None = 0,
DVD_AUDIO_APP_MODE_Karaoke = 1, DVD_AUDIO_APP_MODE_Karaoke = 1,
DVD_AUDIO_APP_MODE_Surround = 2, DVD_AUDIO_APP_MODE_Surround = 2,
DVD_AUDIO_APP_MODE_Other = 3 DVD_AUDIO_APP_MODE_Other = 3
} DVDAudioAppMode_t; } DVDAudioAppMode_t;
/* The audio format */
typedef enum {
DVD_AUDIO_FORMAT_AC3 = 0,
DVD_AUDIO_FORMAT_MPEG1 = 1,
DVD_AUDIO_FORMAT_MPEG1_DRC = 2,
DVD_AUDIO_FORMAT_MPEG2 = 3,
DVD_AUDIO_FORMAT_MPEG2_DRC = 4,
DVD_AUDIO_FORMAT_LPCM = 5,
DVD_AUDIO_FORMAT_DTS = 6,
DVD_AUDIO_FORMAT_SDDS = 7,
DVD_AUDIO_FORMAT_Other = 8
} DVDAudioFormat_t;
/* Audio language extension */ /* Audio language extension */
typedef enum { typedef enum {
DVD_AUDIO_LANG_EXT_NotSpecified = 0, DVD_AUDIO_LANG_EXT_NotSpecified = 0,
DVD_AUDIO_LANG_EXT_NormalCaptions = 1, DVD_AUDIO_LANG_EXT_NormalCaptions = 1,
DVD_AUDIO_LANG_EXT_VisuallyImpaired = 2, DVD_AUDIO_LANG_EXT_VisuallyImpaired = 2,
DVD_AUDIO_LANG_EXT_DirectorsComments1 = 3, DVD_AUDIO_LANG_EXT_DirectorsComments1 = 3,
DVD_AUDIO_LANG_EXT_DirectorsComments2 = 4 DVD_AUDIO_LANG_EXT_DirectorsComments2 = 4
} DVDAudioLangExt_t; } DVDAudioLangExt_t;
/* Subpicture language extension */ /* Subpicture language extension */
 End of changes. 6 change blocks. 
23 lines changed or deleted 23 lines changed or added


 dvdnav.h   dvdnav.h 
skipping to change at line 64 skipping to change at line 64
typedef int32_t dvdnav_status_t; typedef int32_t dvdnav_status_t;
/* /*
* Unless otherwise stated, all functions return DVDNAV_STATUS_OK if * Unless otherwise stated, all functions return DVDNAV_STATUS_OK if
* they succeeded, otherwise DVDNAV_STATUS_ERR is returned and the error ma y * they succeeded, otherwise DVDNAV_STATUS_ERR is returned and the error ma y
* be obtained by calling dvdnav_err_to_string(). * be obtained by calling dvdnav_err_to_string().
*/ */
#define DVDNAV_STATUS_ERR 0 #define DVDNAV_STATUS_ERR 0
#define DVDNAV_STATUS_OK 1 #define DVDNAV_STATUS_OK 1
#define DVDNAV_FORMAT_AC3 0
#define DVDNAV_FORMAT_MPEGAUDIO 3
#define DVDNAV_FORMAT_LPCM 4
#define DVDNAV_FORMAT_DTS 5
#define DVDNAV_FORMAT_SDDS 6
/********************************************************************* /*********************************************************************
* initialisation & housekeeping functions * * initialisation & housekeeping functions *
*********************************************************************/ *********************************************************************/
/* /*
* These functions allow you to open a DVD device and associate it * These functions allow you to open a DVD device and associate it
* with a dvdnav_t. * with a dvdnav_t.
*/ */
/* /*
* Attempts to open the DVD drive at the specified path and pre-cache * Attempts to open the DVD drive at the specified path and pre-cache
* the CSS-keys. libdvdread is used to access the DVD, so any source * the CSS-keys. libdvdread is used to access the DVD, so any source
* supported by libdvdread can be given with "path". Currently, * supported by libdvdread can be given with "path". Currently,
* libdvdread can access: DVD drives, DVD image files, DVD file-by-file * libdvdread can access: DVD drives, DVD image files, DVD file-by-file
* copies. * copies.
* *
* The resulting dvdnav_t handle will be written to *dest. * The resulting dvdnav_t handle will be written to *dest.
*/ */
dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path); dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path);
dvdnav_status_t dvdnav_dup(dvdnav_t **dest, dvdnav_t *src);
dvdnav_status_t dvdnav_free_dup(dvdnav_t * _this);
/* /*
* Closes a dvdnav_t previously opened with dvdnav_open(), freeing any * Closes a dvdnav_t previously opened with dvdnav_open(), freeing any
* memory associated with it. * memory associated with it.
*/ */
dvdnav_status_t dvdnav_close(dvdnav_t *self); dvdnav_status_t dvdnav_close(dvdnav_t *self);
/* /*
* Resets the DVD virtual machine and cache buffers. * Resets the DVD virtual machine and cache buffers.
*/ */
dvdnav_status_t dvdnav_reset(dvdnav_t *self); dvdnav_status_t dvdnav_reset(dvdnav_t *self);
skipping to change at line 198 skipping to change at line 195
* If 'event' is DVDNAV_BLOCK_OK then 'buf' is filled with the next block * If 'event' is DVDNAV_BLOCK_OK then 'buf' is filled with the next block
* (note that means it has to be at /least/ 2048 bytes big). 'len' is * (note that means it has to be at /least/ 2048 bytes big). 'len' is
* then set to 2048. * then set to 2048.
* *
* Otherwise, buf is filled with an appropriate event structure and * Otherwise, buf is filled with an appropriate event structure and
* len is set to the length of that structure. * len is set to the length of that structure.
* *
* See the dvdnav_events.h header for information on the various events. * See the dvdnav_events.h header for information on the various events.
*/ */
dvdnav_status_t dvdnav_get_next_block(dvdnav_t *self, uint8_t *buf, dvdnav_status_t dvdnav_get_next_block(dvdnav_t *self, uint8_t *buf,
int32_t *event, int32_t *len); int32_t *event, int32_t *len);
/* /*
* This basically does the same as dvdnav_get_next_block. The only differen ce is * This basically does the same as dvdnav_get_next_block. The only differen ce is
* that it avoids a memcopy, when the requested block was found in the cach e. * that it avoids a memcopy, when the requested block was found in the cach e.
* In such a case (cache hit) this function will return a different pointer than * In such a case (cache hit) this function will return a different pointer than
* the one handed in, pointing directly into the relevant block in the cach e. * the one handed in, pointing directly into the relevant block in the cach e.
* Those pointers must _never_ be freed but instead returned to the library via * Those pointers must _never_ be freed but instead returned to the library via
* dvdnav_free_cache_block(). * dvdnav_free_cache_block().
*/ */
dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, uint8_t **buf, dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, uint8_t **buf,
int32_t *event, int32_t *len); int32_t *event, int32_t *len);
/* /*
* All buffers which came from the internal cache (when dvdnav_get_next_cac he_block() * All buffers which came from the internal cache (when dvdnav_get_next_cac he_block()
* returned a buffer different from the one handed in) have to be freed wit h this * returned a buffer different from the one handed in) have to be freed wit h this
* function. Although handing in other buffers not from the cache doesn't c ause any harm. * function. Although handing in other buffers not from the cache doesn't c ause any harm.
*/ */
dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf) ; dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf) ;
/* /*
* If we are currently in a still-frame this function skips it. * If we are currently in a still-frame this function skips it.
skipping to change at line 297 skipping to change at line 294
*/ */
uint32_t dvdnav_describe_title_chapters(dvdnav_t *self, int32_t title, uint 64_t **times, uint64_t *duration); uint32_t dvdnav_describe_title_chapters(dvdnav_t *self, 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_p lay);
/* /*
* Play the specified title starting from the specified time. * Play the specified title starting from the specified time.
* *
* Currently unimplemented! * Currently unimplemented!
*/ */
dvdnav_status_t dvdnav_time_play(dvdnav_t *self, int32_t title, dvdnav_status_t dvdnav_time_play(dvdnav_t *self, int32_t title,
uint64_t time); uint64_t time);
/* /*
* Stop playing the current position and jump to the specified menu. * Stop playing the current position and jump to the specified menu.
* *
* See also DVDMenuID_t from libdvdread * See also DVDMenuID_t from libdvdread
*/ */
dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu); dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu);
/* /*
* Return the title number and part currently being played. * Return the title number and part currently being played.
* A title of 0 indicates we are in a menu. In this case, part * A title of 0 indicates we are in a menu. In this case, part
* is set to the current menu's ID. * is set to the current menu's ID.
*/ */
dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int32_t *title, dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int32_t *title,
int32_t *part); int32_t *part);
/* /*
* Return the title number, pgcn and pgn currently being played. * Return the title number, pgcn and pgn currently being played.
* A title of 0 indicates, we are in a menu. * A title of 0 indicates, we are in a menu.
*/ */
dvdnav_status_t dvdnav_current_title_program(dvdnav_t *self, int32_t *title , dvdnav_status_t dvdnav_current_title_program(dvdnav_t *self, int32_t *title ,
int32_t *pgcn, int32_t *pgn); int32_t *pgcn, int32_t *pgn);
/* /*
* Return the current position (in blocks) within the current * Return the current position (in blocks) within the current
* title and the length (in blocks) of said title. * title and the length (in blocks) of said title.
* *
* Current implementation is wrong and likely to behave unpredictably! * Current implementation is wrong and likely to behave unpredictably!
* Use is discouraged! * Use is discouraged!
*/ */
dvdnav_status_t dvdnav_get_position_in_title(dvdnav_t *self, dvdnav_status_t dvdnav_get_position_in_title(dvdnav_t *self,
uint32_t *pos, uint32_t *pos,
uint32_t *len); uint32_t *len);
/* /*
* This function is only available for compatibility reasons. * This function is only available for compatibility reasons.
* *
* Stop playing the current position and start playback of the current titl e * Stop playing the current position and start playback of the current titl e
* from the specified part. * from the specified part.
*/ */
dvdnav_status_t dvdnav_part_search(dvdnav_t *self, int32_t part); dvdnav_status_t dvdnav_part_search(dvdnav_t *self, int32_t part);
/********************************************************************* /*********************************************************************
skipping to change at line 367 skipping to change at line 364
* program and will fail if asked to do so. * program and will fail if asked to do so.
* *
* If program chain based positioning is enabled * If program chain based positioning is enabled
* (see dvdnav_set_PGC_positioning_flag()), this will seek to the relative * (see dvdnav_set_PGC_positioning_flag()), this will seek to the relative
* sector inside the current program chain. * sector inside the current program chain.
* *
* 'origin' can be one of SEEK_SET, SEEK_CUR, SEEK_END as defined in * 'origin' can be one of SEEK_SET, SEEK_CUR, SEEK_END as defined in
* fcntl.h. * fcntl.h.
*/ */
dvdnav_status_t dvdnav_sector_search(dvdnav_t *self, dvdnav_status_t dvdnav_sector_search(dvdnav_t *self,
uint64_t offset, int32_t origin); int64_t offset, int32_t origin);
/* /*
returns the current stream time in PTS ticks as reported by the IFO struct ures returns the current stream time in PTS ticks as reported by the IFO struct ures
divide it by 90000 to get the current play time in seconds divide it by 90000 to get the current play time in seconds
*/ */
int64_t dvdnav_get_current_time(dvdnav_t *self); int64_t dvdnav_get_current_time(dvdnav_t *self);
/* /*
* Stop playing the current position and start playback of the title * Stop playing the current position and start playback of the title
* from the specified timecode. * from the specified timecode.
* *
* Currently implemented using interpolation, which is slightly inaccurate. * Currently implemented using interpolation. That interpolation is slightl
y
* inaccurate.
*/ */
dvdnav_status_t dvdnav_time_search(dvdnav_t *self, dvdnav_status_t dvdnav_time_search(dvdnav_t *self,
uint64_t time); uint64_t time);
/* /*
* Stop playing current position and play the "GoUp"-program chain. * Stop playing current position and play the "GoUp"-program chain.
* (which generally leads to the title menu or a higher-level menu). * (which generally leads to the title menu or a higher-level menu).
*/ */
dvdnav_status_t dvdnav_go_up(dvdnav_t *self); dvdnav_status_t dvdnav_go_up(dvdnav_t *self);
/* /*
* Stop playing the current position and start playback at the * Stop playing the current position and start playback at the
* previous program (if it exists). * previous program (if it exists).
skipping to change at line 417 skipping to change at line 415
/* /*
* Return the current position (in blocks) within the current * Return the current position (in blocks) within the current
* program and the length (in blocks) of current program. * program and the length (in blocks) of current program.
* *
* If program chain based positioning is enabled * If program chain based positioning is enabled
* (see dvdnav_set_PGC_positioning_flag()), this will return the * (see dvdnav_set_PGC_positioning_flag()), this will return the
* relative position in and the length of the current program chain. * relative position in and the length of the current program chain.
*/ */
dvdnav_status_t dvdnav_get_position(dvdnav_t *self, uint32_t *pos, dvdnav_status_t dvdnav_get_position(dvdnav_t *self, uint32_t *pos,
uint32_t *len); uint32_t *len);
/********************************************************************* /*********************************************************************
* menu highlights * * menu highlights *
*********************************************************************/ *********************************************************************/
/* /*
* Most functions related to highlights take a NAV PCI packet as a paramete r. * Most functions related to highlights take a NAV PCI packet as a paramete r.
* While you can get such a packet from libdvdnav, this will result in * While you can get such a packet from libdvdnav, this will result in
* errors for players with internal FIFOs because due to the FIFO length, * errors for players with internal FIFOs because due to the FIFO length,
* libdvdnav will be ahead in the stream compared to what the user is * libdvdnav will be ahead in the stream compared to what the user is
skipping to change at line 461 skipping to change at line 459
* *
* Read the general notes above. * Read the general notes above.
* See also libdvdreads nav_types.h for definition of dsi_t. * See also libdvdreads nav_types.h for definition of dsi_t.
*/ */
dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self); dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self);
/* /*
* Get the area associated with a certain button. * Get the area associated with a certain button.
*/ */
dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode, dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode,
dvdnav_highlight_area_t *highlight ); dvdnav_highlight_area_t *highligh t);
/* /*
* Move button highlight around as suggested by function name (e.g. with ar row keys). * Move button highlight around as suggested by function name (e.g. with ar row keys).
*/ */
dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci); dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci);
dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci); dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci);
dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci); dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci);
dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci); dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci);
/* /*
skipping to change at line 514 skipping to change at line 512
/* /*
* The language codes expected by these functions are two character * The language codes expected by these functions are two character
* codes as defined in ISO639. * codes as defined in ISO639.
*/ */
/* /*
* Set which menu language we should use per default. * Set which menu language we should use per default.
*/ */
dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self, dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self,
char *code); char *code);
/* /*
* Set which audio language we should use per default. * Set which audio language we should use per default.
*/ */
dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self, dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self,
char *code); char *code);
/* /*
* Set which spu language we should use per default. * Set which spu language we should use per default.
*/ */
dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self, dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self,
char *code); char *code);
/********************************************************************* /*********************************************************************
* obtaining stream attributes * * obtaining stream attributes *
*********************************************************************/ *********************************************************************/
/* /*
* Return a string describing the title of the DVD. * Return a string describing the title of the DVD.
* This is an ID string encoded on the disc by the author. In many cases * This is an ID string encoded on the disc by the author. In many cases
* this is a descriptive string such as `THE_MATRIX' but sometimes is singu larly * this is a descriptive string such as `THE_MATRIX' but sometimes is singu larly
* uninformative such as `PDVD-011421'. Some DVD authors even forget to set this, * uninformative such as `PDVD-011421'. Some DVD authors even forget to set this,
skipping to change at line 662 skipping to change at line 660
/* /*
* Sets the current angle. If you try to follow a non existent angle * Sets the current angle. If you try to follow a non existent angle
* the call fails. * the call fails.
*/ */
dvdnav_status_t dvdnav_angle_change(dvdnav_t *self, int32_t angle); dvdnav_status_t dvdnav_angle_change(dvdnav_t *self, int32_t angle);
/* /*
* Returns the current angle and number of angles present. * Returns the current angle and number of angles present.
*/ */
dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angl e, dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angl e,
int32_t *number_of_angles); int32_t *number_of_angles);
/********************************************************************* /*********************************************************************
* domain queries * * domain queries *
*********************************************************************/ *********************************************************************/
/* /*
* Are we in the First Play domain? * Are we in the First Play domain?
*/ */
int8_t dvdnav_is_domain_fp(dvdnav_t *self); int8_t dvdnav_is_domain_fp(dvdnav_t *self);
 End of changes. 18 change blocks. 
23 lines changed or deleted 22 lines changed or added


 dvdnav_events.h   dvdnav_events.h 
skipping to change at line 34 skipping to change at line 34
#ifndef LIBDVDNAV_DVDNAV_EVENTS_H #ifndef LIBDVDNAV_DVDNAV_EVENTS_H
#define LIBDVDNAV_DVDNAV_EVENTS_H #define LIBDVDNAV_DVDNAV_EVENTS_H
/* /*
* DVDNAV_BLOCK_OK * DVDNAV_BLOCK_OK
* *
* A regular data block from the DVD has been returned. * A regular data block from the DVD has been returned.
* This one should be demuxed and decoded for playback. * This one should be demuxed and decoded for playback.
*/ */
#define DVDNAV_BLOCK_OK 0 #define DVDNAV_BLOCK_OK 0
/* /*
* DVDNAV_NOP * DVDNAV_NOP
* *
* Just ignore this. * Just ignore this.
*/ */
#define DVDNAV_NOP 1 #define DVDNAV_NOP 1
/* /*
* DVDNAV_STILL_FRAME * DVDNAV_STILL_FRAME
* *
* We have reached a still frame. The player application should wait * We have reached a still frame. The player application should wait
* the amount of time specified by the still's length while still handling * the amount of time specified by the still's length while still handling
* user input to make menus and other interactive stills work. * user input to make menus and other interactive stills work.
* The last delivered frame should be kept showing. * The last delivered frame should be kept showing.
* Once the still has timed out, call dvdnav_skip_still(). * Once the still has timed out, call dvdnav_skip_still().
* A length of 0xff means an infinite still which has to be skipped * A length of 0xff means an infinite still which has to be skipped
* indirectly by some user interaction. * indirectly by some user interaction.
*/ */
#define DVDNAV_STILL_FRAME 2 #define DVDNAV_STILL_FRAME 2
typedef struct { typedef struct {
/* The length (in seconds) the still frame should be displayed for, /* The length (in seconds) the still frame should be displayed for,
* or 0xff if infinite. */ * or 0xff if infinite. */
int length; int length;
} dvdnav_still_event_t; } dvdnav_still_event_t;
/* /*
* DVDNAV_SPU_STREAM_CHANGE * DVDNAV_SPU_STREAM_CHANGE
* *
* Inform the SPU decoding/overlaying engine to switch SPU channels. * Inform the SPU decoding/overlaying engine to switch SPU channels.
*/ */
#define DVDNAV_SPU_STREAM_CHANGE 3 #define DVDNAV_SPU_STREAM_CHANGE 3
typedef struct { typedef struct {
/* The physical (MPEG) stream number for widescreen SPU display. /* The physical (MPEG) stream number for widescreen SPU display.
* Use this, if you blend the SPU on an anamorphic image before * Use this, if you blend the SPU on an anamorphic image before
* unsqueezing it. */ * unsqueezing it. */
int physical_wide; int physical_wide;
/* The physical (MPEG) stream number for letterboxed display. /* The physical (MPEG) stream number for letterboxed display.
* Use this, if you blend the SPU on an anamorphic image after * Use this, if you blend the SPU on an anamorphic image after
* unsqueezing it. */ * unsqueezing it. */
skipping to change at line 94 skipping to change at line 94
/* The logical (DVD) stream number. */ /* The logical (DVD) stream number. */
int logical; int logical;
} dvdnav_spu_stream_change_event_t; } dvdnav_spu_stream_change_event_t;
/* /*
* DVDNAV_AUDIO_STREAM_CHANGE * DVDNAV_AUDIO_STREAM_CHANGE
* *
* Inform the audio decoder to switch channels. * Inform the audio decoder to switch channels.
*/ */
#define DVDNAV_AUDIO_STREAM_CHANGE 4 #define DVDNAV_AUDIO_STREAM_CHANGE 4
typedef struct { typedef struct {
/* The physical (MPEG) stream number. */ /* The physical (MPEG) stream number. */
int physical; int physical;
/* The logical (DVD) stream number. */ /* The logical (DVD) stream number. */
int logical; int logical;
} dvdnav_audio_stream_change_event_t; } dvdnav_audio_stream_change_event_t;
/* /*
* DVDNAV_VTS_CHANGE * DVDNAV_VTS_CHANGE
* *
* Some status information like video aspect and video scale permissions do * Some status information like video aspect and video scale permissions do
* not change inside a VTS. Therefore this event can be used to query such * not change inside a VTS. Therefore this event can be used to query such
* information only when necessary and update the decoding/displaying * information only when necessary and update the decoding/displaying
* accordingly. * accordingly.
*/ */
#define DVDNAV_VTS_CHANGE 5 #define DVDNAV_VTS_CHANGE 5
typedef struct { typedef struct {
int old_vtsN; /* the old VTS number */ int old_vtsN; /* the old VTS number */
dvd_read_domain_t old_domain; /* the old domain */ DVDDomain_t old_domain; /* the old domain */
int new_vtsN; /* the new VTS number */ int new_vtsN; /* the new VTS number */
dvd_read_domain_t new_domain; /* the new domain */ DVDDomain_t new_domain; /* the new domain */
} dvdnav_vts_change_event_t; } dvdnav_vts_change_event_t;
/* /*
* DVDNAV_CELL_CHANGE * DVDNAV_CELL_CHANGE
* *
* Some status information like the current Title and Part numbers do not * Some status information like the current Title and Part numbers do not
* change inside a cell. Therefore this event can be used to query such * change inside a cell. Therefore this event can be used to query such
* information only when necessary and update the decoding/displaying * information only when necessary and update the decoding/displaying
* accordingly. * accordingly.
* Some useful information for accurate time display is also reported * Some useful information for accurate time display is also reported
* together with this event. * together with this event.
*/ */
#define DVDNAV_CELL_CHANGE 6 #define DVDNAV_CELL_CHANGE 6
typedef struct { typedef struct {
int cellN; /* the new cell number */ int cellN; /* the new cell number */
int pgN; /* the current program number */ int pgN; /* the current program number */
int64_t cell_length; /* the length of the current cell in PTS ticks */ int64_t cell_length; /* the length of the current cell in PTS ticks */
int64_t pg_length; /* the length of the current program in PTS ticks */ int64_t pg_length; /* the length of the current program in PTS ticks */
int64_t pgc_length; /* the length of the current program chain in PTS ti cks */ int64_t pgc_length; /* the length of the current program chain in PTS ti cks */
int64_t cell_start; /* the start time of the current cell relatively to the PGC in PTS ticks */ int64_t cell_start; /* the start time of the current cell relatively to the PGC in PTS ticks */
int64_t pg_start; /* the start time of the current PG relatively to th e PGC in PTS ticks */ int64_t pg_start; /* the start time of the current PG relatively to th e PGC in PTS ticks */
} dvdnav_cell_change_event_t; } dvdnav_cell_change_event_t;
skipping to change at line 157 skipping to change at line 157
* highlight areas and VM commands of DVD menus, so they should in any * highlight areas and VM commands of DVD menus, so they should in any
* case be sent to the SPU decoder/overlaying engine for the menus to work. * case be sent to the SPU decoder/overlaying engine for the menus to work.
* NAV packets also provide a way to detect PTS discontinuities, because * NAV packets also provide a way to detect PTS discontinuities, because
* they carry the start and end PTS values for the current VOBU. * they carry the start and end PTS values for the current VOBU.
* (pci.vobu_s_ptm and pci.vobu_e_ptm) Whenever the start PTS of the * (pci.vobu_s_ptm and pci.vobu_e_ptm) Whenever the start PTS of the
* current NAV does not match the end PTS of the previous NAV, a PTS * current NAV does not match the end PTS of the previous NAV, a PTS
* discontinuity has occured. * discontinuity has occured.
* NAV packets can also be used for time display, because they are * NAV packets can also be used for time display, because they are
* timestamped relatively to the current Cell. * timestamped relatively to the current Cell.
*/ */
#define DVDNAV_NAV_PACKET 7 #define DVDNAV_NAV_PACKET 7
/* /*
* DVDNAV_STOP * DVDNAV_STOP
* *
* Applications should end playback here. A subsequent dvdnav_get_next_bloc k() * Applications should end playback here. A subsequent dvdnav_get_next_bloc k()
* call will restart the VM from the beginning of the DVD. * call will restart the VM from the beginning of the DVD.
*/ */
#define DVDNAV_STOP 8 #define DVDNAV_STOP 8
/* /*
* DVDNAV_HIGHLIGHT * DVDNAV_HIGHLIGHT
* *
* The current button highlight changed. Inform the overlaying engine to * The current button highlight changed. Inform the overlaying engine to
* highlight a different button. Please note, that at the moment only mode 1 * highlight a different button. Please note, that at the moment only mode 1
* highlights are reported this way. That means, when the button highlight * highlights are reported this way. That means, when the button highlight
* has been moved around by some function call, you will receive an event * has been moved around by some function call, you will receive an event
* telling you the new button. But when a button gets activated, you have * telling you the new button. But when a button gets activated, you have
* to handle the mode 2 highlighting (that is some different colour the * to handle the mode 2 highlighting (that is some different colour the
* button turns to on activation) in your application. * button turns to on activation) in your application.
*/ */
#define DVDNAV_HIGHLIGHT 9 #define DVDNAV_HIGHLIGHT 9
typedef struct { typedef struct {
/* highlight mode: 0 - hide, 1 - show, 2 - activate, currently always 1 * / /* highlight mode: 0 - hide, 1 - show, 2 - activate, currently always 1 * /
int display; int display;
/* FIXME: these fields are currently not set */ /* FIXME: these fields are currently not set */
uint32_t palette; /* The CLUT entries for the highlight palette uint32_t palette; /* The CLUT entries for the highlight palette
(4-bits per entry -> 4 entries) */ (4-bits per entry -> 4 entries) */
uint16_t sx,sy,ex,ey; /* The start/end x,y positions */ uint16_t sx,sy,ex,ey; /* The start/end x,y positions */
uint32_t pts; /* Highlight PTS to match with SPU */ uint32_t pts; /* Highlight PTS to match with SPU */
/* button number for the SPU decoder/overlaying engine */ /* button number for the SPU decoder/overlaying engine */
uint32_t buttonN; uint32_t buttonN;
} dvdnav_highlight_event_t; } dvdnav_highlight_event_t;
/* /*
* DVDNAV_SPU_CLUT_CHANGE * DVDNAV_SPU_CLUT_CHANGE
* *
* Inform the SPU decoder/overlaying engine to update its colour lookup tab le. * Inform the SPU decoder/overlaying engine to update its colour lookup tab le.
* The CLUT is given as 16 uint32_t's in the buffer. * The CLUT is given as 16 uint32_t's in the buffer.
*/ */
#define DVDNAV_SPU_CLUT_CHANGE 10 #define DVDNAV_SPU_CLUT_CHANGE 10
/* /*
* DVDNAV_HOP_CHANNEL * DVDNAV_HOP_CHANNEL
* *
* A non-seamless operation has been performed. Applications can drop all * A non-seamless operation has been performed. Applications can drop all
* their internal fifo's content, which will speed up the response. * their internal fifo's content, which will speed up the response.
*/ */
#define DVDNAV_HOP_CHANNEL 12 #define DVDNAV_HOP_CHANNEL 12
/* /*
* DVDNAV_WAIT * DVDNAV_WAIT
* *
* We have reached a point in DVD playback, where timing is critical. * We have reached a point in DVD playback, where timing is critical.
* Player application with internal fifos can introduce state * Player application with internal fifos can introduce state
* inconsistencies, because libdvdnav is always the fifo's length * inconsistencies, because libdvdnav is always the fifo's length
* ahead in the stream compared to what the application sees. * ahead in the stream compared to what the application sees.
* Such applications should wait until their fifos are empty * Such applications should wait until their fifos are empty
* when they receive this type of event. * when they receive this type of event.
* Once this is achieved, call dvdnav_skip_wait(). * Once this is achieved, call dvdnav_skip_wait().
*/ */
#define DVDNAV_WAIT 13 #define DVDNAV_WAIT 13
#endif /* LIBDVDNAV_DVDNAV_EVENTS_H */ #endif /* LIBDVDNAV_DVDNAV_EVENTS_H */
 End of changes. 16 change blocks. 
16 lines changed or deleted 16 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/