libbluray: src/libbluray/bluray.h File Reference
libbluray
 All Classes Files Functions Macros
Classes | Macros | Typedefs | Enumerations | Functions
bluray.h File Reference
#include <stdint.h>

Go to the source code of this file.

Classes

struct  BLURAY_TITLE
struct  BLURAY_DISC_INFO
struct  bd_stream_info
struct  bd_clip
struct  bd_chapter
struct  bd_mark
struct  bd_title_info
struct  bd_sound_effect
struct  BD_EVENT

Macros

#define TITLES_ALL   0
#define TITLES_FILTER_DUP_TITLE   0x01
#define TITLES_FILTER_DUP_CLIP   0x02
#define TITLES_RELEVANT   (TITLES_FILTER_DUP_TITLE | TITLES_FILTER_DUP_CLIP)
#define BD_AACS_CORRUPTED_DISC   -1
#define BD_AACS_NO_CONFIG   -2
#define BD_AACS_NO_PK   -3
#define BD_AACS_NO_CERT   -4
#define BD_AACS_CERT_REVOKED   -5
#define BD_AACS_MMC_FAILED   -6
#define BLURAY_PG_TEXTST_STREAM   1
#define BD_ERROR_HDMV   1
#define BD_ERROR_BDJ   2
#define BD_ERROR_AACS   3
#define BD_ERROR_BDPLUS   4
#define BLURAY_TITLE_FIRST_PLAY   0xffff
#define BLURAY_TITLE_TOP_MENU   0
#define BLURAY_KIT_PLAY   0x1
#define BLURAY_KIT_STOP   0x2
#define BLURAY_KIT_FFW   0x4
#define BLURAY_KIT_REW   0x8
#define BLURAY_KIT_TRACK_NEXT   0x10
#define BLURAY_KIT_TRACK_PREV   0x20
#define BLURAY_KIT_PAUSE   0x40
#define BLURAY_KIT_STILL_OFF   0x80
#define BLURAY_KIT_SEC_AUDIO   0x100
#define BLURAY_KIT_SEC_VIDEO   0x200
#define BLURAY_KIT_PG_TEXTST   0x400
#define BLURAY_UO_MENU_CALL   0x1
#define BLURAY_UO_TITLE_SEARCH   0x2

Typedefs

typedef struct bluray BLURAY
typedef struct bd_stream_info BLURAY_STREAM_INFO
typedef struct bd_clip BLURAY_CLIP_INFO
typedef struct bd_chapter BLURAY_TITLE_CHAPTER
typedef struct bd_mark BLURAY_TITLE_MARK
typedef struct bd_title_info BLURAY_TITLE_INFO
typedef struct bd_sound_effect BLURAY_SOUND_EFFECT
typedef void(* bd_overlay_proc_f )(void *, const struct bd_overlay_s *const)
typedef void(* bd_argb_overlay_proc_f )(void *, const struct bd_argb_overlay_s *const)

Enumerations

