static GF_Err TTD_SetCapabilities(GF_BaseDecoder *plug, const GF_CodecCapability capability) { TTDPriv *priv = (TTDPriv *)plug->privateStack; if (capability.CapCode==GF_CODEC_SHOW_SCENE) { if (capability.cap.valueInt) { TTD_ResetDisplay(priv); TTD_UpdateSizeInfo(priv); gf_scene_register_extra_graph(priv->inlineScene, priv->sg, 0); } else { gf_scene_register_extra_graph(priv->inlineScene, priv->sg, 1); } } return GF_OK; }
static GF_Err VTT_SetCapabilities(GF_BaseDecoder *plug, GF_CodecCapability capability) { VTTDec *vttdec = (VTTDec *)plug->privateStack; if (capability.CapCode==GF_CODEC_ABORT) { /* TODO */ } else if (capability.CapCode==GF_CODEC_SHOW_SCENE) { if (capability.cap.valueInt) { VTT_UpdateSizeInfo(vttdec); gf_scene_register_extra_graph(vttdec->scene, vttdec->sg, GF_FALSE); } else { gf_scene_register_extra_graph(vttdec->scene, vttdec->sg, GF_TRUE); } } return GF_OK; }
static void VTT_CleanExtraScene(VTTDec *vttdec) { /* Cleaning scene graph related data */ if (vttdec->sg) { gf_scene_register_extra_graph(vttdec->scene, vttdec->sg, GF_TRUE); gf_sg_del(vttdec->sg); vttdec->sg = NULL; } }
static GF_Err TTD_DetachStream(GF_BaseDecoder *plug, u16 ES_ID) { TTDPriv *priv = (TTDPriv *)plug->privateStack; if (!priv->nb_streams) return GF_BAD_PARAM; gf_scene_register_extra_graph(priv->inlineScene, priv->sg, 1); gf_node_unregister((GF_Node *) priv->ts_blink, NULL); gf_node_unregister((GF_Node *) priv->process_blink, NULL); gf_node_unregister((GF_Node *) priv->ts_scroll, NULL); gf_node_unregister((GF_Node *) priv->process_scroll, NULL); gf_sg_del(priv->sg); priv->sg = NULL; if (priv->cfg) gf_odf_desc_del((GF_Descriptor *) priv->cfg); priv->cfg = NULL; priv->nb_streams = 0; gf_list_del(priv->blink_nodes); return GF_OK; }