[sr-dev] adding ice attributes to sdp parser
Juha Heinanen
jh at tutpro.com
Sun Dec 30 11:26:56 CET 2012
Ovidiu Sas writes:
> I think it would make sense to create a list of ice attributes so we
> can add the new attribute to the proper location. Just like we add
> sdp_payload_attr to each stream we should add ice attributes to each
> stream.
ovidiu,
i agree, but that would be huge overhead on top of what i need to add
the relay candidate lines.
> This will make the retrieval of each attribute fast and adding a new
> ice attribute in proper place will be easier (as we would have proper
> pointers to where to insert the lumps).
i'm not sure about the proper place. it looks to me that start of
the a lines is not currently stored anywhere, because the prefixes,
e.g., a=rtpmap:, are omitted.
> The ice attributes management should be very similar to
> sdp_payload_attr management.
>
> typedef struct sdp_ice_attr {
> struct sdp_ice_attr *next;
> str foundation;
> str component_id;
> str transport;
> str connection_addr
> str port;
> str candidate_type;
> int candidateType; /* ICE_HOST/ICE_SRFLX/ICE_PRFLX/ICE_RELAY/ICE_UNKNOWN */
> } sdp_ice_attr_t;
>
> and inside the sdp_stream_cell we add:
> int ice_attrs_num; /**< number of ICE attrs inside a stream */
> struct sdp_ice_attr **p_sdp_ice_attr; /**< fast access pointers to
> ice attrs */
> struct sdp_ice_attr *ice_attr;
>
> Let me know what do you think?
what you suggest is what i thought too, but as i mentioned, it means
lots of extra work over what i currently need. parsing of candidate
lines is all but a trivial thing to do.
how about if i do what you suggest, but don't fill in anything else in
struct sdp_ice_attr except foundation and component_id? if someone
later needs the other field values, they can then add parsing of more
fields.
regarding the pointer to the start of a=candidate line, it would be
foundation.s - 12, right?
-- juha
More information about the sr-dev
mailing list