93 lines
1.6 KiB
C
93 lines
1.6 KiB
C
|
#ifndef HXVIDEOLIVESTREAM_H
|
||
|
#define HXVIDEOLIVESTREAM_H
|
||
|
|
||
|
#include "HxThread.h"
|
||
|
#include "HxVideoFrame.h"
|
||
|
|
||
|
#include <QObject>
|
||
|
#include <QUuid>
|
||
|
|
||
|
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
|