-/*****************************************************************************
- * Prototypes
- *****************************************************************************/
-#define sout_NewInstance(a,b) __sout_NewInstance(VLC_OBJECT(a),b)
-VLC_EXPORT( sout_instance_t *, __sout_NewInstance, ( vlc_object_t *, char * ) );
-VLC_EXPORT( void, sout_DeleteInstance, ( sout_instance_t * ) );
+ void *p_sys;
+};
+
+
+VLC_EXPORT( sout_mux_t *, sout_MuxNew, ( sout_instance_t*, char *, sout_access_out_t * ) );
+VLC_EXPORT( sout_input_t *, sout_MuxAddStream, ( sout_mux_t *, es_format_t * ) );
+VLC_EXPORT( void, sout_MuxDeleteStream, ( sout_mux_t *, sout_input_t * ) );
+VLC_EXPORT( void, sout_MuxDelete, ( sout_mux_t * ) );
+VLC_EXPORT( void, sout_MuxSendBuffer, ( sout_mux_t *, sout_input_t *, block_t * ) );
+
+static inline int sout_MuxControl( sout_mux_t *p_mux, int i_query, ... )
+{
+ va_list args;
+ int i_result;
+
+ va_start( args, i_query );
+ i_result = p_mux->pf_control( p_mux, i_query, args );
+ va_end( args );
+ return i_result;
+}
+
+/****************************************************************************
+ * sout_stream:
+ ****************************************************************************/
+struct sout_stream_t
+{
+ VLC_COMMON_MEMBERS
+
+ module_t *p_module;
+ sout_instance_t *p_sout;
+
+ char *psz_name;
+ sout_cfg_t *p_cfg;
+ char *psz_next;
+
+ /* add, remove a stream */
+ sout_stream_id_t *(*pf_add)( sout_stream_t *, es_format_t * );
+ int (*pf_del)( sout_stream_t *, sout_stream_id_t * );
+ /* manage a packet */
+ int (*pf_send)( sout_stream_t *, sout_stream_id_t *, block_t* );
+
+ /* private */
+ sout_stream_sys_t *p_sys;
+};
+
+VLC_EXPORT( sout_stream_t *, sout_StreamNew, ( sout_instance_t *, char *psz_chain ) );
+VLC_EXPORT( void, sout_StreamDelete, ( sout_stream_t * ) );
+
+static inline sout_stream_id_t *sout_StreamIdAdd( sout_stream_t *s, es_format_t *fmt )
+{
+ return s->pf_add( s, fmt );
+}
+static inline int sout_StreamIdDel( sout_stream_t *s, sout_stream_id_t *id )
+{
+ return s->pf_del( s, id );
+}
+static inline int sout_StreamIdSend( sout_stream_t *s, sout_stream_id_t *id, block_t *b )
+{
+ return s->pf_send( s, id, b );
+}
+
+/****************************************************************************
+ * Announce handler mess
+ ****************************************************************************/
+struct sap_session_t;
+
+struct session_descriptor_t
+{
+ char *psz_name;
+ char *psz_uri;
+ int i_port;
+ int i_ttl;
+ int i_payload; /* SAP Payload type */