CVS Commit: vlc

Jean-Paul Saman saman at natlab.research.philips.com
Wed May 1 19:30:13 CEST 2002


Laurent Aimar wrote:
> On Wed, May 01, 2002, Jean-Paul Saman wrote:
> 
>>In the mad_libmad.c code there are two downscale algorithmes. One of 
>>them is adaptive on dither errors and masks rough edge from the sound. 
>>You could try to use this function instead of the default *faster* 
>>downscaling.
>>
>>In fact it is an algorithme borrowed from mpg321
>>//#define MPG321_ROUTINES     1
>>uncomment it and try again. Check the value of AOUT_BUFFER_DURATION it 
>>may also influence your result.
>>
> 
> 
>   I've tried but it make no amelioration at all.
> 
OK, I'll try to fix it. I am the maintainer of the mad plugin, but do 
*need* a mpeg sample to reproduce it.

I asume you use latest cvs version?

>  I'v searched and (thanks to added intf_Msg ...) i'v found that with
> the mpeg audio streams that are awfull, mad function don't return
> ADEC_FRAME_SIZE(2*1152) but half of it.
> 
I have seen this one before, but that was related to not copying data 
that was in the input buffer. Mad consumes only enough data to fill a 
number of frames and leaves the rest in the input buffer. This is long 
solved now in the code (libmad_input function).

>  So when, libmad_output received these data, it fill a buffer of
> ADEC_FRAME_SIZE long with half of real data and then switch to the next
> data buffer by increase p_mad_adec->p_aout_fifo->i_end_frame .But then
> half of this buffer is not used and let blank.
> 

I do update samplerate in that part of the code (libmad_output 
function), see below.

if (p_mad_adec->p_aout_fifo->i_rate != p_libmad_pcm->samplerate)
{
	intf_ErrMsg( "mad_adec: libmad_output samplerate is changing from [%d] Hz 
to [%d] Hz, sample size [%d], error_code [%0x]",
                    p_mad_adec->p_aout_fifo->i_rate, 
p_libmad_pcm->samplerate,
      		     p_libmad_pcm->length, 
p_mad_adec->libmad_decoder->sync->stream.error);
// 
p_mad_adec->p_aout_fifo->i_rate = p_libmad_pcm->samplerate;
}

Have you tried uncommenting it? Like...
// 	p_mad_adec->p_aout_fifo->i_rate = p_libmad_pcm->samplerate;

And did it help.

>  I think the way to solve it is to keep the number of samples that are
> out, and so switch to next data buffer only when is really needed . Or
> find a way to known what sort of stream make mad to not output the good
> size, and create fifo with good size.
> 

Please, send a pointer to a sample file and I'll get on to fixing this.

-- 
Kind greetings,

Jean-Paul Saman

Software Architect

e-mail (work): saman at natlab.research.philips.com
phone  (work): 040 27 42909
------------------------------------------------------------
Ordina TA,
Science Park Eindhoven 5602, Postbus 293, 5600 AG Eindhoven
e-mail : jean-paul.saman at ordina.nl
phone  : 040 2601200
fax    : 040 2601199


-- 
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://www.videolan.org/lists.html
If you are in trouble, please contact <postmaster at videolan.org>



More information about the vlc-devel mailing list