1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
5  * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE.    *
6  * PLEASE READ THESE TERMS BEFORE DISTRIBUTING.                     *
7  *                                                                  *
8  * THE Ogg123 SOURCE CODE IS (C) COPYRIGHT 2000-2001                *
9  * by Stan Seibert <volsung@xiph.org> AND OTHER CONTRIBUTORS        *
10  * http://www.xiph.org/                                             *
11  *                                                                  *
12  ********************************************************************
13 
14  last mod: $Id$
15 
16  ********************************************************************/
17 
18 #ifndef __STATUS_H__
19 #define __STATUS_H__
20 
21 #include <stdarg.h>
22 #include "buffer.h"
23 #include "transport.h"
24 #include "format.h"
25 
26 typedef struct {
27   int verbosity;
28   char enabled;
29   const char *formatstr;
30   enum {
31     stat_noarg = 0,
32     stat_intarg,
33     stat_stringarg,
34     stat_floatarg,
35     stat_doublearg
36   } type;
37   union {
38     int intarg;
39     char *stringarg;
40     float floatarg;
41     double doublearg;
42   } arg;
43 } stat_format_t;
44 
45 
46 /* Status options:
47  * stats[0] - currently playing file / stream
48  * stats[1] - current playback time
49  * stats[2] - remaining playback time
50  * stats[3] - total playback time
51  * stats[4] - instantaneous bitrate
52  * stats[5] - average bitrate (not yet implemented)
53  * stats[6] - input buffer fill %
54  * stats[7] - input buffer state
55  * stats[8] - output buffer fill %
56  * stats[9] - output buffer state
57  * stats[10] - Null format string to mark end of array
58  */
59 stat_format_t *stat_format_create ();
60 void stat_format_cleanup (stat_format_t *stats);
61 
62 void status_init (int verbosity);
63 void status_deinit ();
64 void status_reset_output_lock ();
65 void status_clear_line ();
66 void status_print_statistics (stat_format_t *stats,
67 			      buffer_stats_t *audio_statistics,
68 			      data_source_stats_t *data_source_statistics,
69 			      decoder_stats_t *decoder_statistics);
70 void status_message (int verbosity, const char *fmt, ...);
71 void vstatus_message (int verbosity, const char *fmt, va_list ap);
72 void status_error (const char *fmt, ...);
73 void vstatus_error (const char *fmt, va_list);
74 
75 #endif /* __STATUS_H__ */
76