//TODO: uncomment following line when everything is clean
//if (m_mltProfile) delete m_mltProfile;
m_mltProfile = new Mlt::Profile(tmp);
+ m_mltProfile->get_profile()->is_explicit = 1;
delete[] tmp;
QString videoDriver = KdenliveSettings::videodrivername();
int progressive = xml.attribute("force_progressive").toInt(&ok);
if (ok) producer->set("force_progressive", progressive);
}
+ if (xml.hasAttribute("force_tff")) {
+ bool ok;
+ int fieldOrder = xml.attribute("force_tff").toInt(&ok);
+ if (ok) producer->set("force_tff", fieldOrder);
+ }
if (xml.hasAttribute("threads")) {
int threads = xml.attribute("threads").toInt();
if (threads != 1) producer->set("threads", threads);
filePropertyMap["pix_fmt"] = producer->get(query.toUtf8().constData());
filePropertyMap["colorspace"] = producer->get("meta.media.colorspace");
- if (KdenliveSettings::dropbframes()) {
- kDebug() << "// LOOKING FOR H264 on: " << default_video;
- snprintf(property, sizeof(property), "meta.media.%d.codec.name", default_video);
- kDebug() << "PROP: " << property << " = " << producer->get(property);
- if (producer->get(property) && strcmp(producer->get(property), "h264") == 0) {
- kDebug() << "// GOT H264 CLIP, SETTING FAST PROPS";
- producer->set("skip_loop_filter", "all");
- producer->set("skip_frame", "bidir");
- }
- }
-
} else kDebug() << " / / / / /WARNING, VIDEO CONTEXT IS NULL!!!!!!!!!!!!!!";
if (producer->get_int("audio_index") > -1) {
// Get the audio_index
m_mltProducer = new Mlt::Producer(producer->get_producer());
} else m_mltProducer = m_blackClip->cut(0, 50);
- /*if (KdenliveSettings::dropbframes()) {
- m_mltProducer->set("skip_loop_filter", "all");
- m_mltProducer->set("skip_frame", "bidir");
- }*/
if (!m_mltProducer || !m_mltProducer->is_valid()) {
kDebug() << " WARNING - - - - -INVALID PLAYLIST: ";
return -1;
m_isBlocked = true;
int error = 0;
- kDebug() << "////// RENDER, SET SCENE LIST: " << playlist;
+ //kDebug() << "////// RENDER, SET SCENE LIST: " << playlist;
if (m_mltConsumer) {
if (!m_mltConsumer->is_stopped()) {
}
blockSignals(true);
+
+ // TODO: Better way to do this
+ if (KdenliveSettings::projectloading_avformatnovalidate())
+ playlist.replace(">avformat</property>", ">avformat-novalidate</property>");
+ else
+ playlist.replace(">avformat-novalidate</property>", ">avformat</property>");
+
m_mltProducer = new Mlt::Producer(*m_mltProfile, "xml-string", playlist.toUtf8().constData());
if (!m_mltProducer || !m_mltProducer->is_valid()) {
QString id = clipparent.get("id");
if (speed <= 0 && speed > -1) speed = 1.0;
//kDebug() << "CLIP SERVICE: " << serv;
- if (serv == "avformat" && (speed != 1.0 || strobe > 1)) {
+ if ((serv == "avformat" || serv == "avformat-novalidate") && (speed != 1.0 || strobe > 1)) {
mlt_service_lock(service.get_service());
QString url = QString::fromUtf8(clipparent.get("resource"));
url.append('?' + QString::number(speed));
if (threads != 0) slowprod->set("threads", threads);
if (original->parent().get("force_progressive"))
slowprod->set("force_progressive", original->parent().get_int("force_progressive"));
+ if (original->parent().get("force_tff"))
+ slowprod->set("force_tff", original->parent().get_int("force_tff"));
int ix = original->parent().get_int("video_index");
if (ix != 0) slowprod->set("video_index", ix);
int colorspace = original->parent().get_int("force_colorspace");
if (fps != 0.0) slowprod->set("force_fps", fps);
if (original->parent().get("force_progressive"))
slowprod->set("force_progressive", original->parent().get_int("force_progressive"));
+ if (original->parent().get("force_tff"))
+ slowprod->set("force_tff", original->parent().get_int("force_tff"));
int threads = original->parent().get_int("threads");
if (threads != 0) slowprod->set("threads", threads);
int ix = original->parent().get_int("video_index");