[pulseaudio-discuss] [PATCH v2 00/18] Format negotiation fixing
Tanu Kaskinen
tanu.kaskinen at linux.intel.com
Wed Dec 18 09:28:05 PST 2013
Changes in v2:
- Support clients that want to set the stream volume while at the
same leaving the stream channel map unspecified.
- Support setting mono volume even if the stream has multiple
channels (the volume is copied to all channels).
- Constify some format info related function parameters.
- More error logging.
- Removed sample spec and channel map validity checking from
pa_format_info_from_sample_spec2(). It doesn't really make sense
to prepare everywhere for invalid sample specs and channel maps.
Preparing for that should be a special occasion, such as
receiving those structs directly from an untrusted source (i.e.
clients).
- Removed a volume validity check from create_stream() in
pulse/stream.c.
Some words about supporting clients that use pa_stream_new_extended()
and want to set the volume while also leaving the stream channel map
unspecified... The proposed solution is to add new function
pa_stream_set_volume_channel_map(). Another possibility would have
been to set the volume channel map as a format info property. I don't
like that, because the volume itself is not specific to one format
info, so why should the volume channel map be? Also, the volume has
nothing to do with the stream format, so putting the channel map to
a format info would mean basically abusing the extensible format info
structure for passing arbitrary extra parameters for the stream.
Tanu Kaskinen (18):
Move pa_format_info_to_sample_spec_fake() to core-format
core-format: Add pa_format_info_get_sample_format()
core-format: Add pa_format_info_get_rate()
core-format: Add pa_format_info_get_channels()
core-format: Add pa_format_info_get_channel_map()
format: Simplify pa_format_info_to_sample_spec()
core-format: Add pa_format_info_to_sample_spec2()
core-format: Add pa_format_info_from_sample_spec2()
sink-input, source-output: Do routing related validity checks
immediately after routing
format, core-format: Constify some function parameters
stream-util: Add pa_stream_get_volume_channel_map()
stream: Remove a volume channel validity check
sink-input, source-output: Interpret missing PCM parameters in format
info as a request to decide those parameters at the server end
stream: Add pa_stream_set_volume_channel_map()
def, format: Document how to leave PCM parameters to be decided by the
server
stream: Improve pa_stream_connect_playback() documentation
stream: Mention pa_stream_new_extended() in the high-level stream
creation documentation
format: Add some error logging
src/Makefile.am | 2 +
src/map-file | 1 +
src/pulse/def.h | 38 ++++++-
src/pulse/format.c | 116 ++++++++------------
src/pulse/format.h | 74 ++++++++++---
src/pulse/internal.h | 1 +
src/pulse/stream.c | 29 ++++-
src/pulse/stream.h | 53 ++++++++-
src/pulsecore/core-format.c | 250 ++++++++++++++++++++++++++++++++++++++++++
src/pulsecore/core-format.h | 81 ++++++++++++++
src/pulsecore/sink-input.c | 104 ++++++++----------
src/pulsecore/source-output.c | 99 +++++++----------
src/pulsecore/stream-util.c | 87 +++++++++++++++
src/pulsecore/stream-util.h | 50 +++++++++
14 files changed, 770 insertions(+), 215 deletions(-)
create mode 100644 src/pulsecore/core-format.c
create mode 100644 src/pulsecore/core-format.h
create mode 100644 src/pulsecore/stream-util.c
create mode 100644 src/pulsecore/stream-util.h
--
1.8.3.1
More information about the pulseaudio-discuss
mailing list