mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-08 10:06:23 -05:00
jack-tunnel: convert JACK time to MONOTONIC
JACK current_msec can be in MONOTONIC_RAW or MONOTONIC, depending on how JACK was compiled (but it's likely MONOTONIC_RAW). PipeWire requires the nsec field to be in MONOTONIC so take some time snapshots from both clocks and apply a translation. Also make sure we only get the nsec time from streams that exist. See #3886
This commit is contained in:
parent
f4e391dd41
commit
f2f60ee0ec
4 changed files with 50 additions and 2 deletions
|
|
@ -679,6 +679,18 @@ static int create_filters(struct impl *impl)
|
|||
return res;
|
||||
}
|
||||
|
||||
static inline uint64_t get_time_nsec(struct impl *impl)
|
||||
{
|
||||
uint64_t nsec;
|
||||
if (impl->sink.filter)
|
||||
nsec = pw_filter_get_nsec(impl->sink.filter);
|
||||
else if (impl->source.filter)
|
||||
nsec = pw_filter_get_nsec(impl->source.filter);
|
||||
else
|
||||
nsec = 0;
|
||||
return nsec;
|
||||
}
|
||||
|
||||
static void *ffado_process_thread(void *arg)
|
||||
{
|
||||
struct impl *impl = arg;
|
||||
|
|
@ -689,7 +701,7 @@ static void *ffado_process_thread(void *arg)
|
|||
ffado_wait_response response;
|
||||
|
||||
response = ffado_streaming_wait(impl->dev);
|
||||
nsec = pw_filter_get_nsec(impl->source.filter);
|
||||
nsec = get_time_nsec(impl);
|
||||
|
||||
switch (response) {
|
||||
case ffado_wait_ok:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue