diff options
author | Fabrice Bellard <fabrice@bellard.org> | 2002-11-19 15:52:29 +0000 |
---|---|---|
committer | Fabrice Bellard <fabrice@bellard.org> | 2002-11-19 15:52:29 +0000 |
commit | 45dd5c69f91eca28e03cffedfe10c4b5557a5ee7 (patch) | |
tree | 8b4023c52c9e4e653de06b459063331924412ef8 /libav/grab.c | |
parent | 8949367ea5252f69b34084b9be2c448561ad7fe4 (diff) | |
download | ffmpeg-45dd5c69f91eca28e03cffedfe10c4b5557a5ee7.tar.gz |
a/v sync support: added correct pts handling
Originally committed as revision 1229 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libav/grab.c')
-rw-r--r-- | libav/grab.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libav/grab.c b/libav/grab.c index 3d7c08a4a9..9bb9e93be9 100644 --- a/libav/grab.c +++ b/libav/grab.c @@ -240,6 +240,8 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap) st->codec.height = height; st->codec.frame_rate = frame_rate; + av_set_pts_info(s1, 48, 1, 1000000); /* 48 bits pts in us */ + return 0; fail: if (video_fd >= 0) @@ -279,7 +281,6 @@ static int grab_read_packet(AVFormatContext *s1, AVPacket *pkt) VideoData *s = s1->priv_data; INT64 curtime, delay; struct timespec ts; - int first; INT64 per_frame = (INT64_C(1000000) * FRAME_RATE_BASE) / s->frame_rate; int dropped = 0; @@ -287,7 +288,7 @@ static int grab_read_packet(AVFormatContext *s1, AVPacket *pkt) s->time_frame += per_frame; /* wait based on the frame rate */ - for(first = 1;; first = 0) { + for(;;) { curtime = av_gettime(); delay = s->time_frame - curtime; if (delay <= 0) { @@ -306,6 +307,8 @@ static int grab_read_packet(AVFormatContext *s1, AVPacket *pkt) if (av_new_packet(pkt, s->frame_size) < 0) return -EIO; + pkt->pts = curtime & ((1LL << 48) - 1); + if (dropped) pkt->flags |= PKT_FLAG_DROPPED_FRAME; |