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

📄 decoder264.cpp

📁 h264编解码.用C++实现了图像的编解码功能。
💻 CPP
字号:
// Decoder264.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "Decoder264.h"
#include ".\ldecod\ldecod.h"
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}


// This is an example of an exported variable
DECODER264_API int nDecoder264=0;

// This is an example of an exported function.
DECODER264_API int fnDecoder264(void)
{
	return 42;
}

// This is the constructor of a class that has been exported.
// see Decoder264.h for the class definition
CDecoder264::CDecoder264()
{ 
	return; 
}
//解压完成事件处理函数
extern De_FrameFinish_t frameFinishhandler=NULL;
//错误事件
extern De_ErrHandler_t  errHandler=NULL;

extern bool b_display=false;		//是否显示
extern bool b_save=false;			//是否存储
//extern bool b_save;
//extern bool b_display;
void ErrHandFunc(char * errText,int errNum)
{
	if(errHandler!=NULL)
	{
		errHandler(errText,errNum);
	}
}

//////////////////////////////////////////////////////////////////////////
void FrameEndFunc(unsigned char* Y,unsigned char* U,unsigned char* V)
{
	if(frameFinishhandler!=NULL)
	{
		frameFinishhandler(Y,U,V);
	}
	else
	{
		ErrHandFunc("解压完成事件未注册",ERR_UNDEFINED_ENDDECODER);
	}
}
//解压初始化
extern DECODER264_API  int De_Init()
{
	picFormat=TRUE;
	b_save=false;
	return 0;						
}
//注册错误处理
extern  DECODER264_API  int De_RegErrHandler(De_ErrHandler_t errFunc)
{
	if(errFunc!=NULL)
	{
		errHandler=errFunc;
		return 0;
	}
	return -1;
}
//设置图形格式
extern DECODER264_API int De_SetQCIF(bool QCif)
{
	picFormat=QCif;
	return 0;
}
//设置是否存储 
extern  DECODER264_API  int De_SetSave(bool bSaveFile)
{
	if(saveFile==NULL||saveFile==""){
		b_save=false;
		return ERR_SAVEFILE_ERROR;
	}
	b_save=bSaveFile;
	return 0;		
}
//设置是否显示
extern  DECODER264_API  int De_SetDisplay(bool bDisplay)
{
	b_display=bDisplay;
	return 0;
}
//设置存储名
extern  DECODER264_API  int De_SetSaveFile(char* saveFileName)
{
	if(saveFileName!=NULL||saveFileName!="")
	{
		saveFile=saveFileName;
		return 0;
	}
	return ERR_SAVEFILE_ERROR;

}
//解压264数据流
// bstream,264数据流,size,数据流大小,pos数据流依稀位置,第一次调用时,设置Pos为0
extern  DECODER264_API  int De_DecoderFrame(char* bstream,int size)
{
	if(frameFinishhandler==NULL)
		return ERR_UNDEFINED_ENDDECODER;
	int position=0;
	h264dec_buf(bstream,size,position);
	return 0;
}
//注册解压后调用函数
extern  DECODER264_API  int De_RegDecoderEnd(De_FrameFinish_t De_FrameFinishFunc)
{
	if(De_FrameFinishFunc!=NULL)
	{
		frameFinishhandler=De_FrameFinishFunc;
		return 0;
	}
	return ERR_UNDEFINED_ENDDECODER;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -