X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frenderer.h;h=39690902bb8cd32b2d151ce1d7a166fcc8f78d5f;hb=e9e42d4ed596ccad15f4bbe5e5da0580b73fd4ff;hp=69626224bb5bb16c53b7968fd655d60c153b11b1;hpb=37ae2ecef6f5c1c2e6643e83aa34213da0f5176b;p=kdenlive diff --git a/src/renderer.h b/src/renderer.h index 69626224..39690902 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -31,6 +31,7 @@ #include "gentime.h" #include "definitions.h" +#include "abstractmonitor.h" #include "mlt/framework/mlt_types.h" #include @@ -40,9 +41,7 @@ #include #include #include - - -class Render; +#include class QTimer; class QPixmap; @@ -73,7 +72,8 @@ private: QString m_message; }; -class Render: public QObject + +class Render: public AbstractRender { Q_OBJECT public: @@ -87,12 +87,11 @@ Q_OBJECT public: Render(const QString & rendererName, int winid, QString profile = QString(), QWidget *parent = 0); /** @brief Destroy the MLT Renderer. */ - ~Render(); + virtual ~Render(); /** @brief Seeks the renderer clip to the given time. */ void seek(GenTime time); void seek(int time); - void seekToFrame(int pos); void seekToFrameDiff(int diff); int m_isBlocked; @@ -123,7 +122,7 @@ Q_OBJECT public: * The speed is relative to normal playback, e.g. 1.0 is normal speed, 0.0 * is paused, -1.0 means play backwards. It does not specify start/stop */ void play(double speed); - void switchPlay(); + void switchPlay(bool play); void pause(); /** @brief Stops playing. @@ -131,7 +130,7 @@ Q_OBJECT public: void stop(const GenTime & startTime); int volume() const; - QImage extractFrame(int frame_position, int width = -1, int height = -1); + QImage extractFrame(int frame_position, QString path = QString(), int width = -1, int height = -1); /** @brief Plays the scene starting from a specific time. * @param startTime time to start playing the scene from */ @@ -167,7 +166,11 @@ Q_OBJECT public: /** @brief Turns on or off on screen display. */ void refreshDisplay(); - int resetProfile(const QString profileName); + /** @brief Change the Mlt PROFILE + * @param profileName The MLT profile name + * @param dropSceneList If true, the current playlist will be deleted + * . */ + int resetProfile(const QString profileName, bool dropSceneList = false); double fps() const; /** @brief Returns the width of a frame for this profile. */ @@ -261,11 +264,13 @@ Q_OBJECT public: void showAudio(Mlt::Frame&); /** @brief This property is used to decide if the renderer should send audio data for monitoring. */ bool analyseAudio; - /** @brief This property is used to decide if the renderer should convert it's frames to QImage for use in other Kdenlive widgets. */ - bool sendFrameForAnalysis; + QList checkTrackSequence(int); void sendFrameUpdate(); + /** @brief Returns a pointer to the main producer. */ + Mlt::Producer *getProducer(); + private: /** @brief The name of this renderer. @@ -296,6 +301,7 @@ private: QString m_activeProfile; QTimer *m_osdTimer; + QMutex m_mutex; /** @brief A human-readable description of this renderer. */ int m_winid; @@ -343,14 +349,6 @@ signals: /** @brief The renderer started rendering. */ void rendering(const GenTime &); - /** @brief The rendering has finished. - @see consumer_frame_show - This signal seems to be useless; use renderPosition(int) instead --Granjow */ - void renderFinished(); - - /* @brief The current seek position has been changed by the renderer. - void positionChanged(const GenTime &);*/ - /** @brief An error occurred within this renderer. */ void error(const QString &, const QString &); void durationChanged(int); @@ -363,17 +361,16 @@ signals: * @param durationError Should be set to true if the proxy failed because it has not same length as original clip */ void removeInvalidProxy(const QString &id, bool durationError); - void refreshDocumentProducers(); + void refreshDocumentProducers(bool displayRatioChanged, bool fpsChanged); + + /** @brief If we will delete the producer, make sure to pause the monitor */ + void blockClipMonitor(const QString); /** @brief A frame's image has to be shown. * * Used in Mac OS X. */ void showImageSignal(QImage); void showAudioSignal(const QByteArray); - /** @brief The renderer refreshed the current frame, but no seeking was done. */ - void frameUpdated(QImage); - /** @brief This signal contains the audio of the current frame. */ - void audioSamplesSignal(const QVector&, int freq, int num_channels, int num_samples); public slots: @@ -402,6 +399,7 @@ public slots: void slotSplitView(bool doit); void slotSwitchFullscreen(); void slotSetVolume(int volume); + void seekToFrame(int pos); }; #endif