GF_Err PNC_InitRTP(GF_RTPChannel **chan, char *dest, int port, unsigned short mtu_size) { GF_Err res; GF_RTSPTransport tr; *chan = gf_rtp_new(); res = gf_rtp_set_ports(*chan, 0); if (res) { fprintf(stderr, "Cannot set RTP ports: %s\n", gf_error_to_string(res)); gf_rtp_del(*chan); return res; } tr.destination = dest; tr.IsUnicast = gf_sk_is_multicast_address(dest) ? 0 : 1; tr.Profile="RTP/AVP";//RTSP_PROFILE_RTP_AVP; tr.IsRecord = 0; tr.Append = 0; tr.source = "0.0.0.0"; tr.SSRC=rand(); tr.port_first = port; tr.port_last = port+1; if (tr.IsUnicast) { tr.client_port_first = port; tr.client_port_last = port+1; } else { tr.source = dest; tr.client_port_first = 0; tr.client_port_last = 0; } res = gf_rtp_setup_transport(*chan, &tr, dest); if (res) { fprintf(stderr, "Cannot setup RTP transport %s\n", gf_error_to_string(res)); gf_rtp_del(*chan); return res; } res = gf_rtp_initialize(*chan, 0, 1, mtu_size, 0, 0, NULL); if (res) { fprintf(stderr, "Cannot initialize RTP transport %s\n", gf_error_to_string(res)); gf_rtp_del(*chan); return res; } return GF_OK; }
void PNC_Close_SceneGenerator(PNC_CallbackData * data) { if (data->extension) gf_free(data->extension); gf_seng_terminate(data->codec); gf_rtp_del(data->chan); PNC_ClosePacketizer(data); gf_free(data); }
GF_EXPORT void gf_rtp_streamer_del(GF_RTPStreamer *streamer) { if (streamer) { if (streamer->channel) gf_rtp_del(streamer->channel); if (streamer->packetizer) gf_rtp_builder_del(streamer->packetizer); if (streamer->buffer) gf_free(streamer->buffer); gf_free(streamer); } }
void RP_DeleteStream(RTPStream *ch) { if (ch->rtsp) { if (ch->status == RTP_Running) { RP_Teardown(ch->rtsp, ch); ch->status = RTP_Disconnected; } RP_RemoveStream(ch->owner, ch); } else { RP_FindChannel(ch->owner, ch->channel, 0, NULL, 1); } if (ch->depacketizer) gf_rtp_depacketizer_del(ch->depacketizer); if (ch->rtp_ch) gf_rtp_del(ch->rtp_ch); if (ch->control) gf_free(ch->control); if (ch->session_id) gf_free(ch->session_id); gf_free(ch); }
GF_Err PNC_CloseRTP(GF_RTPChannel *chan) { gf_rtp_del(chan); return GF_OK; }