void gf_isom_box_del()

in src/isomedia/box_funcs.c [898:1552]


void gf_isom_box_del(GF_Box *a)
{
	if (!a) return;
	if (a->other_boxes) {
		gf_isom_box_array_del(a->other_boxes);
		a->other_boxes = NULL;
	}
	switch (a->type) {
	case GF_ISOM_BOX_TYPE_REFT:
		reftype_del(a);
		return;
	case GF_ISOM_BOX_TYPE_FREE:
	case GF_ISOM_BOX_TYPE_SKIP:
		free_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MDAT:
		mdat_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MOOV:
		moov_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MVHD:
		mvhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MDHD:
		mdhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_VMHD:
		vmhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SMHD:
		smhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HMHD:
		hmhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ODHD:
	case GF_ISOM_BOX_TYPE_CRHD:
	case GF_ISOM_BOX_TYPE_SDHD:
	case GF_ISOM_BOX_TYPE_NMHD:
		nmhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STBL:
		stbl_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DINF:
		dinf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_URL:
		url_del(a);
		return;
	case GF_ISOM_BOX_TYPE_URN:
		urn_del(a);
		return;
	case GF_ISOM_BOX_TYPE_CHPL:
		chpl_del(a);
		return;
	case GF_ISOM_BOX_TYPE_CPRT:
		cprt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_KIND:
		kind_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HDLR:
		hdlr_del(a);
		return;
	case GF_ISOM_BOX_TYPE_IODS:
		iods_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TRAK:
		trak_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MP4S:
		mp4s_del(a);
		return;
	case GF_4CC('2','6','4','b'):
	case GF_ISOM_BOX_TYPE_MP4V:
		mp4v_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MP4A:
		mp4a_del(a);
		return;
	case GF_ISOM_BOX_TYPE_GNRM:
		gnrm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_GNRV:
		gnrv_del(a);
		return;
	case GF_ISOM_BOX_TYPE_GNRA:
		gnra_del(a);
		return;
	case GF_ISOM_BOX_TYPE_EDTS:
		edts_del(a);
		return;
	case GF_ISOM_BOX_TYPE_UDTA:
		udta_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DREF:
		dref_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STSD:
		stsd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STTS:
		stts_del(a);
		return;
	case GF_ISOM_BOX_TYPE_CTTS:
		ctts_del(a);
		return;
	case GF_ISOM_BOX_TYPE_CSLG:
		cslg_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STSH:
		stsh_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ELST:
		elst_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STSC:
		stsc_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STZ2:
	case GF_ISOM_BOX_TYPE_STSZ:
		stsz_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STCO:
		stco_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STSS:
		stss_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STDP:
		stdp_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SDTP:
		sdtp_del(a);
		return;
	case GF_ISOM_BOX_TYPE_CO64:
		co64_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ESDS:
		esds_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MINF:
		minf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TKHD:
		tkhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TREF:
		tref_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MDIA:
		mdia_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ELNG:
		elng_del(a);
		return;
	case GF_ISOM_BOX_TYPE_FTYP:
	case GF_ISOM_BOX_TYPE_STYP:
		ftyp_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PADB:
		padb_del(a);
		return;
	case GF_ISOM_BOX_TYPE_VOID:
		void_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STSF:
		stsf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PDIN:
		pdin_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SBGP:
		sbgp_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SGPD:
		sgpd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SAIZ:
		saiz_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SAIO:
		saio_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PSSH:
		pssh_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TENC:
		tenc_del(a);
		return;


#ifndef GPAC_DISABLE_ISOM_HINTING
	case GF_ISOM_BOX_TYPE_RTP_STSD:
		ghnt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_RTPO:
		rtpo_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HNTI:
		hnti_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SDP:
		sdp_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HINF:
		hinf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_RELY:
		rely_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TIMS:
		tims_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TSRO:
		tsro_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SNRO:
		snro_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TRPY:
		trpy_del(a);
		return;
	case GF_ISOM_BOX_TYPE_NUMP:
		nump_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TOTL:
		totl_del(a);
		return;
	case GF_ISOM_BOX_TYPE_NPCK:
		npck_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TPYL:
		tpyl_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TPAY:
		tpay_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MAXR:
		maxr_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DMED:
		dmed_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DIMM:
		dimm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DREP:
		drep_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TMIN:
		tmin_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TMAX:
		tmax_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PMAX:
		pmax_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DMAX:
		dmax_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PAYT:
		payt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_NAME:
		name_del(a);
		return;
#endif /*GPAC_DISABLE_ISOM_HINTING*/

#ifndef	GPAC_DISABLE_ISOM_FRAGMENTS
	case GF_ISOM_BOX_TYPE_MVEX:
		mvex_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MEHD:
		mehd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TREX:
		trex_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TREP:
		trep_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MOOF:
		moof_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MFHD:
		mfhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TRAF:
		traf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TFHD:
		tfhd_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TFDT:
		tfdt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TRUN:
		trun_del(a);
		return;
#endif

	case GF_ISOM_SUBTYPE_3GP_AMR:
	case GF_ISOM_SUBTYPE_3GP_AMR_WB:
	case GF_ISOM_SUBTYPE_3GP_EVRC:
	case GF_ISOM_SUBTYPE_3GP_QCELP:
	case GF_ISOM_SUBTYPE_3GP_SMV:
		gppa_del(a);
		return;
	case GF_ISOM_SUBTYPE_3GP_H263:
		gppv_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DAMR:
	case GF_ISOM_BOX_TYPE_DEVC:
	case GF_ISOM_BOX_TYPE_DQCP:
	case GF_ISOM_BOX_TYPE_DSMV:
	case GF_ISOM_BOX_TYPE_D263:
		gppc_del(a);
		return;

	/*AVC boxes*/
	case GF_ISOM_BOX_TYPE_AVCC:
	case GF_ISOM_BOX_TYPE_SVCC:
		avcc_del(a);
		return;
	case GF_ISOM_BOX_TYPE_BTRT:
		btrt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_M4DS:
		m4ds_del(a);
		return;
	case GF_ISOM_BOX_TYPE_AVC1:
	case GF_ISOM_BOX_TYPE_AVC2:
	case GF_ISOM_BOX_TYPE_AVC3:
	case GF_ISOM_BOX_TYPE_AVC4:
	case GF_ISOM_BOX_TYPE_SVC1:
	case GF_ISOM_BOX_TYPE_HVC1:
	case GF_ISOM_BOX_TYPE_HEV1:
	case GF_ISOM_BOX_TYPE_HVC2:
	case GF_ISOM_BOX_TYPE_HEV2:
	case GF_ISOM_BOX_TYPE_SHC1:
	case GF_ISOM_BOX_TYPE_SHV1:
	case GF_ISOM_BOX_TYPE_HVT1:
		mp4v_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HVCC:
	case GF_ISOM_BOX_TYPE_SHCC:
		hvcc_del(a);
		return;

	/*3GPP streaming text*/
	case GF_ISOM_BOX_TYPE_FTAB:
		ftab_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TX3G:
		tx3g_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TEXT:
		text_del(a);
		return;
	case GF_ISOM_BOX_TYPE_STYL:
		styl_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HLIT:
		hlit_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HCLR:
		hclr_del(a);
		return;
	case GF_ISOM_BOX_TYPE_KROK:
		krok_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DLAY:
		dlay_del(a);
		return;
	case GF_ISOM_BOX_TYPE_HREF:
		href_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TBOX:
		tbox_del(a);
		return;
	case GF_ISOM_BOX_TYPE_BLNK:
		blnk_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TWRP:
		twrp_del(a);
		return;

	/* ISMA 1.0 Encryption and Authentication V 1.0 */
	case GF_ISOM_BOX_TYPE_IKMS:
		iKMS_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ISFM:
		iSFM_del(a);
		return;

	/* ISO FF extensions for MPEG-21 */
	case GF_ISOM_BOX_TYPE_META:
		meta_del(a);
		return;
	case GF_ISOM_BOX_TYPE_XML:
		xml_del(a);
		return;
	case GF_ISOM_BOX_TYPE_BXML:
		bxml_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ILOC:
		iloc_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PITM:
		pitm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_IPRO:
		ipro_del(a);
		return;
	case GF_ISOM_BOX_TYPE_INFE:
		infe_del(a);
		return;
	case GF_ISOM_BOX_TYPE_IINF:
		iinf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SINF:
		sinf_del(a);
		return;
	case GF_ISOM_BOX_TYPE_FRMA:
		frma_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SCHM:
		schm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SCHI:
		schi_del(a);
		return;

	case GF_ISOM_BOX_TYPE_ENCA:
	case GF_ISOM_BOX_TYPE_ENCV:
	case GF_ISOM_BOX_TYPE_ENCS:
	{
		GF_ProtectionInfoBox *sinf = gf_list_get(((GF_SampleEntryBox *)a)->protections, 0);
		a->type = sinf->original_format->data_format;
		gf_isom_box_del(a);
	}
	return;
	case GF_ISOM_BOX_TYPE_SENC:
		senc_del(a);
		return;
	case GF_ISOM_BOX_TYPE_UUID:
		switch (((GF_UnknownUUIDBox *)a)->internal_4cc) {
		case GF_ISOM_BOX_UUID_TENC:
			piff_tenc_del(a);
			return;
		case GF_ISOM_BOX_UUID_PSEC:
			piff_psec_del(a);
			return;
		case GF_ISOM_BOX_UUID_PSSH:
			piff_pssh_del(a);
			return;
		case GF_ISOM_BOX_UUID_TFRF:
		case GF_ISOM_BOX_UUID_TFXD:
		default:
			uuid_del(a);
			return;
		}
		return;

#ifndef GPAC_DISABLE_ISOM_ADOBE
	/* Adobe extensions */
	case GF_ISOM_BOX_TYPE_ABST:
		abst_del(a);
		return;
	case GF_ISOM_BOX_TYPE_AFRA:
		afra_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ASRT:
		asrt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_AFRT:
		afrt_del(a);
		return;
#endif

	/* Apple extensions */
	case GF_ISOM_BOX_TYPE_ILST:
		ilst_del(a);
		return;

	case GF_ISOM_BOX_TYPE_0xA9NAM:
	case GF_ISOM_BOX_TYPE_0xA9CMT:
	case GF_ISOM_BOX_TYPE_0xA9DAY:
	case GF_ISOM_BOX_TYPE_0xA9ART:
	case GF_ISOM_BOX_TYPE_0xA9TRK:
	case GF_ISOM_BOX_TYPE_0xA9ALB:
	case GF_ISOM_BOX_TYPE_0xA9COM:
	case GF_ISOM_BOX_TYPE_0xA9WRT:
	case GF_ISOM_BOX_TYPE_0xA9TOO:
	case GF_ISOM_BOX_TYPE_0xA9CPY:
	case GF_ISOM_BOX_TYPE_0xA9DES:
	case GF_ISOM_BOX_TYPE_0xA9GEN:
	case GF_ISOM_BOX_TYPE_0xA9GRP:
	case GF_ISOM_BOX_TYPE_0xA9ENC:
	case GF_ISOM_BOX_TYPE_aART:
	case GF_ISOM_BOX_TYPE_GNRE:
	case GF_ISOM_BOX_TYPE_DISK:
	case GF_ISOM_BOX_TYPE_TRKN:
	case GF_ISOM_BOX_TYPE_TMPO:
	case GF_ISOM_BOX_TYPE_CPIL:
	case GF_ISOM_BOX_TYPE_PGAP:
	case GF_ISOM_BOX_TYPE_COVR:
		ListItem_del(a);
		return;

	case GF_ISOM_BOX_TYPE_DATA:
		data_del(a);
		return;

	case GF_ISOM_BOX_TYPE_OHDR:
		ohdr_del(a);
		return;
	case GF_ISOM_BOX_TYPE_GRPI:
		grpi_del(a);
		return;
	case GF_ISOM_BOX_TYPE_MDRI:
		mdri_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ODTT:
		odtt_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ODRB:
		odrb_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ODKM:
		odkm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ODAF:
		iSFM_del(a);
		return;

	case GF_ISOM_BOX_TYPE_PASP:
		pasp_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TSEL:
		tsel_del(a);
		return;

	case GF_ISOM_BOX_TYPE_METX:
	case GF_ISOM_BOX_TYPE_METT:
		metx_del(a);
		return;

	case GF_ISOM_BOX_TYPE_DIMS:
		dims_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DIMC:
		dimC_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DIST:
		diST_del(a);
		return;

	case GF_ISOM_BOX_TYPE_AC3:
		ac3_del(a);
		return;
	case GF_ISOM_BOX_TYPE_DAC3:
		dac3_del(a);
		return;

	case GF_ISOM_BOX_TYPE_LSRC:
		lsrc_del(a);
		return;
	case GF_ISOM_BOX_TYPE_LSR1:
		lsr1_del(a);
		return;

	case GF_ISOM_BOX_TYPE_SIDX:
		sidx_del(a);
		return;
	case GF_ISOM_BOX_TYPE_PCRB:
		pcrb_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SUBS:
		subs_del(a);
		return;
	case GF_ISOM_BOX_TYPE_RVCC:
		rvcc_del(a);
		return;

	case GF_ISOM_BOX_TYPE_PRFT:
		prft_del(a);
		return;

#ifndef GPAC_DISABLE_TTXT
	case GF_ISOM_BOX_TYPE_STXT:
		metx_del(a);
		return;
	case GF_ISOM_BOX_TYPE_TXTC:
		txtc_del(a);
		return;

	case GF_ISOM_BOX_TYPE_VTCU:
		vtcu_del(a);
		return;
	case GF_ISOM_BOX_TYPE_VTTE:
		vtte_del(a);
		return;
	case GF_ISOM_BOX_TYPE_VTTC:
	case GF_ISOM_BOX_TYPE_CTIM:
	case GF_ISOM_BOX_TYPE_IDEN:
	case GF_ISOM_BOX_TYPE_STTG:
	case GF_ISOM_BOX_TYPE_VTTA:
	case GF_ISOM_BOX_TYPE_PAYL:
		boxstring_del(a);
		return;
	case GF_ISOM_BOX_TYPE_WVTT:
		wvtt_del(a);
		return;

	case GF_ISOM_BOX_TYPE_STPP:
		metx_del(a);
		return;
	case GF_ISOM_BOX_TYPE_SBTT:
		metx_del(a);
		return;

#endif // GPAC_DISABLE_TTXT

	case GF_ISOM_BOX_TYPE_ADKM:
		adkm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_AHDR:
		ahdr_del(a);
		return;
	case GF_ISOM_BOX_TYPE_APRM:
		aprm_del(a);
		return;
	case GF_ISOM_BOX_TYPE_AEIB:
		aeib_del(a);
		return;
	case GF_ISOM_BOX_TYPE_AKEY:
		akey_del(a);
		return;
	case GF_ISOM_BOX_TYPE_FLXS:
		flxs_del(a);
		return;
	case GF_ISOM_BOX_TYPE_ADAF:
		adaf_del(a);
		return;

	default:
		defa_del(a);
		return;
	}
}