本文整理汇总了C++中mlt::Filter::get方法的典型用法代码示例。如果您正苦于以下问题:C++ Filter::get方法的具体用法?C++ Filter::get怎么用?C++ Filter::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mlt::Filter
的用法示例。
在下文中一共展示了Filter::get方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: data
QVariant AttachedFiltersModel::data(const QModelIndex &index, int role) const
{
if ( !m_producer || !m_producer->is_valid()
|| index.row() >= m_producer->filter_count())
return QVariant();
switch (role ) {
case Qt::DisplayRole: {
QVariant result;
Mlt::Filter* filter = filterForRow(index.row());
if (filter && filter->is_valid()) {
// Relabel by QML UI
QmlMetadata* meta = MAIN.filtersDock()->qmlMetadataForService(filter);
if (meta)
result = meta->name();
// Fallback is raw mlt_service name
else if (filter->get("mlt_service"))
result = QString::fromUtf8(filter->get("mlt_service"));
}
// Relabel for widgets UIs
if (result == "movit.blur" || result == "boxblur")
result = tr("Blur");
else if (result == "movit.lift_gamma_gain" || result == "frei0r.coloradj_RGB")
result = tr("Color Grading");
else if (result == "crop")
result = tr("Crop");
else if (result == "movit.glow" || result == "frei0r.glow")
result = tr("Glow");
else if (result == "movit.mirror" || result == "mirror")
result = tr("Mirror");
else if (result == "webvfx")
result = tr("Overlay HTML");
else if (result == "movit.sharpen" || result == "frei0r.sharpness")
result = tr("Sharpen");
else if (result == "movit.white_balance" || result == "frei0r.colgate")
result = tr("White Balance");
else if (result == "sox" && filter->get("use_peak"))
result = tr("Normalize");
delete filter;
return result;
}
case Qt::CheckStateRole: {
Mlt::Filter* filter = filterForRow(index.row());
QVariant result = Qt::Unchecked;
if (filter && filter->is_valid() && !filter->get_int("disable"))
result = Qt::Checked;
delete filter;
return result;
}
break;
default:
break;
}
return QVariant();
}
示例2: data
QVariant AttachedFiltersModel::data(const QModelIndex &index, int role) const
{
if ( !m_producer || !m_producer->is_valid()
|| index.row() >= m_producer->filter_count())
return QVariant();
switch (role ) {
case Qt::DisplayRole: {
QVariant result;
const QmlMetadata* meta = m_metaList[index.row()];
if (meta) {
result = meta->name();
} else {
// Fallback is raw mlt_service name
Mlt::Filter* filter = getFilter(index.row());
if (filter && filter->is_valid() && filter->get("mlt_service")) {
result = QString::fromUtf8(filter->get("mlt_service"));
}
delete filter;
}
return result;
}
case Qt::CheckStateRole: {
Mlt::Filter* filter = getFilter(index.row());
QVariant result = Qt::Unchecked;
if (filter && filter->is_valid() && !filter->get_int("disable"))
result = Qt::Checked;
delete filter;
return result;
}
break;
case TypeDisplayRole: {
QVariant result;
const QmlMetadata* meta = m_metaList[index.row()];
if (meta && meta->isAudio()) {
result = tr("Audio");
} else if (meta && meta->needsGPU()) {
result = tr("GPU");
} else {
result = tr("Video");
}
return result;
}
break;
default:
break;
}
return QVariant();
}
示例3: duplicateFilters
void BinController::duplicateFilters(Mlt::Producer original, Mlt::Producer clone)
{
Mlt::Service clipService(original.get_service());
Mlt::Service dupService(clone.get_service());
//delete original;
//delete clone;
int ct = 0;
Mlt::Filter *filter = clipService.filter(ct);
while (filter) {
// Only duplicate Kdenlive filters, and skip the fade in effects
//fprintf(stderr, "CHKNG FILTER: %s\n", filter->get("kdenlive_id"));
if (filter->is_valid()/* && strcmp(filter->get("kdenlive_id"), "") && strcmp(filter->get("kdenlive_id"), "fadein") && strcmp(filter->get("kdenlive_id"), "fade_from_black")*/) {
// looks like there is no easy way to duplicate a filter,
// so we will create a new one and duplicate its properties
Mlt::Filter *dup = new Mlt::Filter(*original.profile(), filter->get("mlt_service"));
if (dup && dup->is_valid()) {
Mlt::Properties entries(filter->get_properties());
for (int i = 0; i < entries.count(); ++i) {
dup->set(entries.get_name(i), entries.get(i));
}
dupService.attach(*dup);
}
}
ct++;
filter = clipService.filter(ct);
}
}
示例4: data
QVariant AttachedFiltersModel::data(const QModelIndex &index, int role) const
{
if ( !m_producer || !m_producer->is_valid()
|| index.row() >= m_producer->filter_count())
return QVariant();
switch (role ) {
case Qt::DisplayRole: {
QVariant result;
Mlt::Filter* filter = filterForRow(index.row());
if (filter && filter->is_valid()) {
// Relabel by QML UI
QmlMetadata* meta = MAIN.filtersDock()->qmlMetadataForService(filter);
if (meta)
result = meta->name();
// Fallback is raw mlt_service name
else if (filter->get("mlt_service"))
result = QString::fromUtf8(filter->get("mlt_service"));
}
// Relabel for widgets UIs
if (result == "movit.mirror" || result == "mirror")
result = tr("Mirror");
delete filter;
return result;
}
case Qt::CheckStateRole: {
Mlt::Filter* filter = filterForRow(index.row());
QVariant result = Qt::Unchecked;
if (filter && filter->is_valid() && !filter->get_int("disable"))
result = Qt::Checked;
delete filter;
return result;
}
break;
default:
break;
}
return QVariant();
}
示例5: QWidget
WebvfxFilter::WebvfxFilter(Mlt::Filter filter, QWidget *parent) :
QWidget(parent),
ui(new Ui::WebvfxFilter),
m_filter(filter)
{
ui->setupUi(this);
QString resource = filter.get("resource");
if (resource.startsWith("plain:"))
resource.remove(0, 6);
ui->fileLabel->setText(QFileInfo(resource).fileName());
ui->fileLabel->setToolTip(resource);
if (resource.isEmpty()) {
ui->editButton->setDisabled(true);
ui->reloadButton->setDisabled(true);
} else {
ui->newButton->setDisabled(true);
ui->openButton->setDisabled(true);
}
m_filter.set_in_and_out(0, MLT.producer()->get_playtime() - 1);
}
示例6: removeEffect
bool EffectManager::removeEffect(int effectIndex, bool updateIndex)
{
m_producer.lock();
int ct = 0;
bool success = false;
Mlt::Filter *filter = m_producer.filter(ct);
QList <Mlt::Filter *> filters;
while (filter) {
filters << filter;
if ((effectIndex == -1 && strcmp(filter->get("kdenlive_id"), "")) || filter->get_int("kdenlive_ix") == effectIndex) {
if (m_producer.detach(*filter) == 0) {
success = true;
}
} else if (updateIndex) {
// Adjust the other effects index
if (filter->get_int("kdenlive_ix") > effectIndex) filter->set("kdenlive_ix", filter->get_int("kdenlive_ix") - 1);
ct++;
} else ct++;
filter = m_producer.filter(ct);
}
m_producer.unlock();
qDeleteAll(filters);
return success;
}
示例7: editEffect
bool EffectManager::editEffect(EffectsParameterList params, int duration, bool replaceEffect)
{
int index = params.paramValue(QStringLiteral("kdenlive_ix")).toInt();
QString tag = params.paramValue(QStringLiteral("tag"));
if (!params.paramValue(QStringLiteral("keyframes")).isEmpty() || replaceEffect || tag.startsWith(QLatin1String("ladspa")) || tag == QLatin1String("sox") || tag == QLatin1String("autotrack_rectangle")) {
// This is a keyframe effect, to edit it, we remove it and re-add it.
if (removeEffect(index, false)) {
return addEffect(params, duration);
}
}
// find filter
int ct = 0;
Mlt::Filter *filter = m_producer.filter(ct);
while (filter) {
if (filter->get_int("kdenlive_ix") == index) {
break;
}
delete filter;
ct++;
filter = m_producer.filter(ct);
}
if (!filter) {
qDebug() << "WARINIG, FILTER FOR EDITING NOT FOUND, ADDING IT! " << index << ", " << tag;
// filter was not found, it was probably a disabled filter, so add it to the correct place...
bool success = addEffect(params, duration);
return success;
}
ct = 0;
QString ser = filter->get("mlt_service");
QList <Mlt::Filter *> filtersList;
m_producer.lock();
if (ser != tag) {
// Effect service changes, delete effect and re-add it
m_producer.detach(*filter);
delete filter;
// Delete all effects after deleted one
filter = m_producer.filter(ct);
while (filter) {
if (filter->get_int("kdenlive_ix") > index) {
filtersList.append(filter);
m_producer.detach(*filter);
}
else ct++;
delete filter;
filter = m_producer.filter(ct);
}
// re-add filter
doAddFilter(params, duration);
m_producer.unlock();
return true;
}
if (params.hasParam(QStringLiteral("kdenlive:sync_in_out"))) {
if (params.paramValue(QStringLiteral("kdenlive:sync_in_out")) == QLatin1String("1")) {
// This effect must sync in / out with parent clip
//params.removeParam(QStringLiteral("sync_in_out"));
Mlt::Producer prod(m_producer);
filter->set_in_and_out(prod.get_in(), prod.get_out());
} else {
// Reset in/out properties
filter->set("in", (char*)NULL);
filter->set("out", (char*)NULL);
}
}
for (int j = 0; j < params.count(); ++j) {
filter->set(params.at(j).name().toUtf8().constData(), params.at(j).value().toUtf8().constData());
}
for (int j = 0; j < filtersList.count(); ++j) {
m_producer.attach(*(filtersList.at(j)));
}
qDeleteAll(filtersList);
m_producer.unlock();
delete filter;
return true;
}