[FFmpeg-cvslog] movenc: Add a unit test for frag_discont with edit lists
Martin Storsjö
git at videolan.org
Tue Nov 17 16:01:27 CET 2015
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sat Nov 7 23:55:32 2015 +0200| [3eeb7edfc2a1157b7b0e0ce21ac2cd44d55d405b] | committer: Martin Storsjö
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 at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3eeb7edfc2a1157b7b0e0ce21ac2cd44d55d405b
---
libavformat/movenc-test.c | 34 ++++++++++++++++++++++++++++++++++
tests/ref/fate/movenc | 4 ++++
2 files changed, 38 insertions(+)
diff --git a/libavformat/movenc-test.c b/libavformat/movenc-test.c
index 20043b2..a549854 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 929f146..fec7db5 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
More information about the ffmpeg-cvslog
mailing list