⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtpsignaltable.c

📁 mediastreamer2是开源的网络传输媒体流的库
💻 C
字号:
/*  The oRTP library is an RTP (Realtime Transport Protocol - rfc1889) stack.  Copyright (C) 2001  Simon MORLAT simon.morlat@linphone.org  This library is free software; you can redistribute it and/or  modify it under the terms of the GNU Lesser General Public  License as published by the Free Software Foundation; either  version 2.1 of the License, or (at your option) any later version.  This library is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  Lesser General Public License for more details.  You should have received a copy of the GNU Lesser General Public  License along with this library; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include <ortp/rtpsession.h>#include "utils.h"void rtp_signal_table_init(RtpSignalTable *table,RtpSession *session, const char *signal_name){	memset(table,0,sizeof(RtpSignalTable));	table->session=session;	table->signal_name=signal_name;	session->signal_tables=o_list_append(session->signal_tables,(void*)table);}int rtp_signal_table_add(RtpSignalTable *table,RtpCallback cb, unsigned long user_data){	int i;		for (i=0;i<RTP_CALLBACK_TABLE_MAX_ENTRIES;i++){		if (table->callback[i]==NULL){			table->callback[i]=cb;			table->user_data[i]=user_data;			table->count++;			return 0;		}	}	return -1;}void rtp_signal_table_emit(RtpSignalTable *table){	int i,c;		for (i=0,c=0;c<table->count;i++){		if (table->callback[i]!=NULL){			c++;	/*I like it*/			table->callback[i](table->session,table->user_data[i]);		}	}}void rtp_signal_table_emit2(RtpSignalTable *table,unsigned long arg){	int i,c;		for (i=0,c=0;c<table->count;i++){		if (table->callback[i]!=NULL){			c++;	/*I like it*/			table->callback[i](table->session,arg,table->user_data[i]);		}	}}void rtp_signal_table_emit3(RtpSignalTable *table, unsigned long arg1, unsigned long arg2){	int i,c;		for (i=0,c=0;c<table->count;i++){		if (table->callback[i]!=NULL){			c++;	/*I like it*/			table->callback[i](table->session,arg1,arg2,table->user_data[i]);		}	}}int rtp_signal_table_remove_by_callback(RtpSignalTable *table,RtpCallback cb){	int i;		for (i=0;i<RTP_CALLBACK_TABLE_MAX_ENTRIES;i++){		if (table->callback[i]==cb){			table->callback[i]=NULL;			table->user_data[i]=0;			table->count--;			return 0;		}	}	return -1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -