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

📄 common.h

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 H
字号:
/*  This file is part of FreeSDP.  Copyright (C) 2001,2002,2003 Federico Montesino Pouzols <fedemp@altern.org>  FreeSDP is free software; you can redistribute it and/or modify it  under the terms of the GNU General Public License as published by  the Free Software Foundation; either version 2 of the License, or  (at your option) any later version.  This program 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 General Public License for more details.  You should have received a copy of the GNU General Public License  along with this program; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//** * @file common.h * @ingroup common * @short Public header common for both parsing and formatting modules. **/#ifndef FSDP_COMMON_H#define FSDP_COMMON_H/* Macros to avoid name mangling when compiling with a C++ compiler */#ifdef __cplusplus#  define BEGIN_C_DECLS extern "C" {#  define END_C_DECLS   }#else /* !__cplusplus */#  define BEGIN_C_DECLS#  define END_C_DECLS#endif /* __cplusplus */#include <sys/time.h>#include <time.h>BEGIN_C_DECLS/** * @defgroup common FreeSDP Common Facilities * * Data types and routines common for both parsing and formatting * modules. **//** @addtogroup common *//*@{*//** * @enum fsdp_error_t freesdp/common.h * @short Error codes in the FreeSDP library. * * There is a FSDPE_MISSING_XXXX for each mandatory line, as * FSDPE_MISSING_OWNER. This kind of error is reported when a * mandatory description line, such as the owner line, is not found * where it should be in the SDP description. There are also several * error codes like FSDPE_INVALID_XXXX. These are returned when there * is a recognized line in the parsed description that violates the * SDP syntax or gives wrong parameters, for instance "c=foo bar", * which would cause a FSDPE_INVALID_CONNECTION error code to be * returned. **/typedef enum{  FSDPE_OK = 0,  FSDPE_ILLEGAL_CHARACTER,	 /**< Misplaced '\r', '\n' or '\0' */  FSDPE_MISSING_VERSION,	 /**< The first line is not like				    v=... */  FSDPE_INVALID_VERSION,	 /**< Parse error in version line,				    perhaps, the version specified in				    v=... is not valid for FreeSDP */  FSDPE_MISSING_OWNER,		 /**< No owner line found in its				    place */  FSDPE_INVALID_OWNER,		 /**< Parse error in owner line */  FSDPE_MISSING_NAME,		 /**< No session name found in its				    place */  FSDPE_EMPTY_NAME,		 /**< Empty session name line */  FSDPE_INVALID_CONNECTION,	 /**< Syntax error in connection				    line */  FSDPE_INVALID_CONNECTION_ADDRTYPE, /**< Unrecognized address type in					connection line */  FSDPE_INVALID_CONNECTION_NETTYPE,  /**< Unrecognized network type in					connection line */  FSDPE_INVALID_BANDWIDTH,	     /**< Parse error in bandwidth					line */  FSDPE_MISSING_TIME,		 /**< No time period has been given				    for the session */  FSDPE_INVALID_TIME,		 /**< Parse error in time line */  FSDPE_INVALID_REPEAT,		 /**< Parse error in repeat time				    line */  FSDPE_INVALID_TIMEZONE,	 /**< Parse error in timezone line */  FSDPE_INVALID_ENCRYPTION_METHOD, /**< Unknown encryption method */  FSDPE_INVALID_ATTRIBUTE,	 /**< Syntax error in an attribute				    line */  FSDPE_INVALID_ATTRIBUTE_RTPMAP,/**< Parse error in a=rtpmap:... line */  FSDPE_INVALID_SESSION_TYPE,	 /**< An unknown session type has been				    specified in a `type:'				    session-level attribute */  FSDPE_INVALID_MEDIA,		 /**< Parse error in media line */  FSDPE_UNKNOWN_MEDIA_TYPE,	 /**< Unknown media type in media				    line */  FSDPE_UNKNOWN_MEDIA_TRANSPORT, /**< A media transport has been				    specified that is unknown */  FSDPE_OVERFILLED,		 /**< extra unknown lines are at the				    end of the description */  FSDPE_INVALID_LINE,		 /**< a line unknown to FreeSDP has been				    found */  FSDPE_MISSING_CONNECTION_INFO, /**< No connection information has				     been provided for the whole				     session nor one or more media */  FSDPE_INVALID_INDEX,  /*  FSDPE_MAXSIZE, description does not fit requested maximun size */  FSDPE_INTERNAL_ERROR,  FSDPE_INVALID_PARAMETER,	 /**< Some parameter of the called				       FreeSDP routine has been given an				       invalid value. This includes				       cases such as NULL pointers. */  FSDPE_BUFFER_OVERFLOW} fsdp_error_t;/** * @short Type of network  * * Initially, SDP defines "Internet". New network types may be * registered with IANA. However, the number of types is expected to * be small and rarely extended. In addition, every new network type * requires at least one new address type. **/typedef enum{  FSDP_NETWORK_TYPE_UNDEFINED,		       /**< Not provided */  FSDP_NETWORK_TYPE_INET		       /**< Internet */} fsdp_network_type_t;/** * @short Type of address * * Initially, IPv4 and IPv6 are defined for the network type * Internet. New address types may be registered with IANA. **/typedef enum{  FSDP_ADDRESS_TYPE_UNDEFINED,		       /**< Not provided */  FSDP_ADDRESS_TYPE_IPV4,		      /**< IP version 4 */  FSDP_ADDRESS_TYPE_IPV6		      /**< IP version 6 */} fsdp_address_type_t;/** * @short Type of bandwith modifiers  * * Bandwidth modifiers specify the meaning of the bandwidth * value. Initially "Conference Total" and "Application Specific" are * defined. Both use kilobits as bandwidth unit. "Conference Total" * specifies that the bandwidth value is a proposed upper limit to the * session bandwidth. "Application Specific" specifies thath the * bandwidth value is the application concept of maximum bandwidth. **/typedef enum{  FSDP_BW_MOD_TYPE_UNDEFINED,		 /**< Not provided */  FSDP_BW_MOD_TYPE_UNKNOWN,		 /**< Unknown bandwidth						  modifier (FreeSDP						  ignores it) */  FSDP_BW_MOD_TYPE_CONFERENCE_TOTAL,	 /**< "CT - Conference Total" */  FSDP_BW_MOD_TYPE_APPLICATION_SPECIFIC, /**< "AS - Application specific" */  FSDP_BW_MOD_TYPE_RTCP_SENDERS,	 /**< "RS - RTCP bandwidth for					    senders */  FSDP_BW_MOD_TYPE_RTCP_RECEIVERS,	 /**< "RR - RTCP bandwidth for					    receivers */} fsdp_bw_modifier_type_t;/** * @short encryption method * * The encryption method specifies the way to get the encryption key. **/typedef enum{  FSDP_ENCRYPTION_METHOD_UNDEFINED,    /**< Not provided */  FSDP_ENCRYPTION_METHOD_CLEAR,	       /**< The key field is the						 untransformed key */  FSDP_ENCRYPTION_METHOD_BASE64,       /**< The key is base64					  encoded */  FSDP_ENCRYPTION_METHOD_URI,	       /**< The key value provided is					  a URI pointing to the actual					  key */  FSDP_ENCRYPTION_METHOD_PROMPT	       /**< The key is not provided					  but should be got prompting					  the user */} fsdp_encryption_method_t;/** * @short Advised reception/transmission mode * * Depending on wheter sendrecv, recvonly, sendonly or inactive * attribute is given, the tools used to participate in the session * should be started in the corresponding transmission * mode. FSDP_SENDRECV_SENDRECV is the default for sessions which are * not of the conference type broadcast or H332. **/typedef enum{  FSDP_SENDRECV_UNDEFINED,		      /**< Not specified */  FSDP_SENDRECV_SENDRECV,		      /**< Send and receive */  FSDP_SENDRECV_RECVONLY,		      /**< Receive only */  FSDP_SENDRECV_SENDONLY,		      /**< Send only */  FSDP_SENDRECV_INACTIVE		      /**< Do not send nor receive */} fsdp_sendrecv_mode_t;/** * @short Values for `orient' media attribute. * * Normally used with whiteboard media, this attribute specifies the * orientation of the whiteboard. **/typedef enum{  FSDP_ORIENT_UNDEFINED,		     /**< Not specified */  FSDP_ORIENT_PORTRAIT,			     /**< Portrait */  FSDP_ORIENT_LANDSCAPE,		     /**< Landscape */  FSDP_ORIENT_SEASCAPE			     /**< Upside down landscape */} fsdp_orient_t;/** * @short Type of the conference * * The following types are initially defined: broadcast, meeting, * moderated, test and H332. **/typedef enum{  FSDP_SESSION_TYPE_UNDEFINED,		       /**< Not specified */  FSDP_SESSION_TYPE_BROADCAST,		       /**< Broadcast session */  FSDP_SESSION_TYPE_MEETING,		       /**< Meeting session */  FSDP_SESSION_TYPE_MODERATED,		       /**< Moderated session */  FSDP_SESSION_TYPE_TEST,		       /**< Test (do not display) */  FSDP_SESSION_TYPE_H332		       /**< H332 session */} fsdp_session_type_t;/** * @short Media type * * The following types are defined initially: audio, video, * application, data and control. **/typedef enum{  FSDP_MEDIA_UNDEFINED,		   /**< Not specified */  FSDP_MEDIA_VIDEO,		   /**< Video */  FSDP_MEDIA_AUDIO,		   /**< Audio */  FSDP_MEDIA_APPLICATION,	   /**< Application, such as whiteboard */  FSDP_MEDIA_DATA,		   /**< bulk data */  FSDP_MEDIA_CONTROL		   /**< Control channel */} fsdp_media_t;/** * @short Transport protocol * * The transport protocol used depends on the address type. Initially, * RTP over UDP Audio/Video Profile, and UDP are defined. * **/typedef enum{  FSDP_TP_UNDEFINED,		  /**< Not specified */  FSDP_TP_RTP_AVP,		  /**< RTP Audio/Video Profile */  FSDP_TP_UDP,			  /**< UDP */  FSDP_TP_TCP,			  /**< TCP */  FSDP_TP_UDPTL,		  /**< ITU-T T.38*/  FSDP_TP_VAT,			  /**< old vat protocol (historic)*/  FSDP_TP_OLD_RTP,		  /**< old rtp protocols (historic)*/  FSDP_TP_H320			  /**< TODO: add to the parser */} fsdp_transport_protocol_t;/** * Session-level attributes whose value is specified as a character * string in FreeSDP. These values are usually given to * fsdp_get_strn_att() in order to get the corresponding value. * **/typedef enum{  FSDP_SESSION_STR_ATT_CATEGORY,  FSDP_SESSION_STR_ATT_KEYWORDS,  FSDP_SESSION_STR_ATT_TOOL,  FSDP_SESSION_STR_ATT_CHARSET,} fsdp_session_str_att_t;/** * @short FreeSDP SDP description media object. * * Object for media specific information in SDP descriptions. Each SDP * description may include any number of media section. A * fsdp_media_description_t object encapsulates the information in a * media section, such as video, audio or whiteboard. **/typedef struct fsdp_media_description_t_s fsdp_media_description_t;/** * @short FreeSDP SDP session description object. * * Contains all the information extracted from a textual SDP * description, including all the media announcements. **/typedef struct fsdp_description_t_s fsdp_description_t;/** * Allocates memory and initializes values for a new * fsdp_description_t object. If you call this routine, do not forget * about <code>fsdp_description_delete()</code> * * @return new fsdp_description_t object **/fsdp_description_t *fsdp_description_new (void);/** * Destroys a fsdp_description_t object. * * @param dsc pointer to the fsdp_description_t object to delete. **/void fsdp_description_delete (fsdp_description_t * dsc);/** * Calling this function over a description is equivalent to calling * fsdp_description_delete and then fsdp_description_delete. This * function is however more suitable and efficient for description * processing loops. * * @param dsc pointer to the fsdp_description_t object to * renew/recycle. **/void fsdp_description_recycle (fsdp_description_t * dsc);/** *  * Returns a string correspondent to the error number. *   * *    * @param err_no error number. *     **/const char *fsdp_strerror (fsdp_error_t err_no);       /*@}*//* closes addtogroup common */END_C_DECLS#endif /* FSDP_COMMON_H */

⌨️ 快捷键说明

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