[Ffmpeg-devel] [PATCH] ODML AVI Duration

Brian Brice bbrice
Tue Aug 22 23:38:39 CEST 2006


Michael Niedermayer wrote:
> Hi
> 
> On Tue, Aug 22, 2006 at 03:21:23PM -0500, Brian Brice wrote:
>> If I encoded an AVI that was over 2 GB (or 4m:43s DV), then video
>> players would read the wrong duration, thus not being able to show the
>> entire clip.  For example, encoding a DV clip that is about 5 minutes
>> in duration:
>>
>> ffmpeg -i INPUT.mpg -f avi -vcodec dvvideo -acodec pcm_s16le -s ntsc
>> -r ntsc -ar 48000 -pix_fmt yuv411p -t 00:05:00 OUTPUT.avi
>>
>> Windows Media Player and even ffmpeg would report the duration as 4:43.
>> This patch is to write the proper lengths in the AVI and stream headers.
>> If the file contains only 1 RIFF, then all will be the same.  If there
>> is more than 1 RIFF, then in the write_trailer, it updates the odml's
>> length along with the headers.
> 
> quoting the odml spec
> "The dwTotalFrames field indicates the size (number of frames) within the first RIFF
> chunk."
> 
> ...
> 
> "Extended AVI Header (dmlh)
> typedef struct {
>    DWORD dwTotalFrames;
> } ODMLExtendedAVIHeader;
> Total Frames
> The dwTotalFrames field indicates the real size of the AVI file. Since the same field in the
> Main AVI Header indicates the size within the first RIFF chunk.
> "

OK.  This version updates ONLY the stream headers' length but leaves
the avih's total frames referring to ONLY the first RIFF's.  Having ONLY
the streams' headers updated reports the correct duration in both
Windows Media Player and ffmpeg.

-- 
Brian Brice
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: avienc.c.patch
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20060822/82f19a75/attachment.asc>



More information about the ffmpeg-devel mailing list