Fixed FrameMapper::info::video_length after calling FrameMapper::ChangeMapping(). Added some unit tests to verify.

This commit is contained in:
Jonathan Thomas
2022-08-03 16:14:00 -05:00
parent 2f145234da
commit 02c256cda5
2 changed files with 3 additions and 0 deletions

View File

@@ -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;

View File

@@ -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();