コード例 #1
0
ファイル: RTP_serv_sender.c プロジェクト: erelh/gpac
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;
}
コード例 #2
0
ファイル: RTP_serv_generator.c プロジェクト: erelh/gpac
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);
}
コード例 #3
0
ファイル: rtp_streamer.c プロジェクト: Keemotion/GPAC4iOS
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);
	}
}
コード例 #4
0
ファイル: rtp_stream.c プロジェクト: OpenHEVC/gpac
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);
}
コード例 #5
0
ファイル: RTP_serv_sender.c プロジェクト: erelh/gpac
GF_Err PNC_CloseRTP(GF_RTPChannel *chan)
{
	gf_rtp_del(chan);
	return GF_OK;
}