[SCM] libav/experimental: gop timestamp fix
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 15:38:51 UTC 2013
The following commit has been merged in the experimental branch:
commit b1b8f9fc580d63b0bc576ec6c2243af6c72a5c61
Author: Michael Niedermayer <michaelni at gmx.at>
Date: Sun Jan 4 22:13:14 2004 +0000
gop timestamp fix
Originally committed as revision 2667 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index 6a4e4f9..ef2241a 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;
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list