+void DocClipBase::addCutZone(int in, int out, QString desc)
+{
+ CutZoneInfo info;
+ info.zone = QPoint(in, out);
+ info.description = desc;
+ for (int i = 0; i < m_cutZones.count(); i++)
+ if (m_cutZones.at(i).zone == info.zone) {
+ return;
+ }
+ m_cutZones.append(info);
+}
+
+bool DocClipBase::hasCutZone(QPoint p) const
+{
+ for (int i = 0; i < m_cutZones.count(); i++)
+ if (m_cutZones.at(i).zone == p) return true;
+ return false;
+}
+
+
+void DocClipBase::removeCutZone(int in, int out)
+{
+ QPoint p(in, out);
+ for (int i = 0; i < m_cutZones.count(); i++) {
+ if (m_cutZones.at(i).zone == p) {
+ m_cutZones.removeAt(i);
+ i--;
+ }
+ }
+}
+
+void DocClipBase::updateCutZone(int oldin, int oldout, int in, int out, QString desc)
+{
+ QPoint old(oldin, oldout);
+ for (int i = 0; i < m_cutZones.size(); ++i) {
+ if (m_cutZones.at(i).zone == old) {
+ CutZoneInfo info;
+ info.zone = QPoint(in, out);
+ info.description = desc;
+ m_cutZones.replace(i, info);
+ break;
+ }
+ }
+}
+
+QList <CutZoneInfo> DocClipBase::cutZones() const
+{
+ return m_cutZones;
+}
+
+bool DocClipBase::hasVideoCodec(const QString &codec) const
+{
+ Mlt::Producer *prod = NULL;
+ if (m_baseTrackProducers.count() == 0) return false;
+ for (int i = 0; i < m_baseTrackProducers.count(); i++) {
+ if (m_baseTrackProducers.at(i) != NULL) {
+ prod = m_baseTrackProducers.at(i);
+ break;
+ }
+ }
+
+ if (!prod) return false;
+ int default_video = prod->get_int("video_index");
+ char property[200];
+ snprintf(property, sizeof(property), "meta.media.%d.codec.name", default_video);
+ return prod->get(property) == codec;
+}
+
+bool DocClipBase::hasAudioCodec(const QString &codec) const
+{
+ Mlt::Producer *prod = NULL;
+ if (m_baseTrackProducers.count() == 0) return false;
+ for (int i = 0; i < m_baseTrackProducers.count(); i++) {
+ if (m_baseTrackProducers.at(i) != NULL) {
+ prod = m_baseTrackProducers.at(i);
+ break;
+ }
+ }
+ if (!prod) return false;
+ int default_video = prod->get_int("audio_index");
+ char property[200];
+ snprintf(property, sizeof(property), "meta.media.%d.codec.name", default_video);
+ return prod->get(property) == codec;
+}
+
+
+void DocClipBase::slotExtractImage(QList <int> frames)
+{
+ if (m_thumbProd == NULL) return;
+ m_thumbProd->extractImage(frames);
+}
+
+QImage DocClipBase::extractImage(int frame, int width, int height)
+{
+ if (m_thumbProd == NULL) return QImage();
+ QMutexLocker locker(&m_producerMutex);
+ return m_thumbProd->extractImage(frame, width, height);
+}
+
+