enum  bd_stream_type_e {
  BLURAY_STREAM_TYPE_VIDEO_MPEG1 = 0x01, BLURAY_STREAM_TYPE_VIDEO_MPEG2 = 0x02, BLURAY_STREAM_TYPE_AUDIO_MPEG1 = 0x03, BLURAY_STREAM_TYPE_AUDIO_MPEG2 = 0x04,
  BLURAY_STREAM_TYPE_AUDIO_LPCM = 0x80, BLURAY_STREAM_TYPE_AUDIO_AC3 = 0x81, BLURAY_STREAM_TYPE_AUDIO_DTS = 0x82, BLURAY_STREAM_TYPE_AUDIO_TRUHD = 0x83,
  BLURAY_STREAM_TYPE_AUDIO_AC3PLUS = 0x84, BLURAY_STREAM_TYPE_AUDIO_DTSHD = 0x85, BLURAY_STREAM_TYPE_AUDIO_DTSHD_MASTER = 0x86, BLURAY_STREAM_TYPE_VIDEO_VC1 = 0xea,
  BLURAY_STREAM_TYPE_VIDEO_H264 = 0x1b, BLURAY_STREAM_TYPE_SUB_PG = 0x90, BLURAY_STREAM_TYPE_SUB_IG = 0x91, BLURAY_STREAM_TYPE_SUB_TEXT = 0x92,
  BLURAY_STREAM_TYPE_AUDIO_AC3PLUS_SECONDARY = 0xa1, BLURAY_STREAM_TYPE_AUDIO_DTSHD_SECONDARY = 0xa2
}
enum  bd_video_format_e {
  BLURAY_VIDEO_FORMAT_480I = 1, BLURAY_VIDEO_FORMAT_576I = 2, BLURAY_VIDEO_FORMAT_480P = 3, BLURAY_VIDEO_FORMAT_1080I = 4,
  BLURAY_VIDEO_FORMAT_720P = 5, BLURAY_VIDEO_FORMAT_1080P = 6, BLURAY_VIDEO_FORMAT_576P = 7
}
enum  bd_video_rate_e {
  BLURAY_VIDEO_RATE_24000_1001 = 1, BLURAY_VIDEO_RATE_24 = 2, BLURAY_VIDEO_RATE_25 = 3, BLURAY_VIDEO_RATE_30000_1001 = 4,
  BLURAY_VIDEO_RATE_50 = 6, BLURAY_VIDEO_RATE_60000_1001 = 7
}
enum  bd_video_aspect_e { BLURAY_ASPECT_RATIO_4_3 = 2, BLURAY_ASPECT_RATIO_16_9 = 3 }
enum  bd_audio_format_e { BLURAY_AUDIO_FORMAT_MONO = 1, BLURAY_AUDIO_FORMAT_STEREO = 3, BLURAY_AUDIO_FORMAT_MULTI_CHAN = 6, BLURAY_AUDIO_FORMAT_COMBO = 12 }
enum  bd_audio_rate_e {
  BLURAY_AUDIO_RATE_48 = 1, BLURAY_AUDIO_RATE_96 = 4, BLURAY_AUDIO_RATE_192 = 5, BLURAY_AUDIO_RATE_192_COMBO = 12,
  BLURAY_AUDIO_RATE_96_COMBO = 14
}
enum  bd_char_code_e {
  BLURAY_TEXT_CHAR_CODE_UTF8 = 0x01, BLURAY_TEXT_CHAR_CODE_UTF16BE = 0x02, BLURAY_TEXT_CHAR_CODE_SHIFT_JIS = 0x03, BLURAY_TEXT_CHAR_CODE_EUC_KR = 0x04,
  BLURAY_TEXT_CHAR_CODE_GB18030_20001 = 0x05, BLURAY_TEXT_CHAR_CODE_CN_GB = 0x06, BLURAY_TEXT_CHAR_CODE_BIG5 = 0x07
}
enum  bd_still_mode_e { BLURAY_STILL_NONE = 0x00, BLURAY_STILL_TIME = 0x01, BLURAY_STILL_INFINITE = 0x02 }
enum  bd_player_setting {
  BLURAY_PLAYER_SETTING_AUDIO_LANG = 16, BLURAY_PLAYER_SETTING_PG_LANG = 17, BLURAY_PLAYER_SETTING_MENU_LANG = 18, BLURAY_PLAYER_SETTING_COUNTRY_CODE = 19,
  BLURAY_PLAYER_SETTING_REGION_CODE = 20, BLURAY_PLAYER_SETTING_OUTPUT_PREFER = 21, BLURAY_PLAYER_SETTING_PARENTAL = 13, BLURAY_PLAYER_SETTING_AUDIO_CAP = 15,
  BLURAY_PLAYER_SETTING_VIDEO_CAP = 29, BLURAY_PLAYER_SETTING_DISPLAY_CAP = 23, BLURAY_PLAYER_SETTING_3D_CAP = 24, BLURAY_PLAYER_SETTING_TEXT_CAP = 30,
  BLURAY_PLAYER_SETTING_PLAYER_PROFILE = 31, BLURAY_PLAYER_SETTING_DECODE_PG = 0x100, BLURAY_PLAYER_PERSISTENT_ROOT = 400, BLURAY_PLAYER_CACHE_ROOT = 401
}
enum  bd_event_e {
  BD_EVENT_NONE = 0, BD_EVENT_ERROR = 1, BD_EVENT_READ_ERROR = 2, BD_EVENT_ENCRYPTED = 3,
  BD_EVENT_ANGLE = 4, BD_EVENT_TITLE = 5, BD_EVENT_PLAYLIST = 6, BD_EVENT_PLAYITEM = 7,
  BD_EVENT_CHAPTER = 8, BD_EVENT_PLAYMARK = 30, BD_EVENT_END_OF_TITLE = 9, BD_EVENT_AUDIO_STREAM = 10,
  BD_EVENT_IG_STREAM = 11, BD_EVENT_PG_TEXTST_STREAM = 12, BD_EVENT_PIP_PG_TEXTST_STREAM = 13, BD_EVENT_SECONDARY_AUDIO_STREAM = 14,
  BD_EVENT_SECONDARY_VIDEO_STREAM = 15, BD_EVENT_PG_TEXTST = 16, BD_EVENT_PIP_PG_TEXTST = 17, BD_EVENT_SECONDARY_AUDIO = 18,
  BD_EVENT_SECONDARY_VIDEO = 19, BD_EVENT_SECONDARY_VIDEO_SIZE = 20, BD_EVENT_PLAYLIST_STOP = 31, BD_EVENT_DISCONTINUITY = 28,
  BD_EVENT_SEEK = 21, BD_EVENT_STILL = 22, BD_EVENT_STILL_TIME = 23, BD_EVENT_SOUND_EFFECT = 24,
  BD_EVENT_IDLE = 29, BD_EVENT_POPUP = 25, BD_EVENT_MENU = 26, BD_EVENT_STEREOSCOPIC_STATUS = 27,
  BD_EVENT_KEY_INTEREST_TABLE = 32, BD_EVENT_UO_MASK_CHANGED = 33
}

