summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-12-19 22:56:49 +0000
committerCarl Hetherington <cth@carlh.net>2019-12-20 00:26:36 +0100
commit3e56ff52385513e78fbe3b03e9787a6606b762d9 (patch)
tree87bf141309fcac290aab797216cf4e5beeea128f
parente0b2ef3dbac6fc4900cad6fea4395c212578602b (diff)
Remove our forcing of analyzeduration and probesize as they seem to
cause weird problems when scanning some files. The unit test case added here is a case in point: before this patch one stream reported an incorrect channel count and sample rate. It's a bit worrying as these parameters have been in DoM for many years, but perhaps they have become unnecessary / harmful with changes to FFmpeg.
-rw-r--r--src/lib/ffmpeg.cc5
-rw-r--r--test/ffmpeg_examiner_test.cc22
2 files changed, 20 insertions, 7 deletions
diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc
index 0668f9f37..8dc525db9 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -120,11 +120,6 @@ FFmpeg::setup_general ()
_format_context->pb = _avio_context;
AVDictionary* options = 0;
- /* These durations are in microseconds, and represent how far into the content file
- we will look for streams.
- */
- av_dict_set (&options, "analyzeduration", raw_convert<string> (5 * 60 * 1000000).c_str(), 0);
- av_dict_set (&options, "probesize", raw_convert<string> (5 * 60 * 1000000).c_str(), 0);
#ifdef DCPOMATIC_VARIANT_SWAROOP
if (_ffmpeg_content->kdm()) {
DecryptedECinemaKDM kdm (_ffmpeg_content->kdm().get(), Config::instance()->decryption_chain()->key().get());
diff --git a/test/ffmpeg_examiner_test.cc b/test/ffmpeg_examiner_test.cc
index b6b2bbf06..5da7bbd3f 100644
--- a/test/ffmpeg_examiner_test.cc
+++ b/test/ffmpeg_examiner_test.cc
@@ -19,8 +19,7 @@
*/
/** @file test/ffmpeg_examiner_test.cc
- * @brief Check that the FFmpegExaminer can extract the first video and audio time
- * correctly from data/count300bd24.m2ts.
+ * @brief FFMpegExaminer tests
* @ingroup specific
*/
@@ -33,6 +32,9 @@
using boost::shared_ptr;
using namespace dcpomatic;
+/** Check that the FFmpegExaminer can extract the first video and audio time
+ * correctly from data/count300bd24.m2ts.
+ */
BOOST_AUTO_TEST_CASE (ffmpeg_examiner_test)
{
shared_ptr<Film> film = new_test_film ("ffmpeg_examiner_test");
@@ -43,3 +45,19 @@ BOOST_AUTO_TEST_CASE (ffmpeg_examiner_test)
BOOST_CHECK_EQUAL (examiner->audio_streams().size(), 1U);
BOOST_CHECK_EQUAL (examiner->audio_streams()[0]->first_audio.get().get(), ContentTime::from_seconds(600).get());
}
+
+/** Check that audio sampling rate and channel counts are correctly picked up from
+ * a problematic file. When we used to specify analyzeduration and probesize
+ * this file's details were picked up incorrectly.
+ */
+BOOST_AUTO_TEST_CASE (ffmpeg_examiner_probesize_test)
+{
+ shared_ptr<FFmpegContent> content (new FFmpegContent(private_data / "RockyTop10 Playlist Flat.m4v"));
+ shared_ptr<FFmpegExaminer> examiner (new FFmpegExaminer(content));
+
+ BOOST_CHECK_EQUAL (examiner->audio_streams().size(), 2U);
+ BOOST_CHECK_EQUAL (examiner->audio_streams()[0]->frame_rate(), 48000);
+ BOOST_CHECK_EQUAL (examiner->audio_streams()[0]->channels(), 2);
+ BOOST_CHECK_EQUAL (examiner->audio_streams()[1]->frame_rate(), 48000);
+ BOOST_CHECK_EQUAL (examiner->audio_streams()[1]->channels(), 6);
+}