Hi Silvio, Because you are starting the gstreamer first, the problem might be that there are no I-frames sent after the SIP INVITE. You could check with wireshark. See if you can get raspivid to periodically generate I-frames. Regards, Bill On 6/5/2014 6:22 PM, SL wrote: > Hi, > I can do videocall with pjsua, but video latency is unacceptable and > frame rate is really too slow. > > Since gstreamer supports video acceleration while ffmpeg does not but > uses libx264 that causes an intolerable cpu load, I've made a simple > attempt to substitute pjsip video streamer with gstreamer pipeline. > > I first launced: > $ raspivid -t 999999 -w 384 -h 256 -fps 15 -hf -b 1000000 -o - | > gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 > pt=96 ! gdppay ! udpsink host=192.168.1.99 port=9078 > > it shows: > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > [....] > Pipeline is PREROLLED ... > Setting pipeline to PLAYING ... > /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: timestamp = 3672856811 > /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: seqnum = 15147 > New clock: GstSystemClock > > then, in the same ARM platform, with another ssh terminal, I launched: > $ ./pjsua --video > > Since camera driver is already in use by gstreamer pipeline, pjsua is > forced to avoid using it: > > pjsua_vid.c ..Initializing video subsystem.. > v4l2_dev.c ...Video4Linux2 has 1 devices > colorbar_dev.c ...Colorbar video src initialized with 1 device(s): > colorbar_dev.c ... 0: Colorbar generator > > this is the log while videocall is starting: note that now pjsua > detect nmal video camera driver and tries to start v4l2 video stream > from it, but it clearly fails, because the driver is already in use by > raspivid. > > m=video 9078 RTP/AVP 97 > a=rtpmap:97 H264/90000 > a=fmtp:97 profile-level-id=428014 > > pjsua_app.c ....Call 0 state changed to CONNECTING > pjsua_media.c ....Call 0: updating media.. > pjsua_aud.c .....Audio channel update.. > strm0x63ed7c ......VAD temporarily disabled > strm0x63ed7c ......Encoder stream started > strm0x63ed7c ......Decoder stream started > pjsua_media.c .....Audio updated, stream #0: speex (sendrecv) > pjsua_vid.c .....Video channel update.. > vstenc0x65112c ......Encoder stream started > vstdec0x65112c ......Decoder stream started > pjsua_vid.c ......Setting up RX.. > pjsua_vid.c .......Creating video window: type=stream, cap_id=-1, > rend_id=2 > vid_port.c ........Opening device SDL renderer [SDL] for render: > format=I420, size=768x512 @22:1 fps > vid_port.c ........Device SDL renderer [SDL] opened: format=I420, > size=768x512 @22:1 fps > pjsua_vid.c ........stream window id 0 created for cap_dev=-1 rend_dev=2 > pjsua_vid.c ........Window 0 created > sdl_dev.c .......Starting sdl video stream > pjsua_vid.c ......Setting up TX.. > pjsua_vid.c .......Creating video window: type=preview, cap_id=0, > rend_id=2 > vid_port.c ........Opening device mmal service 15.1 [v4l2] for > capture: format=YUY2, size=384x256 @15:1 fps > vid_port.c ........Device mmal service 15.1 [v4l2] opened: > format=YUY2, size=384x256 @15:1 fps > vid_port.c ........Opening device SDL renderer [SDL] for render: > format=I420, size=384x256 @15:1 fps > vid_port.c ........Device SDL renderer [SDL] opened: format=I420, > size=384x256 @15:1 fps > pjsua_vid.c ........preview window id 1 created for cap_dev=0 rend_dev=2 > pjsua_vid.c ........Window 1 created > v4l2_dev.c .......Starting v4l2 video stream mmal service 15.1 > libv4l2: error turning on stream: Invalid argument > libv4l2: error dequeuing buf: Invalid argument > libv4l2: error dequeuing buf: Invalid argument > libv4l2: error dequeuing buf: Invalid argument > v4l2_dev.c .......Stopping v4l2 video stream mmal service 15.1 > pjsua_media.c .....pjsua_vid_channel_update() failed for call_id 0 > media 1: Invalid argument > pjsua_app.c ....Call 0 media 0 [type=audio], status is Active > > The situation at this point is: > - a frozen window on remote user agent (Linphone) that means that it > is not able to catch the H264 videostream from gstreamer pipeline, > although video streaming matches negotiated datas (H264, 384x256, > video RTP port=9078, ) > > - sdl vindow continues to be rendered to full video, instead to be > 384x256 in size as it should be: this could mean that > on_call_media_event() is not called (when connection closes it writes: > "TX last update:never") > > When I close communication: > > [DISCONNCTD] To: sip:toto at 192.168.1.107;tag=29298 > Call time: 00h:01m:00s, 1st res in 65 ms, conn in 4868ms > #0 audio speex @16kHz, sendrecv, peer=192.168.1.107:7078 > SRTP status: Not active Crypto-suite: > RX pt=98, last update:00h:00m:01.212s ago > total 3.0Kpkt 211.1KB (331.8KB +IP hdr) @avg=27.7Kbps/43.6Kbps > pkt loss=1 (0.0%), discrd=1 (0.0%), dup=0 (0.0%), reord=0 > (0.0%) > (msec) min avg max last dev > loss period: 20.000 20.000 20.000 20.000 0.000 > jitter : 1.187 21.201 33.437 25.125 1.862 > TX pt=98, ptime=20, last update:00h:00m:00.300s ago > total 2.1Kpkt 51.6KB (136.1KB +IP hdr) @avg=6.7Kbps/17.9Kbps > pkt loss=0 (0.0%), dup=0 (0.0%), reorder=0 (0.0%) > (msec) min avg max last dev > loss period: 0.000 0.000 0.000 0.000 0.000 > jitter : 11.125 14.729 20.187 13.562 2.299 > RTT msec : 9.033 32.027 66.000 37.704 18.107 > #1 video H264, inactive, peer=192.168.1.107:9078 > SRTP status: Not active Crypto-suite: > RX last update:00h:00m:59.270s ago > total 549pkt 500.5KB (522.5KB +IP hdr) @avg=66.1Kbps/69.0Kbps > pkt loss=0 (0.0%), discrd=1 (0.2%), dup=0 (0.0%), reord=0 > (0.0%) > (msec) min avg max last dev > loss period: 0.000 0.000 0.000 0.000 0.000 > jitter : 11.766 19.658 38.666 15.688 5.035 > TX last update:never > total 0pkt 0B (0B +IP hdr) @avg=0bps/0bps > pkt loss=0 (0.0%), dup=0 (0.0%), reorder=0 (0.0%) > (msec) min avg max last dev > loss period: 0.000 0.000 0.000 0.000 0.000 > jitter : 0.000 0.000 0.000 0.000 0.000 > RTT msec : 0.000 0.000 0.000 0.000 0.000 > > > Is there anyone that could tell me why remote user agent is not able > to show gstreamer H264 video stream? > > Thanks in advance > Best regards > Silvio > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org