From 6d117d04fb698c6ffdc2778012a267bbf3fdb3e9 Mon Sep 17 00:00:00 2001 From: Cyril Deguet Date: Thu, 1 Nov 2001 00:29:54 +0000 Subject: [PATCH] - Do not resample if delta is short enough --- src/audio_output/aout_common.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/audio_output/aout_common.h b/src/audio_output/aout_common.h index a46d3cb85e..1980ba8b61 100644 --- a/src/audio_output/aout_common.h +++ b/src/audio_output/aout_common.h @@ -2,7 +2,7 @@ * aout_common.h: audio output inner functions ***************************************************************************** * Copyright (C) 1999, 2000, 2001 VideoLAN - * $Id: aout_common.h,v 1.4 2001/05/01 04:18:18 sam Exp $ + * $Id: aout_common.h,v 1.5 2001/11/01 00:29:54 asmax Exp $ * * Authors: Michel Kaempf * @@ -21,6 +21,12 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. *****************************************************************************/ + +/* Biggest difference allowed between scheduled playing date and actual date + (in microseconds) */ +#define MAX_DELTA 10000 + + /* Creating as many aout_Thread functions as configurations was one solution, * examining the different cases in the Thread loop of an unique function was * another. I chose the first solution. */ @@ -73,6 +79,7 @@ static __inline__ int NextFrame( aout_thread_t * p_aout, aout_fifo_t * p_fifo, mtime_t aout_date ) { long l_units, l_rate; + long long l_delta; /* We take the lock */ vlc_mutex_lock( &p_fifo->data_lock ); @@ -126,7 +133,18 @@ static __inline__ int NextFrame( aout_thread_t * p_aout, aout_fifo_t * p_fifo, l_units = ((p_fifo->l_next_frame - p_fifo->l_start_frame) & AOUT_FIFO_SIZE) * (p_fifo->l_frame_size >> (p_fifo->b_stereo)); - l_rate = p_fifo->l_rate + ((aout_date - p_fifo->date[p_fifo->l_start_frame]) / 256); + l_delta = aout_date - p_fifo->date[p_fifo->l_start_frame]; + +/* Resample if delta is too long */ + if( abs(l_delta) > MAX_DELTA ) + { + l_rate = p_fifo->l_rate + (l_delta / 256); + } + else + { + l_rate = p_fifo->l_rate; + } + intf_DbgMsg( "aout debug: %lli (%li);", aout_date - p_fifo->date[p_fifo->l_start_frame], l_rate ); InitializeIncrement( &p_fifo->unit_increment, l_rate, p_aout->l_rate ); -- 2.39.2