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

📄 routine.cpp

📁 基于NMS的video access 3.1编写的DEMO程序 实现2个功能 1) H324握手 2) VIDEO MAIL
💻 CPP
字号:
#include "routine.h"

DWORD NMSSTDCALL ErrorHandler(CTAHD ctahd, DWORD errorcode,char *errortext, char *func)
{
	if ( errorcode == CTAERR_FILE_NOT_FOUND )
		return errorcode;

	if (ctahd == NULL_CTAHD)
		printf("error in %s [ctahd=null]: %s (%#x)\n", func, errortext, errorcode );
	else
		printf("error in %s [ctahd=%#x]: %s (%#x)\n",func, ctahd, errortext, errorcode );

	return errorcode;
}

bool InitCTA()
{
	CTA_SERVICE_NAME  servicelist[] =
	{
		{ "adi", "adimgr" },
		{ "swi", "swimgr" },
		{ "msp", "mspmgr" },
		{ "oam", "oammgr" },
	};

	CTA_INIT_PARMS initparms = {0};
	ctaSetErrorHandler(ErrorHandler, NULL );

	initparms.size = sizeof(CTA_INIT_PARMS);
	initparms.ctacompatlevel = CTA_COMPATLEVEL;
	initparms.traceflags = CTA_TRACE_ENABLE;
	initparms.parmflags = CTA_PARM_MGMT_SHARED;

	if(ctaInitialize(servicelist, 4/*ARRAY_DIM(servicelist)*/, &initparms))
		return false;

	ctaLoadParameterFile(NULL_CTAHD, "cta.cfg");
	return true;
}

static void ShowH324Event(CTA_EVENT *eventp)
{
	char buffer[200];

	switch(eventp->id)
	{
	case H324EVN_START_DONE:
		strcpy(buffer, "H324EVN_START_DONE");
		break;
	case H324EVN_MEDIA_SETUP_DONE:
		strcpy(buffer, "H324EVN_MEDIA_SETUP_DONE");
		break;
	case H324EVN_REMOTE_CAPABILITIES:
		strcpy(buffer, "H324EVN_REMOTE_CAPABILITIES");
		break;
	case H324EVN_LCD:
		strcpy(buffer, "H324EVN_LCD");
		break;
	default:
		sprintf(buffer, "0x%x, 0x%x\n", eventp->id, eventp->value);
	}

	printf("[%d]\t%s, value = 0x%x\n", eventp->userid, buffer, eventp->value);
}

void ShowEvent(CTA_EVENT *eventp)
{
	#define FORMAT_BUFFER_SIZE 1000
	char format_buffer[FORMAT_BUFFER_SIZE];
	char *lineprefix = "\t";

	format_buffer[0] = '\0';
	if ( CTA_IS_USER_EVENT( eventp->id ) )
	{
		//Application specific event
		sprintf( format_buffer, "%sEvent: Application 0x%08X,  value: 0x%08x\n",
			lineprefix, eventp->id, eventp->value );
	}
	else if(CTA_PARM_SVCID(eventp->id) == H324_SVCID)
	{
		//sprintf(format_buffer, "H324EVN\t0x%x, 0x%x\n", eventp->id, eventp->value);
		ShowH324Event(eventp);
		return;
	}
	else
	{
		ctaFormatEvent(lineprefix, eventp, format_buffer, FORMAT_BUFFER_SIZE);
	}

	printf( "[%d]%s", eventp->userid, format_buffer );
}

static void ReleaseMSPEvent( CTA_EVENT *pevent )
{
	if( pevent->id      >=  MSPEVN_BASE       &&
        pevent->id      <=  MSPEVN_UNSOL_MAX  &&
        pevent->size    !=  0                 &&
        pevent->buffer  !=  NULL	)
	{
		mspReleaseBuffer( pevent->objHd, pevent->buffer);
	}
}

void ReleaseNMSEvent( CTA_EVENT *pevent )
{
	if( pevent->id      >=  MSPEVN_BASE   &&
        pevent->id      <=  MSPEVN_UNSOL_MAX)
	{
		ReleaseMSPEvent( pevent );
	}
	else
	{
		if(pevent->buffer != NULL)
		{
			ctaFreeBuffer ( pevent->buffer );
		}
	}
}

⌨️ 快捷键说明

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