bool effModified = false;
// go through all params which have keyframes
- foreach (const QString &kfr, keyframeParams) {
+ foreach(const QString &kfr, keyframeParams) {
const QStringList keyframes = kfr.split(';', QString::SkipEmptyParts);
QStringList newKeyFrames;
bool cutKeyFrame = false;
// special case: the affine effect need in / out points
if (effectId == "pan_zoom") {
- parameters.addParam("in", QString::number(cropStart().frames(m_fps)));
- parameters.addParam("out", QString::number((cropStart() + cropDuration()).frames(m_fps)));
+ int start = cropStart().frames(m_fps);
+ int end = (cropStart() + cropDuration()).frames(m_fps);
+ if (start < 0) {
+ end -= start;
+ start = 0;
+ }
+ parameters.addParam("in", QString::number(start));
+ parameters.addParam("out", QString::number(end));
}
QDomNodeList params = effect.elementsByTagName("parameter");
QDomElement oldeffect = item->effectAt(effectPos);
int start = item->cropStart().frames(m_document->fps());
int max = start + item->cropDuration().frames(m_document->fps());
+ if (start < 0) {
+ max -= start;
+ start = 0;
+ }
oldeffect.setAttribute("in", start);
oldeffect.setAttribute("out", max);
if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - item->track(), item->startPos(), item->getEffectArgs(oldeffect)))