/** * @RDE_HEADER@ * Handle Audio/Video output for video import through libvlc, private data * $Id$ * $HeadURL$ * $Author$ */ #pragma once #ifdef _MSC_VER // no ssize_t with msdn... #include typedef SSIZE_T ssize_t; #endif #include #include #include #include #include "audio_video_widget.h" class QUrl; class QFrame; class QTimer; namespace Ui { class audioVideoWidget; } namespace VideoImport { class AudioVideoInitThread; class AudioVideoWidget::Private : public QObject { Q_OBJECT public: explicit Private(QFrame *parent); ~Private(); bool initVLCInstance(bool bInInitThread = false); bool uninitVLCInstance(); bool initVLCPlayer(); bool uninitVLCPlayer(); bool playVLC(const QUrl &url); bool stopVLC(); void setAV(bool isAudio); protected Q_SLOTS: void onSlower(); void onFaster(); void on100pct(); void onPlay(); void onStop(); void onCut(); void onPositionChanged(int); void onVolumeChanged(int); void onUpdateGUI(); void onVLCInstanceInitializd(); void onRangeMinimumChanged(int); void onRangeMaximumChanged(int); signals: void signalCut(const QString &inTime, const QString &outTime); protected: void clearMediaList(); void playVLCInternal(); void onUpdateGUIWithState(libvlc_state_t overwrite_state); QString timeString(double curTime, bool exact = false); bool init(); void setRate(); libvlc_state_t getState() const; libvlc_instance_t *m_vlcinstance; libvlc_media_player_t *m_mPlayer; libvlc_media_list_player_t *m_mListPlayer; libvlc_media_list_t *m_mediaList; int currentSpeedIdx; QFrame *m_parent; QTimer *m_timer; int m_frames; AudioVideoInitThread *m_initThread; Ui::audioVideoWidget *ui; NGL::INGLLogger &m_logger; }; class AudioVideoInitThread final : public QThread { Q_OBJECT public: explicit AudioVideoInitThread(AudioVideoWidget::Private *p); protected: void run() override; protected: AudioVideoWidget::Private *m_private; }; } // namespace VideoImport