Example #1
0
int rtsp_describe(void* rtsp)
{
	const char* path;
	path = rtsp_get_request_uri(rtsp);
    return 0;
}
Example #2
0
static void rtsp_server_handle(struct rtsp_server_request_t *req, void* parser)
{
	int major, minor;
	const char* uri;
	const char* method;

	req->parser = parser;
	rtsp_get_version(parser, &major, &minor);
	if(1 != major && 0 != minor)
	{
		//505 RTSP Version Not Supported
		rtsp_server_reply(req, 505);
		return;
	}

	if(0 != rtsp_get_header_by_name2(parser, "CSeq", (int*)&req->cseq))
	{
		// 400 Bad Request
		rtsp_server_reply(req, 400);
		return;
	}

	uri = rtsp_get_request_uri(parser);
	method = rtsp_get_request_method(parser);

	switch(*method)
	{
	case 'o':
	case 'O':
		if(0 == stricmp("OPTIONS", method))
		{
			rtsp_server_options(req, parser, uri);
			return;
		}
		break;

	case 'd':
	case 'D':
		if(0 == stricmp("DESCRIBE", method))
		{
			rtsp_server_describe(req, parser, uri);
			return;
		}
		break;

	case 's':
	case 'S':
		if(0 == stricmp("SETUP", method))
		{
			rtsp_server_setup(req, parser, uri);
			return;
		}
		break;

	case 'p':
	case 'P':
		if(0 == stricmp("PLAY", method))
		{
			rtsp_server_play(req, parser, uri);
			return;
		}
		else if(0 == stricmp("PAUSE", method))
		{
			rtsp_server_pause(req, parser, uri);
			return;
		}
		break;

	case 't':
	case 'T':
		if(0 == stricmp("TEARDOWN", method))
		{
			rtsp_server_teardown(req, parser, uri);
			return;
		}
		break;
	}

	// 501 Not implemented
	rtsp_server_reply(req, 501);
}