Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
a5ea3d08
Commit
a5ea3d08
authored
Sep 26, 2007
by
Jean-Paul Saman
Committed by
Jean-Paul Saman
Mar 05, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add parenthesis for readibility and proper parsing.
parent
88437ee2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
39 deletions
+53
-39
modules/codec/dvbsub.c
modules/codec/dvbsub.c
+53
-39
No files found.
modules/codec/dvbsub.c
View file @
a5ea3d08
...
...
@@ -484,7 +484,8 @@ static void decode_segment( decoder_t *p_dec, bs_t *s )
/* segment size */
i_size
=
bs_show
(
s
,
16
);
if
(
i_page_id
!=
p_sys
->
i_id
&&
i_page_id
!=
p_sys
->
i_ancillary_id
)
if
(
(
i_page_id
!=
p_sys
->
i_id
)
&&
(
i_page_id
!=
p_sys
->
i_ancillary_id
)
)
{
#ifdef DEBUG_DVBSUB
msg_Dbg
(
p_dec
,
"subtitle skipped (page id: %i, %i)"
,
...
...
@@ -494,9 +495,9 @@ static void decode_segment( decoder_t *p_dec, bs_t *s )
return
;
}
if
(
p_sys
->
i_ancillary_id
!=
p_sys
->
i_id
&&
i_type
==
DVBSUB_ST_PAGE_COMPOSITION
&&
i_page_id
==
p_sys
->
i_ancillary_id
)
if
(
(
p_sys
->
i_ancillary_id
!=
p_sys
->
i_id
)
&&
(
i_type
==
DVBSUB_ST_PAGE_COMPOSITION
)
&&
(
i_page_id
==
p_sys
->
i_ancillary_id
)
)
{
#ifdef DEBUG_DVBSUB
msg_Dbg
(
p_dec
,
"skipped invalid ancillary subtitle packet"
);
...
...
@@ -582,7 +583,7 @@ static void decode_clut( decoder_t *p_dec, bs_t *s )
}
/* Check version number */
if
(
p_clut
&&
p_clut
->
i_version
==
i_version
)
if
(
p_clut
&&
(
p_clut
->
i_version
==
i_version
)
)
{
/* Nothing to do */
bs_skip
(
s
,
8
*
i_segment_length
-
12
);
...
...
@@ -693,8 +694,9 @@ static void decode_page_composition( decoder_t *p_dec, bs_t *s )
#endif
free_all
(
p_dec
);
}
else
if
(
!
p_sys
->
p_page
&&
i_state
!=
DVBSUB_PCS_STATE_ACQUISITION
&&
i_state
!=
DVBSUB_PCS_STATE_CHANGE
)
else
if
(
!
p_sys
->
p_page
&&
(
i_state
!=
DVBSUB_PCS_STATE_ACQUISITION
)
&&
(
i_state
!=
DVBSUB_PCS_STATE_CHANGE
)
)
{
/* Not a full PCS, we need to wait for one */
msg_Dbg
(
p_dec
,
"didn't receive an acquisition page yet"
);
...
...
@@ -712,7 +714,7 @@ static void decode_page_composition( decoder_t *p_dec, bs_t *s )
#endif
/* Check version number */
if
(
p_sys
->
p_page
&&
p_sys
->
p_page
->
i_version
==
i_version
)
if
(
p_sys
->
p_page
&&
(
p_sys
->
p_page
->
i_version
==
i_version
)
)
{
bs_skip
(
s
,
8
*
(
i_segment_length
-
2
)
);
return
;
...
...
@@ -721,6 +723,7 @@ static void decode_page_composition( decoder_t *p_dec, bs_t *s )
{
if
(
p_sys
->
p_page
->
i_region_defs
)
free
(
p_sys
->
p_page
->
p_region_defs
);
p_sys
->
p_page
->
p_region_defs
=
NULL
;
p_sys
->
p_page
->
i_region_defs
=
0
;
}
...
...
@@ -781,7 +784,7 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
}
/* Check version number */
if
(
p_region
&&
p_region
->
i_version
==
i_version
)
if
(
p_region
&&
(
p_region
->
i_version
==
i_version
)
)
{
bs_skip
(
s
,
8
*
(
i_segment_length
-
1
)
-
4
);
return
;
...
...
@@ -793,10 +796,13 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
msg_Dbg
(
p_dec
,
"new region: %i"
,
i_id
);
#endif
p_region
=
*
pp_region
=
malloc
(
sizeof
(
dvbsub_region_t
)
);
memset
(
p_region
,
0
,
sizeof
(
dvbsub_region_t
)
);
p_region
->
p_object_defs
=
NULL
;
p_region
->
p_pixbuf
=
NULL
;
p_region
->
p_next
=
NULL
;
if
(
p_region
)
{
memset
(
p_region
,
0
,
sizeof
(
dvbsub_region_t
)
);
p_region
->
p_object_defs
=
NULL
;
p_region
->
p_pixbuf
=
NULL
;
p_region
->
p_next
=
NULL
;
}
}
/* Region attributes */
...
...
@@ -833,7 +839,8 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
p_region
->
p_object_defs
=
NULL
;
/* Extra sanity checks */
if
(
p_region
->
i_width
!=
i_width
||
p_region
->
i_height
!=
i_height
)
if
(
(
p_region
->
i_width
!=
i_width
)
||
(
p_region
->
i_height
!=
i_height
)
)
{
if
(
p_region
->
p_pixbuf
)
{
...
...
@@ -846,8 +853,10 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
p_region
->
i_depth
=
0
;
b_fill
=
VLC_TRUE
;
}
if
(
p_region
->
i_depth
&&
(
p_region
->
i_depth
!=
i_depth
||
p_region
->
i_level_comp
!=
i_level_comp
||
p_region
->
i_clut
!=
i_clut
)
)
if
(
p_region
->
i_depth
&&
(
(
p_region
->
i_depth
!=
i_depth
)
||
(
p_region
->
i_level_comp
!=
i_level_comp
)
||
(
p_region
->
i_clut
!=
i_clut
)
)
)
{
msg_Dbg
(
p_dec
,
"region parameters changed (not allowed)"
);
}
...
...
@@ -856,7 +865,7 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
if
(
b_fill
)
{
int
i_background
=
(
p_region
->
i_depth
==
1
)
?
i_2_bg
:
(
p_region
->
i_depth
==
2
)
?
i_4_bg
:
i_8_bg
;
(
(
p_region
->
i_depth
==
2
)
?
i_4_bg
:
i_8_bg
)
;
memset
(
p_region
->
p_pixbuf
,
i_background
,
i_width
*
i_height
);
}
...
...
@@ -1008,8 +1017,8 @@ static void decode_object( decoder_t *p_dec, bs_t *s )
uint8_t
*
p_start
=
s
->
p_start
+
bs_pos
(
s
)
/
8
;
/* Sanity check */
if
(
(
i_segment_length
<
i_number_of_codes
*
2
+
4
)
||
(
p_start
+
i_number_of_codes
*
2
>
s
->
p_end
)
)
if
(
(
i_segment_length
<
(
i_number_of_codes
*
2
+
4
)
)
||
(
(
p_start
+
i_number_of_codes
*
2
)
>
s
->
p_end
)
)
{
msg_Dbg
(
p_dec
,
"corrupted object data"
);
return
;
...
...
@@ -1056,8 +1065,9 @@ static void dvbsub_render_pdata( decoder_t *p_dec, dvbsub_region_t *p_region,
msg_Err
(
p_dec
,
"region %i has no pixel buffer!"
,
p_region
->
i_id
);
return
;
}
if
(
i_y
<
0
||
i_x
<
0
||
i_y
>=
p_region
->
i_height
||
i_x
>=
p_region
->
i_width
)
if
(
(
i_y
<
0
)
||
(
i_x
<
0
)
||
(
i_y
>=
p_region
->
i_height
)
||
(
i_x
>=
p_region
->
i_width
)
)
{
msg_Dbg
(
p_dec
,
"invalid offset (%i,%i)"
,
i_x
,
i_y
);
return
;
...
...
@@ -1104,13 +1114,14 @@ static void dvbsub_render_pdata( decoder_t *p_dec, dvbsub_region_t *p_region,
static
void
dvbsub_pdata2bpp
(
bs_t
*
s
,
uint8_t
*
p
,
int
i_width
,
int
*
pi_off
)
{
vlc_bool_t
b_stop
=
0
;
vlc_bool_t
b_stop
=
VLC_FALSE
;
while
(
!
b_stop
&&
!
bs_eof
(
s
)
)
{
int
i_count
=
0
,
i_color
=
0
;
if
(
(
i_color
=
bs_read
(
s
,
2
))
!=
0x00
)
i_color
=
bs_read
(
s
,
2
);
if
(
i_color
!=
0x00
)
{
i_count
=
1
;
}
...
...
@@ -1128,7 +1139,7 @@ static void dvbsub_pdata2bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
switch
(
bs_read
(
s
,
2
)
)
//Switch3
{
case
0x00
:
b_stop
=
1
;
b_stop
=
VLC_TRUE
;
break
;
case
0x01
:
i_count
=
2
;
...
...
@@ -1156,7 +1167,7 @@ static void dvbsub_pdata2bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
if
(
!
i_count
)
continue
;
/* Sanity check */
if
(
i_count
+
*
pi_off
>
i_width
)
break
;
if
(
(
i_count
+
*
pi_off
)
>
i_width
)
break
;
if
(
i_count
==
1
)
p
[
*
pi_off
]
=
i_color
;
else
memset
(
p
+
*
pi_off
,
i_color
,
i_count
);
...
...
@@ -1169,13 +1180,14 @@ static void dvbsub_pdata2bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
static
void
dvbsub_pdata4bpp
(
bs_t
*
s
,
uint8_t
*
p
,
int
i_width
,
int
*
pi_off
)
{
vlc_bool_t
b_stop
=
0
;
vlc_bool_t
b_stop
=
VLC_FALSE
;
while
(
!
b_stop
&&
!
bs_eof
(
s
)
)
{
int
i_count
=
0
,
i_color
=
0
;
if
(
(
i_color
=
bs_read
(
s
,
4
))
!=
0x00
)
i_color
=
bs_read
(
s
,
4
);
if
(
i_color
!=
0x00
)
{
/* Add 1 pixel */
i_count
=
1
;
...
...
@@ -1191,7 +1203,7 @@ static void dvbsub_pdata4bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
else
{
bs_skip
(
s
,
3
);
b_stop
=
1
;
b_stop
=
VLC_TRUE
;
}
}
else
...
...
@@ -1227,7 +1239,7 @@ static void dvbsub_pdata4bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
if
(
!
i_count
)
continue
;
/* Sanity check */
if
(
i_count
+
*
pi_off
>
i_width
)
break
;
if
(
(
i_count
+
*
pi_off
)
>
i_width
)
break
;
if
(
i_count
==
1
)
p
[
*
pi_off
]
=
i_color
;
else
memset
(
p
+
*
pi_off
,
i_color
,
i_count
);
...
...
@@ -1240,13 +1252,14 @@ static void dvbsub_pdata4bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
static
void
dvbsub_pdata8bpp
(
bs_t
*
s
,
uint8_t
*
p
,
int
i_width
,
int
*
pi_off
)
{
vlc_bool_t
b_stop
=
0
;
vlc_bool_t
b_stop
=
VLC_FALSE
;
while
(
!
b_stop
&&
!
bs_eof
(
s
)
)
{
int
i_count
=
0
,
i_color
=
0
;
if
(
(
i_color
=
bs_read
(
s
,
8
))
!=
0x00
)
i_color
=
bs_read
(
s
,
8
);
if
(
i_color
!=
0x00
)
{
/* Add 1 pixel */
i_count
=
1
;
...
...
@@ -1262,7 +1275,7 @@ static void dvbsub_pdata8bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
else
{
bs_skip
(
s
,
7
);
b_stop
=
1
;
b_stop
=
VLC_TRUE
;
}
}
else
...
...
@@ -1275,7 +1288,7 @@ static void dvbsub_pdata8bpp( bs_t *s, uint8_t *p, int i_width, int *pi_off )
if
(
!
i_count
)
continue
;
/* Sanity check */
if
(
i_count
+
*
pi_off
>
i_width
)
break
;
if
(
(
i_count
+
*
pi_off
)
>
i_width
)
break
;
if
(
i_count
==
1
)
p
[
*
pi_off
]
=
i_color
;
else
memset
(
p
+
*
pi_off
,
i_color
,
i_count
);
...
...
@@ -1341,7 +1354,7 @@ static subpicture_t *render( decoder_t *p_dec )
msg_Dbg
(
p_dec
,
"rendering %i regions"
,
p_sys
->
p_page
->
i_region_defs
);
#endif
for
(
i
=
0
;
p_sys
->
p_page
&&
i
<
p_sys
->
p_page
->
i_region_defs
;
i
++
)
for
(
i
=
0
;
p_sys
->
p_page
&&
(
i
<
p_sys
->
p_page
->
i_region_defs
)
;
i
++
)
{
dvbsub_region_t
*
p_region
;
dvbsub_regiondef_t
*
p_regiondef
;
...
...
@@ -1384,7 +1397,8 @@ static subpicture_t *render( decoder_t *p_dec )
msg_Dbg
(
p_dec
,
"clut %i not found"
,
p_region
->
i_clut
);
continue
;
}
/* FIXME: don't create a subpicture region with VLC_FOURCC YUVP
* when it actually is a TEXT region */
/* Create new SPU region */
memset
(
&
fmt
,
0
,
sizeof
(
video_format_t
)
);
fmt
.
i_chroma
=
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'P'
);
...
...
@@ -1404,10 +1418,10 @@ static subpicture_t *render( decoder_t *p_dec )
pp_spu_region
=
&
p_spu_region
->
p_next
;
/* Build palette */
fmt
.
p_palette
->
i_entries
=
p_region
->
i_depth
==
1
?
4
:
p_region
->
i_depth
==
2
?
16
:
256
;
fmt
.
p_palette
->
i_entries
=
(
p_region
->
i_depth
==
1
)
?
4
:
(
(
p_region
->
i_depth
==
2
)
?
16
:
256
)
;
p_color
=
(
p_region
->
i_depth
==
1
)
?
p_clut
->
c_2b
:
(
p_region
->
i_depth
==
2
)
?
p_clut
->
c_4b
:
p_clut
->
c_8b
;
(
(
p_region
->
i_depth
==
2
)
?
p_clut
->
c_4b
:
p_clut
->
c_8b
)
;
for
(
j
=
0
;
j
<
fmt
.
p_palette
->
i_entries
;
j
++
)
{
fmt
.
p_palette
->
palette
[
j
][
0
]
=
p_color
[
j
].
Y
;
...
...
@@ -1434,7 +1448,7 @@ static subpicture_t *render( decoder_t *p_dec )
{
dvbsub_objectdef_t
*
p_object_def
=
&
p_region
->
p_object_defs
[
j
];
if
(
p_object_def
->
i_type
!=
1
||
!
p_object_def
->
psz_text
)
if
(
(
p_object_def
->
i_type
!=
1
)
||
(
!
p_object_def
->
psz_text
)
)
continue
;
/* Create new SPU region */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment