No subject

Wed Aug 5 14:32:43 CEST 2015

typedef struct {
  signed long seconds;		/* whole seconds */
  unsigned long fraction;	/* 1/MAD_TIMER_RESOLUTION seconds */
} mad_timer_t;

For the pts try to fit i_current_pts in p_mad_adec->libmad_timer.seconds
= ..i_current_pts inside libmad_input. Then
p_mad_adec->libmad_timer.fractions = p_mad_adec->p_fifo->l_rate; See
mad.h for more details.

You could try something like this.


  p_mad_adec->libmad_timer.seconds = p_mad_adec->i_pts_current *1000; //
does vlc do everything in mseconds?
  p_mad_adec->libmad_timer.fraction = p_mad_adec->p_aout_fifo->l_rate; 
  // or p_libmad_pcm->samplerate; in libmad_output

  mad_timer_reset( &p_mad_adec->libmad_timer );


The scratches here and there are either through bad frames, because of
timing. Or the downscale function is not completely right. Try to enable
line 150 in mad_libmad.c 

#define MPEG321_ROUTINES 1

and comment out line 297 till 307.

((p_mad_adec->libmad_decoder->sync->stream.error==MAD_ERROR_BADCRC) ||

       ) {
//	intf_ErrMsg( "LIBMAD_OUTPUT: nr of channels [%d], samplerate in Hz
[%d,%d], sample size [%d], error_code [%0x]",
//	         p_libmad_pcm->channels, p_libmad_pcm->samplerate,
//     		 p_libmad_pcm->length,
//      PrintFrameInfo(&p_libmad_header);
    	return MAD_FLOW_IGNORE;

That is off the top of my head. I'll look into the scratches in a few
days time. 

Hope this helps.

Jean-Paul Saman

This is the vlc-devel mailing-list, see
To unsubscribe, please read

More information about the vlc-devel mailing list