GF_EXPORT void gf_sdp_media_del(GF_SDPMedia *media) { GF_SDPBandwidth *bw; GF_RTPMap *map; GF_SDPConnection *conn; GF_SDP_FMTP *fmtp; GF_X_Attribute *att; if (!media) return; while (gf_list_count(media->FMTP)) { fmtp = (GF_SDP_FMTP*)gf_list_get(media->FMTP, 0); gf_list_rem(media->FMTP, 0); gf_sdp_fmtp_del(fmtp); } gf_list_del(media->FMTP); while (gf_list_count(media->Attributes)) { att = (GF_X_Attribute*)gf_list_get(media->Attributes, 0); gf_list_rem(media->Attributes, 0); if (att->Name) gf_free(att->Name); if (att->Value) gf_free(att->Value); gf_free(att); } gf_list_del(media->Attributes); while (gf_list_count(media->RTPMaps)) { map = (GF_RTPMap*)gf_list_get(media->RTPMaps, 0); gf_free(map->payload_name); gf_free(map); gf_list_rem(media->RTPMaps, 0); } gf_list_del(media->RTPMaps); while (gf_list_count(media->Connections)) { conn = (GF_SDPConnection*)gf_list_get(media->Connections, 0); gf_list_rem(media->Connections, 0); gf_sdp_conn_del(conn); } gf_list_del(media->Connections); while (gf_list_count(media->Bandwidths)) { bw = (GF_SDPBandwidth*)gf_list_get(media->Bandwidths, 0); gf_list_rem(media->Bandwidths, 0); if (bw->name) gf_free(bw->name); gf_free(bw); } gf_list_del(media->Bandwidths); SDPM_DESTROY(orientation); SDPM_DESTROY(sdplang); SDPM_DESTROY(lang); SDPM_DESTROY(Profile); SDPM_DESTROY(fmt_list); SDPM_DESTROY(k_method); SDPM_DESTROY(k_key); gf_free(media); }
void SDPMedia_Delete(SDPMedia *media) { SDPBandwidth *bw; SDP_RTPMap *map; SDPConnection *conn; SDP_FMTP *fmtp; X_Attribute *att; if (!media) return; while (ChainGetCount(media->FMTP)) { fmtp = ChainGetEntry(media->FMTP, 0); ChainDeleteEntry(media->FMTP, 0); SDP_DeleteFMTP(fmtp); } DeleteChain(media->FMTP); while (ChainGetCount(media->Attributes)) { att = ChainGetEntry(media->Attributes, 0); ChainDeleteEntry(media->Attributes, 0); if (att->Name) free(att->Name); if (att->Value) free(att->Value); free(att); } DeleteChain(media->Attributes); while (ChainGetCount(media->RTPMaps)) { map = ChainGetEntry(media->RTPMaps, 0); free(map->payload_name); free(map); ChainDeleteEntry(media->RTPMaps, 0); } DeleteChain(media->RTPMaps); while (ChainGetCount(media->Connections)) { conn = ChainGetEntry(media->Connections, 0); ChainDeleteEntry(media->Connections, 0); SDP_DeleteConnection(conn); } DeleteChain(media->Connections); while (ChainGetCount(media->Bandwidths)) { bw = ChainGetEntry(media->Bandwidths, 0); ChainDeleteEntry(media->Bandwidths, 0); if (bw->name) free(bw->name); free(bw); } DeleteChain(media->Bandwidths); SDPM_DESTROY(orientation); SDPM_DESTROY(sdplang); SDPM_DESTROY(lang); SDPM_DESTROY(Profile); SDPM_DESTROY(fmt_list); SDPM_DESTROY(k_method); SDPM_DESTROY(k_key); free(media); }