void aout_PacketDestroy (audio_output_t *aout) { aout_packet_t *p = aout_packet (aout); aout_FifoDestroy (&p->partial); aout_FifoDestroy (&p->fifo); vlc_mutex_destroy (&p->lock); }
static void inputFailure( aout_instance_t * p_aout, aout_input_t * p_input, const char * psz_error_message ) { /* error message */ msg_Err( p_aout, "%s", psz_error_message ); /* clean up */ aout_FiltersDestroyPipeline( p_aout, p_input->pp_filters, p_input->i_nb_filters ); aout_FiltersDestroyPipeline( p_aout, p_input->pp_resamplers, p_input->i_nb_resamplers ); aout_FifoDestroy( p_aout, &p_input->mixer.fifo ); var_Destroy( p_aout, "visual" ); var_Destroy( p_aout, "equalizer" ); var_Destroy( p_aout, "audio-filter" ); var_Destroy( p_aout, "audio-visual" ); var_Destroy( p_aout, "audio-replay-gain-mode" ); var_Destroy( p_aout, "audio-replay-gain-default" ); var_Destroy( p_aout, "audio-replay-gain-preamp" ); var_Destroy( p_aout, "audio-replay-gain-peak-protection" ); /* error flag */ p_input->b_error = 1; }
/***************************************************************************** * aout_OutputDelete : delete the output ***************************************************************************** * This function is entered with the mixer lock. *****************************************************************************/ void aout_OutputDelete( aout_instance_t * p_aout ) { vlc_assert_locked( &p_aout->lock ); if( p_aout->output.p_module == NULL ) return; module_unneed( p_aout, p_aout->output.p_module ); p_aout->output.p_module = NULL; aout_FiltersDestroyPipeline( p_aout->output.pp_filters, p_aout->output.i_nb_filters ); aout_FifoDestroy( &p_aout->output.fifo ); }
/***************************************************************************** * aout_InputDelete : delete an input ***************************************************************************** * This function must be entered with the mixer lock. *****************************************************************************/ int aout_InputDelete( aout_instance_t * p_aout, aout_input_t * p_input ) { if ( p_input->b_error ) return 0; aout_FiltersDestroyPipeline( p_aout, p_input->pp_filters, p_input->i_nb_filters ); p_input->i_nb_filters = 0; aout_FiltersDestroyPipeline( p_aout, p_input->pp_resamplers, p_input->i_nb_resamplers ); p_input->i_nb_resamplers = 0; aout_FifoDestroy( p_aout, &p_input->fifo ); return 0; }
/***************************************************************************** * aout_OutputDelete : delete the output ***************************************************************************** * This function is entered with the mixer lock. *****************************************************************************/ void aout_OutputDelete( aout_instance_t * p_aout ) { if ( p_aout->output.b_error ) { return; } module_unneed( p_aout, p_aout->output.p_module ); aout_FiltersDestroyPipeline( p_aout, p_aout->output.pp_filters, p_aout->output.i_nb_filters ); aout_lock_output_fifo( p_aout ); aout_FifoDestroy( p_aout, &p_aout->output.fifo ); aout_unlock_output_fifo( p_aout ); p_aout->output.b_error = true; }
static void inputFailure( aout_instance_t * p_aout, aout_input_t * p_input, char * psz_error_message ) { /* error message */ msg_Err( p_aout, "couldn't set an input pipeline" ); /* clean up */ aout_FiltersDestroyPipeline( p_aout, p_input->pp_filters, p_input->i_nb_filters ); aout_FiltersDestroyPipeline( p_aout, p_input->pp_resamplers, p_input->i_nb_resamplers ); aout_FifoDestroy( p_aout, &p_input->fifo ); var_Destroy( p_aout, "visual" ); var_Destroy( p_aout, "equalizer" ); var_Destroy( p_aout, "audio-filter" ); var_Destroy( p_aout, "audio-visual" ); /* error flag */ p_input->b_error = 1; }
/***************************************************************************** * aout_InputDelete : delete an input ***************************************************************************** * This function must be entered with the mixer lock. *****************************************************************************/ int aout_InputDelete( aout_instance_t * p_aout, aout_input_t * p_input ) { AOUT_ASSERT_MIXER_LOCKED; if ( p_input->b_error ) return 0; /* XXX We need to update b_recycle_vout before calling aout_FiltersDestroyPipeline. * FIXME They can be a race condition if audio-visual is updated between * aout_InputDelete and aout_InputNew. */ char *psz_visual = var_GetString( p_aout, "audio-visual"); p_input->b_recycle_vout = psz_visual && *psz_visual; free( psz_visual ); aout_FiltersDestroyPipeline( p_aout, p_input->pp_filters, p_input->i_nb_filters ); p_input->i_nb_filters = 0; aout_FiltersDestroyPipeline( p_aout, p_input->pp_resamplers, p_input->i_nb_resamplers ); p_input->i_nb_resamplers = 0; aout_FifoDestroy( p_aout, &p_input->mixer.fifo ); return 0; }