Qt实现播放H264视频
(2019-12-01 11:00:09)工具:
本文参考:
#include "qmyimagethread.h"
QMyImageThread::QMyImageThread(QObject *parent)
:
QThread(parent)
{
}
QMyImageThread::~QMyImageThread()
{
}
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
#include "libavutil/pixfmt.h"
#include "libavutil/imgutils.h"
}
typedef enum {
NALU_TYPE_SLICE
= 1,
NALU_TYPE_DPA
= 2,
NALU_TYPE_DPB
= 3,
NALU_TYPE_DPC
= 4,
NALU_TYPE_IDR
= 5,
NALU_TYPE_SEI
= 6,
NALU_TYPE_SPS
= 7,
NALU_TYPE_PPS
= 8,
NALU_TYPE_AUD
= 9,
NALU_TYPE_EOSEQ
= 10,
NALU_TYPE_EOSTREAM = 11,
NALU_TYPE_FILL
= 12,
} NaluType;
typedef enum {
NALU_PRIORITY_DISPOSABLE = 0,
NALU_PRIRITY_LOW
= 1,
NALU_PRIORITY_HIGH
= 2,
NALU_PRIORITY_HIGHEST
= 3
} NaluPriority;
typedef struct
{
int
startcodeprefix_len;
//! 4 for parameter sets and first slice in picture, 3 for
everything else (suggested)
unsigned
len;
//! Length of the NAL unit (Excluding the start code, which does
not belong to the NALU)
unsigned
max_size;
//! Nal Unit Buffer size
int
forbidden_bit;
//! should be always FALSE
int
nal_reference_idc;
//! NALU_PRIORITY_xxxx
int
nal_unit_type;
//!
NALU_TYPE_xxxx
char
*buf;
//! contains the first byte followed by the EBSP
} NALU_t;
FILE *h264bitstream = NULL;
//!< the bit stream file
int info2=0, info3=0;
static int FindStartCode2 (unsigned char *Buf){
if(Buf[0]!=0
|| Buf[1]!=0 || Buf[2] !=1) return 0; //0x000001?
else return
1;
}
static int FindStartCode3 (unsigned char *Buf){
if(Buf[0]!=0
|| Buf[1]!=0 || Buf[2] !=0 || Buf[3] !=1) return
0;//0x00000001?
QMyImageThread::QMyImageThread(QObject *parent)
{
}
QMyImageThread::~QMyImageThread()
{
}
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
#include "libavutil/pixfmt.h"
#include "libavutil/imgutils.h"
}
typedef enum {
} NaluType;
typedef enum {
} NaluPriority;
typedef struct
{
} NALU_t;
FILE *h264bitstream = NULL;
int info2=0, info3=0;
static int FindStartCode2 (unsigned char *Buf){
}
static int FindStartCode3 (unsigned char *Buf){