diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2004-01-04 22:13:14 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-01-04 22:13:14 +0000 |
commit | b1b8f9fc580d63b0bc576ec6c2243af6c72a5c61 (patch) | |
tree | 1900568ba66693bfd5ba5157ea206062e3c03bec /libavcodec | |
parent | 3144b152a6e01641108363614684754fd1c30aea (diff) | |
download | ffmpeg-b1b8f9fc580d63b0bc576ec6c2243af6c72a5c61.tar.gz |
gop timestamp fix
Originally committed as revision 2667 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mpeg12.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 6a4e4f9c69..ef2241a427 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -297,14 +297,14 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s) put_bits(&s->pb, 1, 0); /* do drop frame */ /* 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 = (int64_t)s->fake_picture_number * MPEG1_FRAME_RATE_BASE; + fps = (frame_rate_tab[s->frame_rate_index] + MPEG1_FRAME_RATE_BASE/2)/ MPEG1_FRAME_RATE_BASE; + time_code = s->fake_picture_number; s->gop_picture_number = s->fake_picture_number; put_bits(&s->pb, 5, (uint32_t)((time_code / (fps * 3600)) % 24)); put_bits(&s->pb, 6, (uint32_t)((time_code / (fps * 60)) % 60)); put_bits(&s->pb, 1, 1); put_bits(&s->pb, 6, (uint32_t)((time_code / fps) % 60)); - put_bits(&s->pb, 6, (uint32_t)((time_code % fps) / MPEG1_FRAME_RATE_BASE)); + put_bits(&s->pb, 6, (uint32_t)((time_code % fps))); put_bits(&s->pb, 1, 0); /* closed gop */ put_bits(&s->pb, 1, 0); /* broken link */ } @@ -1786,7 +1786,6 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, ref = get_bits(&s->gb, 10); /* temporal ref */ s->pict_type = get_bits(&s->gb, 3); - dprintf("pict_type=%d number=%d\n", s->pict_type, s->picture_number); vbv_delay= get_bits(&s->gb, 16); if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) { @@ -1808,6 +1807,9 @@ static int mpeg1_decode_picture(AVCodecContext *avctx, s->current_picture.pict_type= s->pict_type; s->current_picture.key_frame= s->pict_type == I_TYPE; +// if(avctx->debug & FF_DEBUG_PICT_INFO) +// av_log(avctx, AV_LOG_DEBUG, "vbv_delay %d, ref %d\n", vbv_delay, ref); + s->y_dc_scale = 8; s->c_dc_scale = 8; s->first_slice = 1; |