aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-02-21 02:43:04 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-02-22 22:39:49 +0100
commita89c01253190b9eb9de8e28a3252423bf7732511 (patch)
treeb090bc0538590bcca733998f4b994c34c12767f7
parentf284e2a58a133e96d74d4da7ae91e459d4bfa81b (diff)
downloadffmpeg-a89c01253190b9eb9de8e28a3252423bf7732511.tar.gz
avformat/mux: support shifting timestamps so they start at 0
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/mux.c2
-rw-r--r--libavformat/options_table.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/libavformat/mux.c b/libavformat/mux.c
index 2241dbe0e6..1c15a91cd0 100644
--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -538,7 +538,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
AVStream *st = s->streams[pkt->stream_index];
int64_t offset = st->mux_ts_offset;
- if (pkt->dts < 0 && pkt->dts != AV_NOPTS_VALUE && !s->offset) {
+ if ((pkt->dts < 0 || s->avoid_negative_ts == 2) && pkt->dts != AV_NOPTS_VALUE && !s->offset) {
s->offset = -pkt->dts;
s->offset_timebase = st->time_base;
}
diff --git a/libavformat/options_table.h b/libavformat/options_table.h
index ca30fd29e3..2e08682f43 100644
--- a/libavformat/options_table.h
+++ b/libavformat/options_table.h
@@ -73,7 +73,7 @@ static const AVOption avformat_options[] = {
{"compliant", "consider all spec non compliancies as errors", 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_COMPLIANT }, INT_MIN, INT_MAX, D, "err_detect"},
{"aggressive", "consider things that a sane encoder shouldn't do as an error", 0, AV_OPT_TYPE_CONST, {.i64 = 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, {.i64 = 0}, 0, INT_MAX-1, D},
-{"avoid_negative_ts", "shift timestamps to make them non-negative. 1 enables, 0 disables, default of -1 enables when required by target format.", OFFSET(avoid_negative_ts), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, E},
+{"avoid_negative_ts", "shift timestamps so they start at 0. 1 enable if negative ts, 2 enable, 0 disables, default of -1 enables when required by target format.", OFFSET(avoid_negative_ts), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 2, E},
{"skip_initial_bytes", "set number of bytes to skip before reading header and frames", OFFSET(skip_initial_bytes), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX-1, D},
{"correct_ts_overflow", "correct single timestamp overflows", OFFSET(correct_ts_overflow), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, D},
{"flush_packets", "enable flushing of the I/O context after each packet", OFFSET(flush_packets), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, E},