move clamping code from clip to track

Fixes severe regression related to audio transitions
This commit is contained in:
itsmattkc
2022-11-18 10:20:03 -08:00
parent 7e604e7433
commit 9a0e16f504
3 changed files with 11 additions and 30 deletions
+1 -23
View File
@@ -464,29 +464,7 @@ TimeRange ClipBlock::InputTimeAdjustment(const QString& input, int element, cons
Q_UNUSED(element)
if (input == kBufferIn) {
rational in = input_time.in();
rational out = input_time.out();
if (clamp) {
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);
out = SequenceToMediaTime(out);
return TimeRange(in, out);
return TimeRange(SequenceToMediaTime(input_time.in()), SequenceToMediaTime(input_time.out()));
}
return super::InputTimeAdjustment(input, element, input_time, clamp);
+2 -6
View File
@@ -292,12 +292,8 @@ TimeRange TransitionBlock::InputTimeAdjustment(const QString &input, int element
if (input == kInBlockInput || input == kOutBlockInput) {
Block* block = dynamic_cast<Block*>(GetConnectedOutput(input));
if (block) {
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;
// Retransform time as if it came from the track
return input_time + in() - block->in();
}
}
+8 -1
View File
@@ -152,7 +152,14 @@ TimeRange Track::InputTimeAdjustment(const QString& input, int element, const Ti
int cache_index = GetCacheIndexFromArrayIndex(element);
if (cache_index > -1) {
return TransformRangeForBlock(blocks_.at(cache_index), input_time);
TimeRange r = input_time;
Block *b = blocks_.at(cache_index);
if (clamp) {
r.set_range(std::max(r.in(), b->in()), std::min(r.out(), b->out()));
}
return TransformRangeForBlock(b, r);
}
}