return pix;
}
*/
-const int Render::renderWidth() const {
+int Render::renderWidth() const {
return (int)(m_mltProfile->height() * m_mltProfile->dar());
}
-const int Render::renderHeight() const {
+int Render::renderHeight() const {
return m_mltProfile->height();
}
return KThumb::getFrame(m_mltProducer, frame_position, width, height);
}
-QPixmap Render::getImageThumbnail(KUrl url, int width, int height) {
+QPixmap Render::getImageThumbnail(KUrl url, int /*width*/, int /*height*/) {
QImage im;
QPixmap pixmap;
if (url.fileName().startsWith(".all.")) { // check for slideshow
return true;
}
-const double Render::dar() const {
+double Render::dar() const {
return m_mltProfile->dar();
}
}
void Render::getFileProperties(const QDomElement &xml, const QString &clipId, bool replaceProducer) {
- int height = 50;
- int width = (int)(height * m_mltProfile->dar());
- QMap < QString, QString > filePropertyMap;
- QMap < QString, QString > metadataPropertyMap;
-
KUrl url = KUrl(xml.attribute("resource", QString()));
Mlt::Producer *producer = NULL;
if (xml.attribute("type").toInt() == TEXT && !QFile::exists(url.path())) {
- emit replyGetFileProperties(clipId, producer, filePropertyMap, metadataPropertyMap, replaceProducer);
+ emit replyGetFileProperties(clipId, producer, QMap < QString, QString >(), QMap < QString, QString >(), replaceProducer);
return;
}
if (xml.attribute("type").toInt() == COLOR) {
producer = new Mlt::Producer(*m_mltProfile, "westley-xml", tmp);
delete[] tmp;
} else {
- QString urlpath = url.path();
- /*if (urlpath.contains(':')) {
- if (!urlpath.startsWith("file:")) urlpath.prepend("file:");
- char *tmp = decodedString(urlpath);
- producer = new Mlt::Producer(*m_mltProfile, "avformat", tmp);
- delete[] tmp;
- }
- else {*/
- char *tmp = decodedString(urlpath);
+ char *tmp = decodedString(url.path());
producer = new Mlt::Producer(*m_mltProfile, tmp);
delete[] tmp;
-
- if (xml.hasAttribute("force_aspect_ratio")) {
- double aspect = xml.attribute("force_aspect_ratio").toDouble();
- if (aspect > 0) producer->set("force_aspect_ratio", aspect);
- }
- if (xml.hasAttribute("threads")) {
- int threads = xml.attribute("threads").toInt();
- if (threads != 1) producer->set("threads", threads);
- }
- if (xml.hasAttribute("video_index")) {
- int vindex = xml.attribute("video_index").toInt();
- if (vindex != 0) producer->set("video_index", vindex);
- }
- if (xml.hasAttribute("audio_index")) {
- int aindex = xml.attribute("audio_index").toInt();
- if (aindex != 0) producer->set("audio_index", aindex);
- }
- //}
}
if (producer == NULL || producer->is_blank() || !producer->is_valid()) {
return;
}
+ if (xml.hasAttribute("force_aspect_ratio")) {
+ double aspect = xml.attribute("force_aspect_ratio").toDouble();
+ if (aspect > 0) producer->set("force_aspect_ratio", aspect);
+ }
+ if (xml.hasAttribute("threads")) {
+ int threads = xml.attribute("threads").toInt();
+ if (threads != 1) producer->set("threads", threads);
+ }
+ if (xml.hasAttribute("video_index")) {
+ int vindex = xml.attribute("video_index").toInt();
+ if (vindex != 0) producer->set("video_index", vindex);
+ }
+ if (xml.hasAttribute("audio_index")) {
+ int aindex = xml.attribute("audio_index").toInt();
+ if (aindex != 0) producer->set("audio_index", aindex);
+ }
+
if (xml.hasAttribute("out")) producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt());
char *tmp = decodedString(clipId);
producer->set("id", tmp);
delete[] tmp;
+
+ int height = 50;
+ int width = (int)(height * m_mltProfile->dar());
+ QMap < QString, QString > filePropertyMap;
+ QMap < QString, QString > metadataPropertyMap;
+
int frameNumber = xml.attribute("thumbnail", "0").toInt();
if (frameNumber != 0) producer->seek(frameNumber);
- mlt_properties properties = MLT_PRODUCER_PROPERTIES(producer->get_producer());
filePropertyMap["duration"] = QString::number(producer->get_playtime());
//kDebug() << "/////// PRODUCER: " << url.path() << " IS: " << producer.get_playtime();
return playlist;
}
-void Render::saveSceneList(QString path, QDomElement kdenliveData) {
+bool Render::saveSceneList(QString path, QDomElement kdenliveData) {
QFile file(path);
QDomDocument doc;
doc.setContent(sceneList(), false);
}
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
kWarning() << "////// ERROR writing to file: " << path;
- return;
+ return false;
}
QTextStream out(&file);
out << doc.toString();
+ if (file.error() != QFile::NoError) {
+ file.close();
+ return false;
+ }
file.close();
+ return true;
}
westleyConsumer.start();
}
-const double Render::fps() const {
+double Render::fps() const {
return m_fps;
}
if (!m_mltProducer) return;
//m_mltConsumer->set("refresh", 0);
- mlt_properties properties = MLT_PRODUCER_PROPERTIES(m_mltProducer->get_producer());
+ //mlt_properties properties = MLT_PRODUCER_PROPERTIES(m_mltProducer->get_producer());
/*if (KdenliveSettings::osdtimecode()) {
mlt_properties_set_int( properties, "meta.attr.timecode", 1);
mlt_properties_set( properties, "meta.attr.timecode.markup", "#timecode#");
refresh();
}
-void Render::setVolume(double volume) {
+void Render::setVolume(double /*volume*/) {
if (!m_mltConsumer || !m_mltProducer) return;
/*osdTimer->stop();
m_mltConsumer->set("refresh", 0);
-void Render::exportFileToFirewire(QString srcFileName, int port, GenTime startTime, GenTime endTime) {
+void Render::exportFileToFirewire(QString /*srcFileName*/, int /*port*/, GenTime /*startTime*/, GenTime /*endTime*/) {
KMessageBox::sorry(0, i18n("Firewire is not enabled on your system.\n Please install Libiec61883 and recompile Kdenlive"));
}
-void Render::exportCurrentFrame(KUrl url, bool notify) {
+void Render::exportCurrentFrame(KUrl url, bool /*notify*/) {
if (!m_mltProducer) {
KMessageBox::sorry(qApp->activeWindow(), i18n("There is no clip, cannot extract frame."));
return;
}
- int height = 1080;//KdenliveSettings::defaultheight();
- int width = 1940; //KdenliveSettings::displaywidth();
+ //int height = 1080;//KdenliveSettings::defaultheight();
+ //int width = 1940; //KdenliveSettings::displaywidth();
//TODO: rewrite
QPixmap pix; // = KThumb::getFrame(m_mltProducer, -1, width, height);
/*
double trackDuration;
if (trackNb == 1) {
Mlt::Producer trackProducer(tractor.track(0));
- Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
- duration = Mlt::Producer(trackPlaylist.get_producer()).get_playtime() - 1;
+ duration = trackProducer.get_playtime() - 1;
m_mltProducer->set("out", duration);
emit durationChanged((int) duration);
return;
}
while (trackNb > 1) {
Mlt::Producer trackProducer(tractor.track(trackNb - 1));
- Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
- trackDuration = Mlt::Producer(trackPlaylist.get_producer()).get_playtime() - 1;
+ trackDuration = trackProducer.get_playtime() - 1;
//kDebug() << " / / /DURATON FOR TRACK " << trackNb - 1 << " = " << trackDuration;
if (trackDuration > duration) duration = trackDuration;
}
Mlt::Producer blackTrackProducer(tractor.track(0));
- Mlt::Playlist blackTrackPlaylist((mlt_playlist) blackTrackProducer.get_service());
- double blackDuration = Mlt::Producer(blackTrackPlaylist.get_producer()).get_playtime() - 1;
+ double blackDuration = blackTrackProducer.get_playtime() - 1;
if (blackDuration != duration) {
- blackTrackPlaylist.remove_region(0, (int)blackDuration);
- int i = 0;
+ Mlt::Playlist blackTrackPlaylist((mlt_playlist) blackTrackProducer.get_service());
+ blackTrackPlaylist.clear();
int dur = (int)duration;
- QDomDocument doc;
- QDomElement black = doc.createElement("producer");
- black.setAttribute("mlt_service", "colour");
- black.setAttribute("colour", "black");
- black.setAttribute("id", "black");
- ItemInfo info;
- info.track = 0;
while (dur > 14000) {
- info.startPos = GenTime(i * 14000, m_fps);
- info.endPos = info.startPos + GenTime(13999, m_fps);
- mltInsertClip(info, black, m_blackClip);
+ blackTrackPlaylist.append(*m_blackClip, 0, 13999);
dur = dur - 14000;
- i++;
}
if (dur > 0) {
- info.startPos = GenTime(i * 14000, m_fps);
- info.endPos = info.startPos + GenTime(dur, m_fps);
- mltInsertClip(info, black, m_blackClip);
+ blackTrackPlaylist.append(*m_blackClip, 0, dur);
}
m_mltProducer->set("out", duration);
emit durationChanged((int)duration);
return trackPlaylist.clip_length(clipIndex) + trackPlaylist.clip_start(clipIndex) - insertPos;
}
+int Render::mltTrackDuration(int track) {
+ if (!m_mltProducer) {
+ kDebug() << "PLAYLIST NOT INITIALISED //////";
+ return -1;
+ }
+ Mlt::Producer parentProd(m_mltProducer->parent());
+ if (parentProd.get_producer() == NULL) {
+ kDebug() << "PLAYLIST BROKEN, CANNOT INSERT CLIP //////";
+ return -1;
+ }
+
+ Mlt::Service service(parentProd.get_service());
+ Mlt::Tractor tractor(service);
+
+ Mlt::Producer trackProducer(tractor.track(track));
+ return trackProducer.get_playtime() - 1;
+}
void Render::mltInsertSpace(QMap <int, int> trackClipStartList, QMap <int, int> trackTransitionStartList, int track, const GenTime duration, const GenTime timeOffset) {
if (!m_mltProducer) {
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
- int clipNb = trackPlaylist.count();
+ //int clipNb = trackPlaylist.count();
insertPos = trackClipStartList.value(trackNb - 1);
if (insertPos != -1) {
insertPos += offset;
char *endtag = decodedString(params.paramValue("endtag", "end"));
kDebug() << "// ADDING KEYFRAME TAGS: " << starttag << ", " << endtag;
int duration = clip->get_playtime();
- double max = params.paramValue("max").toDouble();
+ //double max = params.paramValue("max").toDouble();
double min = params.paramValue("min").toDouble();
double factor = params.paramValue("factor", "1").toDouble();
params.removeParam("starttag");
Mlt::Producer *clip;
// check if we are moving a slowmotion producer
QString serv = clipProducer.parent().get("mlt_service");
- if (serv == "framebuffer") {
+ QString currentid = clipProducer.parent().get("id");
+ if (serv == "framebuffer" || currentid.endsWith("_video")) {
clip = &clipProducer;
} else clip = prod->cut(clipProducer.get_in(), clipProducer.get_out());
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
- Mlt::Field *field = tractor.field();
mlt_service_lock(service.get_service());
m_mltConsumer->set("refresh", 0);
m_isBlocked = true;
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
- Mlt::Field *field = tractor.field();
//m_mltConsumer->set("refresh", 0);
mlt_service serv = m_mltProducer->parent().get_service();
m_mltConsumer->set("refresh", 1);
}
-void Render::mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool do_refresh) {
+void Render::mltDeleteTransition(QString tag, int /*a_track*/, int b_track, GenTime in, GenTime out, QDomElement /*xml*/, bool /*do_refresh*/) {
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
Mlt::Field *field = tractor.field();
void Render::mltResizeTransparency(int oldStart, int newStart, int newEnd, int track, int id) {
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
- Mlt::Field *field = tractor.field();
mlt_service_lock(service.get_service());
m_mltConsumer->set("refresh", 0);
void Render::mltMoveTransparency(int startTime, int endTime, int startTrack, int endTrack, int id) {
Mlt::Service service(m_mltProducer->parent().get_service());
Mlt::Tractor tractor(service);
- Mlt::Field *field = tractor.field();
mlt_service_lock(service.get_service());
m_mltConsumer->set("refresh", 0);
}
-bool Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool do_refresh) {
+bool Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool /*do_refresh*/) {
if (in >= out) return false;
QMap<QString, QString> args = mltGetTransitionParamsFromXml(xml);
Mlt::Service service(m_mltProducer->parent().get_service());
}
QList <Mlt::Producer *> Render::producersList() {
- QList <Mlt::Producer *> prods = QList <Mlt::Producer *> ();
+ QList <Mlt::Producer *> prods;
Mlt::Service service(m_mltProducer->parent().get_service());
if (service.type() != tractor_type) return prods;
Mlt::Tractor tractor(service);
QString id = nprod->get("id");
if (id.startsWith("slowmotion:")) {
// this is a slowmotion producer, add it to the list
- QString url = QString::fromUtf8(nprod->get("resource"));
+ QString url = QString::fromUtf8(nprod->get("resource"));
if (!m_slowmotionProducers.contains(url)) {
m_slowmotionProducers.insert(url, nprod);
}