[FFmpeg-cvslog] r26318 - trunk/libavformat/aviobuf.c
Martin Storsjö
martin
Wed Jan 12 13:47:02 CET 2011
On Wed, 12 Jan 2011, Nicolas George wrote:
> Le tridi 23 niv?se, an CCXIX, Martin Storsj? a ?crit?:
>
> > It wasn't particularly valid, only an easy way out.
> >
> > While urlprotocols currently are designed to be blocking, the rtsp code
> > tries to receive from many such ones in parallel. Since it can't just try
> > to do a blocking read from one, it initially does a select() on the fd's
> > from all of them, and once a packet is available, it does a blocking read
> > on that one. If we for some reason within the urlprotocol would choose to
> > throw away the packet (e.g. coming from the wrong address/port), the
> > protocol would return EAGAIN to allow the higher level code go back to
> > select() again.
> >
> > I fixed that case by doing connect() on the UDP fd instead, so the kernel
> > won't deliver such unwanted packets at all, and we wouldn't run into this
> > situation at all. The really proper solution would be to use real,
> > nonblocking IO in this setup.
>
> I see, the situation looks like quite a pileup of hacks over hacks.
Indeed it is.
> There is something to be done here. I'll think about it some more.
Thanks - if you don't come up with something good soon, or someone else
has a better hint on how to solve the issue with rtpdec_asf, I'm fine with
reverting this for now, too.
// Martin
More information about the ffmpeg-cvslog
mailing list