fixed transition regression
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "clip.h"
|
||||
|
||||
#include "config/config.h"
|
||||
#include "node/block/transition/transition.h"
|
||||
#include "node/output/track/track.h"
|
||||
#include "node/output/viewer/viewer.h"
|
||||
#include "widget/slider/floatslider.h"
|
||||
@@ -467,8 +468,19 @@ TimeRange ClipBlock::InputTimeAdjustment(const QString& input, int element, cons
|
||||
rational out = input_time.out();
|
||||
|
||||
if (clamp) {
|
||||
in = std::max(in, rational(0));
|
||||
out = std::min(out, length());
|
||||
rational minimum = 0;
|
||||
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);
|
||||
|
||||
@@ -292,7 +292,12 @@ TimeRange TransitionBlock::InputTimeAdjustment(const QString &input, int element
|
||||
if (input == kInBlockInput || input == kOutBlockInput) {
|
||||
Block* block = dynamic_cast<Block*>(GetConnectedOutput(input));
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user