[FFmpeg-devel] [PATCH 3/3] Non-blocking protocol: TCP

Nicolas George nicolas.george
Sun Feb 6 09:52:50 CET 2011


L'octidi 18 pluvi?se, an CCXIX, Martin Storsj? a ?crit?:
> As Nicolas said, all of these read UDP packets. There, url_read() either 
> returns one packet, or no data at all, there's nothing inbetween.

... if the buffer is big enough (which seems the case here). If I remember
correctly, recv on a UDP socket with a buffer smaller than the packet will,
by default, truncate the packet to the size of the buffer and discard the
rest.

This behaviour would be disastrous with code that expect a stream-like
interface and use url_read_complete. Except that most of the time, the
pseudo-stream would have been muxed and emitted the same way, which means
that protocol packet boundaries will most of the time coincide with content
packet boundaries. But not always.

I still thinking about it.

> Btw, it might be handy to be able to switch between blocking and 
> nonblocking mode on URLContexts after creation, too.

Indeed. In fact, when protocols depends on other protocols (like HTTP
depends on TCP), switching from blocking (for the header / connection) to
non-blocking (for the payload) will be necessary.

>							As far as I can see 
> from the patches, this wouldn't be much harder than adding a function that 
> sets/clears that bit in h->flags.

That is currently true, and probably will stay true for the protocols I
know. Still, the setting function is a better solution for long-term API
stability.

Regards,

-- 
  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20110206/ade45ed0/attachment.pgp>



More information about the ffmpeg-devel mailing list