10.2 One of N Codec Selection (Selezione di un codec tra N)
10.2 One of N Codec Selection (Selezione di un codec tra N)
Nei telefoni embedded è frequente che il Digital Signal Processor (DSP) usato per la compressione possa supportare più codec contemporaneamente, ma che, una volta selezionato un codec, non sia possibile cambiarlo facilmente al volo. Questo esempio mostra come una sessione possa essere impostata mediante uno scambio offer/answer iniziale, seguito immediatamente da un secondo per fissare l'insieme dei codec.
L'offer iniziale da Alice a Bob indica un singolo flusso audio con i tre codec audio disponibili nel DSP. Il flusso è marcato come inactive, poiché non è possibile ricevere media finché un codec non è stato fissato:
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 può supportare il passaggio dinamico tra PCMU e G.723. Invia quindi il seguente answer:
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 può quindi selezionare uno di questi due codec. Invia pertanto un offer aggiornato con un flusso 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 accetta il codec unico:
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
Se l'answerer (Bob) fosse stato capace di supportare solo un codec tra N, Bob selezionerebbe uno dei codec dell'offer e lo inserirebbe nel suo answer. In questo caso, Alice eseguirebbe un re-INVITE per attivare quel flusso con quel codec.
In alternativa all'uso di a=inactive nel primo scambio, Alice può elencare tutti i codec e, non appena riceve media da Bob, generare un offer aggiornato che fissa il codec a quello appena ricevuto. Naturalmente, se Bob supporta solo un codec tra N, nel suo answer ci sarebbe un solo codec e, in questo caso, non sarebbe necessario un re-INVITE per fissare un singolo codec.