summaryrefslogtreecommitdiff
path: root/libavformat/avienc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-03-08 10:57:44 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-03-08 10:57:44 +0000
commitb559b29b1f9a8ce38f6d23fa4740b74bd5566bd5 (patch)
tree1f8dd705ad49af0d0afde2f98145be56a760e5a8 /libavformat/avienc.c
parent7004ffb3d7274fe95fab7a699b75cc4e6d9092e3 (diff)
read BITMAPINFOHEADER extra stuff (huffyuv decoding fixed)
fixed framerate encoding & decoding hopefully, this should fix av sync on long AVIs Originally committed as revision 1646 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/avienc.c')
-rw-r--r--libavformat/avienc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libavformat/avienc.c b/libavformat/avienc.c
index 9b930f346a..04bc9e6964 100644
--- a/libavformat/avienc.c
+++ b/libavformat/avienc.c
@@ -237,6 +237,8 @@ static int avi_write_header(AVFormatContext *s)
/* stream list */
for(i=0;i<n;i++) {
+ int gcd;
+
list2 = start_tag(pb, "LIST");
put_tag(pb, "strl");
@@ -252,8 +254,12 @@ static int avi_write_header(AVFormatContext *s)
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 */