Skip to content
GitLab
Explore
Sign in
Register
Commits on Source (6)
nav_clip_time_search: allow NULL for title packet
· 4232318e
hpi1
authored
Dec 31, 2018
4232318e
Add missing includes
· 34fe270c
hpi1
authored
Dec 31, 2018
34fe270c
bdnav: add nav_clip_textst_font()
· 890b21d1
hpi1
authored
Dec 31, 2018
890b21d1
Cosmetics
· f8b293a8
hpi1
authored
Dec 31, 2018
f8b293a8
bluray.c: use nav_ functions instead of clpi_ functions
· f59cd460
hpi1
authored
Dec 31, 2018
f59cd460
bdnav: hide internal clpi data
· 64e24886
hpi1
authored
Dec 31, 2018
64e24886
Hide whitespace changes
Inline
Side-by-side
src/libbluray/bdnav/clpi_parse.c
View file @
64e24886
...
...
@@ -23,6 +23,7 @@
#endif
#include
"clpi_parse.h"
#include
"clpi_data.h"
#include
"extdata_parse.h"
#include
"bdmv_parse.h"
...
...
src/libbluray/bdnav/clpi_parse.h
View file @
64e24886
...
...
@@ -20,19 +20,21 @@
#if !defined(_CLPI_PARSE_H_)
#define _CLPI_PARSE_H_
#include
"clpi_data.h"
#include
"util/attributes.h"
#include
<stdint.h>
struct
clpi_cl
;
struct
bd_disc
;
BD_PRIVATE
uint32_t
clpi_find_stc_spn
(
const
CLPI_CL
*
cl
,
uint8_t
stc_id
);
BD_PRIVATE
uint32_t
clpi_lookup_spn
(
const
CLPI_CL
*
cl
,
uint32_t
timestamp
,
int
before
,
uint8_t
stc_id
);
BD_PRIVATE
uint32_t
clpi_access_point
(
const
CLPI_CL
*
cl
,
uint32_t
pkt
,
int
next
,
int
angle_change
,
uint32_t
*
time
);
BD_PRIVATE
CLPI_CL
*
clpi_parse
(
const
char
*
path
)
BD_ATTR_MALLOC
;
BD_PRIVATE
CLPI_CL
*
clpi_get
(
struct
bd_disc
*
disc
,
const
char
*
file
);
BD_PRIVATE
CLPI_CL
*
clpi_copy
(
const
CLPI_CL
*
src_cl
);
BD_PRIVATE
void
clpi_free
(
CLPI_CL
**
cl
);
BD_PRIVATE
struct
clpi_cl
*
clpi_parse
(
const
char
*
path
);
BD_PRIVATE
struct
clpi_cl
*
clpi_get
(
struct
bd_disc
*
disc
,
const
char
*
file
);
BD_PRIVATE
struct
clpi_cl
*
clpi_copy
(
const
struct
clpi_cl
*
src_cl
);
BD_PRIVATE
void
clpi_free
(
struct
clpi_cl
**
cl
);
BD_PRIVATE
uint32_t
clpi_find_stc_spn
(
const
struct
clpi_cl
*
cl
,
uint8_t
stc_id
);
BD_PRIVATE
uint32_t
clpi_lookup_spn
(
const
struct
clpi_cl
*
cl
,
uint32_t
timestamp
,
int
before
,
uint8_t
stc_id
);
BD_PRIVATE
uint32_t
clpi_access_point
(
const
struct
clpi_cl
*
cl
,
uint32_t
pkt
,
int
next
,
int
angle_change
,
uint32_t
*
time
);
#endif // _CLPI_PARSE_H_
src/libbluray/bdnav/mpls_parse.c
View file @
64e24886
...
...
@@ -26,6 +26,7 @@
#include
"extdata_parse.h"
#include
"bdmv_parse.h"
#include
"mpls_data.h"
#include
"uo_mask.h"
#include
"disc/disc.h"
...
...
src/libbluray/bdnav/navigation.c
View file @
64e24886
...
...
@@ -25,7 +25,9 @@
#include
"navigation.h"
#include
"clpi_parse.h"
#include
"clpi_data.h"
#include
"mpls_parse.h"
#include
"mpls_data.h"
#include
"bdparse.h"
#include
"disc/disc.h"
...
...
@@ -987,7 +989,9 @@ void nav_clip_time_search(NAV_CLIP *clip, uint32_t tick, uint32_t *clip_pkt, uin
*
clip_pkt
=
clip
->
start_pkt
;
}
}
*
out_pkt
=
clip
->
title_pkt
+
*
clip_pkt
-
clip
->
start_pkt
;
if
(
out_pkt
)
{
*
out_pkt
=
clip
->
title_pkt
+
*
clip_pkt
-
clip
->
start_pkt
;
}
}
/*
...
...
@@ -1044,3 +1048,13 @@ NAV_CLIP* nav_set_angle(NAV_TITLE *title, NAV_CLIP *clip, unsigned angle)
return
clip
;
}
char
*
nav_clip_textst_font
(
NAV_CLIP
*
clip
,
int
index
)
{
char
*
file
;
if
(
index
<
0
||
index
>=
clip
->
cl
->
clip
.
font_info
.
font_count
)
return
NULL
;
file
=
str_printf
(
"%s.otf"
,
clip
->
cl
->
clip
.
font_info
.
font
[
index
].
file_id
);
return
file
;
}
src/libbluray/bdnav/navigation.h
View file @
64e24886
...
...
@@ -23,9 +23,11 @@
#include
"util/attributes.h"
#include
"mpls_data.h"
#include
"clpi_data.h"
#include
<stdint.h>
struct
bd_disc
;
struct
clpi_cl
;
#define CONNECT_NON_SEAMLESS 0
#define CONNECT_SEAMLESS 1
...
...
@@ -81,9 +83,9 @@ struct nav_clip_s
NAV_TITLE
*
title
;
CLPI_CL
*
cl
;
uint32_t
stc_spn
;
/* start packet of clip STC sequence */
struct
clpi_cl
*
cl
;
};
typedef
struct
nav_clip_list_s
NAV_CLIP_LIST
;
...
...
@@ -154,4 +156,6 @@ BD_PRIVATE NAV_CLIP* nav_set_angle(NAV_TITLE *title, NAV_CLIP *clip, unsigned an
BD_PRIVATE
NAV_TITLE_LIST
*
nav_get_title_list
(
struct
bd_disc
*
disc
,
uint32_t
flags
,
uint32_t
min_title_length
)
BD_ATTR_MALLOC
;
BD_PRIVATE
void
nav_free_title_list
(
NAV_TITLE_LIST
**
title_list
);
BD_PRIVATE
char
*
nav_clip_textst_font
(
NAV_CLIP
*
clip
,
int
index
);
#endif // _NAVIGATION_H_
src/libbluray/bluray.c
View file @
64e24886
...
...
@@ -39,7 +39,6 @@
#include
"bdnav/index_parse.h"
#include
"bdnav/meta_parse.h"
#include
"bdnav/meta_data.h"
#include
"bdnav/clpi_parse.h"
#include
"bdnav/sound_parse.h"
#include
"bdnav/uo_mask.h"
#include
"hdmv/hdmv_vm.h"
...
...
@@ -488,8 +487,8 @@ static void _update_textst_timer(BLURAY *bd)
/* find event position in main path clip */
NAV_CLIP
*
clip
=
bd
->
st0
.
clip
;
if
(
clip
->
cl
)
{
uint32_t
spn
=
clpi_lookup_spn
(
clip
->
cl
,
cmds
.
wakeup_time
,
/*before=*/
1
,
bd
->
title
->
pl
->
play_item
[
clip
->
ref
].
clip
[
clip
->
angle
].
stc_id
);
uint32_t
spn
;
nav_clip_time_search
(
clip
,
cmds
.
wakeup_time
,
&
spn
,
NULL
);
if
(
spn
)
{
bd
->
gc_wakeup_pos
=
(
uint64_t
)
spn
*
192L
;
}
...
...
@@ -502,8 +501,8 @@ static void _update_textst_timer(BLURAY *bd)
static
void
_init_textst_timer
(
BLURAY
*
bd
)
{
if
(
bd
->
st_textst
.
clip
&&
bd
->
st0
.
clip
->
cl
)
{
uint32_t
clip_time
;
clpi_access_point
(
bd
->
st0
.
clip
->
cl
,
SPN
(
bd
->
st0
.
clip_block_pos
),
/*next=*/
0
,
/*angle_change=*/
0
,
&
clip_time
);
uint32_t
clip_time
,
clip_pkt
;
nav_clip_packet_search
(
bd
->
st0
.
clip
,
SPN
(
bd
->
st0
.
clip_block_pos
),
&
clip_pkt
,
&
clip_time
);
bd
->
gc_wakeup_time
=
clip_time
;
bd
->
gc_wakeup_pos
=
0
;
_update_textst_timer
(
bd
);
...
...
@@ -2089,6 +2088,7 @@ static int _preload_textst_subpath(BLURAY *bd)
unsigned
textst_subclip
=
0
;
uint16_t
textst_pid
=
0
;
unsigned
ii
;
char
*
font_file
;
if
(
!
bd
->
graphics_controller
)
{
return
0
;
...
...
@@ -2130,18 +2130,16 @@ static int _preload_textst_subpath(BLURAY *bd)
gc_decode_ts
(
bd
->
graphics_controller
,
0x1800
,
bd
->
st_textst
.
buf
,
SPN
(
bd
->
st_textst
.
clip_size
)
/
32
,
-
1
);
/* set fonts and encoding from clip info */
gc_add_font
(
bd
->
graphics_controller
,
NULL
,
-
1
);
for
(
ii
=
0
;
ii
<
bd
->
st_textst
.
clip
->
cl
->
clip
.
font_info
.
font_count
;
ii
++
)
{
char
*
file
=
str_printf
(
"%s.otf"
,
bd
->
st_textst
.
clip
->
cl
->
clip
.
font_info
.
font
[
ii
].
file_id
);
if
(
file
)
{
uint8_t
*
data
=
NULL
;
size_t
size
=
disc_read_file
(
bd
->
disc
,
"BDMV"
DIR_SEP
"AUXDATA"
,
file
,
&
data
);
if
(
data
&&
size
>
0
&&
gc_add_font
(
bd
->
graphics_controller
,
data
,
size
)
<
0
)
{
X_FREE
(
data
);
}
X_FREE
(
file
);
gc_add_font
(
bd
->
graphics_controller
,
NULL
,
-
1
);
/* reset fonts */
for
(
ii
=
0
;
NULL
!=
(
font_file
=
nav_clip_textst_font
(
bd
->
st_textst
.
clip
,
ii
));
ii
++
)
{
uint8_t
*
data
=
NULL
;
size_t
size
=
disc_read_file
(
bd
->
disc
,
"BDMV"
DIR_SEP
"AUXDATA"
,
font_file
,
&
data
);
if
(
data
&&
size
>
0
&&
gc_add_font
(
bd
->
graphics_controller
,
data
,
size
)
<
0
)
{
X_FREE
(
data
);
}
X_FREE
(
font_file
);
}
gc_run
(
bd
->
graphics_controller
,
GC_CTRL_PG_CHARCODE
,
char_code
,
NULL
);
/* start presentation timer */
...
...
@@ -3773,6 +3771,7 @@ int bd_get_meta_file(BLURAY *bd, const char *name, void **data, int64_t *size)
* Database access
*/
#include
"bdnav/clpi_parse.h"
#include
"bdnav/mpls_parse.h"
struct
clpi_cl
*
bd_get_clpi
(
BLURAY
*
bd
,
unsigned
clip_ref
)
...
...