The check is done for clients that use pa_stream_new() but not for clients that use pa_stream_new_extended(). This is inconsistent. We could check that the volume channels match the channels set in the format info struct that is passed to pa_stream_new_extended(), but that doesn't work if the format info doesn't contain the channel information (that can happen if the client wants the server to choose the channel count for the stream). And it should also be possible to pass a mono volume for a multi-channel stream. The check could be extended to handle all these cases, but I don't see much point in wasting time on that. The server will anyway validate the stream parameters, it's not particularly important to fail already when the stream is being created at the client side. --- src/pulse/stream.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pulse/stream.c b/src/pulse/stream.c index d376326..8e35c29 100644 --- a/src/pulse/stream.c +++ b/src/pulse/stream.c @@ -1224,7 +1224,6 @@ static int create_stream( * client development easier */ PA_CHECK_VALIDITY(s->context, direction == PA_STREAM_RECORD || !(flags & (PA_STREAM_PEAK_DETECT)), PA_ERR_INVALID); - PA_CHECK_VALIDITY(s->context, !volume || s->n_formats || (pa_sample_spec_valid(&s->sample_spec) && volume->channels == s->sample_spec.channels), PA_ERR_INVALID); PA_CHECK_VALIDITY(s->context, !sync_stream || (direction == PA_STREAM_PLAYBACK && sync_stream->direction == PA_STREAM_PLAYBACK), PA_ERR_INVALID); PA_CHECK_VALIDITY(s->context, (flags & (PA_STREAM_ADJUST_LATENCY|PA_STREAM_EARLY_REQUESTS)) != (PA_STREAM_ADJUST_LATENCY|PA_STREAM_EARLY_REQUESTS), PA_ERR_INVALID); -- 1.8.3.1