Commit 5184c7cb authored by Laurent Aimar's avatar Laurent Aimar

Used the filter blend helpers in logo.

parent eb24fa76
...@@ -376,6 +376,9 @@ static int Init( vout_thread_t *p_vout ) ...@@ -376,6 +376,9 @@ static int Init( vout_thread_t *p_vout )
( p_logo_list->i_counter + 1 )%p_logo_list->i_count; ( p_logo_list->i_counter + 1 )%p_logo_list->i_count;
p_pic = p_logo_list->p_logo[p_logo_list->i_counter].p_pic; p_pic = p_logo_list->p_logo[p_logo_list->i_counter].p_pic;
p_sys->i_width = p_pic ? p_pic->p[Y_PLANE].i_visible_pitch : 0;
p_sys->i_height = p_pic ? p_pic->p[Y_PLANE].i_visible_lines : 0;
/* Initialize the output structure */ /* Initialize the output structure */
p_vout->output.i_chroma = p_vout->render.i_chroma; p_vout->output.i_chroma = p_vout->render.i_chroma;
p_vout->output.i_width = p_vout->render.i_width; p_vout->output.i_width = p_vout->render.i_width;
...@@ -385,38 +388,20 @@ static int Init( vout_thread_t *p_vout ) ...@@ -385,38 +388,20 @@ static int Init( vout_thread_t *p_vout )
fmt = p_vout->fmt_out; fmt = p_vout->fmt_out;
/* Load the video blending filter */ /* Load the video blending filter */
p_sys->p_blend = vlc_object_create( p_vout, sizeof(filter_t) ); p_sys->p_blend = filter_NewBlend( VLC_OBJECT(p_vout), p_vout->output.i_chroma );
vlc_object_attach( p_sys->p_blend, p_vout ); if( !p_sys->p_blend )
p_sys->p_blend->fmt_out.video.i_x_offset = return VLC_EGENERIC;
p_sys->p_blend->fmt_out.video.i_y_offset = 0;
p_sys->p_blend->fmt_in.video.i_x_offset = video_format_t fmt_blend;
p_sys->p_blend->fmt_in.video.i_y_offset = 0; video_format_Setup( &fmt_blend, VLC_CODEC_YUVA,
p_sys->p_blend->fmt_out.video.i_aspect = p_vout->render.i_aspect; p_sys->i_width, p_sys->i_height, 0 );
p_sys->p_blend->fmt_out.video.i_chroma = p_vout->output.i_chroma;
p_sys->p_blend->fmt_in.video.i_chroma = VLC_CODEC_YUVA; if( filter_ConfigureBlend( p_sys->p_blend,
p_sys->p_blend->fmt_in.video.i_aspect = VOUT_ASPECT_FACTOR; p_vout->output.i_width, p_vout->output.i_height,
p_sys->i_width = &fmt_blend ) )
p_sys->p_blend->fmt_in.video.i_width =
p_sys->p_blend->fmt_in.video.i_visible_width =
p_pic ? p_pic->p[Y_PLANE].i_visible_pitch : 0;
p_sys->i_height =
p_sys->p_blend->fmt_in.video.i_height =
p_sys->p_blend->fmt_in.video.i_visible_height =
p_pic ? p_pic->p[Y_PLANE].i_visible_lines : 0;
p_sys->p_blend->fmt_out.video.i_width =
p_sys->p_blend->fmt_out.video.i_visible_width =
p_vout->output.i_width;
p_sys->p_blend->fmt_out.video.i_height =
p_sys->p_blend->fmt_out.video.i_visible_height =
p_vout->output.i_height;
p_sys->p_blend->p_module =
module_need( p_sys->p_blend, "video blending", NULL, false );
if( !p_sys->p_blend->p_module )
{ {
msg_Err( p_vout, "can't open blending filter, aborting" ); msg_Err( p_vout, "can't configure blending filter, aborting" );
vlc_object_detach( p_sys->p_blend ); filter_DeleteBlend( p_sys->p_blend );
vlc_object_release( p_sys->p_blend );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
...@@ -478,10 +463,7 @@ static void End( vout_thread_t *p_vout ) ...@@ -478,10 +463,7 @@ static void End( vout_thread_t *p_vout )
vout_filter_ReleaseDirectBuffers( p_vout ); vout_filter_ReleaseDirectBuffers( p_vout );
if( p_sys->p_blend->p_module ) filter_DeleteBlend( p_sys->p_blend );
module_unneed( p_sys->p_blend, p_sys->p_blend->p_module );
vlc_object_detach( p_sys->p_blend );
vlc_object_release( p_sys->p_blend );
} }
/***************************************************************************** /*****************************************************************************
...@@ -571,10 +553,13 @@ static void Render( vout_thread_t *p_vout, picture_t *p_inpic ) ...@@ -571,10 +553,13 @@ static void Render( vout_thread_t *p_vout, picture_t *p_inpic )
picture_Copy( p_outpic, p_inpic ); picture_Copy( p_outpic, p_inpic );
if( p_pic ) if( p_pic )
p_sys->p_blend->pf_video_blend( p_sys->p_blend, p_outpic, {
p_pic, p_sys->posx, p_sys->posy, const int i_alpha = p_logo->i_alpha != -1 ? p_logo->i_alpha : p_logo_list->i_alpha;
p_logo->i_alpha != -1 ? p_logo->i_alpha
: p_logo_list->i_alpha ); filter_Blend( p_sys->p_blend,
p_outpic, p_sys->posx, p_sys->posy,
p_pic, i_alpha );
}
vout_DisplayPicture( p_sys->p_vout, p_outpic ); vout_DisplayPicture( p_sys->p_vout, p_outpic );
} }
......
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