📄 sdp.h
字号:
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 */ int :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[], int 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[], int maxmsgsize, int flags);SOFIAPUBFUN char const *sdp_printing_error(sdp_printer_t *p);SOFIAPUBFUN char const *sdp_message(sdp_printer_t *p);SOFIAPUBFUN int 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 + -