#ifndef HXVIDEOLIVESTREAM_H #define HXVIDEOLIVESTREAM_H #include "HxThread.h" #include "HxVideoFrame.h" #include #include typedef enum { Idling, Connecting, Connected, Disconnected } ConnectionStatus; typedef enum { LiveStream, File, }ConnectType; typedef void (*OnVideoStatusCallback)(QString uuid, ConnectionStatus status); typedef void (*OnVideoStreamCallback)(QString uuid, HxVideoFrame videoframe); class HxVideoLiveStream : public HxThread { Q_OBJECT public: HxVideoLiveStream(int millisecond = 10); virtual ~HxVideoLiveStream(); public: /** * @brief setUrl * @param url */ void set_url(QString url, ConnectType type = LiveStream); /** * @brief setUuid * @param uuid */ void set_uuid(QString uuid); /** * @brief set_status_callback * @param callback */ void set_status_callback(OnVideoStatusCallback callback); /** * @brief set_stream_callback * @param callback */ void set_stream_callback(OnVideoStreamCallback callback); /** * @brief connect * @return */ ConnectionStatus connect(); void pause(bool status); void position(int value); protected: void action() override; void continue_with() override; public: int64_t duartion; private: QString url; QString uuid; ConnectType m_type; bool m_pause = false; long long pts, dts; ConnectionStatus status = Idling; AVFormatContext *ifmt_ctx; OnVideoStatusCallback status_callback; OnVideoStreamCallback stream_callback; }; #endif // HXVIDEOLIVESTREAM_H