gst-plugins-bad: avtp: error on gst_avtp_src_start:<avtpsrc0> Failed to open socket: Operation not permitted

Desouza, Ederson ederson.desouza at intel.com
Fri Jul 17 17:09:07 UTC 2020


On Fri, 2020-07-17 at 09:37 -0400, John Rama wrote:
> Thanks Desouza
> 
> > From the log, it appears that no avtp packet arrives with M bit set, so
> > avtpcvfdepay keeps just accumulating nal units.
> > Can you ensure that what is generating the stream is properly setting
> > the M bit on the last access unit ("packet of a frame")? Wireshark can
> > be of help here.
> > 
> 
> Confirmed the cvf stream generated by talker has no "M bit" set at all.
> So, this is a reason. thank you so much for your help for me to reach this conclusion !!
> 
> 
> Now question is does talker really need to set M bit ?

Well, IEEE 1722-2016, Annex F (Protocol Implementation Conformance
Statement), Table F.12, Item H.264-4 says that, *yes*, the talker
really need to set the M bit...

> 
> IEEE1722 section "8.5.2.4 M field" says 
> > The M field shall be set according to RFC6184, Section 5.1.
> 
> And RFC6184, Section 5.1 says 
> https://tools.ietf.org/html/rfc6184
> 
> > Marker bit (M): 1 bit
> > Set for the very last packet of the access unit indicated by the
> > RTP timestamp, in line with the normal use of the M bit in video
> > formats, to allow an efficient playout buffer handling.
> >  Decoders MAY use this bit as
> >  an early indication of the last packet of an access unit but MUST
> >  NOT rely on this property.
> 
> So this implies that it would be great if we can add the feature to the CVF plugin 
> to support the stream without M bit field set.

One source of inspiration here could be the 
gst-plugins-good/gstrtph264depay.c:gst_rtp_h264_depay_handle_nal() - it
has some code to guess where M should be. Look for "marker".

