⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h264codec.h

📁 本程序基于ffmpeg库里的编解码器,并且vc 平台下的调试运行成功
💻 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 + -