1
0
Fork 0
VideoPlayer/src/MpvPlayerBackend.h

93 lines
2.5 KiB
C
Raw Normal View History

#ifndef MpvPlayerBackend_H
#define MpvPlayerBackend_H
2018-10-13 15:38:31 +01:00
#include <mpv/client.h>
#include <mpv/qthelper.hpp>
#include <mpv/render_gl.h>
2018-10-13 15:38:31 +01:00
#include <QObject>
#include <QOpenGLContext>
#include <QQuickFramebufferObject>
#include "enums.hpp"
2018-10-13 15:38:31 +01:00
class MpvRenderer;
class MpvPlayerBackend : public QQuickFramebufferObject
2018-10-13 15:38:31 +01:00
{
Q_OBJECT
mpv_handle* mpv;
mpv_render_context* mpv_gl;
bool onTop = false;
2018-10-13 15:38:31 +01:00
friend class MpvRenderer;
2018-10-13 15:38:31 +01:00
public:
static void on_update(void* ctx);
2018-10-13 15:38:31 +01:00
MpvPlayerBackend(QQuickItem* parent = 0);
virtual ~MpvPlayerBackend();
virtual Renderer* createRenderer() const;
2018-10-13 15:38:31 +01:00
public slots:
void launchAboutQt();
#ifdef DISCORD
void updateDiscord();
#endif
void togglePlayPause();
void toggleMute();
void nextAudioTrack();
void nextVideoTrack();
void nextSubtitleTrack();
void prevPlaylistItem();
void nextPlaylistItem();
void toggleOnTop();
2018-11-08 18:17:43 +00:00
void toggleStats();
QVariant getTracks() const;
2018-11-10 13:32:54 +00:00
QVariant getaudioDevices() const;
void setAudioDevice(const QString& name);
void addSpeed(const QVariant& speed);
void subtractSpeed(const QVariant& speed);
void changeSpeed(const QVariant& speedFactor);
void setSpeed(const QVariant& speed);
2018-11-07 17:22:18 +00:00
QVariant getTrack(const QString& track);
void setTrack(const QVariant& track, const QVariant& id);
void setVolume(const QVariant& volume);
void addVolume(const QVariant& volume);
void loadFile(const QVariant& filename);
void appendFile(const QVariant& filename);
void seek(const QVariant& seekTime);
2018-11-08 13:31:14 +00:00
void seekAbsolute(const QVariant& seekTime);
void command(const QVariant& params);
void setProperty(const QString& name, const QVariant& value);
void setOption(const QString& name, const QVariant& value);
QVariant getProperty(const QString& name) const;
QVariant createTimestamp(const QVariant& seconds) const;
2018-10-13 15:38:31 +01:00
signals:
void onUpdate();
void mpv_events();
void playStatusChanged(const Enums::PlayStatus& status);
void volumeStatusChanged(const Enums::VolumeStatus& status);
void volumeChanged(const int& volume);
void durationChanged(const double& duration);
void positionChanged(const double& position);
void cachedDurationChanged(const double& duration);
void playlistPositionChanged(const double& position);
void titleChanged(const QString& title);
void subtitlesChanged(const QString& subtitles);
void durationStringChanged(const QString& string);
void tracksChanged();
void audioDevicesChanged();
2018-10-13 15:38:31 +01:00
private slots:
void doUpdate();
void on_mpv_events();
void updateDurationString();
2018-10-13 15:38:31 +01:00
private:
void handle_mpv_event(mpv_event* event);
2018-10-13 15:38:31 +01:00
};
2018-10-21 13:00:25 +01:00
#endif