📄 decoder264.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 + -