[FFmpeg-trac] #4577(undetermined:new): Wrong duration for G.729 in wav

FFmpeg trac at avcodec.org
Tue Jul 21 05:20:19 CEST 2015

#4577: Wrong duration for G.729 in wav
             Reporter:  cehoyos      |                    Owner:
                 Type:  defect       |                   Status:  new
             Priority:  minor        |                Component:
              Version:  git-master   |  undetermined
             Keywords:  wav g729     |               Resolution:
             Blocking:               |               Blocked By:
Analyzed by developer:  0            |  Reproduced by developer:  0
Changes (by gajjanag):

 * cc: gajjanagadde@… (added)


 Attached file does not conform to the WAV specification.
 See http://www-
 mmsp.ece.mcgill.ca/documents/AudioFormats/WAVE/Docs/RIFFNEW.pdf (under
 Fact Chunk),
 and source code libavformat/wavdec.c.
 The Fact Chunk is supposed to contain number of samples (since codec is
 compressed), and is set to 135200 here.
 However, it should be 135200 * 8.
 Note that the fact chunk is currently redundant, since the number of
 samples can alternatively
 be derived from the data size and bits per sample,
 and so most programs (except ffmpeg) use this to derive number of samples.
 ffmpeg also does this, but only in some other situations.
 If ffmpeg did this for G.729 as well, correct duration can be reported.

 I thus see two possible solutions:
 1. Continue to bend over backwards so as to support an even larger set of
 non spec compliant files,
 and thus make behavior match that of other media libraries/players.
 2. Not fix this, as file is not spec compliant.

 BTW, I have not looked into the non-monotone DTS aspect,
 but suspect it would follow from correctly setting duration and related
 timestamp stuff.

Ticket URL: <https://trac.ffmpeg.org/ticket/4577#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker

More information about the FFmpeg-trac mailing list