diff options
Diffstat (limited to 'meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-gst-pwaudioringbuffer-make-the-buffer-size-sensitive.patch')
-rw-r--r-- | meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-gst-pwaudioringbuffer-make-the-buffer-size-sensitive.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-gst-pwaudioringbuffer-make-the-buffer-size-sensitive.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-gst-pwaudioringbuffer-make-the-buffer-size-sensitive.patch new file mode 100644 index 00000000..5ffabb6d --- /dev/null +++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0011-gst-pwaudioringbuffer-make-the-buffer-size-sensitive.patch @@ -0,0 +1,60 @@ +From 6e289d0058d71bc433d1918a8bbf3305f3e4f517 Mon Sep 17 00:00:00 2001 +From: Julian Bouzas <julian.bouzas@collabora.com> +Date: Tue, 7 May 2019 10:36:35 -0400 +Subject: [PATCH] gst/pwaudioringbuffer: make the buffer size sensitive to the + number of channels + +Upstream-Status: Submitted [https://github.com/PipeWire/pipewire/pull/140] +--- + src/gst/gstpwaudioringbuffer.c | 6 ++++-- + src/gst/gstpwaudioringbuffer.h | 1 + + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/gst/gstpwaudioringbuffer.c b/src/gst/gstpwaudioringbuffer.c +index 989b2cd7..181304e8 100644 +--- a/src/gst/gstpwaudioringbuffer.c ++++ b/src/gst/gstpwaudioringbuffer.c +@@ -246,17 +246,18 @@ on_stream_format_changed (void *data, const struct spa_pod *format) + const struct spa_pod *params[1]; + struct spa_pod_builder b = { NULL }; + uint8_t buffer[512]; ++ const gint b_size = self->segsize * self->channels; + + spa_pod_builder_init (&b, buffer, sizeof (buffer)); + params[0] = spa_pod_builder_add_object (&b, + SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, + SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(16, 1, INT32_MAX), + SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1), +- SPA_PARAM_BUFFERS_size, SPA_POD_Int(self->segsize), ++ SPA_PARAM_BUFFERS_size, SPA_POD_Int(b_size), + SPA_PARAM_BUFFERS_stride, SPA_POD_Int(self->bpf), + SPA_PARAM_BUFFERS_align, SPA_POD_Int(16)); + +- GST_DEBUG_OBJECT (self->elem, "doing finish format, buffer size:%d", self->segsize); ++ GST_DEBUG_OBJECT (self->elem, "doing finish format, buffer size:%d", b_size); + pw_stream_finish_format (self->stream, 0, params, 1); + } + +@@ -402,6 +403,7 @@ gst_pw_audio_ring_buffer_acquire (GstAudioRingBuffer *buf, + self->segsize = spec->segsize; + self->bpf = GST_AUDIO_INFO_BPF (&spec->info); + self->rate = GST_AUDIO_INFO_RATE (&spec->info); ++ self->channels = GST_AUDIO_INFO_CHANNELS (&spec->info); + self->segoffset = 0; + + /* connect stream */ +diff --git a/src/gst/gstpwaudioringbuffer.h b/src/gst/gstpwaudioringbuffer.h +index f47f668a..f600f012 100644 +--- a/src/gst/gstpwaudioringbuffer.h ++++ b/src/gst/gstpwaudioringbuffer.h +@@ -64,6 +64,7 @@ struct _GstPwAudioRingBuffer + gint segsize; + gint bpf; + gint rate; ++ gint channels; + + /* on_stream_process() state */ + gint segoffset; +-- +2.20.1 + |