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

📄 mpeg4_nodes.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
		info->far_ptr = & ((M_AudioBuffer *) node)->startTime;		return GF_OK;	case 3:		info->name = "stopTime";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((M_AudioBuffer *) node)->stopTime;		return GF_OK;	case 4:		info->name = "children";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SFAudioNode;		info->far_ptr = & ((M_AudioBuffer *)node)->children;		return GF_OK;	case 5:		info->name = "numChan";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFINT32;		info->far_ptr = & ((M_AudioBuffer *) node)->numChan;		return GF_OK;	case 6:		info->name = "phaseGroup";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFINT32;		info->far_ptr = & ((M_AudioBuffer *) node)->phaseGroup;		return GF_OK;	case 7:		info->name = "length";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFFLOAT;		info->far_ptr = & ((M_AudioBuffer *) node)->length;		return GF_OK;	case 8:		info->name = "duration_changed";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((M_AudioBuffer *) node)->duration_changed;		return GF_OK;	case 9:		info->name = "isActive";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((M_AudioBuffer *) node)->isActive;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 AudioBuffer_get_field_index_by_name(char *name){	if (!strcmp("loop", name)) return 0;	if (!strcmp("pitch", name)) return 1;	if (!strcmp("startTime", name)) return 2;	if (!strcmp("stopTime", name)) return 3;	if (!strcmp("children", name)) return 4;	if (!strcmp("numChan", name)) return 5;	if (!strcmp("phaseGroup", name)) return 6;	if (!strcmp("length", name)) return 7;	if (!strcmp("duration_changed", name)) return 8;	if (!strcmp("isActive", name)) return 9;	return -1;	}static Bool AudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){	switch (FieldIndex) {	case 1:		*AType = 7;		*QType = 0;		*b_min = FLT2FIX(0);		*b_max = FIX_MAX;		return 1;	case 2:		*AType = 0;		*QType = 0;		*b_min = FLT2FIX(0);		*b_max = FIX_MAX;		return 1;	case 3:		*AType = 0;		*QType = 0;		*b_min = FLT2FIX(0);		*b_max = FIX_MAX;		return 1;	case 5:		*AType = 0;		*QType = 13;		*QT13_bits = 8;		*b_min = FLT2FIX(0);		*b_max = FLT2FIX(255);		return 1;	case 7:		*AType = 0;		*QType = 0;		*b_min = FLT2FIX(0);		*b_max = FIX_MAX;		return 1;	default:		return 0;	}}GF_Node *AudioBuffer_Create(){	M_AudioBuffer *p;	GF_SAFEALLOC(p, M_AudioBuffer);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioBuffer);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "AudioBuffer";	((GF_Node *)p)->sgprivate->node_del = AudioBuffer_Del;	((GF_Node *)p)->sgprivate->get_field_count = AudioBuffer_get_field_count;	((GF_Node *)p)->sgprivate->get_field = AudioBuffer_get_field;#endif	/*default field values*/	p->pitch = FLT2FIX(1);	p->startTime = 0;	p->stopTime = 0;	p->numChan = 1;	p->phaseGroup.vals = (SFInt32*)malloc(sizeof(SFInt32)*1);	p->phaseGroup.count = 1;	p->phaseGroup.vals[0] = 1;	p->length = FLT2FIX(0.0);	return (GF_Node *)p;}/*	AudioClip Node deletion*/static void AudioClip_Del(GF_Node *node){	M_AudioClip *p = (M_AudioClip *) node;	gf_sg_sfstring_del(p->description);	gf_sg_mfurl_del(p->url);	gf_node_free((GF_Node *) p);}static const u16 AudioClip_Def2All[] = { 0, 1, 2, 3, 4, 5};static const u16 AudioClip_In2All[] = { 0, 1, 2, 3, 4, 5};static const u16 AudioClip_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};static const u16 AudioClip_Dyn2All[] = { 2};static u32 AudioClip_get_field_count(GF_Node *node, u8 IndexMode){	switch(IndexMode) {	case GF_SG_FIELD_CODING_IN: return 6;	case GF_SG_FIELD_CODING_DEF: return 6;	case GF_SG_FIELD_CODING_OUT: return 8;	case GF_SG_FIELD_CODING_DYN: return 1;	default:		return 8;	}}static GF_Err AudioClip_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){	switch(IndexMode) {	case GF_SG_FIELD_CODING_IN:		*allField = AudioClip_In2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_DEF:		*allField = AudioClip_Def2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_OUT:		*allField = AudioClip_Out2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_DYN:		*allField = AudioClip_Dyn2All[inField];		return GF_OK;	default:		return GF_BAD_PARAM;	}}static GF_Err AudioClip_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "description";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFSTRING;		info->far_ptr = & ((M_AudioClip *) node)->description;		return GF_OK;	case 1:		info->name = "loop";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((M_AudioClip *) node)->loop;		return GF_OK;	case 2:		info->name = "pitch";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFFLOAT;		info->far_ptr = & ((M_AudioClip *) node)->pitch;		return GF_OK;	case 3:		info->name = "startTime";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((M_AudioClip *) node)->startTime;		return GF_OK;	case 4:		info->name = "stopTime";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((M_AudioClip *) node)->stopTime;		return GF_OK;	case 5:		info->name = "url";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((M_AudioClip *) node)->url;		return GF_OK;	case 6:		info->name = "duration_changed";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((M_AudioClip *) node)->duration_changed;		return GF_OK;	case 7:		info->name = "isActive";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((M_AudioClip *) node)->isActive;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 AudioClip_get_field_index_by_name(char *name){	if (!strcmp("description", name)) return 0;	if (!strcmp("loop", name)) return 1;	if (!strcmp("pitch", name)) return 2;	if (!strcmp("startTime", name)) return 3;	if (!strcmp("stopTime", name)) return 4;	if (!strcmp("url", name)) return 5;	if (!strcmp("duration_changed", name)) return 6;	if (!strcmp("isActive", name)) return 7;	return -1;	}static Bool AudioClip_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){	switch (FieldIndex) {	case 2:		*AType = 7;		*QType = 0;		*b_min = FLT2FIX(0);		*b_max = FIX_MAX;		return 1;	default:		return 0;	}}GF_Node *AudioClip_Create(){	M_AudioClip *p;	GF_SAFEALLOC(p, M_AudioClip);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioClip);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "AudioClip";	((GF_Node *)p)->sgprivate->node_del = AudioClip_Del;	((GF_Node *)p)->sgprivate->get_field_count = AudioClip_get_field_count;	((GF_Node *)p)->sgprivate->get_field = AudioClip_get_field;#endif	/*default field values*/	p->pitch = FLT2FIX(1.0);	p->startTime = 0;	p->stopTime = 0;	return (GF_Node *)p;}/*	AudioDelay Node deletion*/static void AudioDelay_Del(GF_Node *node){	M_AudioDelay *p = (M_AudioDelay *) node;	gf_sg_vrml_parent_destroy((GF_Node *) p);		gf_sg_mfint32_del(p->phaseGroup);	gf_node_free((GF_Node *) p);}static const u16 AudioDelay_Def2All[] = { 2, 3, 4, 5};static const u16 AudioDelay_In2All[] = { 0, 1, 2, 3};static const u16 AudioDelay_Out2All[] = { 2, 3};static u32 AudioDelay_get_field_count(GF_Node *node, u8 IndexMode){	switch(IndexMode) {	case GF_SG_FIELD_CODING_IN: return 4;	case GF_SG_FIELD_CODING_DEF: return 4;	case GF_SG_FIELD_CODING_OUT: return 2;	case GF_SG_FIELD_CODING_DYN: return 0;	default:		return 6;	}}static GF_Err AudioDelay_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){	switch(IndexMode) {	case GF_SG_FIELD_CODING_IN:		*allField = AudioDelay_In2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_DEF:		*allField = AudioDelay_Def2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_OUT:		*allField = AudioDelay_Out2All[inField];		return GF_OK;	default:		return GF_BAD_PARAM;	}}static GF_Err AudioDelay_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "addChildren";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((M_AudioDelay *)node)->on_addChildren;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SFAudioNode;		info->far_ptr = & ((M_AudioDelay *)node)->addChildren;		return GF_OK;	case 1:		info->name = "removeChildren";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((M_AudioDelay *)node)->on_removeChildren;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SFAudioNode;		info->far_ptr = & ((M_AudioDelay *)node)->removeChildren;		return GF_OK;	case 2:		info->name = "children";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SFAudioNode;		info->far_ptr = & ((M_AudioDelay *)node)->children;		return GF_OK;	case 3:		info->name = "delay";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((M_AudioDelay *) node)->delay;		return GF_OK;	case 4:		info->name = "numChan";		info->eventType = GF_SG_EVENT_FIELD;		info->fieldType = GF_SG_VRML_SFINT32;		info->far_ptr = & ((M_AudioDelay *) node)->numChan;		return GF_OK;	case 5:		info->name = "phaseGroup";		info->eventType = GF_SG_EVENT_FIELD;		info->fieldType = GF_SG_VRML_MFINT32;		info->far_ptr = & ((M_AudioDelay *) node)->phaseGroup;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 AudioDelay_get_field_index_by_name(char *name){	if (!strcmp("addChildren", name)) return 0;	if (!strcmp("removeChildren", name)) return 1;	if (!strcmp("children", name)) return 2;	if (!strcmp("delay", name)) return 3;	if (!strcmp("numChan", name)) return 4;	if (!strcmp("phaseGroup", name)) return 5;	return -1;	}static Bool AudioDelay_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){	switch (FieldIndex) {	case 4:		*AType = 0;		*QType = 13;		*QT13_bits = 8;		*b_min = FLT2FIX(0);		*b_max = FLT2FIX(255);		return 1;	case 5:		*AType = 0;		*QType = 13;		*QT13_bits = 8;		*b_min = FLT2FIX(0);		*b_max = FLT2FIX(255);		return 1;	default:		return 0;	}}GF_Node *AudioDelay_Create(){	M_AudioDelay *p;	GF_SAFEALLOC(p, M_AudioDelay);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioDelay);	gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "AudioDelay";	((GF_Node *)p)->sgprivate->node_del = AudioDelay_Del;	((GF_Node *)p)->sgprivate->get_field_count = AudioDelay_get_field_count;	((GF_Node *)p)->sgprivate->get_field = AudioDelay_get_field;#endif	/*default field values*/	p->delay = 0;	p->numChan = 1;	return (GF_Node *)p;}/*	AudioFX Node deletion*/static void AudioFX_Del(GF_Node *node){	M_AudioFX *p = (M_AudioFX *) node;	gf_sg_vrml_parent_destroy((GF_Node *) p);		gf_sg_sfstring_del(p->orch);	gf_sg_sfstring_del(p->score);	gf_sg_mffloat_del(p->params);	gf_sg_mfint32_del(p->phaseGroup);	gf_node_free((GF_Node *) p);}static const u16 AudioFX_Def2All[] = { 2, 3, 4, 5, 6, 7};static const u16 AudioFX_In2All[] = { 0, 1, 2, 3, 4, 5};static const u16 AudioFX_Out2All[] = { 2, 3, 4, 5};static const u16 AudioFX_Dyn2All[] = { 5};static u32 AudioFX_get_field_count(GF_Node *node, u8 IndexMode){	switch(IndexMode) {	case GF_SG_FIELD_CODING_IN: return 6;	case GF_SG_FIELD_CODING_DEF: return 6;	case GF_SG_FIELD_CODING_OUT: return 4;	case GF_SG_FIELD_CODING_DYN: return 1;	default:		return 8;	}}static GF_Err AudioFX_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){	switch(IndexMode) {	case GF_SG_FIELD_CODING_IN:		*allField = AudioFX_In2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_DEF:		*allField = AudioFX_Def2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_OUT:		*allField = AudioFX_Out2All[inField];		return GF_OK;	case GF_SG_FIELD_CODING_DYN:		*allField = AudioFX_Dyn2All[inField];		return GF_OK;	default:		return GF_BAD_PARAM;	}}static GF_Err AudioFX_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "addChildren";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((M_AudioFX *)node)->on_addChildren;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SFAudioNode;		info->far_ptr = & ((M_AudioFX *)node)->addChildren;		return GF_OK;	case 1:		info->name = "removeChildren";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((M_AudioFX *)node)->on_removeChildren;		info->fieldType = GF_SG_VRML_MFNODE;

⌨️ 快捷键说明

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