[pulseaudio-discuss] [[PATCH v0] 3/5] device-port: Allow setting the latency offset during port creation.

poljar (Damir Jelić) poljarinho at gmail.com
Wed Apr 17 17:24:06 PDT 2013


This should make latency setting during port creation consistent with
other port properties.
---
 src/pulsecore/device-port.c | 13 ++++++++++++-
 src/pulsecore/device-port.h |  3 +++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c
index e170841..b771d23 100644
--- a/src/pulsecore/device-port.c
+++ b/src/pulsecore/device-port.c
@@ -67,6 +67,13 @@ void pa_device_port_new_data_set_direction(pa_device_port_new_data *data, pa_dir
     data->direction = direction;
 }
 
+void pa_device_port_new_data_set_latency_offset(pa_device_port_new_data *data, int64_t offset) {
+    pa_assert(data);
+
+    data->latency_offset_is_set = true;
+    data->latency_offset = offset;
+}
+
 void pa_device_port_new_data_done(pa_device_port_new_data *data) {
     pa_assert(data);
 
@@ -136,7 +143,11 @@ pa_device_port *pa_device_port_new(pa_core *c, pa_device_port_new_data *data, si
     p->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
     p->direction = data->direction;
 
-    p->latency_offset = 0;
+    if (!data->latency_offset_is_set)
+        p->latency_offset = 0;
+    else
+        p->latency_offset = data->latency_offset;
+
     p->proplist = pa_proplist_new();
 
     return p;
diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h
index 213a6f7..f7d2989 100644
--- a/src/pulsecore/device-port.h
+++ b/src/pulsecore/device-port.h
@@ -68,6 +68,8 @@ typedef struct pa_device_port_new_data {
     char *card_name;
     pa_available_t available;
     pa_direction_t direction;
+    int64_t latency_offset;
+    bool latency_offset_is_set;
 } pa_device_port_new_data;
 
 pa_device_port_new_data *pa_device_port_new_data_init(pa_device_port_new_data *data);
@@ -76,6 +78,7 @@ void pa_device_port_new_data_set_description(pa_device_port_new_data *data, cons
 void pa_device_port_new_data_set_card_name(pa_device_port_new_data *data, const char *card_name);
 void pa_device_port_new_data_set_available(pa_device_port_new_data *data, pa_available_t available);
 void pa_device_port_new_data_set_direction(pa_device_port_new_data *data, pa_direction_t direction);
+void pa_device_port_new_data_set_latency_offset(pa_device_port_new_data *data, int64_t offset);
 void pa_device_port_new_data_done(pa_device_port_new_data *data);
 
 pa_device_port *pa_device_port_new(pa_core *c, pa_device_port_new_data *data, size_t extra);
-- 
1.8.2.1



More information about the pulseaudio-discuss mailing list