[Ffmpeg-devel] [PATCH] Add fact chunk to non-PCM wav

Michael Niedermayer michaelni
Thu Nov 9 15:49:22 CET 2006


Hi

On Thu, Nov 09, 2006 at 01:53:08PM +0100, Michel Bardiaux wrote:
> Michael Niedermayer wrote:
> >Hi
> >
> >On Thu, Nov 09, 2006 at 11:36:13AM +0100, Michel Bardiaux wrote:
> >>Michael has reported that
> >>
> >>>>interresting, accoridng to microsofts excelent and unambigous 
> >>>>documentation
> >>>>(not kidding ...)
> >>>>    Fact Chunk
> >>>>This chunk is required for all WAVE formats other than WAVE_FORMAT_PCM. 
> >>>>It stores file
> >>>>dependent information about the contents of the WAVE data. It currently 
> >>>>specifies the time length of the
> >>>>data in samples.
> >>>>
> >>>>so this must not be under CODEC_ID_MSGSM, also it must be a seperate 
> >>>>patch
> >>>>as its not CODEC_ID_MSGSM specific
> >>I took this literally, hence CODEC_ID_PCM_ALAW and CODEC_ID_PCM_MULAW 
> >>will get a fact chunk too.
> >
> >:)
> >
> >now just take the largest pts minus the smallest pts of any packet stored
> >and convert that by using AVStream.time_base and AVCodecContext.sample_rate
> >to the number of samples and store that in the fact chunk
> 
> Right, the patch does not make sense without the final update of the 
> chunk, and with a *general* formula, not the one I had specialised for 
> MSGSM. I'm rather rusty on the handling of timestamps, so this might 
> take some time 

in the write packet function
assert(avpacket->pts != AV_NOPTS_VALUE);
context->maxpts= FFMAX(context->maxpts, avpacket->pts);
context->minpts= FFMIN(context->minpts, avpacket->pts);

and in write_trailer
number_of_sample= av_rescale(context->maxpts - context->minpts, avctx->sample_rate * (int64_t)avstream->time_base.num, avstream->time_base.den);

untested of course but it should work approximately that way ...


> (and though I can read the lists from home, posting does 
> not work). 

hmm why?


[...]

> 
> >
> >then run the regression tests and send a patch which updates the checksums
> 
> Not clear how to proceed here, do you mean a subsequent patch, or in the 
> same?

in the fact chunk patch, sorry for being unclear

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is




More information about the ffmpeg-devel mailing list