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

📄 rvmdm.h

📁 h.248协议源码
💻 H
📖 第 1 页 / 共 4 页
字号:
	}
}
$*/
typedef void (*RvMdmTermAddToContextCB)(struct RvMdmTerm_* x,RvMdmContext* context);

/*$
{callback:
	{name: RvMdmTermMoveFromContextCB}	
	{include: rvmdm.h}
	{description:
		{p: Called to report when the termination has been moved to a different active
		    context.}
	}
	{proto: void (*RvMdmTermMoveFromContextCB)(RvMdmTerm* x,RvMdmContext* newContext,RvMdmContext* oldContext);
	}
	{params:
		{param: {n:x} {d:termination.}}
		{param: {n:newContext} {d:The new context.}}
		{param: {n:oldContext} {d:The old context.}}
	}
	{notes:
		{note: 
			Register only if the application needs to explicitly track the association between a 
			termination and the context where it is active.
		}
	}
}
$*/
typedef void (*RvMdmTermMoveFromContextCB)(struct RvMdmTerm_* x,RvMdmContext* oldContext);

/*$
{callback:
	{name: RvMdmTermRemoveFromContextCB}	
	{include: rvmdm.h}
	{description:
		{p: Called to report when the termination is no longer in an active
		    context.}
	}
	{proto: void (*RvMdmTermRemoveFromContextCB)(RvMdmTerm* x,RvMdmContext* context);
	}
	{params:
		{param: {n:x} {d:termination.}}
		{param: {n:context} {d:The former context.}}
	}
	{notes:
		{note: 
			Register only if the application needs to explicitly track the association between a 
			termination and the context where it is active.
		}
	}
}
$*/
typedef void (*RvMdmTermRemoveFromContextCB)(struct RvMdmTerm_* x,RvMdmContext* context);

/*------------------------------------------------------------------------------*/
/* XTerm Callback types                                                         */ 
/*------------------------------------------------------------------------------*/
/*$
{private_callback:
	{name: RvMdmXTermProcessEventCB}	
	{include: rvmdm.h}
	{description:
		{p: Function type of callback to process events.}

	}
	{proto: void (*RvMdmXTermProcessEventCB)(RvMdmXTerm* term,
											 const char* id,const char* pkg,
											 RvMdmMediaStream* media,RvMdmParameterList * args);
	}
	{params:
		{param: {n:xterm} {d:A pointer to the concrete termination.}}
		{param: {n:id} {d:The event id.}}
		{param: {n:pkg} {d:The pkg id.}}
		{param: {n:media} {d:The media stream where the event was detected.}}
		{param: {n:args} {d:The event arguments.}}
	}
}
$*/
typedef void (*RvMdmXTermProcessEventCB)(RvMdmXTerm* term,
										 const char* pkg,const char* id,
										 RvMdmMediaStream* media,RvMdmParameterList * args);

/*$
{private_callback:
	{name: RvMdmXTermSignalCompletedCB}
	{include: rvmdm.h}
	{description:
		{p: Report that a signal has played to its completion. 
			This function should be called when the signal was applied using the 
			"PlaySignal" callback with the "report completion" flag set to true,
			or for a signal applied with the "StartSignal" callback when the
			application stops the signal before receiving a "StopSignal" callback.}
	}
	{proto: void (*RvMdmXTermSignalCompletedCB)(RvMdmXTerm* xTerm,const char * pkg,const char * id,RvMdmMediaStream* media,RvBool normal);}
	{params:
		{param: {n:xTerm} {d:Pointer to concrete termination.}}
		{param: {n:id} {d:The signal id.}}
		{param: {n:pkg} {d:The package id.}}
		{param: {n:media} {d:The media where the signal was applied.}}
		{param: {n:normal} {d:Set to rvTrue if the signal completed normaly, rvFalse if
		                      was aborted or failed for any reason. For signals applied 
							  by calling the "StartSignal" callback, this should always be
							  rvFalse.}}
	}
}
$*/
typedef void (*RvMdmXTermSignalCompletedCB)(RvMdmXTerm* xTerm,const char * pkg,const char * id,RvMdmMediaStream* media,RvBool normal);

/*$
{private_callback:
	{name: RvMdmXTermGetTypeCB}
	{include: rvmdm.h}
	{description:
		{p: Gets the termination type.}
	}
	{proto: RvMdmTermType (*RvMdmXTermGetTypeCB)(RvMdmXTerm* xTerm);}
	{params:
		{param: {n:xTerm} {d:Pointer to concrete termination.}}
	}
	{returns: 
		The termination type (ephemeral,physical,undefined).
	}
}
$*/
typedef RvMdmTermType (*RvMdmXTermGetTypeCB)(RvMdmXTerm* xTerm);


