Hey everyone!
I’m trying to update a pipeline that works ok in Windows (and nvidia Jetson, just very very slowly) that decodes an udp stream to send it to webrtcbin from using vp8enc/vp8dec to using hardware acceleration and I’m having a lot of issues while doing so, the working cpu pipeline is the following:
pipe="udpsrc multicast-group=224.1.1.1 auto-multicast=true port=5000 ! queue ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8,framerate=25/1 ! rtpvp8depay ! vp8dec ! videoconvert ! queue ! vp8enc deadline=1 ! rtpvp8pay ! queue ! capsfilter caps=application/x-rtp,media=video,encoding-name=VP8,payload=97 ! webrtcbin name=sendrecv";
I tried several combinations around the following pipeline (not working) :
pipeline = "udpsrc multicast-group=224.1.1.1 auto-multicast=true port=5000 ! queue ! application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8,framerate=25/1 ! rtpvp8depay ! omxvp8dec ! video/x-raw, format=RGBA ! nvvidconv ! video/x-raw(memory:NVMM), formatt=I420 ! nvv4l2vp8enc ! video/x-vp8 ! rtpvp8pay ! queue ! capsfilter caps=application/x-rtp,media=video,encoding-name=VP8,payload=97 ! webrtcbin name=sendrecv";
but nothing seems to link without issues, I’m pretty sure the answer it’s close but I haven’t managed to find it, any advice?
EDIT: Little update, I’ve managed to make the following pipeline work:
pipelineHw = "udpsrc multicast-group=224.1.1.1 auto-multicast=true port=5000 ! queue ! "
" application/x-rtp,media=video,clock-rate=90000,encoding-name=VP8,framerate=25/1 ! rtpvp8depay ! video/x-vp8 ! omxvp8dec ! "
" nvvidconv ! video/x-raw(memory:NVMM), format=RGBA ! nvvidconv ! video/x-raw(memory:NVMM), formatt=I420 ! nvv4l2vp8enc ! "
" video/x-vp8 ! rtpvp8pay ! queue ! "
"capsfilter caps=application/x-rtp,media=video,encoding-name=VP8,payload=97 ! webrtcbin name=sendrecv";
now it’s streaming a lot faster than before but I’m getting a really weird waring each frame:
(exe:14223): GStreamer-CRITICAL **: 16:18:52.304: gst_buffer_resize_range: assertion 'bufmax >= bufoffs + offset + size' failed
0:03:15.562139672 14223 0x7f6c006ad0 WARN v4l2bufferpool gstv4l2bufferpool.c:1480:gst_v4l2_buffer_pool_dqbuf:<nvv4l2vp8enc1:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
0:03:15.562171128 14223 0x7f6c006ad0 WARN v4l2bufferpool gstv4l2bufferpool.c:1480:gst_v4l2_buffer_pool_dqbuf:<nvv4l2vp8enc1:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
0:03:15.562200056 14223 0x7f6c006ad0 WARN v4l2bufferpool gstv4l2bufferpool.c:1480:gst_v4l2_buffer_pool_dqbuf:<nvv4l2vp8enc1:pool:sink> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
0:03:15.562171928 14223 0x7f98017400 LOG dtlssrtpdemux gstdtlssrtpdemux.c:129:sink_chain:<dtlssrtpdemux0> pushing rtp packet
I can’t find the reason behind this and don’t know if it affects performance in any way, anyone know the reason?
EDIT2:
I’ve noticed this waring has also poped up in the previous element of the app. This element is based on:
gst_gpumat
But I don’t really understand what I could have broken there to change the buffer size, I’m just drawing over the gpu matt and returning it to the buffer and that error wasn’t there before (I’ve updated from gstreamer 14.5 to 16.2 since writting this, the error appeared with the update)