Functions

void bd_get_version (int *major, int *minor, int *micro)
BLURAY * bd_open (const char *device_path, const char *keyfile_path)
BLURAY * bd_init (void)
int bd_open_disc (BLURAY *bd, const char *device_path, const char *keyfile_path)
int bd_open_stream (BLURAY *bd, void *read_blocks_handle, int(*read_blocks)(void *handle, void *buf, int lba, int num_blocks))
void bd_close (BLURAY *bd)
const BLURAY_DISC_INFObd_get_disc_info (BLURAY *bd)
struct meta_dl * bd_get_meta (BLURAY *bd)
uint32_t bd_get_titles (BLURAY *bd, uint8_t flags, uint32_t min_title_length)
int bd_get_main_title (BLURAY *bd)
BLURAY_TITLE_INFObd_get_title_info (BLURAY *bd, uint32_t title_idx, unsigned angle)
void bd_free_title_info (BLURAY_TITLE_INFO *title_info)
int bd_select_title (BLURAY *bd, uint32_t title)
int bd_select_playlist (BLURAY *bd, uint32_t playlist)
uint32_t bd_get_current_title (BLURAY *bd)
int bd_read (BLURAY *bd, unsigned char *buf, int len)
int64_t bd_seek (BLURAY *bd, uint64_t pos)
int64_t bd_seek_time (BLURAY *bd, uint64_t tick)
int64_t bd_seek_chapter (BLURAY *bd, unsigned chapter)
int64_t bd_seek_mark (BLURAY *bd, unsigned mark)
int64_t bd_seek_playitem (BLURAY *bd, unsigned clip_ref)
int bd_select_angle (BLURAY *bd, unsigned angle)
void bd_seamless_angle_change (BLURAY *bd, unsigned angle)
void bd_select_stream (BLURAY *bd, uint32_t stream_type, uint32_t stream_id, uint32_t enable_flag)
int64_t bd_chapter_pos (BLURAY *bd, unsigned chapter)
uint32_t bd_get_current_chapter (BLURAY *bd)
uint64_t bd_get_title_size (BLURAY *bd)
unsigned bd_get_current_angle (BLURAY *bd)
uint64_t bd_tell (BLURAY *bd)
uint64_t bd_tell_time (BLURAY *bd)
int bd_set_player_setting (BLURAY *bd, uint32_t idx, uint32_t value)
int bd_set_player_setting_str (BLURAY *bd, uint32_t idx, const char *value)
int bd_get_event (BLURAY *bd, BD_EVENT *event)
void bd_register_overlay_proc (BLURAY *bd, void *handle, bd_overlay_proc_f func)
void bd_register_argb_overlay_proc (BLURAY *bd, void *handle, bd_argb_overlay_proc_f func, struct bd_argb_buffer_s *buf)
int bd_play (BLURAY *bd)
int bd_play_title (BLURAY *bd, unsigned title)
int bd_menu_call (BLURAY *bd, int64_t pts)
int bd_read_ext (BLURAY *bd, unsigned char *buf, int len, BD_EVENT *event)
int bd_read_skip_still (BLURAY *bd)
BLURAY_TITLE_INFObd_get_playlist_info (BLURAY *bd, uint32_t playlist, unsigned angle)
int bd_get_sound_effect (BLURAY *bd, unsigned sound_id, struct bd_sound_effect *effect)
void bd_set_scr (BLURAY *bd, int64_t pts)
int bd_user_input (BLURAY *bd, int64_t pts, uint32_t key)
int bd_mouse_select (BLURAY *bd, int64_t pts, uint16_t x, uint16_t y)
struct clpi_cl * bd_get_clpi (BLURAY *bd, unsigned clip_ref)
struct clpi_cl * bd_read_clpi (const char *clpi_file)
void bd_free_clpi (struct clpi_cl *cl)
struct mpls_pl * bd_read_mpls (const char *mpls_file)
void bd_free_mpls (struct mpls_pl *)
struct mobj_objects * bd_read_mobj (const char *mobj_file)
void bd_free_mobj (struct mobj_objects *)
struct bdjo_data * bd_read_bdjo (const char *bdjo_file)
void bd_free_bdjo (struct bdjo_data *)
int bd_start_bdj (BLURAY *bd, const char *start_object)
void bd_stop_bdj (BLURAY *bd)

