X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdocclipbase.cpp;h=fc74fbf14a29dd36343dd1bb0fd80d2b275d6d09;hb=7faa196f9b4a7c03dd2442439500efed29e6c53b;hp=f75b0041fb373369068dd9e912ecefeb33293b2f;hpb=9e7a2da29ffa813f76d1dd9df8d5ae901d22a4f8;p=kdenlive diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index f75b0041..fc74fbf1 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -702,6 +702,36 @@ void DocClipBase::slotRefreshProducer() filter = clipService.filter(ct); } } + if (getProperty("crop") == "1") { + // we want a center crop filter effect + Mlt::Service clipService(m_baseTrackProducers.at(0)->get_service()); + int ct = 0; + Mlt::Filter *filter = clipService.filter(ct); + while (filter) { + if (strcmp(filter->get("mlt_service"), "crop") == 0) { + break; + } + ct++; + filter = clipService.filter(ct); + } + + if (!filter || strcmp(filter->get("mlt_service"), "crop")) { + // filter does not exist, create it... + Mlt::Filter *filter = new Mlt::Filter(*(m_baseTrackProducers.at(0)->profile()), "crop"); + filter->set("center", 1); + clipService.attach(*filter); + } + } else { + Mlt::Service clipService(m_baseTrackProducers.at(0)->get_service()); + int ct = 0; + Mlt::Filter *filter = clipService.filter(0); + while (filter) { + if (strcmp(filter->get("mlt_service"), "crop") == 0) { + clipService.detach(*filter); + } else ct++; + filter = clipService.filter(ct); + } + } } }