X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Faudio_output%2Foutput.c;h=16c55e4adaa287f7f3107e4e9ccbd1e9371a8b22;hb=a8879770fc2af864fb56c985d2ad0a4b2de14fd2;hp=5df0c88a7bdd70942da9b71faa00b4b74cccedc9;hpb=42088654d66f38bca725eb3c69ad84883d185cd4;p=vlc diff --git a/src/audio_output/output.c b/src/audio_output/output.c index 5df0c88a7b..16c55e4ada 100644 --- a/src/audio_output/output.c +++ b/src/audio_output/output.c @@ -18,18 +18,18 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** * Preamble *****************************************************************************/ -#include /* calloc(), malloc(), free() */ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include - -#include "audio_output.h" +#include #include "aout_internal.h" /***************************************************************************** @@ -57,7 +57,7 @@ int aout_OutputNew( aout_instance_t * p_aout, p_aout->output.p_module = module_Need( p_aout, "audio output", "$aout", 0); if ( p_aout->output.p_module == NULL ) { - msg_Err( p_aout, "no suitable aout module" ); + msg_Err( p_aout, "no suitable audio output module" ); vlc_mutex_unlock( &p_aout->output_fifo_lock ); return -1; } @@ -176,7 +176,7 @@ int aout_OutputNew( aout_instance_t * p_aout, { /* Non-S/PDIF mixer only deals with float32 or fixed32. */ p_aout->mixer.mixer.i_format - = (p_aout->p_libvlc->i_cpu & CPU_CAPABILITY_FPU) ? + = (vlc_CPU() & CPU_CAPABILITY_FPU) ? VLC_FOURCC('f','l','3','2') : VLC_FOURCC('f','i','3','2'); aout_FormatPrepare( &p_aout->mixer.mixer ); @@ -195,7 +195,7 @@ int aout_OutputNew( aout_instance_t * p_aout, &p_aout->mixer.mixer, &p_aout->output.output ) < 0 ) { - msg_Err( p_aout, "couldn't set an output pipeline" ); + msg_Err( p_aout, "couldn't create audio output pipeline" ); module_Unneed( p_aout, p_aout->output.p_module ); return -1; } @@ -231,7 +231,10 @@ void aout_OutputDelete( aout_instance_t * p_aout ) aout_FiltersDestroyPipeline( p_aout, p_aout->output.pp_filters, p_aout->output.i_nb_filters ); + + vlc_mutex_lock( &p_aout->output_fifo_lock ); aout_FifoDestroy( p_aout, &p_aout->output.fifo ); + vlc_mutex_unlock( &p_aout->output_fifo_lock ); p_aout->output.b_error = VLC_TRUE; } @@ -296,7 +299,7 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, p_aout->output.fifo.pp_last = &p_aout->output.fifo.p_first; #if 0 /* This is bad because the audio output might just be trying to fill - * in it's internal buffers. And anyway, it's up to the audio output + * in its internal buffers. And anyway, it's up to the audio output * to deal with this kind of starvation. */ /* Set date to 0, to allow the mixer to send a new buffer ASAP */ @@ -323,10 +326,12 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout, * --Gibalou */ { + const mtime_t i_delta = p_buffer->start_date - start_date; vlc_mutex_unlock( &p_aout->output_fifo_lock ); + if ( !p_aout->output.b_starving ) msg_Dbg( p_aout, "audio output is starving ("I64Fd"), " - "playing silence", p_buffer->start_date - start_date ); + "playing silence", i_delta ); p_aout->output.b_starving = 1; return NULL; }