Detailed Description

external API header

Macro Definition Documentation

#define BLURAY_PG_TEXTST_STREAM   1

Select stream (PG / TextST track)

This function can be used to override automatic stream selection. Selecting the stream is useful only when using libbluray internal decoders or stream is stored in a sub-path.

Parameters
bdBLURAY object
stream_typeBLURAY_*_STREAM
stream_idstream number (1..N)
enable_flagset to 0 to disable streams of this type
#define TITLES_ALL   0

all titles.

#define TITLES_FILTER_DUP_CLIP   0x02

remove titles that have duplicate clips.

#define TITLES_FILTER_DUP_TITLE   0x01

remove duplicate titles.

#define TITLES_RELEVANT   (TITLES_FILTER_DUP_TITLE | TITLES_FILTER_DUP_CLIP)

remove duplicate titles and clips

Function Documentation

int64_t bd_chapter_pos ( BLURAY *  bd,
unsigned  chapter 
)

Find the byte position of a chapter

Parameters
bdBLURAY object
chapterchapter to find position of
Returns
seek position of chapter start
void bd_close ( BLURAY *  bd)

Close BluRay disc

Parameters
bdBLURAY object
void bd_free_clpi ( struct clpi_cl *  cl)

Free CLPI_CL object

Parameters
clCLPI_CL objects
void bd_free_title_info ( BLURAY_TITLE_INFO title_info)

Free BLURAY_TITLE_INFO object

Parameters
title_infoBLURAY_TITLE_INFO object
struct clpi_cl* bd_get_clpi ( BLURAY *  bd,
unsigned  clip_ref 
)
read

Get copy of clip information for requested playitem.

Parameters
bdBLURAY objects
clip_refrequested playitem number
Returns
pointer to allocated CLPI_CL object on success, NULL on error
unsigned bd_get_current_angle ( BLURAY *  bd)

Return the current angle

Parameters
bdBLURAY object
Returns
current angle
uint32_t bd_get_current_chapter ( BLURAY *  bd)

Get the current chapter

Parameters
bdBLURAY object
Returns
current chapter
uint32_t bd_get_current_title ( BLURAY *  bd)

Returns the current title index

Parameters
bdBLURAY object
Returns
current title index
const BLURAY_DISC_INFO* bd_get_disc_info ( BLURAY *  bd)

Get information about current BluRay disc

Parameters
bdBLURAY object
Returns
pointer to BLURAY_DISC_INFO object, NULL on error
int bd_get_event ( BLURAY *  bd,
BD_EVENT event 
)

Get event from libbluray event queue.

Parameters
bdBLURAY object
eventnext BD_EVENT from event queue, NULL to initialize event queue
Returns
1 on success, 0 if no events
int bd_get_main_title ( BLURAY *  bd)

Get main title Returned number is an index to the list created by bd_get_titles()

Parameters
bdBLURAY object
Returns
title index of main title, -1 on error
BLURAY_TITLE_INFO* bd_get_playlist_info ( BLURAY *  bd,
uint32_t  playlist,
unsigned  angle 
)

Get information about a playlist

Parameters
bdBLURAY object
playlistplaylist number
angleangle number (chapter offsets and clip size depend on selected angle)
Returns
allocated BLURAY_TITLE_INFO object, NULL on error
int bd_get_sound_effect ( BLURAY *  bd,
unsigned  sound_id,
struct bd_sound_effect effect 
)

