Files
qt5-legatus-legacy/Lts/Tools/VideoImport/audio_video_widget_p.h
T
2026-08-13 18:33:10 +02:00

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