+/****************************************************************************
+ * Blocks functions:
+ ****************************************************************************
+ * - block_New : create a new block with the requested size ( >= 0 ), return
+ * NULL for failure.
+ * - block_Release : release a block allocated with block_New.
+ * - block_Realloc : realloc a block,
+ * i_pre: how many bytes to insert before body if > 0, else how many
+ * bytes of body to skip (the latter can be done without using
+ * block_Realloc i_buffer -= -i_pre, p_buffer += -i_pre as i_pre < 0)
+ * i_body (>= 0): the final size of the body (decreasing it can directly
+ * be done with i_buffer = i_body).
+ * with preheader and or body (increase
+ * and decrease are supported). Use it as it is optimised.
+ * - block_Duplicate : create a copy of a block.
+ ****************************************************************************/
+#define block_New( a, b ) __block_New( VLC_OBJECT(a), b )
+VLC_EXPORT( block_t *, __block_New, ( vlc_object_t *, int ) );
+VLC_EXPORT( block_t *, block_Realloc, ( block_t *, int i_pre, int i_body ) );
+
+static inline block_t *block_Duplicate( block_t *p_block )