00001
00028
#ifndef __ALSA_TIMER_H
00029
#define __ALSA_TIMER_H
00030
00031
#ifdef __cplusplus
00032
extern "C" {
00033
#endif
00034
00042 #define SND_TIMER_DLSYM_VERSION _dlsym_timer_001
00043
00044 #define SND_TIMER_QUERY_DLSYM_VERSION _dlsym_timer_query_001
00045
00047 typedef struct _snd_timer_id
snd_timer_id_t;
00049 typedef struct _snd_timer_ginfo
snd_timer_ginfo_t;
00051 typedef struct _snd_timer_gparams
snd_timer_gparams_t;
00053 typedef struct _snd_timer_gstatus
snd_timer_gstatus_t;
00055 typedef struct _snd_timer_info
snd_timer_info_t;
00057 typedef struct _snd_timer_params
snd_timer_params_t;
00059 typedef struct _snd_timer_status
snd_timer_status_t;
00061 typedef enum _snd_timer_class {
00062
SND_TIMER_CLASS_NONE = -1,
00063
SND_TIMER_CLASS_SLAVE = 0,
00064
SND_TIMER_CLASS_GLOBAL,
00065
SND_TIMER_CLASS_CARD,
00066
SND_TIMER_CLASS_PCM,
00067
SND_TIMER_CLASS_LAST =
SND_TIMER_CLASS_PCM
00068 }
snd_timer_class_t;
00069
00071 typedef enum _snd_timer_slave_class {
00072
SND_TIMER_SCLASS_NONE = 0,
00073
SND_TIMER_SCLASS_APPLICATION,
00074
SND_TIMER_SCLASS_SEQUENCER,
00075
SND_TIMER_SCLASS_OSS_SEQUENCER,
00076
SND_TIMER_SCLASS_LAST =
SND_TIMER_SCLASS_OSS_SEQUENCER
00077 }
snd_timer_slave_class_t;
00078
00080 typedef enum _snd_timer_event {
00081 SND_TIMER_EVENT_RESOLUTION = 0,
00082 SND_TIMER_EVENT_TICK,
00083 SND_TIMER_EVENT_START,
00084 SND_TIMER_EVENT_STOP,
00085 SND_TIMER_EVENT_CONTINUE,
00086 SND_TIMER_EVENT_PAUSE,
00087 SND_TIMER_EVENT_EARLY,
00088
00089 SND_TIMER_EVENT_MSTART = SND_TIMER_EVENT_START + 10,
00090 SND_TIMER_EVENT_MSTOP = SND_TIMER_EVENT_STOP + 10,
00091 SND_TIMER_EVENT_MCONTINUE = SND_TIMER_EVENT_CONTINUE + 10,
00092 SND_TIMER_EVENT_MPAUSE = SND_TIMER_EVENT_PAUSE + 10,
00093 }
snd_timer_event_t;
00094
00096 typedef struct _snd_timer_read {
00097 unsigned int resolution;
00098 unsigned int ticks;
00099 }
snd_timer_read_t;
00100
00102 typedef struct _snd_timer_tread {
00103
snd_timer_event_t event;
00104
snd_htimestamp_t tstamp;
00105
unsigned int val;
00106 }
snd_timer_tread_t;
00107
00109 #define SND_TIMER_GLOBAL_SYSTEM 0
00110
00111 #define SND_TIMER_GLOBAL_RTC 1
00112
00114 #define SND_TIMER_OPEN_NONBLOCK (1<<0)
00115
00116 #define SND_TIMER_OPEN_TREAD (1<<1)
00117
00119 typedef enum _snd_timer_type {
00121
SND_TIMER_TYPE_HW = 0,
00123
SND_TIMER_TYPE_SHM,
00125
SND_TIMER_TYPE_INET
00126 }
snd_timer_type_t;
00127
00129 typedef struct _snd_timer_query
snd_timer_query_t;
00131 typedef struct _snd_timer
snd_timer_t;
00132
00133
00134
int snd_timer_query_open(snd_timer_query_t **handle,
const char *name,
int mode);
00135
int snd_timer_query_open_lconf(snd_timer_query_t **handle,
const char *name,
int mode,
snd_config_t *lconf);
00136
int snd_timer_query_close(snd_timer_query_t *handle);
00137
int snd_timer_query_next_device(snd_timer_query_t *handle, snd_timer_id_t *tid);
00138
int snd_timer_query_info(snd_timer_query_t *handle, snd_timer_ginfo_t *info);
00139
int snd_timer_query_params(snd_timer_query_t *handle, snd_timer_gparams_t *params);
00140
int snd_timer_query_status(snd_timer_query_t *handle, snd_timer_gstatus_t *status);
00141
00142
int snd_timer_open(snd_timer_t **handle,
const char *name,
int mode);
00143
int snd_timer_open_lconf(snd_timer_t **handle,
const char *name,
int mode,
snd_config_t *lconf);
00144
int snd_timer_close(snd_timer_t *handle);
00145
int snd_timer_poll_descriptors_count(snd_timer_t *handle);
00146
int snd_timer_poll_descriptors(snd_timer_t *handle,
struct pollfd *pfds,
unsigned int space);
00147
int snd_timer_poll_descriptors_revents(snd_timer_t *timer,
struct pollfd *pfds,
unsigned int nfds,
unsigned short *revents);
00148
int snd_timer_info(snd_timer_t *handle, snd_timer_info_t *timer);
00149
int snd_timer_params(snd_timer_t *handle, snd_timer_params_t *params);
00150
int snd_timer_status(snd_timer_t *handle, snd_timer_status_t *status);
00151
int snd_timer_start(snd_timer_t *handle);
00152
int snd_timer_stop(snd_timer_t *handle);
00153
int snd_timer_continue(snd_timer_t *handle);
00154 ssize_t
snd_timer_read(snd_timer_t *handle,
void *buffer, size_t size);
00155
00156 size_t
snd_timer_id_sizeof(
void);
00158 #define snd_timer_id_alloca(ptr) do { assert(ptr); *ptr = (snd_timer_id_t *) alloca(snd_timer_id_sizeof()); memset(*ptr, 0, snd_timer_id_sizeof()); } while (0)
00159
int snd_timer_id_malloc(snd_timer_id_t **ptr);
00160
void snd_timer_id_free(snd_timer_id_t *obj);
00161
void snd_timer_id_copy(snd_timer_id_t *dst,
const snd_timer_id_t *src);
00162
00163
void snd_timer_id_set_class(snd_timer_id_t *
id,
int dev_class);
00164
int snd_timer_id_get_class(snd_timer_id_t *
id);
00165
void snd_timer_id_set_sclass(snd_timer_id_t *
id,
int dev_sclass);
00166
int snd_timer_id_get_sclass(snd_timer_id_t *
id);
00167
void snd_timer_id_set_card(snd_timer_id_t *
id,
int card);
00168
int snd_timer_id_get_card(snd_timer_id_t *
id);
00169
void snd_timer_id_set_device(snd_timer_id_t *
id,
int device);
00170
int snd_timer_id_get_device(snd_timer_id_t *
id);
00171
void snd_timer_id_set_subdevice(snd_timer_id_t *
id,
int subdevice);
00172
int snd_timer_id_get_subdevice(snd_timer_id_t *
id);
00173
00174 size_t
snd_timer_info_sizeof(
void);
00176 #define snd_timer_info_alloca(ptr) do { assert(ptr); *ptr = (snd_timer_info_t *) alloca(snd_timer_info_sizeof()); memset(*ptr, 0, snd_timer_info_sizeof()); } while (0)
00177
int snd_timer_info_malloc(snd_timer_info_t **ptr);
00178
void snd_timer_info_free(snd_timer_info_t *obj);
00179
void snd_timer_info_copy(snd_timer_info_t *dst,
const snd_timer_info_t *src);
00180
00181
int snd_timer_info_is_slave(snd_timer_info_t * info);
00182
int snd_timer_info_get_card(snd_timer_info_t * info);
00183
const char *
snd_timer_info_get_id(snd_timer_info_t * info);
00184
const char *
snd_timer_info_get_name(snd_timer_info_t * info);
00185
long snd_timer_info_get_resolution(snd_timer_info_t * info);
00186
00187 size_t
snd_timer_params_sizeof(
void);
00189 #define snd_timer_params_alloca(ptr) do { assert(ptr); *ptr = (snd_timer_params_t *) alloca(snd_timer_params_sizeof()); memset(*ptr, 0, snd_timer_params_sizeof()); } while (0)
00190
int snd_timer_params_malloc(snd_timer_params_t **ptr);
00191
void snd_timer_params_free(snd_timer_params_t *obj);
00192
void snd_timer_params_copy(snd_timer_params_t *dst,
const snd_timer_params_t *src);
00193
00194
int snd_timer_params_set_auto_start(snd_timer_params_t * params,
int auto_start);
00195
int snd_timer_params_get_auto_start(snd_timer_params_t * params);
00196
int snd_timer_params_set_exclusive(snd_timer_params_t * params,
int exclusive);
00197
int snd_timer_params_get_exclusive(snd_timer_params_t * params);
00198
int snd_timer_params_set_early_event(snd_timer_params_t * params,
int early_event);
00199
int snd_timer_params_get_early_event(snd_timer_params_t * params);
00200
void snd_timer_params_set_ticks(snd_timer_params_t * params,
long ticks);
00201
long snd_timer_params_get_ticks(snd_timer_params_t * params);
00202
void snd_timer_params_set_queue_size(snd_timer_params_t * params,
long queue_size);
00203
long snd_timer_params_get_queue_size(snd_timer_params_t * params);
00204
void snd_timer_params_set_filter(snd_timer_params_t * params,
unsigned int filter);
00205
unsigned int snd_timer_params_get_filter(snd_timer_params_t * params);
00206
00207 size_t
snd_timer_status_sizeof(
void);
00209 #define snd_timer_status_alloca(ptr) do { assert(ptr); *ptr = (snd_timer_status_t *) alloca(snd_timer_status_sizeof()); memset(*ptr, 0, snd_timer_status_sizeof()); } while (0)
00210
int snd_timer_status_malloc(snd_timer_status_t **ptr);
00211
void snd_timer_status_free(snd_timer_status_t *obj);
00212
void snd_timer_status_copy(snd_timer_status_t *dst,
const snd_timer_status_t *src);
00213
00214
snd_htimestamp_t snd_timer_status_get_timestamp(snd_timer_status_t * status);
00215
long snd_timer_status_get_resolution(snd_timer_status_t * status);
00216
long snd_timer_status_get_lost(snd_timer_status_t * status);
00217
long snd_timer_status_get_overrun(snd_timer_status_t * status);
00218
long snd_timer_status_get_queue(snd_timer_status_t * status);
00219
00220
00221
long snd_timer_info_get_ticks(snd_timer_info_t * info);
00222
00225
#ifdef __cplusplus
00226
}
00227
#endif
00228
00229
#endif