📄 mpeg4_nodes.c
字号:
info->NDTtype = NDT_SFAudioNode; info->far_ptr = & ((M_AudioFX *)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_AudioFX *)node)->children; return GF_OK; case 3: info->name = "orch"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFSTRING; info->far_ptr = & ((M_AudioFX *) node)->orch; return GF_OK; case 4: info->name = "score"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFSTRING; info->far_ptr = & ((M_AudioFX *) node)->score; return GF_OK; case 5: info->name = "params"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFFLOAT; info->far_ptr = & ((M_AudioFX *) node)->params; return GF_OK; case 6: info->name = "numChan"; info->eventType = GF_SG_EVENT_FIELD; info->fieldType = GF_SG_VRML_SFINT32; info->far_ptr = & ((M_AudioFX *) node)->numChan; return GF_OK; case 7: info->name = "phaseGroup"; info->eventType = GF_SG_EVENT_FIELD; info->fieldType = GF_SG_VRML_MFINT32; info->far_ptr = & ((M_AudioFX *) node)->phaseGroup; return GF_OK; default: return GF_BAD_PARAM; }}static s32 AudioFX_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("orch", name)) return 3; if (!strcmp("score", name)) return 4; if (!strcmp("params", name)) return 5; if (!strcmp("numChan", name)) return 6; if (!strcmp("phaseGroup", name)) return 7; return -1; }static Bool AudioFX_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){ switch (FieldIndex) { case 5: *AType = 7; *QType = 0; *b_min = FIX_MIN; *b_max = FIX_MAX; return 1; case 6: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(0); *b_max = FLT2FIX(255); return 1; case 7: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(0); *b_max = FLT2FIX(255); return 1; default: return 0; }}GF_Node *AudioFX_Create(){ M_AudioFX *p; GF_SAFEALLOC(p, M_AudioFX); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioFX); gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "AudioFX"; ((GF_Node *)p)->sgprivate->node_del = AudioFX_Del; ((GF_Node *)p)->sgprivate->get_field_count = AudioFX_get_field_count; ((GF_Node *)p)->sgprivate->get_field = AudioFX_get_field;#endif /*default field values*/ p->numChan = 1; return (GF_Node *)p;}/* AudioMix Node deletion*/static void AudioMix_Del(GF_Node *node){ M_AudioMix *p = (M_AudioMix *) node; gf_sg_vrml_parent_destroy((GF_Node *) p); gf_sg_mffloat_del(p->matrix); gf_sg_mfint32_del(p->phaseGroup); gf_node_free((GF_Node *) p);}static const u16 AudioMix_Def2All[] = { 2, 3, 4, 5, 6};static const u16 AudioMix_In2All[] = { 0, 1, 2, 3, 4};static const u16 AudioMix_Out2All[] = { 2, 3, 4};static const u16 AudioMix_Dyn2All[] = { 4};static u32 AudioMix_get_field_count(GF_Node *node, u8 IndexMode){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: return 5; case GF_SG_FIELD_CODING_DEF: return 5; case GF_SG_FIELD_CODING_OUT: return 3; case GF_SG_FIELD_CODING_DYN: return 1; default: return 7; }}static GF_Err AudioMix_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: *allField = AudioMix_In2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DEF: *allField = AudioMix_Def2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_OUT: *allField = AudioMix_Out2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DYN: *allField = AudioMix_Dyn2All[inField]; return GF_OK; default: return GF_BAD_PARAM; }}static GF_Err AudioMix_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_AudioMix *)node)->on_addChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SFAudioNode; info->far_ptr = & ((M_AudioMix *)node)->addChildren; return GF_OK; case 1: info->name = "removeChildren"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((M_AudioMix *)node)->on_removeChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SFAudioNode; info->far_ptr = & ((M_AudioMix *)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_AudioMix *)node)->children; return GF_OK; case 3: info->name = "numInputs"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFINT32; info->far_ptr = & ((M_AudioMix *) node)->numInputs; return GF_OK; case 4: info->name = "matrix"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFFLOAT; info->far_ptr = & ((M_AudioMix *) node)->matrix; return GF_OK; case 5: info->name = "numChan"; info->eventType = GF_SG_EVENT_FIELD; info->fieldType = GF_SG_VRML_SFINT32; info->far_ptr = & ((M_AudioMix *) node)->numChan; return GF_OK; case 6: info->name = "phaseGroup"; info->eventType = GF_SG_EVENT_FIELD; info->fieldType = GF_SG_VRML_MFINT32; info->far_ptr = & ((M_AudioMix *) node)->phaseGroup; return GF_OK; default: return GF_BAD_PARAM; }}static s32 AudioMix_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("numInputs", name)) return 3; if (!strcmp("matrix", name)) return 4; if (!strcmp("numChan", name)) return 5; if (!strcmp("phaseGroup", name)) return 6; return -1; }static Bool AudioMix_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){ switch (FieldIndex) { case 3: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(1); *b_max = FLT2FIX(255); return 1; case 4: *AType = 7; *QType = 0; *b_min = FLT2FIX(0); *b_max = FLT2FIX(1); return 1; case 5: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(0); *b_max = FLT2FIX(255); return 1; case 6: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(0); *b_max = FLT2FIX(255); return 1; default: return 0; }}GF_Node *AudioMix_Create(){ M_AudioMix *p; GF_SAFEALLOC(p, M_AudioMix); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioMix); gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "AudioMix"; ((GF_Node *)p)->sgprivate->node_del = AudioMix_Del; ((GF_Node *)p)->sgprivate->get_field_count = AudioMix_get_field_count; ((GF_Node *)p)->sgprivate->get_field = AudioMix_get_field;#endif /*default field values*/ p->numInputs = 1; p->numChan = 1; return (GF_Node *)p;}/* AudioSource Node deletion*/static void AudioSource_Del(GF_Node *node){ M_AudioSource *p = (M_AudioSource *) node; gf_sg_vrml_parent_destroy((GF_Node *) p); gf_sg_mfurl_del(p->url); gf_sg_mfint32_del(p->phaseGroup); gf_node_free((GF_Node *) p);}static const u16 AudioSource_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};static const u16 AudioSource_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};static const u16 AudioSource_Out2All[] = { 2, 3, 4, 5, 6, 7};static const u16 AudioSource_Dyn2All[] = { 4, 5};static u32 AudioSource_get_field_count(GF_Node *node, u8 IndexMode){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: return 8; case GF_SG_FIELD_CODING_DEF: return 8; case GF_SG_FIELD_CODING_OUT: return 6; case GF_SG_FIELD_CODING_DYN: return 2; default: return 10; }}static GF_Err AudioSource_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: *allField = AudioSource_In2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DEF: *allField = AudioSource_Def2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_OUT: *allField = AudioSource_Out2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DYN: *allField = AudioSource_Dyn2All[inField]; return GF_OK; default: return GF_BAD_PARAM; }}static GF_Err AudioSource_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_AudioSource *)node)->on_addChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SFAudioNode; info->far_ptr = & ((M_AudioSource *)node)->addChildren; return GF_OK; case 1: info->name = "removeChildren"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((M_AudioSource *)node)->on_removeChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SFAudioNode; info->far_ptr = & ((M_AudioSource *)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_AudioSource *)node)->children; return GF_OK; case 3: info->name = "url"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((M_AudioSource *) node)->url; return GF_OK; case 4: info->name = "pitch"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFFLOAT; info->far_ptr = & ((M_AudioSource *) node)->pitch; return GF_OK; case 5: info->name = "speed"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFFLOAT; info->far_ptr = & ((M_AudioSource *) node)->speed; return GF_OK; case 6: info->name = "startTime"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((M_AudioSource *) node)->startTime; return GF_OK; case 7: info->name = "stopTime"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((M_AudioSource *) node)->stopTime; return GF_OK; case 8: info->name = "numChan"; info->eventType = GF_SG_EVENT_FIELD; info->fieldType = GF_SG_VRML_SFINT32; info->far_ptr = & ((M_AudioSource *) node)->numChan; return GF_OK; case 9: info->name = "phaseGroup"; info->eventType = GF_SG_EVENT_FIELD; info->fieldType = GF_SG_VRML_MFINT32; info->far_ptr = & ((M_AudioSource *) node)->phaseGroup; return GF_OK; default: return GF_BAD_PARAM; }}static s32 AudioSource_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("url", name)) return 3; if (!strcmp("pitch", name)) return 4; if (!strcmp("speed", name)) return 5; if (!strcmp("startTime", name)) return 6; if (!strcmp("stopTime", name)) return 7; if (!strcmp("numChan", name)) return 8; if (!strcmp("phaseGroup", name)) return 9; return -1; }static Bool AudioSource_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 = 7; *QType = 0; *b_min = FLT2FIX(0); *b_max = FIX_MAX; return 1; case 5: *AType = 7; *QType = 0; *b_min = FLT2FIX(0); *b_max = FIX_MAX; return 1; case 8: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(0); *b_max = FLT2FIX(255); return 1; case 9: *AType = 0; *QType = 13; *QT13_bits = 8; *b_min = FLT2FIX(0); *b_max = FLT2FIX(255); return 1; default: return 0; }}GF_Node *AudioSource_Create(){ M_AudioSource *p; GF_SAFEALLOC(p, M_AudioSource); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSource); gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "AudioSource"; ((GF_Node *)p)->sgprivate->node_del = AudioSource_Del; ((GF_Node *)p)->sgprivate->get_field_count = AudioSource_get_field_count; ((GF_Node *)p)->sgprivate->get_field = AudioSource_get_field;#endif /*default field values*/ p->pitch = FLT2FIX(1); p->speed = FLT2FIX(1); p->startTime = 0; p->stopTime = 0; p->numChan = 1; return (GF_Node *)p;}/* AudioSwitch Node deletion*/static void AudioSwitch_Del(GF_Node *node){ M_AudioSwitch *p = (M_AudioSwitch *) node; gf_sg_vrml_parent_destroy((GF_Node *) p); gf_sg_mfint32_del(p->whichChoice); gf_sg_mfint32_del(p->phaseGroup); gf_node_free((GF_Node *) p);}static const u16 AudioSwitch_Def2All[] = { 2, 3, 4, 5};static const u16 AudioSwitch_In2All[] = { 0, 1, 2, 3};static const u16 AudioSwitch_Out2All[] = { 2, 3};static u32 AudioSwitch_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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -