diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index b029cf3fa..3beb0f56c 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -1411,7 +1411,20 @@ static void stream_process(void *data) if (avail < (int32_t)minreq || stream->corked) { /* underrun, produce a silence buffer */ size = SPA_MIN(d->maxsize, minreq); - memset(p, 0, size); + switch (stream->ss.format) { + case SPA_AUDIO_FORMAT_U8: + memset(p, 0x80, size); + break; + case SPA_AUDIO_FORMAT_ALAW: + memset(p, 0x80 ^ 0x55, size); + break; + case SPA_AUDIO_FORMAT_ULAW: + memset(p, 0x00 ^ 0xff, size); + break; + default: + memset(p, 0, size); + break; + } if (stream->draining && !stream->corked) { stream->draining = false;