Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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;
	}
}
Пример #4
0
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;
}