Get sound effect

Parameters
bdBLURAY object
effect_idsound effect id (0...N)
effectsound effect data
Returns
<0 when no effects, 0 when id out of range, 1 on success
BLURAY_TITLE_INFO* bd_get_title_info ( BLURAY *  bd,
uint32_t  title_idx,
unsigned  angle 
)

Get information about a title

Parameters
bdBLURAY object
title_idxtitle index number
angleangle number (chapter offsets and clip size depend on selected angle)
Returns
allocated BLURAY_TITLE_INFO object, NULL on error
uint64_t bd_get_title_size ( BLURAY *  bd)

Returns file size in bytes of currently selected title, 0 in no title selected

Parameters
bdBLURAY object
Returns
file size in bytes of currently selected title, 0 if no title selected
uint32_t bd_get_titles ( BLURAY *  bd,
uint8_t  flags,
uint32_t  min_title_length 
)

Get number of titles (playlists)

This must be called after bd_open() and before bd_select_title(). Populates the title list in BLURAY. Filtering of the returned list is controled through title flags

Parameters
bdBLURAY object
flagstitle flags
min_title_lengthfilter out titles shorter than min_title_length seconds
Returns
number of titles found
void bd_get_version ( int *  major,
int *  minor,
int *  micro 
)

Get library version

BLURAY* bd_init ( void  )

Initialize BLURAY object

Resulting object can be passed to following bd_open_??? functions.

Returns
allocated BLURAY object, NULL if error
int bd_menu_call ( BLURAY *  bd,
int64_t  pts 
)

Open BluRay disc Top Menu.

Current pts is needed for resuming playback when menu is closed.

Parameters
bdBLURAY object
ptscurrent playback position (1/90000s) or -1
Returns
1 on success, 0 if error
int bd_mouse_select ( BLURAY *  bd,
int64_t  pts,
uint16_t  x,
uint16_t  y 
)

Select menu button at location (x,y).

Parameters
bdBLURAY object
ptscurrent playback position (1/90000s) or -1
xmouse pointer x-position
ymouse pointer y-position
Returns
<0 on error, 0 when mouse is outside of buttons, 1 when mouse is inside button
BLURAY* bd_open ( const char *  device_path,
const char *  keyfile_path 
)

Open BluRay disc

Shortcut for bd_open_disc(bd_init(), device_path, keyfile_path)

Parameters
device_pathpath to mounted Blu-ray disc, device or image file
keyfile_pathpath to KEYDB.cfg (may be NULL)
Returns
allocated BLURAY object, NULL if error
int bd_open_disc ( BLURAY *  bd,
const char *  device_path,
const char *  keyfile_path 
)

Open BluRay disc

Parameters
bdBLURAY object
device_pathpath to mounted Blu-ray disc, device or image file
keyfile_pathpath to KEYDB.cfg (may be NULL)
Returns
1 on success, 0 if error
int bd_open_stream ( BLURAY *  bd,
void *  read_blocks_handle,
int(*)(void *handle, void *buf, int lba, int num_blocks)  read_blocks 
)

Open BluRay disc

Parameters
bdBLURAY object
handleopaque handle for read_blocks
read_blocksfunction used to read disc blocks
Returns
1 on success, 0 if error
int bd_play ( BLURAY *  bd)

Start playing disc with on-disc menus

Playback is started from "First Play" title.

Parameters
bdBLURAY object
Returns
1 on success, 0 if error
int bd_play_title ( BLURAY *  bd,
unsigned  title 
)

Play a title (from disc index).

Title 0 = Top Menu Title 0xffff = First Play title Number of titles can be found from BLURAY_DISC_INFO.

Parameters
bdBLURAY object
titletitle number from disc index
Returns
1 on success, 0 if error
int bd_read ( BLURAY *  bd,
unsigned char *  buf,
int  len 
)

Read from currently selected title file, decrypt if possible

Parameters
bdBLURAY object
bufbuffer to read data into
lensize of data to be read
Returns
size of data read, -1 if error, 0 if EOF
int bd_read_ext ( BLURAY *  bd,
unsigned char *  buf,
int  len,
BD_EVENT event 
)

Read from currently playing title.

When playing disc in navigation mode this function must be used instead of bd_read().

Parameters
bdBLURAY object
bufbuffer to read data into
lensize of data to be read
eventnext BD_EVENT from event queue (BD_EVENT_NONE if no events)
Returns
size of data read, -1 if error, 0 if event needs to be handled first, 0 if end of title was reached
int bd_read_skip_still ( BLURAY *  bd)

