[FFmpeg-devel] (Reviewing old code) fifo_size=0 in rtpproto.c

Nicolas George george at nsup.org
Wed Mar 26 16:07:53 CET 2014


Le primidi 1er germinal, an CCXXII, Roger Pack a écrit :
> There have been some changes to udp since then, I wonder if it works
> now (the change I'm referring to is that it passes back data in the
> same packet sizes as they were received).
> FWIW.  Or maybe it's still broken who knows :)

I would be surprised if the change you are referring to changes anything to
that issue.

The core of the problem is that RTP uses several sockets, and therefore
needs to multiplex them, using the poll() system call or any equivalent.

With the UDP thread, there are two threads waiting on the socket: the main
thread in poll() for the RTP protocol, and the UDP thread reading
continuously. That is a race condition. Whenever the UDP thread wins the
race, the RTP poll() will miss the packet and stay blocked until the next
one.

The solution would be to replace the poll() with a system that can be
notified of packets by the UDP thread. Doing that cleanly requires designed
a clean I/O / event loop API; I have it as a project but it is still at the
"maturating in my head" stage.

Regards,

-- 
  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140326/6a49e9ad/attachment.asc>


More information about the ffmpeg-devel mailing list