|
Good day guys,
So on this project i need to set extension data on a pipeline that pulls a RTSP stream from a camera and sends it over UDP. This is done on a seperate ARM board and the pipe architecture is as follows : rtspsrc | queue2 | udpsink. For this part i just set the extension flag of each buffer code (note this is done on the queue2 element):
GstBuffer * gstBuffer = GST_PAD_PROBE_INFO_BUFFER(_gstProbeInfo);
CamPipeline* oPipeObject = (CamPipeline*) _gstData;
GstRTPBuffer rtpBuffer;
memset (&rtpBuffer, 0, sizeof(GstRTPBuffer));
if(gst_rtp_buffer_map(gstBuffer,(GstMapFlags)GST_MAP_READWRITE,&rtpBuffer))
{
gst_rtp_buffer_set_extension(&rtpBuffer,TRUE);
gst_rtp_buffer_unmap(&rtpBuffer);
}
On the PC i catch the pipe and then use it as desired. The pipe architecture for this instance looks like follows: udpsrc | rtph264depay | queue2_1 | valve | queue2_2 | avdec_h264 | theoraenc | oggmux | shout2send. The following code catches the buffer and get the rtp data set(Note this is on the queue2_1) :
GstBuffer * gstBuffer = GST_PAD_PROBE_INFO_BUFFER(_gstProbeInfo);
CamPipeline* oPipeObject = (CamPipeline*) _gstData;
GstRTPBuffer rtpBuffer;
memset (&rtpBuffer, 0, sizeof(GstRTPBuffer));
if(gst_rtp_buffer_map(gstBuffer,(GstMapFlags)GST_MAP_READWRITE,&rtpBuffer))
{
oPipeObject->debug("extension: %d",gst_rtp_buffer_get_extension(&rtpBuffer));
gst_rtp_buffer_unmap(&rtpBuffer);
}
What happens is that the pipe is never set to the playing state and then eventually the following error is printed from gstreamer :
1468241421 DEBUG CamPipeline : Error received from element depayloader: The stream is in the wrong format.
1468241421 DEBUG CamPipeline : Debugging information: gstrtph264depay.c(1216): gst_rtp_h264_depay_process (): /GstPipeline:stream-pipeline/GstRtpH264Depay:depayloader:
NAL unit type 26 not supported yet
If I remove the flag being set on the ARM board the error disappears and the pipe is set to playing
Can anyone plz help with this
Regards
De Bruyn
|