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-19 22:56:49 +0000
commit715d87a4cf9e4697a2f67881776c19c4ce8af581 (patch)
tree0fe261b4b1f1a2daf94a6836959cd969895fec6a
parent1229de2042c785a9e851e5fc53922a75bfbf195d (diff)
Remove our forcing of analyzeduration and probesize as they seem tov2.14.20
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 f26d1d2cf..2deaf6953 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -117,11 +117,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);
if (_ffmpeg_content->decryption_key()) {
av_dict_set (&options, "decryption_key", _ffmpeg_content->decryption_key()->c_str(), 0);
}
diff --git a/test/ffmpeg_examiner_test.cc b/test/ffmpeg_examiner_test.cc
index d4614e226..14953fdbb 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
*/
@@ -32,6 +31,9 @@
using boost::shared_ptr;
+/** 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");
@@ -42,3 +44,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);
+}