footage: fix bug with loop mode that prevented stills from showing

This commit is contained in:
itsmattkc
2021-04-30 11:24:17 +10:00
parent 9d2ddbf727
commit c765c96807
2 changed files with 8 additions and 3 deletions
+7 -2
View File
@@ -350,7 +350,7 @@ void Footage::Hash(const QString& output, QCryptographicHash &hash, const ration
// Footage timestamp
if (params.video_type() != VideoParams::kVideoTypeStill) {
rational adjusted_time = AdjustTimeByLoopMode(time, loop_mode(), GetLength());
rational adjusted_time = AdjustTimeByLoopMode(time, loop_mode(), GetLength(), params.video_type());
if (!adjusted_time.isNaN()) {
int64_t video_ts = Timecode::time_to_timestamp(adjusted_time, params.time_base());
@@ -446,8 +446,13 @@ bool TimeIsOutOfBounds(const rational& time, const rational& length)
return time < 0 || time >= length;
}
rational Footage::AdjustTimeByLoopMode(rational time, Footage::LoopMode loop_mode, const rational &length)
rational Footage::AdjustTimeByLoopMode(rational time, Footage::LoopMode loop_mode, const rational &length, VideoParams::Type type)
{
if (type == VideoParams::kVideoTypeStill) {
// No looping for still images
return 0;
}
if (TimeIsOutOfBounds(time, length)) {
switch (loop_mode) {
case kLoopModeOff:
+1 -1
View File
@@ -191,7 +191,7 @@ public:
virtual NodeOutput GetConnectedSampleOutput() override;
static rational AdjustTimeByLoopMode(rational time, LoopMode loop_mode, const rational& length);
static rational AdjustTimeByLoopMode(rational time, LoopMode loop_mode, const rational& length, VideoParams::Type type);
static const QString kFilenameInput;
static const QString kLoopModeInput;