set_subcategory( SUBCAT_AUDIO_VISUAL )
set_capability( "visualization", 0 )
add_integer( "goom-width", 320, NULL,
- WIDTH_TEXT, RES_LONGTEXT, false );
+ WIDTH_TEXT, RES_LONGTEXT, false )
add_integer( "goom-height", 240, NULL,
- HEIGHT_TEXT, RES_LONGTEXT, false );
+ HEIGHT_TEXT, RES_LONGTEXT, false )
add_integer( "goom-speed", 6, NULL,
- SPEED_TEXT, SPEED_LONGTEXT, false );
+ SPEED_TEXT, SPEED_LONGTEXT, false )
set_callbacks( Open, Close )
add_shortcut( "goom" )
vlc_module_end ()
} goom_thread_t;
-typedef struct aout_filter_sys_t
+struct aout_filter_sys_t
{
goom_thread_t *p_thread;
-} aout_filter_sys_t;
+};
static void DoWork ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
aout_buffer_t * );
aout_filter_t *p_filter = (aout_filter_t *)p_this;
aout_filter_sys_t *p_sys;
goom_thread_t *p_thread;
- vlc_value_t width, height;
- video_format_t fmt;
+ int width, height;
+ video_format_t fmt;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' )
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
msg_Warn( p_filter, "bad input or output format" );
return VLC_EGENERIC;
}
- if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
+ if( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
{
msg_Warn( p_filter, "input and output formats are not similar" );
return VLC_EGENERIC;
vlc_object_create( p_filter, sizeof( goom_thread_t ) );
vlc_object_attach( p_thread, p_this );
- var_Create( p_thread, "goom-width", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
- var_Get( p_thread, "goom-width", &width );
- var_Create( p_thread, "goom-height", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
- var_Get( p_thread, "goom-height", &height );
+ width = var_CreateGetInteger( p_thread, "goom-width" );
+ height = var_CreateGetInteger( p_thread, "goom-height" );
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_width = fmt.i_visible_width = width.i_int;
- fmt.i_height = fmt.i_visible_height = height.i_int;
- fmt.i_chroma = VLC_FOURCC('R','V','3','2');
- fmt.i_aspect = VOUT_ASPECT_FACTOR * width.i_int/height.i_int;
+ fmt.i_width = fmt.i_visible_width = width;
+ fmt.i_height = fmt.i_visible_height = height;
+ fmt.i_chroma = VLC_CODEC_RGB32;
+ fmt.i_aspect = VOUT_ASPECT_FACTOR * width/height;
fmt.i_sar_num = fmt.i_sar_den = 1;
- p_thread->p_vout = vout_Request( p_filter, NULL, &fmt );
+ p_thread->p_vout = aout_filter_RequestVout( p_filter, NULL, &fmt );
if( p_thread->p_vout == NULL )
{
msg_Err( p_filter, "no suitable vout module" );
p_thread->psz_title = TitleGet( VLC_OBJECT( p_filter ) );
if( vlc_thread_create( p_thread, "Goom Update Thread", Thread,
- VLC_THREAD_PRIORITY_LOW, false ) )
+ VLC_THREAD_PRIORITY_LOW ) )
{
msg_Err( p_filter, "cannot lauch goom thread" );
vlc_object_release( p_thread->p_vout );
static void* Thread( vlc_object_t *p_this )
{
goom_thread_t *p_thread = (goom_thread_t*)p_this;
- vlc_value_t width, height, speed;
+ int width, height, speed;
audio_date_t i_pts;
int16_t p_data[2][512];
int i_data = 0, i_count = 0;
PluginInfo *p_plugin_info;
int canc = vlc_savecancel ();
- var_Get( p_this, "goom-width", &width );
- var_Get( p_this, "goom-height", &height );
+ width = var_GetInteger( p_this, "goom-width" );
+ height = var_GetInteger( p_this, "goom-height" );
- var_Create( p_thread, "goom-speed", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
- var_Get( p_thread, "goom-speed", &speed );
- speed.i_int = MAX_SPEED - speed.i_int;
- if( speed.i_int < 0 ) speed.i_int = 0;
+ speed = var_CreateGetInteger( p_thread, "goom-speed" );
+ speed = MAX_SPEED - speed;
+ if( speed < 0 ) speed = 0;
- p_plugin_info = goom_init( width.i_int, height.i_int );
+ p_plugin_info = goom_init( width, height );
while( vlc_object_alive (p_thread) )
{
vlc_mutex_unlock( &p_thread->lock );
/* Speed selection */
- if( speed.i_int && (++i_count % (speed.i_int+1)) ) continue;
+ if( speed && (++i_count % (speed+1)) ) continue;
/* Frame dropping if necessary */
if( aout_DateGet( &i_pts ) + GOOM_DELAY <= mdate() ) continue;
if( p_pic == NULL ) break;
- memcpy( p_pic->p[0].p_pixels, plane, width.i_int * height.i_int * 4 );
+ memcpy( p_pic->p[0].p_pixels, plane, width * height * 4 );
p_pic->date = aout_DateGet( &i_pts ) + GOOM_DELAY;
vout_DisplayPicture( p_thread->p_vout, p_pic );
vlc_thread_join( p_sys->p_thread );
/* Free data */
- vout_Request( p_filter, p_sys->p_thread->p_vout, 0 );
+ aout_filter_RequestVout( p_filter, p_sys->p_thread->p_vout, 0 );
vlc_mutex_destroy( &p_sys->p_thread->lock );
vlc_cond_destroy( &p_sys->p_thread->wait );
vlc_object_detach( p_sys->p_thread );