diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-12-08 20:10:01 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-12-08 20:10:01 +0900 |
| commit | 564db6863b8e0e90cbf7210152c53124fddc1b4c (patch) | |
| tree | 94d040608f84be7da07c24f9296d5d5b48b63de9 /internal/pipewire | |
| parent | 87781c765844409226804157546753b84ef3c6b4 (diff) | |
internal/pipewire: work around remote sequence quirk
Remote sequence sometimes start with a non-zero value, and keeps the same value for a while before going back to zero. Conditions for reproducing this behaviour is not yet known. This change works around this behaviour.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pipewire')
| -rw-r--r-- | internal/pipewire/pipewire.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/internal/pipewire/pipewire.go b/internal/pipewire/pipewire.go index 8d7e751d..15e9eebb 100644 --- a/internal/pipewire/pipewire.go +++ b/internal/pipewire/pipewire.go @@ -674,6 +674,12 @@ func (ctx *Context) consume(receiveRemaining []byte) (remaining []byte, err erro if err = header.UnmarshalBinary(remaining[:SizeHeader]); err != nil { return } + + // remote sequence sometimes do not start with 0 + if ctx.remoteSequence == 0 { + ctx.remoteSequence = header.Sequence + } + if header.Sequence != ctx.remoteSequence { return remaining, UnexpectedSequenceError(header.Sequence) } |
