-VLC_EXPORT( void, block_ChainAppend, ( block_t **, block_t * ) );
-VLC_EXPORT( void, block_ChainRelease, ( block_t * ) );
-VLC_EXPORT( int, block_ChainExtract, ( block_t *, void *, int ) );
-VLC_EXPORT( block_t *, block_ChainGather, ( block_t * ) );
-
-/* a bit special, only for new/other block manager */
-VLC_EXPORT( block_t *, block_NewEmpty, ( void ) );
-
-#define block_FifoNew( a ) __block_FifoNew( VLC_OBJECT(a) )
-VLC_EXPORT( block_fifo_t *, __block_FifoNew, ( vlc_object_t * ) );
-VLC_EXPORT( void, block_FifoRelease, ( block_fifo_t * ) );
-VLC_EXPORT( void, block_FifoEmpty, ( block_fifo_t * ) );
-VLC_EXPORT( int, block_FifoPut, ( block_fifo_t *, block_t * ) );
-VLC_EXPORT( block_t *, block_FifoGet, ( block_fifo_t * ) );
-VLC_EXPORT( block_t *, block_FifoShow, ( block_fifo_t * ) );
+
+/****************************************************************************
+ * Fifos of blocks.
+ ****************************************************************************
+ * - block_FifoNew : create and init a new fifo
+ * - block_FifoRelease : destroy a fifo and free all blocks in it.
+ * - block_FifoPace : wait for a fifo to drain to a specified number of packets or total data size
+ * - block_FifoEmpty : free all blocks in a fifo
+ * - block_FifoPut : put a block
+ * - block_FifoGet : get a packet from the fifo (and wait if it is empty)
+ * - block_FifoShow : show the first packet of the fifo (and wait if
+ * needed), be carefull, you can use it ONLY if you are sure to be the
+ * only one getting data from the fifo.
+ * - block_FifoCount : how many packets are waiting in the fifo
+ *
+ * block_FifoGet and block_FifoShow are cancellation points.
+ ****************************************************************************/
+
+VLC_API block_fifo_t * block_FifoNew( void ) VLC_USED;
+VLC_API void block_FifoRelease( block_fifo_t * );
+VLC_API void block_FifoPace( block_fifo_t *fifo, size_t max_depth, size_t max_size );
+VLC_API void block_FifoEmpty( block_fifo_t * );
+VLC_API size_t block_FifoPut( block_fifo_t *, block_t * );
+void block_FifoWake( block_fifo_t * );
+VLC_API block_t * block_FifoGet( block_fifo_t * ) VLC_USED;
+VLC_API block_t * block_FifoShow( block_fifo_t * );
+size_t block_FifoSize( const block_fifo_t *p_fifo ) VLC_USED;
+VLC_API size_t block_FifoCount( const block_fifo_t *p_fifo ) VLC_USED;