-VLC_EXPORT( void, __msg_Info, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
-VLC_EXPORT( void, __msg_Err, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
-VLC_EXPORT( void, __msg_Warn, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
-VLC_EXPORT( void, __msg_Dbg, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) );
+#define msg_GenericVa(a, b, c, d, e) __msg_GenericVa(VLC_OBJECT(a), b, c, d, e)
+VLC_EXPORT( void, __msg_Info, ( vlc_object_t *, const char *, ... ) LIBVLC_FORMAT( 2, 3 ) );
+VLC_EXPORT( void, __msg_Err, ( vlc_object_t *, const char *, ... ) LIBVLC_FORMAT( 2, 3 ) );
+VLC_EXPORT( void, __msg_Warn, ( vlc_object_t *, const char *, ... ) LIBVLC_FORMAT( 2, 3 ) );
+VLC_EXPORT( void, __msg_Dbg, ( vlc_object_t *, const char *, ... ) LIBVLC_FORMAT( 2, 3 ) );
+
+#define msg_Info( p_this, ... ) \
+ __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_INFO, \
+ MODULE_STRING, __VA_ARGS__ )
+#define msg_Err( p_this, ... ) \
+ __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_ERR, \
+ MODULE_STRING, __VA_ARGS__ )
+#define msg_Warn( p_this, ... ) \
+ __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_WARN, \
+ MODULE_STRING, __VA_ARGS__ )
+#define msg_Dbg( p_this, ... ) \
+ __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_DBG, \
+ MODULE_STRING, __VA_ARGS__ )
+
+#define msg_Subscribe(a) __msg_Subscribe(VLC_OBJECT(a))
+#define msg_Unsubscribe(a,b) __msg_Unsubscribe(VLC_OBJECT(a),b)
+VLC_EXPORT( msg_subscription_t*, __msg_Subscribe, ( vlc_object_t * ) );
+VLC_EXPORT( void, __msg_Unsubscribe, ( vlc_object_t *, msg_subscription_t * ) );
+
+/**
+ * @}
+ */
+
+/**
+ * \defgroup statistics Statistics
+ *
+ * @{
+ */
+
+/****************************
+ * Generic stats stuff
+ ****************************/
+enum
+{
+ STATS_LAST,
+ STATS_COUNTER,
+ STATS_MAX,
+ STATS_MIN,
+ STATS_DERIVATIVE,
+ STATS_TIMER
+};
+
+struct counter_sample_t
+{
+ vlc_value_t value;
+ mtime_t date;
+};
+
+struct counter_t
+{
+ unsigned int i_id;
+ char * psz_name;
+ int i_type;
+ void * p_obj;
+ int i_compute_type;
+ int i_samples;
+ counter_sample_t ** pp_samples;