pix.fill(Qt::black);
return pix;
}
- Mlt::Producer *mlt_producer = m_mltProducer->cut(frame_position, frame_position + 1);
- return KThumb::getFrame(m_mltProducer, -1, width, height);
+ //Mlt::Producer *mlt_producer = m_mltProducer->cut(frame_position, frame_position + 1);
+ return KThumb::getFrame(m_mltProducer, frame_position, width, height);
/*Mlt::Filter m_convert(*m_mltProfile, "avcolour_space");
m_convert.set("forced", mlt_image_rgb24a);
mlt_producer->attach(m_convert);
}
/** Create the producer from the Westley QDomDocument */
+#if 0
void Render::initSceneList() {
kDebug() << "-------- INIT SCENE LIST ------_";
QDomDocument doc;
QString tmp = QString("<westley><producer resource=\"colour\" colour=\"red\" id=\"red\" /><tractor><multitrack><playlist></playlist><playlist></playlist><playlist /><playlist /><playlist></playlist></multitrack></tractor></westley>");*/
setSceneList(doc, 0);
}
-
+#endif
/** Create the producer from the Westley QDomDocument */
void Render::setSceneList(QDomDocument list, int position) {
setSceneList(list.toString(), position);
if (m_mltProducer) {
m_mltProducer->set_speed(0.0);
m_mltProducer->set("out", m_mltProducer->get_length() - 1);
+ kDebug() << m_mltProducer->get_length();
}
kDebug() << "///////////// RENDER STOP3-------";
}
void Render::play(double speed, const GenTime & startTime,
const GenTime & stopTime) {
- kDebug() << "///////////// RENDER PLAY3-------" << speed;
+ kDebug() << "///////////// RENDER PLAY3-------" << speed << stopTime.frames(m_fps);
if (!m_mltProducer)
return;
m_mltProducer->set("out", stopTime.frames(m_fps));
void Render::mltCheckLength() {
//kDebug()<<"checking track length: "<<track<<"..........";
- Mlt::Service service(m_mltProducer->get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
int trackNb = tractor.count();
double duration = 0;
Mlt::Producer trackProducer(tractor.track(0));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
duration = Mlt::Producer(trackPlaylist.get_producer()).get_playtime() - 1;
+ kDebug() << trackNb << " " << duration;
m_mltProducer->set("out", duration);
emit durationChanged(duration);
return;
}
}
+mlt_tractor Render::getTractor() {
+ Mlt::Service s1(m_mltProducer->get_service());
+ Mlt::Playlist pl(s1);
+
+ Mlt::Producer srv(pl.get_clip(0)->parent());
+ Mlt::Tractor tractor(srv);
+ return tractor.get_tractor();
+
+}
void Render::mltInsertClip(int track, GenTime position, QDomElement element) {
if (!m_mltProducer) {
return;
}
m_isBlocked = true;
- Mlt::Service service(parentProd.get_service());
- Mlt::Tractor tractor(service);
+ // Mlt::Service service(parentProd.get_service());
+ //Mlt::Tractor tractor(service);
QDomDocument doc;
doc.appendChild(doc.importNode(element, true));
QString resource = doc.toString();
+ Mlt::Tractor tractor(getTractor());
+
+
kDebug() << "/////// ADDING CLIP TMLNE: " << resource << " ON TRACK: " << track;
- Mlt::Producer trackProducer(tractor.track(track));
+ Mlt::Producer *ptmp = tractor.track(track);
+ kDebug() << ptmp->get("mlt_type") << ptmp->get("id");
+ Mlt::Producer trackProducer(*ptmp);
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
char *tmp = decodedString(resource);
Mlt::Producer clip(*m_mltProfile, "westley-xml", tmp);
void Render::mltCutClip(int track, GenTime position) {
m_isBlocked = true;
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
trackPlaylist.split_at(position.frames(m_fps));
void Render::mltRemoveClip(int track, GenTime position) {
m_isBlocked = true;
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
int clipIndex = trackPlaylist.get_clip_index_at(position.frames(m_fps));
void Render::mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh) {
- Mlt::Service service(m_mltProducer->parent().get_service());
-
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
//int clipIndex = trackPlaylist.get_clip_index_at(position.frames(m_fps));
void Render::mltAddEffect(int track, GenTime position, QMap <QString, QString> args, bool doRefresh) {
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
}
m_isBlocked = true;
// create filter
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
//int clipIndex = trackPlaylist.get_clip_index_at(position.frames(m_fps));
void Render::mltResizeClipEnd(int track, GenTime pos, GenTime in, GenTime out) {
m_isBlocked = true;
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
if (trackPlaylist.is_blank_at(pos.frames(m_fps) + 1))
}
void Render::mltChangeTrackState(int track, bool mute, bool blind) {
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
if (mute) {
void Render::mltResizeClipStart(int track, GenTime pos, GenTime moveEnd, GenTime moveStart, GenTime in, GenTime out) {
m_isBlocked = true;
- Mlt::Service service(m_mltProducer->parent().get_service());
+
int moveFrame = (moveEnd - moveStart).frames(m_fps);
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
if (trackPlaylist.is_blank_at(pos.frames(m_fps) - 1))
void Render::mltMoveClip(int startTrack, int endTrack, int moveStart, int moveEnd) {
m_isBlocked = true;
//m_mltConsumer->set("refresh", 0);
- Mlt::Service service(m_mltProducer->parent().get_service());
-
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Producer trackProducer(tractor.track(startTrack));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
int clipIndex = trackPlaylist.get_clip_index_at(moveStart + 1);
mlt_service_base;
void Render::mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args) {
- Mlt::Service service(m_mltProducer->parent().get_service());
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
for (int track = 0;track < 10;track++) {
Mlt::Producer *trackprod = tractor.track(track);
if (!trackprod)
}
void Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args) {
-#if 1
- Mlt::Service service(m_mltProducer->parent().get_service());
+#if 0
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
for (int track = 0;track < 10;track++) {
Mlt::Producer *trackprod = tractor.track(track);
if (!trackprod)
mltSavePlaylist();
#else
m_isBlocked = true;
- Mlt::Service service(m_mltProducer->parent().get_service());
-
- Mlt::Tractor tractor(service);
+ Mlt::Tractor tractor(getTractor());
Mlt::Field *field = tractor.field();
char *transId = decodedString(tag);
Mlt::Transition *transition = new Mlt::Transition(*m_mltProfile, transId);
delete[] transId;
m_isBlocked = false;
refresh();
+ mltSavePlaylist();
#endif
}
fileConsumer->set("resource", "/tmp/playlist.westley");
Mlt::Service service(m_mltProducer->get_service());
- Mlt::Tractor tractor(service);
-
fileConsumer->connect(service);
fileConsumer->start();