Commit a75f88bc authored by Rémi Duraffort's avatar Rémi Duraffort

goom: factorization.

parent a022461a
...@@ -133,7 +133,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -133,7 +133,7 @@ static int Open( vlc_object_t *p_this )
aout_filter_t *p_filter = (aout_filter_t *)p_this; aout_filter_t *p_filter = (aout_filter_t *)p_this;
aout_filter_sys_t *p_sys; aout_filter_sys_t *p_sys;
goom_thread_t *p_thread; goom_thread_t *p_thread;
vlc_value_t width, height; int width, height;
video_format_t fmt; video_format_t fmt;
...@@ -160,17 +160,15 @@ static int Open( vlc_object_t *p_this ) ...@@ -160,17 +160,15 @@ static int Open( vlc_object_t *p_this )
vlc_object_create( p_filter, sizeof( goom_thread_t ) ); vlc_object_create( p_filter, sizeof( goom_thread_t ) );
vlc_object_attach( p_thread, p_this ); vlc_object_attach( p_thread, p_this );
var_Create( p_thread, "goom-width", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT ); width = var_CreateGetInteger( p_thread, "goom-width" );
var_Get( p_thread, "goom-width", &width ); height = var_CreateGetInteger( p_thread, "goom-height" );
var_Create( p_thread, "goom-height", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
var_Get( p_thread, "goom-height", &height );
memset( &fmt, 0, sizeof(video_format_t) ); memset( &fmt, 0, sizeof(video_format_t) );
fmt.i_width = fmt.i_visible_width = width.i_int; fmt.i_width = fmt.i_visible_width = width;
fmt.i_height = fmt.i_visible_height = height.i_int; fmt.i_height = fmt.i_visible_height = height;
fmt.i_chroma = VLC_FOURCC('R','V','3','2'); fmt.i_chroma = VLC_FOURCC('R','V','3','2');
fmt.i_aspect = VOUT_ASPECT_FACTOR * width.i_int/height.i_int; fmt.i_aspect = VOUT_ASPECT_FACTOR * width/height;
fmt.i_sar_num = fmt.i_sar_den = 1; fmt.i_sar_num = fmt.i_sar_den = 1;
p_thread->p_vout = aout_filter_RequestVout( p_filter, NULL, &fmt ); p_thread->p_vout = aout_filter_RequestVout( p_filter, NULL, &fmt );
...@@ -324,22 +322,21 @@ static int FillBuffer( int16_t *p_data, int *pi_data, ...@@ -324,22 +322,21 @@ static int FillBuffer( int16_t *p_data, int *pi_data,
static void* Thread( vlc_object_t *p_this ) static void* Thread( vlc_object_t *p_this )
{ {
goom_thread_t *p_thread = (goom_thread_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; audio_date_t i_pts;
int16_t p_data[2][512]; int16_t p_data[2][512];
int i_data = 0, i_count = 0; int i_data = 0, i_count = 0;
PluginInfo *p_plugin_info; PluginInfo *p_plugin_info;
int canc = vlc_savecancel (); int canc = vlc_savecancel ();
var_Get( p_this, "goom-width", &width ); width = var_GetInteger( p_this, "goom-width" );
var_Get( p_this, "goom-height", &height ); height = var_GetInteger( p_this, "goom-height" );
var_Create( p_thread, "goom-speed", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT ); speed = var_CreateGetInteger( p_thread, "goom-speed" );
var_Get( p_thread, "goom-speed", &speed ); speed = MAX_SPEED - speed;
speed.i_int = MAX_SPEED - speed.i_int; if( speed < 0 ) speed = 0;
if( speed.i_int < 0 ) speed.i_int = 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) ) while( vlc_object_alive (p_thread) )
{ {
...@@ -354,7 +351,7 @@ static void* Thread( vlc_object_t *p_this ) ...@@ -354,7 +351,7 @@ static void* Thread( vlc_object_t *p_this )
vlc_mutex_unlock( &p_thread->lock ); vlc_mutex_unlock( &p_thread->lock );
/* Speed selection */ /* Speed selection */
if( speed.i_int && (++i_count % (speed.i_int+1)) ) continue; if( speed && (++i_count % (speed+1)) ) continue;
/* Frame dropping if necessary */ /* Frame dropping if necessary */
if( aout_DateGet( &i_pts ) + GOOM_DELAY <= mdate() ) continue; if( aout_DateGet( &i_pts ) + GOOM_DELAY <= mdate() ) continue;
...@@ -373,7 +370,7 @@ static void* Thread( vlc_object_t *p_this ) ...@@ -373,7 +370,7 @@ static void* Thread( vlc_object_t *p_this )
if( p_pic == NULL ) break; 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; p_pic->date = aout_DateGet( &i_pts ) + GOOM_DELAY;
vout_DisplayPicture( p_thread->p_vout, p_pic ); vout_DisplayPicture( p_thread->p_vout, p_pic );
......
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