aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2002-02-18 01:58:00 +0000
committerMichael Niedermayer <michaelni@gmx.at>2002-02-18 01:58:00 +0000
commitbb6f51aeab88a252cf08f5a0ec26ab41ae2d74a2 (patch)
tree730bbf3a1c3d95539e0e6beef2f606c9e913db9d /libavcodec
parent3696d2bb83ea19436eb3165c66482e61470c3ee0 (diff)
downloadffmpeg-bb6f51aeab88a252cf08f5a0ec26ab41ae2d74a2.tar.gz
avoid overflow of picturenumber*fps*10000
bug found by Lennert Buytenhek <buytenh@gnu.org> Originally committed as revision 302 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h263.c2
-rw-r--r--libavcodec/mpeg12.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 37087dcc85..900d8ce00c 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -68,7 +68,7 @@ void h263_encode_picture_header(MpegEncContext * s, int picture_number)
s->gob_number = 0;
put_bits(&s->pb, 22, 0x20); /* PSC */
- put_bits(&s->pb, 8, ((s->picture_number * 30 * FRAME_RATE_BASE) /
+ put_bits(&s->pb, 8, (((INT64)s->picture_number * 30 * FRAME_RATE_BASE) /
s->frame_rate) & 0xff);
put_bits(&s->pb, 1, 1); /* marker */
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index b7af9262d7..41bf524e4a 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -106,7 +106,7 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
/* time code : we must convert from the real frame rate to a
fake mpeg frame rate in case of low frame rate */
fps = frame_rate_tab[s->frame_rate_index];
- time_code = s->fake_picture_number * FRAME_RATE_BASE;
+ time_code = (INT64)s->fake_picture_number * FRAME_RATE_BASE;
s->gop_picture_number = s->fake_picture_number;
put_bits(&s->pb, 5, (UINT32)((time_code / (fps * 3600)) % 24));
put_bits(&s->pb, 6, (UINT32)((time_code / (fps * 60)) % 60));
@@ -121,7 +121,7 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
/* insert empty P pictures to slow down to the desired
frame rate. Each fake pictures takes about 20 bytes */
fps = frame_rate_tab[s->frame_rate_index];
- n = ((s->picture_number * fps) / s->frame_rate) - 1;
+ n = (((INT64)s->picture_number * fps) / s->frame_rate) - 1;
while (s->fake_picture_number < n) {
mpeg1_skip_picture(s, s->fake_picture_number -
s->gop_picture_number);