[FFmpeg-devel] Patch to WAV to accurately report duration

Frank Barchard fbarchard
Sun Jan 16 20:06:52 CET 2011


On Sat, Jan 15, 2011 at 8:36 AM, Michael Niedermayer <michaelni at gmx.at>wrote:

> On Sat, Jan 15, 2011 at 02:16:05AM -0800, Frank Barchard wrote:
> > On Wed, Jan 12, 2011 at 3:21 PM, Michael Niedermayer <michaelni at gmx.at
> >wrote:
> >
> > > On Wed, Jan 12, 2011 at 01:59:09PM -0800, Frank Barchard wrote:
> > > > On Wed, Jan 12, 2011 at 8:04 AM, Michael Niedermayer <
> michaelni at gmx.at
> > > >wrote:
> > > >
> > > > > On Mon, Jan 10, 2011 at 06:51:18PM -0800, Frank Barchard wrote:
> > > > > > Patch to accurately report duration of a WAV.
> > > > >
> > > > > -    } else
> > > > > > +    } else {
> > > > > >          wav->data_end= url_ftell(pb) + size;
> > > > > > +        st->nb_frames = size /
> > > > > > +            (st->codec->channels *
> (st->codec->bits_per_coded_sample
> > > >>
> > > > > 3));
> > > > > > +        st->duration = st->codec->frame_size ?
> > > > > > +            st->nb_frames * st->codec->frame_size :
> st->nb_frames;
> > > > > > +    }
> > > > >
> > > > > this is wrong, iam not even sure its guranteed to work with PCM
> > > > >
> > > >
> > > > The patch has certainly worked for 8-bit, 16-bit, and 24-bit wav
> files
> > > that
> > > > we've tested.  With the patch, the number of frames is reported as
> > > exactly
> > > > right (as compared with the results returned by Apple's 'afinfo'
> tool).
> > > >  Without the patch it is not accurate.
> > >
> > > try it with any VBR codec
> > >
> >
> > done.
> >
> > This patch corrects VBR codecs, falling back on the estimate if
> > bits_per_coded_sample is not set.
> >
> > Also tested with mulaw and alaw that are fixed bits per sample.
> > The intent of the math is to allow bits per sample that are not multples
> of
> > 8
>
> applied something less buggy, ill also add fact chunk support in a moment
>

Thanks Michael.  Indeed your patch handles a case mine didn't.
In this set of WAV's:
http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/Samples.html
truspech.wav now gets the duration correct.



More information about the ffmpeg-devel mailing list