Continue reading after still mode clip

Parameters
bdBLURAY object
Returns
0 on error
void bd_register_argb_overlay_proc ( BLURAY *  bd,
void *  handle,
bd_argb_overlay_proc_f  func,
struct bd_argb_buffer_s *  buf 
)

Register handler for ARGB overlays

ARGB overlays are used with BD-J (Java) menus.

Callback function can be called at any time by a thread created by Java VM. No more than single call for each overlay plane are executed in paraller.

Parameters
bdBLURAY object
handleapplication-specific handle that will be passed to handler function
funchandler function pointer
bufoptional application-allocated frame buffer
Returns
1 on success, 0 if error
void bd_register_overlay_proc ( BLURAY *  bd,
void *  handle,
bd_overlay_proc_f  func 
)

Register handler for compressed YUV overlays

Compressed YUV overlays are used with presentation graphics (subtitles) and HDMV mode menus. This function can be used when player does not support full-screen ARGB overlays or player can optimize drawing of compressed overlays, color space conversion etc.

Callback function is called from application thread context while bd_*() functions are called.

Note that BD-J mode outputs only ARGB graphics.

Parameters
bdBLURAY object
handleapplication-specific handle that will be passed to handler function
funchandler function pointer
Returns
1 on success, 0 if error
void bd_seamless_angle_change ( BLURAY *  bd,
unsigned  angle 
)

Initiate seamless angle change

Parameters
bdBLURAY object
angleangle to change to
int64_t bd_seek ( BLURAY *  bd,
uint64_t  pos 
)

Seek to pos in currently selected title

Parameters
bdBLURAY object
posposition to seek to
Returns
current seek position
int64_t bd_seek_chapter ( BLURAY *  bd,
unsigned  chapter 
)

Seek to a chapter. First chapter is 0

Parameters
bdBLURAY object
chapterchapter to seek to
Returns
current seek position
int64_t bd_seek_mark ( BLURAY *  bd,
unsigned  mark 
)

Seek to a playmark. First mark is 0

Parameters
bdBLURAY object
markplaymark to seek to
Returns
current seek position
int64_t bd_seek_playitem ( BLURAY *  bd,
unsigned  clip_ref 
)

Seek to a playitem.

Parameters
bdBLURAY object
playitemto seek to
Returns
current seek position
int64_t bd_seek_time ( BLURAY *  bd,
uint64_t  tick 
)

Seek to specific time in 90Khz ticks

Parameters
bdBLURAY ojbect
ticktick count
Returns
current seek position
int bd_select_angle ( BLURAY *  bd,
unsigned  angle 
)

Set the angle to play

Parameters
bdBLURAY object
angleangle to play
Returns
1 on success, 0 if error
int bd_select_playlist ( BLURAY *  bd,
uint32_t  playlist 
)

Select a playlist

Parameters
bdBLURAY object
playlistplaylist to select
Returns
1 on success, 0 if error
int bd_select_title ( BLURAY *  bd,
uint32_t  title 
)

Select the title from the list created by bd_get_titles()

Parameters
bdBLURAY object
titletitle to select
Returns
1 on success, 0 if error
int bd_set_player_setting ( BLURAY *  bd,
uint32_t  idx,
uint32_t  value 
)

Update player setting

Bit masks and enumeration values are defined in player_settings.h.

Parameters
bdBLURAY object
idxPlayer setting to update
valueNew value for player setting
Returns
1 on success, 0 on error (invalid setting)
void bd_set_scr ( BLURAY *  bd,
int64_t  pts 
)

Update current pts.

Parameters
bdBLURAY object
ptscurrent playback position (1/90000s) or -1
uint64_t bd_tell ( BLURAY *  bd)

Return current pos

Parameters
bdBLURAY object
Returns
current seek position
uint64_t bd_tell_time ( BLURAY *  bd)

Return current time

Parameters
bdBLURAY object
Returns
current time
int bd_user_input ( BLURAY *  bd,
int64_t  pts,
uint32_t  key 
)

Pass user input to graphics controller. Keys are defined in libbluray/keys.h. Current pts can be updated by using BD_VK_NONE key. This is required for animated menus.

Parameters
bdBLURAY object
ptscurrent playback position (1/90000s) or -1
keyinput key
Returns
<0 on error, 0 on success, >0 if selection/activation changed