Skip to content

Commit

Permalink
Fix multi-layer compositing.
Browse files Browse the repository at this point in the history
  • Loading branch information
ddennedy committed Aug 20, 2014
1 parent a980c6c commit d5e6dc0
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions src/models/multitrackmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2177,10 +2177,7 @@ void MultitrackModel::addVideoTrack()
foreach (Track t, m_trackList) {
if (t.type == VideoTrackType) {
++v;
// Take first one because video tracks are stored in our track list
// in reverse order from MLT.
if (!last_mlt_index)
last_mlt_index = t.mlt_index;
last_mlt_index = t.mlt_index;
}
}
m_tractor->plant_transition(composite, last_mlt_index, i);
Expand Down Expand Up @@ -2251,8 +2248,8 @@ void MultitrackModel::load()

loadPlaylist();
addBlackTrackIfNeeded();
convertOldDoc();
refreshTrackList();
convertOldDoc();
consolidateBlanksAllTracks();
adjustBackgroundDuration();
getAudioLevels();
Expand Down Expand Up @@ -2426,6 +2423,21 @@ void MultitrackModel::convertOldDoc()
}
service.reset(service->producer());
}

// Change a_track of composite transitions to bottom video track.
int a_track = 0;
foreach (Track t, m_trackList) {
if (t.type == VideoTrackType)
a_track = t.mlt_index;
}
QString name = Settings.playerGPU()? "movit.overlay" : "frei0r.cairoblend";
foreach (Track t, m_trackList) {
if (t.type == VideoTrackType) {
QScopedPointer<Mlt::Transition> transition(getTransition(name, t.mlt_index));
if (transition && transition->get_a_track() != 0)
transition->set("a_track", a_track);
}
}
}

Mlt::Transition *MultitrackModel::getTransition(const QString &name, int trackIndex) const
Expand Down

0 comments on commit d5e6dc0

Please sign in to comment.