fixed transition regression

This commit is contained in:
itsmattkc
2022-11-01 21:04:44 -07:00
parent 451de7030b
commit 073e9fdb0e
2 changed files with 20 additions and 3 deletions
+14 -2
View File
@@ -21,6 +21,7 @@
#include "clip.h" #include "clip.h"
#include "config/config.h" #include "config/config.h"
#include "node/block/transition/transition.h"
#include "node/output/track/track.h" #include "node/output/track/track.h"
#include "node/output/viewer/viewer.h" #include "node/output/viewer/viewer.h"
#include "widget/slider/floatslider.h" #include "widget/slider/floatslider.h"
@@ -467,8 +468,19 @@ TimeRange ClipBlock::InputTimeAdjustment(const QString& input, int element, cons
rational out = input_time.out(); rational out = input_time.out();
if (clamp) { if (clamp) {
in = std::max(in, rational(0)); rational minimum = 0;
out = std::min(out, length()); rational maximum = length();
if (in_transition_) {
minimum -= in_transition_->length();
}
if (out_transition_) {
maximum += out_transition_->length();
}
in = std::max(in, minimum);
out = std::min(out, maximum);
} }
in = SequenceToMediaTime(in); in = SequenceToMediaTime(in);
+6 -1
View File
@@ -292,7 +292,12 @@ TimeRange TransitionBlock::InputTimeAdjustment(const QString &input, int element
if (input == kInBlockInput || input == kOutBlockInput) { if (input == kInBlockInput || input == kOutBlockInput) {
Block* block = dynamic_cast<Block*>(GetConnectedOutput(input)); Block* block = dynamic_cast<Block*>(GetConnectedOutput(input));
if (block) { if (block) {
return input_time + in() - block->in(); TimeRange range = input_time;
if (clamp) {
range.set_range(std::max(rational(0), range.in()), std::min(this->length(), range.out()));
}
range = range + in() - block->in();
return range;
} }
} }