Commit a944ebff authored by Sam Hocevar's avatar Sam Hocevar

* ./plugins/filter/*: filters are now configurable through the configuration

    system. Patch from Sigmund Augdal <sigmunau@stud.ntnu.no>.
parent 09186fe6
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* clone.c : Clone video plugin for vlc * clone.c : Clone video plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * Copyright (C) 2002 VideoLAN
* $Id: clone.c,v 1.2 2002/05/19 12:57:32 gbazin Exp $ * $Id: clone.c,v 1.3 2002/05/27 19:35:41 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -44,6 +44,9 @@ static void vout_getfunctions( function_list_t * p_function_list ); ...@@ -44,6 +44,9 @@ static void vout_getfunctions( function_list_t * p_function_list );
* Build configuration tree. * Build configuration tree.
*****************************************************************************/ *****************************************************************************/
MODULE_CONFIG_START MODULE_CONFIG_START
ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
ADD_INTEGER ( "clone_count", 2, NULL, N_("Number of clones"),
N_("Select the number of videowindows in which to clone the video") )
MODULE_CONFIG_STOP MODULE_CONFIG_STOP
MODULE_INIT_START MODULE_INIT_START
...@@ -109,7 +112,6 @@ static void vout_getfunctions( function_list_t * p_function_list ) ...@@ -109,7 +112,6 @@ static void vout_getfunctions( function_list_t * p_function_list )
*****************************************************************************/ *****************************************************************************/
static int vout_Create( vout_thread_t *p_vout ) static int vout_Create( vout_thread_t *p_vout )
{ {
char *psz_method, *psz_method_orig;
/* Allocate structure */ /* Allocate structure */
p_vout->p_sys = malloc( sizeof( vout_sys_t ) ); p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
...@@ -120,27 +122,7 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -120,27 +122,7 @@ static int vout_Create( vout_thread_t *p_vout )
} }
/* Look what method was requested */ /* Look what method was requested */
if( !(psz_method = psz_method_orig = config_GetPszVariable( "filter" )) ) p_vout->p_sys->i_clones = config_GetIntVariable( "clone_count" );
{
intf_ErrMsg( "vout error: configuration variable %s empty", "filter" );
return( 1 );
}
while( *psz_method && *psz_method != ':' )
{
psz_method++;
}
if( *psz_method )
{
p_vout->p_sys->i_clones = atoi( psz_method + 1 );
}
else
{
intf_ErrMsg( "vout error: "
"no valid clone count provided, using clone:2" );
p_vout->p_sys->i_clones = 2;
}
p_vout->p_sys->i_clones = __MAX( 1, __MIN( 99, p_vout->p_sys->i_clones ) ); p_vout->p_sys->i_clones = __MAX( 1, __MIN( 99, p_vout->p_sys->i_clones ) );
...@@ -152,13 +134,10 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -152,13 +134,10 @@ static int vout_Create( vout_thread_t *p_vout )
if( p_vout->p_sys->pp_vout == NULL ) if( p_vout->p_sys->pp_vout == NULL )
{ {
intf_ErrMsg( "vout error: out of memory" ); intf_ErrMsg( "vout error: out of memory" );
free( psz_method_orig );
free( p_vout->p_sys ); free( p_vout->p_sys );
return( 1 ); return( 1 );
} }
free( psz_method_orig );
return( 0 ); return( 0 );
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* deinterlace.c : deinterlacer plugin for vlc * deinterlace.c : deinterlacer plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
* $Id: deinterlace.c,v 1.10 2002/05/19 12:57:32 gbazin Exp $ * $Id: deinterlace.c,v 1.11 2002/05/27 19:35:41 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -49,6 +49,9 @@ static void *memblend( void *, const void *, const void *, size_t ); ...@@ -49,6 +49,9 @@ static void *memblend( void *, const void *, const void *, size_t );
* Build configuration tree. * Build configuration tree.
*****************************************************************************/ *****************************************************************************/
MODULE_CONFIG_START MODULE_CONFIG_START
ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
ADD_STRING ( "deinterlace_mode", "bob", NULL, N_("Deinterlace mode"),
N_("one of 'bob' and 'blend'") )
MODULE_CONFIG_STOP MODULE_CONFIG_STOP
MODULE_INIT_START MODULE_INIT_START
...@@ -113,7 +116,7 @@ static void vout_getfunctions( function_list_t * p_function_list ) ...@@ -113,7 +116,7 @@ static void vout_getfunctions( function_list_t * p_function_list )
*****************************************************************************/ *****************************************************************************/
static int vout_Create( vout_thread_t *p_vout ) static int vout_Create( vout_thread_t *p_vout )
{ {
char *psz_method, *psz_method_tmp; char *psz_method;
/* Allocate structure */ /* Allocate structure */
p_vout->p_sys = malloc( sizeof( vout_sys_t ) ); p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
...@@ -124,24 +127,18 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -124,24 +127,18 @@ static int vout_Create( vout_thread_t *p_vout )
} }
/* Look what method was requested */ /* Look what method was requested */
if( !(psz_method = psz_method_tmp if( !(psz_method = config_GetPszVariable( "filter" )) )
= config_GetPszVariable( "filter" )) )
{ {
intf_ErrMsg( "vout error: configuration variable %s empty", intf_ErrMsg( "vout error: configuration variable %s empty",
"filter" ); "filter" );
return( 1 ); return( 1 );
} }
while( *psz_method && *psz_method != ':' ) if( !strcmp( psz_method, "bob" ) )
{
psz_method++;
}
if( !strcmp( psz_method, ":bob" ) )
{ {
p_vout->p_sys->i_mode = DEINTERLACE_MODE_BOB; p_vout->p_sys->i_mode = DEINTERLACE_MODE_BOB;
} }
else if( !strcmp( psz_method, ":blend" ) ) else if( !strcmp( psz_method, "blend" ) )
{ {
p_vout->p_sys->i_mode = DEINTERLACE_MODE_BLEND; p_vout->p_sys->i_mode = DEINTERLACE_MODE_BLEND;
} }
...@@ -152,7 +149,7 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -152,7 +149,7 @@ static int vout_Create( vout_thread_t *p_vout )
p_vout->p_sys->i_mode = DEINTERLACE_MODE_BOB; p_vout->p_sys->i_mode = DEINTERLACE_MODE_BOB;
} }
free( psz_method_tmp ); free( psz_method );
return( 0 ); return( 0 );
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* distort.c : Misc video effects plugin for vlc * distort.c : Misc video effects plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
* $Id: distort.c,v 1.11 2002/05/19 12:57:32 gbazin Exp $ * $Id: distort.c,v 1.12 2002/05/27 19:35:41 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -49,6 +49,9 @@ static void vout_getfunctions( function_list_t * p_function_list ); ...@@ -49,6 +49,9 @@ static void vout_getfunctions( function_list_t * p_function_list );
* Build configuration tree. * Build configuration tree.
*****************************************************************************/ *****************************************************************************/
MODULE_CONFIG_START MODULE_CONFIG_START
ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
ADD_STRING ( "distort_mode", "wave", NULL, N_("distort mode"),
N_("one of \"wave\" and \"ripple\"") )
MODULE_CONFIG_STOP MODULE_CONFIG_STOP
MODULE_INIT_START MODULE_INIT_START
...@@ -130,8 +133,8 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -130,8 +133,8 @@ static int vout_Create( vout_thread_t *p_vout )
intf_ErrMsg("error: %s", strerror(ENOMEM) ); intf_ErrMsg("error: %s", strerror(ENOMEM) );
return( 1 ); return( 1 );
} }
p_vout->p_sys->i_mode = 0;
/* Look what method was requested */ /* Look what method was requested from command line*/
if( !(psz_method = psz_method_tmp if( !(psz_method = psz_method_tmp
= config_GetPszVariable( "filter" )) ) = config_GetPszVariable( "filter" )) )
{ {
...@@ -139,7 +142,6 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -139,7 +142,6 @@ static int vout_Create( vout_thread_t *p_vout )
"filter" ); "filter" );
return( 1 ); return( 1 );
} }
while( *psz_method && *psz_method != ':' ) while( *psz_method && *psz_method != ':' )
{ {
psz_method++; psz_method++;
...@@ -153,18 +155,43 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -153,18 +155,43 @@ static int vout_Create( vout_thread_t *p_vout )
{ {
p_vout->p_sys->i_mode = DISTORT_MODE_RIPPLE; p_vout->p_sys->i_mode = DISTORT_MODE_RIPPLE;
} }
else free( psz_method_tmp );
if( !p_vout->p_sys->i_mode )
{ {
intf_ErrMsg( "filter error: no valid distort mode provided, " /* No method given in commandline. Look what method was
"using distort:wave" ); requested in configuration system */
p_vout->p_sys->i_mode = DISTORT_MODE_WAVE; if( !(psz_method = psz_method_tmp
= config_GetPszVariable( "distort_mode" )) )
{
intf_ErrMsg( "vout error: configuration variable %s empty "
"using wave",
"distort_mode" );
p_vout->p_sys->i_mode = DISTORT_MODE_WAVE;
}
else {
if( !strcmp( psz_method, "wave" ) )
{
p_vout->p_sys->i_mode = DISTORT_MODE_WAVE;
}
else if( !strcmp( psz_method, "ripple" ) )
{
p_vout->p_sys->i_mode = DISTORT_MODE_RIPPLE;
}
else
{
intf_ErrMsg( "filter error: no valid distort mode provided, "
"using distort:wave" );
p_vout->p_sys->i_mode = DISTORT_MODE_WAVE;
}
}
} }
free( psz_method_tmp ); free( psz_method_tmp );
return( 0 ); return( 0 );
} }
/***************************************************************************** /*****************************************************************************
* vout_Init: initialize Distort video thread output method * vout_Init: initialize Distort video thread output method
*****************************************************************************/ *****************************************************************************/
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* transform.c : transform image plugin for vlc * transform.c : transform image plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
* $Id: transform.c,v 1.10 2002/05/19 12:57:32 gbazin Exp $ * $Id: transform.c,v 1.11 2002/05/27 19:35:41 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -50,6 +50,9 @@ static void vout_getfunctions( function_list_t * p_function_list ); ...@@ -50,6 +50,9 @@ static void vout_getfunctions( function_list_t * p_function_list );
* Build configuration tree. * Build configuration tree.
*****************************************************************************/ *****************************************************************************/
MODULE_CONFIG_START MODULE_CONFIG_START
ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
ADD_STRING("transform_type", "90", NULL, N_("Transform type"),
N_("One of '90', '180', '270', 'hflip' and 'vflip'"))
MODULE_CONFIG_STOP MODULE_CONFIG_STOP
MODULE_INIT_START MODULE_INIT_START
...@@ -126,51 +129,51 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -126,51 +129,51 @@ static int vout_Create( vout_thread_t *p_vout )
/* Look what method was requested */ /* Look what method was requested */
if( !(psz_method = psz_method_tmp if( !(psz_method = psz_method_tmp
= config_GetPszVariable( "filter" )) ) = config_GetPszVariable( "transform_type" )) )
{ {
intf_ErrMsg( "vout error: configuration variable %s empty", intf_ErrMsg( "vout error: configuration variable %s empty",
"filter" ); "transform_type" );
return( 1 ); intf_ErrMsg( "filter error: no valid transform mode provided, "
} "using '90'" );
while( *psz_method && *psz_method != ':' )
{
psz_method++;
}
if( !strcmp( psz_method, ":hflip" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_HFLIP;
p_vout->p_sys->b_rotation = 0;
}
else if( !strcmp( psz_method, ":vflip" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_VFLIP;
p_vout->p_sys->b_rotation = 0;
}
else if( !strcmp( psz_method, ":90" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_90; p_vout->p_sys->i_mode = TRANSFORM_MODE_90;
p_vout->p_sys->b_rotation = 1; p_vout->p_sys->b_rotation = 1;
} }
else if( !strcmp( psz_method, ":180" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_180;
p_vout->p_sys->b_rotation = 0;
}
else if( !strcmp( psz_method, ":270" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_270;
p_vout->p_sys->b_rotation = 1;
}
else else
{ {
intf_ErrMsg( "filter error: no valid transform mode provided, " if( !strcmp( psz_method, "hflip" ) )
"using transform:90" ); {
p_vout->p_sys->i_mode = TRANSFORM_MODE_90; p_vout->p_sys->i_mode = TRANSFORM_MODE_HFLIP;
p_vout->p_sys->b_rotation = 1; p_vout->p_sys->b_rotation = 0;
}
else if( !strcmp( psz_method, "vflip" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_VFLIP;
p_vout->p_sys->b_rotation = 0;
}
else if( !strcmp( psz_method, "90" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_90;
p_vout->p_sys->b_rotation = 1;
}
else if( !strcmp( psz_method, "180" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_180;
p_vout->p_sys->b_rotation = 0;
}
else if( !strcmp( psz_method, "270" ) )
{
p_vout->p_sys->i_mode = TRANSFORM_MODE_270;
p_vout->p_sys->b_rotation = 1;
}
else
{
intf_ErrMsg( "filter error: no valid transform mode provided, "
"using '90'" );
p_vout->p_sys->i_mode = TRANSFORM_MODE_90;
p_vout->p_sys->b_rotation = 1;
}
} }
free( psz_method_tmp ); free( psz_method_tmp );
return( 0 ); return( 0 );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* wall.c : Wall video plugin for vlc * wall.c : Wall video plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
* $Id: wall.c,v 1.17 2002/05/19 12:57:32 gbazin Exp $ * $Id: wall.c,v 1.18 2002/05/27 19:35:41 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -44,6 +44,15 @@ static void vout_getfunctions( function_list_t * p_function_list ); ...@@ -44,6 +44,15 @@ static void vout_getfunctions( function_list_t * p_function_list );
* Build configuration tree. * Build configuration tree.
*****************************************************************************/ *****************************************************************************/
MODULE_CONFIG_START MODULE_CONFIG_START
ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
ADD_INTEGER ( "wall_cols", 3, NULL, N_("Number of columns"),
N_("Select the number of horizontal videowindows in which "
"to split the video") )
ADD_INTEGER ( "wall_rows", 3, NULL, N_("Number of rows"),
N_("Select the number of vertical videowindows in which "
"to split the video") )
ADD_STRING ( "wall_active", NULL, NULL, N_("Active windows"),
N_("comma separated list of active windows, defaults to all") )
MODULE_CONFIG_STOP MODULE_CONFIG_STOP
MODULE_INIT_START MODULE_INIT_START
...@@ -129,73 +138,8 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -129,73 +138,8 @@ static int vout_Create( vout_thread_t *p_vout )
} }
/* Look what method was requested */ /* Look what method was requested */
if( !(psz_method = psz_method_tmp p_vout->p_sys->i_col = config_GetIntVariable( "wall_cols" );
= config_GetPszVariable( "filter" )) ) p_vout->p_sys->i_row = config_GetIntVariable( "wall_rows" );
{
intf_ErrMsg( "vout error: configuration variable %s empty",
"filter" );
return( 1 );
}
while( *psz_method && *psz_method != ':' )
{
psz_method++;
}
if( *psz_method )
{
psz_method++;
psz_tmp = psz_method;
while( *psz_tmp && *psz_tmp != 'x' && *psz_tmp != ':' )
{
psz_tmp++;
}
if( *psz_tmp == 'x' )
{
*psz_tmp = '\0';
p_vout->p_sys->i_col = atoi( psz_method );
psz_tmp++;
psz_method = psz_tmp;
while( *psz_tmp && *psz_tmp != ':' )
{
psz_tmp++;
}
if( *psz_tmp )
{
*psz_tmp = '\0';
p_vout->p_sys->i_row = atoi( psz_method );
psz_method = psz_tmp + 1;
}
else
{
p_vout->p_sys->i_row = atoi( psz_method );
psz_method = NULL;
}
}
else if( *psz_tmp == ':' )
{
p_vout->p_sys->i_col = p_vout->p_sys->i_row = atoi( psz_method );
psz_method = psz_tmp + 1;
}
else
{
p_vout->p_sys->i_col = p_vout->p_sys->i_row = atoi( psz_method );
psz_method = NULL;
}
}
else
{
intf_ErrMsg( "filter error: no valid wall size provided, "
"using wall:3x3" );
p_vout->p_sys->i_col = 3;
p_vout->p_sys->i_row = 3;
psz_method = NULL;
}
p_vout->p_sys->i_col = __MAX( 1, __MIN( 15, p_vout->p_sys->i_col ) ); p_vout->p_sys->i_col = __MAX( 1, __MIN( 15, p_vout->p_sys->i_col ) );
p_vout->p_sys->i_row = __MAX( 1, __MIN( 15, p_vout->p_sys->i_row ) ); p_vout->p_sys->i_row = __MAX( 1, __MIN( 15, p_vout->p_sys->i_row ) );
...@@ -214,6 +158,8 @@ static int vout_Create( vout_thread_t *p_vout ) ...@@ -214,6 +158,8 @@ static int vout_Create( vout_thread_t *p_vout )
return( 1 ); return( 1 );
} }
psz_method_tmp = psz_method = config_GetPszVariable( "wall_active" );
/* If no trailing vout are specified, take them all */ /* If no trailing vout are specified, take them all */
if( psz_method == NULL ) if( psz_method == NULL )
{ {
......
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