aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-12-08 20:10:01 +0900
committerOphestra <cat@gensokyo.uk>2025-12-08 20:10:01 +0900
commit564db6863b8e0e90cbf7210152c53124fddc1b4c (patch)
tree94d040608f84be7da07c24f9296d5d5b48b63de9
parent87781c765844409226804157546753b84ef3c6b4 (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>
-rw-r--r--internal/pipewire/pipewire.go6
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)
}