diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-08-17 00:08:51 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-08-18 19:19:47 +0200 |
commit | 28ff17fa9761706ec5f07c07ce9ff04816536749 (patch) | |
tree | faeb4c0ae793125d1a4786da99d23ccf14aa4bf0 | |
parent | 92b8c9d89e7ae86bffa05393bb230d5a165b0148 (diff) | |
download | ffmpeg-28ff17fa9761706ec5f07c07ce9ff04816536749.tar.gz |
lavf: add use_wallclock_as_timestamps
This may fix Ticket730
Reviewed-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/avformat.h | 8 | ||||
-rw-r--r-- | libavformat/options_table.h | 1 | ||||
-rw-r--r-- | libavformat/utils.c | 3 |
3 files changed, 12 insertions, 0 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 05b4fc74cf..b635ae7cf3 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1100,6 +1100,14 @@ typedef struct AVFormatContext { */ int max_chunk_size; + /** + * forces the use of wallclock timestamps as pts/dts of packets + * This has undefined results in the presence of B frames. + * - encoding: unused + * - decoding: Set by user via AVOptions (NO direct access) + */ + int use_wallclock_as_timestamps; + /***************************************************************** * All fields below this line are not part of the public API. They * may not be used outside of libavformat and can be changed and diff --git a/libavformat/options_table.h b/libavformat/options_table.h index 9bc0329c00..fd55df82ff 100644 --- a/libavformat/options_table.h +++ b/libavformat/options_table.h @@ -70,6 +70,7 @@ static const AVOption options[]={ {"careful", "consider things that violate the spec and have not been seen in the wild as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CAREFUL }, INT_MIN, INT_MAX, D, "err_detect"}, {"compliant", "consider all spec non compliancies as errors", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_COMPLIANT }, INT_MIN, INT_MAX, D, "err_detect"}, {"aggressive", "consider things that a sane encoder shouldnt do as an error", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_AGGRESSIVE }, INT_MIN, INT_MAX, D, "err_detect"}, +{"use_wallclock_as_timestamps", "use wallclock as timestamps", OFFSET(use_wallclock_as_timestamps), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX-1, D}, {NULL}, }; diff --git a/libavformat/utils.c b/libavformat/utils.c index d166d083dd..af1c2819e8 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -776,6 +776,9 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) if(s->subtitle_codec_id)st->codec->codec_id= s->subtitle_codec_id; break; } + /* TODO: audio: time filter; video: frame reordering (pts != dts) */ + if (s->use_wallclock_as_timestamps) + pkt->dts = pkt->pts = av_rescale_q(av_gettime(), AV_TIME_BASE_Q, st->time_base); if(!pktl && st->request_probe <= 0) return ret; |