+ void initEffect(QDomElement effect, int diff = 0);
+
+ /** @brief Gets all keyframes.
+ * @param index Number of the effect
+ * @return a list of strings of keyframes (one string per param) */
+ QStringList keyframes(const int index);
+
+ /** @brief Sets params with keyframes and updates the visible keyframes.
+ * @param ix Number of the effect
+ * @param keyframes a list of strings of keyframes (one string per param), which should be used */
+ void setKeyframes(const int ix, const QStringList keyframes);
+ void setEffectList(const EffectsList effectList);
+ void setSpeed(const double speed, int strobe);
+ double speed() const;
+ int strobe() const;
+ GenTime maxDuration() const;
+ GenTime speedIndependantCropStart() const;
+ GenTime speedIndependantCropDuration() const;
+ const ItemInfo speedIndependantInfo() const;
+ int hasEffect(const QString &tag, const QString &id) const;
+
+ /** @brief Makes sure all keyframes are in the clip's cropped duration.
+ * @return Whether or not changes were made */
+ bool checkKeyFrames();
+ QPixmap startThumb() const;
+ QPixmap endThumb() const;
+ void setVideoOnly(bool force);
+ void setAudioOnly(bool force);
+ bool isVideoOnly() const;
+ bool isAudioOnly() const;
+
+ /** @brief Adjusts the keyframe values to fit a clip resizement.
+ * @param previous Old crop value
+ * @param current New crop value
+ * @param fromStart true = crop from start, false = crop from end
+ * @return true if anything was modified */
+ bool checkEffectsKeyframesPos(const int previous, const int current, bool fromStart);
+ void insertKeyframe(QDomElement effect, int pos, int val);
+ void movedKeyframe(QDomElement effect, int oldpos, int newpos, double value);
+ void updateKeyframes(QDomElement effect);
+ /** @brief Updates the keyframes in the pan and zoom effect to fit the clips cropDuration.
+ * @param width Render width
+ * @param height Render height
+ * @param cut (optional) if clip was cut, cut position relative to the original's clip position
+ * @return List of the pan and zoom effects indexes
+ *
+ * Can be used for all effects using mlt_geometry with keyframes, but at the moment Pan & Zoom is the only one. */
+ QList <int> updatePanZoom(int width, int height, int cut = 0);
+
+ /** Returns the necessary (audio, video, general) producer.
+ * @param track Track of the requested producer
+ * @param trackSpecific (default = true) Whether to return general producer for a specific track.
+ * @return Fitting producer
+ * Which producer is returned depends on the type of this clip (audioonly, videoonly, normal) */
+ Mlt::Producer *getProducer(int track, bool trackSpecific = true);