diff options
author | Martin Storsjö <martin@martin.st> | 2015-11-07 23:55:32 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2015-11-11 22:52:53 +0200 |
commit | 3eeb7edfc2a1157b7b0e0ce21ac2cd44d55d405b (patch) | |
tree | e7c63045fee9da3c18cddf50b452ce9ac61cbb97 | |
parent | 09e431b9e3674804172e7b0a0f865b65ec09739a (diff) | |
download | ffmpeg-3eeb7edfc2a1157b7b0e0ce21ac2cd44d55d405b.tar.gz |
movenc: Add a unit test for frag_discont with edit lists
This tests the case where the muxer correctly guesses that a stream
starts at pts=0.
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavformat/movenc-test.c | 34 | ||||
-rw-r--r-- | tests/ref/fate/movenc | 4 |
2 files changed, 38 insertions, 0 deletions
diff --git a/libavformat/movenc-test.c b/libavformat/movenc-test.c index 20043b295f..a549854fc1 100644 --- a/libavformat/movenc-test.c +++ b/libavformat/movenc-test.c @@ -538,6 +538,40 @@ int main(int argc, char **argv) finish(); + // Test discontinously written fragments with b-frames (where the + // assumption of starting at pts=0 works) but not with audio preroll + // (which can't be guessed). + av_dict_set(&opts, "movflags", "frag_custom+delay_moov+dash", 0); + init(1, 0); + mux_gops(1); + init_out("delay-moov-elst-init"); + av_write_frame(ctx, NULL); // Output the moov + close_out(); + memcpy(header, hash, HASH_SIZE); + av_write_frame(ctx, NULL); // Output the first fragment + init_out("delay-moov-elst-second-frag"); + mux_gops(1); + av_write_frame(ctx, NULL); // Output the second fragment + close_out(); + memcpy(content, hash, HASH_SIZE); + finish(); + + av_dict_set(&opts, "movflags", "frag_custom+delay_moov+dash+frag_discont", 0); + av_dict_set(&opts, "fragment_index", "2", 0); + init(1, 0); + skip_gops(1); + mux_gops(1); // Write the second fragment + init_out("delay-moov-elst-init-discont"); + av_write_frame(ctx, NULL); // Output the moov + close_out(); + check(!memcmp(hash, header, HASH_SIZE), "discontinuously written header differs"); + init_out("delay-moov-elst-second-frag-discont"); + av_write_frame(ctx, NULL); // Output the second fragment + close_out(); + check(!memcmp(hash, content, HASH_SIZE), "discontinuously written fragment differs"); + finish(); + + // Test VFR content, with sidx atoms (which declare the pts duration // of a fragment, forcing overriding the start pts of the next one). // Here, the fragment duration in pts is significantly different from diff --git a/tests/ref/fate/movenc b/tests/ref/fate/movenc index 929f146e1e..fec7db5952 100644 --- a/tests/ref/fate/movenc +++ b/tests/ref/fate/movenc @@ -16,5 +16,9 @@ f12baf7c4269695817337192c7069328 996 delay-moov-content 76e1081bbab7541eadcaf4b19d37eff6 584 empty-moov-second-frag 76e1081bbab7541eadcaf4b19d37eff6 584 empty-moov-second-frag-discont 76e1081bbab7541eadcaf4b19d37eff6 584 delay-moov-second-frag-discont +93d5d944d10570857b726dd1c482bc03 1207 delay-moov-elst-init +41afdc44b0e376fae49a730afe0c53c2 704 delay-moov-elst-second-frag +93d5d944d10570857b726dd1c482bc03 1207 delay-moov-elst-init-discont +41afdc44b0e376fae49a730afe0c53c2 704 delay-moov-elst-second-frag-discont 4407220c69fb6d96fd3f4daea05140c3 3647 vfr 4407220c69fb6d96fd3f4daea05140c3 3647 vfr-noduration |