diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-09-01 14:19:07 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-09-05 20:36:22 +0200 |
commit | bca4fef46a6b0a6f5c31840c4c03303a329dbbe9 (patch) | |
tree | 3f83cfe4dd4702c0b8416a3f8aceef1c560f74c3 | |
parent | 1a8309e954b894675aa450db5c117240195385a9 (diff) | |
download | ffmpeg-bca4fef46a6b0a6f5c31840c4c03303a329dbbe9.tar.gz |
avformat/matroskaenc: Use custom min timestamp
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavformat/matroskaenc.c | 1 | ||||
-rw-r--r-- | libavformat/webm_chunk.c | 4 | ||||
-rw-r--r-- | tests/fate/matroska.mak | 2 | ||||
-rw-r--r-- | tests/ref/fate/matroska-ogg-opus-remux | 108 | ||||
-rw-r--r-- | tests/ref/fate/matroska-opus-remux | 130 |
5 files changed, 125 insertions, 120 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 0ded53dc21..97dcff5607 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1841,6 +1841,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, track->ts_offset = av_rescale_q(par->initial_padding, (AVRational){ 1, par->sample_rate }, st->time_base); + ffstream(st)->lowest_ts_allowed = -track->ts_offset; } if (par->codec_id == AV_CODEC_ID_OPUS) put_ebml_uint(pb, MATROSKA_ID_SEEKPREROLL, OPUS_SEEK_PREROLL); diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c index 9e71a1209d..916ed0cbab 100644 --- a/libavformat/webm_chunk.c +++ b/libavformat/webm_chunk.c @@ -127,6 +127,7 @@ fail: ffformatcontext(s)->avoid_negative_ts_use_pts = ffformatcontext(oc)->avoid_negative_ts_use_pts; oc->avoid_negative_ts = AVFMT_AVOID_NEG_TS_DISABLED; + ffformatcontext(oc)->avoid_negative_ts_status = AVOID_NEGATIVE_TS_DISABLED; return 0; } @@ -149,10 +150,13 @@ static int webm_chunk_write_header(AVFormatContext *s) { WebMChunkContext *wc = s->priv_data; AVFormatContext *oc = wc->avf; + AVStream *st = s->streams[0], *ost = oc->streams[0]; int ret; ret = avformat_write_header(oc, NULL); ff_format_io_close(s, &oc->pb); + ffstream(st)->lowest_ts_allowed = ffstream(ost)->lowest_ts_allowed; + ffstream(ost)->lowest_ts_allowed = 0; wc->header_written = 1; if (ret < 0) return ret; diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index 94532b31dc..63e81f121b 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -166,7 +166,7 @@ fate-matroska-mpegts-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/mpegts/pmtc # Tests maintaining codec delay while remuxing from Matroska. # For some reason, ffmpeg shifts the timestamps of the input file # to make them zero before reaching the muxer while it does not -# for the ogg-opus-remux test. +# for the ogg-opus-remux test. -avoid_negative_ts make_zero counters this. FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, OPUS_PARSER OPUS_DECODER) += fate-matroska-opus-remux fate-matroska-opus-remux: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/codec_delay_opus.mkv matroska "-avoid_negative_ts make_zero -c copy" "-copyts -c copy" "-show_packets -show_entries stream=codec_name,initial_padding -read_intervals %0.05" diff --git a/tests/ref/fate/matroska-ogg-opus-remux b/tests/ref/fate/matroska-ogg-opus-remux index da9c8d285b..1fa776ef01 100644 --- a/tests/ref/fate/matroska-ogg-opus-remux +++ b/tests/ref/fate/matroska-ogg-opus-remux @@ -1,4 +1,4 @@ -47b6b69c2ffdf5729557e90c72d241e9 *tests/data/fate/matroska-ogg-opus-remux.matroska +a3f98769fe55bc5234cf75fb1949749a *tests/data/fate/matroska-ogg-opus-remux.matroska 10200 tests/data/fate/matroska-ogg-opus-remux.matroska #extradata 0: 19, 0x399c0471 #tb 0: 1/1000 @@ -6,54 +6,54 @@ #codec_id 0: opus #sample_rate 0: 48000 #channel_layout_name 0: stereo -0, 0, 0, 20, 402, 0x89b1c40f -0, 20, 20, 20, 216, 0x7bf97146 -0, 40, 40, 20, 215, 0x6cb86d8b -0, 60, 60, 20, 218, 0x9cfd691c -0, 80, 80, 20, 218, 0xd7fe6a94 -0, 100, 100, 20, 194, 0x35735de6 -0, 120, 120, 20, 216, 0x3ee6705a -0, 140, 140, 20, 218, 0x67eb6cb1 -0, 160, 160, 20, 218, 0x32d0700d -0, 180, 180, 20, 219, 0xcb7f6c60 -0, 200, 200, 20, 218, 0x9c866b33 -0, 220, 220, 20, 217, 0xfe3e6a53 -0, 240, 240, 20, 218, 0x13586833 -0, 260, 260, 20, 222, 0xbcb2669e -0, 280, 280, 20, 218, 0x8dfc6e33 -0, 300, 300, 20, 217, 0xf5957051 -0, 320, 320, 20, 210, 0xed126e6b -0, 340, 340, 20, 216, 0xbf947249 -0, 360, 360, 20, 203, 0x6c7e680a -0, 380, 380, 20, 209, 0xf78f6af4 -0, 400, 400, 20, 217, 0xd60c684d -0, 420, 420, 20, 218, 0x89056a7a -0, 440, 440, 20, 219, 0x0bc674ad -0, 460, 460, 20, 217, 0xb1d86d1a -0, 480, 480, 20, 220, 0x433d685a -0, 500, 500, 20, 364, 0x0c88be84 -0, 520, 520, 20, 221, 0x804a733d -0, 540, 540, 20, 215, 0x6e9d6e9b -0, 560, 560, 20, 215, 0x63016a83 -0, 580, 580, 20, 218, 0xf9a46fbe -0, 600, 600, 20, 216, 0xa0d66c08 -0, 620, 620, 20, 216, 0xa2ca6d0a -0, 640, 640, 20, 216, 0xf50e6f1d -0, 660, 660, 20, 215, 0x6aaa70b6 -0, 680, 680, 20, 219, 0x7ceb6ba0 -0, 700, 700, 20, 220, 0x398d6ca9 -0, 720, 720, 20, 218, 0x7bd06ed5 -0, 740, 740, 20, 219, 0xe2906c62 -0, 760, 760, 20, 217, 0xcf316ba1 -0, 780, 780, 20, 217, 0x470b6eea -0, 800, 800, 20, 359, 0x36c2a18a, S=1, 10 +0, -7, -7, 20, 402, 0x89b1c40f +0, 13, 13, 20, 216, 0x7bf97146 +0, 33, 33, 20, 215, 0x6cb86d8b +0, 53, 53, 20, 218, 0x9cfd691c +0, 73, 73, 20, 218, 0xd7fe6a94 +0, 93, 93, 20, 194, 0x35735de6 +0, 113, 113, 20, 216, 0x3ee6705a +0, 133, 133, 20, 218, 0x67eb6cb1 +0, 153, 153, 20, 218, 0x32d0700d +0, 173, 173, 20, 219, 0xcb7f6c60 +0, 193, 193, 20, 218, 0x9c866b33 +0, 213, 213, 20, 217, 0xfe3e6a53 +0, 233, 233, 20, 218, 0x13586833 +0, 253, 253, 20, 222, 0xbcb2669e +0, 273, 273, 20, 218, 0x8dfc6e33 +0, 293, 293, 20, 217, 0xf5957051 +0, 313, 313, 20, 210, 0xed126e6b +0, 333, 333, 20, 216, 0xbf947249 +0, 353, 353, 20, 203, 0x6c7e680a +0, 373, 373, 20, 209, 0xf78f6af4 +0, 393, 393, 20, 217, 0xd60c684d +0, 413, 413, 20, 218, 0x89056a7a +0, 433, 433, 20, 219, 0x0bc674ad +0, 453, 453, 20, 217, 0xb1d86d1a +0, 473, 473, 20, 220, 0x433d685a +0, 493, 493, 20, 364, 0x0c88be84 +0, 513, 513, 20, 221, 0x804a733d +0, 533, 533, 20, 215, 0x6e9d6e9b +0, 553, 553, 20, 215, 0x63016a83 +0, 573, 573, 20, 218, 0xf9a46fbe +0, 593, 593, 20, 216, 0xa0d66c08 +0, 613, 613, 20, 216, 0xa2ca6d0a +0, 633, 633, 20, 216, 0xf50e6f1d +0, 653, 653, 20, 215, 0x6aaa70b6 +0, 673, 673, 20, 219, 0x7ceb6ba0 +0, 693, 693, 20, 220, 0x398d6ca9 +0, 713, 713, 20, 218, 0x7bd06ed5 +0, 733, 733, 20, 219, 0xe2906c62 +0, 753, 753, 20, 217, 0xcf316ba1 +0, 773, 773, 20, 217, 0x470b6eea +0, 793, 793, 20, 359, 0x36c2a18a, S=1, 10 [PACKET] codec_type=audio stream_index=0 -pts=0 -pts_time=0.000000 -dts=0 -dts_time=0.000000 +pts=-7 +pts_time=-0.007000 +dts=-7 +dts_time=-0.007000 duration=20 duration_time=0.020000 size=402 @@ -63,10 +63,10 @@ flags=K_ [PACKET] codec_type=audio stream_index=0 -pts=20 -pts_time=0.020000 -dts=20 -dts_time=0.020000 +pts=13 +pts_time=0.013000 +dts=13 +dts_time=0.013000 duration=20 duration_time=0.020000 size=216 @@ -76,10 +76,10 @@ flags=K_ [PACKET] codec_type=audio stream_index=0 -pts=40 -pts_time=0.040000 -dts=40 -dts_time=0.040000 +pts=33 +pts_time=0.033000 +dts=33 +dts_time=0.033000 duration=20 duration_time=0.020000 size=215 diff --git a/tests/ref/fate/matroska-opus-remux b/tests/ref/fate/matroska-opus-remux index 286bb65949..61afeaa751 100644 --- a/tests/ref/fate/matroska-opus-remux +++ b/tests/ref/fate/matroska-opus-remux @@ -1,4 +1,4 @@ -2ab987ba7bad94b27fae427cdff57723 *tests/data/fate/matroska-opus-remux.matroska +551e45142f0989b281e837a3a86f0218 *tests/data/fate/matroska-opus-remux.matroska 9355 tests/data/fate/matroska-opus-remux.matroska #extradata 0: 19, 0x3a04048f #tb 0: 1/1000 @@ -6,65 +6,65 @@ #codec_id 0: opus #sample_rate 0: 48000 #channel_layout_name 0: mono -0, 0, 0, 20, 320, 0x58b9a88d -0, 21, 21, 20, 159, 0x6c9c4b4c -0, 41, 41, 20, 148, 0x0caf4b5d -0, 61, 61, 20, 139, 0xc5624226 -0, 81, 81, 20, 146, 0x633c4937 -0, 101, 101, 20, 153, 0x3d0b4f93 -0, 121, 121, 20, 158, 0xe5c55641 -0, 141, 141, 20, 156, 0xf2fd50ef -0, 161, 161, 20, 158, 0x93b15410 -0, 181, 181, 20, 157, 0xb6f74f5f -0, 201, 201, 20, 159, 0x9aff4957 -0, 221, 221, 20, 153, 0xfc5f4aba -0, 241, 241, 20, 158, 0x01e44f70 -0, 261, 261, 20, 153, 0x227149cf -0, 281, 281, 20, 155, 0x312f4cf6 -0, 301, 301, 20, 155, 0xafc54bae -0, 321, 321, 20, 151, 0x7b4252b3 -0, 341, 341, 20, 155, 0x29074a75 -0, 361, 361, 20, 149, 0x82c44bcd -0, 381, 381, 20, 150, 0x55c24eb5 -0, 401, 401, 20, 156, 0xf71d4f33 -0, 421, 421, 20, 153, 0x9b6c4ae5 -0, 441, 441, 20, 156, 0x75954e51 -0, 461, 461, 20, 155, 0x28ff4ff3 -0, 481, 481, 20, 153, 0xc4424969 -0, 501, 501, 20, 154, 0xfbf94cc8 -0, 521, 521, 20, 155, 0x52c549af -0, 541, 541, 20, 150, 0x6f1e4b7a -0, 561, 561, 20, 158, 0xabb45566 -0, 581, 581, 20, 157, 0xe61d4a99 -0, 601, 601, 20, 159, 0xf45d4fac -0, 621, 621, 20, 159, 0xcd0553a5 -0, 641, 641, 20, 156, 0xdb244e63 -0, 661, 661, 20, 154, 0x78654c52 -0, 681, 681, 20, 154, 0x9f804cc8 -0, 701, 701, 20, 150, 0x1fdf4c80 -0, 721, 721, 20, 155, 0x1adc4f89 -0, 741, 741, 20, 155, 0x4b53511c -0, 761, 761, 20, 151, 0x8ff2546d -0, 781, 781, 20, 158, 0xb7e34f1b -0, 801, 801, 20, 154, 0x4d98474b -0, 821, 821, 20, 154, 0x14924ea8 -0, 841, 841, 20, 153, 0x8d4752bf -0, 861, 861, 20, 149, 0x74785066 -0, 881, 881, 20, 151, 0x36c94a4c -0, 901, 901, 20, 155, 0x82904f3b -0, 921, 921, 20, 154, 0xd76b4a45 -0, 941, 941, 20, 159, 0x9fec548d -0, 961, 961, 20, 154, 0x9a084dcd -0, 981, 981, 20, 155, 0x90a54ac8 -0, 1001, 1001, 20, 324, 0x8e34a2f5 -0, 1021, 1021, 20, 268, 0x10f37203, S=1, 10 +0, -7, -7, 20, 320, 0x58b9a88d +0, 14, 14, 20, 159, 0x6c9c4b4c +0, 34, 34, 20, 148, 0x0caf4b5d +0, 54, 54, 20, 139, 0xc5624226 +0, 74, 74, 20, 146, 0x633c4937 +0, 94, 94, 20, 153, 0x3d0b4f93 +0, 114, 114, 20, 158, 0xe5c55641 +0, 134, 134, 20, 156, 0xf2fd50ef +0, 154, 154, 20, 158, 0x93b15410 +0, 174, 174, 20, 157, 0xb6f74f5f +0, 194, 194, 20, 159, 0x9aff4957 +0, 214, 214, 20, 153, 0xfc5f4aba +0, 234, 234, 20, 158, 0x01e44f70 +0, 254, 254, 20, 153, 0x227149cf +0, 274, 274, 20, 155, 0x312f4cf6 +0, 294, 294, 20, 155, 0xafc54bae +0, 314, 314, 20, 151, 0x7b4252b3 +0, 334, 334, 20, 155, 0x29074a75 +0, 354, 354, 20, 149, 0x82c44bcd +0, 374, 374, 20, 150, 0x55c24eb5 +0, 394, 394, 20, 156, 0xf71d4f33 +0, 414, 414, 20, 153, 0x9b6c4ae5 +0, 434, 434, 20, 156, 0x75954e51 +0, 454, 454, 20, 155, 0x28ff4ff3 +0, 474, 474, 20, 153, 0xc4424969 +0, 494, 494, 20, 154, 0xfbf94cc8 +0, 514, 514, 20, 155, 0x52c549af +0, 534, 534, 20, 150, 0x6f1e4b7a +0, 554, 554, 20, 158, 0xabb45566 +0, 574, 574, 20, 157, 0xe61d4a99 +0, 594, 594, 20, 159, 0xf45d4fac +0, 614, 614, 20, 159, 0xcd0553a5 +0, 634, 634, 20, 156, 0xdb244e63 +0, 654, 654, 20, 154, 0x78654c52 +0, 674, 674, 20, 154, 0x9f804cc8 +0, 694, 694, 20, 150, 0x1fdf4c80 +0, 714, 714, 20, 155, 0x1adc4f89 +0, 734, 734, 20, 155, 0x4b53511c +0, 754, 754, 20, 151, 0x8ff2546d +0, 774, 774, 20, 158, 0xb7e34f1b +0, 794, 794, 20, 154, 0x4d98474b +0, 814, 814, 20, 154, 0x14924ea8 +0, 834, 834, 20, 153, 0x8d4752bf +0, 854, 854, 20, 149, 0x74785066 +0, 874, 874, 20, 151, 0x36c94a4c +0, 894, 894, 20, 155, 0x82904f3b +0, 914, 914, 20, 154, 0xd76b4a45 +0, 934, 934, 20, 159, 0x9fec548d +0, 954, 954, 20, 154, 0x9a084dcd +0, 974, 974, 20, 155, 0x90a54ac8 +0, 994, 994, 20, 324, 0x8e34a2f5 +0, 1014, 1014, 20, 268, 0x10f37203, S=1, 10 [PACKET] codec_type=audio stream_index=0 -pts=0 -pts_time=0.000000 -dts=0 -dts_time=0.000000 +pts=-7 +pts_time=-0.007000 +dts=-7 +dts_time=-0.007000 duration=20 duration_time=0.020000 size=320 @@ -74,10 +74,10 @@ flags=K_ [PACKET] codec_type=audio stream_index=0 -pts=21 -pts_time=0.021000 -dts=21 -dts_time=0.021000 +pts=14 +pts_time=0.014000 +dts=14 +dts_time=0.014000 duration=20 duration_time=0.020000 size=159 @@ -87,10 +87,10 @@ flags=K_ [PACKET] codec_type=audio stream_index=0 -pts=41 -pts_time=0.041000 -dts=41 -dts_time=0.041000 +pts=34 +pts_time=0.034000 +dts=34 +dts_time=0.034000 duration=20 duration_time=0.020000 size=148 |