From: Gregory P. <gre...@gm...> - 2009-11-22 15:30:26
|
Output plugins may define .get_latency function in order to communicate device latency back to cmus. In case if output plugin does not define it, latency is assumed to be 0. Signed-off-by: Gregory Petrosyan <gre...@gm...> --- op.h | 1 + output.c | 16 ++++++++++++++++ output.h | 5 +++++ 3 files changed, 22 insertions(+), 0 deletions(-) diff --git a/op.h b/op.h index 5cca228..8b0d072 100644 --- a/op.h +++ b/op.h @@ -53,6 +53,7 @@ struct output_plugin_ops { int (*buffer_space)(void); /* these can be NULL */ + int (*get_latency)(double *lat); int (*pause)(void); int (*unpause)(void); diff --git a/output.c b/output.c index cf15cfc..24aabb6 100644 --- a/output.c +++ b/output.c @@ -284,6 +284,22 @@ int op_buffer_space(void) return rc; } +int op_get_latency(double *lat) +{ + int rc; + + if (op->pcm_ops->get_latency) { + rc = op->pcm_ops->get_latency(lat); + if (rc) + *lat = 0; + } else { + *lat = 0; + rc = OP_ERROR_SUCCESS; + } + + return rc; +} + int mixer_set_volume(int left, int right) { if (op == NULL) diff --git a/output.h b/output.h index 73bf241..4967772 100644 --- a/output.h +++ b/output.h @@ -64,6 +64,11 @@ int op_unpause(void); int op_buffer_space(void); /* + * *lat will contain output device latency in seconds + */ +int op_get_latency(double *lat); + +/* * errors: OP_ERROR_{} */ int op_reset(void); -- 1.6.5 |