> 
> I can not say which AVB talker I'm using to generate the CVF stream,
> but at least there is such AVB stack in the market.
> 
> 
> John
> 
> On 2020/07/16 18:32, Desouza, Ederson wrote:
> > On Thu, 2020-07-16 at 17:58 -0400, John Rama wrote:
> > > Hello Desounza,
> > > 
> > > Thanks again for your help on this.
> > > 
> > > > > But Followings does not return no data...
> > > > > $gst-launch-1.0 avtpsrc ifname=enp8s0 '!' avtpcvfdepay '!' fakesink dump=true
> > > > > Setting pipeline to PAUSED ...
> > > > > Pipeline is live and does not need PREROLL ...
> > > > > Pipeline is PREROLLED ...
> > > > > Setting pipeline to PLAYING ...
> > > > > New clock: GstSystemClock
> > > > > 
> > > > > Can you think of any reason why ?
> > > > 
> > > > AVTP streams have a streamid - have you tried using:
> > > > 
> > > > ... ! avtpcvfdepay streamid=<stream-id> ! ...
> > > > 
> > > > Also note that you can get debug information from the avtp plugin with:
> > > > 
> > > > GST_DEBUG=avtp*:<debug-level> gst-launch-1.0
> > > > 
> > > > So you can check what the plugin is doing.
> > > 
> > > gst-launch-1.0 --gst-debug-color-mode=off clockselect. '(clock-id=realtime' avtpsrc ifname=enp8s0 address=91:EF:00:00:FE:00 '!' avtpcvfdepay streamid=0x0123456789abcdef '!' fakesink dump=true ')'
> > > 
> > > I put streamid and destination mac address, but I still have no success ( I can not see fakesink receives the data)...
> > > According to the log (I attached whole log), avtpcvfdepay surely receive CVF stream, but does not pass them to the fakesink... 
> > > Any idea ??
> > 
> > From the log, it appears that no avtp packet arrives with M bit set, so
> > avtpcvfdepay keeps just accumulating nal units.
> > Can you ensure that what is generating the stream is properly setting
> > the M bit on the last access unit ("packet of a frame")? Wireshark can
> > be of help here.
> > 
> > > =====================================================
> > > 
> > > + GST_DEBUG='avtp*:7'
> > > + gst-launch-1.0 --gst-debug-color-mode=off clockselect. '(clock-id=realtime' avtpsrc ifname=enp8s0 address=91:EF:00:00:FE:00 '!' avtpcvfdepay streamid=0x0123456789abcdef '!' fakesink dump=true ')'
> > > 0:00:00.021076523  3505 0x5566083a1c00 DEBUG                avtpsrc gstavtpsrc.c:156:gst_avtp_src_set_property:<avtpsrc0> prop_id 1
> > > 0:00:00.021102046  3505 0x5566083a1c00 DEBUG                avtpsrc gstavtpsrc.c:156:gst_avtp_src_set_property:<avtpsrc0> prop_id 2
> > > 0:00:00.021151987  3505 0x5566083a1c00 DEBUG      avtpbasedepayload gstavtpbasedepayload.c:142:gst_avtp_base_depayload_set_property:<avtpcvfdepay0> prop_id 1
> > > Setting pipeline to PAUSED ...
> > > 0:00:00.043151942  3505 0x5566083a1c00 DEBUG                avtpsrc gstavtpsrc.c:248:gst_avtp_src_start:<avtpsrc0> AVTP source started
> > > Pipeline is live and does not need PREROLL ...
> > > Pipeline is PREROLLED ...
> > > Setting pipeline to PLAYING ...
> > > 0:00:00.043562029  3505 0x5566083a1850 DEBUG      avtpbasedepayload gstavtpbasedepayload.c:178:gst_avtp_base_depayload_sink_event:<avtpcvfdepay0> event stream-start
> > > New clock: DebugGstSystemClock
> > > 0:00:00.043681756  3505 0x5566083a1850 DEBUG      avtpbasedepayload gstavtpbasedepayload.c:178:gst_avtp_base_depayload_sink_event:<avtpcvfdepay0> event caps
> > > 0:00:00.069131412  3505 0x5566083a1850 DEBUG      avtpbasedepayload gstavtpbasedepayload.c:178:gst_avtp_base_depayload_sink_event:<avtpcvfdepay0> event segment
> > > 0:00:00.069168990  3505 0x5566083a1850 INFO            avtpcvfdepay gstavtpcvfdepay.c:379:gst_avtp_cvf_depay_validate_avtpdu:<avtpcvfdepay0> Unexpected AVTP header seq num 166, expected 0
> > > 0:00:00.069178877  3505 0x5566083a1850 DEBUG           avtpcvfdepay gstavtpcvfdepay.c:582:gst_avtp_cvf_depay_handle_fu_a:<avtpcvfdepay0> Fragment indicator - NRI: 2
> > > 0:00:00.069188523  3505 0x5566083a1850 DEBUG           avtpcvfdepay gstavtpcvfdepay.c:590:gst_avtp_cvf_depay_handle_fu_a:<avtpcvfdepay0> Fragment header - type: 1 start: 1 end: 0
> > > 0:00:00.069293505  3505 0x5566083a1850 DEBUG           avtpcvfdepay gstavtpcvfdepay.c:582:gst_avtp_cvf_depay_handle_fu_a:<avtpcvfdepay0> Fragment indicator - NRI: 2
> > > 0:00:00.069307743  3505 0x5566083a1850 DEBUG           avtpcvfdepay gstavtpcvfdepay.c:590:gst_avtp_cvf_depay_handle_fu_a:<avtpcvfdepay0> Fragment header - type: 1 start: 0 end: 0
> > > ...
> > > 0:00:00.084477094  3505 0x5566083a1850 DEBUG           avtpcvfdepay gstavtpcvfdepay.c:582:gst_avtp_cvf_depay_handle_fu_a:<avtpcvfdepay0> Fragment indicator - NRI: 2
> > > 0:00:00.084485950  3505 0x5566083a1850 DEBUG           avtpcvfdepay gstavtpcvfdepay.c:590:gst_avtp_cvf_depay_handle_fu_a:<avtpcvfdepay0> Fragment header - type: 1 start: 0 end: 1
> > > 0:00:00.084499930  3505 0x5566083a1850 LOG             avtpcvfdepay gstavtpcvfdepay.c:452:gst_avtp_cvf_depay_internal_push:<avtpcvfdepay0> Adding buffer of size 45829 (nalu size 45825) to out_buffer
> > > ...
> > > =====================================================
> > > 
> > > P.S
> > > You might wonder what's this in the log.... 
> > > > 0:00:00.069168990 3505 0x5566083a1850 INFO avtpcvfdepay gstavtpcvfdepay.c:379:gst_avtp_cvf_depay_validate_avtpdu:<avtpcvfdepay0> Unexpected AVTP header seq num 166, expected 0
> > > This is because there is another AVTP message(AVDECC ADC) in the network.
> > > I do not think this is the problem.
> > > But please let me know if this is the problem..
> > 
> > It is not, you can see them being safely discarded with
> > "Unexpected AVTP header subtype 250, expected 3" message.
> > 
> > Cheers!
> > 
> > > Thanks !!
> > > 
> > > John
> > > 


More information about the gstreamer-devel mailing list