Commit 094aa84b authored by James Zern's avatar James Zern Committed by Michael Niedermayer

muxers: Add a flag to mark muxers that allow (non strict) monotone timestamps.

parent 2b6bfff2
...@@ -262,6 +262,9 @@ typedef struct AVFormatParameters { ...@@ -262,6 +262,9 @@ typedef struct AVFormatParameters {
#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ #define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */
#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */ #define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */
#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fallback to generic search */ #define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fallback to generic search */
#define AVFMT_TS_NONSTRICT 0x8000 /**< Format does not require strictly
increasing timestamps, but they must
still be monotonic */
typedef struct AVOutputFormat { typedef struct AVOutputFormat {
const char *name; const char *name;
......
...@@ -1220,7 +1220,7 @@ AVOutputFormat ff_webm_muxer = { ...@@ -1220,7 +1220,7 @@ AVOutputFormat ff_webm_muxer = {
mkv_write_header, mkv_write_header,
mkv_write_packet, mkv_write_packet,
mkv_write_trailer, mkv_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS, .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT,
}; };
#endif #endif
......
...@@ -2993,7 +2993,7 @@ static int compute_pkt_fields2(AVFormatContext *s, AVStream *st, AVPacket *pkt){ ...@@ -2993,7 +2993,7 @@ static int compute_pkt_fields2(AVFormatContext *s, AVStream *st, AVPacket *pkt){
pkt->dts= st->pts_buffer[0]; pkt->dts= st->pts_buffer[0];
} }
if(st->cur_dts && st->cur_dts != AV_NOPTS_VALUE && st->cur_dts >= pkt->dts){ if(st->cur_dts && st->cur_dts != AV_NOPTS_VALUE && ((!(s->oformat->flags & AVFMT_TS_NONSTRICT) && st->cur_dts >= pkt->dts) || st->cur_dts > pkt->dts)){
av_log(s, AV_LOG_ERROR, av_log(s, AV_LOG_ERROR,
"Application provided invalid, non monotonically increasing dts to muxer in stream %d: %"PRId64" >= %"PRId64"\n", "Application provided invalid, non monotonically increasing dts to muxer in stream %d: %"PRId64" >= %"PRId64"\n",
st->index, st->cur_dts, pkt->dts); st->index, st->cur_dts, pkt->dts);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment