/** * 叶海辉 * QQ群121376426 * http://blog.yundiantech.com/ */ #ifndef NALUPARSING_H #define NALUPARSING_H #include <stdint.h> #include <stdlib.h> #include "h264.h" #include "h265.h" #include<list> #include <QMutex> using namespace std; enum T_NALU_TYPE { T_NALU_H264 = 0, T_NALU_H265, }; typedef list<uchar> LISTINT; typedef struct { T_NALU_TYPE type; union{ T_H264_NALU h264Nalu; T_H265_NALU h265Nalu; }nalu; } T_NALU; class NALUParsing { public: NALUParsing(); void setVideoType(T_NALU_TYPE type){mVideoType = type;} int inputH264Data(uint8_t *buf,int len); //输入h264数据 ///从H264数据中查找出一帧数据 T_NALU* getNextFrame(); private: QMutex mutex; uchar *mH264Buffer; int mBufferSize; void bufferCopy(uchar* start,uchar* end,size_t lenght); T_NALU_TYPE mVideoType; //类型 区分是264还是265 public: bool lock; static T_NALU *AllocNALU(int buffersize, T_NALU_TYPE type); static void FreeNALU(T_NALU *n); }; #endif // H264READER_H