Mercurial > libavformat.hg
diff avienc.c @ 75:78bec272ce3a libavformat
read BITMAPINFOHEADER extra stuff (huffyuv decoding fixed)
fixed framerate encoding & decoding hopefully, this should fix av sync on long AVIs
author | michaelni |
---|---|
date | Sat, 08 Mar 2003 10:57:44 +0000 |
parents | a58a8a53eb46 |
children | d03c70b7b50d |
line wrap: on
line diff
--- a/avienc.c Sat Mar 08 01:40:52 2003 +0000 +++ b/avienc.c Sat Mar 08 10:57:44 2003 +0000 @@ -237,6 +237,8 @@ /* stream list */ for(i=0;i<n;i++) { + int gcd; + list2 = start_tag(pb, "LIST"); put_tag(pb, "strl"); @@ -252,8 +254,12 @@ put_le16(pb, 0); /* priority */ put_le16(pb, 0); /* language */ put_le32(pb, 0); /* initial frame */ - put_le32(pb, 1000); /* scale */ - put_le32(pb, (1000 * stream->frame_rate) / FRAME_RATE_BASE); /* rate */ + + gcd= av_gcd(stream->frame_rate, FRAME_RATE_BASE); + + put_le32(pb, FRAME_RATE_BASE / gcd); /* scale */ + put_le32(pb, stream->frame_rate / gcd); /* rate */ + put_le32(pb, 0); /* start */ avi->frames_hdr_strm[i] = url_ftell(pb); /* remember this offset to fill later */ put_le32(pb, nb_frames); /* length, XXX: fill later */