|
|
#include "stdafx.h"
typedef signed int MERET;
typedef unsigned long MPARAM;
typedef unsigned long UPARAM;
typedef MERET (*LPFUNC_NOPARAM)( void );
typedef MERET (*LPFUNC_1)( MPARAM mode, UPARAM dwPara1, UPARAM dwPara2 );
typedef MERET (*LPFUNC_2)( MPARAM mode, void *para1 );
#define ME_NOERR (0)
#define MC_INPUTFILE (1)
#define MC_INPDEV_FILE (0)
#define MG_COUNT_FRAME (15)
#define ME_EMPTYSTREAM (1)
static LPFUNC_NOPARAM MPGE_initializeWork;
static LPFUNC_NOPARAM MPGE_endCoder;
static LPFUNC_NOPARAM MPGE_detectConfigure;
static LPFUNC_NOPARAM MPGE_processFrame;
static LPFUNC_NOPARAM MPGE_closeCoder;
static LPFUNC_1 MPGE_setConfigure;
static LPFUNC_2 MPGE_getConfigure;
int main(int argc, char* argv[])
{
if ( argc == 1 ) {
printf( "%s\n", "ファイル名が指定されていません" );
return 1;
}
HINSTANCE lib;
lib = LoadLibrary( "gogo.dll" );
if ( lib == NULL ) {
printf( "%s\n", "gogo.dllのロードに失敗しました");
return 1;
}
MPGE_initializeWork = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_initializeWork" );
if ( MPGE_initializeWork == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_initializeWork のアドレスの取得に失敗しました");
return 1;
}
MPGE_endCoder = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_endCoder" );
if ( MPGE_endCoder == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_endCoder のアドレスの取得に失敗しました");
return 1;
}
MPGE_detectConfigure = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_detectConfigure" );
if ( MPGE_detectConfigure == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_detectConfigure のアドレスの取得に失敗しました");
return 1;
}
MPGE_processFrame = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_processFrame" );
if ( MPGE_processFrame == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_processFrame のアドレスの取得に失敗しました");
return 1;
}
MPGE_closeCoder = (LPFUNC_NOPARAM)GetProcAddress( lib, "MPGE_closeCoder" );
if ( MPGE_closeCoder == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_closeCoder のアドレスの取得に失敗しました");
return 1;
}
MPGE_setConfigure = (LPFUNC_1)GetProcAddress( lib, "MPGE_setConfigure" );
if ( MPGE_setConfigure == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_setConfigure のアドレスの取得に失敗しました");
return 1;
}
MPGE_getConfigure = (LPFUNC_2)GetProcAddress( lib, "MPGE_getConfigure" );
if ( MPGE_getConfigure == NULL ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_getConfigure のアドレスの取得に失敗しました");
return 1;
}
MERET ret;
// 初期化
ret = MPGE_initializeWork();
if ( ret ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_initializeWork による初期化に失敗しました");
return 1;
}
// 初期設定
MPGE_setConfigure( MC_INPUTFILE, MC_INPDEV_FILE, (UPARAM)argv[1] );
ret = MPGE_detectConfigure();
if ( ret == ME_NOERR ) {
// 処理
UPARAM nFrame, nCnt;
MPGE_getConfigure( MG_COUNT_FRAME, (UPARAM*)&nFrame );
printf( "フレーム数は %ld です\n", nFrame );
nCnt = 1;
ret = MPGE_processFrame();
while( ret == ME_NOERR ) {
ret = MPGE_processFrame();
nCnt = nCnt + 1;
}
if( ret != ME_EMPTYSTREAM ){
printf("エラーが発生しました errcode = %d : frame = %d\n", ret, nCnt );
}
}
else {
printf( "%s\n", "MPGE_detectConfigure による解析エラーが発生しました");
}
// 終了処理
MPGE_closeCoder();
MPGE_endCoder();
FreeLibrary( lib );
return 0;
}
| |
|
|
|
|
#include "stdafx.h"
typedef signed int MERET;
typedef unsigned long MPARAM;
typedef unsigned long UPARAM;
typedef MERET (*LPFUNC_NOPARAM)( void );
typedef MERET (*LPFUNC_1)( MPARAM mode, UPARAM dwPara1, UPARAM dwPara2 );
typedef MERET (*LPFUNC_2)( MPARAM mode, void *para1 );
#define ME_NOERR (0)
#define MC_INPUTFILE (1)
#define MC_INPDEV_FILE (0)
#define MG_COUNT_FRAME (15)
#define ME_EMPTYSTREAM (1)
static LPFUNC_NOPARAM MPGE_initializeWork;
static LPFUNC_NOPARAM MPGE_endCoder;
static LPFUNC_NOPARAM MPGE_detectConfigure;
static LPFUNC_NOPARAM MPGE_processFrame;
static LPFUNC_NOPARAM MPGE_closeCoder;
static LPFUNC_1 MPGE_setConfigure;
static LPFUNC_2 MPGE_getConfigure;
#define SetProc(ProcName,Type) \
ProcName = (Type)GetProcAddress( lib, #ProcName ); \
if ( ProcName == NULL ) { \
FreeLibrary( lib ); \
printf( "%s %s\n", #ProcName, "のアドレスの取得に失敗しました"); \
return 1; \
}
int main(int argc, char* argv[])
{
if ( argc == 1 ) {
printf( "%s\n", "ファイル名が指定されていません" );
return 1;
}
HINSTANCE lib;
lib = LoadLibrary( "gogo.dll" );
if ( lib == NULL ) {
printf( "%s\n", "gogo.dllのロードに失敗しました");
return 1;
}
SetProc(MPGE_initializeWork,LPFUNC_NOPARAM)
SetProc(MPGE_endCoder,LPFUNC_NOPARAM)
SetProc(MPGE_detectConfigure,LPFUNC_NOPARAM)
SetProc(MPGE_processFrame,LPFUNC_NOPARAM)
SetProc(MPGE_closeCoder,LPFUNC_NOPARAM)
SetProc(MPGE_setConfigure,LPFUNC_1)
SetProc(MPGE_getConfigure,LPFUNC_2)
MERET ret;
// 初期化
ret = MPGE_initializeWork();
if ( ret ) {
FreeLibrary( lib );
printf( "%s\n", "MPGE_initializeWork による初期化に失敗しました");
return 1;
}
// 初期設定
MPGE_setConfigure( MC_INPUTFILE, MC_INPDEV_FILE, (UPARAM)argv[1] );
ret = MPGE_detectConfigure();
if ( ret == ME_NOERR ) {
// 処理
UPARAM nFrame, nCnt;
MPGE_getConfigure( MG_COUNT_FRAME, (UPARAM*)&nFrame );
printf( "フレーム数は %ld です\n", nFrame );
nCnt = 1;
ret = MPGE_processFrame();
while( ret == ME_NOERR ) {
ret = MPGE_processFrame();
nCnt = nCnt + 1;
}
if( ret != ME_EMPTYSTREAM ){
printf("エラーが発生しました errcode = %d : frame = %d\n", ret, nCnt );
}
}
else {
printf( "%s\n", "MPGE_detectConfigure による解析エラーが発生しました");
}
// 終了処理
MPGE_closeCoder();
MPGE_endCoder();
FreeLibrary( lib );
return 0;
}
| |
|
|
|