[asterisk-users] Problem with video phone call, error in sdp media handling?

Karsten Wemheuer kwem at gmx.de
Wed Oct 19 10:37:19 CDT 2011


Hi,

I try to setup a video call and I sometimes get no video.

I set up a Yealink VP 2009 and a Ninja Softphone. Both a in the same
LAN. Asterisk release is 1.8.7.0.

Call from Yealink to the Ninja is working fine, if I start the call in
video mode. In this case I can switch between voice-only and video and
back without any problem.

If I try the opposite direction there is no video. The Ninja starts the
call in voice-mode and try to add video in an second invite. The same
happens, if I start the call in voice-mode from the Yealink phone.

As far as I can see there seems to be something broken in SDP handling.

In the following test phone1 is calling extension 200, which is
extension of phone2.

In case of failure phone1 sends:
        INVITE sip:200 at 192.168.10.75 SIP/2.0.
        Via: SIP/2.0/UDP 192.168.10.106:5062;branch=z9hG4bK1784123944.
        From: "Karsten" <sip:phone1 at 192.168.10.75>;tag=1171101891.
        To: <sip:200 at 192.168.10.75>.
        Call-ID: 1555625029 at 192.168.10.106.
        CSeq: 1 INVITE.
        Contact: <sip:phone1 at 192.168.10.106:5062>.
        Content-Type: application/sdp.
        Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY,
        REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE.
        Max-Forwards: 70.
        User-Agent: VideoPhone-V8438 22.30.0.60 00:15:65:1b:20:3f.
        Supported: replaces,100rel.
        Allow-Events: talk,hold,conference,refer.
        Content-Length: 274.
        .
        v=0.
        o=- 20006 20006 IN IP4 192.168.10.106.
        s=SDP data.
        c=IN IP4 192.168.10.106.
        t=0 0.
        m=audio 10020 RTP/AVP 0 8 18 101.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:18 G729/8000.
        a=fmtp:18 annexb=no.
        a=fmtp:101 0-15.
        a=rtpmap:101 telephone-event/8000.
        a=sendrecv.

Asterisk sends to the second phone:
        INVITE sip:phone2 at 192.168.10.141:1116 SIP/2.0.
        Via: SIP/2.0/UDP 192.168.10.75:5060;branch=z9hG4bK3aa00bba.
        Max-Forwards: 70.
        From: "User1" <sip:phone1 at 192.168.10.75>;tag=as6e33f30b.
        To: <sip:phone2 at 192.168.10.141:1116>.
        Contact: <sip:phone1 at 192.168.10.75:5060>.
        Call-ID: 73a216f9167396885e099d0f2e5d4ca2 at 192.168.10.75.
        CSeq: 102 INVITE.
        User-Agent: IPTAM PBX.
        Date: Wed, 19 Oct 2011 14:49:17 GMT.
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
        NOTIFY, INFO, PUBLISH.
        Supported: replaces, timer.
        P-Asserted-Identity: "User1" <sip:phone1 at 192.168.10.75>.
        Content-Type: application/sdp.
        Content-Length: 454.
        .
        v=0.
        o=root 1873948927 1873948927 IN IP4 192.168.10.75.
        s=Asterisk PBX 1.8.7.0-1.
        c=IN IP4 192.168.10.75.
        b=CT:384.
        t=0 0.
        m=audio 18858 RTP/AVP 8 0 101.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:101 telephone-event/8000.
        a=fmtp:101 0-16.
        a=ptime:20.
        a=sendrecv.
        m=video 16964 RTP/AVP 31 34 98 99 104.
        a=rtpmap:31 H261/90000.
        a=rtpmap:34 H263/90000.
        a=rtpmap:98 h263-1998/90000.
        a=rtpmap:99 H264/90000.
        a=rtpmap:104 MP4V-ES/90000.
        a=sendrecv.

So asterisks adds a second media attribute for video.

The OK from the second phone looks like this:
        SIP/2.0 200 OK.
        Via: SIP/2.0/UDP 192.168.10.75:5060;branch=z9hG4bK3aa00bba.
        From: "User1" <sip:phone1 at 192.168.10.75>;tag=as6e33f30b.
        To: <sip:phone2 at 192.168.10.141:1116>;tag=30873f0b0ea954d6.
        Call-ID: 73a216f9167396885e099d0f2e5d4ca2 at 192.168.10.75.
        CSeq: 102 INVITE.
        User-Agent: Ninja GlobalIPTel.
        Max-Forwards: 70.
        Contact: <sip:phone2 at 192.168.10.141:1116>.
        Content-Type: application/sdp.
        Content-Length: 322.
        .
        v=0.
        o=- 3528024652 3528024652 IN IP4 192.168.10.141.
        s=SIPCall.
        i=VoIPCall.
        c=IN IP4 192.168.10.141.
        t=0 0.
        m=audio 24608 RTP/AVP 8 0 101.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:101 telephone-event/8000.
        a=fmtp:101 0-15.
        a=ptime:20.
        a=sendrecv.
        m=video 24610 RTP/AVP 34.
        a=rtpmap:34 H263/90000.
        a=sendrecv.

There is also a m=video attribute.

Asterisk sends the OK to the initiating device:
        SIP/2.0 200 OK.
        Via: SIP/2.0/UDP
        192.168.10.106:5062;branch=z9hG4bK1387721920;received=192.168.10.106.
        From: "Karsten" <sip:phone1 at 192.168.10.75>;tag=1171101891.
        To: <sip:200 at 192.168.10.75>;tag=as5d003051.
        Call-ID: 1555625029 at 192.168.10.106.
        CSeq: 2 INVITE.
        Server: IPTAM PBX.
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
        NOTIFY, INFO, PUBLISH.
        Supported: replaces, timer.
        Contact: <sip:200 at 192.168.10.75:5060>.
        Content-Type: application/sdp.
        Content-Length: 262.
        .
        v=0.
        o=root 212893361 212893361 IN IP4 192.168.10.75.
        s=Asterisk PBX 1.8.7.0-1.
        c=IN IP4 192.168.10.75.
        t=0 0.
        m=audio 17248 RTP/AVP 8 0 101.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:101 telephone-event/8000.
        a=fmtp:101 0-16.
        a=ptime:20.
        a=sendrecv.

There is no m=video attribute.

Now, when switching to video, the initiating phone sends:
        INVITE sip:200 at 192.168.10.75:5060 SIP/2.0.
        Via: SIP/2.0/UDP 192.168.10.106:5062;branch=z9hG4bK689886900.
        From: "Karsten" <sip:phone1 at 192.168.10.75>;tag=1171101891.
        To: <sip:200 at 192.168.10.75>;tag=as5d003051.
        Call-ID: 1555625029 at 192.168.10.106.
        CSeq: 3 INVITE.
        Contact: <sip:phone1 at 192.168.10.106:5062>.
        Proxy-Authorization: Digest username="phone1", realm="asterisk",
        nonce="63635ca5", uri="sip:200 at 192.168.10.75:5060",
        response="06f969b3a3555c5b9428a75fa27fc9ae", algorithm=MD5.
        Content-Type: application/sdp.
        Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY,
        REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE.
        Max-Forwards: 70.
        User-Agent: VideoPhone-V8438 22.30.0.60 00:15:65:1b:20:3f.
        Allow-Events: talk,hold,conference,refer.
        Supported: 100rel.
        Content-Length: 361.
        .
        v=0.
        o=- 20006 20008 IN IP4 192.168.10.106.
        s=SDP data.
        c=IN IP4 192.168.10.106.
        t=0 0.
        m=audio 10020 RTP/AVP 0 8 18 101.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:18 G729/8000.
        a=fmtp:18 annexb=no.
        a=fmtp:101 0-15.
        a=rtpmap:101 telephone-event/8000.
        a=sendrecv.
        m=video 10022 RTP/AVP 34.
        a=rtpmap:34 H263/90000.
        a=fmtp:34 CIF=1; QCIF=1.
        a=sendrecv.

Now with a second media line.

Asterisk sends a 200 OK to the initiator
        SIP/2.0 200 OK.
        Via: SIP/2.0/UDP
        192.168.10.106:5062;branch=z9hG4bK689886900;received=192.168.10.106.
        From: "Karsten" <sip:phone1 at 192.168.10.75>;tag=1171101891.
        To: <sip:200 at 192.168.10.75>;tag=as5d003051.
        Call-ID: 1555625029 at 192.168.10.106.
        CSeq: 3 INVITE.
        Server: IPTAM PBX.
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
        NOTIFY, INFO, PUBLIS
        H.
        Supported: replaces, timer.
        Contact: <sip:200 at 192.168.10.75:5060>.
        Content-Type: application/sdp.
        Content-Length: 336.
        .
        v=0.
        o=root 212893361 212893363 IN IP4 192.168.10.141.
        s=Asterisk PBX 1.8.7.0-1.
        c=IN IP4 192.168.10.141.
        b=CT:384.
        t=0 0.
        m=audio 24608 RTP/AVP 8 0 101.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:101 telephone-event/8000.
        a=fmtp:101 0-16.
        a=ptime:20.
        a=sendrecv.
        m=video 24610 RTP/AVP 34.
        a=rtpmap:34 H263/90000.
        a=sendrecv.

There is a media attribute for video. But now asterisk sends the INVITE
to second phone:
        INVITE sip:phone2 at 192.168.10.141:1116 SIP/2.0.
        Via: SIP/2.0/UDP 192.168.10.75:5060;branch=z9hG4bK2df93523.
        Max-Forwards: 70.
        From: "User1" <sip:phone1 at 192.168.10.75>;tag=as6e33f30b.
        To: <sip:phone2 at 192.168.10.141:1116>;tag=30873f0b0ea954d6.
        Contact: <sip:phone1 at 192.168.10.75:5060>.
        Call-ID: 73a216f9167396885e099d0f2e5d4ca2 at 192.168.10.75.
        CSeq: 105 INVITE.
        User-Agent: IPTAM PBX.
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
        NOTIFY, INFO, PUBLISH.
        Supported: replaces, timer.
        P-Asserted-Identity: "User1" <sip:phone1 at 192.168.10.75>.
        Content-Type: application/sdp.
        Content-Length: 266.
        .
        v=0.
        o=root 1873948927 1873948930 IN IP4 192.168.10.106.
        s=Asterisk PBX 1.8.7.0-1.
        c=IN IP4 192.168.10.106.
        t=0 0.
        m=audio 10020 RTP/AVP 8 0 101.
        a=rtpmap:8 PCMA/8000.
        a=rtpmap:0 PCMU/8000.
        a=rtpmap:101 telephone-event/8000.
        a=fmtp:101 0-16.
        a=ptime:20.
        a=sendrecv.
Now there is no video attribute.

Is this a known issue or am I doing something wrong? Should I open an
issue on jira?

Thanks,

Karsten




More information about the asterisk-users mailing list