From 86f2b9d0c7cee327b1952b8471a0cc2d57a32191 Mon Sep 17 00:00:00 2001 From: Philip Gladstone <philipjsg@users.sourceforge.net> Date: Wed, 20 Nov 2002 02:57:42 +0000 Subject: [PATCH] Set the pkt->pts field so that we have a chance of doing frame rate reduction correctly in ffmpeg.c Originally committed as revision 1242 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libav/grab.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libav/grab.c b/libav/grab.c index 9bb9e93be99..910616fc86c 100644 --- a/libav/grab.c +++ b/libav/grab.c @@ -32,6 +32,7 @@ typedef struct { int width, height; int frame_rate; INT64 time_frame; + INT64 time_frame_start; int frame_size; struct video_capability video_cap; struct video_audio audio_saved; @@ -239,6 +240,8 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap) st->codec.width = width; st->codec.height = height; st->codec.frame_rate = frame_rate; + + s->time_frame_start = s->time_frame; av_set_pts_info(s1, 48, 1, 1000000); /* 48 bits pts in us */ @@ -312,6 +315,10 @@ static int grab_read_packet(AVFormatContext *s1, AVPacket *pkt) if (dropped) pkt->flags |= PKT_FLAG_DROPPED_FRAME; + pkt->pts = (s->time_frame - s->time_frame_start) * s1->pts_den / ((INT64)s1->pts_num * 1000000); + + //printf("setting pkt->pts=%lld (time_frame=%lld)\n", pkt->pts, s->time_frame); + /* read one frame */ if (s->aiw_enabled) { return aiw_read_picture(s, pkt->data); -- GitLab