/*$
{private_callback:
	{name: RvMdmXTermGetId}
	{include: rvmdm.h}
	{description:
		{p: Gets the termination id.}
	}
	{proto: const char* (*RvMdmXTermGetId)(RvMdmXTerm* xTerm);}
	{params:
		{param: {n:xTerm} {d:Pointer to concrete termination.}}
	}
	{returns: 
		The termination id.
	}
	{notes:
		{note: 
			For a temporary termination inside the SelectTermination callback
			this may return a partial id.
		}
	}
}
$*/
typedef const char* (*RvMdmXTermGetId)(RvMdmXTerm* xTerm);


typedef struct RvMdmXTermClbks_ {
	RvMdmXTermProcessEventCB		 processF;
	RvMdmXTermSignalCompletedCB      SignalCompletedF;
	RvMdmXTermGetTypeCB				 getTypeF;
	RvMdmXTermGetId					 getIdF;
} RvMdmXTermClbks;

/*------------------------------------------------------------------------------*/
/*$
{type:
	{name: RvMdmTermClass}
	{include: rvmdm.h}
	{description: 
		{p: Describes a type of terminations.}
		{p: All the terminations from the same class will share callbacks and capabilities.}
		{p: More than one class can be defined, to support different types of terminations
		    with different capabilities and different callback implementations.
		}
	}	
	{protected_methods:
		{method: void rvMdmTermClassConstructA_(RvMdmTermClass * c,RvAlloc * a);}
		{method: void rvMdmTermClassDestruct_(RvMdmTermClass * c);}
	}
	{methods:
		{method: void rvMdmTermClassSetUserData(RvMdmTermClass * c ,void * data);}
		{method: void rvMdmTermClassRegisterStartSignalCB(RvMdmTermClass* c,RvMdmTermStartSignalCB startSignalF);}
		{method: void rvMdmTermClassRegisterStopSignalCB(RvMdmTermClass* c, RvMdmTermStopSignalCB stopSignalF);}
		{method: void rvMdmTermClassRegisterPlaySignalCB(RvMdmTermClass* c, RvMdmTermPlaySignalCB playSignalF);}
		{method: void rvMdmTermClassRegisterCreateMediaCB(RvMdmTermClass* c,RvMdmTermCreateMediaCB createMediaF);}
		{method: void rvMdmTermClassRegisterDestroyMediaCB(RvMdmTermClass* c,RvMdmTermDestroyMediaCB DestroyMediaF);}
		{method: void rvMdmTermClassRegisterModifyMediaCB(RvMdmTermClass* c,RvMdmTermModifyMediaCB modifyMediaF);}
		{method: void rvMdmTermClassRegisterStatsCB(RvMdmTermClass* c,RvMdmTermStatsCB statisticsF);}
		{method: void rvMdmTermClassRegisterResetStatsCB(RvMdmTermClass* c,RvMdmTermResetStatsCB resetStatsF);}
		{method: void rvMdmTermClassRegisterSetStateCB(RvMdmTermClass* c,RvMdmTermSetStateCB setStateF);}
		{method: void rvMdmTermClassRegisterAddToContextCB(RvMdmTermClass* c,RvMdmTermAddToContextCB addToContextF);}
		{method: void rvMdmTermClassRegisterMoveFromContextCB(RvMdmTermClass* c,RvMdmTermMoveFromContextCB moveFromContextF);}
		{method: void rvMdmTermClassRegisterRemoveFromContextCB(RvMdmTermClass* c,RvMdmTermRemoveFromContextCB removeFromContextF);}
		{method: void rvMdmTermClassRegisterClearDetectEventCB(RvMdmTermClass* c,RvMdmTermClearDetectEventCB clearDetectF);}
		{method: void rvMdmTermClassAddMediaCapabilities(RvMdmTermClass *c, const RvSdpMsgList * localDescr, 
		  const RvSdpMsgList * remoteDescr,const RvMdmParameterList* localProperties);}
		{method: void rvMdmTermClassAddSupportedPkg(RvMdmTermClass *c,const char* name,unsigned int version);}

	}
}
$*/

