| @@ -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 = { | |||||
| 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){ | |||||
| 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); | ||||