本文整理汇总了C++中mlt::Producer::cut方法的典型用法代码示例。如果您正苦于以下问题:C++ Producer::cut方法的具体用法?C++ Producer::cut怎么用?C++ Producer::cut使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mlt::Producer
的用法示例。
在下文中一共展示了Producer::cut方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: startJob
void MeltJob::startJob()
{
if (m_url.isEmpty()) {
m_errorMessage.append(i18n("No producer for this clip."));
setStatus(JOBCRASHED);
return;
}
int in = m_params.takeFirst().toInt();
if (in > 0 && !m_extra.contains("offset")) m_extra.insert("offset", QString::number(in));
int out = m_params.takeFirst().toInt();
QString producerParams =m_params.takeFirst();
QString filter = m_params.takeFirst();
QString filterParams = m_params.takeFirst();
QString consumer = m_params.takeFirst();
if (consumer.contains(':')) m_dest = consumer.section(':', 1);
QString consumerParams = m_params.takeFirst();
// optional params
int startPos = -1;
if (!m_params.isEmpty()) startPos = m_params.takeFirst().toInt();
int track = -1;
if (!m_params.isEmpty()) track = m_params.takeFirst().toInt();
if (!m_extra.contains("finalfilter")) m_extra.insert("finalfilter", filter);
if (out != -1 && out <= in) {
m_errorMessage.append(i18n("Clip zone undefined (%1 - %2).", in, out));
setStatus(JOBCRASHED);
return;
}
if (m_extra.contains("producer_profile")) {
m_profile = new Mlt::Profile;
m_profile->set_explicit(false);
}
else {
m_profile = new Mlt::Profile(KdenliveSettings::current_profile().toUtf8().constData());
}
if (m_extra.contains("resize_profile")) {
m_profile->set_height(m_extra.value("resize_profile").toInt());
m_profile->set_width(m_profile->height() * m_profile->sar());
}
if (out == -1) {
m_producer = new Mlt::Producer(*m_profile, m_url.toUtf8().constData());
if (m_producer) m_length = m_producer->get_length();
}
else {
Mlt::Producer *tmp = new Mlt::Producer(*m_profile, m_url.toUtf8().constData());
if (tmp) m_producer = tmp->cut(in, out);
delete tmp;
if (m_producer) m_length = m_producer->get_playtime();
}
if (!m_producer || !m_producer->is_valid()) {
// Clip was removed or something went wrong, Notify user?
//m_errorMessage.append(i18n("Invalid clip"));
setStatus(JOBCRASHED);
return;
}
if (m_extra.contains("producer_profile")) {
m_profile->from_producer(*m_producer);
m_profile->set_explicit(true);
}
QStringList list = producerParams.split(' ', QString::SkipEmptyParts);
foreach(const QString &data, list) {
if (data.contains('=')) {
m_producer->set(data.section('=', 0, 0).toUtf8().constData(), data.section('=', 1, 1).toUtf8().constData());
}
}
if (consumer.contains(":")) {
m_consumer = new Mlt::Consumer(*m_profile, consumer.section(':', 0, 0).toUtf8().constData(), consumer.section(':', 1).toUtf8().constData());
}
else {
m_consumer = new Mlt::Consumer(*m_profile, consumer.toUtf8().constData());
}
if (!m_consumer || !m_consumer->is_valid()) {
m_errorMessage.append(i18n("Cannot create consumer %1.", consumer));
setStatus(JOBCRASHED);
return;
}
//m_consumer->set("terminate_on_pause", 1 );
//m_consumer->set("eof", "pause" );
m_consumer->set("real_time", -KdenliveSettings::mltthreads() );
list = consumerParams.split(' ', QString::SkipEmptyParts);
foreach(const QString &data, list) {
if (data.contains('=')) {
kDebug()<<"// filter con: "<<data;
m_consumer->set(data.section('=', 0, 0).toUtf8().constData(), data.section('=', 1, 1).toUtf8().constData());
}
}
m_filter = new Mlt::Filter(*m_profile, filter.toUtf8().data());
if (!m_filter || !m_filter->is_valid()) {
m_errorMessage = i18n("Filter %1 crashed", filter);
setStatus(JOBCRASHED);
return;
}
list = filterParams.split(' ', QString::SkipEmptyParts);
foreach(const QString &data, list) {
if (data.contains('=')) {
//.........这里部分代码省略.........