--- libavformat/tests/movenc.c | 30 +++++++++++++++++++++++++++++- tests/ref/fate/movenc | 14 ++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/libavformat/tests/movenc.c b/libavformat/tests/movenc.c index 2af72f11c7..79de20ee75 100644 --- a/libavformat/tests/movenc.c +++ b/libavformat/tests/movenc.c @@ -248,11 +248,14 @@ static void init(int bf, int audio_preroll) static void mux_frames(int n, int c) { int end_frames = frames + n; + int has_audio = 0; while (1) { uint8_t pktdata[8] = { 0 }; av_packet_unref(pkt); - if (av_compare_ts(audio_dts, audio_st->time_base, video_dts, video_st->time_base) < 0) { + if (av_compare_ts(audio_dts, audio_st->time_base, video_dts, video_st->time_base) < 0 || + (frames == end_frames && !has_audio)) { + has_audio = 1; pkt->dts = pkt->pts = audio_dts; pkt->stream_index = 1; pkt->duration = audio_duration; @@ -787,6 +790,31 @@ int main(int argc, char **argv) finish(); close_out(); + // Abnormal difference of timestamp between two streams. + do_interleave = 1; + init_out("streams-timestamp-offset"); + av_dict_set(&opts, "movflags", "frag_keyframe+empty_moov", 0); + av_dict_set(&opts, "frag_duration", "650000", 0); + init_fps(0, 0, 30); + audio_dts = INT_MAX - audio_duration / 2; + mux_gops(1); + finish(); + close_out(); + do_interleave = 0; + + // Abnormal timestamp jump. + do_interleave = 1; + init_out("streams-timestamp-jump"); + av_dict_set(&opts, "movflags", "frag_keyframe+empty_moov", 0); + av_dict_set(&opts, "frag_duration", "650000", 0); + init_fps(0, 0, 30); + mux_gops(1); + audio_dts = (int64_t)(INT_MAX) * 3 / 2; + mux_gops(1); + finish(); + close_out(); + do_interleave = 0; + av_free(md5); av_packet_free(&pkt); diff --git a/tests/ref/fate/movenc b/tests/ref/fate/movenc index 81ea75f372..a5614f49a7 100644 --- a/tests/ref/fate/movenc +++ b/tests/ref/fate/movenc @@ -151,3 +151,17 @@ write_data len 900, time 0, type sync atom moof write_data len 908, time 1000000, type sync atom moof write_data len 148, time nopts, type trailer atom - 3be575022e446855bca1e45b7942cc0c 3115 empty-moov-neg-cts +write_data len 36, time nopts, type header atom ftyp +write_data len 1123, time nopts, type header atom - +write_data len 280, time 0, type sync atom moof +write_data len 288, time 666667, type boundary atom moof +write_data len 129, time nopts, type trailer atom - +60d2f9877f29bd154b0047dfbca8e36a 1856 streams-timestamp-offset +write_data len 36, time nopts, type header atom ftyp +write_data len 1123, time nopts, type header atom - +write_data len 588, time 0, type sync atom moof +write_data len 472, time 666667, type boundary atom moof +write_data len 280, time 1000000, type sync atom moof +write_data len 288, time 1666667, type boundary atom moof +write_data len 205, time nopts, type trailer atom - +15951eb265243ad827446117f3a24099 2992 streams-timestamp-jump -- 2.31.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".