#ifndef CFFMPEG_DECODE_H
#define CFFMPEG_DECODE_H

#include <QImage>
#include <QWidget>
#include <QPaintEvent>
#include <QThread>
#include <QPainter>
#include <QDebug>


extern "C"{
#include "libavcodec/avcodec.h"

#include <libavutil/channel_layout.h>
#include <libavutil/common.h>
#include <libavutil/frame.h>
#include <libavutil/samplefmt.h>
#include <libavutil/opt.h>
#include <libavutil/imgutils.h>
#include <libavutil/parseutils.h>
#include <libavutil/mem.h>

#include <libswscale/swscale.h>

#include <libavformat/avformat.h>
}


class Cffmpeg_decode: public QThread
{
public:
    explicit Cffmpeg_decode();
    ~Cffmpeg_decode();
    Q_OBJECT
public:



    void setUrl(QString url);

    bool open_input_file();
     bool  IsstopPlay= false;

protected:
    void run();

signals:
    void sendQImage(QImage);

private:
    AVFormatContext *fmtCtx       =NULL;
    const AVCodec         *videoCodec   =NULL;
    AVCodecContext  *videoCodecCtx=NULL;
    AVPacket        *pkt          = NULL;
    AVFrame         *yuvFrame     = NULL;
    AVFrame         *rgbFrame     = NULL;

    struct SwsContext *img_ctx=NULL;

    unsigned char *out_buffer=nullptr;

    int videoStreamIndex =-1;
    int numBytes = -1;



    QString _url;
};

#endif // CFFMPEG_DECODE_H