typedef struct RvMdmTermClass_ {
	RvMdmTermStartSignalCB		startSignalF;
	RvMdmTermStopSignalCB		stopSignalF;
	RvMdmTermPlaySignalCB		playSignalF;
	RvMdmTermCreateMediaCB		createMediaF;
	RvMdmTermDestroyMediaCB		destroyMediaF;
	RvMdmTermModifyMediaCB		modifyMediaF;
	RvMdmTermStatsCB			statisticsF;
	RvMdmTermResetStatsCB       resetStatsF;
	RvMdmTermSetStateCB         setStateF;
	RvMdmMediaDescriptor		mediaCaps;
	RvMegacoPackagesDescriptor  pkgsCaps;
	/* Context callbacks */
	RvMdmTermAddToContextCB			addToContextF;
	RvMdmTermMoveFromContextCB		moveFromContextF;
	RvMdmTermRemoveFromContextCB	removeFromContextF;
	/* Disable event detection for all events called with rvMdmPackageRegisterEnableDetectEventCB() */
	RvMdmTermClearDetectEventCB     clearDetectEventF;

	void * classData;
	RvAlloc * a;
} RvMdmTermClass;

void rvMdmTermClassSetUserData(RvMdmTermClass * c ,void * data);

/* Signal callbacks registration */
void rvMdmTermClassRegisterStartSignalCB(RvMdmTermClass* c,RvMdmTermStartSignalCB startSignalF);
void rvMdmTermClassRegisterStopSignalCB (RvMdmTermClass* c, RvMdmTermStopSignalCB stopSignalF);
void rvMdmTermClassRegisterPlaySignalCB (RvMdmTermClass* c, RvMdmTermPlaySignalCB playSignalF);

/* Register callback to call when creating or deleting the media stream */
void rvMdmTermClassRegisterCreateMediaCB(RvMdmTermClass* c,RvMdmTermCreateMediaCB createMediaF);
void rvMdmTermClassRegisterDestroyMediaCB(RvMdmTermClass* c,RvMdmTermDestroyMediaCB destroyMediaF);

/* Callback to use when modifying media stream properties */
void rvMdmTermClassRegisterModifyMediaCB(RvMdmTermClass* c,RvMdmTermModifyMediaCB modifyMediaF);


/* Get statistics from terminations */
void rvMdmTermClassRegisterStatsCB(RvMdmTermClass* c,RvMdmTermStatsCB statisticsF);
void rvMdmTermClassRegisterResetStatsCB(RvMdmTermClass* c,RvMdmTermResetStatsCB resetStatsF);

/* Set function to update termination state for not stream dependent propierties
   Doesn't include buffering */
void rvMdmTermClassRegisterSetStateCB(RvMdmTermClass* c,RvMdmTermSetStateCB setStateF);

/* Capabilities */
void rvMdmTermClassAddMediaCapabilities(RvMdmTermClass *c,
										const RvSdpMsgList * localDescr,
										const RvSdpMsgList * remoteDescr,
										const RvMdmParameterList* localProperties);
void rvMdmTermClassAddSupportedPkg(RvMdmTermClass *c,const char* name,unsigned int version);

/* Select codecs */
/*void rvMdmTermClassRegisterNegotiateCB(RvMdmTermClass* c,RvMdmTermNegotiateCB negotiateF);*/

/* Context callbacks */
void rvMdmTermClassRegisterAddToContextCB(RvMdmTermClass* c,RvMdmTermAddToContextCB addToContextF);
void rvMdmTermClassRegisterMoveFromContextCB(RvMdmTermClass* c,RvMdmTermMoveFromContextCB moveFromContextF);
void rvMdmTermClassRegisterRemoveFromContextCB(RvMdmTermClass* c,RvMdmTermRemoveFromContextCB removeFromContextF);

/* Disable event detection */
void rvMdmTermClassRegisterClearDetectEventCB(RvMdmTermClass* c,RvMdmTermClearDetectEventCB clearDetectF);


/*Private Functions:*/
/* Constructor */
void rvMdmTermClassConstructA_(RvMdmTermClass * c,RvAlloc * a);
void rvMdmTermClassDestruct_(RvMdmTermClass * c);

RvMdmMediaDescriptor* rvMdmTermClassGetMediaCapabilites_(RvMdmTermClass * c);
RvMegacoPackagesDescriptor* rvMdmTermClassGetPackages_(RvMdmTermClass * c);


