コード例 #1
0
/*设置某个节点的状态*/
static int app_mult_set_node_tc(MULTICAST_Output_Server_NODE *node)
{
	if(node == NULL) {
		PRINTF("Error\n");
		return -1;
	}

	int num = 0;
	int vrate = 0;
	int vcbr = 0;
	int arate = 0;
	int trate = 0;
	int crate = 0;
	int ret = 0;

	app_get_encode_rate(&vrate, &arate, &vcbr);

	if(node->config.tc_flag == NOTUSED || vcbr == 0) {
		if(node->tc_num != -1) {
			tc_del_element(node->tc_num);
			node->tc_num = -1;
		}

		return 0;
	}

	if(node->config.tc_flag == ISUSED) {
		if(node->client == NULL) {
			if(node->tc_num != -1) {
				tc_del_element(node->tc_num);
				node->tc_num = -1;
			}

			return 0;
		}

		num = node->client->num + 1;


		if(vcbr == 1) {
			trate = app_trans_rate(vrate, arate, node->config.type);
			crate = trate * (node->config.tc_rate + 100) / 100;
			//set rate
			ret = tc_add_element(num, node->config.main_ip, node->config.video_port, arate, crate);

			if(ret < 0) {
				PRINTF("Warnning\n");
				node->tc_num = -1;
			} else {
				node->tc_num = num;
			}
		}
	}

	return 0;
}
コード例 #2
0
int stream_rtsp_add_client_tc(int num, int tc_flag, int tc_rate, char *dst_ip, unsigned short port)
{
	int vrate = 0;
	int vcbr = 0;
	int arate = 0;
	int trate = 0;
	int crate = 0;
	int ret = 0;
	//	int tc_flag =0;
	int tc_num = num + 1;


	app_get_encode_rate(&vrate, &arate, &vcbr);

	//	if(tc_flag == NOTUSED || vcbr == 0) {
	//		if( tc_num != -1) {
	//			tc_del_element(tc_num);
	//node->tc_num = -1;
	//		}

	//		return 0;
	//	}
	if(vcbr == 0) {
		return -1;
	}

	//	if(tc_flag == ISUSED) {
	//if(node->client == NULL) {
	//		if(node->tc_num != -1) {
	//			tc_del_element(node->tc_num);
	//			node->tc_num = -1;
	//		}
	//
	//			return 0;
	//		}

	//num =  ;

	if(vcbr == 1) {
		trate = app_trans_rate(vrate, arate, TYPE_RTP);
		crate = trate * (tc_rate + 100) / 100;
		//set rate
		ret = tc_add_element(num, dst_ip, port, trate, crate);

		if(ret < 0) {
			PRINTF("Warnning\n");
			return -1;
			//node->tc_num = -1;
		} else {
			return 0;
			//node->tc_num = num;
		}
	}

	return -1;
}
コード例 #3
0
static int stream_rtsp_set_clinet_tc(int num, int tc_flag, int tc_rate, char *dst_ip, unsigned short port)
{
	int vrate = 0;
	int vcbr = 0;
	int arate = 0;
	int trate = 0;
	int crate = 0;
	int ret = 0;
	//	int tc_flag =0;
	int tc_num = num ;

	tc_del_element(tc_num);

	app_get_encode_rate(&vrate, &arate, &vcbr);

	if(vcbr == 0 || tc_flag == NOTUSED) {
		PRINTF("vcbr = %d,tc_flag =%d\n", vcbr, tc_flag);
		return -1;
	}

	if(vcbr == 1) {
		trate = app_trans_rate(vrate, arate, TYPE_RTP);
		crate = trate * (tc_rate + 100) / 100;
		//set rate
		ret = tc_add_element(num, dst_ip, port, trate, crate);

		if(ret < 0) {
			PRINTF("Warnning\n");
			return -1;
			//node->tc_num = -1;
		} else {
			return 0;
			//node->tc_num = num;
		}
	}

	return -1;

}
コード例 #4
0
ファイル: traffic_shaping.c プロジェクト: lubing521/enc_2000
int tc_set_element(int classid, char *dst_ip, unsigned short dst_port, int a_rate, int c_rate)
{
	return tc_add_element(classid, dst_ip, dst_port, a_rate, c_rate);
}