[vlc-devel] commit: Used the filter blend helpers in logo. (Laurent Aimar )
git version control
git at videolan.org
Fri Jun 5 20:24:28 CEST 2009
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Fri Jun 5 00:05:16 2009 +0200| [5184c7cb028b3de1c91dff825211445d3905d879] | committer: Laurent Aimar
Used the filter blend helpers in logo.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5184c7cb028b3de1c91dff825211445d3905d879
---
modules/video_filter/logo.c | 63 ++++++++++++++++--------------------------
1 files changed, 24 insertions(+), 39 deletions(-)
diff --git a/modules/video_filter/logo.c b/modules/video_filter/logo.c
index 4c1dcc1..8cc34cd 100644
--- a/modules/video_filter/logo.c
+++ b/modules/video_filter/logo.c
@@ -376,6 +376,9 @@ static int Init( vout_thread_t *p_vout )
( 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_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 */
p_vout->output.i_chroma = p_vout->render.i_chroma;
p_vout->output.i_width = p_vout->render.i_width;
@@ -385,38 +388,20 @@ static int Init( vout_thread_t *p_vout )
fmt = p_vout->fmt_out;
/* Load the video blending filter */
- p_sys->p_blend = vlc_object_create( p_vout, sizeof(filter_t) );
- vlc_object_attach( p_sys->p_blend, p_vout );
- p_sys->p_blend->fmt_out.video.i_x_offset =
- p_sys->p_blend->fmt_out.video.i_y_offset = 0;
- p_sys->p_blend->fmt_in.video.i_x_offset =
- p_sys->p_blend->fmt_in.video.i_y_offset = 0;
- p_sys->p_blend->fmt_out.video.i_aspect = p_vout->render.i_aspect;
- 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;
- p_sys->p_blend->fmt_in.video.i_aspect = VOUT_ASPECT_FACTOR;
- p_sys->i_width =
- 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 )
+ p_sys->p_blend = filter_NewBlend( VLC_OBJECT(p_vout), p_vout->output.i_chroma );
+ if( !p_sys->p_blend )
+ return VLC_EGENERIC;
+
+ video_format_t fmt_blend;
+ video_format_Setup( &fmt_blend, VLC_CODEC_YUVA,
+ p_sys->i_width, p_sys->i_height, 0 );
+
+ if( filter_ConfigureBlend( p_sys->p_blend,
+ p_vout->output.i_width, p_vout->output.i_height,
+ &fmt_blend ) )
{
- msg_Err( p_vout, "can't open blending filter, aborting" );
- vlc_object_detach( p_sys->p_blend );
- vlc_object_release( p_sys->p_blend );
+ msg_Err( p_vout, "can't configure blending filter, aborting" );
+ filter_DeleteBlend( p_sys->p_blend );
return VLC_EGENERIC;
}
@@ -478,10 +463,7 @@ static void End( vout_thread_t *p_vout )
vout_filter_ReleaseDirectBuffers( p_vout );
- if( p_sys->p_blend->p_module )
- 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 );
+ filter_DeleteBlend( p_sys->p_blend );
}
/*****************************************************************************
@@ -571,10 +553,13 @@ static void Render( vout_thread_t *p_vout, picture_t *p_inpic )
picture_Copy( p_outpic, p_inpic );
if( p_pic )
- p_sys->p_blend->pf_video_blend( p_sys->p_blend, p_outpic,
- p_pic, p_sys->posx, p_sys->posy,
- p_logo->i_alpha != -1 ? p_logo->i_alpha
- : p_logo_list->i_alpha );
+ {
+ const int 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 );
}
More information about the vlc-devel
mailing list