Hi,
I want to postprocess vp8 dump rtp file (rtp headers + payloads) to generate webm file. I am using: appsrc -> rtprtxreceive -> rtpjitterbuffer -> rtpvp8depay -> webbmux -> filesink In my test vp8 file I have quite a lot of rtx packets (retransmissions) and since my postprocessing is not involved in real communication between two sides I am noticing a problem because I am getting rtx packets despite my rtpjitterbuffer still didn't ask for retransmission. So rtprtxreceive element says ... "dropping rtx packet 24792 because its orig seqnum (#12576) is not in our pending retransmission requests" Some moments later rtpjitterbuffer found out that packet #12576 didn't arrive and send retransmission demand but that's too late cause rtx packet is already dropped. I tried to play with different settings but without success - maybe is problem combination of all these?: g_object_set(G_OBJECT(rtpjitterbuffer), "latency", 2000, NULL); g_object_set(G_OBJECT(rtpjitterbuffer), "do-retransmission", TRUE, NULL); g_object_set(G_OBJECT(rtpjitterbuffer), "mode", 0, NULL); g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-delay", 10, NULL); g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-delay-reorder", 1, NULL); g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-next-seqnum", TRUE, NULL); g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-retry-timeout", 1, NULL); Is there any option that retransmission will be send on first detection that expected packet didnt' arrive? For example in my case that retransmission for #12576 will be send when this happens - expected packet 12576 didnt arrive: In my case retransmission was send about 75ms later: But in the mean time rtx packet for #12576 arrived and was dropped - even I was holding it additional 30ms before pushing it in appsrc because I was hoping that in the mean time rtpjitterbuffer will send retransmission: But it looks that even if I wait longer with rtx packet it didn't help to trigger retransmision. Looks like a few more other packets must arrive before retransmission is triggered even I set "rtx-delay-reorder" to 1? Here is complete log from arriving of 12575 (this one is still ok), 12576 is missing and arrive as rtx (retransmission): Expected #12576 didn't arrive: After my "artificial" delay of 30ms at appsrc rtx packet with orig seqnum #12576 arrive but it is dropped cause rtpjitterbuffer didn't send retransmission: Rtpjitterbuffer detect that #12576 didn't arrive and ask for retransmission but that's too late cause rtx already arrived: So is there any rtpjitterbuffer setting that retransmission will be send faster, for example imediatelly after expected packet does not arrive? Additional question here is why is master ssrc as FFFFFFFF? As I was looking at source code ssrc info is not send from rtpjitterbuffer and so rtprtxreceive set it as -1 (FFFFFFFF). gstrtpjitterbuffer.c - no ssrc here? gstrtprtxreceive.c Thanks a lot in advanced for any idea/advice! -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Le samedi 11 avril 2020 à 04:02 -0500, bojan74 a écrit :
> Hi, > > I want to postprocess vp8 dump rtp file (rtp headers + payloads) to generate > webm file. > > I am using: > appsrc -> rtprtxreceive -> rtpjitterbuffer -> rtpvp8depay -> webbmux -> > filesink > > In my test vp8 file I have quite a lot of rtx packets (retransmissions) and > since my postprocessing is not involved in real communication between two > sides I am noticing a problem because I am getting rtx packets despite my > rtpjitterbuffer still didn't ask for retransmission. > So rtprtxreceive element says ... "dropping rtx packet 24792 because its > orig seqnum (#12576) is not in our pending retransmission requests" > Some moments later rtpjitterbuffer found out that packet #12576 didn't > arrive and send retransmission demand but that's too late cause rtx packet > is already dropped. > > I tried to play with different settings but without success - maybe is > problem combination of all these?: > g_object_set(G_OBJECT(rtpjitterbuffer), "latency", 2000, NULL); > g_object_set(G_OBJECT(rtpjitterbuffer), "do-retransmission", TRUE, NULL); > g_object_set(G_OBJECT(rtpjitterbuffer), "mode", 0, NULL); > g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-delay", 10, NULL); > g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-delay-reorder", 1, NULL); > g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-next-seqnum", TRUE, NULL); > g_object_set(G_OBJECT(rtpjitterbuffer), "rtx-retry-timeout", 1, NULL); It's a bit more complex. In standard RTP, retransmissions are sent over RTCP, which is a different stream. To get this working, you'll have to use rtpbin, and setup the same pipeline as if this was live, but of course without sending RTCP. I suggest you start looking into RTPBin first, as explaining all this is a lot of work. > > Is there any option that retransmission will be send on first detection that > expected packet didnt' arrive? > > For example in my case that retransmission for #12576 will be send when this > happens - expected packet 12576 didnt arrive: > > > In my case retransmission was send about 75ms later: > > > But in the mean time rtx packet for #12576 arrived and was dropped - even I > was holding it additional 30ms before pushing it in appsrc because I was > hoping that in the mean time rtpjitterbuffer will send retransmission: > > > But it looks that even if I wait longer with rtx packet it didn't help to > trigger retransmision. Looks like a few more other packets must arrive > before retransmission is triggered even I set "rtx-delay-reorder" to 1? > > > Here is complete log from arriving of 12575 (this one is still ok), 12576 is > missing and arrive as rtx (retransmission): > > > > Expected #12576 didn't arrive: > > > > After my "artificial" delay of 30ms at appsrc rtx packet with orig seqnum > #12576 arrive but it is dropped cause rtpjitterbuffer didn't send > retransmission: > > > > Rtpjitterbuffer detect that #12576 didn't arrive and ask for retransmission > but that's too late cause rtx already arrived: > > > > So is there any rtpjitterbuffer setting that retransmission will be send > faster, for example imediatelly after expected packet does not arrive? > > Additional question here is why is master ssrc as FFFFFFFF? > As I was looking at source code ssrc info is not send from rtpjitterbuffer > and so rtprtxreceive set it as -1 (FFFFFFFF). > > gstrtpjitterbuffer.c - no ssrc here? > > > gstrtprtxreceive.c > > > Thanks a lot in advanced for any idea/advice! > > > > > -- > 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 |
Free forum by Nabble | Edit this page |