diff options
author | Manuel Bachmann <mbc@iot.bzh> | 2016-04-18 12:42:12 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.200> | 2016-07-15 12:20:06 +0000 |
commit | 203e07c635fab8b1986f48a40351137b8ec67946 (patch) | |
tree | 298880b79abb8a3da037676790d7a9cde8803c91 /meta-ivi-common/recipes-multimedia/pulseaudio/pulseaudio/0013-add-internal-corking-state-for-sink-input.patch | |
parent | 2c6adc5e7fb926b6dafb609c1fd38542379bf232 (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.patch | 72 |
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); |