/*------------------------------------------------------------------------------*/
/*$
{type:
	{name: RvMdmTerm}
	{include: rvmdm.h}
	{description: {p: Describes a  termination.}}
	{protected_methods:
		{method: RvBool rvMdmTermUpdateState_(RvMdmTerm* term, RvMdmParameterList* stateParameters, OUT RvMdmError* mdmError);}
		{method: RvBool rvMdmTermCreateMediaStream_(RvMdmTerm* term,RvMdmMediaStream* media,RvMdmMediaStreamDescr* streamDescr,RvMdmError* mediaError);}
		{method: RvBool rvMdmTermModifyMediaStream_(RvMdmTerm* term,RvMdmMediaStream* media,RvMdmMediaStreamDescr* streamDescr,RvMdmError* mediaError);}
		{method: RvBool rvMdmTermDestroyMediaStream_(RvMdmTerm* term,RvMdmMediaStream* mediaStream,OUT RvMdmError* mdmError);}
		{method: void rvMdmTermConstruct_(RvMdmTerm* term,RvMdmTermClass* termClass,RvMdmXTermClbks* xTermClbks,RvMdmXTerm* xTerm);}
		{method: void rvMdmTermDestruct_(RvMdmTerm* term);}
		{method: RvMdmXTerm * rvMdmTermGetXTerm_(RvMdmTerm* term);}
		{method: RvBool rvMdmTermStartSignal_(RvMdmTerm* term,RvMdmSignal * s,OUT RvMdmError* mdmError);}
		{method: RvBool rvMdmTermStopSignal_(RvMdmTerm* term,RvMdmSignal * s,OUT RvMdmError* mdmError);}
		{method: RvBool rvMdmTermPlaySignal_(RvMdmTerm* term,RvMdmSignal * s,RvBool reportCompletion,OUT RvMdmError* mdmError);}
		{method: void rvMdmTermSetRequestedMedia_(RvMdmTerm* term,const RvMdmMediaDescriptor *  media);}
	}
	{methods:
		{method: void rvMdmTermProcessEvent(RvMdmTerm* term,const char* pkg,const char* id,RvMdmMediaStream* media,RvMdmParameterList * args);}
		{method: void rvMdmTermSignalCompleted(RvMdmTerm* term,const char* pkg,const char* id,RvMdmMediaStream* media,RvBool normal);}
		{method: void * rvMdmTermGetUserData(RvMdmTerm* term);}
		{method: void   rvMdmTermSetUserData(RvMdmTerm* term,void * data);}
		{method: void * rvMdmTermGetClassData(RvMdmTerm* term);}
		{method: RvMdmTermType rvMdmTermGetType(RvMdmTerm* term);}
		{method: const RvMdmMediaDescriptor * rvMdmTermGetMediaRequirements(RvMdmTerm* term);}
		{method: RvMdmContext* rvMdmTermGetContext(RvMdmTerm* term);}
		{method: const char* rvMdmTermGetId(RvMdmTerm* term);}
	}
}
$*/

typedef struct RvMdmTerm_ {
	RvMdmTermClass *             termClass;  
	void *                       userData;
	RvMdmXTermClbks *		     xTermClbks;
	RvMdmXTerm *                 xTerm;
	const RvMdmMediaDescriptor *    requestedMedia;
} RvMdmTerm;


/*Public:*/
/* Events processing */
void rvMdmTermProcessEvent(RvMdmTerm* term,const char* pkg,const char* id,RvMdmMediaStream* media,RvMdmParameterList * args);
void rvMdmTermSignalCompleted(RvMdmTerm* term,const char* pkg,const char* id,RvMdmMediaStream* media,RvBool normal);

void * rvMdmTermGetUserData(RvMdmTerm* term);
void    rvMdmTermSetUserData(RvMdmTerm* term,void * data);
/* This is the user data set at the class level */
void * rvMdmTermGetClassData(RvMdmTerm* term);
RvMdmTermType rvMdmTermGetType(RvMdmTerm* term);

const RvMdmMediaDescriptor * rvMdmTermGetMediaRequirements(RvMdmTerm* term);

/* Media related */
/* state doesn't include buffer ! */
RvBool rvMdmTermUpdateState_(RvMdmTerm* term,
							 RvMdmParameterList* stateParameters,
							 OUT RvMdmError* mdmError);

RvBool rvMdmTermCreateMediaStream_(RvMdmTerm* term,RvMdmMediaStream* media,RvMdmMediaStreamDescr* streamDescr,RvMdmError* mediaError);
RvBool rvMdmTermModifyMediaStream_(RvMdmTerm* term,RvMdmMediaStream* media,RvMdmMediaStreamDescr* streamDescr,RvMdmError* mediaError);
RvBool rvMdmTermDestroyMediaStream_(RvMdmTerm* term,RvMdmMediaStream* mediaStream,OUT RvMdmError* mdmError);


/* Stats */
void  rvMdmTermGetStats_(RvMdmTerm* term,RvMdmStatisticsDescriptor* stats);
void  rvMdmTermResetStats_(RvMdmTerm* term);

⌨️ 快捷键说明

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