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

📄 sdp.h

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 H
📖 第 1 页 / 共 2 页
字号:
  sdp_bandwidth_t  *m_bandwidths;	/**< Bandwidth specification */  sdp_key_t        *m_key;		/**< Media key */  sdp_attribute_t  *m_attributes;	/**< Media attributes */  void             *m_user;	        /**< User data. */    /** Rejected media */  unsigned          m_rejected : 1;       /** Inactive, recvonly, sendonly, sendrecv */  /* sdp_mode_t */ unsigned m_mode : 2;  unsigned          : 0;};/** Text list */struct sdp_list_s{  int              l_size;		/**< sizeof sdp_list_t  */  sdp_list_t      *l_next;		/**< Next text entry in list */  sdp_text_t      *l_text;	        /**< Text as C string */};/** Mapping from RTP payload to codec. *  * The sdp_rtpmap_t() structure defines a mapping from an RTP payload to a * particular codec.  In case of well-known payloads, the sdp_rtpmap_t() * structure may be predefined, that is, generated by SDP parser without * corresponding "a" line in the SDP.  The sdp_rtpmap_t() structure may also * contain the @c fmtp attribute, which is used to convey format-specific * parameters. */struct sdp_rtpmap_s {  int            rm_size;		/**< sizeof sdp_rtpmap_t  */  sdp_rtpmap_t  *rm_next;		/**< Next RTP map entry  */  sdp_text_t    *rm_encoding;		/**< Codec name */  unsigned long  rm_rate;		/**< Sampling rate */  sdp_text_t    *rm_params;		/**< Format-specific parameters  */  sdp_text_t    *rm_fmtp;	        /**< Contents of fmtp */  unsigned       rm_predef : 1;	        /**< is this entry well-known? */  unsigned       rm_pt : 7;		/**< Payload type */  unsigned       rm_any : 1;	        /**< Wildcard entry */  unsigned       :0;};SOFIAPUBVAR sdp_rtpmap_t const * const sdp_rtpmap_well_known[128];/** Duplicate an SDP session description structure. */SOFIAPUBFUN sdp_session_t *sdp_session_dup(su_home_t *, sdp_session_t const *);/** Duplicate an SDP origin structure. */SOFIAPUBFUNsdp_origin_t    *sdp_origin_dup(su_home_t *, sdp_origin_t const *);/** Duplicate an SDP connection structure. */SOFIAPUBFUNsdp_connection_t *sdp_connection_dup(su_home_t *home, sdp_connection_t const *);/** Duplicate an SDP bandwidth structure. */SOFIAPUBFUNsdp_bandwidth_t  *sdp_bandwidth_dup(su_home_t *home, sdp_bandwidth_t const *);/** Duplicate an SDP time structure. */SOFIAPUBFUNsdp_time_t       *sdp_time_dup(su_home_t *home, sdp_time_t const *);/** Duplicate an SDP repeat structure. */SOFIAPUBFUNsdp_repeat_t     *sdp_repeat_dup(su_home_t *home, sdp_repeat_t const *);/** Duplicate an SDP timezone structure. */SOFIAPUBFUNsdp_zone_t       *sdp_zone_dup(su_home_t *home, sdp_zone_t const *);/** Duplicate an SDP key structure. */SOFIAPUBFUNsdp_key_t        *sdp_key_dup(su_home_t *home, sdp_key_t const *);/** Duplicate an SDP attribute structure. */SOFIAPUBFUNsdp_attribute_t  *sdp_attribute_dup(su_home_t *home, sdp_attribute_t const *);/** Duplicate an SDP media description structure. */SOFIAPUBFUNsdp_media_t *sdp_media_dup(su_home_t *, sdp_media_t const *,			   sdp_session_t *);/** Duplicate a list of SDP media description structures. */SOFIAPUBFUNsdp_media_t *sdp_media_dup_all(su_home_t *, sdp_media_t const *,			       sdp_session_t *);/** Duplicate a list structure. */SOFIAPUBFUNsdp_list_t       *sdp_list_dup(su_home_t *home, sdp_list_t const *);/** Duplicate an rtpmap structure. */SOFIAPUBFUNsdp_rtpmap_t     *sdp_rtpmap_dup(su_home_t *home, sdp_rtpmap_t const *);/** Compare two session descriptions. */SOFIAPUBFUN int sdp_session_cmp(sdp_session_t const *a,				sdp_session_t const *b);/** Compare two origin fields */SOFIAPUBFUN int sdp_origin_cmp(sdp_origin_t const *a,			       sdp_origin_t const *b);/** Compare two connection fields */SOFIAPUBFUN int sdp_connection_cmp(sdp_connection_t const *,				   sdp_connection_t const *b);/** Compare two bandwidth (b=) fields */SOFIAPUBFUN int sdp_bandwidth_cmp(sdp_bandwidth_t const *a,				  sdp_bandwidth_t const *b);/** Compare two time fields */SOFIAPUBFUN int sdp_time_cmp(sdp_time_t const *a, sdp_time_t const *b);/* Compare two repeat (r=) fields */SOFIAPUBFUN int sdp_repeat_cmp(sdp_repeat_t const *a, sdp_repeat_t const *b);/* Compare two zone (z=) fields */SOFIAPUBFUN int sdp_zone_cmp(sdp_zone_t const *a, sdp_zone_t const *b);/** Compare two key (k=) fields. */SOFIAPUBFUN int sdp_key_cmp(sdp_key_t const *a, sdp_key_t const *b);/** Compare two attribute (a=) fields */SOFIAPUBFUN int sdp_attribute_cmp(sdp_attribute_t const *,				  sdp_attribute_t const *);/** Compare two media (m=) descriptions */SOFIAPUBFUN int sdp_media_cmp(sdp_media_t const *, sdp_media_t const *);/** Compare two rtpmap structures. */SOFIAPUBFUN int sdp_rtpmap_cmp(sdp_rtpmap_t const *a, sdp_rtpmap_t const *b);/** Compare two text lists */SOFIAPUBFUN int sdp_list_cmp(sdp_list_t const *a, sdp_list_t const *b);/** Get connections of a media description */SOFIAPUBFUN sdp_connection_t *sdp_media_connections(sdp_media_t const *m);/** Check if media uses RTP as its transport protocol  */SOFIAPUBFUN int sdp_media_has_rtp(sdp_media_t const *m);/** Set media type */SOFIAPUBFUN void sdp_media_type(sdp_media_t *m, char const *s);/** Set transport protocol */SOFIAPUBFUN void sdp_media_transport(sdp_media_t *m, char const *s);/** Find named attribute from given list. */SOFIAPUBFUN sdp_attribute_t  *sdp_attribute_find(sdp_attribute_t const *a,						 char const *name);/** Find named attribute from given lists. */SOFIAPUBFUN sdp_attribute_t *sdp_attribute_find2(sdp_attribute_t const *a, 						 sdp_attribute_t const *a2, 						 char const *name);/** Get session mode from attribute list. */SOFIAPUBFUN sdp_mode_t sdp_attribute_mode(sdp_attribute_t const *a,					  sdp_mode_t defmode);/** Get session mode from attribute list. */SOFIAPUBFUN sdp_attribute_t *sdp_attribute_by_mode(su_home_t *, 						   sdp_mode_t mode);/** Find a mapped attribute. */SOFIAPUBFUN sdp_attribute_t *sdp_attribute_mapped_find(sdp_attribute_t const *a, 					   char const *name, 					   int pt, char **return_result);/** Append a attribute to a list of attributes. */SOFIAPUBFUN void sdp_attribute_append(sdp_attribute_t **list, 			  sdp_attribute_t const *a);/** Replace a attribute within a list of attributes. */SOFIAPUBFUN int sdp_attribute_replace(sdp_attribute_t **list, 				      sdp_attribute_t *a,				      sdp_attribute_t **return_replaced);/** Remove a named attribute from a list of attributes. */SOFIAPUBFUN sdp_attribute_t *sdp_attribute_remove(sdp_attribute_t **list, 						  char const *name);/* Return 1 if m= line struct matches with given type and name */SOFIAPUBFUN unsigned sdp_media_match(sdp_media_t const *m,				     sdp_media_e type,				     sdp_text_t *type_name,				     sdp_proto_e proto,				     sdp_text_t *proto_name);SOFIAPUBFUN unsigned sdp_media_match_with(sdp_media_t const *a,					  sdp_media_t const *b);/** Count media lines in SDP. */SOFIAPUBFUN unsigned sdp_media_count(sdp_session_t const *sdp,				     sdp_media_e type,				     sdp_text_t *type_name,				     sdp_proto_e proto,				     sdp_text_t *proto_name);SOFIAPUBFUN unsigned sdp_media_count_with(sdp_session_t const *sdp,					  sdp_media_t const *m0);/** Return true if media uses RTP */SOFIAPUBFUN int sdp_media_uses_rtp(sdp_media_t const *m);/** Check if payload type, rtp rate and parameters match in rtpmaps*/SOFIAPUBFUN int sdp_rtpmap_match(sdp_rtpmap_t const *, sdp_rtpmap_t const *);/** Search for matching rtpmap from list */SOFIAPUBFUN sdp_rtpmap_t *sdp_rtpmap_find_matching(sdp_rtpmap_t const *list,						   sdp_rtpmap_t const *rm);/* ======================================================================== *//** Flags given to sdp_parse()/sdp_print(). */enum sdp_parse_flags_e {  /** Accept only conforming SDP */  sdp_f_strict = 1,  /** Accept any network type. */  sdp_f_anynet = 2,		  /** Reallocate message. */   sdp_f_realloc = 4,  /** Include well-known rtpmaps in message, too */  sdp_f_all_rtpmaps = 8,  /** Print buffer already contains a valid prefix */  sdp_f_print_prefix = 16,  /** Connection line with INADDR_ANY is considered equal to sendonly */  sdp_f_mode_0000 = 32,  /** Don't run sanity check */  sdp_f_insane = 64,  /** Don't require c= for each media line */  sdp_f_c_missing = 128,  /** Parse SDP config files */  sdp_f_config = 256,  /** Do not generate or parse SDP mode */  sdp_f_mode_manual = 512,  /** Always generate media-level mode attributes */  sdp_f_mode_always = 1024};/** SDP parser handle. */typedef struct sdp_parser_s sdp_parser_t;typedef sdp_parser_t  *sdp_parser;SOFIAPUBFUN sdp_parser_t *sdp_parse(su_home_t *,				    char const msg[], issize_t msgsize,				    int flags);SOFIAPUBFUN char const *sdp_parsing_error(sdp_parser_t *p);SOFIAPUBFUN sdp_session_t *sdp_session(sdp_parser_t *p);SOFIAPUBFUN void sdp_parser_free(sdp_parser_t *p);SOFIAPUBFUN int sdp_sanity_check(sdp_parser_t *);SOFIAPUBFUN su_home_t *sdp_parser_home(sdp_parser_t *);/* ======================================================================== *//** SDP printer handle */typedef struct sdp_printer_s sdp_printer_t;typedef sdp_printer_t *sdp_printer;SOFIAPUBFUN sdp_printer_t *sdp_print(su_home_t *, sdp_session_t const *session, 				     char msgbuf[], isize_t maxmsgsize, int flags);SOFIAPUBFUN char const *sdp_printing_error(sdp_printer_t *p);SOFIAPUBFUN char const *sdp_message(sdp_printer_t *p);SOFIAPUBFUN isize_t sdp_message_size(sdp_printer_t *p);SOFIAPUBFUN void sdp_printer_free(sdp_printer_t *p);#define sdp_mapped_attribute_find sdp_attribute_mapped_find#define sdp_free_parser  sdp_parser_free#define sdp_free_printer sdp_printer_freeSOFIA_END_DECLS#endif /* SDP_H */

⌨️ 快捷键说明

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