From 02c256cda56c4b5aa237a28bab54aa61550eabc2 Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Wed, 3 Aug 2022 16:14:00 -0500 Subject: [PATCH] Fixed FrameMapper::info::video_length after calling FrameMapper::ChangeMapping(). Added some unit tests to verify. --- src/FrameMapper.cpp | 1 + tests/FrameMapper.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/FrameMapper.cpp b/src/FrameMapper.cpp index a15e29dc..ac87e5a3 100644 --- a/src/FrameMapper.cpp +++ b/src/FrameMapper.cpp @@ -773,6 +773,7 @@ void FrameMapper::ChangeMapping(Fraction target_fps, PulldownType target_pulldow info.fps.den = target_fps.den; info.video_timebase.num = target_fps.den; info.video_timebase.den = target_fps.num; + info.video_length = round(info.duration * info.fps.ToDouble()); pulldown = target_pulldown; info.sample_rate = target_sample_rate; info.channels = target_channels; diff --git a/tests/FrameMapper.cpp b/tests/FrameMapper.cpp index 3571d384..adb722a8 100644 --- a/tests/FrameMapper.cpp +++ b/tests/FrameMapper.cpp @@ -188,6 +188,7 @@ TEST_CASE( "resample_audio_48000_to_41000", "[libopenshot][framemapper]" ) CHECK(map.GetFrame(1)->GetAudioSamplesCount() == 1470); CHECK(map.GetFrame(2)->GetAudioSamplesCount() == 1470); CHECK(map.GetFrame(50)->GetAudioSamplesCount() == 1470); + CHECK(map.info.video_length == 1558); // Change mapping data map.ChangeMapping(Fraction(25,1), PULLDOWN_NONE, 22050, 1, LAYOUT_MONO); @@ -197,6 +198,7 @@ TEST_CASE( "resample_audio_48000_to_41000", "[libopenshot][framemapper]" ) CHECK(map.GetFrame(1)->GetAudioSamplesCount() == Approx(882).margin(10.0)); CHECK(map.GetFrame(2)->GetAudioSamplesCount() == Approx(882).margin(10.0)); CHECK(map.GetFrame(50)->GetAudioSamplesCount() == Approx(882).margin(10.0)); + CHECK(map.info.video_length == 1299); // Close mapper map.Close();