X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Faudio_output%2Foutput.c;h=d15d9909af0d133acc04d7855c281394bd0fcc76;hb=f76500382dc059091e0d811ed55a22337d2fe04f;hp=b799855b43db43ac012c2ce0837f088aac515b64;hpb=d666030b2349e8a710fcba4d2cabb912cc700580;p=vlc diff --git a/src/audio_output/output.c b/src/audio_output/output.c index b799855b43..d15d9909af 100644 --- a/src/audio_output/output.c +++ b/src/audio_output/output.c @@ -51,14 +51,14 @@ int aout_OutputNew( aout_instance_t * p_aout, p_aout->output.output.i_rate = i_rate; aout_FormatPrepare( &p_aout->output.output ); - vlc_mutex_lock( &p_aout->output_fifo_lock ); + aout_lock_output_fifo( p_aout ); /* Find the best output plug-in. */ - p_aout->output.p_module = module_Need( p_aout, "audio output", "$aout", 0); + p_aout->output.p_module = module_need( p_aout, "audio output", "$aout", false ); if ( p_aout->output.p_module == NULL ) { msg_Err( p_aout, "no suitable audio output module" ); - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); return -1; } @@ -165,51 +165,49 @@ int aout_OutputNew( aout_instance_t * p_aout, aout_FifoInit( p_aout, &p_aout->output.fifo, p_aout->output.output.i_rate ); - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); aout_FormatPrint( p_aout, "output", &p_aout->output.output ); /* Calculate the resulting mixer output format. */ - memcpy( &p_aout->mixer.mixer, &p_aout->output.output, - sizeof(audio_sample_format_t) ); + p_aout->mixer_format = p_aout->output.output; if ( !AOUT_FMT_NON_LINEAR(&p_aout->output.output) ) { /* Non-S/PDIF mixer only deals with float32 or fixed32. */ - p_aout->mixer.mixer.i_format + p_aout->mixer_format.i_format = (vlc_CPU() & CPU_CAPABILITY_FPU) ? - VLC_FOURCC('f','l','3','2') : - VLC_FOURCC('f','i','3','2'); - aout_FormatPrepare( &p_aout->mixer.mixer ); + VLC_CODEC_FL32 : VLC_CODEC_FI32; + aout_FormatPrepare( &p_aout->mixer_format ); } else { - p_aout->mixer.mixer.i_format = p_format->i_format; + p_aout->mixer_format.i_format = p_format->i_format; } - aout_FormatPrint( p_aout, "mixer", &p_aout->mixer.mixer ); + aout_FormatPrint( p_aout, "mixer", &p_aout->mixer_format ); /* Create filters. */ p_aout->output.i_nb_filters = 0; if ( aout_FiltersCreatePipeline( p_aout, p_aout->output.pp_filters, &p_aout->output.i_nb_filters, - &p_aout->mixer.mixer, + &p_aout->mixer_format, &p_aout->output.output ) < 0 ) { msg_Err( p_aout, "couldn't create audio output pipeline" ); - module_Unneed( p_aout, p_aout->output.p_module ); + module_unneed( p_aout, p_aout->output.p_module ); return -1; } /* Prepare hints for the buffer allocator. */ - p_aout->mixer.output_alloc.i_alloc_type = AOUT_ALLOC_HEAP; - p_aout->mixer.output_alloc.i_bytes_per_sec - = p_aout->mixer.mixer.i_bytes_per_frame - * p_aout->mixer.mixer.i_rate - / p_aout->mixer.mixer.i_frame_length; + p_aout->mixer_allocation.b_alloc = true; + p_aout->mixer_allocation.i_bytes_per_sec + = p_aout->mixer_format.i_bytes_per_frame + * p_aout->mixer_format.i_rate + / p_aout->mixer_format.i_frame_length; aout_FiltersHintBuffers( p_aout, p_aout->output.pp_filters, p_aout->output.i_nb_filters, - &p_aout->mixer.output_alloc ); + &p_aout->mixer_allocation ); p_aout->output.b_error = 0; return 0; @@ -227,14 +225,14 @@ void aout_OutputDelete( aout_instance_t * p_aout ) return; } - module_Unneed( p_aout, p_aout->output.p_module ); + module_unneed( p_aout, p_aout->output.p_module ); aout_FiltersDestroyPipeline( p_aout, p_aout->output.pp_filters, p_aout->output.i_nb_filters ); - vlc_mutex_lock( &p_aout->output_fifo_lock ); + aout_lock_output_fifo( p_aout ); aout_FifoDestroy( p_aout, &p_aout->output.fifo ); - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); p_aout->output.b_error = true; } @@ -256,10 +254,10 @@ void aout_OutputPlay( aout_instance_t * p_aout, aout_buffer_t * p_buffer ) return; } - vlc_mutex_lock( &p_aout->output_fifo_lock ); + aout_lock_output_fifo( p_aout ); aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer ); p_aout->output.pf_play( p_aout ); - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); } /***************************************************************************** @@ -276,7 +274,7 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, { aout_buffer_t * p_buffer; - vlc_mutex_lock( &p_aout->output_fifo_lock ); + aout_lock_output_fifo( p_aout ); p_buffer = p_aout->output.fifo.p_first; @@ -310,7 +308,7 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, p_aout->output.b_starving = 1; #endif - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); return NULL; } @@ -327,7 +325,7 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, */ { const mtime_t i_delta = p_buffer->start_date - start_date; - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); if ( !p_aout->output.b_starving ) msg_Dbg( p_aout, "audio output is starving (%"PRId64"), " @@ -348,16 +346,16 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, msg_Warn( p_aout, "output date isn't PTS date, requesting " "resampling (%"PRId64")", difference ); - vlc_mutex_lock( &p_aout->input_fifos_lock ); + aout_lock_input_fifos( p_aout ); for ( i = 0; i < p_aout->i_nb_inputs; i++ ) { - aout_fifo_t * p_fifo = &p_aout->pp_inputs[i]->fifo; + aout_fifo_t * p_fifo = &p_aout->pp_inputs[i]->mixer.fifo; aout_FifoMoveDates( p_aout, p_fifo, difference ); } aout_FifoMoveDates( p_aout, &p_aout->output.fifo, difference ); - vlc_mutex_unlock( &p_aout->input_fifos_lock ); + aout_unlock_input_fifos( p_aout ); } p_aout->output.fifo.p_first = p_buffer->p_next; @@ -366,6 +364,6 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, p_aout->output.fifo.pp_last = &p_aout->output.fifo.p_first; } - vlc_mutex_unlock( &p_aout->output_fifo_lock ); + aout_unlock_output_fifo( p_aout ); return p_buffer; }