mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
pulse-server: make a function to silence a buffer
This commit is contained in:
parent
c0a6a7ea32
commit
cf7e917024
3 changed files with 20 additions and 14 deletions
|
|
@ -221,6 +221,24 @@ uint32_t sample_spec_frame_size(const struct sample_spec *ss)
|
|||
}
|
||||
}
|
||||
|
||||
void sample_spec_silence(const struct sample_spec *ss, void *data, size_t size)
|
||||
{
|
||||
switch (ss->format) {
|
||||
case SPA_AUDIO_FORMAT_U8:
|
||||
memset(data, 0x80, size);
|
||||
break;
|
||||
case SPA_AUDIO_FORMAT_ALAW:
|
||||
memset(data, 0x80 ^ 0x55, size);
|
||||
break;
|
||||
case SPA_AUDIO_FORMAT_ULAW:
|
||||
memset(data, 0x00 ^ 0xff, size);
|
||||
break;
|
||||
default:
|
||||
memset(data, 0, size);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool sample_spec_valid(const struct sample_spec *ss)
|
||||
{
|
||||
return (sample_spec_frame_size(ss) > 0 &&
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@ const char *format_encoding2name(enum encoding enc);
|
|||
uint32_t format_encoding2id(enum encoding enc);
|
||||
|
||||
uint32_t sample_spec_frame_size(const struct sample_spec *ss);
|
||||
void sample_spec_silence(const struct sample_spec *ss, void *data, size_t size);
|
||||
bool sample_spec_valid(const struct sample_spec *ss);
|
||||
|
||||
void sample_spec_fix(struct sample_spec *ss, struct channel_map *map,
|
||||
|
|
|
|||
|
|
@ -1390,20 +1390,7 @@ static void stream_process(void *data)
|
|||
if (avail < (int32_t)minreq || stream->corked) {
|
||||
/* underrun, produce a silence buffer */
|
||||
size = SPA_MIN(d->maxsize, minreq);
|
||||
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;
|
||||
}
|
||||
sample_spec_silence(&stream->ss, p, size);
|
||||
|
||||
if (stream->draining && !stream->corked) {
|
||||
stream->draining = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue