📄 h264codec.h
字号:
#pragma once
#include "avformat.h"
typedef unsigned char BYTE;
struct S_EncParam
{
CodecID codec_id;
PixelFormat in_pixFmt;
int nWidth;
int nHeight;
int nFrameRate;
int nBitRate;
S_EncParam()
{
codec_id = CODEC_ID_H264;
in_pixFmt = PIX_FMT_YUV420P;
nWidth = 176;
nHeight = 144;
nFrameRate = 15;
nBitRate = 64000; // 64000
}
S_EncParam(S_EncParam* pParam)
{
codec_id = pParam->codec_id;
in_pixFmt = pParam->in_pixFmt;
nWidth = pParam->nWidth;
nHeight = pParam->nHeight;
nFrameRate = pParam->nFrameRate;
nBitRate = pParam->nBitRate;
}
};
class __declspec( dllexport ) CH264Enc
{
public:
CH264Enc(void);
~CH264Enc(void);
protected:
AVFrame *picture;
uint8_t *video_outbuf;
int video_outbuf_size;
AVCodecContext *ctx;
// void Init(S_EncParam* pParam);
void Cleanup(void);
AVFrame* alloc_picture(int pix_fmt, int width, int height);
public:
int EncVideoFrame(BYTE* pInBuf, int nInBufSize, BYTE* pOutBuf);
void Init();
void Init(S_EncParam* pParam);
};
class __declspec( dllexport ) CH264Dec
{
public:
CH264Dec(void);
~CH264Dec(void);
void Init(void);
void Cleanup(void);
protected:
AVCodecContext *ctx;
AVFrame *picture;
// AVCodec *codec;
uint8_t *video_outbuf;
int video_outbuf_size;
AVFrame* alloc_picture(int pix_fmt, int width, int height);
void smartAV_dumptest_yuv(BYTE*buffer,AVPicture *pic,int width,int height);
public:
int DecVideoFrame(BYTE* pInBuf, int nInBufSize, BYTE* pOutBuf);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -