home *** CD-ROM | disk | FTP | other *** search
/ mail.altrad.com / 2015.02.mail.altrad.com.tar / mail.altrad.com / TEST / vlc-2-0-5-win32.exe / sdk / include / vlc / plugins / vlc_messages.h < prev    next >
C/C++ Source or Header  |  2012-12-12  |  6KB  |  198 lines

  1. /*****************************************************************************
  2.  * messages.h: messages interface
  3.  * This library provides basic functions for threads to interact with user
  4.  * interface, such as message output.
  5.  *****************************************************************************
  6.  * Copyright (C) 1999, 2000, 2001, 2002 VLC authors and VideoLAN
  7.  * $Id: 7a8777f56deb9859a74fed7fe5ec52365216ac95 $
  8.  *
  9.  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  10.  *          Samuel Hocevar <sam@zoy.org>
  11.  *
  12.  * This program is free software; you can redistribute it and/or modify it
  13.  * under the terms of the GNU Lesser General Public License as published by
  14.  * the Free Software Foundation; either version 2.1 of the License, or
  15.  * (at your option) any later version.
  16.  *
  17.  * This program is distributed in the hope that it will be useful,
  18.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20.  * GNU Lesser General Public License for more details.
  21.  *
  22.  * You should have received a copy of the GNU Lesser General Public License
  23.  * along with this program; if not, write to the Free Software Foundation,
  24.  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  25.  *****************************************************************************/
  26.  
  27. #ifndef VLC_MESSAGES_H_
  28. #define VLC_MESSAGES_H_
  29.  
  30. /**
  31.  * \file
  32.  * This file defines structures and functions to handle messages and statistics gathering
  33.  */
  34.  
  35. #include <stdarg.h>
  36.  
  37. /**
  38.  * \defgroup messages Messages
  39.  * This library provides basic functions for threads to interact with user
  40.  * interface, such as message output.
  41.  *
  42.  * @{
  43.  */
  44.  
  45. /** Message types */
  46. enum msg_item_type
  47. {
  48.     VLC_MSG_INFO=0, /**< Important information */
  49.     VLC_MSG_ERR,    /**< Error */
  50.     VLC_MSG_WARN,   /**< Warning */
  51.     VLC_MSG_DBG,    /**< Debug */
  52. };
  53.  
  54. /**
  55.  * Log message
  56.  */
  57. typedef struct
  58. {
  59.     uintptr_t   i_object_id; /**< Emitter (temporaly) unique object ID or 0 */
  60.     const char *psz_object_type; /**< Emitter object type name */
  61.     const char *psz_module; /**< Emitter module (source code) */
  62.     const char *psz_header; /**< Additional header (used by VLM media) */
  63. } msg_item_t;
  64.  
  65. /**
  66.  * Used by interface plugins which subscribe to the message bank.
  67.  */
  68. typedef struct msg_subscription_t msg_subscription_t;
  69.  
  70. /*****************************************************************************
  71.  * Prototypes
  72.  *****************************************************************************/
  73. VLC_API void vlc_Log(vlc_object_t *, int,
  74.                      const char *, const char *, ...) VLC_FORMAT( 4, 5 );
  75. VLC_API void vlc_vaLog(vlc_object_t *, int,
  76.                        const char *, const char *, va_list);
  77. #define msg_GenericVa(a, b, c, d, e) vlc_vaLog(VLC_OBJECT(a), b, c, d, e)
  78.  
  79. #define msg_Info( p_this, ... ) \
  80.     vlc_Log( VLC_OBJECT(p_this), VLC_MSG_INFO, MODULE_STRING, __VA_ARGS__ )
  81. #define msg_Err( p_this, ... ) \
  82.     vlc_Log( VLC_OBJECT(p_this), VLC_MSG_ERR,  MODULE_STRING, __VA_ARGS__ )
  83. #define msg_Warn( p_this, ... ) \
  84.     vlc_Log( VLC_OBJECT(p_this), VLC_MSG_WARN, MODULE_STRING, __VA_ARGS__ )
  85. #define msg_Dbg( p_this, ... ) \
  86.     vlc_Log( VLC_OBJECT(p_this), VLC_MSG_DBG,  MODULE_STRING, __VA_ARGS__ )
  87.  
  88. /**
  89.  * Message logging callback signature.
  90.  * Accepts one private data pointer, the message, and an overrun counter.
  91.  */
  92. typedef void (*msg_callback_t) (void *, int, const msg_item_t *,
  93.                                 const char *, va_list);
  94.  
  95. VLC_API msg_subscription_t *vlc_Subscribe(msg_callback_t, void *) VLC_USED;
  96. VLC_API void vlc_Unsubscribe(msg_subscription_t *);
  97.  
  98. /**
  99.  * @}
  100.  */
  101.  
  102. /**
  103.  * \defgroup statistics Statistics
  104.  *
  105.  * @{
  106.  */
  107.  
  108. /****************************
  109.  * Generic stats stuff
  110.  ****************************/
  111. enum
  112. {
  113.     STATS_LAST,
  114.     STATS_COUNTER,
  115.     STATS_MAX,
  116.     STATS_MIN,
  117.     STATS_DERIVATIVE,
  118.     STATS_TIMER
  119. };
  120.  
  121. struct counter_sample_t
  122. {
  123.     vlc_value_t value;
  124.     mtime_t     date;
  125. };
  126.  
  127. struct counter_t
  128. {
  129.     unsigned int        i_id;
  130.     char              * psz_name;
  131.     int                 i_type;
  132.     void              * p_obj;
  133.     int                 i_compute_type;
  134.     int                 i_samples;
  135.     counter_sample_t ** pp_samples;
  136.  
  137.     mtime_t             update_interval;
  138.     mtime_t             last_update;
  139. };
  140.  
  141. enum
  142. {
  143.     STATS_INPUT_BITRATE,
  144.     STATS_READ_BYTES,
  145.     STATS_READ_PACKETS,
  146.     STATS_DEMUX_READ,
  147.     STATS_DEMUX_BITRATE,
  148.     STATS_DEMUX_CORRUPTED,
  149.     STATS_DEMUX_DISCONTINUITY,
  150.     STATS_PLAYED_ABUFFERS,
  151.     STATS_LOST_ABUFFERS,
  152.     STATS_DECODED_AUDIO,
  153.     STATS_DECODED_VIDEO,
  154.     STATS_DECODED_SUB,
  155.     STATS_CLIENT_CONNECTIONS,
  156.     STATS_ACTIVE_CONNECTIONS,
  157.     STATS_SOUT_SENT_PACKETS,
  158.     STATS_SOUT_SENT_BYTES,
  159.     STATS_SOUT_SEND_BITRATE,
  160.     STATS_DISPLAYED_PICTURES,
  161.     STATS_LOST_PICTURES,
  162.  
  163.     STATS_TIMER_PLAYLIST_BUILD,
  164.     STATS_TIMER_ML_LOAD,
  165.     STATS_TIMER_ML_DUMP,
  166.     STATS_TIMER_INTERACTION,
  167.     STATS_TIMER_PREPARSE,
  168.     STATS_TIMER_INPUT_LAUNCHING,
  169.     STATS_TIMER_MODULE_NEED,
  170.     STATS_TIMER_VIDEO_FRAME_ENCODING,
  171.     STATS_TIMER_AUDIO_FRAME_ENCODING,
  172.  
  173.     STATS_TIMER_SKINS_PLAYTREE_IMAGE,
  174. };
  175.  
  176. /*********
  177.  * Timing
  178.  ********/
  179. VLC_API void stats_TimerStart(vlc_object_t*, const char *, unsigned int );
  180. VLC_API void stats_TimerStop(vlc_object_t*, unsigned int);
  181. VLC_API void stats_TimerDump(vlc_object_t*, unsigned int);
  182. VLC_API void stats_TimersDumpAll(vlc_object_t*);
  183. #define stats_TimerStart(a,b,c) stats_TimerStart( VLC_OBJECT(a), b,c )
  184. #define stats_TimerStop(a,b) stats_TimerStop( VLC_OBJECT(a), b )
  185. #define stats_TimerDump(a,b) stats_TimerDump( VLC_OBJECT(a), b )
  186. #define stats_TimersDumpAll(a) stats_TimersDumpAll( VLC_OBJECT(a) )
  187.  
  188. VLC_API void stats_TimersCleanAll(vlc_object_t * );
  189. #define stats_TimersCleanAll(a) stats_TimersCleanAll( VLC_OBJECT(a) )
  190.  
  191. VLC_API void stats_TimerClean(vlc_object_t *, unsigned int );
  192. #define stats_TimerClean(a,b) stats_TimerClean( VLC_OBJECT(a), b )
  193.  
  194. /**
  195.  * @}
  196.  */
  197. #endif
  198.