Aller au contenu principal

10.2 One of N Codec Selection (Sélection d'un codec parmi N)

10.2 One of N Codec Selection (Sélection d'un codec parmi N)

Dans les téléphones embarqués, il est fréquent que le processeur de signal numérique (Digital Signal Processor, DSP) utilisé pour la compression puisse prendre en charge plusieurs codecs à la fois, mais qu'une fois le codec choisi, il ne puisse pas être modifié facilement à la volée. Cet exemple montre comment une session peut être établie au moyen d'un échange offer/answer initial, suivi immédiatement d'un second pour figer l'ensemble des codecs.

L'offer initial d'Alice à Bob indique un seul flux audio avec les trois codecs audio disponibles dans le DSP. Le flux est marqué inactive, car aucun média ne peut être reçu tant qu'un codec n'est pas figé :

v=0
o=alice 2890844526 2890844526 IN IP4 host.anywhere.com
s=
c=IN IP4 host.anywhere.com
t=0 0
m=audio 62986 RTP/AVP 0 4 18
a=rtpmap:0 PCMU/8000
a=rtpmap:4 G723/8000
a=rtpmap:18 G729/8000
a=inactive

Bob peut prendre en charge la commutation dynamique entre PCMU et G.723. Il envoie donc l'answer suivante :

v=0
o=bob 2890844730 2890844731 IN IP4 host.example.com
s=
c=IN IP4 host.example.com
t=0 0
m=audio 54344 RTP/AVP 0 4
a=rtpmap:0 PCMU/8000
a=rtpmap:4 G723/8000
a=inactive

Alice peut alors choisir l'un de ces deux codecs. Elle envoie donc un offer mis à jour avec un flux sendrecv :

v=0
o=alice 2890844526 2890844527 IN IP4 host.anywhere.com
s=
c=IN IP4 host.anywhere.com
t=0 0
m=audio 62986 RTP/AVP 4
a=rtpmap:4 G723/8000
a=sendrecv

Bob accepte le codec unique :

v=0
o=bob 2890844730 2890844732 IN IP4 host.example.com
s=
c=IN IP4 host.example.com
t=0 0
m=audio 54344 RTP/AVP 4
a=rtpmap:4 G723/8000
a=sendrecv

Si l'answerer (Bob) ne pouvait prendre en charge qu'un seul codec parmi N, Bob choisirait l'un des codecs de l'offer et le placerait dans son answer. Dans ce cas, Alice ferait un re-INVITE pour activer ce flux avec ce codec.

Comme variante à l'utilisation de a=inactive lors du premier échange, Alice peut lister tous les codecs et, dès qu'elle reçoit un média de Bob, générer un offer mis à jour qui fige le codec sur celui qui vient d'être reçu. Bien entendu, si Bob ne prend en charge qu'un codec parmi N, il n'y aurait qu'un seul codec dans son answer et, dans ce cas, il n'est pas nécessaire de re-INVITE pour figer un codec unique.