📄 mpeg4_nodes.c
字号:
/* * GPAC - Multimedia Framework C SDK * * Copyright (c) Jean Le Feuvre 2000-2005 * All rights reserved * * This file is part of GPAC / Scene Graph sub-project * * GPAC is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * GPAC is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * *//* DO NOT MOFIFY - File generated on GMT Fri Dec 22 19:18:45 2006 BY MPEG4Gen for GPAC Version 0.4.3-DEV*/#include <gpac/nodes_mpeg4.h>#include <gpac/internal/scenegraph_dev.h>/* Anchor Node deletion*/static void Anchor_Del(GF_Node *node){ M_Anchor *p = (M_Anchor *) node; gf_sg_vrml_parent_destroy((GF_Node *) p); gf_sg_sfstring_del(p->description); gf_sg_mfstring_del(p->parameter); gf_sg_mfurl_del(p->url); gf_node_free((GF_Node *) p);}static const u16 Anchor_Def2All[] = { 2, 3, 4, 5};static const u16 Anchor_In2All[] = { 0, 1, 2, 3, 4, 5, 6};static const u16 Anchor_Out2All[] = { 2, 3, 4, 5};static u32 Anchor_get_field_count(GF_Node *node, u8 IndexMode){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: return 7; case GF_SG_FIELD_CODING_DEF: return 4; case GF_SG_FIELD_CODING_OUT: return 4; case GF_SG_FIELD_CODING_DYN: return 0; default: return 7; }}static GF_Err Anchor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: *allField = Anchor_In2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DEF: *allField = Anchor_Def2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_OUT: *allField = Anchor_Out2All[inField]; return GF_OK; default: return GF_BAD_PARAM; }}static GF_Err Anchor_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_Anchor *)node)->on_addChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SF3DNode; info->far_ptr = & ((M_Anchor *)node)->addChildren; return GF_OK; case 1: info->name = "removeChildren"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((M_Anchor *)node)->on_removeChildren; info->fieldType = GF_SG_VRML_MFNODE; info->NDTtype = NDT_SF3DNode; info->far_ptr = & ((M_Anchor *)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_SF3DNode; info->far_ptr = & ((M_Anchor *)node)->children; return GF_OK; case 3: info->name = "description"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFSTRING; info->far_ptr = & ((M_Anchor *) node)->description; return GF_OK; case 4: info->name = "parameter"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFSTRING; info->far_ptr = & ((M_Anchor *) node)->parameter; 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_Anchor *) node)->url; return GF_OK; case 6: info->name = "activate"; info->eventType = GF_SG_EVENT_IN; info->on_event_in = ((M_Anchor *)node)->on_activate; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((M_Anchor *) node)->activate; return GF_OK; default: return GF_BAD_PARAM; }}static s32 Anchor_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("description", name)) return 3; if (!strcmp("parameter", name)) return 4; if (!strcmp("url", name)) return 5; if (!strcmp("activate", name)) return 6; return -1; }static Bool Anchor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){ switch (FieldIndex) { default: return 0; }}GF_Node *Anchor_Create(){ M_Anchor *p; GF_SAFEALLOC(p, M_Anchor); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_MPEG4_Anchor); gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "Anchor"; ((GF_Node *)p)->sgprivate->node_del = Anchor_Del; ((GF_Node *)p)->sgprivate->get_field_count = Anchor_get_field_count; ((GF_Node *)p)->sgprivate->get_field = Anchor_get_field;#endif /*default field values*/ return (GF_Node *)p;}/* AnimationStream Node deletion*/static void AnimationStream_Del(GF_Node *node){ M_AnimationStream *p = (M_AnimationStream *) node; gf_sg_mfurl_del(p->url); gf_node_free((GF_Node *) p);}static const u16 AnimationStream_Def2All[] = { 0, 1, 2, 3, 4};static const u16 AnimationStream_In2All[] = { 0, 1, 2, 3, 4};static const u16 AnimationStream_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};static const u16 AnimationStream_Dyn2All[] = { 1};static u32 AnimationStream_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 7; case GF_SG_FIELD_CODING_DYN: return 1; default: return 7; }}static GF_Err AnimationStream_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: *allField = AnimationStream_In2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DEF: *allField = AnimationStream_Def2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_OUT: *allField = AnimationStream_Out2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DYN: *allField = AnimationStream_Dyn2All[inField]; return GF_OK; default: return GF_BAD_PARAM; }}static GF_Err AnimationStream_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "loop"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((M_AnimationStream *) node)->loop; return GF_OK; case 1: info->name = "speed"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFFLOAT; info->far_ptr = & ((M_AnimationStream *) node)->speed; return GF_OK; case 2: info->name = "startTime"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((M_AnimationStream *) 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_AnimationStream *) node)->stopTime; return GF_OK; case 4: info->name = "url"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_MFURL; info->far_ptr = & ((M_AnimationStream *) node)->url; return GF_OK; case 5: info->name = "duration_changed"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFTIME; info->far_ptr = & ((M_AnimationStream *) node)->duration_changed; return GF_OK; case 6: info->name = "isActive"; info->eventType = GF_SG_EVENT_OUT; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((M_AnimationStream *) node)->isActive; return GF_OK; default: return GF_BAD_PARAM; }}static s32 AnimationStream_get_field_index_by_name(char *name){ if (!strcmp("loop", name)) return 0; if (!strcmp("speed", name)) return 1; if (!strcmp("startTime", name)) return 2; if (!strcmp("stopTime", name)) return 3; if (!strcmp("url", name)) return 4; if (!strcmp("duration_changed", name)) return 5; if (!strcmp("isActive", name)) return 6; return -1; }static Bool AnimationStream_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 = FIX_MIN; *b_max = FIX_MAX; return 1; default: return 0; }}GF_Node *AnimationStream_Create(){ M_AnimationStream *p; GF_SAFEALLOC(p, M_AnimationStream); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_MPEG4_AnimationStream);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "AnimationStream"; ((GF_Node *)p)->sgprivate->node_del = AnimationStream_Del; ((GF_Node *)p)->sgprivate->get_field_count = AnimationStream_get_field_count; ((GF_Node *)p)->sgprivate->get_field = AnimationStream_get_field;#endif /*default field values*/ p->speed = FLT2FIX(1.0); p->startTime = 0; p->stopTime = 0; return (GF_Node *)p;}/* Appearance Node deletion*/static void Appearance_Del(GF_Node *node){ M_Appearance *p = (M_Appearance *) node; gf_node_unregister((GF_Node *) p->material, (GF_Node *) p); gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p); gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p); gf_node_free((GF_Node *) p);}static const u16 Appearance_Def2All[] = { 0, 1, 2};static const u16 Appearance_In2All[] = { 0, 1, 2};static const u16 Appearance_Out2All[] = { 0, 1, 2};static u32 Appearance_get_field_count(GF_Node *node, u8 IndexMode){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: return 3; case GF_SG_FIELD_CODING_DEF: return 3; case GF_SG_FIELD_CODING_OUT: return 3; case GF_SG_FIELD_CODING_DYN: return 0; default: return 3; }}static GF_Err Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: *allField = Appearance_In2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DEF: *allField = Appearance_Def2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_OUT: *allField = Appearance_Out2All[inField]; return GF_OK; default: return GF_BAD_PARAM; }}static GF_Err Appearance_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "material"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFMaterialNode; info->far_ptr = & ((M_Appearance *)node)->material; return GF_OK; case 1: info->name = "texture"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFTextureNode; info->far_ptr = & ((M_Appearance *)node)->texture; return GF_OK; case 2: info->name = "textureTransform"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFNODE; info->NDTtype = NDT_SFTextureTransformNode; info->far_ptr = & ((M_Appearance *)node)->textureTransform; return GF_OK; default: return GF_BAD_PARAM; }}static s32 Appearance_get_field_index_by_name(char *name){ if (!strcmp("material", name)) return 0; if (!strcmp("texture", name)) return 1; if (!strcmp("textureTransform", name)) return 2; return -1; }static Bool Appearance_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits){ switch (FieldIndex) { default: return 0; }}GF_Node *Appearance_Create(){ M_Appearance *p; GF_SAFEALLOC(p, M_Appearance); if(!p) return NULL; gf_node_setup((GF_Node *)p, TAG_MPEG4_Appearance);#ifdef GF_NODE_USE_POINTERS ((GF_Node *)p)->sgprivate->name = "Appearance"; ((GF_Node *)p)->sgprivate->node_del = Appearance_Del; ((GF_Node *)p)->sgprivate->get_field_count = Appearance_get_field_count; ((GF_Node *)p)->sgprivate->get_field = Appearance_get_field;#endif /*default field values*/ return (GF_Node *)p;}/* AudioBuffer Node deletion*/static void AudioBuffer_Del(GF_Node *node){ M_AudioBuffer *p = (M_AudioBuffer *) node; gf_node_unregister_children((GF_Node *) p, p->children); gf_sg_mfint32_del(p->phaseGroup); gf_node_free((GF_Node *) p);}static const u16 AudioBuffer_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};static const u16 AudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};static const u16 AudioBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};static const u16 AudioBuffer_Dyn2All[] = { 1};static u32 AudioBuffer_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 10; case GF_SG_FIELD_CODING_DYN: return 1; default: return 10; }}static GF_Err AudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField){ switch(IndexMode) { case GF_SG_FIELD_CODING_IN: *allField = AudioBuffer_In2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DEF: *allField = AudioBuffer_Def2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_OUT: *allField = AudioBuffer_Out2All[inField]; return GF_OK; case GF_SG_FIELD_CODING_DYN: *allField = AudioBuffer_Dyn2All[inField]; return GF_OK; default: return GF_BAD_PARAM; }}static GF_Err AudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info){ switch (info->fieldIndex) { case 0: info->name = "loop"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFBOOL; info->far_ptr = & ((M_AudioBuffer *) node)->loop; return GF_OK; case 1: info->name = "pitch"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFFLOAT; info->far_ptr = & ((M_AudioBuffer *) node)->pitch; return GF_OK; case 2: info->name = "startTime"; info->eventType = GF_SG_EVENT_EXPOSED_FIELD; info->fieldType = GF_SG_VRML_SFTIME;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -