h264codec.h

来自「本程序基于ffmpeg库里的编解码器,并且vc 平台下的调试运行成功」· C头文件 代码 · 共 91 行

H
91
字号
#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 + =
减小字号Ctrl + -
显示快捷键?