Mercurial > libavformat.hg
diff utils.c @ 2020:d0d39f124c6b libavformat
timestamps generation improvement when parsing avi
patch by Joakim \ elupus chez ecce dot se /
original thread:
date: 03/19/2007 01:47 AM
subject: [Ffmpeg-devel] [RFC] Improvement for the odd timestamp generation when parser is in use.
author | benoit |
---|---|
date | Fri, 13 Apr 2007 07:50:04 +0000 |
parents | 0d9b233dff9b |
children | a3e79d6e4e3c |
line wrap: on
line diff
--- a/utils.c Thu Apr 12 11:28:34 2007 +0000 +++ b/utils.c Fri Apr 13 07:50:04 2007 +0000 @@ -584,6 +584,7 @@ AVCodecParserContext *pc, AVPacket *pkt) { int num, den, presentation_delayed, delay, i; + int64_t offset; /* handle wrapping */ if(st->cur_dts != AV_NOPTS_VALUE){ if(pkt->pts != AV_NOPTS_VALUE) @@ -599,6 +600,16 @@ } } + /* correct timestamps with byte offset if demuxers only have timestamps on packet boundaries */ + if(pc && st->need_parsing == AVSTREAM_PARSE_TIMESTAMPS && pkt->size){ + /* this will estimate bitrate based on this frame's duration and size */ + offset = av_rescale(pc->offset, pkt->duration, pkt->size); + if(pkt->pts != AV_NOPTS_VALUE) + pkt->pts += offset; + if(pkt->dts != AV_NOPTS_VALUE) + pkt->dts += offset; + } + if(is_intra_only(st->codec)) pkt->flags |= PKT_FLAG_KEY;