From: <j-...@us...> - 2009-03-08 14:17:43
|
Revision: 3121 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3121&view=rev Author: j-b-m Date: 2009-03-08 14:17:30 +0000 (Sun, 08 Mar 2009) Log Message: ----------- Cleanup Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-08 14:01:19 UTC (rev 3120) +++ trunk/kdenlive/src/renderer.cpp 2009-03-08 14:17:30 UTC (rev 3121) @@ -1267,27 +1267,16 @@ double blackDuration = Mlt::Producer(blackTrackPlaylist.get_producer()).get_playtime() - 1; if (blackDuration != duration) { - blackTrackPlaylist.remove_region(0, (int)blackDuration); - int i = 0; + 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); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-08 17:49:58
|
Revision: 3123 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3123&view=rev Author: j-b-m Date: 2009-03-08 17:49:40 +0000 (Sun, 08 Mar 2009) Log Message: ----------- Fix compilation Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-08 15:07:43 UTC (rev 3122) +++ trunk/kdenlive/src/renderer.cpp 2009-03-08 17:49:40 UTC (rev 3123) @@ -1270,10 +1270,8 @@ blackTrackPlaylist.clear(); int dur = (int)duration; while (dur > 14000) { - blackTrackPlaylist.append(*m_blackClip, 0, 13999); dur = dur - 14000; - i++; } if (dur > 0) { blackTrackPlaylist.append(*m_blackClip, 0, dur); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-04-04 20:14:48
|
Revision: 3211 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3211&view=rev Author: j-b-m Date: 2009-04-04 20:14:43 +0000 (Sat, 04 Apr 2009) Log Message: ----------- * Always save playlist in UTF-8 * Don't add property to transition if it is empty Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-04-04 12:20:11 UTC (rev 3210) +++ trunk/kdenlive/src/renderer.cpp 2009-04-04 20:14:43 UTC (rev 3211) @@ -891,8 +891,7 @@ kWarning() << "////// ERROR writing to file: " << path; return false; } - QTextStream out(&file); - out << doc.toString(); + file.write(doc.toString().toUtf8()); if (file.error() != QFile::NoError) { file.close(); return false; @@ -2552,7 +2551,7 @@ char *name = decodedString(key); char *value = decodedString(it.value()); mlt_properties_set(transproperties, name, value); - kDebug() << " ------ UPDATING TRANS PARAM: " << name << ": " << value; + //kDebug() << " ------ UPDATING TRANS PARAM: " << name << ": " << value; //filter->set("kdenlive_id", id); delete[] name; delete[] value; @@ -2803,8 +2802,8 @@ key = it.key(); char *name = decodedString(key); char *value = decodedString(it.value()); - transition->set(name, value); - kDebug() << " ------ ADDING TRANS PARAM: " << name << ": " << value; + if (it.value().isEmpty() == false) transition->set(name, value); + //kDebug() << " ------ ADDING TRANS PARAM: " << name << ": " << value; //filter->set("kdenlive_id", id); delete[] name; delete[] value; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-04-08 21:06:49
|
Revision: 3261 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3261&view=rev Author: j-b-m Date: 2009-04-08 21:06:45 +0000 (Wed, 08 Apr 2009) Log Message: ----------- Fix memleaks Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-04-08 17:39:56 UTC (rev 3260) +++ trunk/kdenlive/src/renderer.cpp 2009-04-08 21:06:45 UTC (rev 3261) @@ -803,6 +803,7 @@ { if (m_winid == -1) return; m_isBlocked = true; + qDeleteAll(m_slowmotionProducers.values()); m_slowmotionProducers.clear(); //kWarning() << "////// RENDER, SET SCENE LIST: " << playlist; @@ -2857,9 +2858,11 @@ //kDebug() << "// PARSING SCENE TRACK: " << t << ", CLIPS: " << clipNb; for (int i = 0; i < clipNb; i++) { Mlt::Producer *nprod = new Mlt::Producer(trackPlaylist.get_clip(i)->get_parent()); - if (nprod && !nprod->is_blank() && !ids.contains(nprod->get("id"))) { - ids.append(nprod->get("id")); - prods.append(nprod); + if (nprod) { + if (!nprod->is_blank() && !ids.contains(nprod->get("id"))) { + ids.append(nprod->get("id")); + prods.append(nprod); + } else delete nprod; } } } @@ -2880,15 +2883,15 @@ int clipNb = trackPlaylist.count(); for (int i = 0; i < clipNb; i++) { Mlt::Producer *nprod = new Mlt::Producer(trackPlaylist.get_clip(i)->get_parent()); - if (nprod && !nprod->is_blank()) { + if (nprod) { QString id = nprod->get("id"); - if (id.startsWith("slowmotion:")) { + if (id.startsWith("slowmotion:") && !nprod->is_blank()) { // this is a slowmotion producer, add it to the list QString url = QString::fromUtf8(nprod->get("resource")); if (!m_slowmotionProducers.contains(url)) { m_slowmotionProducers.insert(url, nprod); } - } + } else delete nprod; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ra...@us...> - 2009-04-10 15:04:29
|
Revision: 3276 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3276&view=rev Author: rayll Date: 2009-04-10 15:04:24 +0000 (Fri, 10 Apr 2009) Log Message: ----------- [PATCH 1/6] Kill unreachable code Signed-off-by: Ray Lehtiniemi <ra...@ma...> Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-04-10 14:44:46 UTC (rev 3275) +++ trunk/kdenlive/src/renderer.cpp 2009-04-10 15:04:24 UTC (rev 3276) @@ -3032,77 +3032,6 @@ tractor.removeChild(track); setSceneList(doc.toString(), m_framePosition); mltCheckLength(); - return; - - blockSignals(true); - m_isBlocked = true; - - m_mltConsumer->set("refresh", 0); - mlt_service_lock(m_mltConsumer->get_service()); - Mlt::Service service(m_mltProducer->parent().get_service()); - if (service.type() != tractor_type) kWarning() << "// TRACTOR PROBLEM"; - - /*Mlt::Tractor tractor(service); - - - Mlt::Multitrack *multi = tractor.multitrack(); - - - int ct = tractor.count(); - kDebug() << "// TRACK REMOVE: " << ix << ", MAX: " << ct; - int pos = ix; - for (; pos < ct ; pos++) { - Mlt::Service *lastTrack = new Mlt::Service(tractor.track(pos)->get_service()); - //mlt_service_close(lastTrack->get_service()); - delete lastTrack; - Mlt::Producer *prodToMove = new Mlt::Producer(tractor.track(pos + 1)); - Mlt::Producer *prodToClose = new Mlt::Producer(tractor.track(pos)); - mlt_service_close(prodToMove->get_service()); - mlt_service_close(prodToClose->get_service()); - tractor.set_track(*prodToMove, pos); - }*/ - - // Move transitions - /*mlt_service serv = m_mltProducer->parent().get_service(); - mlt_service nextservice = mlt_service_get_producer(serv); - mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); - QString mlt_type = mlt_properties_get(properties, "mlt_type"); - QString resource = mlt_properties_get(properties, "mlt_service"); - - while (mlt_type == "transition") { - if (resource != "mix") { - mlt_transition tr = (mlt_transition) nextservice; - int currentTrack = mlt_transition_get_b_track(tr); - int currentaTrack = mlt_transition_get_a_track(tr); - mlt_properties properties = MLT_TRANSITION_PROPERTIES(tr); - - if (currentTrack >= ix) { - mlt_properties_set_int(properties, "b_track", currentTrack + 1); - mlt_properties_set_int(properties, "a_track", currentaTrack + 1); - } - } - nextservice = mlt_service_producer(nextservice); - if (nextservice == NULL) break; - properties = MLT_SERVICE_PROPERTIES(nextservice); - mlt_type = mlt_properties_get(properties, "mlt_type"); - resource = mlt_properties_get(properties, "mlt_service"); - } - - // Add audio mix transition to last track - Mlt::Field *field = tractor.field(); - Mlt::Transition *transition = new Mlt::Transition(*m_mltProfile, "mix"); - //transition->set("mlt_service", "mix"); - transition->set("a_track", 1); - transition->set("b_track", ct); - transition->set("always_active", 1); - transition->set("internal_added", 237); - transition->set("combine", 1); - field->plant_transition(*transition, 1, ct); - */ - - mlt_service_unlock(m_mltConsumer->get_service()); - m_isBlocked = false; - blockSignals(false); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ra...@us...> - 2009-04-10 15:05:12
|
Revision: 3277 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3277&view=rev Author: rayll Date: 2009-04-10 15:04:52 +0000 (Fri, 10 Apr 2009) Log Message: ----------- [PATCH 2/6] Replace doubles with ints Signed-off-by: Ray Lehtiniemi <ra...@ma...> Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-04-10 15:04:24 UTC (rev 3276) +++ trunk/kdenlive/src/renderer.cpp 2009-04-10 15:04:52 UTC (rev 3277) @@ -1322,13 +1322,13 @@ Mlt::Tractor tractor(service); int trackNb = tractor.count(); - double duration = 0; - double trackDuration; + int duration = 0; + int trackDuration; if (trackNb == 1) { Mlt::Producer trackProducer(tractor.track(0)); duration = trackProducer.get_playtime() - 1; m_mltProducer->set("out", duration); - emit durationChanged((int) duration); + emit durationChanged(duration); return; } while (trackNb > 1) { @@ -1341,12 +1341,12 @@ } Mlt::Producer blackTrackProducer(tractor.track(0)); - double blackDuration = blackTrackProducer.get_playtime() - 1; + int blackDuration = blackTrackProducer.get_playtime() - 1; if (blackDuration != duration) { Mlt::Playlist blackTrackPlaylist((mlt_playlist) blackTrackProducer.get_service()); blackTrackPlaylist.clear(); - int dur = (int)duration; + int dur = duration; while (dur > 14000) { blackTrackPlaylist.append(*m_blackClip, 0, 13999); dur = dur - 14000; @@ -1355,7 +1355,7 @@ blackTrackPlaylist.append(*m_blackClip, 0, dur); } m_mltProducer->set("out", duration); - emit durationChanged((int)duration); + emit durationChanged(duration); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-01 18:06:58
|
Revision: 3473 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3473&view=rev Author: j-b-m Date: 2009-06-01 18:06:48 +0000 (Mon, 01 Jun 2009) Log Message: ----------- Work around color clip max duration for black track Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-06-01 15:58:15 UTC (rev 3472) +++ trunk/kdenlive/src/renderer.cpp 2009-06-01 18:06:48 UTC (rev 3473) @@ -808,14 +808,17 @@ //kWarning() << "////// RENDER, SET SCENE LIST: " << playlist; - if (m_mltConsumer) { - m_mltConsumer->stop(); - //m_mltConsumer->set("refresh", 0); - } else { + if (m_mltConsumer == NULL) { + kWarning() << "/////// ERROR, TRYING TO USE NULL MLT CONSUMER"; m_isBlocked = false; return; } + if (!m_mltConsumer->is_stopped()) { + m_mltConsumer->stop(); + //m_mltConsumer->set("refresh", 0); + } + if (m_mltProducer) { m_mltProducer->set_speed(0); //if (KdenliveSettings::osdtimecode() && m_osdInfo) m_mltProducer->detach(*m_osdInfo); @@ -1337,19 +1340,19 @@ } Mlt::Producer blackTrackProducer(tractor.track(0)); - int blackDuration = blackTrackProducer.get_playtime() - 1; - if (blackDuration != duration) { + if (blackTrackProducer.get_playtime() - 1 != duration) { Mlt::Playlist blackTrackPlaylist((mlt_playlist) blackTrackProducer.get_service()); - blackTrackPlaylist.clear(); - int dur = duration; - while (dur > 14000) { - blackTrackPlaylist.append(*m_blackClip, 0, 13999); - dur = dur - 14000; + Mlt::Producer *blackclip = blackTrackPlaylist.get_clip(0); + if (duration > m_blackClip->get_length()) { + m_blackClip->set("length", duration); + if (blackclip) blackclip->set("length", duration); } - if (dur > 0) { - blackTrackPlaylist.append(*m_blackClip, 0, dur); - } + if (blackclip == NULL || blackclip->is_blank() || blackTrackPlaylist.count() != 1) { + blackTrackPlaylist.clear(); + blackTrackPlaylist.append(*m_blackClip, 0, duration - 1); + } else blackTrackPlaylist.resize_clip(0, 0, duration - 1); + delete blackclip; m_mltProducer->set("out", duration); emit durationChanged(duration); } @@ -1357,7 +1360,7 @@ void Render::mltInsertClip(ItemInfo info, QDomElement element, Mlt::Producer *prod) { - if (!m_mltProducer) { + if (m_mltProducer == NULL) { kDebug() << "PLAYLIST NOT INITIALISED //////"; return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-16 06:03:34
|
Revision: 3547 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3547&view=rev Author: j-b-m Date: 2009-06-16 06:03:26 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Fix transition not correctly moved on track deletion Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-06-16 06:02:50 UTC (rev 3546) +++ trunk/kdenlive/src/renderer.cpp 2009-06-16 06:03:26 UTC (rev 3547) @@ -3026,6 +3026,7 @@ } if (mappedProps.value("mlt_service") == "mix" && mappedProps.value("b_track").toInt() == tracksCount) { tractor.removeChild(transitions.at(i)); + i--; } else if (mappedProps.value("mlt_service") != "mix" && mappedProps.value("b_track").toInt() >= ix) { // Transition needs to be moved int a_track = mappedProps.value("a_track").toInt(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-17 20:42:53
|
Revision: 3561 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3561&view=rev Author: j-b-m Date: 2009-06-17 20:42:47 +0000 (Wed, 17 Jun 2009) Log Message: ----------- Use correct locking in MLT (at least I hope). Should make operations safer, less crashy Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-06-17 20:20:13 UTC (rev 3560) +++ trunk/kdenlive/src/renderer.cpp 2009-06-17 20:42:47 UTC (rev 3561) @@ -2187,6 +2187,7 @@ m_isBlocked = false; return false; } + mlt_service_lock(service.get_service()); int clipIndex = trackPlaylist.get_clip_index_at((int) info.startPos.frames(m_fps)); //kDebug() << "// SELECTED CLIP START: " << trackPlaylist.clip_start(clipIndex); Mlt::Producer *clip = trackPlaylist.get_clip(clipIndex); @@ -2222,10 +2223,9 @@ } } } else trackPlaylist.insert_blank(clipIndex, 0 - diff - 1); - trackPlaylist.consolidate_blanks(0); + mlt_service_unlock(service.get_service()); - if (info.track != 0 && clipIndex == trackPlaylist.count()) mltCheckLength(); /*if (QString(clip->parent().get("transparency")).toInt() == 1) { //mltResizeTransparency(previousStart, previousStart, previousStart + newDuration, track, QString(clip->parent().get("id")).toInt()); @@ -2399,12 +2399,11 @@ { m_isBlocked++; - //m_mltConsumer->set("refresh", 0); - mlt_service_lock(m_mltConsumer->get_service()); Mlt::Service service(m_mltProducer->parent().get_service()); if (service.type() != tractor_type) kWarning() << "// TRACTOR PROBLEM"; Mlt::Tractor tractor(service); + mlt_service_lock(service.get_service()); Mlt::Producer trackProducer(tractor.track(startTrack)); Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); int clipIndex = trackPlaylist.get_clip_index_at(moveStart + 1); @@ -2417,7 +2416,7 @@ if (!trackPlaylist.is_blank_at(moveEnd)) trackPlaylist.insert_at(moveStart, clipProducer, 1); //int ix = trackPlaylist.get_clip_index_at(moveEnd); kDebug() << "// ERROR MOVING CLIP TO : " << moveEnd; - mlt_service_unlock(m_mltConsumer->get_service()); + mlt_service_unlock(service.get_service()); m_isBlocked--; return false; } else { @@ -2434,7 +2433,7 @@ Mlt::Playlist destTrackPlaylist((mlt_playlist) destTrackProducer.get_service()); if (!destTrackPlaylist.is_blank_at(moveEnd)) { // error, destination is not empty - mlt_service_unlock(m_mltConsumer->get_service()); + mlt_service_unlock(service.get_service()); m_isBlocked--; return false; } else { @@ -2443,7 +2442,7 @@ // error, destination is not empty //int ix = trackPlaylist.get_clip_index_at(moveEnd); kDebug() << "// ERROR MOVING CLIP TO : " << moveEnd; - mlt_service_unlock(m_mltConsumer->get_service()); + mlt_service_unlock(service.get_service()); m_isBlocked--; return false; } @@ -2489,9 +2488,8 @@ else if (newIndex + 1 == destTrackPlaylist.count()) checkLength = true; } } - + mlt_service_unlock(service.get_service()); if (checkLength) mltCheckLength(); - mlt_service_unlock(m_mltConsumer->get_service()); m_isBlocked--; //askForRefresh(); //m_mltConsumer->set("refresh", 1); @@ -2504,14 +2502,12 @@ int new_out = (int)newOut.frames(m_fps) - 1; if (new_in >= new_out) return false; - Mlt::Service service(m_mltProducer->parent().get_service()); - Mlt::Tractor tractor(service); - + mlt_service serv = m_mltProducer->parent().get_service(); m_isBlocked++; - mlt_service_lock(service.get_service()); + mlt_service_lock(serv); //m_mltConsumer->set("refresh", 0); - mlt_service serv = m_mltProducer->parent().get_service(); + mlt_service nextservice = mlt_service_get_producer(serv); mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); QString mlt_type = mlt_properties_get(properties, "mlt_type"); @@ -2542,7 +2538,7 @@ mlt_type = mlt_properties_get(properties, "mlt_type"); resource = mlt_properties_get(properties, "mlt_service"); } - mlt_service_unlock(service.get_service()); + mlt_service_unlock(serv); m_isBlocked--; //askForRefresh(); //if (m_isBlocked == 0) m_mltConsumer->set("refresh", 1); @@ -2561,12 +2557,11 @@ void Render::mltUpdateTransitionParams(QString type, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml) { - Mlt::Service service(m_mltProducer->parent().get_service()); - Mlt::Tractor tractor(service); - mlt_service_lock(service.get_service()); + mlt_service serv = m_mltProducer->parent().get_service(); + mlt_service_lock(serv); m_isBlocked++; - mlt_service serv = m_mltProducer->parent().get_service(); + mlt_service nextservice = mlt_service_get_producer(serv); mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); QString mlt_type = mlt_properties_get(properties, "mlt_type"); @@ -2610,7 +2605,7 @@ mlt_type = mlt_properties_get(properties, "mlt_type"); resource = mlt_properties_get(properties, "mlt_service"); } - mlt_service_unlock(service.get_service()); + mlt_service_unlock(serv); m_isBlocked--; //askForRefresh(); //if (m_isBlocked == 0) m_mltConsumer->set("refresh", 1); @@ -2618,15 +2613,15 @@ 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_service serv = m_mltProducer->parent().get_service(); m_isBlocked++; - mlt_service_lock(service.get_service()); + mlt_service_lock(serv); + Mlt::Service service(serv); + Mlt::Tractor tractor(service); Mlt::Field *field = tractor.field(); //if (do_refresh) m_mltConsumer->set("refresh", 0); - mlt_service serv = m_mltProducer->parent().get_service(); mlt_service nextservice = mlt_service_get_producer(serv); mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); @@ -2653,7 +2648,7 @@ mlt_type = mlt_properties_get(properties, "mlt_type"); resource = mlt_properties_get(properties, "mlt_service"); } - mlt_service_unlock(service.get_service()); + mlt_service_unlock(serv); m_isBlocked--; //askForRefresh(); //if (m_isBlocked == 0) m_mltConsumer->set("refresh", 1); @@ -2951,9 +2946,8 @@ blockSignals(true); m_isBlocked++; - m_mltConsumer->set("refresh", 0); - mlt_service_lock(m_mltConsumer->get_service()); Mlt::Service service(m_mltProducer->parent().get_service()); + mlt_service_lock(service.get_service()); if (service.type() != tractor_type) kWarning() << "// TRACTOR PROBLEM"; Mlt::Tractor tractor(service); @@ -3012,15 +3006,16 @@ // Add audio mix transition to last track Mlt::Field *field = tractor.field(); Mlt::Transition *transition = new Mlt::Transition(*m_mltProfile, "mix"); - //transition->set("mlt_service", "mix"); transition->set("a_track", 1); transition->set("b_track", ct); transition->set("always_active", 1); transition->set("internal_added", 237); transition->set("combine", 1); field->plant_transition(*transition, 1, ct); - - mlt_service_unlock(m_mltConsumer->get_service()); + //mlt_service_unlock(m_mltConsumer->get_service()); + mlt_service_unlock(service.get_service()); + //tractor.multitrack()->refresh(); + //tractor.refresh(); m_isBlocked--; blockSignals(false); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-17 22:14:34
|
Revision: 3564 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3564&view=rev Author: j-b-m Date: 2009-06-17 22:14:30 +0000 (Wed, 17 Jun 2009) Log Message: ----------- Fix mem leaks and 2 frames offset on resize clip end Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-06-17 22:09:05 UTC (rev 3563) +++ trunk/kdenlive/src/renderer.cpp 2009-06-17 22:14:30 UTC (rev 3564) @@ -1531,7 +1531,6 @@ return false; } m_isBlocked = true; - Mlt::Producer clip(trackPlaylist.get_clip(clipIndex)); trackPlaylist.replace_with_blank(clipIndex); trackPlaylist.consolidate_blanks(0); /*if (QString(clip.parent().get("transparency")).toInt() == 1) @@ -1737,16 +1736,22 @@ int clipIndex = trackPlaylist.get_clip_index_at(startPos); int clipLength = trackPlaylist.clip_length(clipIndex); - Mlt::Producer clip(trackPlaylist.get_clip(clipIndex)); - if (!clip.is_valid() || clip.is_blank()) { + Mlt::Producer *clip = trackPlaylist.get_clip(clipIndex); + if (clip == NULL) { + return -1; + } + if (!clip->is_valid() || clip->is_blank()) { // invalid clip + delete clip; return -1; } - Mlt::Producer clipparent = clip.parent(); + Mlt::Producer clipparent = clip->parent(); if (!clipparent.is_valid() || clipparent.is_blank()) { // invalid clip + delete clip; return -1; } + delete clip; QString serv = clipparent.get("mlt_service"); QString id = clipparent.get("id"); //kDebug() << "CLIP SERVICE: " << serv; @@ -2165,9 +2170,7 @@ bool Render::mltResizeClipEnd(ItemInfo info, GenTime clipDuration) { m_isBlocked = true; - Mlt::Service service(m_mltProducer->parent().get_service()); - Mlt::Tractor tractor(service); Mlt::Producer trackProducer(tractor.track(info.track)); Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); @@ -2193,7 +2196,7 @@ Mlt::Producer *clip = trackPlaylist.get_clip(clipIndex); int previousStart = clip->get_in(); int newDuration = (int) clipDuration.frames(m_fps) - 1; - int diff = newDuration - trackPlaylist.clip_length(clipIndex) - 1; + int diff = newDuration - (trackPlaylist.clip_length(clipIndex) - 1); if (newDuration > clip->get_length()) { clip->parent().set("length", newDuration + 1); clip->set("length", newDuration + 1); @@ -2202,6 +2205,7 @@ clip->parent().set_in_and_out(0, newDuration + 1); clip->set_in_and_out(0, newDuration + 1); } + delete clip; trackPlaylist.resize_clip(clipIndex, previousStart, newDuration + previousStart); trackPlaylist.consolidate_blanks(0); // skip to next clip @@ -2281,6 +2285,7 @@ return false; } int previousStart = clip->get_in(); + delete clip; int previousDuration = trackPlaylist.clip_length(clipIndex) - 1; m_isBlocked = true; trackPlaylist.resize_clip(clipIndex, previousStart + frameOffset, previousStart + previousDuration + frameOffset); @@ -2311,6 +2316,7 @@ return false; } int previousStart = clip->get_in(); + delete clip; int previousDuration = trackPlaylist.clip_length(clipIndex) - 1; m_isBlocked = true; kDebug() << "RESIZE, old start: " << previousStart << ", PREV DUR: " << previousDuration << ", DIFF: " << moveFrame; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-29 17:34:40
|
Revision: 3695 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3695&view=rev Author: j-b-m Date: 2009-06-29 17:34:33 +0000 (Mon, 29 Jun 2009) Log Message: ----------- Don't keep playlist blocked when we have a problem deleting a clip Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-06-29 17:06:33 UTC (rev 3694) +++ trunk/kdenlive/src/renderer.cpp 2009-06-29 17:34:33 UTC (rev 3695) @@ -1541,9 +1541,9 @@ Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); int clipIndex = trackPlaylist.get_clip_index_at((int) position.frames(m_fps)); - /* // Display playlist info - kDebug()<<"//// BEFORE"; - for (int i = 0; i < trackPlaylist.count(); i++) { + // Display playlist info + //kDebug() << "//// BEFORE -( " << position.frames(m_fps) << " )-------------------------------"; + /*for (int i = 0; i < trackPlaylist.count(); i++) { int blankStart = trackPlaylist.clip_start(i); int blankDuration = trackPlaylist.clip_length(i) - 1; QString blk; @@ -1552,8 +1552,10 @@ }*/ if (trackPlaylist.is_blank(clipIndex)) { kDebug() << "// WARNING, TRYING TO REMOVE A BLANK: " << position.frames(25); + mlt_service_unlock(service.get_service()); return false; } + //kDebug()<<"//// Deleting at: "<< (int) position.frames(m_fps) <<" --------------------------------------"; m_isBlocked = true; trackPlaylist.replace_with_blank(clipIndex); trackPlaylist.consolidate_blanks(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-03 11:25:23
|
Revision: 3726 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3726&view=rev Author: j-b-m Date: 2009-07-03 11:25:22 +0000 (Fri, 03 Jul 2009) Log Message: ----------- Fix transition not correctly updated when changed from dissolve to wipe for example Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-03 06:45:47 UTC (rev 3725) +++ trunk/kdenlive/src/renderer.cpp 2009-07-03 11:25:22 UTC (rev 3726) @@ -2618,7 +2618,6 @@ mlt_service_lock(serv); m_isBlocked++; - mlt_service nextservice = mlt_service_get_producer(serv); mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); QString mlt_type = mlt_properties_get(properties, "mlt_type"); @@ -2641,6 +2640,10 @@ QString key; mlt_properties transproperties = MLT_TRANSITION_PROPERTIES(tr); mlt_properties_set_int(transproperties, "force_track", xml.attribute("force_track").toInt()); + // update the transition id in case it uses the same MLT service but different Kdenlive id + char *tmp = decodedString(xml.attribute("id")); + mlt_properties_set(transproperties, "kdenlive_id", tmp); + delete[] tmp; if (currentBTrack != a_track) { mlt_properties_set_int(properties, "a_track", a_track); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-19 09:57:09
|
Revision: 3732 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3732&view=rev Author: j-b-m Date: 2009-07-19 09:57:07 +0000 (Sun, 19 Jul 2009) Log Message: ----------- update monitor when changing / moving a transition Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-18 22:08:47 UTC (rev 3731) +++ trunk/kdenlive/src/renderer.cpp 2009-07-19 09:57:07 UTC (rev 3732) @@ -2590,7 +2590,7 @@ } mlt_service_unlock(serv); m_isBlocked--; - //askForRefresh(); + refresh(); //if (m_isBlocked == 0) m_mltConsumer->set("refresh", 1); return true; } @@ -2600,8 +2600,9 @@ if (oldTag == tag) mltUpdateTransitionParams(tag, a_track, b_track, in, out, xml); else { mltDeleteTransition(oldTag, a_track, b_track, in, out, xml, false); - mltAddTransition(tag, a_track, b_track, in, out, xml); + mltAddTransition(tag, a_track, b_track, in, out, xml, false); } + refresh(); //mltSavePlaylist(); } @@ -2883,7 +2884,7 @@ } -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); @@ -2915,7 +2916,7 @@ // attach filter to the clip field->plant_transition(*transition, a_track, b_track); delete[] transId; - refresh(); + if (do_refresh) refresh(); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-21 08:00:22
|
Revision: 3745 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3745&view=rev Author: j-b-m Date: 2009-07-21 08:00:13 +0000 (Tue, 21 Jul 2009) Log Message: ----------- Fix effect stack corruption when using some effects (auto track for example) Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-20 21:08:51 UTC (rev 3744) +++ trunk/kdenlive/src/renderer.cpp 2009-07-21 08:00:13 UTC (rev 3745) @@ -1933,7 +1933,6 @@ bool Render::mltRemoveEffect(int track, GenTime position, QString index, bool updateIndex, bool doRefresh) { - kDebug() << "// TRYing to remove effect at: " << index; Mlt::Service service(m_mltProducer->parent().get_service()); bool success = false; Mlt::Tractor tractor(service); @@ -1953,7 +1952,7 @@ while (filter) { if ((index == "-1" && strcmp(filter->get("kdenlive_id"), "")) || filter->get("kdenlive_ix") == index) {// && filter->get("kdenlive_id") == id) { if (clipService.detach(*filter) == 0) success = true; - kDebug() << " / / / DLEETED EFFECT: " << ct; + //kDebug()<<"Deleted filter id:"<<filter->get("kdenlive_id")<<", ix:"<<filter->get("kdenlive_ix")<<", SERVICE:"<<filter->get("mlt_service"); } else if (updateIndex) { // Adjust the other effects index if (QString(filter->get("kdenlive_ix")).toInt() > index.toInt()) filter->set("kdenlive_ix", QString(filter->get("kdenlive_ix")).toInt() - 1); @@ -2112,7 +2111,7 @@ if (!params.paramValue("keyframes").isEmpty() || /*it.key().startsWith("#") || */tag.startsWith("ladspa") || tag == "sox" || tag == "autotrack_rectangle") { // This is a keyframe effect, to edit it, we remove it and re-add it. - mltRemoveEffect(track, position, index, true); + mltRemoveEffect(track, position, index, false); bool success = mltAddEffect(track, position, params); return success; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-25 08:28:56
|
Revision: 3764 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3764&view=rev Author: j-b-m Date: 2009-07-25 08:28:45 +0000 (Sat, 25 Jul 2009) Log Message: ----------- Fix spacer bug (broken when removing a one frame zone) Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-24 19:47:50 UTC (rev 3763) +++ trunk/kdenlive/src/renderer.cpp 2009-07-25 08:28:45 UTC (rev 3764) @@ -1679,7 +1679,11 @@ if (!trackPlaylist.is_blank(clipIndex)) clipIndex --; if (!trackPlaylist.is_blank(clipIndex)) kDebug() << "//// ERROR TRYING TO DELETE SPACE FROM " << insertPos; int position = trackPlaylist.clip_start(clipIndex); - trackPlaylist.remove_region(position, - diff - 1); + int blankDuration = trackPlaylist.clip_length(clipIndex) - 1; + diff = -diff; + if (blankDuration - diff == 1) + trackPlaylist.remove(clipIndex); + else trackPlaylist.remove_region(position, diff - 1); } trackPlaylist.consolidate_blanks(0); } @@ -1736,7 +1740,10 @@ if (!trackPlaylist.is_blank(clipIndex)) clipIndex --; if (!trackPlaylist.is_blank(clipIndex)) kDebug() << "//// ERROR TRYING TO DELETE SPACE FROM " << insertPos; int position = trackPlaylist.clip_start(clipIndex); - trackPlaylist.remove_region(position, - diff - 1); + int blankDuration = trackPlaylist.clip_length(clipIndex) - 1; + if (diff + blankDuration == 1) + trackPlaylist.remove(clipIndex); + else trackPlaylist.remove_region(position, - diff - 1); } trackPlaylist.consolidate_blanks(0); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-29 23:04:41
|
Revision: 3781 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3781&view=rev Author: j-b-m Date: 2009-07-29 23:04:32 +0000 (Wed, 29 Jul 2009) Log Message: ----------- Fix adjustment of black clip duration Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-29 22:48:06 UTC (rev 3780) +++ trunk/kdenlive/src/renderer.cpp 2009-07-29 23:04:32 UTC (rev 3781) @@ -1414,6 +1414,7 @@ Mlt::Producer *blackclip = blackTrackPlaylist.get_clip(0); if (duration > m_blackClip->get_length()) { m_blackClip->set("length", duration); + m_blackClip->set("out", duration - 1); if (blackclip) blackclip->set("length", duration); } if (blackclip == NULL || blackclip->is_blank() || blackTrackPlaylist.count() != 1) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-29 23:37:33
|
Revision: 3782 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3782&view=rev Author: j-b-m Date: 2009-07-29 23:37:20 +0000 (Wed, 29 Jul 2009) Log Message: ----------- Fix crash with speed effect Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-29 23:04:32 UTC (rev 3781) +++ trunk/kdenlive/src/renderer.cpp 2009-07-29 23:37:20 UTC (rev 3782) @@ -1401,8 +1401,7 @@ while (trackNb > 1) { Mlt::Producer trackProducer(tractor.track(trackNb - 1)); trackDuration = trackProducer.get_playtime() - 1; - - //kDebug() << " / / /DURATON FOR TRACK " << trackNb - 1 << " = " << trackDuration; + kDebug() << " / / /DURATON FOR TRACK " << trackNb - 1 << " = " << trackDuration; if (trackDuration > duration) duration = trackDuration; trackNb--; } @@ -1414,7 +1413,7 @@ Mlt::Producer *blackclip = blackTrackPlaylist.get_clip(0); if (duration > m_blackClip->get_length()) { m_blackClip->set("length", duration); - m_blackClip->set("out", duration - 1); + m_blackClip->set("out", duration - 1); if (blackclip) blackclip->set("length", duration); } if (blackclip == NULL || blackclip->is_blank() || blackTrackPlaylist.count() != 1) { @@ -1873,7 +1872,6 @@ m_slowmotionProducers.insert(url, slowprod); } Mlt::Producer *clip = trackPlaylist.replace_with_blank(clipIndex); - delete clip; trackPlaylist.consolidate_blanks(0); // Check that the blank space is long enough for our new duration clipIndex = trackPlaylist.get_clip_index_at(startPos); @@ -1886,9 +1884,9 @@ // move all effects to the correct producer mltPasteEffects(clip, cut); - trackPlaylist.insert_at(startPos, cut, 1); delete cut; + delete clip; clipIndex = trackPlaylist.get_clip_index_at(startPos); newLength = trackPlaylist.clip_length(clipIndex); mlt_service_unlock(service.get_service()); @@ -1896,7 +1894,6 @@ mlt_service_lock(service.get_service()); Mlt::Producer *clip = trackPlaylist.replace_with_blank(clipIndex); - delete clip; trackPlaylist.consolidate_blanks(0); // Check that the blank space is long enough for our new duration @@ -1916,6 +1913,7 @@ trackPlaylist.insert_at(startPos, cut, 1); delete cut; + delete clip; clipIndex = trackPlaylist.get_clip_index_at(startPos); newLength = trackPlaylist.clip_length(clipIndex); mlt_service_unlock(service.get_service()); @@ -1940,7 +1938,6 @@ m_slowmotionProducers.insert(url, slowprod); } Mlt::Producer *clip = trackPlaylist.replace_with_blank(clipIndex); - delete clip; trackPlaylist.consolidate_blanks(0); GenTime oldDuration = GenTime(clipLength, m_fps); @@ -1961,6 +1958,7 @@ trackPlaylist.insert_at(startPos, cut, 1); delete cut; + delete clip; clipIndex = trackPlaylist.get_clip_index_at(startPos); newLength = trackPlaylist.clip_length(clipIndex); @@ -2326,6 +2324,7 @@ int diff = newDuration - (trackPlaylist.clip_length(clipIndex) - 1); if (newDuration > clip->get_length()) { clip->parent().set("length", newDuration + 1); + clip->parent().set("out", newDuration); clip->set("length", newDuration + 1); } if (newDuration > clip->get_out()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-29 23:43:46
|
Revision: 3783 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3783&view=rev Author: j-b-m Date: 2009-07-29 23:43:38 +0000 (Wed, 29 Jul 2009) Log Message: ----------- debug-- Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-29 23:37:20 UTC (rev 3782) +++ trunk/kdenlive/src/renderer.cpp 2009-07-29 23:43:38 UTC (rev 3783) @@ -1401,7 +1401,7 @@ while (trackNb > 1) { Mlt::Producer trackProducer(tractor.track(trackNb - 1)); trackDuration = trackProducer.get_playtime() - 1; - kDebug() << " / / /DURATON FOR TRACK " << trackNb - 1 << " = " << trackDuration; + //kDebug() << " / / /DURATON FOR TRACK " << trackNb - 1 << " = " << trackDuration; if (trackDuration > duration) duration = trackDuration; trackNb--; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-30 15:53:59
|
Revision: 3785 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3785&view=rev Author: j-b-m Date: 2009-07-30 15:53:44 +0000 (Thu, 30 Jul 2009) Log Message: ----------- Fix black background clip sometimes broken Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-30 15:36:32 UTC (rev 3784) +++ trunk/kdenlive/src/renderer.cpp 2009-07-30 15:53:44 UTC (rev 3785) @@ -1411,13 +1411,15 @@ if (blackTrackProducer.get_playtime() - 1 != duration) { Mlt::Playlist blackTrackPlaylist((mlt_playlist) blackTrackProducer.get_service()); Mlt::Producer *blackclip = blackTrackPlaylist.get_clip(0); - if (duration > m_blackClip->get_length()) { - m_blackClip->set("length", duration); - m_blackClip->set("out", duration - 1); - if (blackclip) blackclip->set("length", duration); + if (blackclip && duration > blackclip->parent().get_length()) { + blackclip->parent().set("length", duration); + blackclip->parent().set("out", duration - 1); + blackclip->set("length", duration); } if (blackclip == NULL || blackclip->is_blank() || blackTrackPlaylist.count() != 1) { blackTrackPlaylist.clear(); + m_blackClip->set("length", duration); + m_blackClip->set("out", duration - 1); blackTrackPlaylist.append(*m_blackClip, 0, duration - 1); } else blackTrackPlaylist.resize_clip(0, 0, duration - 1); delete blackclip; @@ -1886,7 +1888,7 @@ mltPasteEffects(clip, cut); trackPlaylist.insert_at(startPos, cut, 1); delete cut; - delete clip; + delete clip; clipIndex = trackPlaylist.get_clip_index_at(startPos); newLength = trackPlaylist.clip_length(clipIndex); mlt_service_unlock(service.get_service()); @@ -1913,7 +1915,7 @@ trackPlaylist.insert_at(startPos, cut, 1); delete cut; - delete clip; + delete clip; clipIndex = trackPlaylist.get_clip_index_at(startPos); newLength = trackPlaylist.clip_length(clipIndex); mlt_service_unlock(service.get_service()); @@ -1958,7 +1960,7 @@ trackPlaylist.insert_at(startPos, cut, 1); delete cut; - delete clip; + delete clip; clipIndex = trackPlaylist.get_clip_index_at(startPos); newLength = trackPlaylist.clip_length(clipIndex); @@ -2324,7 +2326,7 @@ int diff = newDuration - (trackPlaylist.clip_length(clipIndex) - 1); if (newDuration > clip->get_length()) { clip->parent().set("length", newDuration + 1); - clip->parent().set("out", newDuration); + clip->parent().set("out", newDuration); clip->set("length", newDuration + 1); } if (newDuration > clip->get_out()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-30 16:07:55
|
Revision: 3786 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3786&view=rev Author: j-b-m Date: 2009-07-30 16:07:47 +0000 (Thu, 30 Jul 2009) Log Message: ----------- Fix crash when moving clip with speed effect: http://kdenlive.org/mantis/view.php?id=1070 Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-07-30 15:53:44 UTC (rev 3785) +++ trunk/kdenlive/src/renderer.cpp 2009-07-30 16:07:47 UTC (rev 3786) @@ -2596,9 +2596,13 @@ mltPasteEffects(clipProducer, clip); int newIndex = destTrackPlaylist.insert_at(moveEnd, clip, 1); - delete clip; - clip = NULL; - if (clipProducer) delete clipProducer; + if (clip == clipProducer) { + delete clip; + clip = NULL; + } else { + delete clip; + delete clipProducer; + } destTrackPlaylist.consolidate_blanks(0); /*if (QString(clipProducer.parent().get("transparency")).toInt() == 1) { kDebug() << "//////// moving clip transparency"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-02 22:21:00
|
Revision: 3796 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3796&view=rev Author: j-b-m Date: 2009-08-02 22:20:54 +0000 (Sun, 02 Aug 2009) Log Message: ----------- Fix crash when adding kdeyframe effect Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-08-02 20:10:58 UTC (rev 3795) +++ trunk/kdenlive/src/renderer.cpp 2009-08-02 22:20:54 UTC (rev 3796) @@ -2047,6 +2047,7 @@ } Mlt::Service clipService(clip->get_service()); m_isBlocked = true; + int duration = clip->get_playtime(); delete clip; // temporarily remove all effects after insert point QList <Mlt::Filter *> filtersList; @@ -2076,7 +2077,6 @@ char *starttag = decodedString(params.paramValue("starttag", "start")); 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 min = params.paramValue("min").toDouble(); double factor = params.paramValue("factor", "1").toDouble(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-17 08:09:32
|
Revision: 3904 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3904&view=rev Author: j-b-m Date: 2009-09-17 08:09:22 +0000 (Thu, 17 Sep 2009) Log Message: ----------- Fix endless loop causing freeze: http://kdenlive.org/mantis/view.php?id=1009 Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-09-17 07:53:04 UTC (rev 3903) +++ trunk/kdenlive/src/renderer.cpp 2009-09-17 08:09:22 UTC (rev 3904) @@ -1930,6 +1930,7 @@ void Render::mltPasteEffects(Mlt::Producer *source, Mlt::Producer *dest) { + if (source == dest) return; Mlt::Service sourceService(source->get_service()); Mlt::Service destService(dest->get_service()); @@ -2729,8 +2730,9 @@ // move all effects to the correct producer mltPasteEffects(clipProducer, clip); - + int newIndex = destTrackPlaylist.insert_at(moveEnd, clip, 1); + if (clip == clipProducer) { delete clip; clip = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-17 13:15:00
|
Revision: 3906 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3906&view=rev Author: j-b-m Date: 2009-09-17 13:14:48 +0000 (Thu, 17 Sep 2009) Log Message: ----------- Fix bug in slowmotion clip creation Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-09-17 12:10:52 UTC (rev 3905) +++ trunk/kdenlive/src/renderer.cpp 2009-09-17 13:14:48 UTC (rev 3906) @@ -1996,21 +1996,22 @@ int clipIndex = trackPlaylist.get_clip_index_at(startPos); int clipLength = trackPlaylist.clip_length(clipIndex); - Mlt::Producer *clip = trackPlaylist.get_clip(clipIndex); - if (clip == NULL) { + Mlt::Producer *original = trackPlaylist.get_clip(clipIndex); + if (original == NULL) { return -1; } - if (!clip->is_valid() || clip->is_blank()) { + if (!original->is_valid() || original->is_blank()) { // invalid clip - delete clip; + delete original; return -1; } - Mlt::Producer clipparent = clip->parent(); + Mlt::Producer clipparent = original->parent(); if (!clipparent.is_valid() || clipparent.is_blank()) { // invalid clip - delete clip; + delete original; return -1; } + delete original; QString serv = clipparent.get("mlt_service"); QString id = clipparent.get("id"); @@ -2022,8 +2023,8 @@ if (strobe > 1) url.append("&strobe=" + QString::number(strobe)); Mlt::Producer *slowprod = m_slowmotionProducers.value(url); if (!slowprod || slowprod->get_producer() == NULL) { - char *tmp = decodedString(url); - slowprod = new Mlt::Producer(*m_mltProfile, "framebuffer", tmp); + char *tmp = decodedString("framebuffer:" + url); + slowprod = new Mlt::Producer(*m_mltProfile, 0, tmp); if (strobe > 1) slowprod->set("strobe", strobe); delete[] tmp; QString producerid = "slowmotion:" + id + ':' + QString::number(speed); @@ -2088,8 +2089,8 @@ if (strobe > 1) url.append("&strobe=" + QString::number(strobe)); Mlt::Producer *slowprod = m_slowmotionProducers.value(url); if (!slowprod || slowprod->get_producer() == NULL) { - char *tmp = decodedString(url); - slowprod = new Mlt::Producer(*m_mltProfile, "framebuffer", tmp); + char *tmp = decodedString("framebuffer:" + url); + slowprod = new Mlt::Producer(*m_mltProfile, 0, tmp); delete[] tmp; slowprod->set("strobe", strobe); QString producerid = "slowmotion:" + id.section(':', 1, 1) + ':' + QString::number(speed); @@ -2127,7 +2128,6 @@ mlt_service_unlock(service.get_service()); } - delete clip; if (clipIndex + 1 == trackPlaylist.count()) mltCheckLength(&tractor); m_isBlocked = false; return newLength; @@ -2302,7 +2302,6 @@ for (int i = 0; i < filtersList.count(); i++) { clipService.attach(*(filtersList.at(i))); } - m_isBlocked = false; if (doRefresh) refresh(); return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-01 11:48:33
|
Revision: 3970 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3970&view=rev Author: j-b-m Date: 2009-10-01 11:48:21 +0000 (Thu, 01 Oct 2009) Log Message: ----------- Fix possible crash when moving invalid clip: http://kdenlive.org/mantis/view.php?id=1169 Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-10-01 06:40:15 UTC (rev 3969) +++ trunk/kdenlive/src/renderer.cpp 2009-10-01 11:48:21 UTC (rev 3970) @@ -2768,10 +2768,10 @@ bool checkLength = false; if (endTrack == startTrack) { Mlt::Producer *clipProducer = trackPlaylist.replace_with_blank(clipIndex); - if (!trackPlaylist.is_blank_at(moveEnd) || clipProducer->is_blank()) { + if (!trackPlaylist.is_blank_at(moveEnd) || !clipProducer || clipProducer->is_blank()) { // error, destination is not empty if (!trackPlaylist.is_blank_at(moveEnd)) trackPlaylist.insert_at(moveStart, clipProducer, 1); - delete clipProducer; + if (clipProducer) delete clipProducer; //int ix = trackPlaylist.get_clip_index_at(moveEnd); kDebug() << "// ERROR MOVING CLIP TO : " << moveEnd; mlt_service_unlock(service.get_service()); @@ -2797,10 +2797,10 @@ return false; } else { Mlt::Producer *clipProducer = trackPlaylist.replace_with_blank(clipIndex); - if (clipProducer->is_blank()) { + if (!clipProducer || clipProducer->is_blank()) { // error, destination is not empty //int ix = trackPlaylist.get_clip_index_at(moveEnd); - delete clipProducer; + if (clipProducer) delete clipProducer; kDebug() << "// ERROR MOVING CLIP TO : " << moveEnd; mlt_service_unlock(service.get_service()); m_isBlocked--; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-05 17:23:40
|
Revision: 4002 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4002&view=rev Author: j-b-m Date: 2009-10-05 17:23:32 +0000 (Mon, 05 Oct 2009) Log Message: ----------- Fix forced aspect ratio for clips with speed effect Modified Paths: -------------- trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-10-05 17:18:26 UTC (rev 4001) +++ trunk/kdenlive/src/renderer.cpp 2009-10-05 17:23:32 UTC (rev 4002) @@ -1587,6 +1587,10 @@ m_slowmotionProducers.insert(url, slowprod); } prod = slowprod; + if (prod == NULL || !prod->is_valid()) { + mlt_service_unlock(service.get_service()); + return -1; + } } Mlt::Producer *clip = prod->cut((int) info.cropStart.frames(m_fps), (int)(info.endPos - info.startPos + info.cropStart).frames(m_fps) - 1); @@ -2023,7 +2027,6 @@ delete original; return -1; } - delete original; QString serv = clipparent.get("mlt_service"); QString id = clipparent.get("id"); @@ -2044,6 +2047,16 @@ tmp = decodedString(producerid); slowprod->set("id", tmp); delete[] tmp; + // copy producer props + tmp = original->parent().get("force_aspect_ratio"); + if (tmp != NULL) slowprod->set("force_aspect_ratio", tmp); + delete[] tmp; + tmp = original->parent().get("threads"); + if (tmp != NULL) slowprod->set("threads", tmp); + delete[] tmp; + tmp = original->parent().get("video_index"); + if (tmp != NULL) slowprod->set("video_index", tmp); + delete[] tmp; m_slowmotionProducers.insert(url, slowprod); } Mlt::Producer *clip = trackPlaylist.replace_with_blank(clipIndex); @@ -2110,6 +2123,16 @@ tmp = decodedString(producerid); slowprod->set("id", tmp); delete[] tmp; + // copy producer props + tmp = original->parent().get("force_aspect_ratio"); + if (tmp != NULL) slowprod->set("force_aspect_ratio", tmp); + delete[] tmp; + tmp = original->parent().get("threads"); + if (tmp != NULL) slowprod->set("threads", tmp); + delete[] tmp; + tmp = original->parent().get("video_index"); + if (tmp != NULL) slowprod->set("video_index", tmp); + delete[] tmp; m_slowmotionProducers.insert(url, slowprod); } Mlt::Producer *clip = trackPlaylist.replace_with_blank(clipIndex); @@ -2139,7 +2162,7 @@ mlt_service_unlock(service.get_service()); } - + delete original; if (clipIndex + 1 == trackPlaylist.count()) mltCheckLength(&tractor); m_isBlocked = false; return newLength; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |