summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f56fce7)
http://kdenlive.org/mantis/view.php?id=2570
if (id == "fade_from_black" || id == "fadein") {
if (in != cropStart().frames(m_fps)) {
effects[i] = effect.cloneNode().toElement();
if (id == "fade_from_black" || id == "fadein") {
if (in != cropStart().frames(m_fps)) {
effects[i] = effect.cloneNode().toElement();
- int diff = in - cropStart().frames(m_fps);
- in -= diff;
- out -= diff;
+ int duration = out - in;
+ in = cropStart().frames(m_fps);
+ out = in + duration;
EffectsList::setParameter(effect, "in", QString::number(in));
EffectsList::setParameter(effect, "out", QString::number(out));
}
EffectsList::setParameter(effect, "in", QString::number(in));
EffectsList::setParameter(effect, "out", QString::number(out));
}
kDebug() << "// RESIZE CROP, DIFF: " << (end.cropStart - start.cropStart).frames(25);
ItemInfo clipinfo = end;
clipinfo.track = m_document->tracksCount() - end.track;
kDebug() << "// RESIZE CROP, DIFF: " << (end.cropStart - start.cropStart).frames(25);
ItemInfo clipinfo = end;
clipinfo.track = m_document->tracksCount() - end.track;
- bool success = m_document->renderer()->mltResizeClipCrop(clipinfo, end.cropStart - start.cropStart);
+ bool success = m_document->renderer()->mltResizeClipCrop(clipinfo, end.cropStart);
if (success) {
item->setCropStart(end.cropStart);
item->resetThumbs(true);
if (success) {
item->setCropStart(end.cropStart);
item->resetThumbs(true);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
adjustEffects(clip, oldInfo, command);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
adjustEffects(clip, oldInfo, command);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
- emit clipItemSelected(clip);
} else {
KdenliveSettings::setSnaptopoints(false);
item->resizeStart((int) oldInfo.startPos.frames(m_document->fps()));
} else {
KdenliveSettings::setSnaptopoints(false);
item->resizeStart((int) oldInfo.startPos.frames(m_document->fps()));
new ResizeClipCommand(this, oldInfo, info, false, true, command);
adjustEffects(clip, oldInfo, command);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
adjustEffects(clip, oldInfo, command);
new ResizeClipCommand(this, oldInfo, info, false, true, command);
- emit clipItemSelected(clip);
} else {
KdenliveSettings::setSnaptopoints(false);
item->resizeEnd((int) oldInfo.endPos.frames(m_document->fps()));
} else {
KdenliveSettings::setSnaptopoints(false);
item->resizeEnd((int) oldInfo.endPos.frames(m_document->fps()));
if (effects.count()) {
QMap<int, QDomElement>::const_iterator i = effects.constBegin();
while (i != effects.constEnd()) {
if (effects.count()) {
QMap<int, QDomElement>::const_iterator i = effects.constBegin();
while (i != effects.constEnd()) {
- new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), i.value(), item->effect(i.key()), i.key(), false, false, command);
+ new EditEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), i.value(), item->effect(i.key()), i.value().attribute("kdenlive_ix").toInt(), true, true, command);
if (at(i).name() == name) return true;
return false;
}
if (at(i).name() == name) return true;
return false;
}
+ void setParamValue(const QString &name, const QString &value) {
+ bool found = false;
+ for (int i = 0; i < size(); i++)
+ if (at(i).name() == name) {
+ // update value
+ replace(i, EffectParameter(name, value));
+ found = true;
+ }
+ if (!found) addParam(name, value);
+ }
+
QString paramValue(const QString &name, QString defaultValue = QString()) const {
for (int i = 0; i < size(); i++) {
if (at(i).name() == name) return at(i).value();
QString paramValue(const QString &name, QString defaultValue = QString()) const {
for (int i = 0; i < size(); i++) {
if (at(i).name() == name) return at(i).value();
}
for (int j = 0; j < params.count(); j++) {
}
for (int j = 0; j < params.count(); j++) {
- filter->set((params.at(j).name()).toUtf8().constData(), params.at(j).value().toUtf8().constData());
+ filter->set(params.at(j).name().toUtf8().constData(), params.at(j).value().toUtf8().constData());
}
for (int j = 0; j < filtersList.count(); j++) {
}
for (int j = 0; j < filtersList.count(); j++) {
mlt_service_unlock(serv);
}
mlt_service_unlock(serv);
}
-bool Render::mltResizeClipCrop(ItemInfo info, GenTime diff)
+bool Render::mltResizeClipCrop(ItemInfo info, GenTime newCropStart)
{
Mlt::Service service(m_mltProducer->parent().get_service());
{
Mlt::Service service(m_mltProducer->parent().get_service());
- int frameOffset = (int) diff.frames(m_fps);
+ int newCropFrame = (int) newCropStart.frames(m_fps);
Mlt::Tractor tractor(service);
Mlt::Producer trackProducer(tractor.track(info.track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
Mlt::Tractor tractor(service);
Mlt::Producer trackProducer(tractor.track(info.track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
int previousStart = clip->get_in();
int previousOut = clip->get_out();
delete clip;
int previousStart = clip->get_in();
int previousOut = clip->get_out();
delete clip;
- trackPlaylist.resize_clip(clipIndex, previousStart + frameOffset, previousOut + frameOffset);
+ if (previousStart == newCropFrame) {
+ kDebug() << "//////// No ReSIZING Required";
+ service.unlock();
+ return true;
+ }
+ int frameOffset = newCropFrame - previousStart;
+ trackPlaylist.resize_clip(clipIndex, newCropFrame, previousOut + frameOffset);
service.unlock();
m_mltConsumer->set("refresh", 1);
return true;
service.unlock();
m_mltConsumer->set("refresh", 1);
return true;
bool mltResizeClipEnd(ItemInfo info, GenTime clipDuration);
bool mltResizeClipStart(ItemInfo info, GenTime diff);
bool mltResizeClipEnd(ItemInfo info, GenTime clipDuration);
bool mltResizeClipStart(ItemInfo info, GenTime diff);
- bool mltResizeClipCrop(ItemInfo info, GenTime diff);
+ bool mltResizeClipCrop(ItemInfo info, GenTime newCropStart);
bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart, Mlt::Producer *prod, bool overwrite = false, bool insert = false);
bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart, Mlt::Producer *prod, bool overwrite = false, bool insert = false);
bool mltRemoveClip(int track, GenTime position);
bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart, Mlt::Producer *prod, bool overwrite = false, bool insert = false);
bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart, Mlt::Producer *prod, bool overwrite = false, bool insert = false);
bool mltRemoveClip(int track, GenTime position);