Commit 87dee6df authored by Laurent Aimar's avatar Laurent Aimar

Simplify dynamicoverlay and removed the need of pf_make_region.

parent 00572bbb
...@@ -345,54 +345,33 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date ) ...@@ -345,54 +345,33 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
subpicture_region_t **pp_region = &p_spu->p_region; subpicture_region_t **pp_region = &p_spu->p_region;
while( (p_overlay = ListWalk( &p_sys->overlays )) ) while( (p_overlay = ListWalk( &p_sys->overlays )) )
{ {
subpicture_region_t *p_region;
*pp_region = p_region = p_spu->pf_create_region( VLC_OBJECT(p_filter),
&p_overlay->format );
if( !p_region )
break;
msg_Dbg( p_filter, "Displaying overlay: %4.4s, %d, %d, %d", msg_Dbg( p_filter, "Displaying overlay: %4.4s, %d, %d, %d",
(char*)&p_overlay->format.i_chroma, p_overlay->i_x, p_overlay->i_y, (char*)&p_overlay->format.i_chroma, p_overlay->i_x, p_overlay->i_y,
p_overlay->i_alpha ); p_overlay->i_alpha );
if( p_overlay->format.i_chroma == VLC_FOURCC('T','E','X','T') ) if( p_overlay->format.i_chroma == VLC_FOURCC('T','E','X','T') )
{ {
*pp_region = p_spu->pf_create_region( VLC_OBJECT(p_filter), p_region->psz_text = strdup( p_overlay->data.p_text );
&p_overlay->format ); p_region->p_style = malloc( sizeof(struct text_style_t) );
if( !*pp_region ) if( p_region->p_style )
break; *p_region->p_style = p_overlay->fontstyle;
(*pp_region)->psz_text = strdup( p_overlay->data.p_text );
(*pp_region)->p_style = malloc( sizeof(struct text_style_t) );
if( !(*pp_region)->p_style )
{
p_spu->pf_destroy_region( VLC_OBJECT(p_filter), (*pp_region) );
*pp_region = NULL;
break;
}
vlc_memcpy( (*pp_region)->p_style, &p_overlay->fontstyle,
sizeof(struct text_style_t) );
} }
else else
{ {
picture_t clone; vout_CopyPicture( p_filter, &p_region->picture, p_overlay->data.p_pic );
if( vout_AllocatePicture( p_filter, &clone,
p_overlay->format.i_chroma,
p_overlay->format.i_width,
p_overlay->format.i_height,
p_overlay->format.i_aspect ) )
{
msg_Err( p_filter, "cannot allocate picture" );
continue;
}
vout_CopyPicture( p_filter, &clone, p_overlay->data.p_pic );
*pp_region = p_spu->pf_make_region( VLC_OBJECT(p_filter),
&p_overlay->format,
&clone );
if( !*pp_region )
{
msg_Err( p_filter, "cannot allocate subpicture region" );
continue;
}
} }
(*pp_region)->i_x = p_overlay->i_x; p_region->i_x = p_overlay->i_x;
(*pp_region)->i_y = p_overlay->i_y; p_region->i_y = p_overlay->i_y;
(*pp_region)->i_align = OSD_ALIGN_LEFT | OSD_ALIGN_TOP; p_region->i_align = OSD_ALIGN_LEFT | OSD_ALIGN_TOP;
(*pp_region)->i_alpha = p_overlay->i_alpha; p_region->i_alpha = p_overlay->i_alpha;
pp_region = &(*pp_region)->p_next; pp_region = &p_region->p_next;
} }
p_sys->b_updated = false; p_sys->b_updated = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment