culturered_client/Common/VlcMediaListPlayer.h

56 lines
1.4 KiB
C
Raw Normal View History

2024-09-07 03:34:44 +00:00
#pragma once
#if USE_VLC
#include <mutex>
#include <QObject>
#include <QImage>
class VlcMediaListPlayer : public QObject {
Q_OBJECT
public:
enum PlayMode{
Default,
Loop,
Repeat
};
public:
VlcMediaListPlayer();
~VlcMediaListPlayer();
void SetResolution(int width, int height);
void SetMediaList(const QStringList& paths);
bool Play();
void Stop();
bool IsPlaying() const;
void SetPlayMode(PlayMode model);
signals:
void VideoDataOutput(QImage);
void Stopped();
void TimeChanged(qint64);
protected:
void OnPostionChangedCallback(float pos);
void OnTimeChangedCallback(qint64 pos);
private:
struct libvlc_media_player_t* vlcPlayer_{ nullptr };
struct libvlc_media_list_player_t* vlcListPlayer_{ nullptr };
struct libvlc_media_list_t* vlcMediaList_{ nullptr };
friend void* MediaListMediaCallbakLocak(void* opaque, void** planes);
friend void MediaListMediaCallbakUnLocak(void* opaque, void* picture, void* const* planes);
friend void OnMediaListVLCEvent(const struct libvlc_event_t* event, void* data);
//friend unsigned MediaSetup(void** opaque, char* chroma, unsigned* width, unsigned* height, unsigned* pitches, unsigned* lines);
std::mutex mutx_;
std::vector<uchar> pixels_;
int videoWidth_{ 0 };
int videoHeight_{ 0 };
};
#endif