summaryrefslogtreecommitdiff
path: root/test/test.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-16 11:43:29 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-16 11:43:29 +0100
commit147cca5876dfbdf56e21289c3a36bec4b4850191 (patch)
tree09a59d9e91c7e5ec68b8fb55d1a7b1fcc23c7519 /test/test.cc
parent50dd871c5a924660499b3fd599f1c68af5e3dbc1 (diff)
parentbe5dfa3ed0459392cc65d21f563f136b97a295ba (diff)
Merge master.
Diffstat (limited to 'test/test.cc')
-rw-r--r--test/test.cc53
1 files changed, 52 insertions, 1 deletions
diff --git a/test/test.cc b/test/test.cc
index 39a921d36..a2c0de250 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -41,6 +41,7 @@
#include "ffmpeg_decoder.h"
#include "sndfile_decoder.h"
#include "dcp_content_type.h"
+#include "trimmer.h"
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE dcpomatic_test
#include <boost/test/unit_test.hpp>
@@ -124,6 +125,55 @@ BOOST_AUTO_TEST_CASE (make_black_test)
}
}
+shared_ptr<AudioBuffers> trimmer_test_last;
+
+void
+trimmer_test_helper (shared_ptr<AudioBuffers> audio)
+{
+ trimmer_test_last = audio;
+}
+
+/** Test the audio handling of the Trimmer */
+BOOST_AUTO_TEST_CASE (trimmer_test)
+{
+ Trimmer trimmer (shared_ptr<Log> (), 25, 75, 200, 48000, 25, 25);
+
+ trimmer.Audio.connect (bind (&trimmer_test_helper, _1));
+
+ /* 21 video frames-worth of audio frames; should be completely stripped */
+ trimmer_test_last.reset ();
+ shared_ptr<AudioBuffers> audio (new AudioBuffers (6, 21 * 1920));
+ trimmer.process_audio (audio);
+ BOOST_CHECK (trimmer_test_last == 0);
+
+ /* 42 more video frames-worth, 4 should be stripped from the start */
+ audio.reset (new AudioBuffers (6, 42 * 1920));
+ trimmer.process_audio (audio);
+ BOOST_CHECK (trimmer_test_last);
+ BOOST_CHECK_EQUAL (trimmer_test_last->frames(), 38 * 1920);
+
+ /* 42 more video frames-worth, should be kept as-is */
+ trimmer_test_last.reset ();
+ audio.reset (new AudioBuffers (6, 42 * 1920));
+ trimmer.process_audio (audio);
+ BOOST_CHECK (trimmer_test_last);
+ BOOST_CHECK_EQUAL (trimmer_test_last->frames(), 42 * 1920);
+
+ /* 25 more video frames-worth, 5 should be trimmed from the end */
+ trimmer_test_last.reset ();
+ audio.reset (new AudioBuffers (6, 25 * 1920));
+ trimmer.process_audio (audio);
+ BOOST_CHECK (trimmer_test_last);
+ BOOST_CHECK_EQUAL (trimmer_test_last->frames(), 20 * 1920);
+
+ /* Now some more; all should be trimmed */
+ trimmer_test_last.reset ();
+ audio.reset (new AudioBuffers (6, 100 * 1920));
+ trimmer.process_audio (audio);
+ BOOST_CHECK (trimmer_test_last == 0);
+}
+
+
BOOST_AUTO_TEST_CASE (film_metadata_test)
{
setup_test_config ();
@@ -435,7 +485,7 @@ BOOST_AUTO_TEST_CASE (have_dcp_test)
BOOST_CHECK (f.have_dcp());
p /= f.dcp_name();
- p /= "video.mxf";
+ p /= f.dcp_video_mxf_filename();
boost::filesystem::remove (p);
BOOST_CHECK (!f.have_dcp ());
}
@@ -794,3 +844,4 @@ BOOST_AUTO_TEST_CASE (aligned_image_test)
delete t;
delete u;
}
+