mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-11 04:27:56 -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
|
|
@ -607,6 +607,17 @@ 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
|
||||
on_data_io(void *data, int fd, uint32_t mask)
|
||||
|
|
@ -627,7 +638,7 @@ on_data_io(void *data, int fd, uint32_t mask)
|
|||
if (nframes == 0)
|
||||
return;
|
||||
|
||||
nsec = pw_filter_get_nsec(impl->source.filter);
|
||||
nsec = get_time_nsec(impl);
|
||||
|
||||
if (!impl->done) {
|
||||
impl->pw_xrun++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue