X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frenderer.h;h=1dc03e46a957bee013ba6869cb40b7692e447be3;hb=09b3fec6024a3b654ac5fc48c56417ff561a6832;hp=1bdcba40c0352459fa358b334849dbe6089b3a43;hpb=7ac669f11fda219de3bba3063e775cd55e9c905e;p=kdenlive diff --git a/src/renderer.h b/src/renderer.h index 1bdcba40..1dc03e46 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -27,9 +27,7 @@ #include #include "gentime.h" -/*#include "docclipref.h" -#include "effectdesc.h" -#include "effectparamdescfactory.h"*/ +#include "definitions.h" /**Render encapsulates the client side of the interface to a renderer. From Kdenlive's point of view, you treat the Render object as the @@ -69,6 +67,7 @@ Q_OBJECT public: /** Seeks the renderer clip to the given time. */ void seek(GenTime time); void seekToFrame(int pos); + bool m_isBlocked; //static QPixmap getVideoThumbnail(char *profile, QString file, int frame, int width, int height); QPixmap getImageThumbnail(KUrl url, int width, int height); @@ -92,6 +91,7 @@ Q_OBJECT public: be list. */ void setSceneList(QDomDocument list, int position = 0); void setSceneList(QString playlist, int position = 0); + void setProducer(Mlt::Producer *producer, int position); QString sceneList(); void saveSceneList(QString path, QDomElement kdenliveData = QDomElement()); @@ -140,23 +140,25 @@ Q_OBJECT public: /** Turn on or off on screen display */ void refreshDisplay(); - int resetProfile(QString profile); + int resetProfile(); const double fps() const; const int renderWidth() const; const int renderHeight() const; + /** get display aspect ratio */ + const double dar() const; /** Playlist manipulation */ - void mltInsertClip(int track, GenTime position, QDomElement element); - void mltUpdateClip(int track, GenTime position, QDomElement element); + void mltInsertClip(ItemInfo info, QDomElement element, Mlt::Producer *prod); + void mltUpdateClip(ItemInfo info, QDomElement element, Mlt::Producer *prod); void mltCutClip(int track, GenTime position); - void mltResizeClipEnd(int track, GenTime pos, GenTime in, GenTime out); - void mltResizeClipStart(int track, GenTime pos, GenTime moveEnd, GenTime moveStart, GenTime in, GenTime out); - void mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart); - void mltMoveClip(int startTrack, int endTrack, int pos, int moveStart); - void mltRemoveClip(int track, GenTime position); - void mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh = true); - void mltAddEffect(int track, GenTime position, QMap args, bool doRefresh = true); - void mltEditEffect(int track, GenTime position, QMap args); + bool mltResizeClipEnd(ItemInfo info, GenTime clipDuration); + bool mltResizeClipStart(ItemInfo info, GenTime diff); + bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart); + bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart); + bool mltRemoveClip(int track, GenTime position); + bool mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh = true); + bool mltAddEffect(int track, GenTime position, QHash args, bool doRefresh = true); + bool mltEditEffect(int track, GenTime position, QHash args); void mltMoveEffect(int track, GenTime position, int oldPos, int newPos); void mltChangeTrackState(int track, bool mute, bool blind); void mltMoveTransition(QString type, int startTrack, int newTrack, int newTransitionTrack, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut); @@ -164,7 +166,17 @@ Q_OBJECT public: void mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool refresh = true); void mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml); void mltUpdateTransitionParams(QString type, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml); - + void mltAddClipTransparency(ItemInfo info, int transitiontrack, int id); + void mltMoveTransparency(int startTime, int endTime, int startTrack, int endTrack, int id); + void mltDeleteTransparency(int pos, int track, int id); + void mltResizeTransparency(int oldStart, int newStart, int newEnd, int track, int id); + + /** Change speed of a clip in playlist. To do this, we create a new "framebuffer" producer. + This new producer must have its "resource" param set to: video.mpg?0.6 where video.mpg is the path + to the clip and 0.6 is the speed in percents. The newly created producer will have it's + "id" parameter set to: "slowmotion:parentid:speed", where parentid is the id of the original clip + in the ClipManager list and speed is the current speed */ + int mltChangeClipSpeed(ItemInfo info, double speed, Mlt::Producer *prod); private: // Private attributes & methods /** The name of this renderer - useful to identify the renderes by what they do - e.g. background rendering, workspace monitor, etc... */ @@ -177,15 +189,15 @@ private: // Private attributes & methods double m_framePosition; double m_fps; uint m_monitorId; - bool m_generateScenelist; - bool m_isBlocked; + /** true when monitor is in split view (several tracks at the same time) */ + bool m_isSplitView; + Mlt::Producer *m_blackClip; /** Holds the path to on screen display profile */ QString m_osdProfile; QTimer *refreshTimer; QTimer *osdTimer; - QTimer *m_connectTimer; KUrl m_exportedFile; int exportDuration, firstExportFrame, lastExportFrame; @@ -201,6 +213,8 @@ private: // Private attributes & methods void closeMlt(); void mltCheckLength(bool reload = true); QMap mltGetTransitionParamsFromXml(QDomElement xml); + QMap m_slowmotionProducers; + void buildConsumer(); private slots: // Private slots /** refresh monitor display */ @@ -211,11 +225,11 @@ private slots: // Private slots signals: // Signals /** emitted when the renderer recieves a reply to a getFileProperties request. */ - void replyGetFileProperties(int clipId, const QMap < QString, QString > &, const QMap < QString, QString > &); + void replyGetFileProperties(const QString &clipId, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &); /** emitted when the renderer recieves a reply to a getImage request. */ - void replyGetImage(int , int, const QPixmap &, int, int); - void replyGetImage(int, const QPixmap &, int, int); + void replyGetImage(const QString & , int, const QPixmap &, int, int); + void replyGetImage(const QString &, const QPixmap &, int, int); /** Emitted when the renderer stops, either playing or rendering. */ void stopped(); @@ -232,7 +246,7 @@ signals: // Signals void durationChanged(int); void rendererPosition(int); void rendererStopped(int); - + void removeInvalidClip(const QString &); public slots: // Public slots /** Start Consumer */ @@ -247,11 +261,12 @@ public slots: // Public slots /** Wraps the VEML command of the same name. Requests the file properties for the specified url from the renderer. Upon return, the result will be emitted via replyGetFileProperties(). */ - void getFileProperties(const QDomElement &xml, int clipId); + void getFileProperties(const QDomElement &xml, const QString &clipId); void exportFileToFirewire(QString srcFileName, int port, GenTime startTime, GenTime endTime); static char *decodedString(QString str); void mltSavePlaylist(); + void slotSplitView(bool doit); }; #endif