103 lines
2.0 KiB
C++
Executable File
103 lines
2.0 KiB
C++
Executable File
/**
|
|
* @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 <BaseTsd.h>
|
|
typedef SSIZE_T ssize_t;
|
|
#endif
|
|
|
|
#include <vlc/vlc.h>
|
|
#include <QObject>
|
|
#include <QThread>
|
|
#include <NGLLogger/INGLLogger.h>
|
|
#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
|