avformat/matroskaenc: Use custom min timestamp

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2022-09-01 14:19:07 +02:00
parent 1a8309e954
commit bca4fef46a
5 changed files with 125 additions and 120 deletions

View File

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

View File

@ -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;

View File

@ -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"

View File

@ -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

View File

@ -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