Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Steve Lhomme
VLC
Commits
f0c76d50
Commit
f0c76d50
authored
Sep 20, 2008
by
Laurent Aimar
Browse files
Clean up a bit subpicture region API.
parent
7c4a6119
Changes
27
Hide whitespace changes
Inline
Side-by-side
include/vlc_osd.h
View file @
f0c76d50
...
...
@@ -118,10 +118,6 @@ VLC_EXPORT( subpicture_t *, spu_CreateSubpicture, ( spu_t * ) );
VLC_EXPORT
(
void
,
spu_DestroySubpicture
,
(
spu_t
*
,
subpicture_t
*
)
);
VLC_EXPORT
(
void
,
spu_DisplaySubpicture
,
(
spu_t
*
,
subpicture_t
*
)
);
#define spu_CreateRegion(a,b) __spu_CreateRegion(VLC_OBJECT(a),b)
VLC_EXPORT
(
subpicture_region_t
*
,
__spu_CreateRegion
,
(
vlc_object_t
*
,
video_format_t
*
)
);
#define spu_DestroyRegion(a,b) __spu_DestroyRegion(VLC_OBJECT(a),b)
VLC_EXPORT
(
void
,
__spu_DestroyRegion
,
(
vlc_object_t
*
,
subpicture_region_t
*
)
);
VLC_EXPORT
(
subpicture_t
*
,
spu_SortSubpictures
,
(
spu_t
*
,
mtime_t
display_date
,
bool
b_paused
,
bool
b_subtitle_only
)
);
/**
...
...
include/vlc_vout.h
View file @
f0c76d50
...
...
@@ -319,9 +319,31 @@ struct subpicture_region_t
text_style_t
*
p_style
;
/**< a description of the text style formatting */
subpicture_region_t
*
p_next
;
/**< next region in the list */
subpicture_region_private_t
*
p_private
;
/**<
modified version of this region
*/
subpicture_region_private_t
*
p_private
;
/**<
Private data for spu_t *only*
*/
};
/**
* This function will create a new subpicture.
* You can must use subpicture_region_Delete to destroy it.
*/
VLC_EXPORT
(
subpicture_region_t
*
,
subpicture_region_New
,
(
const
video_format_t
*
p_fmt
)
);
/**
* This function will destroy a subpicture allocated by
* subpicture_region_New.
*
* You may give it NULL.
*/
VLC_EXPORT
(
void
,
subpicture_region_Delete
,
(
subpicture_region_t
*
p_region
)
);
/**
* This function will destroy a list of subpicture allocated by
* subpicture_region_New.
*
* Provided for convenience.
*/
VLC_EXPORT
(
void
,
subpicture_region_ChainDelete
,
(
subpicture_region_t
*
p_head
)
);
/**
* Video subtitle
*
...
...
@@ -375,10 +397,6 @@ struct subpicture_t
void
(
*
pf_destroy
)
(
subpicture_t
*
);
/** Pointer to functions for region management */
subpicture_region_t
*
(
*
pf_create_region
)
(
vlc_object_t
*
,
video_format_t
*
);
void
(
*
pf_destroy_region
)
(
vlc_object_t
*
,
subpicture_region_t
*
);
void
(
*
pf_pre_render
)
(
spu_t
*
,
subpicture_t
*
,
const
video_format_t
*
);
void
(
*
pf_update_regions
)(
spu_t
*
,
subpicture_t
*
,
const
video_format_t
*
,
mtime_t
);
...
...
modules/codec/cc.c
View file @
f0c76d50
...
...
@@ -344,7 +344,7 @@ static subpicture_t *Subtitle( decoder_t *p_dec, char *psz_subtitle, char *psz_h
fmt
.
i_aspect
=
0
;
fmt
.
i_width
=
fmt
.
i_height
=
0
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_spu
->
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/codec/csri.c
View file @
f0c76d50
...
...
@@ -250,12 +250,7 @@ static void UpdateRegions( spu_t *p_spu, subpicture_t *p_subpic,
video_format_t
fmt
;
/* TODO maybe checking if we really need redrawing */
while
(
p_subpic
->
p_region
)
{
subpicture_region_t
*
p_region
=
p_subpic
->
p_region
;
p_subpic
->
p_region
=
p_region
->
p_next
;
spu_DestroyRegion
(
p_spu
,
p_region
);
}
subpicture_region_ChainDelete
(
p_subpic
->
p_region
);
p_subpic
->
p_region
=
NULL
;
/* FIXME check why this is needed */
...
...
@@ -297,7 +292,7 @@ static void UpdateRegions( spu_t *p_spu, subpicture_t *p_subpic,
p_subpic
->
i_original_picture_height
=
fmt
.
i_height
;
p_subpic
->
i_original_picture_width
=
fmt
.
i_width
;
p_spu_region
=
p_subpic
->
p_region
=
p_
subpic
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu_region
=
p_subpic
->
p_region
=
subpic
ture_region_New
(
&
fmt
);
if
(
p_spu_region
)
{
...
...
modules/codec/cvdsub.c
View file @
f0c76d50
...
...
@@ -498,6 +498,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
subpicture_t
*
p_spu
;
subpicture_region_t
*
p_region
;
video_format_t
fmt
;
video_palette_t
palette
;
int
i
;
/* Allocate the subpicture internal data. */
...
...
@@ -515,11 +516,22 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_sys
->
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_sys
->
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
fmt
.
p_palette
=
&
palette
;
fmt
.
p_palette
->
i_entries
=
4
;
for
(
i
=
0
;
i
<
fmt
.
p_palette
->
i_entries
;
i
++
)
{
fmt
.
p_palette
->
palette
[
i
][
0
]
=
p_sys
->
p_palette
[
i
][
0
];
fmt
.
p_palette
->
palette
[
i
][
1
]
=
p_sys
->
p_palette
[
i
][
1
];
fmt
.
p_palette
->
palette
[
i
][
2
]
=
p_sys
->
p_palette
[
i
][
2
];
fmt
.
p_palette
->
palette
[
i
][
3
]
=
p_sys
->
p_palette
[
i
][
3
];
}
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
//goto error;
p_dec
->
pf_spu_buffer_del
(
p_dec
,
p_spu
);
return
NULL
;
}
p_spu
->
p_region
=
p_region
;
...
...
@@ -527,16 +539,6 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
p_region
->
i_x
=
p_region
->
i_x
*
3
/
4
;
/* FIXME: use aspect ratio for x? */
p_region
->
i_y
=
p_sys
->
i_y_start
;
/* Build palette */
fmt
.
p_palette
->
i_entries
=
4
;
for
(
i
=
0
;
i
<
fmt
.
p_palette
->
i_entries
;
i
++
)
{
fmt
.
p_palette
->
palette
[
i
][
0
]
=
p_sys
->
p_palette
[
i
][
0
];
fmt
.
p_palette
->
palette
[
i
][
1
]
=
p_sys
->
p_palette
[
i
][
1
];
fmt
.
p_palette
->
palette
[
i
][
2
]
=
p_sys
->
p_palette
[
i
][
2
];
fmt
.
p_palette
->
palette
[
i
][
3
]
=
p_sys
->
p_palette
[
i
][
3
];
}
RenderImage
(
p_dec
,
p_data
,
p_region
);
return
p_spu
;
...
...
modules/codec/dvbsub.c
View file @
f0c76d50
...
...
@@ -1500,6 +1500,7 @@ static subpicture_t *render( decoder_t *p_dec )
subpicture_region_t
*
p_spu_region
;
uint8_t
*
p_src
,
*
p_dst
;
video_format_t
fmt
;
video_palette_t
palette
;
int
i_pitch
;
i_timeout
=
p_sys
->
p_page
->
i_timeout
;
...
...
@@ -1545,19 +1546,7 @@ static subpicture_t *render( decoder_t *p_dec )
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_region
->
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_region
->
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
if
(
!
p_spu_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
continue
;
}
p_spu_region
->
i_x
=
i_base_x
+
p_regiondef
->
i_x
;
p_spu_region
->
i_y
=
i_base_y
+
p_regiondef
->
i_y
;
p_spu_region
->
i_align
=
p_sys
->
i_spu_position
;
*
pp_spu_region
=
p_spu_region
;
pp_spu_region
=
&
p_spu_region
->
p_next
;
/* Build palette */
fmt
.
p_palette
=
&
palette
;
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
:
...
...
@@ -1570,6 +1559,18 @@ static subpicture_t *render( decoder_t *p_dec )
fmt
.
p_palette
->
palette
[
j
][
3
]
=
0xff
-
p_color
[
j
].
T
;
}
p_spu_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_spu_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
continue
;
}
p_spu_region
->
i_x
=
i_base_x
+
p_regiondef
->
i_x
;
p_spu_region
->
i_y
=
i_base_y
+
p_regiondef
->
i_y
;
p_spu_region
->
i_align
=
p_sys
->
i_spu_position
;
*
pp_spu_region
=
p_spu_region
;
pp_spu_region
=
&
p_spu_region
->
p_next
;
p_src
=
p_region
->
p_pixbuf
;
p_dst
=
p_spu_region
->
p_picture
->
Y_PIXELS
;
i_pitch
=
p_spu_region
->
p_picture
->
Y_PITCH
;
...
...
@@ -1598,7 +1599,7 @@ static subpicture_t *render( decoder_t *p_dec )
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_region
->
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_region
->
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/codec/kate.c
View file @
f0c76d50
...
...
@@ -552,6 +552,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
subpicture_region_t
*
p_bitmap_region
=
NULL
;
int
ret
;
video_format_t
fmt
;
video_format_t
palette
;
kate_tracker
kin
;
bool
tracker_valid
=
false
;
...
...
@@ -620,6 +621,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
#ifdef ENABLE_BITMAPS
if
(
ev
->
bitmap
&&
ev
->
bitmap
->
type
==
kate_bitmap_type_paletted
&&
ev
->
palette
)
{
/* create a separate region for the bitmap */
memset
(
&
fmt
,
0
,
sizeof
(
video_format_t
)
);
fmt
.
i_chroma
=
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'P'
);
...
...
@@ -627,8 +629,10 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
fmt
.
i_width
=
fmt
.
i_visible_width
=
ev
->
bitmap
->
width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
ev
->
bitmap
->
height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
p_palette
=
&
palette
;
CreateKatePalette
(
fmt
.
p_palette
,
ev
->
palette
);
p_bitmap_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_bitmap_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_bitmap_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
@@ -636,9 +640,6 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
return
NULL
;
}
/* create the palette */
CreateKatePalette
(
fmt
.
p_palette
,
ev
->
palette
);
/* create the bitmap */
CreateKateBitmap
(
p_bitmap_region
->
p_picture
,
ev
->
bitmap
);
...
...
@@ -651,7 +652,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
fmt
.
i_aspect
=
0
;
fmt
.
i_width
=
fmt
.
i_height
=
0
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_spu
->
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/codec/libass.c
View file @
f0c76d50
...
...
@@ -399,7 +399,7 @@ static void UpdateRegions( spu_t *p_spu, subpicture_t *p_subpic,
fmt_region
.
i_height
=
fmt_region
.
i_visible_height
=
region
[
i
].
y1
-
region
[
i
].
y0
;
pp_region
[
i
]
=
r
=
p_
subpic
->
pf_create_region
(
VLC_OBJECT
(
p_spu
),
&
fmt_region
);
pp_region
[
i
]
=
r
=
subpic
ture_region_New
(
&
fmt_region
);
if
(
!
r
)
break
;
r
->
i_x
=
region
[
i
].
x0
;
...
...
@@ -620,12 +620,7 @@ static void RegionDraw( subpicture_region_t *p_region, ass_image_t *p_img )
static
void
SubpictureReleaseRegions
(
spu_t
*
p_spu
,
subpicture_t
*
p_subpic
)
{
while
(
p_subpic
->
p_region
)
{
subpicture_region_t
*
p_region
=
p_subpic
->
p_region
;
p_subpic
->
p_region
=
p_region
->
p_next
;
spu_DestroyRegion
(
p_spu
,
p_region
);
}
subpicture_region_ChainDelete
(
p_subpic
->
p_region
);
p_subpic
->
p_region
=
NULL
;
}
...
...
modules/codec/spudec/parse.c
View file @
f0c76d50
...
...
@@ -658,6 +658,7 @@ static void Render( decoder_t *p_dec, subpicture_t *p_spu,
int
i_x
,
i_y
,
i_len
,
i_color
,
i_pitch
;
uint16_t
*
p_source
=
(
uint16_t
*
)
p_spu_data
->
p_data
;
video_format_t
fmt
;
video_palette_t
palette
;
/* Create a new subpicture region */
memset
(
&
fmt
,
0
,
sizeof
(
video_format_t
)
);
...
...
@@ -667,19 +668,7 @@ static void Render( decoder_t *p_dec, subpicture_t *p_spu,
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_spu_properties
->
i_height
-
p_spu_data
->
i_y_top_offset
-
p_spu_data
->
i_y_bottom_offset
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
if
(
!
p_spu
->
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
return
;
}
p_spu
->
p_region
->
i_x
=
p_spu_properties
->
i_x
;
p_spu
->
p_region
->
i_y
=
p_spu_properties
->
i_y
+
p_spu_data
->
i_y_top_offset
;
p_p
=
p_spu
->
p_region
->
p_picture
->
p
->
p_pixels
;
i_pitch
=
p_spu
->
p_region
->
p_picture
->
p
->
i_pitch
;
/* Build palette */
fmt
.
p_palette
=
&
palette
;
fmt
.
p_palette
->
i_entries
=
4
;
for
(
i_x
=
0
;
i_x
<
fmt
.
p_palette
->
i_entries
;
i_x
++
)
{
...
...
@@ -691,6 +680,18 @@ static void Render( decoder_t *p_dec, subpicture_t *p_spu,
p_spu_data
->
pi_alpha
[
i_x
]
<<
4
;
}
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_spu
->
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
return
;
}
p_spu
->
p_region
->
i_x
=
p_spu_properties
->
i_x
;
p_spu
->
p_region
->
i_y
=
p_spu_properties
->
i_y
+
p_spu_data
->
i_y_top_offset
;
p_p
=
p_spu
->
p_region
->
p_picture
->
p
->
p_pixels
;
i_pitch
=
p_spu
->
p_region
->
p_picture
->
p
->
i_pitch
;
/* Draw until we reach the bottom of the subtitle */
for
(
i_y
=
0
;
i_y
<
(
int
)
fmt
.
i_height
*
i_pitch
;
i_y
+=
i_pitch
)
{
...
...
modules/codec/subtitles/subsdec.c
View file @
f0c76d50
...
...
@@ -418,7 +418,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
fmt
.
i_aspect
=
0
;
fmt
.
i_width
=
fmt
.
i_height
=
0
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_spu
->
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/codec/subtitles/subsusf.c
View file @
f0c76d50
...
...
@@ -386,7 +386,7 @@ static subpicture_region_t *CreateTextRegion( decoder_t *p_dec,
fmt
.
i_aspect
=
0
;
fmt
.
i_width
=
fmt
.
i_height
=
0
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_text_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_text_region
=
subpicture_region_New
(
&
fmt
);
if
(
p_text_region
!=
NULL
)
{
...
...
@@ -396,7 +396,7 @@ static subpicture_region_t *CreateTextRegion( decoder_t *p_dec,
p_text_region
->
psz_html
=
strndup
(
psz_subtitle
,
i_len
);
if
(
!
p_text_region
->
psz_html
)
{
p_spu
->
pf_destroy_region
(
VLC_OBJECT
(
p_dec
),
p_text_region
);
subpicture_region_Delete
(
p_text_region
);
return
NULL
;
}
...
...
@@ -1201,7 +1201,7 @@ static subpicture_region_t *LoadEmbeddedImage( decoder_t *p_dec,
fmt_out
.
i_height
=
fmt_out
.
i_visible_height
=
p_pic
->
format
.
i_visible_height
;
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt_out
);
p_region
=
subpicture_region_New
(
&
fmt_out
);
if
(
!
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/codec/svcdsub.c
View file @
f0c76d50
...
...
@@ -467,6 +467,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
subpicture_t
*
p_spu
;
subpicture_region_t
*
p_region
;
video_format_t
fmt
;
video_palette_t
palette
;
int
i
;
/* Allocate the subpicture internal data. */
...
...
@@ -494,20 +495,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_sys
->
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_sys
->
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SVCD subtitle region"
);
//goto error;
}
p_region
->
fmt
.
i_aspect
=
VOUT_ASPECT_FACTOR
;
p_spu
->
p_region
=
p_region
;
p_region
->
i_x
=
p_sys
->
i_x_start
;
p_region
->
i_y
=
p_sys
->
i_y_start
;
/* Build palette */
fmt
.
p_palette
=
&
palette
;
fmt
.
p_palette
->
i_entries
=
4
;
for
(
i
=
0
;
i
<
fmt
.
p_palette
->
i_entries
;
i
++
)
{
...
...
@@ -517,6 +505,18 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
fmt
.
p_palette
->
palette
[
i
][
3
]
=
p_sys
->
p_palette
[
i
][
3
];
}
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_dec
,
"cannot allocate SVCD subtitle region"
);
p_dec
->
pf_spu_buffer_del
(
p_dec
,
p_spu
);
return
NULL
;
}
p_spu
->
p_region
=
p_region
;
p_region
->
i_x
=
p_sys
->
i_x_start
;
p_region
->
i_y
=
p_sys
->
i_y_start
;
SVCDSubRenderImage
(
p_dec
,
p_data
,
p_region
);
return
p_spu
;
...
...
modules/codec/telx.c
View file @
f0c76d50
...
...
@@ -708,7 +708,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
fmt
.
i_aspect
=
0
;
fmt
.
i_width
=
fmt
.
i_height
=
0
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
p_spu
->
p_region
==
NULL
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/codec/zvbi.c
View file @
f0c76d50
...
...
@@ -483,7 +483,7 @@ static subpicture_t *Subpicture( decoder_t *p_dec, video_format_t *p_fmt,
}
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_dec
),
&
fmt
);
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
p_spu
->
p_region
==
NULL
)
{
msg_Err
(
p_dec
,
"cannot allocate SPU region"
);
...
...
modules/video_filter/dynamicoverlay/dynamicoverlay.c
View file @
f0c76d50
...
...
@@ -347,8 +347,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
{
subpicture_region_t
*
p_region
;
*
pp_region
=
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_filter
),
&
p_overlay
->
format
);
*
pp_region
=
p_region
=
subpicture_region_New
(
&
p_overlay
->
format
);
if
(
!
p_region
)
break
;
...
...
modules/video_filter/logo.c
View file @
f0c76d50
...
...
@@ -864,7 +864,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_pic
->
p
[
Y_PLANE
].
i_visible_pitch
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_pic
->
p
[
Y_PLANE
].
i_visible_lines
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_filter
),
&
fmt
);
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_filter
,
"cannot allocate SPU region"
);
...
...
modules/video_filter/marq.c
View file @
f0c76d50
...
...
@@ -286,7 +286,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
fmt
.
i_width
=
fmt
.
i_height
=
0
;
fmt
.
i_x_offset
=
0
;
fmt
.
i_y_offset
=
0
;
p_spu
->
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_filter
),
&
fmt
);
p_spu
->
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_spu
->
p_region
)
{
p_filter
->
pf_sub_buffer_del
(
p_filter
,
p_spu
);
...
...
modules/video_filter/mosaic.c
View file @
f0c76d50
...
...
@@ -641,10 +641,10 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
fmt_out
.
i_visible_height
=
fmt_out
.
i_height
;
}
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_filter
),
&
fmt_out
);
p_region
=
subpicture_region_New
(
&
fmt_out
);
/* FIXME the copy is probably not needed anymore */
if
(
p_region
)
picture_Copy
(
&
p_region
->
p_picture
,
p_converted
);
picture_Copy
(
p_region
->
p_picture
,
p_converted
);
if
(
!
p_sys
->
b_keep
)
picture_Release
(
p_converted
);
...
...
modules/video_filter/osdmenu.c
View file @
f0c76d50
...
...
@@ -375,7 +375,7 @@ static subpicture_region_t *create_text_region( filter_t *p_filter, subpicture_t
fmt.i_width = fmt.i_visible_width = i_width;
fmt.i_height = fmt.i_visible_height = i_height;
fmt.i_x_offset = fmt.i_y_offset = 0;
p_region =
p_spu->pf_create_region( VLC_OBJECT(p_filter),
&fmt );
p_region =
subpicture_region_New(
&fmt );
if( !p_region )
{
msg_Err( p_filter, "cannot allocate another SPU region" );
...
...
@@ -401,6 +401,7 @@ static subpicture_region_t *create_picture_region( filter_t *p_filter, subpictur
{
subpicture_region_t
*
p_region
=
NULL
;
video_format_t
fmt
;
video_palette_t
palette
;
if
(
!
p_spu
)
return
NULL
;
...
...
@@ -412,20 +413,21 @@ static subpicture_region_t *create_picture_region( filter_t *p_filter, subpictur
fmt
.
i_width
=
fmt
.
i_visible_width
=
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
if
(
fmt
.
i_chroma
==
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'P'
)
)
{
fmt
.
p_palette
=
&
palette
;
fmt
.
p_palette
->
i_entries
=
0
;
fmt
.
i_visible_width
=
0
;
fmt
.
i_visible_height
=
0
;
}
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_filter
),
&
fmt
);
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_filter
,
"cannot allocate SPU region"
);
p_filter
->
pf_sub_buffer_del
(
p_filter
,
p_spu
);
return
NULL
;
}
if
(
!
p_pic
&&
(
fmt
.
i_chroma
==
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'P'
)
)
)
{
p_region
->
fmt
.
p_palette
->
i_entries
=
0
;
p_region
->
fmt
.
i_width
=
p_region
->
fmt
.
i_visible_width
=
0
;
p_region
->
fmt
.
i_height
=
p_region
->
fmt
.
i_visible_height
=
0
;
}
/* FIXME the copy is probably not needed anymore */
if
(
p_pic
)
picture_Copy
(
p_region
->
p_picture
,
p_pic
);
...
...
@@ -570,13 +572,9 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t i_date )
if
(
!
p_new
)
{
/* Cleanup when bailing out */
subpicture_region_t
*
p_tmp
=
NULL
;
while
(
p_region_list
)
{
p_tmp
=
p_region_list
->
p_next
;
p_spu
->
pf_destroy_region
(
VLC_OBJECT
(
p_filter
),
p_region_list
);
};
p_spu
->
pf_destroy_region
(
VLC_OBJECT
(
p_filter
),
p_region
);
subpicture_region_ChainDelete
(
p_region_list
);
subpicture_region_Delete
(
p_region
);
p_filter
->
pf_sub_buffer_del
(
p_filter
,
p_spu
);
return
NULL
;
}
...
...
modules/video_filter/remoteosd.c
View file @
f0c76d50
...
...
@@ -1162,7 +1162,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_pic
->
p
[
Y_PLANE
].
i_visible_pitch
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_pic
->
p
[
Y_PLANE
].
i_visible_lines
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
p_region
=
p_spu
->
pf_create_region
(
VLC_OBJECT
(
p_filter
),
&
fmt
);
p_region
=
subpicture_region_New
(
&
fmt
);
if
(
!
p_region
)
{
msg_Err
(
p_filter
,
"cannot allocate SPU region"
);
...
...
Prev
1
2
Next
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