X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fjack.c;h=ba8804f732a3eeea612ae0ba30239b543f7ca8d5;hb=a106e0a3bcf439dd278f12c53254870f5cf358c3;hp=ee3f560cc80b3035dba06a29aa39e50615e89ebf;hpb=df61d33b06e2b3cbbe746b2f5a9bea5b370c24ff;p=vlc diff --git a/modules/access/jack.c b/modules/access/jack.c index ee3f560cc8..ba8804f732 100644 --- a/modules/access/jack.c +++ b/modules/access/jack.c @@ -37,7 +37,8 @@ # include "config.h" #endif -#include +#include +#include #include #include #include @@ -70,9 +71,9 @@ static void Close( vlc_object_t * ); "Automatically connect VLC input ports to available output ports." ) vlc_module_begin(); - set_description( _("JACK audio input") ); + set_description( N_("JACK audio input") ); set_capability( "access_demux", 0 ); - set_shortname( _( "JACK Input" ) ); + set_shortname( N_( "JACK Input" ) ); set_category( CAT_INPUT ); set_subcategory( SUBCAT_INPUT_ACCESS ); @@ -142,10 +143,7 @@ static int Open( vlc_object_t *p_this ) /* Allocate structure */ p_demux->p_sys = p_sys = calloc( 1, sizeof( demux_sys_t ) ); if( p_sys == NULL ) - { - msg_Err( p_demux, "out of memory, cannot allocate structure" ); return VLC_ENOMEM; - } memset( p_sys, 0, sizeof( demux_sys_t ) ); /* Parse MRL */ @@ -187,7 +185,8 @@ static int Open( vlc_object_t *p_this ) p_sys->i_channels * sizeof( jack_port_t* ) ); if( p_sys->pp_jack_port_input == NULL ) { - msg_Err( p_demux, "out of memory, cannot allocate input ports" ); + jack_client_close( p_sys->p_jack_client ); + free( p_sys ); return VLC_ENOMEM; } @@ -199,7 +198,9 @@ static int Open( vlc_object_t *p_this ) * sizeof( jack_default_audio_sample_t ) ); if( p_sys->p_jack_ringbuffer == NULL ) { - msg_Err( p_demux, "out of memory, cannot allocate ringbuffer" ); + free( p_sys->pp_jack_port_input ); + jack_client_close( p_sys->p_jack_client ); + free( p_sys ); return VLC_ENOMEM; } @@ -214,10 +215,9 @@ static int Open( vlc_object_t *p_this ) if( p_sys->pp_jack_port_input[i] == NULL ) { msg_Err( p_demux, "failed to register a JACK port" ); - if( p_sys->p_jack_client) jack_client_close( p_sys->p_jack_client ); + jack_ringbuffer_free( p_sys->p_jack_ringbuffer ); free( p_sys->pp_jack_port_input ); - if( p_sys->p_jack_ringbuffer ) jack_ringbuffer_free( p_sys->p_jack_ringbuffer ); - free( p_sys->pp_jack_buffer ); + jack_client_close( p_sys->p_jack_client ); free( p_sys ); return VLC_EGENERIC; } @@ -228,7 +228,12 @@ static int Open( vlc_object_t *p_this ) * sizeof( jack_default_audio_sample_t * ) ); if( p_sys->pp_jack_buffer == NULL ) { - msg_Err( p_demux, "out of memory, cannot allocate input buffer" ); + for( i = 0; i < p_sys->i_channels; i++ ) + jack_port_unregister( p_sys->p_jack_client, p_sys->pp_jack_port_input[i] ); + jack_ringbuffer_free( p_sys->p_jack_ringbuffer ); + free( p_sys->pp_jack_port_input ); + jack_client_close( p_sys->p_jack_client ); + free( p_sys ); return VLC_ENOMEM; } @@ -239,10 +244,12 @@ static int Open( vlc_object_t *p_this ) if ( jack_activate( p_sys->p_jack_client ) ) { msg_Err( p_demux, "failed to activate JACK client" ); - if( p_sys->p_jack_client) jack_client_close( p_sys->p_jack_client ); - free( p_sys->pp_jack_port_input ); - if( p_sys->p_jack_ringbuffer ) jack_ringbuffer_free( p_sys->p_jack_ringbuffer ); free( p_sys->pp_jack_buffer ); + for( i = 0; i < p_sys->i_channels; i++ ) + jack_port_unregister( p_sys->p_jack_client, p_sys->pp_jack_port_input[i] ); + jack_ringbuffer_free( p_sys->p_jack_ringbuffer ); + free( p_sys->pp_jack_port_input ); + jack_client_close( p_sys->p_jack_client ); free( p_sys ); return VLC_EGENERIC; } @@ -287,7 +294,7 @@ static int Open( vlc_object_t *p_this ) jack_port_name( p_sys->pp_jack_port_input[i_input_ports] ) ); } } - free( pp_jack_port_output ); + free( pp_jack_port_output ); } /* info about jack server */