libbluray
Classes | Defines | Typedefs | Enumerations | Functions

src/libbluray/bluray.h File Reference

#include <stdint.h>

Go to the source code of this file.

Classes

struct  bd_stream_info
struct  bd_clip
struct  bd_chapter
struct  bd_title_info
struct  BLURAY_DISC_INFO
struct  BD_EVENT

Defines

#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)

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_title_info BLURAY_TITLE_INFO
typedef void(* bd_overlay_proc_f )(void *, const struct bd_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
}
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_player_setting {
  BLURAY_PLAYER_SETTING_PARENTAL = 13, BLURAY_PLAYER_SETTING_AUDIO_CAP = 15, 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_VIDEO_CAP = 29,
  BLURAY_PLAYER_SETTING_TEXT_CAP = 30, BLURAY_PLAYER_SETTING_PLAYER_PROFILE = 31
}
enum  bd_event_e {
  BD_EVENT_NONE = 0, BD_EVENT_ERROR, BD_EVENT_ANGLE, BD_EVENT_TITLE,
  BD_EVENT_PLAYLIST, BD_EVENT_PLAYITEM, BD_EVENT_CHAPTER, BD_EVENT_AUDIO_STREAM,
  BD_EVENT_IG_STREAM, BD_EVENT_PG_TEXTST_STREAM, BD_EVENT_PIP_PG_TEXTST_STREAM, BD_EVENT_SECONDARY_AUDIO_STREAM,
  BD_EVENT_SECONDARY_VIDEO_STREAM, BD_EVENT_PG_TEXTST, BD_EVENT_PIP_PG_TEXTST, BD_EVENT_SECONDARY_AUDIO,
  BD_EVENT_SECONDARY_VIDEO, BD_EVENT_SECONDARY_VIDEO_SIZE, BD_EVENT_MENU_PAGE_ID, BD_EVENT_SELECTED_BUTTON_ID,
  BD_EVENT_POPUP_OFF, BD_EVENT_ENABLE_BUTTON, BD_EVENT_DISABLE_BUTTON, BD_EVENT_STILL
}

Functions

uint32_t bd_get_titles (BLURAY *bd, uint8_t flags)
BLURAY_TITLE_INFObd_get_title_info (BLURAY *bd, uint32_t title_idx)
BLURAY_TITLE_INFObd_get_playlist_info (BLURAY *bd, uint32_t playlist)
void bd_free_title_info (BLURAY_TITLE_INFO *title_info)
BLURAY * bd_open (const char *device_path, const char *keyfile_path)
void bd_close (BLURAY *bd)
int64_t bd_seek (BLURAY *bd, uint64_t pos)
int64_t bd_seek_time (BLURAY *bd, uint64_t tick)
int bd_read (BLURAY *bd, unsigned char *buf, int len)
int64_t bd_seek_chapter (BLURAY *bd, unsigned chapter)
int64_t bd_chapter_pos (BLURAY *bd, unsigned chapter)
uint32_t bd_get_current_chapter (BLURAY *bd)
int64_t bd_seek_mark (BLURAY *bd, unsigned mark)
int bd_select_playlist (BLURAY *bd, uint32_t playlist)
int bd_select_title (BLURAY *bd, uint32_t title)
int bd_select_angle (BLURAY *bd, unsigned angle)
void bd_seamless_angle_change (BLURAY *bd, unsigned angle)
uint64_t bd_get_title_size (BLURAY *bd)
uint32_t bd_get_current_title (BLURAY *bd)
unsigned bd_get_current_angle (BLURAY *bd)
uint64_t bd_tell (BLURAY *bd)
uint64_t bd_tell_time (BLURAY *bd)
const BLURAY_DISC_INFObd_get_disc_info (BLURAY *)
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 *s)
int bd_start_bdj (BLURAY *bd, const char *start_object)
void bd_stop_bdj (BLURAY *bd)
int bd_play (BLURAY *bd)
int bd_read_ext (BLURAY *bd, unsigned char *buf, int len, BD_EVENT *event)
int bd_get_event (BLURAY *bd, BD_EVENT *event)
int bd_play_title (BLURAY *bd, unsigned title)
int bd_menu_call (BLURAY *bd)
void bd_register_overlay_proc (BLURAY *bd, void *handle, bd_overlay_proc_f func)
void bd_user_input (BLURAY *bd, int64_t pts, uint32_t key)

Detailed Description

external API header


Define Documentation

#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)

Free libbluray objects

Parameters:
bdBLURAY object
void bd_free_title_info ( BLURAY_TITLE_INFO title_info)

Free BLURAY_TITLE_INFO object

Parameters:
title_infoBLURAY_TITLE_INFO object
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
BLURAY_TITLE_INFO* bd_get_playlist_info ( BLURAY *  bd,
uint32_t  playlist 
)

Get information about a playlist

Parameters:
bdBLURAY object
playlistplaylist number
Returns:
allocated BLURAY_TITLE_INFO object, NULL on error
BLURAY_TITLE_INFO* bd_get_title_info ( BLURAY *  bd,
uint32_t  title_idx 
)

Get information about a title

Parameters:
bdBLURAY object
title_idxtitle index number
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 
)

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
Returns:
number of titles found
BLURAY* bd_open ( const char *  device_path,
const char *  keyfile_path 
)

Initializes libbluray objects

Parameters:
device_pathpath to mounted Blu-ray disc
keyfile_pathpath to KEYDB.cfg (may be NULL)
Returns:
allocated BLURAY object, NULL 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
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 corrently 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_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 registers

Parameters:
bdBLURAY object
idxPlayer setting register
valueNew value for player setting register
Returns:
1 on success, 0 on error (invalid setting)
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
 All Classes Files Functions Defines