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

📄 osip_negotiation.h

📁 这是我用vxwork编译成功的osip协议栈
💻 H
📖 第 1 页 / 共 2 页
字号:
/*  The oSIP library implements the Session Initiation Protocol (SIP -rfc3261-)  Copyright (C) 2001,2002,2003,2004  Aymeric MOIZARD jack@atosc.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*/#ifndef _SDP_NEGOC_H_#define _SDP_NEGOC_H_#include <osipparser2/sdp_message.h>/** * @internal * @file osip_negotiation.h * @brief oSIP and SDP offer/answer model Routines * *//** * @internal * @defgroup oSIP_OAM oSIP and SDP offer/answer model Handling * @{ */#ifdef __cplusplusextern "C"{#endif/** * Structure for applying the SDP offer/answer negotiation. * The goal is simply to give: *      1.  A configuration (osip_negotiation_t) *      2.  A remote SDP packet (generally from the INVITE) * The result is the creation of a local answer to * the remote SDP packet. * @var osip_negotiation_ctx_t */  typedef struct osip_negotiation_ctx osip_negotiation_ctx_t;/** * Structure for applying the SDP offer/answer negotiation. * @struct osip_negotiation_ctx */  struct osip_negotiation_ctx  {    void *mycontext;		/**< User Defined Pointer */    sdp_message_t *remote;      /**< Remote SDP offer     */    sdp_message_t *local;       /**< generated SDP answer */  };/** * Allocate a negotiation context. * @param ctx The element to work on. */  int osip_negotiation_ctx_init (osip_negotiation_ctx_t ** ctx);/** * Free a negotiation context. * @param ctx The element to work on. */  void osip_negotiation_ctx_free (osip_negotiation_ctx_t * ctx);/** * Set the context associated to this negotiation. * @param ctx The element to work on. * @param value A pointer to your personal context. */  int osip_negotiation_ctx_set_mycontext (osip_negotiation_ctx_t * ctx,					  void *value);/** * Get the context associated to this negotiation. * @param ctx The element to work on. */  void *osip_negotiation_ctx_get_mycontext (osip_negotiation_ctx_t * ctx);/** * Set the local SDP packet associated to this negotiation. * NOTE: This is done by the 'negotiator'. (You only need to give * the remote SDP packet) * @param ctx The element to work on. * @param sdp The local SDP packet. */  int osip_negotiation_ctx_set_local_sdp (osip_negotiation_ctx_t * ctx,					  sdp_message_t * sdp);/** * Get the local SDP packet associated to this negotiation. * @param ctx The element to work on. */  sdp_message_t *osip_negotiation_ctx_get_local_sdp (osip_negotiation_ctx_t *						     ctx);/** * Set the remote SDP packet associated to this negotiation. * @param ctx The element to work on. * @param sdp The remote SDP packet. */  int osip_negotiation_ctx_set_remote_sdp (osip_negotiation_ctx_t * ctx,					   sdp_message_t * sdp);/** * Get the remote SDP packet associated to this negotiation. * @param ctx The element to work on. */  sdp_message_t *osip_negotiation_ctx_get_remote_sdp (osip_negotiation_ctx_t *						      ctx);/** * Structure for storing the global configuration management. * The information you store here is used when computing a * remote SDP packet to build a compliant answer. * The main objectives is to: *    * automaticly refuse unknown media. *    * accept some of the known media. *    * make sure the SDP answer match the SDP offer. *    * simplify the SDP offer/answer model, as all unknown media *      are refused without any indication to the application layer. *    * In any case, you can still modify the entire SDP packet after *      a negotiation if you are not satisfied by the negotiation result. * @var osip_negotiation_t */  typedef struct osip_negotiation osip_negotiation_t;/** * Structure for storing the global configuration management. * @struct osip_negotiation */  struct osip_negotiation  {    char *o_username;               /**< username */    char *o_session_id;             /**< session identifier */    char *o_session_version;        /**< session version */    char *o_nettype;                /**< Network Type */    char *o_addrtype;               /**< Address type */    char *o_addr;                   /**< Address */    char *c_nettype;                /**< Network Type */    char *c_addrtype;               /**< Address Type */    char *c_addr;                   /**< Address */    char *c_addr_multicast_ttl;     /**< TTL value for multicast address  */    char *c_addr_multicast_int;     /**< Nb of address for multicast */    osip_list_t *audio_codec;       /**< supported audio codec */    osip_list_t *video_codec;       /**< supported video codec */    osip_list_t *other_codec;       /**< supported application */    int (*fcn_set_info) (void *, sdp_message_t *);   /**< callback for info */    int (*fcn_set_uri) (void *, sdp_message_t *);    /**< callback for uri */    int (*fcn_set_emails) (void *, sdp_message_t *); /**< callback for email */    int (*fcn_set_phones) (void *, sdp_message_t *); /**< callback for phones */    int (*fcn_set_attributes) (void *, sdp_message_t *, int); /**< callback for attr */    int (*fcn_accept_audio_codec) (void *, char *, char *, int, char *); /**< callback to accept audio codec during negotiation */    int (*fcn_accept_video_codec) (void *, char *, char *, int, char *); /**< callback to accept video codec during negotiation */    int (*fcn_accept_other_codec) (void *, char *, char *, char *, char *); /**< callback to accept application during negotiation */    char *(*fcn_get_audio_port) (void *, int);   /**< get port for audio stream */    char *(*fcn_get_video_port) (void *, int);   /**< get port for video stream */    char *(*fcn_get_other_port) (void *, int);   /**< get port for app stream */  };/** * Initialise (and Allocate) a sdp_config element (this element is global). * Stores the initialized structure to conf_out. */  int osip_negotiation_init (osip_negotiation_t ** conf_out);/** * Free resource stored by a sdp_config element. * This method must be called once when the application is stopped. */  void osip_negotiation_free (osip_negotiation_t * conf);/** * Set the local username ('o' field) of all local SDP packet. * @param tmp The username. */  int osip_negotiation_set_o_username (osip_negotiation_t *, char *tmp);/** * Set the local session id ('o' field) of all local SDP packet. * WARNING: this field should be updated for each new SDP packet? * @param tmp The session id. */  int osip_negotiation_set_o_session_id (osip_negotiation_t *, char *tmp);/** * Set the local session version ('o' field) of all local SDP packet. * WARNING: this field should be updated for each new SDP packet? * @param tmp The session version. */  int osip_negotiation_set_o_session_version (osip_negotiation_t *,					      char *tmp);/** * Set the local network type ('o' field) of all local SDP packet. * @param tmp The network type. */  int osip_negotiation_set_o_nettype (osip_negotiation_t *, char *tmp);/** * Set the local address type ('o' field) of all local SDP packet. * @param tmp The address type. */  int osip_negotiation_set_o_addrtype (osip_negotiation_t *, char *tmp);/** * Set the local IP address ('o' field) of all local SDP packet. * @param tmp The IP address. */  int osip_negotiation_set_o_addr (osip_negotiation_t *, char *tmp);/** * Set the local network type ('c' field) of all local SDP packet. * @param tmp The network type. */  int osip_negotiation_set_c_nettype (osip_negotiation_t *, char *tmp);/** * Set the local address type ('c' field) of all local SDP packet. * @param tmp The address type. */  int osip_negotiation_set_c_addrtype (osip_negotiation_t *, char *tmp);/** * Set the local IP address ('c' field) of all local SDP packet. * @param tmp The IP address. */  int osip_negotiation_set_c_addr (osip_negotiation_t *, char *tmp);/** * Set the local ttl for multicast address ('c' field) of all local SDP packet. * @param tmp The ttl for multicast address. */  int osip_negotiation_set_c_addr_multicast_ttl (osip_negotiation_t *,						 char *tmp);/** * Set the local int for multicast address ('c' field) of all local SDP packet. * @param tmp The int for multicast address. */  int osip_negotiation_set_c_addr_multicast_int (osip_negotiation_t *,						 char *tmp);/** * Add a supported audio codec. * Those codecs will be accepted as long as you return 0 when

⌨️ 快捷键说明

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