How to get the RTP/RTCP timestamps at Rx for video frames send from Tx.

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

How to get the RTP/RTCP timestamps at Rx for video frames send from Tx.

sk_gst
Hello,

I have an application that send video packets from an iMX6 device to an
Ubuntu PC. I want to have the knowledge of  the timestamps of the video
packets at the receiver side, to analyse the incoming data flow.
Right now I installed a python timer and for every push buffer, note down
the time. However it would be better, if I can get the timestamps from the
video packets itself.

Below are my pieplines:

Tx pipeline:
v4l2src -> h264encode ->  rtph264pay -> rtpbin -> udpsink(port=5000) ->
rtpbin.send_rtcp(port=5000) -> rtpbin.recv_rtcp(port=5000)

Rx pipeline:
udpsrc(port=5000) -> rtpbin -> rtph264depay -> avdec_h264 ->
rtpbin.recv_rtcp(port=5000) -> rtpbin.send_rtcp(port=5000) -> videosink


1. Does anyone have any idea on how to read the timestamps in my
application?
2. Does rtp send and rtcp send/recv have to be on the same port(in my case
5000), or should I use different ports for rtp and rtcp ?


P.S. I know that the log file does have the timestamps, but I would prefer
it to be accessible from my application without the log information.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to get the RTP/RTCP timestamps at Rx for video frames send from Tx.

Nicolas Dufresne-5
Le vendredi 26 octobre 2018 à 04:43 -0500, vk_gst a écrit :

> Hello,
>
> I have an application that send video packets from an iMX6 device to an
> Ubuntu PC. I want to have the knowledge of  the timestamps of the video
> packets at the receiver side, to analyse the incoming data flow.
> Right now I installed a python timer and for every push buffer, note down
> the time. However it would be better, if I can get the timestamps from the
> video packets itself.
>
> Below are my pieplines:
>
> Tx pipeline:
> v4l2src -> h264encode ->  rtph264pay -> rtpbin -> udpsink(port=5000) ->
> rtpbin.send_rtcp(port=5000) -> rtpbin.recv_rtcp(port=5000)
>
> Rx pipeline:
> udpsrc(port=5000) -> rtpbin -> rtph264depay -> avdec_h264 ->
> rtpbin.recv_rtcp(port=5000) -> rtpbin.send_rtcp(port=5000) -> videosink
>
>
> 1. Does anyone have any idea on how to read the timestamps in my
> application?
> 2. Does rtp send and rtcp send/recv have to be on the same port(in my case
> 5000), or should I use different ports for rtp and rtcp ?
You can ways add a pad probe in your application in order to inspect
from your application the data flow.

>
>
> P.S. I know that the log file does have the timestamps, but I would prefer
> it to be accessible from my application without the log information.
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (201 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: How to get the RTP/RTCP timestamps at Rx for video frames send from Tx.

sk_gst
Hi Nicolas,

I added a probe for probing buffer and could retrieve the PTS and DTS from
the buffer.  
Is it legit to consider that one buffer is one frame transmitted from Tx ?
I am operating a camera at 30fps. Attached is an histogram at the Rx end for
first 500 timestamp values.

Link to image : https://imgur.com/a/RoWd1yf 

Observations :

1. class of 400ms for the histogram
2. the number of buffers range from 36-55, which means minimum 34 buffers
pushed for 400ms and maximum 55 buffers for 400ms.

I am trying to understand the behavior here, considering at 30 fps (1
frame=33.33 ms + all latencies). Even if the best possible scenario of
33.33ms for 400ms results into  33.33 *400 ms = 1782ms.

It does not seem to me that one buffer is one frame. Or is my understanding
incorrect ?


Regards.




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to get the RTP/RTCP timestamps at Rx for video frames send from Tx.

sk_gst
In reply to this post by Nicolas Dufresne-5
*** correction to previous post

33.33ms * 36 = 1199.9 ms
33.33ms * 55 =  1833.5 ms


but all it takes is 400ms as per the graph.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to get the RTP/RTCP timestamps at Rx for video frames send from Tx.

Nicolas Dufresne-5


Le mar. 30 oct. 2018 15 h 42, vk_gst <[hidden email]> a écrit :
*** correction to previous post

33.33ms * 36 = 1199.9 ms
33.33ms * 55 =  1833.5 ms


but all it takes is 400ms as per the graph.


It's all depends where your probe is placed. There is lot more RTP packets then frames as an example.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel