m_id(id), m_description(QString()), m_refcount(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL), m_properties(QMap <QString, QString> ()), audioFrameChache(QMap<int, QMap<int, QByteArray> > ()), m_baseTrackProducers(QList <Mlt::Producer *>()), m_snapMarkers(QList < CommentedTime > ()) {
int type = xml.attribute("type").toInt();
m_clipType = (CLIPTYPE) type;
- m_name = xml.attribute("name");
QDomNamedNodeMap attributes = xml.attributes();
for (unsigned int i = 0; i < attributes.count(); i++) {
out = xml.attribute("duration").toInt();
if (out != 0) setDuration(GenTime(out, KdenliveSettings::project_fps()));
}
- if (m_name.isEmpty()) m_name = url.fileName();
+ if (!m_properties.contains("name")) m_properties.insert("name", url.fileName());
//if (!url.isEmpty() && QFile::exists(url.path()))
{
if (m_thumbProd) {
delete m_thumbProd;
}
+ if (m_audioTimer) {
+ m_audioTimer->stop();
+ delete m_audioTimer;
+ }
qDeleteAll(m_baseTrackProducers);
+ m_baseTrackProducers.clear();
+}
+
+void DocClipBase::setZone(QPoint zone) {
+ m_properties.insert("zone_in", QString::number(zone.x()));
+ m_properties.insert("zone_out", QString::number(zone.y()));
+}
+
+QPoint DocClipBase::zone() const {
+ QPoint zone;
+ zone.setX(m_properties.value("zone_in").toInt());
+ zone.setY(m_properties.value("zone_out", "50").toInt());
+ return zone;
}
void DocClipBase::slotCreateAudioTimer() {
return m_audioThumbCreated;
}
-void DocClipBase::setName(const QString name) {
- m_name = name;
-}
-
const QString & DocClipBase::name() const {
- return m_name;
+ return m_properties.value("name");
}
const QString &DocClipBase::getId() const {
if (track == -1 || (m_clipType != AUDIO && m_clipType != AV)) {
if (m_baseTrackProducers.count() == 0) return NULL;
int i;
- for (int i = 0; i < m_baseTrackProducers.count(); i++)
- if (m_baseTrackProducers.at(i) != NULL) return m_baseTrackProducers.at(i);
+ for (int i = 0; i < m_baseTrackProducers.count(); i++) {
+ if (m_baseTrackProducers.at(i) != NULL)
+ return m_baseTrackProducers.at(i);
+ }
return NULL;
}
if (track >= m_baseTrackProducers.count()) {
char *tmp = (char *) qstrdup(QString(getId() + '_' + QString::number(track)).toUtf8().data());
m_baseTrackProducers[track]->set("id", tmp);
delete[] tmp;
- if (KdenliveSettings::dropbframes()) {
+ if (KdenliveSettings::dropbframes() && m_baseTrackProducers.at(i)->get("skip_loop_filter") && strcmp(m_baseTrackProducers.at(i)->get("skip_loop_filter"), "all") == 0) {
m_baseTrackProducers[track]->set("skip_loop_filter", "all");
m_baseTrackProducers[track]->set("skip_frame", "bidir");
}
}
}
-QString DocClipBase::producerProperty(const char *name) const {
+const char *DocClipBase::producerProperty(const char *name) const {
for (int i = 0; i < m_baseTrackProducers.count(); i++) {
if (m_baseTrackProducers.at(i) != NULL) {
- char *tmp = m_baseTrackProducers.at(i)->get(name);
- QString result = QString(tmp);
- return result;
+ return m_baseTrackProducers.at(i)->get(name);
}
}
- return QString();
+ return NULL;
}