RTP Timestamp problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hello

I am developing an audio only embedded device using a MYIR development board with a TI AM3352 CPU that will stream live AES67 audio to and from a Dante device.
I used buildroot to make the Linux image: Version 2017.02-git and the kernel is 4.1.18.
Gstreamer core library is version 1.10.2.  The Linux image is running ptpd2 version 2.3.1 and ntpd version 4.2.8@1.3265-o.
I am using CLion for multi-thread development and the MYIR gcc cross-compiler to build the code.

One thread creates a send pipeline.
One of many I have tried is: get_parse_launch(“rtpbin name=rtpbin audiotestsrc provide-clock=true do-timestamp=true ! audio/x-raw, channels=2, 
									rate=48000, depth=24, width=24 ! audioconvert ! rtpL24pay mtu=300, max-ptime=2000000 ! rtpbin.send_rtp_src_0 ! 
									udpsink host=239.69.199.180 port=5004 sync=false ttl-mc=32 qos-dscp=46”, &err);
The mtu, ttl-mc and qos-dscp values are what Dante uses in its AES67 configuration.

Another thread creates the SAP/SDP that is sent every 30 seconds to port 9875:
I load the mediaclk:direct with offset as below: 
		uint64_t bitrate = 48000;
		uint64_t epoch = time(NULL);
		uint32_t offset = (epoch * bitrate) & 0x00000000FFFFFFFF;
The ts-refclk:ptp is the MAC address of my dev board.

This is what the SDP looks like from Wireshark
Session Description Protocol
   Session Description Protocol Version (v): 0
   Owner/Creator, Session Id (o): - 1583511 1581758 IN IP4 192.168.0.191
       Owner Username: -
       Session ID: 1583511
       Session Version: 1581758
       Owner Network Type: IN
       Owner Address Type: IP4
       Owner Address: 192.168.0.191
   Session Name (s): Announcer I/O
   Connection Information (c): IN IP4 239.69.199.180/32
       Connection Network Type: IN
       Connection Address Type: IP4
       Connection Address: 239.69.199.180
       Connection TTL: 32
   Time Description, active time (t): 0 0
       Session Start Time: 0
       Session Stop Time: 0
   Session Attribute (a): keywds:Agame
       Session Attribute Fieldname: keywds
       Session Attribute Value: Agame
   Media Description, name and address (m): audio 5004 RTP/AVP 96
       Media Type: audio
       Media Port: 5004
       Media Protocol: RTP/AVP
       Media Format: DynamicRTP-Type-96
   Media Title (i): 2 channels: CH1, CH2
   Media Attribute (a): recvonly
   Media Attribute (a): rtpmap:96 L24/48000/2
       Media Attribute Fieldname: rtpmap
       Media Format: 96
       MIME Type: L24
       Sample Rate: 48000
   Media Attribute (a): ptime:1
       Media Attribute Fieldname: ptime
       Media Attribute Value: 1
   Media Attribute (a): ts-refclk:ptp=IEEE1588-2008:44-EA-D8-FF-FE-C1-3B-EA:0
       Media Attribute Fieldname: ts-refclk
       Media Attribute Value: ptp=IEEE1588-2008:44-EA-D8-FF-FE-C1-3B-EA:0
   Media Attribute (a): mediaclk:direct=503186688
       Media Attribute Fieldname: mediaclk
       Media Attribute Value: direct=503186688

If I run gst-launch-1.0(…) from a command line on my MAC I hear tone perfectly, however on the Dante device it shows that the packets are arriving hours late.
The receiving Dante device shows that ptp is locked to the MAC address of my dev board.  The lateness is random each time I run the program. 
The timestamps on the audio packets don’t seem to be related to my SDP timestamp.
I have tried capturing the stream basetime value but that doesn’t seem to help either.  GstClockTime base time = gst_element_get_base_time(&pipeline_TX);
I also tried setting the basetime to epoch time.  I have tried various scaling of the timestamp such as seconds, milliseconds, nanoseconds, microseconds.
Is there another way of getting the sending stream start time timestamp?
I have been searching for answers for weeks now and have tried at least 12 variations of my gst_parse_launch with the same results.


Regards,
Sam Virgillo
_______________________________________________
gstreamer-embedded mailing list
gstreamer-embedded@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/gstreamer-embedded




[Index of Archives]     [Linux Embedded]     [Linux ARM Kernel]     [Linux for ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux Media]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux