Hi, I have a question about the handling of payload types in XEP-0167. The spec says that
"The session-accept message SHOULD include a subset of the payload types sent by the
initiator". When are two payload types considered equal? This is not obvious to me
because there are optional attributes as well as parameters. I would think that definitely
name, clockrate, and id need to match, but I'm not sure about the other attributes and
the parameter
values. I think a precise answer to this is needed to determine whether one list of
payload types is a subset of another, and therefore whether a given session-accept meets
this part of the specification.
Here is an example from a call between two XMPP clients, Dino and Monal
The session-initiate message sent by Dino includes this list of payload types:
<payload-type id='111' channels='2' clockrate='48000'
name='opus'>
<parameter name='useinbandfec' value='1' />
</payload-type>
<payload-type id='112' clockrate='32000' name='speex' />
<payload-type id='113' clockrate='16000' name='speex' />
<payload-type id='114' clockrate='8000' name='speex' />
<payload-type id='9' clockrate='8000' name='G722' />
<payload-type id='0' clockrate='8000' name='PCMU' />
<payload-type id='8' clockrate='8000' name='PCMA' />
And the session-accept message sent by Monal includes this list of payload-types:
<payload-type clockrate='8000' name='PCMU' id='0' />
<payload-type channels='2' id='111' clockrate='48000'
name='opus'>
<parameter name='profile_level_id' value='4325392' />
<parameter name='useinbandfec' value='true' />
<parameter name='minptime' value='10' />
</payload-type>
<payload-type clockrate='8000' name='G722' id='9' />
<payload-type clockrate='8000' name='PCMA' id='8' />
This currently causes a problem in Dino because one of the responder's payload types
(opus) is judged to not be present in the list of sent payload types, because it is not
(strictly speaking) equal to any of the sent payload types, because it has a different
number of parameters.
In this example, is the responder violating the spec by including extra parameters for the
opus payload type, or is the initiator being too strict when comparing the payload types
for equality?
Thanks, Jacques
Show replies by date