예제 #1
0
static int sendReceiveAndCheck(GstRTSPConnection *conn, GTimeVal *timeout, GstRTSPMessage  *msg , gboolean debug )
{
	GstRTSPResult res;


	if (debug)
		gst_rtsp_message_dump(msg);

	// set our request
	if ( (res = gst_rtsp_connection_send(conn, msg, timeout))  != GST_RTSP_OK) 
		return -ERR_CONNECTION;


	// get server responce
	if ( (res = gst_rtsp_connection_receive(conn, msg, timeout)) != GST_RTSP_OK)
		return -ERR_CONNECTION;

	if (debug)
		gst_rtsp_message_dump(msg);

	res = isServerReturnOkResponse(msg);
	if (res != GST_RTSP_OK)
		return res;

	return GST_RTSP_OK;
}
예제 #2
0
파일: main.c 프로젝트: dulton/hm-platform
void* rtsp (void *arg)
{
	GstRTSPResult res;
	GstRTSPMessage *msg;
	int fd = (int)arg;

	GstRtspParser *parser = gst_rtsp_parser_new(4096, NULL);

	while (1)
	{
		fd_set	rset;
		FD_ZERO(&rset);
		FD_SET(fd, &rset);
		if (select (fd +1, &rset, NULL, NULL, NULL) < 0)
		{
			perror("select()");
			exit(1);
		};
		
		res = gst_rtsp_parser_recv(parser, fd, &msg);
		if (res == GST_RTSP_OK)
		{
			gst_rtsp_message_dump(msg);
		}
		else if (res == GST_RTSP_EEOF)
		{
			printf("################## connection reset!!\n");
			close(fd);
			gst_rtsp_parser_free(parser);
			break;
		}
		else if (res == GST_RTSP_EINTR)
		{
			printf("================= eintr!!\n");
		}
		else
		{
			printf("$$$$$$$$$$$$$$$other error!!!\n");
		}
	}

	return NULL;
}