summaryrefslogtreecommitdiffstats
path: root/meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch
diff options
context:
space:
mode:
authorManuel Bachmann <mbc@iot.bzh>2016-04-18 12:42:12 +0000
committerGerrit Code Review <gerrit@172.30.200.200>2016-07-15 12:20:06 +0000
commit203e07c635fab8b1986f48a40351137b8ec67946 (patch)
tree298880b79abb8a3da037676790d7a9cde8803c91 /meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch
parent2c6adc5e7fb926b6dafb609c1fd38542379bf232 (diff)
Add IVI-specific PulseAudio patches and development files
This is a stripped-down port of Tizen IVI PulseAudio 5.0 patches to AGL PulseAudio 6.0. These patches mainly: - provide a new "pulseaudio-module-dev" package, including headers and libraries for out-of-tree module development; - add generic helper functions; - add a helper "libvolume" library; - add helper functions for an efficient "volume ramp up/down" feature, so that a module does not need to track volume changes' timing and state in realtime. These patches are needed for the PulseAudio Routing Module described on: https://wiki.automotivelinux.org/ eg-ui-graphics-req-audiorouting (which is itself a stripped -down version of the Tizen IVI Audio Routing module). Change-Id: Ib826f3106b91ffdef639c2719a580373f84449c7 Signed-off-by: Manuel Bachmann <mbc@iot.bzh>
Diffstat (limited to 'meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch')
-rw-r--r--meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch b/meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch
new file mode 100644
index 000000000..cb68e26af
--- /dev/null
+++ b/meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch
@@ -0,0 +1,72 @@
+--- a/src/pulsecore/sink-input.c 2016-04-13 11:44:04.389999429 +0200
++++ b/src/pulsecore/sink-input.c 2016-04-13 11:52:45.167998560 +0200
+@@ -786,6 +786,9 @@
+ update_n_corked(i, state);
+ i->state = state;
+
++ i->corked = false;
++ i->corked_internal = false;
++
+ /* We might need to update the sink's volume if we are in flat volume mode. */
+ if (pa_sink_flat_volume_enabled(i->sink))
+ pa_sink_set_volume(i->sink, NULL, false, i->save_volume);
+@@ -1493,13 +1496,38 @@
+ }
+ }
+
++static void pa_sink_input_cork_really(pa_sink_input *i, bool b) {
++ pa_sink_input_assert_ref(i);
++ pa_assert_ctl_context();
++ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
++
++ if (i->corked_internal == false && i->corked == false)
++ b = false;
++ else
++ b = true;
++
++ sink_input_set_state(i, b ? PA_SINK_INPUT_CORKED : PA_SINK_INPUT_RUNNING);
++}
++
+ /* Called from main context */
+ void pa_sink_input_cork(pa_sink_input *i, bool b) {
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+
+- sink_input_set_state(i, b ? PA_SINK_INPUT_CORKED : PA_SINK_INPUT_RUNNING);
++ i->corked = b;
++
++ pa_sink_input_cork_really(i, b);
++}
++
++void pa_sink_input_cork_internal(pa_sink_input *i, bool b) {
++ pa_sink_input_assert_ref(i);
++ pa_assert_ctl_context();
++ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
++
++ i->corked_internal = b;
++
++ pa_sink_input_cork_really(i, b);
+ }
+
+ /* Called from main context */
+--- a/src/pulsecore/sink-input.h 2016-04-13 11:44:28.035999390 +0200
++++ b/src/pulsecore/sink-input.h 2016-04-13 11:53:56.325998441 +0200
+@@ -126,6 +126,9 @@
+ /* for volume ramps */
+ pa_cvolume_ramp_int ramp;
+
++ bool corked;
++ bool corked_internal;
++
+ pa_resample_method_t requested_resample_method, actual_resample_method;
+
+ /* Returns the chunk of audio data and drops it from the
+@@ -357,6 +360,7 @@
+ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes, bool rewrite, bool flush, bool dont_rewind_render);
+
+ void pa_sink_input_cork(pa_sink_input *i, bool b);
++void pa_sink_input_cork_internal(pa_sink_input *i, bool b);
+
+ int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate);
+ int pa_sink_input_update_rate(pa_sink_input *i);